View Full Version : ovrprtf
muss man bei der Benutzng von 2 PRTF's (in einer Schleife)im Cobol-Pgm vor dem 'neuen' OVRPRTF die 'alte' PRTF schliessen? oder würde der OVRPRTF ausreichen?
PERFORM UNTIL NOT-OK
OVRPRTF Myfile1
OPEN OUTPUT Myfile1
Verarbeitung
(CLOSE Myfile1 ???)
OVRPRTF Myfile2
OPEN OUTPUT Myfile2
Verarbeitung
(CLOSE Myfile2 ???)
END-PERFORM
Danke!
Ralph
Jeder OVRxxx benennt explizit die zu überschreibende Datei (egal ob PF, LF, DSPF, PRTF, DDMF), abgesehen von der kleinen Ausnahme "OVRPRT PRTF(*PRTF) ...".
Ein Close ist nur dann erforderlich, wenn man den OVRxxx für die selbe Datei (also den gleichen Open) wieder verändern will (andere Attribute).
Da in deinem Fall verschiedene Dateien betroffen sind, ist ein Close nicht erforderlich (abgesehen von der Programmlogik, dass man einen Close verwendet, wenn man die Datei nicht mehr benötigt).
ich sollte vielleicht mein 'kleines' Pgm erweitern:
LESE DB1
_PERFORM UNTIL NOT-OK
Wenn a
_ OVRPRTF Myfile1
_ OPEN OUTPUT Myfile1
_ Verarbeitung
_ (CLOSE Myfile1 ???)
else
_ OVRPRTF Myfile2
_ OPEN OUTPUT Myfile2
_ Verarbeitung
_ (CLOSE Myfile2 ???)
_ LESE DB1
END-PERFORM
d.h. es kann durch aus sein, dass Myfile1 3 x ausgegeben wird, bevor Myfile 2 dran ist.
Ich befürchte fast, dass du bei deiner Aussage bleibst und du wirst es sicher schon erahnen, dass Myfile2 in meinem Fall nicht ausgegeben wird, was wiederum bedeutet, dass der Fehler woanders liegt...
Der Fehler hat mit dem OVR nix zu tun, sondern dass du einen Open auf eine geöffnete Datei losläßt.
Der OVR kann auch vor der Schleife laufen, wenn sich an den Parametern des OVR nichts ändert.
Der OVR bleibt erhalten, bis das Programm beendet wird, dass den OVR aufruft (Default), ansonsten siehe OVRPRTF ... OVRSCOPE().
einen Open auf eine geöffnete Datei
Aha, verstehe....
ich bin mir auch nicht sicher, ob der OVRPRTF mich meinem Ziel näher bringt..
Vielleicht weisst du, aus deimem unerschöpflichen Fundus einen Weg:
2 - 4 Printerfiles, mit gleicher Anzahl Satzformaten. Unterscheiden sich in den Textkonstanten, wegen Fremdsprachlichkeit und daraus resultierend plus entsprechender Textfelder...
Werden gefüllt aus einer DB(sequentiell), in der das Sprach-KZ die zu benutzende PRTF vorgibt.
Habe ich in soweit schon realisiert, als dass ich, z.B. bei 2 PRTF's, die Verarbeitung, sprich das Füllen der Satzformate in die PRTF, 2 x codiert habe.
Wollte jetzt, um es etwas schöner zu haben, nur einmal die Verarbeitung durchlaufen und die entsprechende PRTF füllen...
UND falls mal eine weitere PRTF hinzukommt, dann möchte ich die nur einbinden und alles geht wie von selbst... und nicht die Verarbeitungsroutinen abermals kopieren
ich habe das Gefühl, dass das nicht schwer ist, aber momentan sind meine Gedanken wie vernagelt!!!
Der Weg ist schon der Richtige !
Mittes OVRPRTF kannst du verschiedene Sprachversionen VOR dem Open einstellen.
Zu beachten ist allerdings:
Beim Open wird für jedes importierte Satzformat (COPY-Anweisung) ein Levelcheck durchgeführt. Ist dieser negativ, wird der Open mit Status bzw. CPF-Meldung abgelehnt.
Für jedes Satzformat ist natürlich die Pufferaufteilung (Feldreihenfolge) genau identisch zu halten.
Was allerdings die Mehrsprachigkeit angeht, solltest du eigentlich mit genau 1 Printerfile auskommen und alle Sprachabhängigen Texte aus einer Datei (oder MSGF) lesen. Das vereinfacht die Sache, insbesonders was das Hinzufügen neuer Sprachen angeht.
Layout-Varianten lassen sich aber leider so nicht gestalten, da dies das Programm ja wissen muss.
Hallo,
da will ich mich mal als interessierter Laie einmischen - Layout Varianten wären eventuell über Boolean Properties (früher mal Beszugszahlen) machbar.
Dieter Bender
Der Weg ist schon der Richtige !
Mittes OVRPRTF kannst du verschiedene Sprachversionen VOR dem Open einstellen.
Zu beachten ist allerdings:
Beim Open wird für jedes importierte Satzformat (COPY-Anweisung) ein Levelcheck durchgeführt. Ist dieser negativ, wird der Open mit Status bzw. CPF-Meldung abgelehnt.
Für jedes Satzformat ist natürlich die Pufferaufteilung (Feldreihenfolge) genau identisch zu halten.
Was allerdings die Mehrsprachigkeit angeht, solltest du eigentlich mit genau 1 Printerfile auskommen und alle Sprachabhängigen Texte aus einer Datei (oder MSGF) lesen. Das vereinfacht die Sache, insbesonders was das Hinzufügen neuer Sprachen angeht.
Layout-Varianten lassen sich aber leider so nicht gestalten, da dies das Programm ja wissen muss.
@Dieter
Aber sehr eingeschränkt, da mit Bezugszahlen nur die Sichtbarkeit oder ein paar Attribute gesteuert werden können, nicht jedoch die Position eines Feldes.
Besser wäre dann schon AFPDS, ein Format mit einem Feld, Attribute über BZ's, Position über Programmübergabefelder wahlweise in Inch/cm und noch ein Format für die Seitenausgabe.
So kann ich quer über die Seite alles drucken bevor ich es ausgebe.
Ich frage mich allerdings, wer das schon je gemacht hat (Zeilenberechnung, Spaltenberechung, Überlaufberechnung, ...).
Beim Windows ist das (native) der Standard, aber nicht umsonst gibts da eine vielzahl von Generatoren die mir dabei helfen.