View Full Version : Anzahl Druckzeilen vor Druck des Satzformats ermitteln
Hallo zusammen,
gibt es eine Möglichkeit (vielleicht auch über ein API) herauszufinden wieviele Zeilen gedruckt werden wenn ich einen WRITE auf ein Satzformat einer Druckerdatei mache.
Also während der Laufzeit natürlich. Vor dem Write erkennen wieviele Zeile für den Write gedruckt werden. Auch unter Berücksichtigung eventueller Bezugszahlen
Danke für Eure Mühe
Viele Grüße Harald
Hi,
nicht das ich wüsste, hier ist eher Handarbeit angesagt.
erfass dir 2 Tabellen, eine mit Satzformatname und Anzahl Zeilen und eine mit Satzformat concat Bezugszahl und (je nach Mengengerüst) + oder - Zeilen. Das ganze möglichst extern und dann lässt du dir von einer Funktion die Druckzeilen geben
eval AnzZei = getDrkZei(satzformat:*in) oder ähnlich
gruß
Robi
Da du das Druckformat in deinem Programm doch sowieso kennst und per Bezugszahlen die Zeilen steuerst, kannst du diese auch ganz leicht selber ausrechnen:
AnzZeil = 1; // Default
if *in51 = *on;
AnzZeil += 1;
endif;
if *in52 = *on;
AnzZeil += 1;
endif;
if *in53 = *on;
AnzZeil += 1;
endif;
Du kannst das auch über eine INFDS auf dem PRTF herausfinden.
Dort findest du die aktuelle Zeilen-Nr. und die die Anz. Zeilen der PRTF.
D.h. du kannst bei einem Mehrfachausdruck eines Satzformates bei erstem mal ermittlen auf welcher Zeile das Programm steht und nach dem WRITE wieder die aktuelle Zeile geben lassen.
EVAl ZEILE1 = AKTZEI
WRITEFORMAT1
EVAL ZEILE2 = AKTZEI
ANZZEI = ZEILE2 - ZEILE1
Sicherlich keine Musterlösung ab in 80% der Fälle müsste es gehen. Sobal aber ein SKIPB/SKIPA oder aber es erfolgte gerade ein Seitenwechel ist sicherlich etwas mehr rechnerrei angesagt!
Die Aufgabe war:
Vor dem write !
... sowas vermisse ich in meinem Auto, eine Anzeige, die mir vor Antritt der Fahrt anzeigt ob der Sprit noch reicht...
Die Aufgabe war:
Vor dem write !
Meins gibt da auch nur eine Schätzung ab (Reichweite).
Interessant wäre noch der Status, ob das Papier denn noch reicht und die Tinte voll ist.
... bei ÖKO-COBOL-2010 kann man ja wenigstens den Druck mit READ FROM PRINTER wieder rückgängig machen, wenns nicht mehr drausgepasst hat, oder mit WRITE BACKSIDE auf der Rückseite weiterdrucken...
Meins gibt da auch nur eine Schätzung ab (Reichweite).
Interessant wäre noch der Status, ob das Papier denn noch reicht und die Tinte voll ist.
Wir haben so etwas für die Ausgabe von Postscript im Einsatz. Statt der max. Seite eines Dokuments wird ein Platzhalter eingefügt und bei der Ausgabe durch den Wert der später ermittelten Seitenanzahl ersetzt.
Vielleicht kannst Du dies ähnlich gestallten.
Erstmal Danke für alle Antworten.
Aber eigentlich sollte es darauf hinauslaufen dass man ja normalerweise vor dem Drucken abfragt
z.B.
if Zeile > 66
write Kopf
endif
write Pos
Jetzt kann es aber sein dass das Pos Format mal eine Zeile hat oder mal 3 oder mal 5.
Die Zahlen möchte ich aber nicht fix im Programm angeben sondern irgendwas liefert mir diesen Wert (API, INFDS) was auch immer damit ich z.B. es so angeben kann
If Zeile + "ermittelterWert" > 66
write Kopf
endif
write Pos
Aber wahrscheinlich gibts da wohl eher nix und ich muss mein "ermittelterWert" wieder selbst füllen.