PDA

View Full Version : Anzahl Druckzeilen vor Druck des Satzformats ermitteln



Seiten : [1] 2

harkne
25-11-10, 13:57
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

Robi
25-11-10, 16:12
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

Fuerchau
25-11-10, 16:46
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;

ExAzubi
25-11-10, 18:43
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!

Fuerchau
26-11-10, 07:22
Die Aufgabe war:

Vor dem write !

BenderD
26-11-10, 08:44
... 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 !

Fuerchau
26-11-10, 09:20
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.

BenderD
26-11-10, 10:09
... 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.

Kaufmann
26-11-10, 12:17
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.

harkne
29-11-10, 14:42
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.