DCL SPCPTR .PARM1 PARM; DCL DD PARM-IN-FILE CHAR(10) BAS(.PARM1); DCL SPCPTR .PARM2 PARM; DCL DD PARM-IN-LIB CHAR(10) BAS(.PARM2); DCL SPCPTR .PARM3 PARM; DCL DD PARM-OUT-FILE CHAR(10) BAS(.PARM3); DCL SPCPTR .PARM4 PARM; DCL DD PARM-OUT-LIB CHAR(10) BAS(.PARM4); DCL SPCPTR .PARM5 PARM; DCL DD PARM-GENERAL CHAR(50) BAS(.PARM5); DCL OL PARMS(.PARM1, .PARM2, .PARM3, .PARM4, .PARM5) EXT PARM MIN(5); DCL SPCPTR .ODP; DCL SPC ODP BAS(.ODP); DCL DD ODP.DCB BIN(4) DEF(ODP) POS(17); DCL SPCPTR .DCB; DCL SPC DCB BAS(.DCB); DCL DD DCB-GET BIN(2) DEF (DCB) POS(25); DCL DD DCB-PUT BIN(2) DEF (DCB) POS(33); DCL SPCPTR .NULL; DCL SPCPTR ..SEPT BASPCO; DCL SYSPTR .SEPT(6440) BAS(..SEPT); DCL CON CLOSE-ENTRY BIN(2) INIT(11); DCL CON OPEN-ENTRY BIN(2) INIT(12); DCL SPCPTR .IFCB INIT(IFCB); DCL DD IFCB CHAR(214) BDRY(16); DCL SPCPTR .IFCB-ODP DEF(IFCB) POS( 1); DCL SPCPTR .IFCB-INBUF DEF(IFCB) POS( 17); DCL DD IFCB-FILE CHAR(10) DEF(IFCB) POS(129); DCL DD IFCB-LIB-ID BIN(2) DEF(IFCB) POS(139) INIT(72); DCL DD IFCB-LIBRARY CHAR(10) DEF(IFCB) POS(141); DCL DD IFCB-MBR-ID BIN(2) DEF(IFCB) POS(151) INIT(73); DCL DD IFCB-MEMBER CHAR(10) DEF(IFCB) POS(153); DCL DD IFCB-FLAGS-1 CHAR(1) DEF(IFCB) POS(175) INIT(X'80'); DCL DD IFCB-FLAGS-2 CHAR(1) DEF(IFCB) POS(176) INIT(X'20'); DCL DD IFCB-RECORD-ID BIN (2) DEF(IFCB) POS(209) INIT(1); DCL DD IFCB-RECORD-LENGTH BIN (2) DEF(IFCB) POS(211) INIT(132); DCL DD IFCB-NO-MORE-PARMS BIN (2) DEF(IFCB) POS(213) INIT(32767); DCL OL OPEN-I(.IFCB); DCL OL CLOSE-I(.IFCB); DCL DD GET-ENTRY BIN(2); DCL DD INBUF CHAR(132) BAS(.IFCB-INBUF); DCL DD GET-OPTION BIN(4) INIT(H'03000001'); DCL SPCPTR .GET-OPTION INIT(GET-OPTION); DCL OL GET-OPERATION(.IFCB, .GET-OPTION, .NULL); DCL SPCPTR .OFCB INIT(OFCB); DCL DD OFCB CHAR(214) BDRY(16); DCL SPCPTR .OFCB-ODP DEF(OFCB) POS( 1); DCL SPCPTR .OFCB-OUTBUF DEF(OFCB) POS( 33); DCL DD OFCB-FILE CHAR(10) DEF(OFCB) POS(129); DCL DD OFCB-LIB-ID BIN(2) DEF(OFCB) POS(139) INIT(72); DCL DD OFCB-LIBRARY CHAR(10) DEF(OFCB) POS(141); DCL DD OFCB-MBR-ID BIN(2) DEF(OFCB) POS(151) INIT(73); DCL DD OFCB-MEMBER CHAR(10) DEF(OFCB) POS(153); DCL DD OFCB-FLAGS-1 CHAR(1) DEF(OFCB) POS(175) INIT(X'80'); DCL DD OFCB-FLAGS-2 CHAR(1) DEF(OFCB) POS(176) INIT(X'10'); DCL DD OFCB-RECORD-ID BIN (2) DEF(OFCB) POS(209) INIT(1); DCL DD OFCB-RECORD-LENGTH BIN (2) DEF(OFCB) POS(211) INIT(132); DCL DD OFCB-NO-MORE-PARMS BIN (2) DEF(OFCB) POS(213) INIT(32767); DCL OL OPEN-O (.OFCB) ARG; DCL OL CLOSE-O(.OFCB) ARG; DCL DD PUT-ENTRY BIN(2); DCL DD OUTBUF CHAR(132) BAS(.OFCB-OUTBUF); DCL DD PUT-OPTION BIN(4) INIT(H'10000005'); DCL SPCPTR .PUT-OPTION INIT(PUT-OPTION); DCL OL PUT-OPERATION(.OFCB, .PUT-OPTION, .NULL); DCL EXCM * EXCID(H'5001') BP(EOF-DETECTED) CV("CPF") IMD; DCL SPCPTR .CIPHER-RESULT INIT(CIPHER-RESULT); DCL DD CIPHER-RESULT CHAR(20); DCL SPCPTR .CIPHER-SOURCE INIT(CIPHER-SOURCE); DCL DD CIPHER-SOURCE CHAR(132); DCL DD CTRL CHAR(32) BDRY(16); DCL DD CTRL-FUNCTION CHAR( 2) DEF(CTRL) POS( 1) INIT(X'0005'); DCL DD CTRL-HASH-ALG CHAR( 1) DEF(CTRL) POS( 3) INIT(X'01'); DCL DD CTRL-SEQUENCE CHAR( 1) DEF(CTRL) POS( 4); DCL DD CTRL-LENGTH BIN( 4) DEF(CTRL) POS( 5) INIT(132); DCL DD * CHAR( 8) DEF(CTRL) POS( 9); DCL SPCPTR .CONTEXT DEF(CTRL) POS(17) INIT(CONTEXT); DCL DD CONTEXT CHAR(96); /* PRIVATE CONTEXT FOR CIPHER INSTRUCTION */ /**************************************************************/ ENTRY * (PARMS) EXT; CPYBWP .NULL, *; /* MAKE NULL PTR */ OPEN-INPUT-FILE: CPYBLA IFCB-FILE, PARM-IN-FILE; CPYBLA IFCB-LIBRARY, PARM-IN-LIB; CPYBLA IFCB-MEMBER, PARM-IN-FILE; CALLX .SEPT(OPEN-ENTRY), OPEN-I, *; CPYBWP .ODP, .IFCB-ODP; ADDSPP .DCB, .ODP, ODP.DCB; CPYNV GET-ENTRY, DCB-GET; OPEN-OUTPUT-FILE: CPYBLA OFCB-FILE, PARM-OUT-FILE; CPYBLA OFCB-LIBRARY, PARM-OUT-LIB; CPYBLA OFCB-MEMBER, PARM-OUT-FILE; CALLX .SEPT(OPEN-ENTRY), OPEN-O, *; CPYBWP .ODP, .OFCB-ODP; ADDSPP .DCB, .ODP, ODP.DCB; CPYNV PUT-ENTRY, DCB-PUT; INITIALIZE-CIPHER-CTRL: CPYBREP CONTEXT, X'00'; CALLX .SEPT(GET-ENTRY), GET-OPERATION, *; CPYBLA CIPHER-SOURCE, INBUF; CPYBLA CTRL-SEQUENCE, X'01'; /* FIRST */ CIPHER .CIPHER-RESULT, CTRL, .CIPHER-SOURCE; TRANSFORM-FILE: CPYBLA CTRL-SEQUENCE, X'02'; /* MIDDLE */ CIPHER .CIPHER-RESULT, CTRL, .CIPHER-SOURCE; CALLX .SEPT(GET-ENTRY), GET-OPERATION, *; CPYBLA CIPHER-SOURCE, INBUF; B TRANSFORM-FILE; EOF-DETECTED: CPYBLA CTRL-SEQUENCE, X'03'; /* FINAL */ CIPHER .CIPHER-RESULT, CTRL, .CIPHER-SOURCE; CPYBLAP OUTBUF, IFCB-FILE, " "; CVTHC OUTBUF(33:40), CIPHER-RESULT; CPYBLA PARM-GENERAL, IFCB-FILE; CPYBLA PARM-GENERAL(11:40), OUTBUF(33:40); CALLX .SEPT(PUT-ENTRY), PUT-OPERATION, *; CALLX .SEPT(CLOSE-ENTRY), CLOSE-I, *; CALLX .SEPT(CLOSE-ENTRY), CLOSE-O, *; RTX *;