TITLE 'BLSCENDD - IPCS DATA ACCESS SERVICES END REQUEST EXECUT*00001000 TOR ' 00002000 * /* CHANGE ACTIVITY 00003000 * THIS MODULE IS WRITTEN FOR @G57LPSR 00004000 BLSCENDD CSECT , 0002 00005000 @MAINENT DS 0H 0002 00006000 USING *,@15 0002 00007000 B @PROLOG 0002 00008000 DC AL1(16) 0002 00009000 DC C'BLSCENDD 78.062' 0002 00010000 DROP @15 00011000 @PROLOG STM @14,@12,12(@13) 0002 00012000 BALR @12,0 0002 00013000 @PSTART DS 0H 0002 00014000 USING @PSTART,@12 0002 00015000 L @00,@SIZDATD 0002 00016000 BLSCGETS R,LV=(0) 00017000 LR @11,@01 0002 00018000 USING @DATD,@11 0002 00019000 ST @13,@SA00001+4 0002 00020000 LM @00,@01,20(@13) 0002 00021000 ST @11,8(,@13) 0002 00022000 LR @13,@11 0002 00023000 * DMCBPTR=GPR01P; /* ESTABLISH ADDRESSIBILITY TO 0010 00024000 * DMCB */ 00025000 LR DMCBPTR,GPR01P 0010 00026000 * RFY 0011 00027000 * GPR01P UNRSTD; 0011 00028000 * MODNAME=LMODNMC; /* MARK AUTOMATIC AREA */ 00029000 MVC MODNAME(8),@CC00220 0012 00030000 * SUBCODE=F0C; /* SUB-ROUTINE RETURN CODE */ 00031000 SLR @10,@10 0013 00032000 ST @10,SUBCODE 0013 00033000 * DMCBRTC=F0C; /* WE ARE SUCCESSFUL UNTIL WE 0014 00034000 * FAIL */ 00035000 * 0014 00036000 ST @10,DMCBRTC(,DMCBPTR) 0014 00037000 * /*****************************************************************/ 00038000 * /* */ 00039000 * /* FIRST DECIDE WHETHER DMCB IS OPEN */ 00040000 * /* */ 00041000 * /*****************************************************************/ 00042000 * 0015 00043000 * IF DMCBSOUT=OFF /* DMCB NOT OPEN FOR OUTPUT */ 00044000 * &DMCBSIN=OFF THEN /* OR INPUT */ 00045000 TM DMCBSOUT(DMCBPTR),B'11000000' 0015 00046000 BNZ @RF00015 0015 00047000 * DO; /* DATA SET NOT OPEN */ 00048000 * DMCBRTC=INVRQ; /* INDICATE INVALID REQUEST */ 00049000 MVC DMCBRTC(4,DMCBPTR),@CF00037 0017 00050000 * DMCBREJ=F0C; /* REQ REJECTED SINCE DMCB IS NOT 00051000 * OPEN FOR OUTPUT */ 00052000 MVI DMCBREJ(DMCBPTR),X'00' 0018 00053000 * RETURN; 0019 00054000 @EL00001 L @13,4(,@13) 0019 00055000 @EF00001 L @00,@SIZDATD 0019 00056000 LR @01,@11 0019 00057000 BLSCFRES R,LV=(0),A=(1) 00058000 @ER00001 LM @14,@12,12(@13) 0019 00059000 BR @14 0019 00060000 * END; /* DATA SET NOT OPEN */ 00061000 EJECT 00062000 * 0021 00063000 * /*****************************************************************/ 00064000 * /* */ 00065000 * /* VSAM FILE */ 00066000 * /* */ 00067000 * /*****************************************************************/ 00068000 * 0021 00069000 * IF DMCBVSF=ON THEN 0021 00070000 @RF00015 TM DMCBVSF(DMCBPTR),B'00000001' 0021 00071000 BNO @RF00021 0021 00072000 * DO; /* VSAM FILE */ 00073000 * 0022 00074000 * /*************************************************************/ 00075000 * /* */ 00076000 * /* FOR VSAM FILES CALL BLSCSETT TO PERFORM RPL MODIFICATIONS */ 00077000 * /* */ 00078000 * /*************************************************************/ 00079000 * 0023 00080000 * RFY 0023 00081000 * GPR01P RSTD; 0023 00082000 * GPR01P=DMCBPTR; /* BLSCSETT INTERFACE */ 00083000 LR GPR01P,DMCBPTR 0024 00084000 * CALL BLSCSETT; /* PERFORM SET FUNCTION */ 00085000 L @15,@CV00197 0025 00086000 BALR @14,@15 0025 00087000 * RFY 0026 00088000 * GPR01P UNRSTD; 0026 00089000 * IF DMCBRTC^=F0C THEN 0027 00090000 L @10,DMCBRTC(,DMCBPTR) 0027 00091000 LTR @10,@10 0027 00092000 BNZ @RT00027 0027 00093000 * RETURN; /* IF SET FAILED THEN RETURN */ 00094000 * 0028 00095000 * /*************************************************************/ 00096000 * /* */ 00097000 * /* PERFORM VSAM END REQUEST */ 00098000 * /* */ 00099000 * /*************************************************************/ 00100000 * 0029 00101000 * RFY 0029 00102000 * (GPR01P, 0029 00103000 * GPR15F) RSTD; 0029 00104000 * GPR01P=ADDR(DMCBRPL); 0030 00105000 LA GPR01P,DMCBRPL(,DMCBPTR) 0030 00106000 * GEN REFS(GPR01P) SETS(GPR15F)(ENDREQ RPL=(1)); 0031 00107000 ENDREQ RPL=(1) 00108000 * DMCBSUBC=GPR15F; 0032 00109000 ST GPR15F,DMCBSUBC(,DMCBPTR) 0032 00110000 * RFY 0033 00111000 * (GPR01P, 0033 00112000 * GPR15F) UNRSTD; 0033 00113000 * IF DMCBSUBC=LOGER THEN /* IF A LOGICAL ERROR */ 00114000 L @10,DMCBSUBC(,DMCBPTR) 0034 00115000 CL @10,@CF00044 0034 00116000 BNE @RF00034 0034 00117000 * CALL VSMLERR; /* THEN ANALYSE THE FDBK FIELD IN 00118000 * THE RPL */ 00119000 BAL @14,VSMLERR 0035 00120000 * ELSE 0036 00121000 * DO; /* NOT LOGICAL ERROR */ 00122000 B @RC00034 0036 00123000 @RF00034 DS 0H 0037 00124000 * IF DMCBSUBC=PERMER THEN /* ELSE IF A PHYSICAL ERROR */ 00125000 CLC DMCBSUBC(4,DMCBPTR),@CF00206 0037 00126000 BNE @RF00037 0037 00127000 * DO; /* ABEND(F141C) DUMP USER */ 00128000 * RESPECIFY 0039 00129000 * (GPR01F) RESTRICTED; 0039 00130000 * GPR01F=(F141C)&'00000FFF'X;/* COMP CODE IN BITS 20-31*/ 00131000 LA GPR01F,141 0040 00132000 * GPR01F=GPR01F|'80000000'X;/* DUMP/STEP/DUMPOPTS FLAG */ 00133000 O GPR01F,@CF00227 0041 00134000 * SVC(13); /* ISSUE ABEND SVC */ 00135000 SVC 13 0042 00136000 * RESPECIFY 0043 00137000 * (GPR01F) UNRESTRICTED; 0043 00138000 * END; /* ABEND(F141C) DUMP USER 0044 00139000 * SHOULDNT OCCUR WITH 0044 00140000 * SYNCHRONOUS PROCESSING */ 00141000 * END; /* NOT LOGICAL ERROR */ 00142000 * END; /* VSAM FILE */ 00143000 * RETURN; 0047 00144000 B @EL00001 0047 00145000 EJECT 00146000 *VSMLERR: 0048 00147000 * PROCEDURE; 0048 00148000 * 0048 00149000 VSMLERR STM @14,@12,@SA00002 0048 00150000 * /*****************************************************************/ 00151000 * /* */ 00152000 * /* THIS ROUTINE IS ENTERED IF A VSAM LOGICAL ERROR OCCURS IT */ 00153000 * /* EXTRACTS THE FEEDBACK FIELD FROM THE REQUEST PARAMETER LIST */ 00154000 * /* AND DETERMINES THE PROPER RETURN CODE. LOGICAL ERRORS SHOULD */ 00155000 * /* NEVER OCCUR FOR A DATA MANAGER END REQUEST THEREFORE AN ABEND */ 00156000 * /* IS ISSUED TO INDICATE A DATA MANAGER FAILURE. */ 00157000 * /* */ 00158000 * /*****************************************************************/ 00159000 * 0049 00160000 * RFY 0049 00161000 * (GPR08P, 0049 00162000 * GPR02P, 0049 00163000 * GPR03P, 0049 00164000 * GPR15F) RSTD; 0049 00165000 * GPR08P=ADDR(DMCBRPL); /* ADDRESS RPL FOR SHOWCB MACRO */ 00166000 LA GPR08P,DMCBRPL(,DMCBPTR) 0050 00167000 * GPR02P=ADDR(SHWLIST); /* POINT TO SHOW PARAMETER LIST */ 00168000 LA GPR02P,SHWLIST 0051 00169000 * GPR03P=ADDR(DMCBRPLF); /* ADDRESS FEEDBACK FIELD */ 00170000 LA GPR03P,DMCBRPLF(,DMCBPTR) 0052 00171000 * GEN SETS(DMCBRPLF,GPR15F,SHWLIST); 0053 00172000 SHOWCB RPL=(GPR08P),AREA=(GPR03P),LENGTH=4, *00173000 FIELDS=(FDBK),MF=(G,(GPR02P)) 00174000 * RFY 0054 00175000 * (GPR08P, 0054 00176000 * GPR02P, 0054 00177000 * GPR03P, 0054 00178000 * GPR15F) UNRSTD; 0054 00179000 * DO; /* ABEND(F141C) DUMP USER */ 00180000 * RESPECIFY 0056 00181000 * (GPR01F) RESTRICTED; 0056 00182000 * GPR01F=(F141C)&'00000FFF'X; /* COMP CODE IN BITS 20-31 */ 00183000 LA GPR01F,141 0057 00184000 * GPR01F=GPR01F|'80000000'X; /* DUMP/STEP/DUMPOPTS FLAG */ 00185000 O GPR01F,@CF00227 0058 00186000 * SVC(13); /* ISSUE ABEND SVC */ 00187000 SVC 13 0059 00188000 * RESPECIFY 0060 00189000 * (GPR01F) UNRESTRICTED; 0060 00190000 * END; /* ABEND(F141C) DUMP USER 0061 00191000 * INDICATE DATA MANAGER FAILED */ 00192000 * END VSMLERR; 0062 00193000 @EL00002 DS 0H 0062 00194000 @EF00002 DS 0H 0062 00195000 @ER00002 LM @14,@12,@SA00002 0062 00196000 BR @14 0062 00197000 EJECT 00198000 * 0063 00199000 * /*****************************************************************/ 00200000 * /* */ 00201000 * /* END OF EXECUTABLE PROCEDURE STATEMENTS */ 00202000 * /* */ 00203000 * /*****************************************************************/ 00204000 * 0063 00205000 * DECLARE /* GENERAL PURPOSE REGISTERS */ 00206000 * GPR01F FIXED(31) REG(1), 0063 00207000 * GPR15F FIXED(31) REG(15), 0063 00208000 * GPR00P PTR(31) REG(0), 0063 00209000 * GPR01P PTR(31) REG(1), 0063 00210000 * GPR02P PTR(31) REG(2), 0063 00211000 * GPR03P PTR(31) REG(3), 0063 00212000 * GPR08P PTR(31) REG(8); 0063 00213000 * DECLARE /* COMMON VARIABLES */ 00214000 * I256C CHAR(256) BASED, 0064 00215000 * I031F FIXED(31) BASED, 0064 00216000 * I031P PTR(31) BASED, 0064 00217000 * I015F FIXED(15) BASED, 0064 00218000 * I015P PTR(15) BASED, 0064 00219000 * I008P PTR(8) BASED, 0064 00220000 * I001C CHAR(1) BASED; 0064 00221000 * DCL 0065 00222000 * 1 DASPATCH LOCAL BDY(DWORD), /* PATCH AREA */ 00223000 * 2 DASPATA(DASPATLN) PTR INIT((DASPATLN)0); 0065 00224000 * END BLSCENDD; 0066 00225000 @DATA DS 0H 00226000 @DATD DSECT 00227000 DS 0F 00228000 @SA00001 DS 18F 00229000 @SA00002 DS 15F 00230000 BLSCENDD CSECT 00231000 DS 0F 00232000 @CF00037 DC F'4' 00233000 @CF00044 DC F'8' 00234000 @CF00206 DC F'12' 00235000 @CF00227 DC XL4'80000000' 00236000 @DATD DSECT 00237000 DS 0D 00238000 MODSTAT DS CL12 00239000 ORG MODSTAT 00240000 MODNAME DS CL8 00241000 SUBCODE DS FL4 00242000 ORG MODSTAT+12 00243000 DS CL4 00244000 SHWLIST DS CL28 00245000 ORG *+1-(*-@DATD)/(*-@DATD) INSURE DSECT DATA 00246000 @ENDDATD EQU * 00247000 BLSCENDD CSECT 00248000 DS 0F 00249000 @SIZDATD DC AL1(0) 00250000 DC AL3(@ENDDATD-@DATD) 00251000 @CV00197 DC V(BLSCSETT) 00252000 DS 0D 00253000 @CC00220 DC C'BLSCENDD' 00254000 DASPATCH DS CL80 00255000 ORG DASPATCH 00256000 DASPATA DC 20A(0) 00257000 ORG DASPATCH+80 00258000 @00 EQU 00 EQUATES FOR REGISTERS 0-15 00259000 @01 EQU 01 00260000 @02 EQU 02 00261000 @03 EQU 03 00262000 @04 EQU 04 00263000 @05 EQU 05 00264000 @06 EQU 06 00265000 @07 EQU 07 00266000 @08 EQU 08 00267000 @09 EQU 09 00268000 @10 EQU 10 00269000 @11 EQU 11 00270000 @12 EQU 12 00271000 @13 EQU 13 00272000 @14 EQU 14 00273000 @15 EQU 15 00274000 DMCBPTR EQU @05 00275000 GPR01P EQU @01 00276000 GPR15F EQU @15 00277000 GPR01F EQU @01 00278000 GPR08P EQU @08 00279000 GPR02P EQU @02 00280000 GPR03P EQU @03 00281000 GPR00P EQU @00 00282000 DMCB EQU 0 00283000 DMCBRTC EQU DMCB+12 00284000 DMCBFTY EQU DMCB+20 00285000 DMCBVSF EQU DMCBFTY 00286000 DMCBOPN EQU DMCB+21 00287000 DMCBSIN EQU DMCBOPN 00288000 DMCBSOUT EQU DMCBOPN 00289000 DMCBRMOD EQU DMCB+23 00290000 DMCBOUT EQU DMCBRMOD 00291000 DMCBOPTS EQU DMCB+24 00292000 DMCBGKY EQU DMCBOPTS 00293000 DMCBMFLG EQU DMCB+28 00294000 DMCBREJ EQU DMCB+29 00295000 DMCBBUFP EQU DMCB+32 00296000 DMCBKEYP EQU DMCB+44 00297000 DMCBFRE EQU DMCB+88 00298000 DMCBEOB EQU DMCB+92 00299000 DMCBACBE EQU DMCB+124 00300000 DMCBRPLF EQU DMCB+128 00301000 DMCBSPEC EQU DMCB+380 00302000 DMCBSUBC EQU DMCB+404 00303000 DMCBAMS EQU DMCB+416 00304000 DMCBAUDT EQU DMCB+568 00305000 DMCBLSCP EQU DMCBAUDT+16 00306000 DMCBRQC EQU 0 00307000 I001C EQU 0 00308000 I008P EQU 0 00309000 I015F EQU 0 00310000 I015P EQU 0 00311000 I031F EQU 0 00312000 I031P EQU 0 00313000 I256C EQU 0 00314000 DMCBVSM EQU DMCBAMS 00315000 DMCBRPL EQU DMCBVSM 00316000 DMCBQSM EQU DMCBAMS 00317000 AGO .@UNREFD START UNREFERENCED COMPONENTS 00318000 DMCBRES7 EQU DMCBQSM+96 00319000 DMCBDCB EQU DMCBQSM 00320000 DMCBACB EQU DMCBVSM+76 00321000 DMCBWRK EQU DMCB+648 00322000 DMCBRES8 EQU DMCB+640 00323000 DMCBMODN EQU DMCB+632 00324000 DMCBCARY EQU DMCBAUDT+20 00325000 DMCBCLC EQU DMCBAUDT+12 00326000 DMCBOPC EQU DMCBAUDT+8 00327000 DMCBFRC EQU DMCBAUDT+4 00328000 DMCBALC EQU DMCBAUDT 00329000 DMCBFR EQU DMCB+412 00330000 DMCBRES6 EQU DMCB+410 00331000 DMCBIRSC EQU DMCB+408 00332000 DMCBDRBP EQU DMCB+400 00333000 DMCBRSZM EQU DMCB+398 00334000 DMCBRSZA EQU DMCB+396 00335000 DMCBCISZ EQU DMCB+394 00336000 DMCBDCBL EQU DMCB+392 00337000 DMCBDCLR EQU DMCB+390 00338000 DMCBDCFM EQU DMCB+389 00339000 DMCBRES5 EQU DMCB+388 00340000 DMCBLBRT EQU DMCB+386 00341000 DMCBLBSQ EQU DMCB+384 00342000 DMCBLBPS EQU DMCB+383 00343000 DMCBLBTY EQU DMCB+382 00344000 DMCBRES4 EQU DMCB+381 00345000 DMCBSPRS EQU DMCBSPEC 00346000 DMCBSPRN EQU DMCBSPEC 00347000 DMCBSPCT EQU DMCBSPEC 00348000 DMCBSPRL EQU DMCBSPEC 00349000 DMCBSPSE EQU DMCB+376 00350000 DMCBSPPR EQU DMCB+372 00351000 DMCBSPTY EQU DMCB+369 00352000 DMCBODIS EQU DMCB+368 00353000 DMCBDISP EQU DMCB+367 00354000 DMCBSTAT EQU DMCB+366 00355000 DMCBRES3 EQU DMCB+364 00356000 DMCBMEMB EQU DMCB+356 00357000 DMCBMODL EQU DMCB+348 00358000 DMCBRES9 EQU DMCB+340 00359000 DMCBPID EQU DMCB+332 00360000 DMCBTYPE EQU DMCB+328 00361000 DMCBDSN EQU DMCB+284 00362000 DMCBUNIT EQU DMCB+276 00363000 DMCBDSOR EQU DMCB+274 00364000 DMCBVOL EQU DMCB+268 00365000 DMCBDDNM EQU DMCB+260 00366000 DMCBSYNM EQU DMCB+132 00367000 DMCBDCBE EQU DMCBACBE 00368000 DMCBARC EQU DMCB+120 00369000 DMCBCPC EQU DMCB+116 00370000 DMCBRET EQU DMCB+112 00371000 DMCBSTL EQU DMCB+96 00372000 DMCBRES2 EQU DMCB+85 00373000 DMCBSPID EQU DMCB+84 00374000 DMCBRESC EQU DMCB+80 00375000 DMCBZZ1P EQU DMCB+76 00376000 DMCBMSGS EQU DMCB+72 00377000 DMCBMSG0 EQU DMCB+68 00378000 DMCBRI EQU DMCB+64 00379000 DMCBRRL EQU DMCB+60 00380000 DMCBRBA EQU DMCB+56 00381000 DMCBMSG EQU DMCB+52 00382000 DMCBKEYL EQU DMCB+48 00383000 DMCBKPC EQU DMCBKEYP 00384000 DMCBORL EQU DMCB+40 00385000 DMCBBLEN EQU DMCB+36 00386000 DMCBBFPC EQU DMCBBUFP 00387000 DMCBRES1 EQU DMCB+31 00388000 DMCBACCM EQU DMCB+30 00389000 DMCBRESB EQU DMCBMFLG 00390000 DMCBFMOD EQU DMCBMFLG 00391000 DMCBLOPT EQU DMCB+27 00392000 DMCBLRM EQU DMCB+26 00393000 DMCBLRQ EQU DMCB+25 00394000 DMCBOPRS EQU DMCBOPTS 00395000 DMCBLRD EQU DMCBOPTS 00396000 DMCBBWD EQU DMCBOPTS 00397000 DMCBUPD EQU DMCBOPTS 00398000 DMCBAPX EQU DMCBOPTS 00399000 DMCBRNO EQU DMCBGKY 00400000 DMCBKYD EQU DMCBOPTS 00401000 DMCBRMRS EQU DMCBRMOD 00402000 DMCBRM5 EQU DMCBRMOD 00403000 DMCBRM6 EQU DMCBRMOD 00404000 DMCBTMP EQU DMCBOUT 00405000 DMCBRQST EQU DMCB+22 00406000 DMCBRESA EQU DMCBOPN 00407000 DMCBKSF EQU DMCBFTY 00408000 DMCBFTRS EQU DMCBFTY 00409000 DMCBSHF EQU DMCBFTY 00410000 DMCBIRL EQU DMCB+16 00411000 DMCBTVP EQU DMCB+8 00412000 DMCBNEXT EQU DMCB+4 00413000 DMCBID EQU DMCB 00414000 .@UNREFD ANOP END UNREFERENCED COMPONENTS 00415000 @RT00027 EQU @EL00001 00416000 @RF00021 EQU @EL00001 00417000 @RC00034 EQU @EL00001 00418000 @RF00037 EQU @EL00001 00419000 @ENDDATA EQU * 00420000 END BLSCENDD,(C'PLS1903',0701,78062) 00421000