DCL DD CUR-ENTRY-NBR BIN(4); DCL DD LAST-ENTRY-NBR BIN(4); DCL DD ENTRIES(100000) CHAR(64) BDRY(16); DCL DD THE-ENTRY CHAR(64) BDRY(16); DCL DD ENTRY-DEVICE CHAR(10) DEF(THE-ENTRY) POS( 1); DCL DD ENTRY-USER CHAR(10) DEF(THE-ENTRY) POS(11); DCL DD ENTRY-NUMBER CHAR(6) DEF(THE-ENTRY) POS(21); DCL DD ENTRY-TYPE CHAR(1) DEF(THE-ENTRY) POS(27); DCL DD ENTRY-FILE CHAR(10) DEF(THE-ENTRY) POS(28); DCL DD ENTRY-LIBRARY CHAR(10) DEF(THE-ENTRY) POS(38); DCL DD ENTRY-OPERATION CHAR(1) DEF(THE-ENTRY) POS(48); DCL DD ENTRY-COUNT BIN(4) DEF(THE-ENTRY) POS(49); DCL DD ENTRY-MEMBER CHAR(10) DEF(THE-ENTRY) POS(53); DCL DD SPCPTRS CHAR(48) BDRY(16); DCL SPCPTR .WCBSPC DEF(SPCPTRS) POS( 1); DCL SPCPTR .WCB-ROOT DEF(SPCPTRS) POS(17); DCL SPCPTR .WCB-ENTRY DEF(SPCPTRS) POS(33); DCL DD OWN-PCO CHAR(512) BASPCO; DCL SYSPTR @WCBT00 DEF(OWN-PCO) POS(433); DCL DD WCB-ROOT CHAR(2048) BAS(.WCB-ROOT); DCL SYSPTR .WCB-TABLES(30) DEF(WCB-ROOT) POS(577); DCL DD THE-TABLE BIN(4); DCL DD THE-OFFSET BIN(4); DCL DD WCBTBL-SPACE CHAR(256) BAS(.WCBSPC); DCL DD WCBTBL-SIZE BIN(4) DEF(WCBTBL-SPACE) POS(21); DCL DD WCB-ENTRY CHAR(1024) BAS(.WCB-ENTRY); DCL DD WCB-DEVICE CHAR(10) DEF(WCB-ENTRY) POS( 1); DCL DD WCB-USER CHAR(10) DEF(WCB-ENTRY) POS( 11); DCL DD WCB-NUMBER CHAR(6) DEF(WCB-ENTRY) POS( 21); DCL SYSPTR .WCB-PCS DEF(WCB-ENTRY) POS( 33); DCL DD WCB-TYPE CHAR(1) DEF(WCB-ENTRY) POS( 97); DCL DD WCB-STATUS CHAR(1) DEF(WCB-ENTRY) POS( 98); DCL DD WCB-GROUP CHAR(1) DEF(WCB-ENTRY) POS(100); DCL DD WCB-START-TIME CHAR(8) DEF(WCB-ENTRY) POS(345); DCL SPCPTR .WCB-PCO; DCL DD WCB-PCO CHAR(992) BAS(.WCB-PCO); DCL DD WCB-PCO-GROUP-STATUS CHAR(1) DEF(WCB-PCO) POS(548); DCL DD WCB-PCO-SYSREQ-STATUS CHAR(1) DEF(WCB-PCO) POS(980); DCL DD JOB-PCO CHAR(512) BAS(.WCB-PCO); DCL SYSPTR @DMCQ DEF(JOB-PCO) POS(33); DCL DD DMCQ CHAR(512) BAS(.WALK); DCL SYSPTR DMCQ-ACCESS-GROUP DEF(DMCQ) POS( 1); DCL SYSPTR DMCQ-PROCESS-CONTROL-SPACE DEF(DMCQ) POS( 17); DCL SPCPTR DMCQ-AUTOMATIC-STORAGE DEF(DMCQ) POS( 33); DCL SPCPTR DMCQ-DM-ENTRY-POINT-TABLE DEF(DMCQ) POS( 49); DCL SPCPTR DMCQ-DB-LOG-CONTROL-BLOCK DEF(DMCQ) POS( 65); DCL SYSPTR DMCQ-OPNDBF-SPACE DEF(DMCQ) POS( 81); DCL DD DMCQ-SPOOL-OVERRIDES CHAR(10) DEF(DMCQ) POS( 97); DCL DD * CHAR(2) DEF(DMCQ) POS(107); DCL DD DMCQ-SIZE-OF-DMCQ BIN(4) DEF(DMCQ) POS(109); DCL DD DMCQ-OFFSET-TO-END BIN(4) DEF(DMCQ) POS(113); DCL MSPPTR .WALK; DCL DD ODP-OFFSET BAS(.WALK) BIN(4) POS(1); DCL SYSPTR .ODP BAS(.WALK) POS(49); DCL DD ODP-PTR CHAR(16) BDRY(16); DCL SPCPTR .ODP-SPACE DEF(ODP-PTR) POS(1); DCL DD ODP-SPACE CHAR(1024) BAS(.ODP-SPACE); DCL DD ODP-STATUS CHAR(4) DEF(ODP-SPACE) POS( 1); DCL DD ODP-DEV-LENGTH BIN(4) DEF(ODP-SPACE) POS( 5); DCL DD ODP-OPEN-SIZE BIN(4) DEF(ODP-SPACE) POS( 9); DCL DD ODP.OPEN-FEEDBACK BIN(4) DEF(ODP-SPACE) POS( 13); DCL DD ODP.DEV-NAMELIST BIN(4) DEF(ODP-SPACE) POS( 17); DCL DD ODP.IO-FEEDBACK BIN(4) DEF(ODP-SPACE) POS( 21); DCL DD ODP.LOCK-LIST BIN(4) DEF(ODP-SPACE) POS( 25); DCL DD ODP.SPOOL-OUTPUT BIN(4) DEF(ODP-SPACE) POS( 29); DCL DD ODP.MBR-DESCR BIN(4) DEF(ODP-SPACE) POS( 33); DCL DD ODP.CUR-IN-REC BIN(4) DEF(ODP-SPACE) POS( 37); DCL DD ODP.CUR-OUT-REC BIN(4) DEF(ODP-SPACE) POS( 41); DCL DD ODP.OPEN-DMCQ BIN(4) DEF(ODP-SPACE) POS( 45); DCL DD ODP.OUTSTANDINGS BIN(4) DEF(ODP-SPACE) POS( 49); DCL DD * CHAR(12) DEF(ODP-SPACE) POS( 53); DCL SYSPTR .ODP-CURSOR DEF(ODP-SPACE) POS( 65); DCL SPCPTR * DEF(ODP-SPACE) POS( 81); DCL SPCPTR .ODP-CDM-ERROR DEF(ODP-SPACE) POS( 97); DCL SPCPTR .ODP-INPUT-BUFFER DEF(ODP-SPACE) POS(113); DCL SPCPTR .ODP-OUTPUT-BUFFER DEF(ODP-SPACE) POS(129); DCL DD ODP.CDM-CLOSING BIN(2) DEF(ODP-SPACE) POS(145); DCL DD ODP-DEV-NAME-IDX BIN(2) DEF(ODP-SPACE) POS(147); DCL DD ODP-NBR-OF-DEVS BIN(2) DEF(ODP-SPACE) POS(149); DCL DD ODP-SEQUENCE-NBR BIN(4) DEF(ODP-SPACE) POS(151); DCL DD ODP-REC-LENGTH BIN(2) DEF(ODP-SPACE) POS(155); DCL DD ODP-REC-LENGTH2 BIN(2) DEF(ODP-SPACE) POS(157); DCL DD ODP-NBR-OF-*RDS BIN(2) DEF(ODP-SPACE) POS(159); DCL DD ODP-RELEASE-NBR BIN(2) DEF(ODP-SPACE) POS(161); DCL DD ODP-OPEN-POSN CHAR(1) DEF(ODP-SPACE) POS(163); DCL DD ODP-OVR-REC-LEN BIN(2) DEF(ODP-SPACE) POS(164); DCL DD ODP-COM-DEV-CNT BIN(2) DEF(ODP-SPACE) POS(166); DCL DD ODP.INPUT-BPCA BIN(4) DEF(ODP-SPACE) POS(168); DCL DD ODP.OUTPUT-BPCA BIN(4) DEF(ODP-SPACE) POS(172); DCL DD * CHAR(1) DEF(ODP-SPACE) POS(176); DCL SPCPTR .OPEN-FEEDBACK; DCL DD OPEN-FEEDBACK CHAR(256) BAS(.OPEN-FEEDBACK); DCL DD ODP-FILETYPE CHAR(2) DEF(OPEN-FEEDBACK) POS( 1); DCL DD ODP-FILE CHAR(10) DEF(OPEN-FEEDBACK) POS( 3); DCL DD ODP-LIBRARY CHAR(10) DEF(OPEN-FEEDBACK) POS( 13); DCL DD ODP-SPOOL-FILE CHAR(10) DEF(OPEN-FEEDBACK) POS( 23); DCL DD ODP-SPOOL-LIB CHAR(10) DEF(OPEN-FEEDBACK) POS( 33); DCL DD ODP-SPOOL-NBR BIN(2) DEF(OPEN-FEEDBACK) POS( 43); DCL DD ODP-MAX-RCD-SIZE BIN(2) DEF(OPEN-FEEDBACK) POS( 45); DCL DD ODP-MAX-KEY-SIZE BIN(2) DEF(OPEN-FEEDBACK) POS( 47); DCL DD ODP-MEMBER CHAR(10) DEF(OPEN-FEEDBACK) POS( 49); DCL DD * BIN(4) DEF(OPEN-FEEDBACK) POS( 59); DCL DD * BIN(4) DEF(OPEN-FEEDBACK) POS( 63); DCL DD ODP-DEVICE-TYPE BIN(4) DEF(OPEN-FEEDBACK) POS( 67); DCL DD * CHAR(3) DEF(OPEN-FEEDBACK) POS( 69); DCL DD ODP-NBR-LINES BIN(2) DEF(OPEN-FEEDBACK) POS( 72); DCL DD ODP-NBR-COLUMNS BIN(2) DEF(OPEN-FEEDBACK) POS( 74); DCL DD ODP-NBR-REC-OPEN BIN(4) DEF(OPEN-FEEDBACK) POS( 76); DCL DD ODP-ACCESS-TYPE CHAR(2) DEF(OPEN-FEEDBACK) POS( 80); DCL DD ODP-DUPL-KEY CHAR(1) DEF(OPEN-FEEDBACK) POS( 82); DCL DD ODP-SOURCE-FILE CHAR(1) DEF(OPEN-FEEDBACK) POS( 83); DCL DD * CHAR(10) DEF(OPEN-FEEDBACK) POS( 84); DCL DD * CHAR(10) DEF(OPEN-FEEDBACK) POS( 94); DCL DD ODP-VOL-LABEL BIN(2) DEF(OPEN-FEEDBACK) POS(104); DCL DD ODP-MAX-RCD-BLK BIN(2) DEF(OPEN-FEEDBACK) POS(106); DCL DD ODP-OVERFLOW-LN BIN(2) DEF(OPEN-FEEDBACK) POS(108); DCL DD ODP-BLK-RCD-INCR BIN(2) DEF(OPEN-FEEDBACK) POS(110); DCL DD * BIN(4) DEF(OPEN-FEEDBACK) POS(112); DCL DD ODP-MISC-FLAGS1 CHAR(1) DEF(OPEN-FEEDBACK) POS(116); DCL DD ODP-REQUESTER CHAR(10) DEF(OPEN-FEEDBACK) POS(117); DCL DD ODP-OPEN-FILES BIN(2) DEF(OPEN-FEEDBACK) POS(127); DCL DD * BIN(2) DEF(OPEN-FEEDBACK) POS(129); DCL DD ODP-NBR-FILES BIN(2) DEF(OPEN-FEEDBACK) POS(131); DCL DD ODP-MISC-FLAGS2 CHAR(1) DEF(OPEN-FEEDBACK) POS(133); DCL DD ODP-OPEN-ID CHAR(2) DEF(OPEN-FEEDBACK) POS(134); DCL DD ODP-MAX-FMT-SIZE BIN(2) DEF(OPEN-FEEDBACK) POS(136); DCL DD * BIN(2) DEF(OPEN-FEEDBACK) POS(138); DCL DD ODP-MISC-FLAGS3 CHAR(1) DEF(OPEN-FEEDBACK) POS(140); DCL DD * CHAR(6) DEF(OPEN-FEEDBACK) POS(141); DCL DD ODP-NBR-DEVICES BIN(2) DEF(OPEN-FEEDBACK) POS(147); DCL DD ODP-DEV-LIST... CHAR(1) DEF(OPEN-FEEDBACK) POS(149); DCL SPCPTR .IO-FEEDBACK; DCL DD IO-FEEDBACK CHAR(512) BAS(.IO-FEEDBACK); DCL DD IO-FILE-DEPNT-AREA BIN(2) DEF(IO-FEEDBACK) POS( 1); DCL DD IO-WRITE-COUNT BIN(4) DEF(IO-FEEDBACK) POS( 3); DCL DD IO-READ-COUNT BIN(4) DEF(IO-FEEDBACK) POS( 7); DCL DD IO-UPDATE-COUNT BIN(4) DEF(IO-FEEDBACK) POS(11); DCL DD IO-OTHER-COUNT BIN(4) DEF(IO-FEEDBACK) POS(15); DCL DD * CHAR(1) DEF(IO-FEEDBACK) POS(19); DCL DD IO-CUR-OPERATION CHAR(1) DEF(IO-FEEDBACK) POS(20); DCL DD IO-RECORD-FORMAT CHAR(10) DEF(IO-FEEDBACK) POS(21); DCL DD IO-DEVICE-CLASS CHAR(2) DEF(IO-FEEDBACK) POS(31); DCL DD IO-DEVICE-NAME CHAR(10) DEF(IO-FEEDBACK) POS(33); DCL DD IO-RECORD-LENGTH BIN(4) DEF(IO-FEEDBACK) POS(43); DCL DD * CHAR(80) DEF(IO-FEEDBACK) POS(47); DCL DD IO-RECORDS-IN-BLOCK BIN(2) DEF(IO-FEEDBACK) POS(127); DCL DD IO-RCD-FORMAT-LENGTH BIN(2) DEF(IO-FEEDBACK) POS(129); DCL DD * CHAR(2) DEF(IO-FEEDBACK) POS(131); DCL DD IO-BLOCK-COUNT BIN(4) DEF(IO-FEEDBACK) POS(133); DCL DD * CHAR(8) DEF(IO-FEEDBACK) POS(137); /*******************************************************************/ ENTRY * EXT; GET-WCB-ROOT: SETSPPFP .WCB-ROOT, @WCBT00; SEARCH-WORK-CONTROL-TABLES: CPYNV LAST-ENTRY-NBR, 0; CPYNV THE-TABLE, 0; SEARCH-NEXT-TABLE: ADDN(S) THE-TABLE, 1; CMPNV(B) THE-TABLE, 30 /HI(DONE-WITH-TABLES); CMPPTRT(B) .WCB-TABLES(THE-TABLE), */EQ(DONE-WITH-TABLES); SETSPPFP .WCBSPC, .WCB-TABLES(THE-TABLE); PREPARE-TO-SEARCH-WCB-TABLE: SETSPPFP .WCB-ENTRY, .WCBSPC; CPYNV(B) THE-OFFSET, H'0300'/POS(=+2); NEXT-WCBTBL-ENTRY: ADDN(S) THE-OFFSET, H'0400';: CMPNV(B) THE-OFFSET, WCBTBL-SIZE/NLO(SEARCH-NEXT-TABLE); SETSPPO .WCB-ENTRY, THE-OFFSET; CHECK-WCBTBL-ENTRY: CMPBLA(B) WCB-STATUS, X'20'/NEQ (NEXT-WCBTBL-ENTRY); /*ACTIVE */ TSTBUM(B) WCB-GROUP , X'06'/ONES(NEXT-WCBTBL-ENTRY); /*SUSPGRP*/ SETSPPFP .WCB-PCO, .WCB-PCS; TSTBUM(B) WCB-PCO-SYSREQ-STATUS, X'80'/NZER(NEXT-WCBTBL-ENTRY); HAVE-ACTIVE-ENTRY: CPYBLA ENTRY-DEVICE, WCB-DEVICE; CPYBLA ENTRY-USER, WCB-USER; CPYBLA ENTRY-NUMBER, WCB-NUMBER; CPYBLA ENTRY-TYPE, WCB-TYPE; GET-ODP: SETSPPFP .WALK, @DMCQ; SETSPPO .WALK, H'98'; /* PTR TO SHARED HEADER */ CMPNV(B) ODP-OFFSET, -1/NEQ(WALK-ODP-CHAIN); SETSPPO .WALK, H'A0';: WALK-ODP-CHAIN: CMPNV(B) ODP-OFFSET, -1/EQ(DONE-WITH-ODP); SETSPPO .WALK, ODP-OFFSET; SETSPPFP .ODP-SPACE, .ODP; ADDSPP .OPEN-FEEDBACK, .ODP-SPACE, ODP.OPEN-FEEDBACK; SKIP-IF-DISPLAY-FILE: CMPBLA(B) ODP-FILETYPE, "DS"/ EQ(WALK-ODP-CHAIN); SKIP-IF-LOGICAL-FILE: TSTBUM(B) ODP-MISC-FLAGS1, X'08'/ONES(WALK-ODP-CHAIN); HAVE-DATABASE-OR-SPOOLFILE: ADDSPP .IO-FEEDBACK, .ODP-SPACE, ODP.IO-FEEDBACK; CMPBLA(B) IO-CUR-OPERATION, X'00'/ EQ(WALK-ODP-CHAIN); CPYBLA ENTRY-OPERATION, IO-CUR-OPERATION; CPYNV ENTRY-COUNT, IO-WRITE-COUNT; ADDN(S) ENTRY-COUNT, IO-READ-COUNT; ADDN(S) ENTRY-COUNT, IO-UPDATE-COUNT; ADDN(S) ENTRY-COUNT, IO-OTHER-COUNT; CMPNV(B) ENTRY-COUNT, 0/EQ(WALK-ODP-CHAIN); CPYBLA ENTRY-LIBRARY, ODP-LIBRARY; CPYBLA ENTRY-FILE, ODP-FILE; CPYBLA ENTRY-MEMBER, ODP-MEMBER; ADDN(S) LAST-ENTRY-NBR, 1; CPYBWP ENTRIES(LAST-ENTRY-NBR), THE-ENTRY; B WALK-ODP-CHAIN; DONE-WITH-ODP: B NEXT-WCBTBL-ENTRY; DONE-WITH-TABLES: BRK "1"; RTX *;