* /* START OF SPECIFICATIONS **** 00050002 *01* PROCESSOR = ASSEMXF-370R 00100002 **** END OF SPECIFICATIONS ***/ 00150002 TITLE ' IGG0197A OPEN EXECUTOR ' 00200019 IGG0197A CSECT 00400019 *********************************************************** @YM00638 00450002 *MODULE-NAME @YM00638 00500002 * IGG0197A @YM00638 00550002 * @YM00638 00560002 *DESCRIPTIVE-NAME @YM00638 00570002 * OCR OPEN EXECUTOR, STAGE 2 @YM00638 00580002 * @YM00638 00590002 *COPYRIGHT @YM00638 00592002 * NONE @YM00638 00594002 * @YM00638 00596002 *CHANGE-ACTIVITY @YM00638 00598002 * 00600019 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00800001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 01000001 * RELEASE 22 ADDITIONS/CHANGES/DELETIONS 01200001 * RELEASE 23 ADDITIONS/CHANGES/DELETIONS 01400001 * RELEASE 24 ADDITIONS/CHANGES/DELETIONS 01600001 * RELEASE 25 ADDITIONS/CHANGES/DELETIONS 01800001 * RELEASE 26 ADDITIONS/CHANGES/DELETIONS 02000001 * RELEASE 27 ADDITIONS/CHANGES/DELETIONS 02200001 * VS 2 REL 2 ADDITIONS/CHANGES/DELETIONS 02240002 *A185000,431000,446400 - 447600,568500 - 569500,581000, Y02967* 02280002 *A663000,717000,847000 Y02967* 02320002 *C732000,946000 - 947000,964000 - 967000 Y02967* 02360002 * * 02400019 * STATUS - CHANGE LEVEL 00 RELEASE 20 02600001 * * 02800019 *FUNCTION/OPERATION * 03000019 * IT GETS CORE FOR IOB'S AND CHANNEL PROGRAMS * 03200019 * IT DETERMINES THE CORRECT CNTRL MODULE * 03400019 * IT DETERMINES THE CORRECT EOB MODULE * 03600019 * IT DETERMINES THE CORRECT CHECK OR SYNCH AND ERROR PROC RTN * 03800019 * IT DETERMINES THE CORRECT READ OR GET ROUTINE * 04000019 * A CODE IS SET IN THE DCBCNTRL FIELD TO INDICATE THE CORRECT ROUTINE * 04200019 * TO IGG0197B * 04400019 * IT GENERATES THE REQUIRED IOB'S(AND CHANNEL PROGRAMS FOR QSAM) * 04600019 * IT LINKS THE CHANNEL PROGRAMS TO THE IOB'S AND THE IOB'S TO ONE * 04800019 * .ANOTHER * 05000019 * IT SPECIFIES IN THE WTG TABLE THAT EXECUTOR IGG0197B IS THE NEXT * 05200019 * EXECUTOR REQUIRED FOR THIS DCB * 05400019 * IT THEN SEARCHES THE WTG TABLE TO PASS CONTROL TO ANOTHER EXECUTOR * 05600019 * * 05800019 *ENTRY POINT 06000019 * LABEL OCR010 06200019 *ENTRY METHOD- ENTERED FROM IGGO191B OR IGG0191I BY USE OF THE XCTL * 06400019 * MACRO * 06600019 *INPUT- SEE DESCRIPTION OF REGISTERS, USER'S DCB * 06800019 * * 07000019 *OUTPUT- SEE DESCRIPTION OF REGISTERS, USER'S DCB, USER'S IOB'S * 07200019 * * 07400019 *EXITS- NORMAL - XCTL TO IGG0197B * 07600019 *EXITS- ERROR - SVC 13(ABEND 013) DCB INCONSISTENCIES, FUNCTION NOT * 07800019 * SUPPORTED * 08000019 * * 08200019 * * 08400019 * * 08600019 *TABLES/WORKAREAS - WHERE TO GO TABLE * 08800019 * * 09000019 * BYTE 0-7 NAME * 09200019 * BYTE 8-10 RELATIVE DISK ADDRESS (TTR) OF FIRST RECORD * 09400019 * BYTE 11 CONCATENATION NUMBER * 09600019 * BYTE 12 ZERO * 09800019 * BYTE 13 ALIAS INDICATOR AND USER DATA FIELD DESCRIPTOR * 10000019 * ALIAS INDICATOR-1 BIT * 10200019 * NUMBER OF TTRS IN USERS DATA FIELD-2BITS * 10400019 * BYTE 14-16 TTR * 10600019 * BYTE 17 NAME * 10800019 * BYTE 18-19 TTR OF NOTE LIST OR SCATTER LIST * 11000019 * BYTE 20 TRANSLATION TABLE * 11200019 * BYTE 21 ZERO OR NUMBER OF ENTRIES IN THE NOTE LIST * 11400019 * BYTE 22-23 ATTRIBUTES * 11600019 * BYTE 24-26 TOTAL CONTIGUOUS MAIN STORAGE REQUIRED FOR MODULE * 11800019 * BYTE 27-28 LENGTH OF FIRST TEXT RECORD * 12000019 * BYTE 29 LENGTH OF WTG TABLE (IN DOUBLE WORDS) * 12200019 * BYTE 30-31 PATH THROUGH LOADS OF ROUTINES * 12400019 * BYTE 32-36 IDTTR OF EXECUTOR FOR FIRST DCB * 12600019 * BYTE 37-39 WORK AREA ADDRESS FOR FIRST DCB * 12800019 * BYTE 40--- TABLE OF IDTTR'S AND WORK AREA ADDRESSES * 13000019 * * 13200019 * BYTE 32+N(8) IDTTR OF EXECUTOR FOR NTH DCB (5 BYTES) * 13400019 * WORK AREA ADDRESS FOR NTH DCB (3 BYTES) * 13600019 * * 13800019 * BYTE 32+8(N+1)IDTTR OF LAST ROUTINE LOAD (5 BYTES) * 14000019 * (3 BYTES) * 14200019 * * 14400019 *ATTRIBUTES- REENTRANT, REUSABLE * 14600019 * * 14800019 *NOTES- THIS EXECUTOR DEALS ONLY WITH OPTICAL CHARACTER READERS, * 15000019 * IN PARTICULAR THE 1285, 1287, AND 1288 15200019 * 15400019 *********************************************************************** 15600019 * * 15800019 * REGISTER CONVENTIONS USED THROUGHOUT ALL OPEN PASSES * 16000019 * * 16200019 *********************************************************************** 16400019 * 16600019 RE EQU 0 WORK REG5 16800019 RF EQU 1 WORK REG6 17000019 RDCB EQU 2 DCB REGISTER 17200019 RBASE EQU 3 BASE REGISTER 17400019 RCORE EQU 4 WORK REGISTER 17600019 RPAR EQU 5 TOP OF PARAMETER LIST 17800019 RWTG EQU 6 TOP OF WTG TABLE 18000019 RPARC EQU 7 CURRENT PARAMETER 18200019 RWTGC EQU 8 CURRENT TRANS LOAD 18400019 RTCB EQU 9 CURRENT TCB ADDRESS Y02967 18500002 RUCB EQU 10 USED HERE AS A COUNTER IN IOB GENERA 18600019 RDEB EQU 11 DEB ADDRESS 18800019 RB EQU 12 WORK REG1 19000019 RC EQU 13 WORK REG2 19200019 RD EQU 14 WORK REG3 19400019 RJ EQU 15 WORK REG4 19600019 ********************************************************************** 19800019 * 20000019 * OPEN INDICATORS 20200019 * 20400019 *********************************************************************** 20600019 INPUT EQU X'7F' DCB OPENED FOR INPUT=X'00' 20800019 * 21000019 ********************************************************************** 21200019 * 21400019 * OPERATIONS 21600019 * 21800019 *********************************************************************** 22000019 RBOP EQU X'0C' READ BACKWARD WITH ON-LINE CORRECTN 22200019 RBOCOP EQU X'4C' READ BACKWARD 22400019 GNLOP EQU X'13' GO TO NEXT LINE 22600019 * 22800019 ********************************************************************** 23000019 * 23200019 * MASKS FOR MODULES TO BE USED 23400019 * 23600019 *********************************************************************** 23800019 QSAMB EQU X'01' IND2--QSAM 24000019 RBOCB EQU X'10' OPTCD--RBOC BIT 24200019 CNTRLB EQU X'02' MACRF--CNTRL 24400019 LOCATEB EQU X'08' MACRF--LOCATE MODE 24600019 FIXEDB EQU X'80' RECFM--FIXED RECORDS 24800019 VORUB EQU X'40' RECFM--VARIABLE OR UNDEFINED RECORDS 25000019 UNDEFB EQU X'C0' RECFM--UNDEFINED RECORDS 25200019 ********************************************************************** 25400019 * 25600019 * CCW FLAGS USED 25800019 * 26000019 *********************************************************************** 26200019 SLIB EQU X'20' SLI BIT 26400019 CCHAIN EQU X'40' COMMAND CHAIN BIT 26600019 CCHAINOF EQU X'BF' COMMAND CHAIN BIT OFF 26800019 * 27000019 * 27200019 * CCW OFFSETS USED 27400019 * 27600019 FLAG1 EQU X'04' FLAG BYTE IN FIRST CCW 27800019 FLAG2 EQU X'0C' FLAG BYTE IN SECOND CCW 28000019 COUNT EQU X'06' COUNT FIELD IN FIRST CCW 28200019 COUNT2 EQU X'0E' COUNT FIELD IN SECOND CCW 28400019 COMMAND EQU X'00' COMMAND FIELD IN FIRST CCW 28600019 COMMAND2 EQU X'08' COMMAND FIELD IN SECOND CCW 28800019 * 29000019 ********************************************************************** 29200019 * 29400019 * IDS OF MODULES TO BE USED 29600019 * 29800019 *********************************************************************** 30000019 EOBID EQU 12 EOB ROUTINE 30200019 CNTRLID EQU 8 CNTRL ROUTINE 30400019 CHECKID EQU 7 CHECK ROUTINE 30600019 GERRID EQU 5 SYNCH AND ERROR PROC ROUTINE 30800019 READID EQU 6 READ ROUTINE 31000019 LOCFID EQU 1 GET ROUTINE---LOCATE MODE,RECFM=F 31200019 LOCVUID EQU 2 GET ROUTINE---LOCATE MODE,RECFM=V,U 31400019 MOVFID EQU 3 GET ROUTINE---MOVE MODE,RECFM=F 31600019 MOVVUID EQU 4 GET ROUTINE---MOVE MODE,RECFM=V,U 31800019 ********************************************************************** 32000019 * 32200019 * OFFSETS 32400019 * 32600019 ********************************************************************** 32800019 PLOFF EQU 4 OFFSET---DCB ENTRIES 33000019 WGOFF EQU 8 OFFSET---XCTL TABLE 33200019 WAOFF EQU 32 OFFSET---WTG ENTRIES 33400019 IDOFF EQU 0 ID OFFSET IN IEHIOSUP UPDATE TABLE 33600019 TTROFF EQU 2 TTR OFFSET IN IEHIOSUP UPDATE TABLE 33800019 WTGID EQU 6 OFFSET TO ID IN WTG TABLE 34000019 WTGTTR EQU 14 OFFSET TO TTR IN WTG TABLE 34200019 WKAOFF EQU 4 OFFSET IN WTG TABLE TO WORK AREA AR 34400019 ECBOFF EQU 4 ECB OFFSET IN IOB 34600019 IOBFLG1 EQU 8 OFFSET OF IOBFLG1 IN ACCESS METH IOB 34800019 ECBADDR EQU 12 OFFSET OF ECB ADDRESS IN IOB 35000019 CPSTART EQU 20 OFFSET OF CHAN PROG START IN IOB 35200019 DCBOFF EQU 4 DCB OFFSET FROM CPSTART OFFSET 35400019 FORTY EQU 40 SIZE OF AN IOB INCLUDING THE PREFIX 35600019 FORTY8 EQU 48 QSAM CHANNEL PROGRAM OFFSET 35800019 *********************************************************************** 36000019 * 36200019 * IOB FLAGS 36400019 * 36600019 *********************************************************************** 36800019 FIRSTIOB EQU X'01' INDICATES FIRST IOB IN CHAIN 37000019 NOERROR EQU X'7F' USED TO INITIALIZE THE ECB 37200019 *********************************************************************** 37400019 * 37600019 * SHIFTS 37800019 * 38000019 *********************************************************************** 38200019 DIV8 EQU 3 SHIFT TO MULTIPLY BY 8 38400019 MULT8 EQU 3 SHIFT TO MULTIPLY BY 8 38600019 BITS12 EQU 12 USED TO SHIFT LEFT 12 BITS 38800019 *********************************************************************** 39000019 * 39200019 * LENGTHS 39400019 * 39600019 *********************************************************************** 39800019 CCWL EQU 8 LENGTH OF 1 CCW 40000019 CCWL2 EQU 16 LENGTH OF 2 CCWS 40200019 CCWL3 EQU 24 LENGTH OF 3 CCWS 40400019 IDLNGH EQU 2 LENGTH OF OPEN EXECUTOR ID 40600019 TTRLNGH EQU 3 LENGTH OF OPEN EXECUTOR TTR 40800019 IDTTRL EQU 5 LENGTH OF OPEN EXECUTOR ID AND TTR 41000019 *********************************************************************** 41200019 * 41400019 * CONSTANTS 41600019 * 41800019 *********************************************************************** 42000019 C255 EQU 255 USED TO CLEAR 256 BYTES(EX INSTR) 42200019 C256 EQU 256 USED TO INCREMENT A POINTER BY 256 42400019 ZERO EQU 0 USED AS A CONSTANT OF 0 42600019 ONE EQU 1 CONSTANT OF ONE 42800019 TWO EQU 2 USED AS A CONSTANT OF TWO 43000019 BYT4 EQU 4 CONSTANT OF FOUR Y02967 43100002 ABENDCOD EQU X'13' OPEN ABEND SYSTEM CODE 43200019 *********************************************************************** 43400019 *********************************************************************** 43600019 EJECT 43800019 BALR RBASE,RE SET BASE 44000019 USING OCR010,RBASE BASE 44200019 USING IHADCB,RDCB DCB 44400019 USING FORCORE,RCORE WORK AREA 44600019 USING DEBBASIC,RDEB DEB BASE Y02967 44640002 USING TCB,RTCB TCB BASE Y02967 44680002 OCR010 EQU * @YM02503 44700002 TM 0(RPARC),INPUT OPEN FOR INPUT @YM02503 44720002 BNZ OCRABEND IF NOT, ABEND (013) 45000019 L RDCB,0(RPARC) INITIALIZE THE DCB REGISTER 45200019 LA RDCB,0(RDCB) CLEAR HIGH ORDER BYTE 45400019 L RCORE,WKAOFF(RWTGC) GET WORK AREA REGISTER 45600019 LA RCORE,0(RCORE) CLEAR HIGH ORDER BYTE 45800019 L RDEB,DCBDEBAD GET DEB ADDRESS @YM02503 45860002 L RTCB,DEBTCBAD GET TCB ADDR @YM02503 45920002 LA RF,FORTY LOAD SIZE OF BASIC IOB (40 BYTES) 46000019 * 46200019 TM DCBRECFM,UNDEFB TEST IF ANY RECFM SPECIFIED 46400019 BNZ OCR015 IF YES, BRANCH 46600019 OI DCBRECFM,UNDEFB IF NONE SPECIFIED,ASSUME UNDEFINED 46800019 * 47000019 * 47200019 *********************************************************************** 47400019 * 47600019 * CALCULATE AND GET CORE FOR IOBS 47800019 * 48000019 *********************************************************************** 48200019 OCR015 TM DCBCIND2,QSAMB TEST IF QSAM 48400019 BNO OCR020 BRANCH IF NOT QSAM 48600019 LA RF,CCWL(RF) INCREMENT BY 8 FOR CNTRL AND RDLNE 48800019 LH RC,DCBBUFL CCW--THEN LOAD BUFFER LENGTH 49000019 LTR RC,RC TEST BUFL FOR ZERO 49200019 BZ OCRABEND IF ZERO, ABEND(F13) 49400019 LH RE,DCBLRECL LOAD RECORD LENGTH FROM DCB 49600019 LTR RE,RE TEST LRECL FOR ZERO 49800019 BZ OCRABEND IF ZERO, ABEND (F13) 50000019 CR RC,RE COMPARE BUFFER LENGTH TO RECORD'LNGH 50200019 BL OCRABEND IF BUFL LESS THAN LRECL, ABEND (F13) 50400019 SR RB,RB CLEAR REGISTER FOR REGISTER DIVIDE 50600019 DR RB,RE DIVIDE BUFL BY LRECL 50800019 LH RE,DCBBUFL LOAD BUFFER LENGTH 51000019 SR RE,RB SUBTRACT REMAINDER TO MAKE IT A 51200019 * MULTIPLE OF THE RECORD LENGTH 51400019 STH RE,DCBBUFL STORE BUFFER LENGTH BACK TO DCB 51600019 LR RE,RC SAVE NUMBER OF LINES TO BE READ 51800019 * 52000019 * 52200019 MH RC,SIXTEEN MULTIPLY BY 16 52400019 AR RF,RC ADD SIZE FOR CCWS TO IOB SIZE 52600019 LR RC,RE RESTORE NUMBER OF LINES TO BE READ 52800019 B OCR030 BRANCH TO CONTINUE PROCESSING QSAM 53000019 * 53200019 OCR020 LA RF,CCWL3(RF) INCREMENT BSAM IOB BY 24 FOR CNTRL, 53400019 * RESCN,AND DSPLY CCWS. 53600019 OCR030 SRL RF,DIV8 DIVIDE IOB LENGTH BY 8 53800019 STC RF,DCBIOBL STORE DOUBLE WORK LENGTH TO DCB 54000019 SLL RF,MULT8 RESET LENGTH 54200019 * 54400019 * 54600019 TM DCBCIND2,QSAMB TEST IF QSAM 54800019 BO OCR040 YES, BRANCH 55000019 LA RE,ONE SUPPLY 1 DCB FOR BSAM 55200019 STC RE,DCBNCP STORE IN DCB 55400019 B OCR050 BRANCH TO PROCESS 55600019 * 55800019 OCR040 IC RE,DCBBUFNO GET NUMBER OF IOBS TO BUILD 56000019 * 56200019 OCR050 LR RUCB,RE SAVE NUMBER AS COUNTER 56400019 MR RE,RE COMPUTE SPACE REQUIRED 56600019 LR RB,RF SAVE FOR FUTURE USE 56800019 MODESET KEYADDR=DXUKEY,WORKREG=1 GET USER KEY @YM02503 56850002 * Y02967 56900002 LR RF,RB GET IOB SPACE Y02967 56950002 * 57000019 ********************************************************************** 57200019 * 57400019 GETMAIN R,LV=(RF),SP=250 GET CORE FOR IOBS 57600019 * 57800019 ********************************************************************** 58000019 MODESET EXTKEY=DATAMGT PUT SYSTEM IN OPEN KEY Y02967 58100002 * 58200019 LR RJ,RB RESOTRE LENGTH TO CLEAR AREA 58400019 MVI DCBCNTRL+3,EOBID SET END-OF-BLOCK ID 58600019 * 58800019 TM DCBMACRF,CNTRLB IS CNTRL SPECIFIED 59000019 BNO OCR060 IF NOT, BRANCH 59200019 MVI DCBCNTRL,CNTRLID SET THE CNTRL ID 59400019 * 59600019 OCR060 TM DCBCIND2,QSAMB IS QSAM USED 59800019 BO OCR070 YES, BRANCH 60000019 * 60200019 MVI DCBCNTRL+1,CHECKID SET THE CHECK ROUTINE ID 60400019 MVI DCBCNTRL+2,READID SET THE READ ROUTINE ID 60600019 B OCR100 BRANCH TO CLEAR THE IOBS 60800019 * 61000019 OCR070 MVI DCBCNTRL+1,GERRID SET THE GERR ID 61200019 TM DCBMACRF,LOCATEB IS LOCATE MODE SPECIFIED 61400019 BNO OCR090 IF NOT, BRANCH 61600019 TM DCBRECFM,VORUB TEST FOR VARIABLE OR UNDEFINED 61800019 BO OCR080 IF EITHER, BRANCH 62000019 MVI DCBCNTRL+2,LOCFID SET THE GET ROUTINE ID 62200019 B OCR100 BRANCH TO CLEAR THE IOBS 62400019 * 62600019 OCR080 MVI DCBCNTRL+2,LOCVUID STORE RESULTANT ID 62800019 B OCR100 BRANCH TO CLEAR IOBS 63000019 * 63200019 OCR090 TM DCBRECFM,VORUB TEST FOR VARIABLE OR UNDEFINED 63400019 BO OCR095 IF EITHER, BRANCH 63600019 MVI DCBCNTRL+2,MOVFID SET GET ROUTINE ID 63800019 B OCR100 BRANCH TO CLEAR IOBS 64000019 * 64200019 OCR095 MVI DCBCNTRL+2,MOVVUID RECORD FORMAT IS VARIABLE OR UNDEF 64400019 * 64600019 OCR100 TM DCBCIND2,QSAMB IS QSAM USED 64800019 BZ OCR103 NO, BRANCH 65000019 MVI DCBOFFSR,FORTY8 SET CHANNEL PROGRAM OFFSET 65200019 B OCR104 BRANCH TO CONTINUE PROCESSING 65400019 OCR103 MVI DCBOFFSR,FORTY SET CHANNEL PROGRAM OFFSET 65600019 * 65800019 OCR104 ST RF,DCBIOBA SAVE FIRST IOB ADDRESS 66000019 BCTR RJ,0 REDUCE AMOUNT BY ONE 66200019 MODESET KEYADDR=DXUKEY,WORKREG=11 GET USER KEY @YM02503 66300002 LA RB,C255 GET MAX AMOUNT OF ONE CLEAR (256) 66400019 * 66600019 OCR105 CR RJ,RB IS AMOUNT GREATER THAN 255 66800019 BNH OCR110 NO, BRANCH 67000019 * 67200019 EX RB,OCR107E CLEAR 256 BYTES 67400019 * 67600019 SR RJ,RB SUBTRACT 255 FROM AMT TO BE CLEARED 67800019 BCTR RJ,0 SUBTRACT ONE MORE BYTE 68000019 LA RF,C256(RF) UPDATE AREA ADDRESS 68200019 B OCR105 GO CLEAR SOME MORE 68400019 * 68600019 OCR107E XC 0(1,RF),0(RF) CLEAR INSTRUCTION--USED BY EX INSTR 68800019 * 69000019 OCR110 EX RJ,OCR107E CLEARS LESS THAN 256 BYTES 69200019 * 69400019 L RB,DCBIOBA GET IOB ADDRESS 69600019 LR RD,RB SET UP WORK REGISTER 69800019 * 70000019 *********************************************************************** 70200019 * 70400019 * INITIALIZE THE IOBS 70600019 * 70800019 *********************************************************************** 71000019 OCR120 LTR RUCB,RUCB HAVE ALL IOBS BEEN GENERATED 71200019 BZ OCR200 YES, BRANCH 71400019 * 71600019 MODESET KEYADDR=DXUKEY,WORKREG=11 GET USER KEY @YM02503 71700002 ST RB,0(RD) LINK THIS IOB TO THE LAST ONE 71800019 LR RD,RB UPDATE THE WORK REGISTER 72000019 LA RB,ECBOFF(RB) POINT TO THE ECB 72200019 OI 0(RB),NOERROR SET ECB COMPLETE WITHOUT ERROR 72400019 OI IOBFLG1(RD),CCHAIN SET COMMAND CHAINING BIT 72600019 ST RB,ECBADDR(RD) STORE ECB POINTER 72800019 LA RJ,CPSTART(RB) POINT TO CHANNEL PROGRAM START ADDRE 73000019 MVC DCBOFF(BYT4,RJ),DXUDCBAD MOVE DCB ADDRESS TO IOB Y02967 73200002 LA RB,CCWL2(RJ) POINT TO CCWS 73400019 TM DCBCIND2,QSAMB USING QSAM 73600019 BO OCR130 YES,BRANCH 73800019 LA RB,CCWL3(RB) POINT TO THE NEXT IOB 74000019 BCTR RUCB,0 DECREMENT IOB COUNTER 74200019 B OCR120 SEE IF ALL IOBS HAVE BEEN GENERATED 74400019 * 74600019 *********************************************************************** 74800019 * 75000019 * SET UP CHANNEL PROGRAM FOR QSAM (JOURNAL TAPES) 75200019 * 75400019 *********************************************************************** 75600019 OCR130 LA RB,CCWL(RB) POINT TO CHANNEL PROGRAM 75800019 ST RB,0(RJ) STORE CHANNEL PROGRAM ADDRESS IN IOB 76000019 * 76200019 LR RJ,RC LOAD NUMBER OF LINES TO BE READ 76400019 TM DCBOPTCD,RBOCB IS READ BACKWD WITT ON-LINE CORR SP 76600019 BZ OCR140 NO, BRANCH 76800019 MVI COMMAND(RB),RBOCOP MOVE RBOC TO COMMAND 77000019 B OCR150 BRANCH TO CONTINUE PROCESSING 77200019 * 77400019 OCR140 MVI COMMAND(RB),RBOP MOVE READ BACKWD 77600019 * 77800019 OCR150 TM DCBRECFM,UNDEFB TEST FOR UNDEFINED RECORDS 78000019 BO OCR155 YES,BRANCH 78200019 TM DCBRECFM,FIXEDB TEST FOR FIXED RECORDS 78400019 BO OCR160 YES,BRANCH 78600019 OCR155 OI FLAG1(RB),SLIB TURN SLI BIT ON IN READ CCW 78800019 TM DCBRECFM,UNDEFB IS FORMAT UNDEFINED 79000019 BNO OCR170 NO, BRANCH 79200019 * 79400019 OCR160 MVC COUNT(TWO,RB),DCBLRECL MOVE RECORD LENGTH TO COUNT 79600019 B OCR180 BRANCH TO CONTINUE PROCESSING 79800019 * 80000019 OCR170 LH RF,DCBLRECL LOAD RECORL LENGTH 80200019 SH RF,FOUR SUBTRACT 4 FOR VARIABLE COUNT 80400019 STH RF,COUNT(RB) STORE COUNT TO CCW 80600019 * 80800019 OCR180 OI FLAG1(RB),CCHAIN TURN COMMAND CHAINING BIT ON 81000019 MVI COMMAND2(RB),GNLOP SET GNL OP 81200019 MVI FLAG2(RB),CCHAIN TURN COMMAND CHAINING BIT ON 81400019 MVI COUNT2+1(RB),ONE SET CCW COUNT TO ONE 81600019 * 81800019 OCR190 BCT RJ,OCR195 BRANCH ON NUMBER OF LINES TO BE READ 82000019 NI FLAG2(RB),CCHAINOF TURN OFF COMMAND CHAIN IN LAST CCW 82200019 LA RB,CCWL2(RB) POINT TO NEXT IOB 82400019 BCTR RUCB,0 DECREMENT IOB COUNTER 82600019 B OCR120 BRANCH TO CHECK FOR MORE IOBS 82800019 * 83000019 OCR195 LR RF,RB COPY CCW POINTER 83200019 LA RB,CCWL2(RB) INCREMENT POINTER TO NEXT TWO CCWS 83400019 MVC 0(CCWL2,RB),0(RF) COPY 2 CCWS TO READ ANOTHER LINE 83600019 B OCR190 BRANCH TO CHECK FOR MORE LINES 83800019 * 84000019 OCR200 L RB,DCBIOBA GET FIRST IOB ADDRESS 84200019 ST RB,0(RD) LINK FIRST IOB TO LAST 84400019 OI 0(RB),FIRSTIOB SET FIRST IOB INDICATOR 84600019 MODESET EXTKEY=DATAMGT PUT SYSTEM IN OPEN KEY Y02967 84700002 * 84800019 MVC 0(IDTTRL,RWTGC),SOP7B SET ID FOR NEXT LOAD USED BY THIS 85000019 * DCB. ID GOES TO BYTES 0-5 OF AN 8 85200019 * BYTE ENTRY IN THE WTG TABLE. 85400019 *********************************************************************** 85600019 * 85800019 * GO TO NEXT EXECUTOR OR DO THIS ONE AGAIN 86000019 * 86200019 ********************************************************************** 86400019 RELOOP LA RWTGC,WGOFF(RWTGC) INCREMENT CURRENT WTG ENTRY 86600019 LA RPARC,PLOFF(RPARC) INCREMENT CURRENT DCB ENTRY 86800019 CLC 0(IDLNGH,RWTGC),AMIDCNST IS THIS ROUTINE NEEDED AGAIN 87000019 BCR 8,RBASE BRANCH TO BEGIN ROUTINE AGAIN 87200019 * 87400019 CLC 0(IDLNGH,RWTGC),OPIDCNST END OF TABLE 87600019 BC 7,RELOOP NO, CHECK NEXT ENTRY 87800019 * 88000019 LR RPARC,RPAR REINITIALIZE DCB LIST POINTER 88200019 LA RWTGC,WAOFF(RWTG) REINITIALIZE WTG LIST POINTER 88400019 * 88600019 RELOOP1 CLI 0(RWTGC),ZERO IS THIS ENTRY COMPLETE 88800019 BC 7,XCTLRTN IF NOT,BRANCH TO TRANSFER CONTROL 89000019 * TO NEXT EXECUTOR 89200019 LA RWTGC,WGOFF(RWTGC) GET NEXT WTG ENTRY 89400019 LA RPARC,PLOFF(RPARC) GET NEXT DCB ENTRY 89600019 B RELOOP1 BRANCH TO CHECK NEXT ENTRY COMPLETE 89800019 * 90000019 XCTLRTN MVC WTGID(IDLNGH,RWTG),IDOFF(RWTGC) STORE IF IN WTG TABLE 90200019 MVC WTGTTR(TTRLNGH,RWTG),TTROFF(RWTGC) STORE TTR IN WTG TAB 90400019 * 90600019 LA RJ,DXCCW12 SET UP FOR XCTL- LOAD ADDR OF PARMS 90800019 ********************************************************************** 91000019 * 91200019 XCTL DE=(RWTG),SF=(E,(RJ)) TRANSFER CONTROL TO NEXT EXECUTOR 91400019 * 91600019 ********************************************************************** 91800019 * 92000019 OCRABEND LA RF,ABENDCOD GET ABEND CODE 92200019 SLL RF,BITS12 SET UP REG 1 FOR ABEND 92400019 ABEND (RF),DUMP ISSUE ABEND TO TERMINATE 92600019 * 92800019 * 93000019 * 93200019 OPIDCNST DC C'0S' END OF TABLE ID 93400019 AMIDCNST DC C'7A' STAGE III OCR EXECUTOR ID 93600019 SIXTEEN DC H'16' CONSTANT (16) 93800019 FOUR DC H'4' CONSTANT (4) 94000019 * 94200019 * 94400019 ZAPSZAPS DC 8C'ZAPSZAPS' WORKAREA SPACE Y02967 94600002 * Y02967 94660002 * Y02967 94720002 SOP7B DC C'7B ' IDTTRL 94800019 DC H'0' END OF TABLE 95000019 DC 2H'0' TABLE FILLER---TO DOUBLE WORD 95200019 DC C'019' OPENSVC CODE 95400019 DC AL1(126) DBL WORDS FROM CSECT TO BEGIN OF 95600019 * XCTL TABLE 95800019 DCBD DSORG=PS,DEVD=OR DCB DSECT @YM00635 96000002 * 96200019 IECDSECS MAIN,EXPAND=YES Y02967 96400002 IKJTCB Y02967 96500002 IHARB Y02967 96600002 IEZDEB Y02967 96700002 END 96800019