Anmelden

View Full Version : Automatischer Seitenanfang via SKIP



Seiten : [1] 2

Vigi
22-12-11, 06:58
Hallo erstmal,

habe gestern mitbekommen, dass es möglich ist, in einer PRTF einen "automatischen" Seitenanfang zu erzeugen, wenn man auf ein Satzformat schreibt. Auch nach lägerer suche im www, auch hier im Forum und i information center bin ich nicht fündig geworden. BZW, nicht detailreich genug, dass es "leicht" verständlich ist. Im Prinzip will ich, immer wenn ich den Head drucke, damit auch sagen, dass dieser auf einer neuen Seite gedruckt werden soll. Die PRTF enthält Header, Body, Foot. Wenn der Body voll ist, druck ich den Fuß. Danach will ich mit einem write auf "Header" erreichen, dass dieser auf einer neuen Seite gedruckt wird. Habe gehört das man dazu SKIP verwändet, doch leider weiß ich nicht, wie ich es anzuwenden habe ;(
Hoffe ihr könnt mir diesbezüglich helfen.

Danke

A R HEADER01
A 1 2DATE EDTWRD('0 / / ')
A +1TIME EDTWRD('0 : : ')
A 1 33'IVKLSTP0 '
A HIGHLIGHT
A 1 70'PAGE:'
A +1PAGNBR EDTCDE(Z)
A 2 2'CDTHLDORDR'
A 2 32'INVENTUR LISTE'
A HIGHLIGHT
A DUSERID 10A O 2 70
A 5 2'LAGER'
A HIGHLIGHT
A 5 16'ARTIKEL'
A HIGHLIGHT
A 5 85'CHARGE'
A HIGHLIGHT
A 5 95'GEBI'
A HIGHLIGHT
A 5100'ANZAHL'
A HIGHLIGHT
A 5106'INHALT'
A HIGHLIGHT
A 5114'RESTMENGE'
A HIGHLIGHT
A 5124'GESAMTMENGE'
A HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A R DBODY01
A SPACEB(1)
A PCXLAGO 2 2HIGHLIGHT
4'/'
A PCXLAGP 10 5HIGHLIGHT
A PCXARTN 6 0 16HIGHLIGHT
A PASBEZ1 30 23HIGHLIGHT
A PASBEZ2 30 54HIGHLIGHT
A PCXCNUM 9 0 85HIGHLIGHT
A PCXGEBI 4 95HIGHLIGHT
A PCXANZG 5 0 100HIGHLIGHT
A PCXINHA 7 2 106HIGHLIGHT
A PCXREST 9 2 114HIGHLIGHT
A PCXMENG 9 2 124HIGHLIGHT
A PCXSTAT 8 134HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A R FOOTER01
A SPACEB(2)
A 2'*** END OF REPORT ***'
A HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

K_Tippi
22-12-11, 07:20
Hallo,
du hast zwei möglichkeiten:
1. im ersten Satzformat(KOPF) das Schlüsselwort SKIPB

dann wird vor der ausgabe des satzes auf auf die Zeile gesprungen
A R ENT01
A SKIPB(003)
A 3
A 'EK006 '
A +16

oder beim letzten Satz der alten Seite ein SKIPA dann wird danach auf die Zeile positioniert.

Klaus

Khholm
22-12-11, 07:24
z.B. so:

<!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normale Tabelle"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> A R HEADER1
A SKIPB(002)
Jetzt kommen die zu druckenden Felder

SKIPB
Gibt an, daß vor dem Drucken ein Vorschub in die angegebene Zeile
erfolgt.

Vigi
22-12-11, 07:43
Danke vorweg für die schnellen Antworten. Jetzt sieht das ganze so aus:

A R HEADER01
A SKIPB(003)
A 1 2DATE EDTWRD('0 / / ')
A +1TIME EDTWRD('0 : : ')
A 1 33'IVKLSTP0 '
A HIGHLIGHT
A 1 70'PAGE:'
A +1PAGNBR EDTCDE(Z)
A 2 2'CDTHLDORDR'
A 2 32'INVENTUR LISTE'
A HIGHLIGHT
A DUSERID 10A O 2 70
A 5 2'LAGER'
A HIGHLIGHT
A 5 16'ARTIKEL'
A HIGHLIGHT
A 5 85'CHARGE'
A HIGHLIGHT
A 5 95'GEBI'
A HIGHLIGHT
A 5100'ANZAHL'
A HIGHLIGHT
A 5106'INHALT'
A HIGHLIGHT
A 5114'RESTMENGE'
A HIGHLIGHT
A 5124'GESAMTMENGE'
A HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A R DBODY01
A SPACEB(1)
A PCXLAGO 2 2HIGHLIGHT
4'/'
A PCXLAGP 10 5HIGHLIGHT
A PCXARTN 6 0 16HIGHLIGHT
A PASBEZ1 30 23HIGHLIGHT
A PASBEZ2 30 54HIGHLIGHT
A PCXCNUM 9 0 85HIGHLIGHT
A PCXGEBI 4 95HIGHLIGHT
A PCXANZG 5 0 100HIGHLIGHT
A PCXINHA 7 2 106HIGHLIGHT
A PCXREST 9 2 114HIGHLIGHT
A PCXMENG 9 2 124HIGHLIGHT
A PCXSTAT 8 134HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A R FOOTER01
A SPACEB(2)
A 2'*** END OF REPORT ***'
A HIGHLIGHT
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Jetzt sagt der Compiler aber:
Nachricht . . . : Für Pluswert Wert für Feldlänge im vorherigen Feld erforderlich.
Nachricht . . . : Zeilennummer mit SPACE- oder SKIP-Schlüsselwort nicht zulässig.

Habe es auch schon mit SKIP(002) versucht mit selben Erfolg.

PS. Gibt es eine Möglichkeit, dass ich den Quellcode ohne verluste von Blanks einfügen kann? Der besseren Lesbarkeit halber....

Khholm
22-12-11, 07:49
Wenn du auf Zeile 2 (oder z.B. 3) springst, dann darf der Druck mit Zeile/Position natürlich auch erst auf der Zeile beginnen, in die gerade mit SKIPB gesprungen wurde.

Wie soll das dann sonst funktionieren, Springe auf Zeile 3 und fange dann in Zeile 1 an zu drucken?

Vigi
22-12-11, 08:01
Wenn du auf Zeile 2 (oder z.B. 3) springst, dann darf der Druck mit Zeile/Position natürlich auch erst auf der Zeile beginnen, in die gerade mit SKIPB gesprungen wurde.

Wie soll das dann sonst funktionieren, Springe auf Zeile 3 und fange dann in Zeile 1 an zu drucken?

Das klingt logisch. Wo muss ich den jetzt einbauen, dass er bei "A 1 2DATE EDTWRD('0 / / ')" was in der 3ten Zeile steht anfängt auf die neue Seite zu drucken?

Falls der eine oder andere jetzt denkt, dass ich keine Ahnung von PRTFs habe, muss ich ihm recht geben. Ist das erste mal das ich Auswertungen auch drucken soll. Darum wären DAU Antworten hilfreich.

Pikachu
22-12-11, 08:26
PS. Gibt es eine Möglichkeit, dass ich den Quellcode ohne verluste von Blanks einfügen kann? Der besseren Lesbarkeit halber....
Ja, einfach beim Erstellen der Antwort oben auf # oder auf "php" tippen und dann den Text einsetzen.

Bei den Fehler-Nachrichten stehen auch deren IDs. Sieh mal mit DSPMSGD und ID nach, was zu der jeweiligen Fehler-Nachricht näheres steht.

Fuerchau
22-12-11, 09:20
Zum Positionieren gibt es 2 Möglichkeiten:

a) SKIPB(n)
b) direkte Zeilenangabe

Beides führt dazu, dass ggf. auf eine neue Seite positioniert wird.

Gibst du also z.B.

A SKIPB(3)
A 1 3 'Irgendwas'

führt das dazu, dass auf Zeile 3 vorgeschoben wird, die Zeile 1 erzwingt den nächsten Seitenwechsel und somit wird eine Leerseite erzeugt.

Aber ein SKIPA(3) führt dazu, dass nach dem Druck eine neue Seite erstellt wird, wenn dem nichts mehr folgt, wird am Ende eine leere Seite erstellt.
Manche Drucker unterstützen, dass leere Seiten nicht gedruckt werden, so dass es keiner merkt.

Nun zu deinem Fehler:

Für Pluswert Wert für Feldlänge im vorherigen Feld erforderlich!

Der Compiler berechnet die nächste Position eben mit der Position + Feldlänge des vorherigen Feldes.
Hier fehlt eine diesbezügliche Angabe.

Vigi
22-12-11, 09:47
Okay.
Soll heißen:



A R HEADER01
A SKIPB(003)
A 1 2DATE EDTWRD('0 / / ')
A +1TIME EDTWRD('0 : : ')


in SKIPB(X) muss für X eine 23 eingegeben werden.
Er soll mit


A 1 2DATE EDTWRD('0 / / ')

auf der neuen Seite anfangen, dass letzte Feld ist


2'*** END OF REPORT ***'

aus dem FOOTER.

Der Compiler berechnet die nächste Position eben mit der Position + Feldlänge des vorherigen Feldes.

Also 2 + 21 = 23, aber auch hier meldet der Compiler fehler.
Die selben wie vorher.

Fuerchau
22-12-11, 09:53
Die Frage ist, auf welcher Zeile wird der Fehler genau gemeldet ?

Ausserdem hast du da immer noch den Fehler:
SKIPB(3) <= Starte auf Zeile 3

1 2DATE <= Drucke auf Zeile 1

Damit provozierst du eine Leerseite!
Entweder lass das SKIPB(3) weg oder lass die Zeile 1 weg.