View Full Version : Ausrichtung in PRTF's
Das steht meines Wissens nirgends, sondern wurde von mir auch beim Testen festgestellt.
Was das Ovfl angeht, schau mal dein Format an, dass du ausgibst.
Ovfl wird gemeldet, wenn die Zeile erreicht oder überschritten wird.
Wenn du also SPACEA(x) oder ggf. mehrere Zeilen mit einem Format ausgibst wird eben erst NACH dem Zeilenvorschub EOP gemeldet.
OVFL muss sich also errechenen aus: Zeilenzahl - Fussformat(e) - Positionsformat !
Damit wird verhindert, dass eine Position in den Fussbereich hineinkommt.
Korrekt gehts aber tatsächlich nur mit I-O-FEEDBACK-Area um eben VOR der Ausgabe eines Formates einen ggf. eintretenden Ovfl zu erkennen. Dies ist vor allem dann sinnvoll, wenn variabel lange Pos-Formate ausgegeben werden, die aus optischen Gründen aber nicht getrennt werden sollen.
Das Drucken ist an und für sich generell ein schwieriges Thema.
was ist denn für das EOP-Flag ausschlaggebend?
das wirkliche Ende der Seite oder die Ovfl-Zeile?
'... ggf. mehrere Zeilen mit einem Format ausgibst wird eben erst NACH dem Zeilenvorschub EOP gemeldet....'
wenn du dabei aber schon auf der nächsten Seite stehst, dann greift die EOP-Bedingung nicht und er druckt einfach weiter, richtig?
wenn dem so ist, dann müßte man jeder Ausgabezeile ein eigenes Format zu weisen, oder, was schon am Anfang gesagt wurde, einen Zähler mitlaufen lassen und vor dem Druck des entsprechenden Formats, errechnen wo man hinterher stehen würe und ggf. zuerst einen Seitenvorschub durchführen.
Für EOP ist die Overflow-Zeile ausschlaggebend !
Wenn ich z.B. Formulare mit der klassischen 3-Teilung (Kopf, Position, Fuss) habe, muss ich ja wissen wann ich in den Fussbereich komme.
Bei Rechnungen/Lieferscheinen gibt es im Fuss häufig Übertragszeilen. Wie soll ich die ansteuern, wenn EOP erst beim tatsächlichen Ende der Seite gemeldet würde ?
Also, bei einem Formular von 70 Zeilen (A4) und Overflow 66 kann ich die Zeilen 67-70 für den Fussbereich nutzen.
Allerdings muss ich noch die tatsächliche Druckleistung berücksichtigen. Beim normalen Laserdrucker habe ich einen nicht bedrucklbaren Rand von je 1 Zeile oben und unten.
Und genau das ist ein Problem beim Hosttransform !
Drucke ich gezielt auf Zeile 1, verschiebt Hosttransform die gesamte Seite um 1 Zeile nach unten !
Drucke ich gezielt erst ab Zeile 2, so bleibt das Layout der Seite erhalten !
Dadurch kommt es häufig zu Unterschieden zwischen der 1. und folgenden Seiten, da man meist mit SKIPB(1) positioniert.
Anders sieht es bei AFPDS aus, da wird jedes Druckfeld einzeln berücksichtigt. Passt es in den druckbaren Bereich, wird es so ausgegeben, passt es nicht, wird es verschoben.
Dadurch kommt es zu sehr seltsamen Ausgaben:
- Zeile 1 und 2 wird übereinander gedruckt
- Spalte 1-2 wird auf Spalte 3 verschoben
- alles Andere wird so gedruckt wie angegeben
Gibst du wiederum auf klassischen Endlosdruckern aus, ist der Druck auf jede Zeile/Spalte möglich (Randloser Druck).
Die aktuellen Werte stehen in der I-O-FEEDBACK-Area (siehe Handbuch)
könntest du mir bitte sagen, wie ich auf die I-O-FEEDBACK-AREA zugreifen kann, bzw, sie auslesen kann.
Ich habe sämtliche? /(einige) HB's gelesen, in denen der Begriff vorkommt, aber wie deklarien und/oder benutzen habe ich nicht gefunden.
Für EOP ist die Overflow-Zeile ausschlaggebend !
ich bin mir nicht sicher, ob du dich hier nicht irrst, ich werde mal einige Probeläufe machen. Mir ist so, als ob der Ovfl genau an der Stelle kam, die mit meinen verschiedenen Seitenlängen übereinstimmte.
Folgende Handbücher sind hierzu relevant:
COBOL Reference:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c0918130.pdf
COBOL Users Guide:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c0918120.pdf
I-O-Feedback wird in "Special Names" deklariert und per ACCEPT geladen.
SPECIAL NAMES.
I-O-FEEDBACK is MYFEEDBACK.
Siehe auch
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c092540322.htm#HDRIOFEED
In folgendem Handbuch sind im Apandix A die Feedbackareas beschrieben:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/dm/rbal3mst.pdf
Ich hoffe das wars ;) und kann dir weiterhelfen.
Über RTVRPGSRC kannst du RPGIII in ILERPG umsetzen, aber Achtung: COPY-Strecken müssen auch umgesetzt werden.
@Fuerchau
Der normal im System verfügbare Befehl wäre dafür:
CVTRPGSRC FROMFILE(SRCLIB/QRPGSRC)
FROMMBR(PGMALT)
TOFILE(SRCLIB/QRPGLESRC)
TOMBR(PGMRPGIV)
Gruß Holger
ich benutze mein altes 'Posting' :)
um Felder in einer Printerfile zu drucken oder nicht, benutzt man Bezugszahlen.
Gibt es eine einfachere Lösung, um in einem Format die gefüllten Felder von den ungefüllten zu unterscheiden, als
ist FELD_A ZERO dann setze BZ_1 ON
ist FELD_B ZERO,dann ....
usw....
Wähle den entsprechenden Editcode um Null-Werte eben nicht zu drucken.
ich konkretisiere meine Frage:
du hast 4 Adressfelder für den Namen und dann komt die Straße und dann die Plz usw.
Manchmal sind alle 4 Adressfelder gefüllt und manchmal nur 2 oder 3.
Ziel soll sein, dass die Straße gleich nach dem letzten (gefüllten) Adressfeld kommt und keine Leezeilen dazwischen