endevor-exits per cobol-hülse rexx-programm allgemeine endevor-zahlen endevor-installation...

27
Endevor-Exits per Cobol-Hülse <-> Rexx- Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische Einzelheiten Agenda ~

Upload: annemarie-anger

Post on 05-Apr-2015

123 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Endevor-Exits per Cobol-Hülse <-> Rexx-Programm

Allgemeine Endevor-Zahlen

Endevor-Installation

Exit-Programmierung

die Sprache

die Voraussetzungen

technische Einzelheiten

Agenda

~

Page 2: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Was wird benötigt:

Cobol-Sourcecode für den Exit (Hülse)

Schnittstelle „Cobol calls Rexx“

Rexx-Sourcecode für die Exit-Logik

Rexx-Loadlibrary und Allokation

C1UEXITS ändern

Was wird nicht benötigt:

ISPF-Umgebung (sonst wäre der Aufruf mit „ISPEXEC Select CMD“ einfacher !)

EXIT7 als Beispiel (Package Exit)

die Voraussetzungen

~

Page 3: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Inhalt

Allgemeine Endevor-Zahlen

Endevor-Installation

Exit-Programmierung

die Sprache

die Voraussetzungen

technische Einzelheiten

Cobol-Sourcecode

Rexx-Sourcecode

Rexx-Loadlibrary und Allokation

C1UEXITS

Agenda

~

Page 4: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Inhalt

Allgemeine Endevor-Zahlen

Endevor-Installation

Exit-Programmierung

die Sprache

die Voraussetzungen

technische Einzelheiten

Cobol-Sourcecode

Rexx-Sourcecode

Rexx-Loadlibrary und Allokation

C1UEXITS

Agenda

~

Page 5: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Der Cobol-Standard-Kopf

EXIT7

~

* - Cobol-Wrapper for Endevor exits invoking Rexx programs - * * ------------------------------------------------------------ * IDENTIFICATION DIVISION. * PROGRAM-ID. C1UEXT07. AUTHOR. BRIDGESTONE. INSTALLATION. IBM-370. DATE-WRITTEN. 01.01.00. DATE-COMPILED. REMARKS. ****************************************************************** * This cobol program has only the functionality to receive data from Endevor during an exit * call, to format them and call the Rexx. Example here is for EXIT7 (packages). ****************************************************************** ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-370 * WITH DEBUGGING MODE . OBJECT-COMPUTER. IBM-370. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. DATA DIVISION. FILE SECTION.

Page 6: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Schnittstelle Endevor <-> Cobol-Exit

EXIT7

~

LINKAGE SECTION. *

COPY PKGXBLKS.

*----------------------------------------------------------------- PROCEDURE DIVISION USING PACKAGE-EXIT-BLOCK PACKAGE-REQUEST-BLOCK PACKAGE-EXIT-HEADER-BLOCK PACKAGE-EXIT-FILE-BLOCK PACKAGE-EXIT-ACTION-BLOCK PACKAGE-EXIT-APPROVER-MAP PACKAGE-EXIT-BACKOUT-BLOCK PACKAGE-EXIT-SHIPMENT-BLOCK PACKAGE-EXIT-SCL-BLOCK PACKAGE-EXIT-COLLECT-BLOCK . * A001-MAIN SECTION.

. . . . .

copybook from CA (in this case: package copybook)

Location: HLQ.LLQ.SOURCE(PKGXBLKS)

Page 7: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Der erste Aufruf von Endevor

EXIT7

~

A001-MAIN SECTION. A001. MOVE 0 TO REXX-RETURN-CODE. MOVE 0 TO RETURN-CODE.

* ** first Endevor-call of exit7 initialize the * ** options when Endevor shall call the exit7. IF SETUP-EXIT-OPTIONS PERFORM A998-SET-UP MOVE ZEROS TO RETURN-CODE MOVE 0 TO PECB-NDVR-EXIT-RC GO TO Z001.

Z001. GOBACK.

Page 8: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Setup für Folgeaufrufe

EXIT7

~

* *-----------------------------------------* * * define all exit points (for 1st call) * * *-----------------------------------------* A998-SET-UP SECTION.

* SET TO Y, IF THIS EXIT POINT SHALL CALL THIS PROGRAM

MOVE 'N' TO PECB-BEFORE-BACKIN MOVE 'N' TO PECB-AFTER-BACKIN MOVE 'N' TO PECB-BEFORE-BACKOUT MOVE 'N' TO PECB-AFTER-BACKOUT MOVE 'N' TO PECB-BEFORE-CAST MOVE 'Y' TO PECB-MID-CAST MOVE 'N' TO PECB-AFTER-CAST MOVE 'N' TO PECB-BEFORE-COMMIT MOVE 'N' TO PECB-AFTER-COMMIT MOVE 'Y' TO PECB-BEFORE-CREATE-BLD MOVE 'N' TO PECB-AFTER-CREATE-BLD MOVE 'Y' TO PECB-BEFORE-CREATE-COPY MOVE 'N' TO PECB-AFTER-CREATE-COPY MOVE 'Y' TO PECB-BEFORE-CREATE-EDIT MOVE 'N' TO PECB-AFTER-CREATE-EDIT MOVE 'Y' TO PECB-BEFORE-CREATE-IMPT MOVE 'N' TO PECB-AFTER-CREATE-IMPT

Page 9: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Setup für Folgeaufrufe

EXIT7

~

MOVE 'N' TO PECB-BEFORE-DELETE MOVE 'N' TO PECB-AFTER-DELETE MOVE 'N' TO PECB-BEFORE-DSPLY-APPR MOVE 'N' TO PECB-BEFORE-DSPLY-BKOUT MOVE 'N' TO PECB-BEFORE-DSPLY-SCL MOVE 'N' TO PECB-BEFORE-DSPLY-ELMSM MOVE 'N' TO PECB-BEFORE-DSPLY-PKG MOVE 'N' TO PECB-BEFORE-DSPLY-RPT MOVE 'Y' TO PECB-BEFORE-EXEC MOVE 'N' TO PECB-AFTER-EXEC MOVE 'N' TO PECB-BEFORE-EXPORT MOVE 'N' TO PECB-AFTER-EXPORT MOVE 'N' TO PECB-BEFORE-GENPID MOVE 'N' TO PECB-AFTER-GENPID MOVE 'N' TO PECB-BEFORE-LIST MOVE 'N' TO PECB-AFTER-LIST MOVE 'N' TO PECB-BEFORE-MOD-BLD MOVE 'N' TO PECB-AFTER-MOD-BLD MOVE 'N' TO PECB-BEFORE-MOD-CPY MOVE 'N' TO PECB-AFTER-MOD-CPY MOVE 'N' TO PECB-BEFORE-MOD-EDIT MOVE 'N' TO PECB-AFTER-MOD-EDIT MOVE 'N' TO PECB-BEFORE-MOD-IMPT MOVE 'N' TO PECB-AFTER-MOD-IMPT

Page 10: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Cobol-Sourcecode EXIT7

Setup für Folgeaufrufe

EXIT7

~

MOVE 'N' TO PECB-BEFORE-RESET MOVE 'N' TO PECB-AFTER-RESET MOVE 'N' TO PECB-BEFORE-REV-APPR MOVE 'N' TO PECB-AFTER-REV-APPR MOVE 'N' TO PECB-BEFORE-REV-DENY MOVE 'N' TO PECB-AFTER-REV-DENY MOVE 'N' TO PECB-BEFORE-SHIP-XMIT MOVE 'N' TO PECB-AFTER-SHIP-XMIT MOVE 'N' TO PECB-BEFORE-SHIP-CON MOVE 'N' TO PECB-AFTER-SHIP-CON * DO IT IN BATCH AND FOREGROUND MOVE 'Y' TO PECB-TSO-EXECUTE MOVE 'Y' TO PECB-BATCH-EXECUTE . * Z998. EXIT.

Page 11: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call-Definition)

EXIT7

~

WORKING-STORAGE SECTION. * ******************************************* * * Field definitions for REXX program * * ******************************************* 01 USED-REXX-PROGRAMS 05 REXXPGM PIC X(8). [name of your own Rexx program (e.g. REXXEX7)]

01 IRXEXEC-NAME PIC X(8). [“IRXEXEC”]

* exec-control-block (EXECBLK-PTR) 01 EXECBLK. 05 EXECBLK-ACRYN PIC X(8). [string 'IRXEXECB'] 05 EXECBLK-LENGTH PIC S9(8) BINARY. [length of EXEC-BLOCKS (IN BYTES)] 05 EXECBLK-RESERVED PIC S9(8) BINARY. [unused] 05 EXECBLK-MEMBER PIC X(8). [EXEC membername if using PDS oder

blank if using PO] 05 EXECBLK-DDNAME PIC X(8). [blank, then DEFAULT=SYSEXEC] 05 EXECBLK-SUBCOM PIC X(8). [blank, then DEFAULT=TSO] 05 EXECBLK-DSNPTR POINTER. [name if EXEC-LOAD-DATASET oder

0, then no LOAD-DATASET] 05 EXECBLK-DSNLEN PIC S9(8) BINARY. [length of DATASETNAME oder

0, When DSNPTR=NULL]

Page 12: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call-Definition)

EXIT7

~

* Parameters (ARGTABLE-PTR) 01 ARGUMENT. 05 ARGUMENT-1 OCCURS 1 TIMES. 10 ARGSTRING-PTR POINTER. 10 ARGSTRING-LENGTH PIC S9(8) BINARY. 05 ARGSTRING-LAST1 PIC S9(8) BINARY.

* Flags 01 FLAGS. 05 FBYTE1-4 PIC X(4). 05 FBYTE5 PIC X(1).

* data request block (EVALBLK-PTR) 01 EVALBLK. 05 EVALBLK-EVPAD1 PIC S9(8) BINARY. * evalblk-evsize = (evdata +16) / 8 05 EVALBLK-EVSIZE PIC S9(8) BINARY. 05 EVALBLK-EVLEN PIC S9(8) BINARY. 05 EVALBLK-EVPAD2 PIC S9(8) BINARY. 05 EVALBLK-EVDATA PIC X(256). 05 EVALBLK-EVDATA-RED REDEFINES EVALBLK-EVDATA. 10 REXX-RESULT PIC 9(5). 10 REXX-ERROR-MSG PIC X(251).

01 DUMMY-ZERO PIC S9(8) BINARY. * ******************************************* * * Field definitions for COBOL exit * * ******************************************* 01 POINTER-FIELDS. 05 EXECBLK-PTR POINTER. 05 ARGTABLE-PTR POINTER. 05 EVALBLK-PTR POINTER.

wird später erklärt…

Rückgabe aus Rexx

Page 13: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Parameter-Definition)

EXIT7

~

* your parameters for the rexx program 01 IRXEXEC-PARM. 10 RX-FUNCTION PIC X(2). 10 FILLER PIC X(1). 10 RX-C1PKGID PIC X(16). 10 FILLER PIC X(1). 10 RX-C1PKGTY PIC X(10). 10 FILLER PIC X(1). 10 RX-C1ACTION PIC X(8). 10 FILLER PIC X(1). 10 RX-C1USERID PIC X(8). 10 FILLER PIC X(1). 10 RX-C1CCID PIC X(12). 10 FILLER PIC X(1). 10 RX-C1ENVMNT PIC X(8). 10 FILLER PIC X(1). 10 RX-C1STGID PIC X(1). 10 FILLER PIC X(1). 10 RX-C1SUBSYS PIC X(8). 10 FILLER PIC X(1). 10 RX-C1SYSTEM PIC X(8). 10 FILLER PIC X(1). 10 RX-C1ELTYPE PIC X(8). 10 FILLER PIC X(1). 10 RX-C1ELEM PIC X(8). 10 FILLER PIC X(1). 10 RX-MODE PIC X(1). * length of "IRXEXEC-PARM" 01 REXX-PARAM-LENGTH PIC 9(4) VALUE 110.

01 MISCELLANEOUS. 05 REXX-RETURN-CODE PIC S9(8) BINARY. 05 FUNCTION PIC X(2).

Page 14: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call aus Cobol)

EXIT7

~

* initialize rexx values B001.

IF PACT-SEQ-NBR-FOR-ENTRY = ZEROS MOVE ZEROS TO PECB-UEXIT-HOLD-FIELD.

PERFORM A020-IRXEXEC-INIT.

Page 15: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call aus Cobol)

EXIT7

~

*-----------------------------------------* * initialize rexx parameters * *-----------------------------------------* A020-IRXEXEC-INIT SECTION. A020. MOVE SPACES TO IRXEXEC-PARM. MOVE 48 TO EXECBLK-LENGTH. MOVE 0 TO EXECBLK-RESERVED.

* this is the loadlibrary where your rexx programm resides. * please allocate this library before you start Endevor * in your TSO session. MOVE "REXXLOAD" TO EXECBLK-DDNAME. MOVE " " TO EXECBLK-SUBCOM. MOVE "REXXEXT7" TO REXXPGM. MOVE REXXPGM TO EXECBLK-MEMBER. SET EXECBLK-DSNPTR TO NULL. MOVE 0 TO EXECBLK-DSNLEN. SET EXECBLK-PTR TO ADDRESS OF EXECBLK. MOVE REXX-PARAM-LENGTH TO ARGSTRING-LENGTH(1) MOVE -1 TO ARGSTRING-LAST1 SET ARGSTRING-PTR(1) TO ADDRESS OF IRXEXEC-PARM. SET ARGTABLE-PTR TO ADDRESS OF ARGUMENT. MOVE 0 TO EVALBLK-EVPAD1. * EVSIZE = see above in working-storage MOVE 34 TO EVALBLK-EVSIZE. MOVE 0 TO EVALBLK-EVLEN. MOVE 0 TO EVALBLK-EVPAD2. SET EVALBLK-PTR TO ADDRESS OF EVALBLK.

MOVE LOW-VALUE TO FLAGS. MOVE X'E0' TO FBYTE5. MOVE 0 TO DUMMY-ZERO.

Z020. EXIT.

(256+16)/8=34

DD-Name muss allokiert sein.

Inhalt: Die gerufene Rexx.Name der gerufenen Rexx

Page 16: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (COMPILED Rexx !!)

EXIT7

~

MOVE LOW-VALUE TO FLAGS. MOVE X'E0' TO FBYTE5.

_* ************ IBM-Def ***************** _* BIT-FLAGS FüR IRXEXEC (4 Bytes, USES ONLY BIT0-3) _* (AB BIT4 = RESERVED) _* (siehe auch "TSO/E REXX REFERENCE", 12.17) _* _* ABER: mit 4 Bytes geht es nicht !!!!!!!!!!!!! :-(( * ************ My-DEF ****************** _* => Nur mit 5 Bytes ! _* Deshalb einfach X(5) und mit LOW-VALUE initialisiert. _* Die BIT0-3-Bestückung bezieht sich auf das HI-Byte _* des 5.Bytes. _* Beispiel: _* Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 _* 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 _* darauf kommts an => ^^^^ _* Mögliche Werte des HI-BYTE5: _* X'10' / 0001 => failed X'20' / 0010 => failed _* X'30' / 0011 => failed X'40' / 0100 => failed _* X'50' / 0101 => failed X'60' / 0110 => failed _* X'70' / 0111 => failed X'80' / 1000 => ok _* X'90' / 1001 => ok X'A0' / 1010 => ok _* X'B0' / 1100 => ok X'C0' / 1011 => ok _* X'D0' / 1101 => ok X'E0' / 1110 => ok _* X'F0' / 1111 => ok _*

Page 17: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call aus Cobol)

EXIT7

~

*********************************************************** **** the following sections check the event of the ** **** calling Endevor ** ***********************************************************

C001. * check sth before Endevor creates the package IF CREATE-PACKAGE AND PECB-BEFORE PERFORM A100-do-something... GO TO Y001.

D001. * check sth before Endevor executes the package IF EXECUTE-PACKAGE AND PECB-BEFORE PERFORM A110-do-something... GO TO Y001.

E001. * ...

Page 18: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call aus Cobol)

EXIT7

~

*-----------------------------------------* * your routines to check something with * * your rexx program. * *-----------------------------------------* A100-do-something... (here: check name convention of a PKGname) A100.

MOVE "01" TO RX-FUNCTION . MOVE PECB-PACKAGE-ID TO RX-C1PKGID . MOVE "NONE" TO RX-C1PKGTY . MOVE "NONE" TO RX-C1ACTION . MOVE "NONE" TO RX-C1CCID . MOVE "NONE" TO RX-C1ENVMNT . MOVE "NONE" TO RX-C1SYSTEM . MOVE "NONE" TO RX-C1SUBSYS . MOVE "NONE" TO RX-C1ELEM . MOVE "NONE" TO RX-C1ELTYPE . MOVE "NONE" TO RX-C1STGID . MOVE "00000000" TO RX-C1USERID . MOVE PECB-MODE TO RX-MODE.

B100. PERFORM A800-CALL-REXX.

Z100. EXIT.

Page 19: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Call aus Cobol)

EXIT7

~

*-----------------------------------------* * calling the rexx * *-----------------------------------------* A800-CALL-REXX SECTION. A800. MOVE "IRXEXECB" TO EXECBLK-ACRYN. MOVE "IRXEXEC " TO IRXEXEC-NAME.

CALL IRXEXEC-NAME USING EXECBLK-PTR ARGTABLE-PTR FLAGS DUMMY-ZERO DUMMY-ZERO EVALBLK-PTR DUMMY-ZERO DUMMY-ZERO DUMMY-ZERO.

MOVE REXX-RESULT TO REXX-RETURN-CODE.

Z800. EXIT.

Dynamischer CALL

Page 20: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Error-Handling/Standard)

EXIT7

~

Y001. IF REXX-RETURN-CODE = ZEROES MOVE 0 TO PECB-NDVR-EXIT-RC GO TO Z001.

IF REXX-RETURN-CODE = 20 MOVE "0020" TO PECB-MESSAGE-ID MOVE "ext-rexx failed " TO PECB-MESSAGE MOVE 17 TO PECB-ERROR-MESS-LENGTH SET PECB-ABORT-RC TO TRUE MOVE REXX-RETURN-CODE TO PECB-NDVR-HIGH-RC GO TO Z001.

IF REXX-RETURN-CODE = 20021 MOVE "2021" TO PECB-MESSAGE-ID MOVE "parameter form COBOL to REXX wrong |" TO PECB-MESSAGE MOVE 42 TO PECB-ERROR-MESS-LENGTH SET PECB-ABORT-RC TO TRUE MOVE REXX-RETURN-CODE TO PECB-NDVR-HIGH-RC GO TO Z001.

IF REXX-RETURN-CODE > 19999 DISPLAY "RC>2000?="REXX-RETURN-CODE MOVE "2000" TO PECB-MESSAGE-ID MOVE "RC >=20000 | exit terminated || " TO PECB-MESSAGE MOVE 42 TO PECB-ERROR-MESS-LENGTH SET PECB-ABORT-RC TO TRUE MOVE REXX-RETURN-CODE TO PECB-NDVR-HIGH-RC GO TO Z001.

Page 21: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Schnittstelle zum Aufruf einer compiled Rexx (Error-Handling/eigene)

EXIT7

~

************************************************************ * all other error messages you set in the rexx * you can handle here... ************************************************************

* ...your error handling... IF...

MOVE 12 TO PECB-NDVR-HIGH-RC. SET PECB-ABORT-RC TO TRUE. MOVE 12 TO RETURN-CODE.

Z001. GOBACK.

Page 22: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Inhalt

Allgemeine Endevor-Zahlen

Endevor-Installation

Exit-Programmierung

die Sprache

die Voraussetzungen

technische Einzelheiten

Cobol-Sourcecode

Rexx-Sourcecode

Rexx-Loadlibrary und Allokation

C1UEXITS

Agenda

~

Page 23: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Parameterübergabe vom Cobol-Exit an die Rexx:

EXIT7

~

/* REXX ***********************************/ PARSE ARG in_c1uext07_param IN_FUNKTION = word(in_c1uext07_param,1) IN_C1PKGID = word(in_c1uext07_param,2) IN_C1PKGTY = word(in_c1uext07_param,3) IN_C1ACTION = word(in_c1uext07_param,4) IN_C1USERID = word(in_c1uext07_param,5) IN_C1CCID = word(in_c1uext07_param,6) IN_C1ENVMNT = word(in_c1uext07_param,7) IN_C1STGID = word(in_c1uext07_param,8) IN_C1SUBSYS = word(in_c1uext07_param,9) IN_C1SYSTEM = word(in_c1uext07_param,10) IN_C1ELTYPE = word(in_c1uext07_param,11) IN_C1ELEM = word(in_c1uext07_param,12) /* Modus: T=TSO/Online + B=Batch */ IN_MODUS = word(in_c1uext07_param,13)

01 IRXEXEC-PARM. 10 RX-FUNCTION PIC X(2). 10 FILLER PIC X(1). 10 RX-C1PKGID PIC X(16). 10 FILLER PIC X(1). 10 RX-C1PKGTY PIC X(10). 10 FILLER PIC X(1). 10 RX-C1ACTION PIC X(8). 10 FILLER PIC X(1). 10 RX-C1USERID PIC X(8). 10 FILLER PIC X(1). 10 RX-C1CCID PIC X(12). 10 FILLER PIC X(1). 10 RX-C1ENVMNT PIC X(8). 10 FILLER PIC X(1). 10 RX-C1STGID PIC X(1). 10 FILLER PIC X(1). 10 RX-C1SUBSYS PIC X(8). 10 FILLER PIC X(1). 10 RX-C1SYSTEM PIC X(8). 10 FILLER PIC X(1). 10 RX-C1ELTYPE PIC X(8). 10 FILLER PIC X(1). 10 RX-C1ELEM PIC X(8). 10 FILLER PIC X(1). 10 RX-MODE PIC X(1).

Page 24: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Rexx-Funktion:

EXIT7

~

/* Hier die Exit-Logik/Funktionen verarbeiten... */ select when IN_FUNKTION = "01" then do if pos(substr(IN_C1PKGID,1,1),'ABCEFGHKMNPRSZ0123589') = 0 then

do say "Namenskonventionen !! - Paketart " !!, substr(IN_C1PKGID,1,1) !! " nicht erlaubt !" rc_exit = 703 end end end

exit rc_exit

Page 25: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Inhalt

Allgemeine Endevor-Zahlen

Endevor-Installation

Exit-Programmierung

die Sprache

die Voraussetzungen

technische Einzelheiten

Cobol-Sourcecode

Rexx-Sourcecode

Rexx-Loadlibrary und Allokation

C1UEXITS

Agenda

~

Page 26: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Rexx-Loadlibrary und Allokation:

DD-Name „REXXLOAD“ muss im TSO und Batch verfügbar sein

im TSO: z. B. in der Logon-Prozedur

in Batch: „REXXLOAD DD DISP=SHR,DSN=Rexxloadlib….. “

Voraussetzungen

~

Page 27: Endevor-Exits per Cobol-Hülse Rexx-Programm Allgemeine Endevor-Zahlen Endevor-Installation Exit-Programmierung die Sprache die Voraussetzungen technische

Exit-Programmierung

Am Schluss die C1UEXITS ändern:

EXIT7

~

C1UEXITS TITLE 'DEFINE USER EXITS' *---------------------------------------------------------------------** MULTIPLE USER EXIT SUPPORT ** ** TYPE=START DEFINITION MUST PROCEDE ANY EXIT DEFINITION STATEMENT. **---------------------------------------------------------------------*C1UEXITS §C1UEXIT TYPE=START,XIT7BAT=YES *---------------------------------------------------------------------** SEE USER EXITS MANUAL FOR A DESCRIPTION OF ** DEFINING MULTIPLE USER EXITS. **---------------------------------------------------------------------* §C1UEXIT EXIT#=2,NAME=C1UEXT02,ANCHID=0,AUTH=YES §C1UEXIT EXIT#=7,NAME=C1UEXT07,ANCHID=0,AUTH=NO *---------------------------------------------------------------------** TYPE=DEFINITION DENOTES THE END OF THE EXIT TABLE. **---------------------------------------------------------------------* §C1UEXIT TYPE=END END

HLQ.LLQ.TABLES

…umwandlung…

HLQ.LLQ.AUTHLIB

Package Exit7 kann in BATCH laufen

Nummer, Name, Anchor, Auth

[USE_ALTID=Y/N möglich]