Upload
annemarie-anger
View
129
Download
5
Embed Size (px)
Citation preview
Endevor-Exits per Cobol-Hülse <-> Rexx-Programm
Allgemeine Endevor-Zahlen
Endevor-Installation
Exit-Programmierung
die Sprache
die Voraussetzungen
technische Einzelheiten
Agenda
~
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
~
Inhalt
Allgemeine Endevor-Zahlen
Endevor-Installation
Exit-Programmierung
die Sprache
die Voraussetzungen
technische Einzelheiten
Cobol-Sourcecode
Rexx-Sourcecode
Rexx-Loadlibrary und Allokation
C1UEXITS
Agenda
~
Inhalt
Allgemeine Endevor-Zahlen
Endevor-Installation
Exit-Programmierung
die Sprache
die Voraussetzungen
technische Einzelheiten
Cobol-Sourcecode
Rexx-Sourcecode
Rexx-Loadlibrary und Allokation
C1UEXITS
Agenda
~
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.
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)
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.
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
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
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.
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]
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
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).
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.
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
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 _*
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. * ...
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.
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
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.
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.
Inhalt
Allgemeine Endevor-Zahlen
Endevor-Installation
Exit-Programmierung
die Sprache
die Voraussetzungen
technische Einzelheiten
Cobol-Sourcecode
Rexx-Sourcecode
Rexx-Loadlibrary und Allokation
C1UEXITS
Agenda
~
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).
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
Inhalt
Allgemeine Endevor-Zahlen
Endevor-Installation
Exit-Programmierung
die Sprache
die Voraussetzungen
technische Einzelheiten
Cobol-Sourcecode
Rexx-Sourcecode
Rexx-Loadlibrary und Allokation
C1UEXITS
Agenda
~
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
~
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]