[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2001
    Beiträge
    3

    Post OVRPRTF im laufenden Programm

    Ich habe folgendes Problem, ein Rechnungsformular mit Overlay/Printerfile soll in drei Arten ausgedruckt werden. Ich habe drei Printerfile´s und möchte die während eines Cobol PGM´s unterschiedlich zuweiesen. Geht das ???

    Vielen Dank, Sandra

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    68

    Post

    Hey,

    Cobol kenne ich leider nicht so sehr. In RPG würde ich es wie folgt lösen. Im RPG Programm kannst du ein Progr. aufrufen, was einen CL Befehl ausführt.

    MOVEABE1 PARP 80

    Z-ADD80 PARQ 155
    CALL 'QCMDEXC' 98
    PARM PARP
    PARM PARQ

    wobei der CL Befehl - im Beispiel - in die Variabel PARP gestellt wird. Durch das Programm hast du die Möglichkeit die Printerfile mit OVRPRTF zu überschreiben. Aber denke daran, die Printerfile erst nach
    dem Befehl benutzergesteuert zu öffnen. Im COBOL Programm müsste das ähnlich funktionieren. Viel Glück

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Auch in COBOL ist dies kein Problem:

    WORKING-STORAGE SECTION.
    77 OVERLAY-01 PIC X(10) VALUE "FORM1"
    01 QCMD-PARAM.
    05 QCMD-STRING PIC X(256).
    05 QCMD-LEN PIC S9(10)V9(5) COMP-3 VALUE 256.

    PROCEDURE DIVISION.
    :
    :
    INITIALIZE QCMD-STRING
    STRING "OVRPRTF FILE(myfile) TOFILE(xyz) FRONTOVL(" DELIMITED BY SIZE
    OVERLAY-01 DELIMITED BY SPACE
    ")" DELIMITED BY SIZE
    INTO QCMD-STRING

    CALL "QCMDEXC" USING QCMD-STRING QCMD-LEN

    OPEN OUTPUT MYFILE.
    :

    Mittels des STRING-Befehls kann der OVRPRTF entsprechend dynamisch zusammengebaut werden.
    Anschließend kann die Druckdatei geöffnet werden.

    Das Hauptproblem in COBOL ist: wenn der OVRPRTF syntaktisch nicht korrekt ist, wird ein CPF-Fehler gemeldet der nicht abgefangen werden kann (anders als in RPG).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Jan 2002
    Beiträge
    53

    Post

    Hallo,

    ich arbeite viel mit Cobol und OVRPRTF. Zum Beispiel drucke ich während der Seitenwechsel normierte Listköpfe aus einem externen Upro, welches je Seite mit Call aufgerufen wird. Der OVRPRTF wird im CL aufgerufen und kann hier auch vernünftig abgefangen werden. Falls Du Programmuster benötigst, schick mir doch eine Mail.

    Gruß
    Klaus

    [Dieser Beitrag wurde von skipper_k am 28. Juni 2002 editiert.]

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241

    Post

    Obiges Beispiel funktioniert nur, wenn das Cobol-Programm dann NACH dem OVRPRTF aus dem CL aufgerufen wird, da die Gültigkeit eines OVR-Befehls von der Aufrufebene abhängt.
    Wenn also Programm A einen Call auf ein CL macht, dieses dann den OVRxxx macht und sich beendet, wird der OVRxxx wieder gelöscht !
    Ansonsten muss man den Parameter OVRSCOPE(*JOB) verwenden um den OVRxxx zu erhalten.
    Dann darf man allerdings den DLTOVR nicht vergessen, da dies sonst ungeahnte Auswirkungen auf später aufgerufene Programme hat, da der OVRxxx ja noch gültig ist !

    Die Große Ausnahme ist hier CALL QCMDEXC. Dieses Programm verändert die Aufrufebene nicht, so dass ein OVRxxx-Befehl direkt aus RPG/COBOL vor einem OPEN aufgerufen werden kann.
    Nach Beenden des Programmes werden alle OVRxxx automatisch wieder entfernt (Aufrufebene).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Jan 2001
    Beiträge
    133

    Cool

    Hi Skipper,

    Ich habe noch zwei andere Ideen, wenn auch ähnlich.

    Warum nicht einfach in einem vorgeschalteten CL 3 OVR machen und im Programm dann 3 Printerfiles definieren, welche je nach Bedarf geöffnet oder geschlossen werden. Da ich davon ausgehe, daß die Feldnamen in den PRTF gleich sind, braucht man auch nur eine Verabreitung zu definieren.

    Oder Lösung zwei: Fasse doch einfach Deine 3 PRTF zu einem PRTF zusammen und arbeite mit verschiedenen Satznamen. Eventuelle spezielle printerfilespezifische Einstellungen wie OUTQ, Größen, CPI etc. kann man dann nach dem Druck mit CHGSPLFA ändern.

    Also warum kompliziert, wenn es auch einfach geht.

    Thomas

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. Programm auf "ferner" AS400 ausführen.
    By Souljumper in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 13-05-09, 19:50
  3. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  4. SQL im Programm
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 19-10-06, 09:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •