6.3 Grafische Ausdrucke erstellen
Zur Erstellung der grafischen Ausdrucke steht ein einfacher Call zur Verfügung, der alle Befehle für den Drucker in Steueranweisungen zusammenfasst.
| | | | | |
Format:
call print using steueranweisung.
| |
| | | |
Im Gegensatz zu der Lineprinter-Methode wird bei grafischem Ausdruck nicht eine Zeile, sondern immer eine ganze Seite bearbeitet.
Auf dieser Seite kann während der Bearbeitung wahlfrei positioniert werden, d.h. die einzelnen Elemente müssen nicht in der Reihenfolge von oben nach unten entsprechend ihrer Anordnung auf der Seite abgearbeitet werden.
Acc-Cobol teilt die Druckseite automatisch in das Format 80 Zeichen x 70 Zeilen ein.
Positionsangaben können entweder in 100stel Millimeter oder in Zeichen/Zeile angegeben werden.
Es ist darauf zu achten, daß auf der Druckseite immer ein schmaler Rand existiert, der nicht beschrieben werden kann. Dieser Rand unterscheidet sich, je nach Druckertyp.
Alle Steuerbefehle können sowohl in Groß- als auch mit Kleinbuchstaben angegeben werden.
Besitzen Steuerbefehle optionale Argumente (in [] angegeben), die nicht verwendet werden, müssen die Befehle mit einem Punkt abgeschlossen werden.
6.3.1 Print mit Argumenten
| | | | | |
Format:
call print using steueranweisung [arg1] [arg2] ...
| |
| | | |
In den Steueranweisungen können sämtliche Argumente durch Argumente der Call-Anweisung ersetzt werden.
Hierzu werden die Argumente beim Call einfach durchnumeriert. In der Steueranweisung wird dann als Argument nur der Platz- halter ^ gefolgt von der Nummer verwendent. ^1 entspricht also arg1, ^2 arg2 usw.
Um die Übersichtlichkeit zu erhöhen, können den Call-Argumenten auch beliebige Namen zugewiesen werden:
#Name1 #Name2 ....
Anstelle von ^1 kann nun auch ^Name1 angegeben werden.
Bsp.
Als Argumente sollen die Position, ein Text, Schriftart
und Schriftgröße übergeben werden.
Inhalt der Datei text.pms:
#xpos
#ypos
#font
#size
#text
fo ^font ^size
p ^xpos ^ypos u.
^text
Aufruf aus dem Programm:
call print using '<text.pms>' 1000 2000 'Verdana' 8 'Ein Text'.
call print using '<text.pms>' 1000 2200 'Verdana' 12 'Noch ein Text'.
6.3.2 Verwendung einer Anweisungsdatei
| | | | | |
Format:
call print using '<pfadname>' [arg1] [arg2] ...
| |
| | | |
Alle Steueranweisungen können sich auch in einer Datei befinden. Bei einfachen Layout-Änderungen braucht das Programm nicht mehr geändert werden, es genügt die Änderung der Anweisungsdatei.
6.3.3 Deklaration von Konstanten
Zur Vereinfachung der Print-Anweisungen können auch konstante Werte mit Namen deklariert werden.
Beispiel print1.pms:
!Tab1 1000
!Tab2 3400
!Text1 "Das ist ein Text"
p Tab1 2000 o. "Test1"
p Tab1 3000 o. Text1
p Tab2 2000 o. "Test2"
p Tab2 3000 o. Text1
Durch Änderung der Anweisung !Tab1 1000 kann nun beliebig eingerückt werden.
Mit prmask kann eine beliebige Printmaske auf einen Drucker ausgegeben werden.
Siehe prmask.cob
Hier das Ergebnis von prmask print1.pms
6.3.4 Positionierung
| | | | | |
Format:
P Hpos Vpos [o][u]
| |
| | | |
Hpos ist die horizontale Position auf der aktuellen Seite Vpos ist die vertikale Position auf der aktuellen Seite
Hpos kann entweder als Spaltennummer oder in 100stel Millimeter angegeben werden.
Vpos kann entweder als Zeilennumer oder in 100stel Millimeter angegeben werden.
Wird der Zusatz u angegeben, wird der folgende Text unterhalb dieser Position ausgegeben, d.h. die Position gibt die obere linke Ecke des gedachten Rahmens um den Text an.
Mit dem Zusatz o wird der Text oberhalb dieser Position geschrieben.
6.3.5 Ausdruck eines festen Textes
Angabe des Textes in Gänsefüßchen.
Bsp.:
Positionierung des Wortes Rechnung auf einem Formular,
2 cm von links, 8,7 cm von oben:
p 2000 8700 u "Rechnung"
6.3.6 Font auswählen
| | | | | |
Format:
Fo fontname [Schriftgröße]
| |
| | | |
Bsp.:
fo 'Courier' 12 p 2000 8700 u "Rechnung"
6.3.7 Liniendicke ändern
Die Dicke wird in Pixel angegeben.
z.B. d 50
Siehe auch Attribute
6.3.8 Schriftfarbe ändern
| | | | | |
Format:
C Farbe setzen Rot Blau Grün
| |
| | | |
Die Farbe wird dezimal angegeben
z.B. c 128 128 128
Die Farbe wird sowohl für den Text, als auch für die Liniengrafik verwendet.
Siehe auch Attribute
6.3.9 Attribute ändern
Alle Attribute können mit dem Befehl A verändert werden. Nach A folgt ein Literal, das wiederum folgende Angaben beinhalten kann:
|
Attribut | Auswirkung | F+ | Fettdruck ein | F- | Fettdruck aus | U+ | Unterstreichen ein | U- | Unterstreichen aus | S+ | Durchstreichen ein | S- | Durchstreichen aus | K+ | Kursiv ein | K- | Kursiv aus | P=xxx | Schriftgröße setzen (xxx) ist numersicher Wert | D=xxx | Strichdicke setzen | W=xxx | Winkel der Textrichtung setzen | R=xxx | Farbe - Rotanteil setzen | B=xxx | Farbe - Blauanteil setzen | G=xxx | Farbe - Grünanteil setzen |
|
Bsp.:
call print using
'a "f+ p=50 r=255 w=45" p 2000 9700 u "Mahnung"'.
Siehe print1.cob
6.3.10 Linien ziehen
| | | | | |
Format:
L startx starty endx endy
| |
| | | |
startx und endx sind die horizontale Positionsangabe starty und endy sind die vertikale Positionsangabe
Zieht eine Linie vom Startpunkt zum Endpunkt mit der aktuellen Farbe und Strichstärke.
6.3.11 Rahmen an der aktuellen Position ziehen
An der aktuellen Position wird ein Rahmen mit den angebenen Dimensionen in der aktuellen Farbe und Strichstärke gezogen.
6.3.12 Rahmen ziehen
| | | | | |
Format:
Bo Hpos Vpos Breite Höhe
| |
| | | |
An der angegebenen Position wird ein Rahmen mit der angebenen Größe gezogen.
6.3.13 Tabelle zeichnen
| | | | | |
Format:
TD Breite Höhe Spalten Zeilen
| |
| | | |
An der aktuellen Position wird eine Tabelle mit den angebenen Dimensionen in der aktuellen Farbe und Strichstärke gezogen.
Siehe print2.cob
6.3.14 Textausrichtung für Tabelle festlegen
Legt die Schreibausrichtung in den Zellen der Tabelle fest.
|
Horizontal | Vertikal | l links | o oben | m mittig | m mittig | r rechts | u unten |
|
tj lo setzt die Ausrichtung horizontal auf links und vertikal auf oben
Siehe print2.cob
6.3.15 Tabelle beschreiben
| | | | | |
Format:
TW Spalte Zeile Text
| |
| | | |
Es wird der Text in die angegebene Zelle geschrieben.
Siehe print2.cob
6.3.16 Text ausrichten
| | | | | |
Format:
J Hpos Vpos Breite Höhe Typ "Text"
| |
| | | |
Die Ausrichtung des Textes erfolgt in dem angebenen Rechteck, wobei Hpos, Vpos die obere linke Ecke des Rahmens angibt.
Typ gibt in der 1. Stelle die horiontale, in der 2. Stelle die vertikale Ausrichtung, wie folgt, an:
|
Horizontal | Vertikal | l links | o oben | m mittig | m mittig | r rechts | u unten |
|
Beispiel: Der Text "Mittig" soll rechtsbündig ausgerichtet werden.
j 1000 2000 1000 1000 rm "Mittig".
Beispielprogramm print4.cob
identification division.
environment division.
data division.
working-storage section.
01 name pic x(50).
01 stat pic 9(5).
procedure division.
* Drucker auswählen
call getprinterdialog using name stat.
if stat not = 0 stop run.
* Schriftart auswählen
call print using 'fo arial 8'.
* Text ausrichten
call print using 'j 1000 1000 2000 1000 lo "links oben"'.
call print using 'bo 1000 1000 2000 1000'.
call print using 'j 4000 1000 2000 1000 mo "mittig oben"'.
call print using 'bo 4000 1000 2000 1000'.
call print using 'j 7000 1000 2000 1000 ro "rechts oben"'.
call print using 'bo 7000 1000 2000 1000'.
call print using 'j 1000 2500 2000 1000 lm "links mitte"'.
call print using 'bo 1000 2500 2000 1000'.
call print using 'j 4000 2500 2000 1000 mm "mitte mitte"'.
call print using 'bo 4000 2500 2000 1000'.
call print using 'j 7000 2500 2000 1000 rm "rechts mitte"'.
call print using 'bo 7000 2500 2000 1000'.
call print using 'j 1000 4000 2000 1000 lu "links unten"'.
call print using 'bo 1000 4000 2000 1000'.
call print using 'j 4000 4000 2000 1000 mu "mitte unten"'.
call print using 'bo 4000 4000 2000 1000'.
call print using 'j 7000 4000 2000 1000 ru "rechts unten"'.
call print using 'bo 7000 4000 2000 1000'.
call prclose.
6.3.17 Rechteck mit Farbe füllen
| | | | | |
Format:
fi Hpos Vpos Breite Höhe Farbe
| |
| | | |
Füllt das angegebene Rechteck aus.
Beispiel: Erstellen von Grafiken
identification division.
environment division.
data division.
working-storage section.
01 name pic x(50).
01 stat pic 9(5).
01 max pic 9(5).
01 len pic 9(7).
01 x pic 9(5).
01 xs pic 9(5).
01 y pic 9(5).
01 ys pic 9(5).
01 yp pic 9(5).
01 cur pic 9(5).
01 upd pic 9(5).
01 colf.
02 filler pic 9(9) value 255128000.
02 filler pic 9(9) value 034121208.
02 filler pic 9(9) value 214029145.
02 filler pic 9(9) value 000223000.
02 filler pic 9(9) value 026196193.
02 filler pic 9(9) value 189100034.
02 filler pic 9(9) value 034050189.
02 filler pic 9(9) value 166000000.
02 filler pic 9(9) value 128000128.
02 filler pic 9(9) value 186048114.
01 col redefines colf pic 9(9) occurs 10 indexed i.
77 texi pic 9.
procedure division.
* Drucker auswählen
call getprinterdialog using name stat.
if stat not = 0 stop run.
move 200 to cur.
move 1000 to x max.
move 150 to upd.
move 3500 to y ys.
move 5000 to yp.
set i to 1.
*
* FillRect: X-Position Höhe und Farbe werden als Argumente übergeben
* 1. Grafik von x=1000 bis 10000, y=2500 bis 3500
* 2. Grafik von x=1000 bis 10000 y=5000 bis 8000
*
call print using 'fo "Verdana" 8'.
loop.
compute len = 1000 * cur / max.
compute y = ys - len.
call print using 'fi ^1 ^2 1000 ^3 ^4' x y len col (i).
compute len = len * 9.
call print using 'fi 1000 ^1 ^2 250 ^3' yp len col (i).
set texi to i.
compute y = y - 500.
call print using 'j ^1 ^2 1000 500 "mu" "Text" ^3' x y texi.
compute xs = len + 1020.
compute y = yp - 100.
call print using 'j ^1 ^2 1000 450 "lm" "Text" ^3' xs y texi.
add 1000 to x.
add 300 to yp.
set i up by 1.
compute cur = cur + upd.
if cur > max move -220 to upd
move 900 to cur.
if cur < 0 move 700 to cur.
if i < 11 go to loop.
*
* Grafiken umrahmen und Text hinterlegen
*
* 1. Grafik von x=1000 bis 11000, y=2500 bis 3500
call print using 'fo "Verdana" 11'.
call print using 'a "f+"'.
call print using 'bo 500 2000 11000 2500'.
call print using 'j 500 4000 11000 500 mm "Grafik Nr. 1"'.
* 2. Grafik von x=1000 bis 10000 y=5000 bis 7850
call print using 'bo 500 4500 11000 4500'.
call print using 'j 500 8500 11000 500 mm "Grafik Nr. 2"'.
call prclose.
Siehe print3.cob
6.3.18 Bitmap ausgeben
| | | | | |
Format:
b Bitmapname Hpos Vpos Breite Höhe
| |
| | | |
Gibt die Bitmap an der angegebenen Postion aus.
Wird für Breite und Höhe der Wert -1 angegeben, werden die original Werte der Bitmap verwendet. Wird nur für die Breite oder für die Höhe -1 verwendet, wird sie entsprechend dem Seitenverhältnis des Originalbildes berechnet.
Beispielprogramm print5.cob
*c32 %;slink §
identification division.
environment division.
data division.
working-storage section.
01 name pic x(50).
01 stat pic 9(5).
procedure division.
* Drucker auswählen
call getprinterdialog using name stat.
if stat not = 0 stop run.
call print using 'fo "Arial" 8'.
call print using
'b "bilder\saturn.bmp" 1000 1000 2000 -1'.
call print using
'p 1000 3000 o."Saturn.bmp"'.
call print using
'p 1000 3300 o."originales Seitenverhältnis"'.
call print using
'b "bilder\saturn.bmp" 1000 4000 2500 2000'.
call print using 'p 1000 6500 o."Saturn.bmp"'.
call print using 'p 1000 6800 o."mit 2500 2000"'.
call print using
'b "bilder\saturn.jpg" 7000 1000 1500 1000'.
call print using 'p 7000 2500 o."Saturn.jpg"'.
call print using 'p 7000 2800 o."mit 1500 1000"'.
call print using
'b "bilder\saturn.jpg" 7000 4000 -1 2000'.
call print using 'p 7000 6500 o."Saturn.bmp"'.
call print using 'p 7000 6800 o."originales Seitenverhältnis"'.
call prclose.
Siehe print5.cob
6.3.19 Barcode ausgeben
| | | | | |
Format:
bc Code Hpos Vpos Breite Höhe
| |
| | | |
Gibt den angegebenen Code als Barcode aus.
Beispiel:
call print using 'bc 12345 1000 1000 2000 1000"'.
6.3.20 Neue Zeile
Es wird auf die nächste Zeile positioniert.
6.3.21 Papierformat setzen
| | | | | |
Format:
s Spalten Zeilen Breite Höhe
| |
| | | |
Setzt die Größe des Papiers auf das angebene Format. Breite und Höhe werden in mm angegeben.
Die Anzahl Spalten und Zeilen bestimmen den Zeilenvorschub für das Kommando n.
Die Positionierung kann entweder in mm oder mit Spalte/Zeile erfolgen (Hpos,Vpos).
6.3.22 Offset setzen
Um gleichbleibende Ausdrucke mit der gleichen Maske an verschiedenen Stellen ausgeben zu können, kann der Offset-Befehl verwendet werden.
| | | | | |
Format:
o x-Offset y-Offset
| |
| | | |
Normalerweiste steht der Offset auf 0. Wird er gesetzt, werden alle Positionierung relativ zum Offset ausgeführt.
Beispielprogramm print6.cob
*c32 %;slink §
identification division.
environment division.
data division.
working-storage section.
01 name pic x(50).
01 stat pic 9(5).
procedure division.
* Drucker auswählen
call getprinterdialog using name stat.
if stat not = 0 stop run.
call print using '<print1.pms>'.
call print using 'o 5000 0'.
call print using '<print1.pms>'.
call print using 'o 0 2000'.
call print using '<print1.pms>'.
call print using 'o 5000 2000'.
call print using '<print1.pms>'.
call prclose.
Siehe print6.cob
6.3.23 Anzahl Kopien, Queformat einstellen
| | | | | |
Format:
m Kopien [Format] [Breite] [Höhe].
| |
| | | |
Ist Format = 'q' wird im Querformat gedruckt.
Breite und Höhe werden in mm angegeben.
Beispiel:
m 1 'q'.
Der Ausdruck erfolgt im Querformat.
m 5.
Es werden 5 Kopien erstellt.
Zurück zu Acc-Cobol: Grafische Ausdrucke erstellen: Call PRINT
Hoch zu Grafischer Druck mit Acc-Cobol in MS-Windows-Systemen
Weiter zu Print-Befehl Kurzreferenz
|