Projektarbeit  REXX-Tipps          AGB "Software"
D3

REXX-Tipps (ohne Gewähr)

02. Aufruf eines Cobol Programms mit Übergabeparameter


A. REXX-Exec, die ein Cobol-Pgm ruft (mit Übergabe-Parm):

/*rexx*/
"ALLOC DD(EIN) SHR REU DSN('RZ.TEST.DATA(PERSTAB1)')" /*80-stell.Member*/
"ALLOC DD(AUS) SHR REU DSN('RZ.TEST.DATA(PERSTABN)')"
"CALL DB2.LOAD(HELL1) '123456789.ABCDEFG'"

/*
ALTERNATIV ZUM AUFRUF VIA TSO-CMD "CALL 'LOADLIB(MEM)' 'PARM'"
IST DER    AUFRUF VIA ISPEXEC-CMD "SELECT PGM(MEM) PARM(PARM)"
ALLERDINGS MUSS HIER DIE LOAD-LIBRARY UNTER DEM DD-NAMEN ISPLLIB
ALLOCIERT SEIN.
ADDRESS ISPEXEC "SELECT PGM(HELL1) PARM(123456789.ABCDEFG)"
*/

SAY RC
EXIT 0



B. Cobol Beispiel-Pgm "HELL1":
Das Cobol PGM liest 80-stellige Saetze ein und gibt sie
aus. Jedoch vor der Ausgabe des 1. Satzes wird der Über-
gabeparameter von der REXX-Exec an das Cob-Pgm in den
Ausgabebereich übertragen und als allererster Satz
weggeschrieben.

       IDENTIFICATION DIVISION.
       PROGRAM-ID. HELL1.
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SPECIAL-NAMES.
           DECIMAL-POINT IS COMMA.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT EIN ASSIGN TO "EIN".
           SELECT AUS ASSIGN TO "AUS".
       DATA DIVISION.
       FILE SECTION.
       FD  EIN,
           RECORD CONTAINS 80 CHARACTERS,
           DATA RECORD IS EINFELD.
       01  EINFELD                     PIC X(80).
       FD  AUS,
           RECORD CONTAINS 80 CHARACTERS,
           DATA RECORD IS AUSFELD.
       01  AUSFELD                     PIC X(80).
       WORKING-STORAGE SECTION.
       01  EOF-SCHALTER PIC X VALUE LOW-VALUE.
           88 EOF VALUE HIGH-VALUE.
       LINKAGE SECTION.
       01  P1.
       05  LNG                         PIC X(02).
       05  INH                         PIC X(80).
       PROCEDURE DIVISION
           USING P1.
       MACHMAL SECTION.
           OPEN INPUT  EIN.
           OPEN OUTPUT AUS.
           MOVE INH TO AUSFELD.
           WRITE AUSFELD.
           PERFORM UNTIL EOF
            READ EIN INTO AUSFELD
                AT END CLOSE EIN AUS
                       SET EOF TO TRUE
                NOT AT END
                       WRITE AUSFELD
             END-READ
           END-PERFORM
           MOVE 13  TO RETURN-CODE.
           STOP RUN.