votch
10-04-13, 11:52
Hallo zusammen,
ich habe aktuell ein(in meinen Augen) sehr seltsames und gleichzeitig dringendes Problem...
In ein bestehendes und sehr umfangreiches Druck-Prg aus dem letzten Jahrtausend soll ich eine Erweiterung einbauen.
Das Prg erstellt diverse Listen und Etiketten mit unterschiedlichsten Angaben aus über 50 PF's in einer mir bisher unbekannten Art und Weise...
Der Überlauf wird weder über eine Bezugszahl in den F-Bestimmung noch über einen Zeilenzähler gesteuert, sondern über eine Fehlerbezugszahl beim write des Druckformats. Da das Programm über10.000 Zeilen hat, habe ich meine Programmierung aus Gründen der Übersichtlichkeit an die bestehende angepaßt.
In das Programm habe ich eine 3zeilige Summenzeile eingebaut die ich ebenfalls mit einem write mit Fehlerbezugszahl ausgebe. Leider funktioniert es nicht ganz so wie ich will. Im Normalfall, wenn z.B. die Summe in die Mitte oder an den Anfang der Liste gedruckt werden soll, funktioniert es. Erreicht die Ausgabe der Summe jetrzt aber die Zeile 66-68(Gesamtzeilen 72, Überlauf Zeile 66; 7,5/13,3 CPI), passiert im Debugger Folgendes:
Die Fehlerbezugszahl geht an beim write, dann wird die Summe in Zeile 66-68 gedruckt, dann werden die Kopfangaben und Kopftexte gedruckt und danach wird die Summenzeile wieder gedruckt. Eigentlich will ich aber die Summe in Zeile 66-68 nicht haben, sondern nur auf der neuen Seite. Ändere ich aber jetzt etwas am Überlauf oder der Gesamtzeilen-Anzahl, erscheinen die Kopfangaben und -texte nur noch auf der ersten Seite.
Kann mir jemand weiterhelfen und sagen, warum die Summenzeile trotz *IN27 = *on trotzdem doppelt gedruckt wird und nicht nur auf der neuen Seite?
C *IN26 IFEQ *ON
C 27 WRITE SUMME BZ28(NI)
C *IN28 IFEQ '1'
C *IN27 IFEQ *ON
C eval #PageV = #PageV +1
C ENDIF
C 27 WRITE KOPF04 BZ28(NI)
C EXSR KOPTXT
C 27 WRITE SUMME
C END
C ENDIF
26=bestimmte Firma
27=bestimmte Auftragsart
28=Fehlerbezugszahl(NI) beim write
In KOPTXT werden Kopftexte ermittelt und es wird ein write KOTX04 gedruckt und ggf's(bei Überlauf) auch noch mal ein write KOPF04, bedingt wie oben gemacht.
Ich wäre sehr glücklich, wenn mir jemand hier weiterhelfen könnte, damit ich die Logik verstehe, die hinter dieser Fehlerbezugszahl beim write steckt. Da die PrtF's im Prg leider auch noch des öfteren mit diversen Angaben überschrieben werden und ggf's auch Barcodes gedruckt werden, ist es leider auch schon eine größere Sache einen Zeilenzähler einzubauen oder einen Überlauf auf das PrtF in den F-Bestimmungen zu definieren...
Vorab schon mal vielen Dank,
votch
ich habe aktuell ein(in meinen Augen) sehr seltsames und gleichzeitig dringendes Problem...
In ein bestehendes und sehr umfangreiches Druck-Prg aus dem letzten Jahrtausend soll ich eine Erweiterung einbauen.
Das Prg erstellt diverse Listen und Etiketten mit unterschiedlichsten Angaben aus über 50 PF's in einer mir bisher unbekannten Art und Weise...
Der Überlauf wird weder über eine Bezugszahl in den F-Bestimmung noch über einen Zeilenzähler gesteuert, sondern über eine Fehlerbezugszahl beim write des Druckformats. Da das Programm über10.000 Zeilen hat, habe ich meine Programmierung aus Gründen der Übersichtlichkeit an die bestehende angepaßt.
In das Programm habe ich eine 3zeilige Summenzeile eingebaut die ich ebenfalls mit einem write mit Fehlerbezugszahl ausgebe. Leider funktioniert es nicht ganz so wie ich will. Im Normalfall, wenn z.B. die Summe in die Mitte oder an den Anfang der Liste gedruckt werden soll, funktioniert es. Erreicht die Ausgabe der Summe jetrzt aber die Zeile 66-68(Gesamtzeilen 72, Überlauf Zeile 66; 7,5/13,3 CPI), passiert im Debugger Folgendes:
Die Fehlerbezugszahl geht an beim write, dann wird die Summe in Zeile 66-68 gedruckt, dann werden die Kopfangaben und Kopftexte gedruckt und danach wird die Summenzeile wieder gedruckt. Eigentlich will ich aber die Summe in Zeile 66-68 nicht haben, sondern nur auf der neuen Seite. Ändere ich aber jetzt etwas am Überlauf oder der Gesamtzeilen-Anzahl, erscheinen die Kopfangaben und -texte nur noch auf der ersten Seite.
Kann mir jemand weiterhelfen und sagen, warum die Summenzeile trotz *IN27 = *on trotzdem doppelt gedruckt wird und nicht nur auf der neuen Seite?
C *IN26 IFEQ *ON
C 27 WRITE SUMME BZ28(NI)
C *IN28 IFEQ '1'
C *IN27 IFEQ *ON
C eval #PageV = #PageV +1
C ENDIF
C 27 WRITE KOPF04 BZ28(NI)
C EXSR KOPTXT
C 27 WRITE SUMME
C END
C ENDIF
26=bestimmte Firma
27=bestimmte Auftragsart
28=Fehlerbezugszahl(NI) beim write
In KOPTXT werden Kopftexte ermittelt und es wird ein write KOTX04 gedruckt und ggf's(bei Überlauf) auch noch mal ein write KOPF04, bedingt wie oben gemacht.
Ich wäre sehr glücklich, wenn mir jemand hier weiterhelfen könnte, damit ich die Logik verstehe, die hinter dieser Fehlerbezugszahl beim write steckt. Da die PrtF's im Prg leider auch noch des öfteren mit diversen Angaben überschrieben werden und ggf's auch Barcodes gedruckt werden, ist es leider auch schon eine größere Sache einen Zeilenzähler einzubauen oder einen Überlauf auf das PrtF in den F-Bestimmungen zu definieren...
Vorab schon mal vielen Dank,
votch