* /* START OF SPECIFICATIONS **** 00050002 *01* PROCESSOR = ASSEMXF-370R 00060002 **** END OF SPECIFICATIONS ***/ 00070002 TITLE ' IGG019VE - SYNCH AND ERROR PROCESSING ROUTINE-(OCR)' 00100019 IGG019VE CSECT 00300019 *********************************************************** @YM00638 00350002 *MODULE-NAME @YM00638 00360002 * IGG019VE @YM00638 00370002 * @YM00638 00380002 *DESCRIPTIVE-NAME @YM00638 00390002 * OCR SYNCH AND ERROR PROCESSING MODULE @YM00638 00392002 * @YM00638 00394002 *COPYRIGHT @YM00638 00396002 * NONE @YM00638 00398002 * @YM00638 00398402 *CHANGE-ACTIVITY @YM00638 00398802 * 00400019 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 00500001 *A535500 A33940 00550001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 00600001 * RELEASE 22 ADDITIONS/CHANGES/DELETIONS 00700001 * RELEASE 23 ADDITIONS/CHANGES/DELETIONS 00800001 * RELEASE 24 ADDITIONS/CHANGES/DELETIONS 00900001 * RELEASE 25 ADDITIONS/CHANGES/DELETIONS 01000001 * RELEASE 26 ADDITIONS/CHANGES/DELETIONS 01100001 * RELEASE 27 ADDITIONS/CHANGES/DELETIONS 01200001 * 01300019 * 01400019 * STATUS - CHANGE LEVEL 01 RELEASE 20 01500001 * 01600019 * 01700019 *FUNCTION-SYNCH ROUTINE-TO ACQUIRE NEXT SEQUENTIAL IOB AND WAIT FOR 01800019 * COMPLETION(TEST PREVIOUS EXCP STATUS) 01900019 * 1) NORMAL COMPLETION RETURNS TO GET ROUTINE 02000019 * 2) INCOMPLETE ISSUES WAIT 02100019 * 3) ABNORMAL CONDITION GOES TO USERS SYNAD ROUTN 02200019 * 4) EOF CONDITION ISSUES EOV TO EXECUTOR 02300019 * -EIB ROUTINE- 02400019 * 1) SET ERROR INDICATOR BYTE 02500019 * -COMPLETION CODE ROUTINE- 02600019 * 1) SET COMPLETION CODE 02700019 * -COUNTER ROUTINE- 02800019 * 1) UPDATE TEMPORARY ERROR COUNTERS 02900019 *ENTRY POINTS 03000019 * LABEL OCR010 03100019 * LABEL OCR020 03200019 * LABEL OCR030 03300019 * LABEL OCR035 03400019 * 03500019 *ENTRY INSTRUCTION SEQUENCE 03600019 * /SYNCH/ /EIB/ /COMP CODE/ 03700019 * LA 1,DCB 03800019 * L 15,DCBGERR L 15,DCBGERR L 15,DCBGERR 03900019 * BALR 14,15 BAL 14,8(15) BAL 14,16(15) 04000019 * 04100019 * /COUNTER/ 04200019 * L 15,DCBGERR 04300019 * BAL 14,24(15) 04400019 * 04500019 *INPUT FROM CALLING ROUTINES -/SYNCH/EIB/COMP CODE/COUNTER/ ROUTINES 04600019 * REG 0-1 N/A 04700019 * REG 2 DCB ADDRESS 04800019 * REG 3 IOB ADDRESS 04900019 * REG 4-7 N/A 05000019 * REG 8 N/A FOR GERR , MUST BE AVAILABLE FOR BASE REG 05100019 * FOR EIB,COMP CODE, AND COUNTER ROUTINES 05200019 * REG 9-12 N/A 05300019 * REG 13 WORK-SAVE ADDRESS 05400019 * REG 14 CALLING ROUTINE IN-LINE RETURN ADDRESS 05500019 * REG 15 BASE ADDRESS 05600019 *OUTPUT TO CALLING ROUTINES -/SYNCH/EIB/COMP CODE/ ROUTINES 05700019 * REG 0-1 N/A 05800019 * REG 2-7 AS UPON ENTRY EXCEPT FOR GERR PARAMETER CHANGES 05900019 * REG 8 N/A EXCEPT GERR BASE 06000019 * REG 9-12 SAME AS ENTRY 06100019 * REG 13 WORK-SAVE ADDRESS 06200019 * REG 14 ADDRESS OF IN-LINE RETURN 06300019 * REG 15 N/A EXCEPT RETURN CODE FOR COMP CODE ROUTINE 06400019 * 06500019 *SYNAD REGISTERS - ENTRY FROM SYNCH TO SYNAD 06600019 * REG 0 IOB ADDRESS 06700019 * REG 1 DCB ADDRESS 06800019 * REG 2-12 USER SPECIFIED 06900019 * REG 13 WORK-SAVE ADDRESS 07000019 * REG 14 RETURN ADDRESS TO SYNCH ROUTINE 07100019 * REG 15 ENTRY ADDRESS TO SYNAD ROUTINE 07200019 * ----------EXIT FROM SYNAD TO SYNCH 07300019 * REG 0-1 N/A 07400019 * REG 2-12 USER SPECIFIED 07500019 * REG 13 WORK-SAVE AREA 07600019 * REG 14 RETURN ADDRESS TO SYNCH ROUTINE 07700019 * REG 15 ZERO OR ADDRESS OF USER SPECIFIED BRANCH ADDRESS 07800019 * 07900019 *EXTERNAL ROUTINES 08000019 * IGG019VA GET LOC,F 08100019 * IGG019VB GET LOC,V,U 08200019 * IGG019VC GET MOV,F 08300019 * IGG019VD GET MOV,V,U 08400019 * IGG019VH CNTRL 08500019 * IGG019VI RDLNE 08600019 * EOV END OF VOLUME ROUTINE 08700019 * 08800019 *EXITS-NORMAL 08900019 * OCR090 BRANCH TO CALLING ROUTINE FROM GERR 09000019 * OCR132 BRANCH AND LINK TO SYNAD 09100019 * OCR250 BRANCH TO CALLING ROUTINE FROM EIB ROUTINE 09200019 * OCR330 BRANCH TO CALLING ROUTINE FROM COMP CODE ROUTINE 09300019 * OCR410 BRANCH TO CALLING ROUTINE FROM COUNTER ROUTINE 09400019 * OCR133 EXIT TO USER SPECIFIED RETURN ADDRESS 09500019 * OCR147 EOV EXIT 09600019 * -ABNORMAL 09700019 * ABEND COMPLETION-CODE =001 - ABE SPECIFIED 09800019 *TABLES/WORKAREA 09900019 * 10000019 * USER SAVE/WORK AREA 10100019 * DCB 10200019 * IOB 10300019 * 10400019 *ATTRIBUTES--REENTRANT,REUSABLE,PROBLEM PROGRAM MODE 10500019 * 10600019 * 10700019 * 10800019 * 10900019 * 11000019 * 11100019 *********************************************************************** 11200019 * 11300019 * ALL REGISTER EQUATES HAVE AN 'R' AT THE END OF THE SYMBOL 11400019 * 11500019 *********************************************************************** 11600019 * 11700019 PARA0R EQU 0 PARAMETER REGISTER 0 11800019 PARA1R EQU 1 PARAMETER REGISTER 1 11900019 WORK4R EQU 1 WORK REGISTER 12000019 R1 EQU 1 USED IN DOM MACRO 12100019 DCBR EQU 2 DCB ADDRESS 12200019 IOBADR EQU 3 IOB ADDRESS 12300019 EOBADR EQU 4 EOB ADDRESS 12400019 RECADR EQU 5 RECORD ADDRESS 12500019 WORK1R EQU 7 WORK REGISTER 12600019 BASER EQU 8 BASE REGISTER FOR THIS ROUTINE 12700019 WORK8R EQU 8 REG 8 FOR RESTORE @ZA04457 12750003 SAVR EQU 13 USER SAVE AREA 12800019 RETR EQU 14 RETURN ADDRESS 12900019 WORK2R EQU 14 WORK REGISTER 13000019 ENTRYR EQU 15 ENTRY ADDRESS 13100019 WORK3R EQU 15 WORK REGISTER 13200019 * 13300019 * 13400019 *********************************************************************** 13500019 *********************************************************************** 13600019 * 13700019 * ERROR COUNTER EQUATES 13800019 * 13900019 *********************************************************************** 14000019 *********************************************************************** 14100019 ECCOUNT EQU 0 EQUIP CHECK RETRY COUNT IN USER AREA 14200019 PERMEC EQU 4 PERMANENT EQUIPMENT CHECK COUNTER 14300019 WLRCOUNT EQU 8 WRONG LNGTH CNT IN USER AREA 14400019 PERMWLR EQU 12 PERMANENT WRONG LENGTH REC COUNTER 14500019 KCCOUNT EQU 16 KEYBOARD CORRECTION COUNTER 14600019 DCCOUNT EQU 20 DATA CHECK RETRY COUNT IN USER AREA 14700019 DCRETRY EQU 36 DATA CHECK RETRY COUNT IN IOB 14800019 WLRETRY EQU 37 WRONG LNGTH CNT IN IOB 14900019 ECRETRY EQU 38 EQUIP CHECK RETRY COUNT IN IOB 15000019 *********************************************************************** 15100019 * 15200019 * STATUS OR SENSE 15300019 * 15400019 *********************************************************************** 15500019 NONREC EQU X'02' NON RECOVERY ERROR 15600019 EQUCHK EQU X'10' EQUIPMENT CHECK ERROR 15700019 DATACHK EQU X'08' DATA CHECK ERROR 15800019 KCORR EQU X'01' KEY-BOARD CORRECTION 15900019 WLR EQU X'40' WRONG LENGTH RECORD ERROR 16000019 UNEXCEP EQU X'01' UNIT EXCEPTION IN STATUS IN CSW(IOB) 16100019 COMREJ EQU X'80' COMMAND REJECT 16200019 INVCOM EQU X'08' INVALID COMMAND 16300019 SENS0ERR EQU X'24' BUS OUT , OVERRUN 16400019 STAT1ERR EQU X'3F' PG C,PT C,C C C,C I C,C D C 16500019 *********************************************************************** 16600019 * 16700019 * DCBEIB -ERROR INDICATOR BYTE 16800019 * 16900019 *********************************************************************** 17000019 NRBIT EQU X'10' NON RECOVERY 17100019 ECBIT EQU X'08' EQUIPMENT CHECK 17200019 DCBIT EQU X'01' DATA CHECK 17300019 KCHEBIT EQU X'02' KEYBOARD CORRECTION 17400019 WLRBIT EQU X'04' WRONG LENGTH RECORD 17500019 EIBERR EQU X'FF' ANY ERROR IN DCBEIB 17600019 *********************************************************************** 17700019 * 17800019 * DCB EQUATES 17900019 * 18000019 *********************************************************************** 18100019 ABEND2ND EQU X'10' 2ND TIME INDICATOR FOR EOV RTN, 18200019 * USED TO ABEND WITH A RET CODE OF 1 18300019 FORUB EQU X'80' TEST FOR FIXED OR UNDEFINED 18400019 EOFBIT EQU X'40' EOF BIT SWITCH IN DCBORBYT 18500019 ERRFLGS EQU X'3F' ERROR FLAGS IN DCBI FLGS-X'C0' 18600019 SYNADOFF EQU X'7F' TURN SYNAD IN PROGRESS BIT OFF 18700019 SYNADBIT EQU X'80' SYNAD-IN-PROCESS BIT IN DCBORBYT 18800019 ABE EQU X'20' ABEND OPTION IN DCBEROPT 18900019 SKP EQU X'40' SKIP OPTION IN DCBEROPT 19000019 *********************************************************************** 19100019 * 19200019 * IOB EQUATES 19300019 * 19400019 *********************************************************************** 19500019 ECB EQU 4 ECB OFFSET IN QSAM IOB 19600019 COMPLETE EQU X'40' TEST IF ECB POSTED COMPLETE 19700019 PERROR EQU X'41' TEST IF ECB POSTED WITH PERM ERROR 19800019 PERROR44 EQU X'44' TEST IF PERM ERROR @ZA00774 19850003 IOSIOB EQU 8 PLUS 8 FROM ACCESS METHOD IOB 19900019 SENSE0 EQU 10 SENSE BYTE 0 IN IOB 20000019 SENSE1 EQU 11 SENSE BYTE 1 IN IOB 20100019 INTCCW EQU 16 INTERRUPTED CCW IN CSW IN IOB 20200019 STATUS EQU 20 STATUS IN CSW IN IOB 20300019 RESIDUAL EQU 22 OFFSET TO THE RESIDUAL COUNT IN CSW 20400019 CPADR EQU 24 OFFSET OF CHANNEL PROGRAM ADR IN IOB 20500019 TEMCCW EQU 40 OFFSET TO TEMPORARY CCW IN THE IOB 20600019 FLAG EQU 44 CCW FLAG BYTE AT IOB + 40 20700019 CCWSTART EQU 48 START OF THE CHANNEL PROGRAM 20800019 RBCOM EQU X'0C' READ BACKWARD COMMAND 20900019 BUF EQU 0 ADDR OF BUFFER OFFSET IN CCW 21000019 DATADR EQU 0 DATA ADDRESS OFFSET IN CCW 21100019 CNT EQU 6 COUNT FIELD OFFSET IN CCW 21200019 GNLCCW EQU 8 OFFSET TO GNL CCW IN RB AND GNL PAIR 21300019 CHAINOFF EQU X'BF' MASK TO TURN OFF COMMAND CHAINING 21400019 *********************************************************************** 21500019 FOURRC EQU 4 RETURN CODE OF FOUR 21600019 EIGHTRC EQU 8 RETURN CODE OF EIGHT 21700019 TWELVERC EQU 12 RETURN CODE OF TWELVE 21800019 ZERO EQU 0 USED AS A CONSTANT OF ZERO 21900019 ONE EQU X'01' CONSTANT 1 22000019 CCWL EQU 8 LENGTH OF ONE CCW 22100019 SYSCC EQU 12 USED AS A SHIFT TO SET A SYSTEM C C 22200019 HIBYTE EQU 24 USED TO SHIFT TO HI ORDER BYTE 22300019 TWO EQU 2 USED AS A CONSTANT OF 2 22400019 ADDRESS EQU 3 LENGTH OF AN ADDRESS 22500019 INPREAD EQU X'90' HI ORDER BYTE OF REG 1 FOR SYNAD ENT 22600019 RDNDATA EQU X'80' INDICATES READ DATA 22700019 USERREG EQU 36 OFFSET IN SAVE AREA TO USER REGS 22800019 TEMPSAV EQU 32 OFFSET TO SAVE AREA FOR DCB 22900019 GETREG EQU 24 SAVE AREA FOR ADDRESS OF GET ROUTINE 23000019 RETREG EQU 64 SAVE AREA FOR RETURN ADDRESS 23100019 SAVREG EQU 64 OFFSET IN SAVE AREA FOR USER REGS 23200019 BASEREG EQU 68 OFFSET IN SAVE AREA FOR SYNCH ADDR 23300019 *********************************************************************** 23400019 *********************************************************************** 23500019 EJECT 23600019 USING IGG019VE,ENTRYR USE REGISTER 15 AS A TEMP BASE 23700019 USING IHADCB,DCBR USE REGISTER 2 AS DCB BASE 23800019 *********************************************************************** 23900019 * 24000019 * ENTRYS INTO THE SYNCH ROUTINE 24100019 * 24200019 *********************************************************************** 24300019 * 24400019 OCR010 LR BASER,ENTRYR ENTRY +0 - LOAD NEW BASE REGISTER 24500019 B OCR040 BRANCH TO GERR ROUTINE 24600019 FOUR DC H'4' FILLER - USED AS CONSTANT OF 4 24700019 OCR020 LR BASER,ENTRYR ENTRY +8 - LOAD NEW BASE REGISTER 24800019 B OCR200 BRANCH TO EIB ROUTINE 24900019 EIGHT DC H'8' FILLER - USED AS CONSTANT OF 8 25000019 OCR030 LR BASER,ENTRYR ENTRY +16- LOAD NEW BASE REGISTER 25100019 B OCR300 BRANCH TO COMPLETION CODE ROUTINE 25200019 SIXTEEN DC H'16' FILLER - USED AS CONSTANT OF 16 25300019 OCR035 LR BASER,ENTRYR ENTRY +24- LOAD NEW BASE REGISTER 25400019 B OCR400 BRANCH TO ERROR COUNTER ROUTINE 25500019 * 25600019 *********************************************************************** 25700019 OCR040 STM RETR,ENTRYR,SAVREG(SAVR) SAVE RETURN AND ENTRY REGISTERS 25800019 DROP ENTRYR DROP TEMPORARY BASE REG 25900019 USING IGG019VE,BASER USE NEW BASE REGISTER 26000019 * 26100019 OCR045 L IOBADR,0(IOBADR) GET THE ADDRESS OF THE NEXT IOB 26200019 LA IOBADR,0(IOBADR) CLEAR HI ORDER BYTE 26300019 * 26400019 LA WORK1R,CCWSTART(IOBADR) GET ADDRESS OF CHANNEL PROGRAM 26500019 L WORK2R,BUF(WORK1R) GET BUFFER ADDRESS 26600019 LA WORK2R,ONE(WORK2R) CLEAR HI ORDER BYTE AND INCREMENT 1 26700019 SH WORK2R,CNT(WORK1R) SUBTRACT CCW COUNT TO GET BUF STRT 26800019 TM DCBRECFM,FORUB TEST FOR FIXED OR UNDEFINED FORMAT 26900019 BO OCR050 BRANCH IF FIXED OR UNDEFINED 27000019 * 27100019 SH WORK2R,FOUR IF VAR RECORDS, SUB 4 MORE TO GET 27200019 * START OF BUFFER 27300019 OCR050 ST WORK2R,DCBRECAD STORE ADDRESS OF FIRST RECORD 27400019 * 27500019 OCR060 TM ECB(IOBADR),COMPLETE IS EVENT NOT COMPLETE YET (X'80') 27600019 BO OCR065 IF COMPLETE BRANCH 27700019 * 27800019 WAIT ECB=ECB(IOBADR) WAIT FOR EVENT TO COMPLETE 27900019 * 28000019 OCR065 L PARA1R,DCBWTOID LOAD POSSIBL WTO ID 28100019 LTR PARA1R,PARA1R HAS WTO MESSAGE BEEN DELETED 28200019 BZ OCR070 IF ZEROS -YES, BRANCH 28300019 * 28400019 DOM MSG=(R1) DELETE OPERATOR MESSAGE 28500019 * 28600019 XC DCBWTOID+1(ADDRESS),DCBWTOID+1 CLEAR MESSAGE ID 28700019 * 28800019 * 28900019 OCR070 BAL RETR,OCR400 BRANCH AND LINK TO COUNTER ROUTINE 29000019 * 29100019 OCR080 L RECADR,DCBRECAD LOAD RECORD ADDRESS FOR RETURN 29200019 LR EOBADR,RECADR COPY RECORD ADDRESS 29300019 AH EOBADR,DCBBUFL ESTABLISH EOB ADDRESS FOR RETURN 29400019 STM IOBADR,RECADR,DCBIOBA REINITIALIZE DCB FIELDS 29500019 TM DCBORBYT,EOFBIT TEST FOR END OF FILE CONDITION 29600019 BO OCR100 IF EOF ON, BRANCH TO EOV RTN 29700019 CLI ECB(IOBADR),PERROR DID A PERMANENT ERROR OCCUR 29800019 BE OCR120 YES, BRANCH TO HANDLE PERM ERROR 29900019 CLI ECB(IOBADR),PERROR44 DID PERM ERROR OCCUR @ZA00774 29950003 BE OCR120 YES,BRANCH @ZA00774 29960003 * 30000019 OCR085 L RECADR,DCBRECAD LOAD ADDRESS OF START OF REC 30100019 L RETR,RETREG(SAVR) LOAD RETURN ADDRESS 30200019 L BASER,GETREG(SAVR) LOAD ADDRESS OF GET ROUTINE 30300019 OCR090 BR RETR RETURN TO GET ROUTINE 30400019 EJECT 30500019 *********************************************************************** 30600019 * 30700019 * THIS CODE EXECUTED IF THERE ARE ANY ERRORS 30800019 * 30900019 *********************************************************************** 31000019 * 31100019 OCR100 XC STATUS(TWO,IOBADR),STATUS(IOBADR) CLEAR STATUS 31200019 OI STATUS(IOBADR),UNEXCEP SET UNIT EXCEPTION BIT ON 31300019 * 31400019 OCR110 MVI DCBORBYT,ZERO TURN OFF DCBORBYT SWITCHES 31500019 MVC DCBEOBAD+1(ADDRESS),DCBRECAD+1 SET EOB CONDITION 31600019 B OCR145 BRANCH TO GO TO EOV ROUTINE 31700019 * 31800019 OCR120 L WORK1R,INTCCW(IOBADR) GET CCW ADDRESS 31900019 LA WORK1R,0(WORK1R) CLEAR HI ORDER BYTE 32000019 * 32100019 OCR125 SR EOBADR,EOBADR CLEAR REGISTER 32200019 LA WORK2R,CCWSTART+8(IOBADR) LOAD ADDRESS OF CHANNEL PROGR 32300019 CR WORK1R,WORK2R IS INTERRUPTED CCW VALID 32400019 BL OCR126 NO,BRANCH TO SET NEW EOB ADDRESS 32500019 SH WORK1R,EIGHT BACK UP TO INTERRUPTED CCW 32600019 L EOBADR,DATADR(WORK1R) LOAD DATA ADDRESS FROM CCW 32700019 LA EOBADR,ONE(EOBADR) CLEAR HI ORDER BYTE AND INC BY 1 32800019 * 32900019 OCR126 ST EOBADR,DCBEOBAD STORE NEW END OF BLOCK ADDRESS 33000019 * 33100019 OCR1261 BAL RETR,OCR200 BRANCH AND LINK TO EIB ROUTINE 33200019 * 33300019 BAL RETR,OCR300 BRANCH AND LINK TO SET COMPLETION 33400019 * CODE 33500019 STC ENTRYR,DCBEIB+1 STORE RETURN CODE 33600019 * 33700019 TM STATUS(IOBADR),UNEXCEP TEST FOR UNIT EXCEPTION CONDITION 33800019 BZ OCR130 BRANCH IF NOT UNIT EXCEPTION CONDITN 33900019 LA WORK2R,CCWSTART+8(IOBADR) LOAD ADDR OF CHANNEL PROGRAM 34000019 CR WORK1R,WORK2R COMPARE INT CCW WITH BEGIN OF CHAIN 34100019 BNH OCR110 BRANCH TO GO TO EOV ROUTINE 34200019 * 34300019 OCR127 OI DCBORBYT,EOFBIT SET EOF FOR NEXT GET 34400019 SH WORK1R,SIXTEEN BACK UP 16 MORE TO LAST READ CCW 34500019 L EOBADR,DATADR(WORK1R) LOAD THE DATA ADDRESS 34600019 LA EOBADR,ONE(EOBADR) CLEAR HI ORDER BYTE AND INC BY 1 34700019 ST EOBADR,DCBEOBAD STORE NEW END OF BLOCK ADDRESS 34800019 B OCR085 RETURN TO LOAD GET REGISTERS 34900019 * 35000019 * 35100019 OCR130 CLI DCBSYNAD+3,ONE IS SYNAD ROUTINE SPECIFIED 35200019 BE OCR135 NO, SYNAD ROUTINE NOT SPEC -BRANCH 35300019 EJECT 35400019 *********************************************************************** 35500019 * 35600019 * GO TO THE USER'S SYNAD ROUTINE 35700019 * 35800019 *********************************************************************** 35900019 ST DCBR,TEMPSAV(SAVR) STORE DCB ADDRESS 36000019 * 36100019 LA PARA1R,INPREAD LOAD INPUT AND DATA BITS 36200019 TM 0(WORK1R),RBCOM TEST FOR READ BACKWARD COMMAND 36300019 BNO OCR131 BRANCH IF NOT READ BACKWARD 36400019 CLC RESIDUAL(TWO,IOBADR),CNT(WORK1R) COMP RESIDUAL TO ORGINL 36500019 BL OCR1311 BRANCH IF DATA READ 36600019 OCR131 LA PARA1R,RDNDATA SET TO NO DATA READ 36700019 OCR1311 SLL PARA1R,HIBYTE SHIFT TO HIGH ORDER BYTE 36800019 OR PARA1R,DCBR DCB ADDRESS TO LOW ORDER 24 BITS 36900019 * 37000019 LA PARA0R,TEMCCW LOAD OFFSET TO CHAN PROG 37100019 SLL PARA0R,HIBYTE SHIFT TO HIGH ORDER BYTE 37200019 LA IOBADR,IOSIOB(IOBADR) POINT TO IOS IOB 37300019 OR PARA0R,IOBADR IOB ADDRESS TO LOW ORDER BYTES 37400019 * 37500019 NI DCBIFLGS,ERRFLGS TURN ERROR FLAGS OFF 37600019 OI DCBORBYT,SYNADBIT SET SYNAD IN PROGRESS BIT ON 37700019 L ENTRYR,DCBSYNAD LOAD SYNAD ROUTINE ADDRESS 37800019 LM DCBR,BASER,USERREG(SAVR) LOAD USER REGISTERS 37900019 OCR132 BALR RETR,ENTRYR BRANCH AND LINK TO USERS SYNAD ROUTN 38000019 * 38100019 STM DCBR,BASER,USERREG(SAVR) STORE USER REGISTERS 38200019 L DCBR,TEMPSAV(SAVR) LOAD DCB ADDRESS 38300019 L IOBADR,DCBIOBA LOAD IOB ADDRESS 38400019 L BASER,BASEREG(SAVR) RESTORE BASE REGISTER 38500019 NI DCBORBYT,SYNADOFF TURN SYNAD IN PROCESS BIT OFF 38600019 NI DCBIFLGS,ERRFLGS TURN DCB ERROR FLAGS OFF 38700019 * 38800019 * 38900019 LTR ENTRYR,ENTRYR TEST REGISTER 15 FOR ZEROS 39000019 * 39100019 BZ OCR140 IF ZERO,BRANCH 39200019 * 39300019 NI DCBORBYT,ZERO RESET DCBORBYT SWITCHES 39400019 MVC DCBEOBAD+1(ADDRESS),DCBRECAD+1 SET EOB CONDITION 39500019 LM DCBR,WORK8R,USERREG(SAVR) RESTORE USER REG'S @ZA04457 39600003 OCR133 BR ENTRYR BRANCH TO USER SPECIFIED ADDRESS 39700019 * 39800019 OCR135 NI DCBIFLGS,ERRFLGS RESET ERRFLGS IN DCBIFLGS 39900019 OCR140 TM DCBEROPT,ABE IS ABEND OPTION SPECIFIED 40000019 BZ OCR150 NO, BRANCH TO TEST FOR SKP 40100019 * 40200019 OI DCBCIND2,ABEND2ND SET 2ND TIME SWITCH FOR ABEND 40300019 LA PARA0R,ONE LOAD 1 TO REG 0 40400019 SLL PARA0R,SYSCC SHIFT LEFT 12 TO SET COMP CODE 40500019 B OCR147 BRANCH TO GO TO THE EOV ROUTINE 40600019 * 40700019 OCR145 LR PARA0R,IOBADR SET REGISTER 0 FOR EOV 40800019 *********************************************************************** 40900019 * 41000019 * EXIT TO EOV 41100019 * 41200019 *********************************************************************** 41300019 OCR147 EOV (DCBR) GO TO END OF VOLUME ROUTINE 41400019 * NO RETURN 41500019 *********************************************************************** 41600019 * 41700019 OCR150 TM DCBEROPT,SKP IS SKIP OPTION SPECIFIED 41800019 BZ OCR170 NO, BRANCH AND ASSUME ACC OPTION 41900019 MVI DCBEIB+1,ZERO CLEAR RETURN CODE IF RECORD IS SKIPD 42000019 L EOBADR,DCBEOBAD LOAD END OF BLOCK ADDRESS 42100019 LA WORK2R,CCWSTART(IOBADR) LOAD ADDRESS OF THE C P 42200019 SH EOBADR,CNT(WORK2R) SUBTRACT RECORD SIZE IE BUFFER SIZE 42300019 * 42400019 TM DCBRECFM,FORUB TEST FOR FIXED OR UNDEFINED FORMAT 42500019 BO OCR160 BRANCH IF FIXED OR UNDEFINED 42600019 SH EOBADR,FOUR IF VARIABLE,SUBTRACT FOUR MORE BECS 42700019 * CCW COUNT DOES NOT INCLUDE PREFIX 42800019 OCR160 ST EOBADR,DCBEOBAD STORE NEW END OF BLOCK ADDRESS 42900019 * 43000019 EJECT 43100019 *********************************************************************** 43200019 * 43300019 * RESTART PROCEDURE 43400019 * 43500019 *********************************************************************** 43600019 OCR170 L WORK1R,CPADR(IOBADR) LOAD CHANNEL PROGRAM ADDRESS 43700019 MVC TEMCCW(CCWL,IOBADR),GNLCCW(WORK1R) MOVE GNL CCW TO TEMP 43800019 NI FLAG(IOBADR),CHAINOFF TURN CHAINING BIT OFF 43900019 LA WORK2R,TEMCCW(IOBADR) LOAD ADDRESS OF TEMP GNL CCW 44000019 ST WORK2R,CPADR(IOBADR) STORE CHANNEL PROGRAM ADDR TO IOB 44100019 EXCP IOSIOB(IOBADR) EXECUTE CHANNEL PROGRAM 44200019 WAIT ECB=ECB(IOBADR) WAIT FOR COMPLETION OF EVENT 44300019 ST WORK1R,CPADR(IOBADR) STORE ADDR OF ORIGINAL CHANNEL PRG 44400019 CLI ECB(IOBADR),PERROR CHECK FOR A PERMANENT ERROR 44500019 BE OCR1261 IF AN ERROR, BRANCH TO PROCESS 44600019 CLI ECB(IOBADR),PERROR44 DID PERM ERROR OCCUR @ZA00774 44650003 BE OCR1261 YES,BRANCH @ZA00774 44660003 LR WORK1R,IOBADR COPY IOB ADDRESS 44700019 OCR180 L WORK1R,0(WORK1R) GET NEXT IOB ADDRESS IN CHAIN 44800019 LA WORK1R,0(WORK1R) CLEAR HI ORDER BYTE 44900019 CR IOBADR,WORK1R HAS IOB BEEN SCHEDULED 45000019 BE OCR190 BRANCH TO SEE IF ANY RECS IN BUFFER 45100019 * 45200019 * RESCHEDULE THE BUFFER 45300019 EXCP IOSIOB(WORK1R) EXECUTE CHANNEL PROGRAM 45400019 B OCR180 BRANCH TO CHECK NEXT IOB 45500019 * 45600019 OCR190 CLC DCBRECAD+1(ADDRESS),DCBEOBAD+1 ARE THERE ANY RECORDS IN 45700019 * BUFFER-MIGHT HAVE BEEN SKIPPED 45800019 BL OCR085 IF RECORDS IN BUFFER,RETURN 45900019 * RESCHEDULE THE BUFFER 46000019 EXCP IOSIOB(IOBADR) EXECUTE CHANNEL PROGRAM 46100019 B OCR045 IF NONE IN THIS BUFFER, GO GET NEXT 46200019 EJECT 46300019 *********************************************************************** 46400019 * 46500019 * ERROR INDICATOR BYTE (EIB) ROUTINE 46600019 * 46700019 *********************************************************************** 46800019 OCR200 MVI DCBEIB,ZERO CLEAR EIB 46900019 L WORK3R,DCBERRCN LOAD FROM DCBERRCN POSSIBLE AREA ADR 47000019 * 47100019 TM SENSE0(IOBADR),NONREC DID NON-RECOVERY ERROR OCCUR 47200019 BZ OCR210 NO, BRANCH 47300019 OI DCBEIB,NRBIT SET NON-RECOVERY BIT 47400019 * 47500019 OCR210 TM SENSE0(IOBADR),EQUCHK DID AN EQ CHK ERROR OCCUR 47600019 BZ OCR220 NO, BRANCH 47700019 LTR WORK3R,WORK3R IS AN ERROR COUNT ADDRESS SPECIFIED 47800019 BZ OCR215 NO, BRANCH 47900019 L WORK4R,PERMEC(WORK3R) LOAD PERMANENT EQUIP CHK COUNT 48000019 LA WORK4R,ONE(WORK4R) INCREMENT COUNT BY 1 48100019 ST WORK4R,PERMEC(WORK3R) STORE COUNT 48200019 * 48300019 OCR215 OI DCBEIB,ECBIT SET EQUIPMENT CHECK BIT IN DCBEIB 48400019 * 48500019 OCR220 TM SENSE0(IOBADR),DATACHK DID A DATA CHECK ERROR OCCUR 48600019 BZ OCR230 NO,BRANCH 48700019 OI DCBEIB,DCBIT SET DATA CHECK BIT IN DCBEIB 48800019 * 48900019 OCR230 TM SENSE0(IOBADR),KCORR DID KEYBOARD CORRECTION OCCUR 49000019 BZ OCR240 NO,BRANCH 49100019 OI DCBEIB,KCHEBIT SET KEYBOARD CORRECTION BIT DCBEIB 49200019 * 49300019 OCR240 TM STATUS+1(IOBADR),WLR DID WRONG LNGTH RECORD OCCUR 49400019 BCR 8,RETR NO,BRANCH 49500019 OI DCBEIB,WLRBIT SET WRONG LNGTH REC BIT IN DCBEIB 49600019 LTR WORK3R,WORK3R IS AN ERRCNT ADDRESS SPECIFIED 49700019 BCR 8,RETR NO,BRANCH 49800019 L WORK4R,PERMWLR(WORK3R) LOAD PERMANENT WLR COUNT 49900019 LA WORK4R,ONE(WORK4R) INCREMENT COUNT BY 1 50000019 ST WORK4R,PERMWLR(WORK3R) STORE COUNT 50100019 * 50200019 OCR250 BR RETR RETURN TO CALLING ROUTINE 50300019 EJECT 50400019 *********************************************************************** 50500019 * 50600019 * COMPLETION CODE ROUTINE 50700019 * 50800019 *********************************************************************** 50900019 OCR300 SR ENTRYR,ENTRYR CLEAR RETURN CODE REGISTER 51000019 TM DCBEIB,EIBERR TEST FOR ERROR INDICATED IN THE EIB 51100019 BZ OCR310 IF NONE,BRANCH 51200019 LA ENTRYR,FOURRC SET A RETURN CODE OF FOUR 51300019 * 51400019 OCR310 TM SENSE0(IOBADR),COMREJ TEST FOR COMMAND REJECT 51500019 BNZ OCR315 IF YES, BRANCH TO SET RETURN CODE 51600019 TM SENSE1(IOBADR),INVCOM TEST FOR INVALID COMMAND 51700019 BZ OCR320 IF NOT, BRANCH 51800019 OCR315 LA ENTRYR,EIGHTRC SET RETURN CODE OF EIGHT 51900019 * 52000019 OCR320 TM SENSE0(IOBADR),SENS0ERR TEST FOR ERRORS IN SENSE 52100019 BNZ OCR325 BRANCH IF ERRORS ARE FOUND 52200019 TM STATUS+1(IOBADR),STAT1ERR TEST FOR ERRORS IN STATUS 52300019 BCR 8,RETR NO,BRANCH 52400019 OCR325 LA ENTRYR,TWELVERC SET RETURN CODE OF TWELVE 52500019 * 52600019 OCR330 BR RETR RETURN TO CALLING ROUTINE 52700019 EJECT 52800019 *********************************************************************** 52900019 * 53000019 * ERROR COUNTER ROUTINE 53100019 * 53200019 *********************************************************************** 53300019 * 53400019 OCR400 L WORK4R,DCBERRCN LOAD ADDRESS OF COUNTERS 53500019 MVI DCBEIB,ZERO RESET EIB BYTE TO ZERO A33940 53550001 LTR WORK4R,WORK4R ARE COUNTERS SPECIFIED 53600019 BCR 8,RETR NO,BRANCH 53700019 * 53800019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 53900019 IC WORK3R,DCRETRY(IOBADR) LOAD DATA CHECK RETRY COUNT 54000019 A WORK3R,DCCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 54100019 ST WORK3R,DCCOUNT(WORK4R) STORE DATA CHECK RETRY COUNT 54200019 * 54300019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 54400019 IC WORK3R,ECRETRY(IOBADR) LOAD EQUIP CHECK RETRY COUNT 54500019 A WORK3R,ECCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 54600019 ST WORK3R,ECCOUNT(WORK4R) STORE EQUIP CHECK RETRY COUNT 54700019 * 54800019 SR WORK3R,WORK3R CLEAR COUNT REGISTER 54900019 IC WORK3R,WLRETRY(IOBADR) LOAD WLR RETRY COUNT 55000019 A WORK3R,WLRCOUNT(WORK4R) INCREMENT BY NUMBER OF RETRYS 55100019 ST WORK3R,WLRCOUNT(WORK4R) STORE WLR RETRY COUNT 55200019 XC DCRETRY(3,IOBADR),DCRETRY(IOBADR) CLEAR IOB COUNTERS 55250019 * 55300019 TM SENSE0(IOBADR),KCORR DID KEYBOARD CORRECTION OCCUR 55400019 BCR 8,RETR NO,BRANCH 55500019 L WORK3R,KCCOUNT(WORK4R) LOAD KC COUNT 55600019 LA WORK3R,ONE(WORK3R) INCREMENT BY ONE 55700019 ST WORK3R,KCCOUNT(WORK4R) STORE UPDATED KC COUNT 55800019 * 55900019 OCR410 BR RETR RETURN TO CALLING ROUTINE 56000019 EJECT 56100019 *********************************************************************** 56200019 * 56300019 * 56400019 CNOP 0,8 PAD TO DOUBLE WORD 56500019 DCBD DSORG=PS,DEVD=OR @YM00635 56600002 END 56700019