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 DD STRING-TO-FIND CHAR(51); DCL DD STRING-SIZE BIN(2); DCL DD THE-LENGTH BIN(2); DCL DD WHERE BIN(2); DCL DD REC-NBR ZND(10,0); /**************************************************************/ 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; GET-STRING: CPYBLAP STRING-TO-FIND, PARM-GENERAL, " "; TRIML STRING-SIZE, STRING-TO-FIND, " "; CPYNV REC-NBR, 0; TRANSFORM-FILE: CALLX .SEPT(GET-ENTRY), GET-OPERATION, *; ADDN(S) REC-NBR, 1; SCAN(B) WHERE, INBUF, STRING-TO-FIND(1:STRING-SIZE) /NPOS(TRANSFORM-FILE); CPYBLAP OUTBUF, REC-NBR, " "; /* AND CLEAR REST OF RECORD */ SUBN(B) THE-LENGTH, WHERE, 1/NPOS(=+2); /* BEFORE STRING */ CPYBRAP OUTBUF(12:49), INBUF( 1:THE-LENGTH), " ";: SUBN(B) THE-LENGTH, 133, WHERE/NPOS(=+2); /* FROM STRING ON */ CPYBLAP OUTBUF(61:72), INBUF(WHERE:THE-LENGTH), " ";: CALLX .SEPT(PUT-ENTRY), PUT-OPERATION, *; B TRANSFORM-FILE; EOF-DETECTED: CALLX .SEPT(CLOSE-ENTRY), CLOSE-I, *; CALLX .SEPT(CLOSE-ENTRY), CLOSE-O, *; RTX *;