* /* START OF SPECIFICATIONS **** 00010000 *02* PROCESSOR = ASSEMBLER 00020000 **** END OF SPECIFICATIONS ***/ 00030000 GBLC &COMPNM,&ASMID 00050000 JHEAD 'INPUT I/O MODULE - PROLOG', X00300000 PHASEID=X0F, X00600000 LEVEL=10 00900000 * * 01200000 *FUNCTION/OPERATION- * 01500000 * THIS MODULE IS THE INPUT I/O MODULE FOR THE ASSEMBLER. IT IS * 01800000 * USED BY THE MACRO EDITOR TO READ SOURCE INPUT, COPY CODE AND * 02100000 * MACROS. * 02400000 * * 02700000 *ENTRY POINT- * 03000000 * START+0 - GET INPUT STATEMENT. DISPLACEMENT-JINPUT. * 03300000 * START+4 - FIND MACRO IN LIBRARY. DISPLACEMENT-JFIND. * 03600000 * START+8 - NOTE POSITION OF LIBRARY. DISPLACEMENT-JNOTELB. * 03900000 * START+12 - POINT TO NOTED POSITION. DISPLACEMENT-JPOINTLB. * 04200000 * START+16 - INITIALIZE INPUT I/O MODULE, OPEN INPUT FILES ON * 04500000 * FIRST ENTRY, CLOSE INPUT FILES ON SECOND ENTRY. DISP.-JININIT. * 04800000 * * 05100000 *INPUT- * 05400000 * SYSIN, SYSLIB. * 05700000 * * 06000000 *OUTPUT- * 06300000 * N/A * 06600000 * * 06900000 *EXTERNAL ROUTINES- * 07200000 * N/A * 07500000 * * 07800000 *EXITS, NORMAL- * 08100000 * RETURN TO CALLER VIA REGISTER R9. * 08400000 * FOR JINPUT, CC=2 MEANS RECORD READ CORRECTLY. CC=0 MEANS EOF READ.* 08700000 * FOR JFIND, CC=2 MEANS MACRO OR COPY CODE FOUND. CC=0 MEANS MACRO * 09000000 * OR COPY CODE NOT FOUND * 09300000 * * 09600000 *EXITS, ERROR- * 09900000 * BRANCH TO JABORT IN COMMON. * 10200000 * * 10500000 *TABLE/WORK AREAS- * 10800000 * REGISTER R13 POINTS TO COMMON. JADINCM, WHICH IS LOADED INTO * 11100000 * REGISTER R7, POINTS TO THE INPUT COMMON AREA. * 11400000 * * 11700000 *ATTRIBUTES- * 12000000 * REFRESHABLE. * 12300000 * * 12600000 *NOTES- * 12900000 SPACE 3 13200000 PRINT OFF DON'T PRINT JCOMMON COPY CODE 13250000 COPY JCOMMON JCOMMON COPY CODE 13500000 PRINT ON THAT'S ALL WE WON'T PRINT 13550000 SPACE 13600000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - JINCOM COPY CODE' 13800000 COPY JINCOM 14100000 SPACE 3 14400000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - DCBD MACRO' 14450000 DCBD DSORG=(PS,PO),DEVD=(DA) 14700000 SPACE 3 15000000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - MAPPING DSECT (MAPDSECT)' 15050000 IEZIOB 15300000 SPACE 3 15900000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - DDNAME OVERRIDE LIST' 15950000 P DSECT DDNAME OVERRIDE LIST 16200000 PLEN DS H LENGTH OF LIST 16500000 DS 3CL8 (NOT APPLICABLE) 17100000 PSYSLIB DS CL8 SYSLIB DDNAME 17400000 PSYSIN DS CL8 SYSIN DDNAME 17700000 PSYSPRIN DS CL8 SYSPRINT DDNAME 18000000 PSYSPUNC DS CL8 SYSPUNCH DDNAME 18300000 PSYSUT1 DS CL8 SYSUT1 DDNAME 18600000 PSYSUT2 DS CL8 SYSUT2 DDNAME 18900000 PSYSUT3 DS CL8 SYSUT3 DDNAME 19200000 PSYSGO DS CL8 SYSGO DDNAME 19250000 D80 EQU 80 DECIMAL 80 19300000 SPACE 5 19500000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - MAINLINE CONTROL' 19550000 * VS1 RELEASE 3.1 CHANGES 19600031 *C678000 OY02543 19650031 *A258500-259500 @0Z04367 19700005 *A705100,705200 @AX19477 19730000 *C706500 @AX19477 19760000 JCSECT (X0F00) SECTION ID 19800000 JMODID EMBEDDED IDENTIFIER 20100000 USING START,R12 SET BASE OF R12 20400000 START B INPUT JINPUT ENTRY 20700000 B FIND JFIND ENTRY 21000000 B NOTELB JNOTELB ENTRY 21300000 B POINTLB JPOINTLB ENTRY 21600000 B ININIT INIT & TERM ENTRY 21900000 SPACE 3 22200000 JENTRY (X0F01=START) MODULE ENTRY POINT 22500000 SPACE 3 22800000 SAVE JSAVE BASE=NO SAVE REGISTERS 23100000 L R7,JADINCM LOAD ADDRESS OF INPUT COMMON 23400000 BR R14 NOW GO ON WITH BUSINESS 23700000 SPACE 3 24000000 RETURN JRETURN RESTORE REGISTERS & RETURN 24300000 SPACE 5 24600000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - ''JINPUT'' ROUTINE' 24650000 INPUT BAL R14,SAVE GO SAVE REGISTERS 24900000 GOIF JINLIB,ON=INLIB INPUT FROM LIBRARY 25200000 LA R6,RETURN LOAD RETURN ADDR FOR EOD USE 25500000 L R1,JSYSIN LOAD INPUT FILE DEF ADDRESS 25800000 LR R11,R10 SAVE R10 @0Z04367 25850005 LA R10,XTIN GET ADDRESS TO EXIT @OZ04367 25950005 GET (1) GET A RECORD. ADDR IN R1 26100000 L R14,JRECIN WELL...NO EOF, THEN COUNT CARDS 26400000 LA R14,D1(,R14) ONE MORE CARD READ 26700000 ST R14,JRECIN SAVE IT FOR NEXT TIME 27000000 TR D0(D80,R1),JTRTABLE TRANSLATE STATEMENT 27300000 LTR R11,R1 PASS BACK RECORD ADDRESS, SET 27600000 B RETURN CC=2 AND RETURN 27900000 SPACE 3 28200000 INLIB LH R4,JLIBNDX GET BUFFER INDEX 28500000 AH R4,=H'80' ADD 80 (LOGICAL RECORD LENGTH) 28800000 L R5,JLIBBUF POINT TO PHYSICAL BUFFER 29100000 GOIF JREADPT,ON=READ READ NECESSARY FOR POINT 29400000 CHECKSIZ CH R4,JBLKSIZE HAVE WE EXAUSTED PHY REC 29700000 BL NOREAD NO. 30000000 READ LA R6,RETURN EOF RETURN PT AFTER CC=0 30300000 READ JLIBDECB,SF,,(R5),MF=E READ PHY RECORD 30600000 CHECK JLIBDECB CHECK READ 30900000 L R1,JSYSLIB POINT TO DCB 31200000 USING IHADCB,R1 FIND RECORD SIZE 31500000 L R14,DCBIOBA GET ADDR OF IOB 31800000 LH R15,DCBBLKSI RECORD SIZE = READ LENGTH - 32100000 USING IOBBPAMN,R14 SET UP IOB USING 32400000 SH R15,IOBCSW+5 GET RESIDUAL COUNT 32700000 DROP R14 33000000 STH R15,JBLKSIZE '' 33300000 DROP R1 DROP DCB BASE 33600000 GOIF JREADPT,OFF=RESET READ WASN'T NECESSARY FOR POINT 33900000 SET JREADPT,OFF SET READ BECUASE OF POINT OFF 34200000 B CHECKSIZ CHK TO SEE IF END OF BUF 34500000 RESET SR R4,R4 ZERO BUFFER INDEX 34800000 NOREAD STH R4,JLIBNDX SAVE BUFFER INDEX 35100000 LA R11,D0(R4,R5) LOG ADDR=PHY ADDR+INDEX 35400000 TR D0(D80,R11),JTRTABLE TRANSLATE TO INTERNAL 35700000 L R14,JRECLIB ADD ONE TO LIB CARD COUNT 36000000 LA R14,D1(,R14) '' 36300000 ST R14,JRECLIB '' 36600000 LTR R11,R11 SET CC=2 (NO EOF) AND 36900000 B RETURN RETURN 37200000 SPACE 5 37500000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - ''JFIND'' ROUTINE' 37550000 FIND BAL R14,SAVE GO SAVE REGISTERS 37800000 L R1,JSYSLIB POINT TO DCB 38100000 USING IHADCB,R1 '' 38400000 TM DCBOFLGS,BIT3 WAS OPEN SUCCESSFUL 38700000 BNZ OPENSUC BR IF OPEN NOT SUCCESSFUL 39000000 L R2,JINOPEN OPEN LIST 39100000 TM D0(R2),BIT0 DD CARD FOUND 39200000 BZ RETURN YES 39300000 SET JMISLIB,ON SYSLIB DD CARD MISSING 39400000 SR R2,R2 SET NOT FOUND 39500000 B RETURN RETURN 39600000 DROP R1 39700000 OPENSUC MVC JDWORD,D0(R10) CONVERT MEMBER NAME 39800000 TR JDWORD,JTRTABLE '' 39900000 FIND (1),JDWORD,D FIND MEMBER 40200000 SH R15,=H'4' CHECK RETURN CODE 40500000 BZ RETURN RC=4. MEMBER NOT FOUND. CC=0 40800000 BP ABORTFND RC=3 I/O ERROR. 41100000 MVC JLIBNDX,=X'7FAF' FORCE READ 41400000 SET JREADPT,OFF RESET FLAG 41700000 LTR R13,R13 RC=0. MEMBER FOUND. CC=2 42000000 B RETURN RETURN 42300000 SPACE 4 42600000 ABORTFND L R1,JSYSLIB PT TO DCB 42900000 USING IHADCB,R1 '' 43200000 O R1,=X'FF000000' SET FLAG TO INDICATE FIND ABORT 43500000 L R15,DCBSYNAD GET ADDRESS OF SYDAD ROUTINE 43800000 DROP R1 DROP DCB BASE 44100000 BR R15 NOW GO ABORT 44400000 SPACE 5 44700000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - ''NOTELB'' AND ''POIX44750000 NT'' ROUTINES' 44800000 SPACE 2 44850000 NOTELB BAL R14,SAVE GO SAVE REGISTERS 45000000 L R1,JSYSLIB POINT TO DCB 45300000 NOTE (1) NOTE LIBRARY POSITION 45600000 ST R1,JNOTEVAL SAVE FILE POSITION 45900000 MVC JNOTEVAL+D6(D2),JLIBNDX SAVE BUFFER INDEX 46200000 B RETURN RETURN 46500000 SPACE 6 46800000 POINTLB BAL R14,SAVE GO SAVE REGISTERS 47100000 MVC JFWORD1,D0(R10) ALIGN TO FULLWORD 47400000 L R1,JSYSLIB POINT TO DCB 47700000 POINT (1),JFWORD1 POSITION LIBRARY 48000000 MVC JLIBNDX,D6(R10) SET BUFFER INDEX 48300000 SET JREADPT,ON INDICATE NEXT READ IS FOR POINT 48600000 B RETURN RETURN 48900000 SPACE 3 49200000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - OPEN ROUTINE FOR ''SX49250000 YSIN'' AND ''SYSLIB'' DCB''S' 49300000 ININIT BAL R14,SAVE GO SAVE REGISTERS 49500000 GOIF JIN2ND,ON=CLOSE SECOND TIME HERE 49800000 SET JIN2ND,ON FIRST TIME. SET FLAG 50100000 SPACE 2 50400000 TM D0(R11),BIT0 ANY OVERRIDING DDNAMES 50700000 BO NOPARM BR IF END OF PARM LIST 51000000 L R14,D4(,R11) PT TO DDNAME LIST 51300000 USING P,R14 ESTABLISH PARMLIST BASE 51600000 LA R15,P CLEAR END-OF-LIST FLAG 51900000 AH R15,PLEN CALC END OF TABLE (-2) 52200000 SPACE 1 52500000 L R1,JSYSLIB PT TO SYSLIB DCB 52800000 LA R2,PSYSLIB PT TO SYSLIB DDNAME 53100000 BAL R9,OVERRIDE CHECK FOR OVERRIDE 53400000 SPACE 1 53700000 L R1,JSYSIN PT TO SYSIN DCB 54000000 LA R2,PSYSIN PT TO SYSIN DDNAME 54300000 BAL R9,OVERRIDE CHECK FOR OVERRIDE 54600000 DROP R14 DROP DSECT BASE 54900000 SPACE 2 55500000 USING IHADCB,R1 BASE FOR DCB 55800000 NOPARM L R1,JSYSLIB POINTS TO SYSLIB DCB 55820000 LA R15,DCBDDNAM POINTS TO SYSLIB DDNAME 55840000 DROP R1 55860000 DSYSLIB DEVTYPE (R15),JDWORD GET DEVICE CHARACTERISTICS 55880000 LTR R15,R15 WAS DDNAME FOUND 55900000 BZ ININIT5 YES 55920000 L R15,JINOPEN POINT TO OPEN LIST 55940000 OI D0(R15),BIT0 DO NOT OPEN SYSLIB 55960000 L R15,JINCLOS POINT TO CLOSE LIST 55980000 OI D0(R15),BIT0 DO NOT CLOSE SYSLIB 56000000 ININIT5 LA R10,XTIN ADDRESS OF SYSIN LIB DCB EXIT 56020000 L R1,JINOPEN OPEN INPUT 56100000 OPEN MF=(E,(1)) '' 56400000 SPACE 2 56700000 USING IHADCB,R1 ESTABLISH ADDRESSABILITY 57000000 L R1,JSYSLIB PT TO SYSLIB DCB 57300000 TM DCBOFLGS,BIT3 WAS OPEN SUCCESSFUL 57600000 BZ RETURN NO. RETURN 57900000 SPACE 2 58200000 LH R0,DCBBLKSI GET BUFFER FOR LIBRARY 58500000 DROP R1 DROP DCB BASE 58800000 GETMAIN R,LV=(0) ACQUIRE CORE 59100000 ST R1,JLIBBUF SAVE LIBRARY BUFFER ADDRESS 59400000 B RETURN RETURN 59700000 SPACE 60000000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - CLOSE ROUTINE FOR ''X60050000 SYSIN'' AND ''SYSLIB'' DCB''S' 60100000 CLOSE L R1,JSYSLIB POINT TO DCB 60300000 USING IHADCB,R1 '' 60600000 TM DCBOFLGS,BIT3 WAS OPEN SUCCESSFUL FOR LIBRARY 60900000 BZ NOTSUC NOT SUCCESSFUL 61200000 LH R0,DCBBLKSI GET BUFFER LENGTH 61500000 DROP R1 DROP DCB BASE 61800000 L R1,JLIBBUF GET LIBRARY BUFFER ADDRESS 62100000 FREEMAIN R,LV=(0),A=(1) FREE LIBRARY BUFFER 62400000 NOTSUC L R1,JINCLOS CLOSE INPUT 62700000 CLOSE MF=(E,(1)) '' 63000000 SPACE 3 63300000 L R1,JSYSIN PT TO SYSIN DCB 63600000 USING IHADCB,R1 '' 63900000 TM DCBBUFCB+D3,BIT7 IS THERE A BUFCB 64200000 BO NOBUFCB BR IF NO BUFCB 64500000 FREEPOOL (1) FREE BUFFERS IN BUFCB 64800000 DROP R1 DROP DCB BASE 65100000 SPACE 1 65700000 NOBUFCB XC JADINCM,JADINCM ZERO ADDRESS FOR ABORT MODULE 66000000 B RETURN RETURN 66300000 SPACE 2 66600000 TITLE '&COMPNM&ASMID - INPUT I/O MODULE - DCB OVERRIDE AND DCBX66650000 EXIT ROUTINE FOR ''SYSIN'' AND ''SYSLIB'' DCB''S' 66700000 USING IHADCB,R1 ESTABLISH BASE FOR DCB 66900000 OVERRIDE CR R2,R15 PAST END OF LIST 67200000 BHR R9 YES, RETURN 67500000 CLC D0(D8,R2),=8X'00' IS DDNAME ZERO OY02543 67800031 BZR R9 YES, RETURN 68100000 MVC DCBDDNAM,D0(R2) OVERRIDE DDNAME 68400000 BR R9 RETURN 68700000 DROP R1 DROP DCB BASE 69000000 SPACE 3 69300000 USING IHADCB,R1 ESTABLISH ADDR OF DCB 69600000 * DCB EXIT FOR SYSIN & SYSLIB 69900000 USING *,R10 ESTABLISH BASE ADDRESS 70200000 XTIN LH R3,DCBLRECL LOGICAL RECORD LENGTH 70500000 TM DCBRECFM,BIT0+BIT1 UNDEFINED LRECL @AX19477 70550000 BO XTIN05 BRANC IF YES @AX19477 70570000 TM DCBRECFM,BIT0 FIXED RECORD LENGTH 70590000 BNZ XTIN10 NO, MAKE RECFM=FB 70610000 XTIN05 MVI DCBRECFM,BIT0+BIT3 FORCE RECFM=FB @AX19477 70630000 XTIN10 LH R5,DCBBLKSI IS BLKSIZE SPECIFIED 70700000 LTR R5,R5 70750000 BZ XTIN20 NO, GO SET DEFAULT BLKSIZE 70800000 CR R3,R5 BLKSIZE LESS THAN LRECL 70850000 BH XTIN20 IF SO SET BLKSIZE=LRECL 70900000 OI DCBRECFM,BIT3 SET BLOCKED 70950000 LR R3,R5 SAVE BLKSIZE 71000000 LH R2,DCBLRECL LOGICAL RECORD LENGTH 71050000 SR R4,R4 ZERO FOR DIVIDE 71100000 DR R4,R2 R4(REMAINDER)=R4R5/R2 LRECL 71150000 SR R3,R4 NOW BLKSIZE IS MULT OF LRECL 71200000 B XTIN30 STORE BLKSIZE 71250000 XTIN20 NI DCBRECFM,BITFF-BIT3 SET UNBLOCKED 71300000 XTIN30 STH R3,DCBBLKSI STORE BLKSIZE 71350000 BR R14 71400000 DROP R1,R10 DROP BASES 73800000 SPACE 5 74100000 * PATCH AREA 74400000 * 74700000 JPATCH X0F00,302 5% PATCH AREA 75000000 END START 75300000