* /* START OF SPECIFICATIONS **** 00050002 *01* PROCESSOR = ASSEMXF-370R 00100002 **** END OF SPECIFICATIONS ***/ 00150002 TITLE 'IGG019VF - READ ROUTINE-(OCR)' 00700019 IGG019VF CSECT 01400019 *********************************************************** @YM00638 01450002 *MODULE-NAME @YM00638 01500002 * IGG019VF @YM00638 01550002 * @YM00638 01600002 *DESCRIPTIVE-NAME @YM00638 01650002 * OCR READ ROUTINE @YM00638 01750002 * @YM00638 01800002 *COPYRIGHT @YM00638 01850002 * NONE @YM00638 01900002 * @YM00638 01950002 *CHANGE-ACTIVITY @YM00638 02000002 * 02100019 * RELEASE 20 ADDITIONS/CHANGES/DELETIONS 02800001 * RELEASE 21 ADDITIONS/CHANGES/DELETIONS 03500001 * RELEASE 22 ADDITIONS/CHANGES/DELETIONS 04200001 * RELEASE 23 ADDITIONS/CHANGES/DELETIONS 04900001 * RELEASE 24 ADDITIONS/CHANGES/DELETIONS 05600001 * RELEASE 25 ADDITIONS/CHANGES/DELETIONS 06300001 * RELEASE 26 ADDITIONS/CHANGES/DELETIONS 07000001 * RELEASE 27 ADDITIONS/CHANGES/DELETIONS 07700001 * 08400019 * 09100019 * STATUS - CHANGE LEVEL 00 RELEASE 20 09800001 * 10500019 * 11200019 *FUNCTION-READ ROUTINE 11900019 * 1) SET CORRECT CCW,IOB,ECB ADDRESSES 12600019 * 2) LINK TO EOB TO SCHEDULE INPUT EVENT 13300019 * 14000019 *ENTRY POINT 14700019 * LABEL OCR010 15400019 * 16100019 *ENTRY INSTRUCTION SEQUENCE 16800019 * LA 1,DECB 17500019 * LA 14,DCB 18200019 * L 15,48(14) 18900019 * BALR 14,15 19600019 * 20300019 * INPUT FROM CALLING ROUTINE 21000019 * REG 0 N/A 21700019 * REG 1 DECB ADDRESS 22400019 * REG 2-12 N/A 23100019 * REG 13 SAVE AREA 23800019 * REG 14 RETURN ADDRESS 24500019 * REG 15 BASE ADDRESS 25200019 * 25900019 *OUTPUT TO CALLING ROUTINE 26600019 * REG 0-1 N/A 27300019 * REG 2-12 SAME AS WHEN ENTERED 28000019 * REG 13 SAVE AREA 28700019 * REG 14 RETURN ADDRESS 29400019 * REG 15 ZERO 30100019 * 30800019 *EXTERNAL ROUTINES 31500019 * IGG019CC EXTERNAL ROUTINE WHICH SCHEDULES INPUT REQUESTS 32200019 * 32900019 *EXITS -NORMAL 33600019 * OCR020 BRANCH AND LINK TO END OF BLOCK ROUTINE 34300019 * OCR040 BRANCH TO CALLING ROUTINE FROM READ 35000019 * 35700019 *TABLES/WORKAREA 36400019 * 37100019 * USER SAVE/WORK AREA 37800019 * DCB 38500019 * IOB 39200019 * DECB 39900019 * +0 ECB ADDRESS 40600019 * +4 N/A 41300019 * +8 DCB ADDRESS 42000019 * +12 CCW ADDRESS 42700019 * +16 IOB ADDRESS 43400019 * 44100019 *ATTRIBUTES--REENTRANT,REUSABLE, PROBLEM PROGRAM MODE 44800019 * 45500019 * 46200019 * 46900019 *********************************************************************** 47600019 * 48300019 * ALL REGISTER EQUATES HAVE AN 'R' AT THE END OF THE SYMBOL 49000019 * 49700019 *********************************************************************** 50400019 PARA0R EQU 0 PARAMETER REGISTER 0 51100019 DECBR EQU 1 DECB ADDRESS 51800019 DCBR EQU 2 DCB ADDRESS 52500019 IOBADR EQU 3 IOB ADDRESS 53200019 WORK1R EQU 7 WORK REGISTER 53900019 BASER EQU 8 BASE REGISTER 54600019 WORK2R EQU 14 WORK REGISTER 55300019 SAVR EQU 13 USER SAVE AREA 56000019 RETR EQU 14 RETURN ADDRESS 56700019 ENTRYR EQU 15 ENTRY ADDRESS 57400019 *********************************************************************** 58100019 EOFBIT EQU X'40' EOF BIT SWITCH IN DCBORBYT 58800019 ERRFLGS EQU X'3F' ERROR FLAGS IN DCBIFLGS-X'C0' 59500019 START EQU 24 CCW ADDRESS IN IOB 60200019 CCWADR EQU 12 CCW ADDRESS IN DECB 60900019 RDCNT EQU 28 OFFSET TO READ COUNT IN USER AREA 61600019 ADDRESS EQU 4 LENGTH OF AN ADDRESS IN DECB 62300019 USERREG EQU 20 SAVE AREA OFFSET FOR USER REGS 63000019 DCBOFF EQU 8 DCB OFFSET IN DECB 63700019 IOSIOB EQU 8 OFFSET FROM ACCESS METHOD IOB 64400019 IOBOFF EQU 16 IOB OFFSET IN DECB 65100019 ECBOFF EQU 12 ECB ADDRESS OFFSET IN IOB 65800019 ONE EQU 1 USED AS A CONSTANT OF ONE 66500019 EJECT 67200019 USING IGG019VF,BASER USE REG 8 AS A BASE REGISTER 67900019 USING IHADCB,DCBR USE REG 2 AS A DCB BASE 68600019 OCR010 STM RETR,BASER,USERREG(SAVR) SAVE USER REGISTERS 69300019 LR BASER,ENTRYR ESTABLISH BASE REGISTER 70000019 * 70700019 L DCBR,DCBOFF(DECBR) GET DCB ADDRESS 71400019 * 72100019 TM DCBORBYT,EOFBIT TEST IF END OF FILE BIT IS ON 72800019 BO OCR034 IF ON, BRANCH TO RETURN TO USER 73500019 * 74200019 L IOBADR,DCBIOBA GET IOB ADDRESS 74900019 * 75600019 LA PARA0R,IOSIOB(IOBADR) GET IOS IOB POINTER 76300019 ST PARA0R,IOBOFF(DECBR) STORE IOB ADDRESS OF DECB 77000019 ST DECBR,ECBOFF(IOBADR) STORE ECB ADDRESS TO DECB 77700019 * 78400019 NI DCBIFLGS,ERRFLGS INSURE ERROR FLGS ARE OFF 79100019 MVC START(ADDRESS,IOBADR),CCWADR(DECBR) MOVE C P TO IOB 79800019 L ENTRYR,DCBEOBR LOAD ADDRESS OF EOB ROUTINE 80500019 * 81200019 OCR020 BALR RETR,ENTRYR BRANCH AND LINK TO EOB ROUTINE 81900019 * 82600019 L WORK1R,DCBERRCN LOAD ADDRESS OF ERROR COUNT AREA 83300019 LTR WORK1R,WORK1R ARE COUNTERS SPECIFIED 84000019 BZ OCR034 NO, BRANCH 84700019 * 85400019 L WORK2R,RDCNT(WORK1R) LOAD READ COUNT 86100019 LA WORK2R,ONE(WORK2R) INCREMENT BY 1 86800019 ST WORK2R,RDCNT(WORK1R) STORE READ COUNT 87500019 * 88200019 OCR034 LM RETR,BASER,USERREG(SAVR) RESTORE USER REGISTERS 88900019 SR ENTRYR,ENTRYR CLEAR RETURN CODE REGISTER 89600019 * 90300019 OCR040 BR RETR RETURN TO USER 91000019 * 91700019 CNOP 0,8 BAD TO DOUBLE WORD BOUNDARY 92400019 DCBD DSORG=PS,DEVD=OR @YM00635 93100002 END 93800019