TITLE 'IEFJREAD - PSEUDO ACCESS METHOD READ A SEQUENTIAL REC' 00001000 IEFJREAD CSECT , 0001 00002000 @MAINENT DS 0H 0001 00003000 USING *,@15 0001 00004000 B @PROLOG 0001 00005000 DC AL1(16) 0001 00006000 DC C'IEFJREAD 72.341' 0001 00007000 DROP @15 00008000 @PROLOG STM @14,@12,12(@13) 0001 00009000 BALR @12,0 0001 00010000 @PSTART DS 0H 0001 00011000 USING @PSTART,@12 0001 00012000 * RPLPTR=R1; /* SAVE THE POINTER TO THE RPL */ 00013000 LR RPLPTR,R1 0008 00014000 * RFY 0009 00015000 * R1 UNRSTD; 0009 00016000 * RFY 0010 00017000 * IFGRPL BASED(RPLPTR); /* THE RPL MACRO IS BASED ON 0010 00018000 * RPLPTR */ 00019000 * RFY 0011 00020000 * IFGACB BASED(RPLDACB); /* THE ACB IS BASED ON A PTR IN 00021000 * THE RPL */ 00022000 * RFY 0012 00023000 * ACBPRFIX BASED(ADDR(IFGACB)-4);/* GET THE ACB PREFIX */ 00024000 * RFY 0013 00025000 * IEFJAMWD BASED(ACBPRFIX); /* THE ACCESS METHOD WORK AREA IS 00026000 * BASED ON THE ACB PREFIX */ 00027000 * RFY 0014 00028000 * IEFJAREA BASED(CURNTREC); /* THE COMMON DATA RECORD AREA IS 00029000 * BASED ON A PTR TO THE REC TO 00030000 * BE READ */ 00031000 * 0015 00032000 * /*****************************************************************/ 00033000 * /* */ 00034000 * /* PERFORM A SEQUENTIAL READ */ 00035000 * /* */ 00036000 * /*****************************************************************/ 00037000 * 0015 00038000 * CURNTREC=AMWDLAST; /* SET PTR OF REC TO BE READ */ 00039000 L @10,RPLDACB(,RPLPTR) 0015 00040000 AL @10,@CF00232 0015 00041000 L @10,ACBPRFIX(,@10) 0015 00042000 L CURNTREC,AMWDLAST(,@10) 0015 00043000 * AMWDLAST=NEXTPTR; /* THE LAST REC NEXTPTR IS IS 0016 00044000 * USED TO GET THE NEW REC. THE 00045000 * REC FORMAT IS BASED ON 0016 00046000 * AMWDLAST */ 00047000 L @05,NEXTPTR(,CURNTREC) 0016 00048000 ST @05,AMWDLAST(,@10) 0016 00049000 * IF NEXTPTR=0 THEN /* DO A LOOK AHEAD AT THE NEW 0017 00050000 * NEXTPTR */ 00051000 LTR @05,@05 0017 00052000 BNZ @RF00017 0017 00053000 * AMWDEOF=ON; /* IF EQUAL TO ZERO THIS IS THE 00054000 * LAST REC SO TURN ON EOF BIT */ 00055000 OI AMWDEOF(@10),B'10000000' 0018 00056000 * TEXTPTR=RPLAREA; /* TEXTPTR POINTS TO THE WHERE 0019 00057000 * THE REC WILL BE READ INTO */ 00058000 @RF00017 L TEXTPTR,RPLAREA(,RPLPTR) 0019 00059000 * RECPTR=ADDR(IEFJAREA); /* POINT TO THE REC TO BE READ */ 00060000 LR RECPTR,CURNTREC 0020 00061000 * IF AMWDMV80=ON THEN /* IS THE REC TO BE READ A FIXED 00062000 * LENGTH */ 00063000 L @10,RPLDACB(,RPLPTR) 0021 00064000 AL @10,@CF00232 0021 00065000 L @10,ACBPRFIX(,@10) 0021 00066000 TM AMWDMV80(@10),B'01000000' 0021 00067000 BNO @RF00021 0021 00068000 * TEXTAREA(1:80)=RECTEXT(1:80); /* MOVE A FIXED LGTH REC */ 00069000 MVC TEXTAREA(80,TEXTPTR),RECTEXT(CURNTREC) 0022 00070000 * ELSE /* IF THE AMWDMV80 BIT IS OFF 0023 00071000 * MOVE THE VARIABLE LENGTH 0023 00072000 * RECTEXT TO THE SPECIFIED AREA */ 00073000 * DO; 0023 00074000 B @RC00021 0023 00075000 @RF00021 DS 0H 0024 00076000 * TEXTLGTH=LGTH-8; /* GET THE ACTUAL LGTH */ 00077000 L TEXTLGTH,LGTH(,CURNTREC) 0024 00078000 SH TEXTLGTH,@CH00050 0024 00079000 * IF TEXTLGTH<=256 THEN /* IF GREATER THEN 256 MORE THEN 00080000 * ONE MOVE IS NECESSARY */ 00081000 CH TEXTLGTH,@CH00231 0025 00082000 BH @RF00025 0025 00083000 * TEXTAREA(1:TEXTLGTH)=RECTEXT(1:TEXTLGTH);/* MOVE ONCE AND 00084000 * END */ 00085000 LR @10,TEXTLGTH 0026 00086000 BCTR @10,0 0026 00087000 EX @10,@SM00234 0026 00088000 * ELSE 0027 00089000 * DO; /* MORE THEN ONE MOVE IS 0027 00090000 * NECESSARY */ 00091000 B @RC00025 0027 00092000 @RF00025 DS 0H 0028 00093000 * CTR=TEXTLGTH/256; /* GET NO OF 256 BYTE MOVES */ 00094000 LR @00,TEXTLGTH 0028 00095000 SRDA @00,32 0028 00096000 D @00,@CF00231 0028 00097000 LR CTR,@01 0028 00098000 * DO WHILE CTR>0; /* EXECUTE UNTIL ZERO */ 00099000 B @DE00029 0029 00100000 @DL00029 DS 0H 0030 00101000 * TEXTAREA(1:256)=RECPTR->RECTEXT(1:256);/* MOVE TEXT */ 00102000 MVC TEXTAREA(256,TEXTPTR),RECTEXT(RECPTR) 0030 00103000 * TEXTPTR=TEXTPTR+256; /* UPDATE POINTERS */ 00104000 LA @10,256 0031 00105000 AR TEXTPTR,@10 0031 00106000 * RECPTR=RECPTR+256; /* UPDATE POINTERS */ 00107000 AR RECPTR,@10 0032 00108000 * CTR=CTR-1; /* DECREMENT CTR */ 00109000 BCTR CTR,0 0033 00110000 * END; 0034 00111000 @DE00029 LTR CTR,CTR 0034 00112000 BP @DL00029 0034 00113000 * CTR=TEXTLGTH//256; /* GET REMAINING LGTH */ 00114000 LR CTR,TEXTLGTH 0035 00115000 N CTR,@CF00236 0035 00116000 * TEXTAREA(1:CTR)=RECPTR->RECTEXT(1:CTR);/* MOVE REMAINDRE */ 00117000 LR @10,CTR 0036 00118000 BCTR @10,0 0036 00119000 EX @10,@SM00237 0036 00120000 * END; 0037 00121000 * END; 0038 00122000 @RC00025 DS 0H 0039 00123000 * RPLDDDD=ADDR(RECTEXT); /* RETURN THE ADDR OF THE REC IN 00124000 * THE RPL */ 00125000 @RC00021 LA @10,RECTEXT(,CURNTREC) 0039 00126000 ST @10,RPLDDDD(,RPLPTR) 0039 00127000 * END IEFJREAD /* RETURN CONTROL TO THE CALLER */ 00128000 * 0040 00129000 */* THE FOLLOWING INCLUDE STATEMENTS WERE FOUND IN THIS PROGRAM. */ 00130000 */*%INCLUDE SYSLIB (IFGACB ) */ 00131000 */*%INCLUDE SYSLIB (IFGRPL ) */ 00132000 */*%INCLUDE SYSLIB (IEFJAMWD) */ 00133000 */*%INCLUDE SYSLIB (IEFJAREA) */ 00134000 * 0040 00135000 * ; 0040 00136000 @EL00001 DS 0H 0040 00137000 @EF00001 DS 0H 0040 00138000 @ER00001 LM @14,@12,12(@13) 0040 00139000 BR @14 0040 00140000 @DATA DS 0H 00141000 @CH00050 DC H'8' 00142000 @SM00234 MVC TEXTAREA(0,TEXTPTR),RECTEXT(CURNTREC) 00143000 @SM00237 MVC TEXTAREA(0,TEXTPTR),RECTEXT(RECPTR) 00144000 @DATD DSECT 00145000 DS 0F 00146000 IEFJREAD CSECT 00147000 DS 0F 00148000 @CF00232 DC F'-4' 00149000 @CF00236 DC F'255' 00150000 @CF00231 DC F'256' 00151000 @CH00231 EQU @CF00231+2 00152000 @DATD DSECT 00153000 DS 0D 00154000 @ENDDATD EQU * 00155000 IEFJREAD CSECT 00156000 NOPR ((@ENDDATD-@DATD)*16) 00157000 DS 0F 00158000 @SIZDATD DC AL1(0) 00159000 DC AL3(@ENDDATD-@DATD) 00160000 DS 0D 00161000 PTCHREAD DC X'00' 00162000 DS 9XL1 00163000 @00 EQU 00 EQUATES FOR REGISTERS 0-15 00164000 @01 EQU 01 00165000 @02 EQU 02 00166000 @03 EQU 03 00167000 @04 EQU 04 00168000 @05 EQU 05 00169000 @06 EQU 06 00170000 @07 EQU 07 00171000 @08 EQU 08 00172000 @09 EQU 09 00173000 @10 EQU 10 00174000 @11 EQU 11 00175000 @12 EQU 12 00176000 @13 EQU 13 00177000 @14 EQU 14 00178000 @15 EQU 15 00179000 RECPTR EQU @07 00180000 CTR EQU @03 00181000 CURNTREC EQU @02 00182000 TEXTLGTH EQU @06 00183000 TEXTPTR EQU @05 00184000 RPLPTR EQU @04 00185000 R1 EQU @01 00186000 ACBPRFIX EQU 0 00187000 TEXTAREA EQU 0 00188000 IFGACB EQU 0 00189000 ACBAMBL EQU IFGACB+4 00190000 ACBIXLST EQU ACBAMBL 00191000 ACBJWA EQU ACBIXLST 00192000 ACBMACRF EQU IFGACB+12 00193000 ACBMACR1 EQU ACBMACRF 00194000 ACBADR EQU ACBMACR1 00195000 ACBCNV EQU ACBMACR1 00196000 ACBMACR2 EQU ACBMACRF+1 00197000 ACBLFB EQU IFGACB+20 00198000 ACBBUFPL EQU ACBLFB 00199000 ACBRECFM EQU IFGACB+24 00200000 ACBCCTYP EQU IFGACB+25 00201000 ACBOPT EQU IFGACB+26 00202000 ACBDSORG EQU ACBOPT 00203000 ACBCROPS EQU ACBDSORG 00204000 ACBEXLST EQU IFGACB+36 00205000 ACBDDNM EQU IFGACB+40 00206000 ACBOFLGS EQU IFGACB+48 00207000 ACBINFLG EQU IFGACB+50 00208000 ACBUJFCB EQU IFGACB+52 00209000 ACBWAPTR EQU ACBUJFCB 00210000 IFGRPL EQU 0 00211000 RPLIDWD EQU IFGRPL 00212000 RPLECB EQU IFGRPL+8 00213000 RPLSTAT EQU IFGRPL+12 00214000 RPLFDBK EQU IFGRPL+13 00215000 RPLRTNCD EQU RPLFDBK 00216000 RPLCNDCD EQU RPLFDBK+1 00217000 RPLKEYLE EQU IFGRPL+16 00218000 RPLDACB EQU IFGRPL+24 00219000 RPLAREA EQU IFGRPL+32 00220000 RPLOPTCD EQU IFGRPL+40 00221000 RPLOPT1 EQU RPLOPTCD 00222000 RPLOPT2 EQU RPLOPTCD+1 00223000 RPLADR EQU RPLOPT2 00224000 RPLOPT3 EQU RPLOPTCD+2 00225000 RPLNXTRP EQU IFGRPL+44 00226000 RPLRBAR EQU IFGRPL+60 00227000 RPL6RBA EQU RPLRBAR+2 00228000 RPLDDDD EQU RPL6RBA+2 00229000 IEFJAMWD EQU 0 00230000 AMWDLAST EQU IEFJAMWD+4 00231000 AMWDFLG1 EQU IEFJAMWD+8 00232000 AMWDEOF EQU AMWDFLG1 00233000 AMWDMV80 EQU AMWDFLG1 00234000 IEFJAREA EQU 0 00235000 NEXTPTR EQU IEFJAREA 00236000 LGTH EQU IEFJAREA+4 00237000 RECTEXT EQU IEFJAREA+8 00238000 AGO .@UNREFD START UNREFERENCED COMPONENTS 00239000 @NM00019 EQU IEFJAMWD+10 00240000 AMWDFLG2 EQU IEFJAMWD+9 00241000 @NM00018 EQU AMWDFLG1 00242000 AMWDFRST EQU IEFJAMWD 00243000 RPLERMSA EQU IFGRPL+72 00244000 RPLEMLEN EQU IFGRPL+70 00245000 @NM00017 EQU IFGRPL+68 00246000 RPLS2S2 EQU RPL6RBA 00247000 RPLS1S1 EQU RPLRBAR 00248000 @NM00016 EQU IFGRPL+56 00249000 RPLBUFL EQU IFGRPL+52 00250000 RPLRLEN EQU IFGRPL+48 00251000 RPLCHAIN EQU RPLNXTRP 00252000 RPLOPT4 EQU RPLOPTCD+3 00253000 RPLALIGN EQU RPLOPT3 00254000 RPLFMT EQU RPLOPT3 00255000 RPLFLD EQU RPLOPT3 00256000 RPLVFY EQU RPLOPT3 00257000 RPLBLK EQU RPLOPT3 00258000 RPLSFORM EQU RPLOPT3 00259000 RPLEODS EQU RPLOPT3 00260000 RPLNSP EQU RPLOPT2 00261000 RPLUPD EQU RPLOPT2 00262000 @NM00015 EQU RPLOPT2 00263000 RPLCNV EQU RPLOPT2 00264000 RPLADD EQU RPLADR 00265000 RPLKEY EQU RPLOPT2 00266000 RPLECBSW EQU RPLOPT1 00267000 RPLGEN EQU RPLOPT1 00268000 RPLKGE EQU RPLOPT1 00269000 RPLASY EQU RPLOPT1 00270000 RPLSKP EQU RPLOPT1 00271000 RPLSEQ EQU RPLOPT1 00272000 RPLDIR EQU RPLOPT1 00273000 RPLLOC EQU RPLOPT1 00274000 RPLARG EQU IFGRPL+36 00275000 RPLTCBPT EQU IFGRPL+28 00276000 RPLCCHAR EQU IFGRPL+20 00277000 RPLSTRID EQU IFGRPL+18 00278000 RPLKEYL EQU RPLKEYLE 00279000 RPLERRCD EQU RPLCNDCD+1 00280000 RPLCMPON EQU RPLCNDCD 00281000 RPLERREG EQU RPLRTNCD 00282000 @NM00014 EQU RPLSTAT 00283000 RPLEDRQI EQU RPLSTAT 00284000 RPLCHKI EQU RPLSTAT 00285000 RPLACTIV EQU RPLSTAT 00286000 RPLPOST EQU RPLECB 00287000 RPLWAIT EQU RPLECB 00288000 RPLPLHPT EQU IFGRPL+4 00289000 RPLLEN EQU RPLIDWD+3 00290000 RPLREQ EQU RPLIDWD+2 00291000 RPLSTYP EQU RPLIDWD+1 00292000 RPLID EQU RPLIDWD 00293000 @NM00013 EQU IFGACB+72 00294000 @NM00012 EQU IFGACB+68 00295000 ACBUAPTR EQU IFGACB+64 00296000 ACBLRECL EQU IFGACB+62 00297000 ACBBLKSZ EQU IFGACB+60 00298000 ACBBUFSP EQU IFGACB+56 00299000 @NM00011 EQU ACBWAPTR+1 00300000 ACBOPTN EQU ACBWAPTR 00301000 ACBCAT EQU ACBINFLG 00302000 ACBIJRQE EQU ACBINFLG 00303000 ACBJEPS EQU ACBINFLG 00304000 @NM00010 EQU ACBINFLG 00305000 ACBERFLG EQU IFGACB+49 00306000 ACBIOSFG EQU ACBOFLGS 00307000 ACBEXFG EQU ACBOFLGS 00308000 @NM00009 EQU ACBOFLGS 00309000 ACBDSERR EQU ACBOFLGS 00310000 ACBOPEN EQU ACBOFLGS 00311000 ACBEOV EQU ACBOFLGS 00312000 @NM00008 EQU ACBOFLGS 00313000 ACBDEB EQU ACBDDNM+5 00314000 ACBERFL EQU ACBDDNM+4 00315000 ACBAMETH EQU ACBDDNM+3 00316000 ACBINFL EQU ACBDDNM+2 00317000 ACBTIOT EQU ACBDDNM 00318000 ACBUEL EQU ACBEXLST 00319000 ACBPASSW EQU IFGACB+32 00320000 @NM00007 EQU IFGACB+28 00321000 @NM00006 EQU ACBDSORG+1 00322000 ACBDORGA EQU ACBDSORG+1 00323000 @NM00005 EQU ACBDSORG 00324000 ACBCRNRE EQU ACBCROPS 00325000 ACBCRNCK EQU ACBCROPS 00326000 ACBASA EQU ACBCCTYP 00327000 @NM00004 EQU ACBCCTYP 00328000 ACBRECAF EQU ACBRECFM 00329000 ACBJBUF EQU ACBBUFPL+2 00330000 @NM00003 EQU ACBBUFPL 00331000 ACBBUFNI EQU IFGACB+18 00332000 ACBBUFND EQU IFGACB+16 00333000 ACBSTRNO EQU IFGACB+14 00334000 @NM00002 EQU ACBMACR2 00335000 @NM00001 EQU ACBMACR2 00336000 ACBSKP EQU ACBMACR2 00337000 ACBCHN EQU ACBMACR2 00338000 ACBCBRD EQU ACBMACR2 00339000 ACBCBOPN EQU ACBMACR2 00340000 ACBUPD EQU ACBMACR1 00341000 ACBOUT EQU ACBMACR1 00342000 ACBIN EQU ACBMACR1 00343000 ACBDIR EQU ACBMACR1 00344000 ACBSEQ EQU ACBMACR1 00345000 ACBBLK EQU ACBCNV 00346000 ACBADD EQU ACBADR 00347000 ACBKEY EQU ACBMACR1 00348000 ACBINRTN EQU IFGACB+8 00349000 ACBIBCT EQU ACBJWA 00350000 ACBLENG EQU IFGACB+2 00351000 ACBSTYP EQU IFGACB+1 00352000 ACBID EQU IFGACB 00353000 .@UNREFD ANOP END UNREFERENCED COMPONENTS 00354000 @ENDDATA EQU * 00355000 END IEFJREAD 00356000