TITLE 'BLSCPUTT -- IPCS DATA ACCESS SERVICES PUT EXECUTOR *00001000 ' 00002000 * /* CHANGE ACTIVITY 00003000 * THIS MODULE IS WRITTEN FOR @G57LPSR 00004000 BLSCPUTT CSECT , 0002 00005000 @MAINENT DS 0H 0002 00006000 USING *,@15 0002 00007000 B @PROLOG 0002 00008000 DC AL1(16) 0002 00009000 DC C'BLSCPUTT 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 0026 00024000 * DMCB */ 00025000 LR DMCBPTR,GPR01P 0026 00026000 * RFY 0027 00027000 * GPR01P UNRSTD; 0027 00028000 * MODNAME=LMODNMC; /* MARK AUTOMATIC AREA */ 00029000 MVC MODNAME(8),@CC00586 0028 00030000 * SUBCODE=F0C; /* SUB-ROUTINE RETURN CODE */ 00031000 SLR @10,@10 0029 00032000 ST @10,SUBCODE 0029 00033000 * DMCBREJ=F0C; /* INVALID REQUEST REJECT CODE */ 00034000 MVI DMCBREJ(DMCBPTR),X'00' 0030 00035000 * DMCBRTC=F0C; /* WE ARE SUCCESSFUL UNTIL WE 0031 00036000 * FAIL */ 00037000 * 0031 00038000 ST @10,DMCBRTC(,DMCBPTR) 0031 00039000 * /*****************************************************************/ 00040000 * /* */ 00041000 * /* FIRST DECIDE WHETHER DMCB IS OPEN */ 00042000 * /* */ 00043000 * /*****************************************************************/ 00044000 * 0032 00045000 * IF DMCBSOUT=OFF THEN /* DMCB NOT OPEN FOR OUTPUT */ 00046000 TM DMCBSOUT(DMCBPTR),B'01000000' 0032 00047000 BNZ @RF00032 0032 00048000 * DO; /* DMCB IS NOT OPEN */ 00049000 * DMCBRTC=INVRQ; /* INDICATE INVALID REQUEST */ 00050000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0034 00051000 * DMCBREJ=F0C; /* REQ REJECTED SINCE DMCB IS NOT 00052000 * OPEN FOR OUTPUT */ 00053000 MVI DMCBREJ(DMCBPTR),X'00' 0035 00054000 * END; /* DMCB IS NOT OPEN */ 00055000 * ELSE 0037 00056000 * DO; /* DMCB IS OPEN */ 00057000 B @RC00032 0037 00058000 @RF00032 DS 0H 0038 00059000 * DMCBFMOD=ON; /* INDICATE THAT FILE IS MODIFIED*/ 00060000 OI DMCBFMOD(DMCBPTR),B'10000000' 0038 00061000 EJECT 00062000 * 0039 00063000 * /*************************************************************/ 00064000 * /* */ 00065000 * /* QSAM FILE */ 00066000 * /* */ 00067000 * /*************************************************************/ 00068000 * 0039 00069000 * IF DMCBVSF=OFF THEN /* TEST FOR QSAM FILE */ 00070000 TM DMCBVSF(DMCBPTR),B'00000001' 0039 00071000 BNZ @RF00039 0039 00072000 * DO; /* QSAM FILE */ 00073000 * DCBPTR=ADDR(DMCBDCB); /* ESTABLISH ADDRESSIBILITY TO 0041 00074000 * DCB */ 00075000 LA DCBPTR,DMCBDCB(,DMCBPTR) 0041 00076000 * IF DMCBKYD=ON /* KEYED ACCESS NOT ALLOWED FOR 00077000 * QSAM */ 00078000 * |DMCBRNO=ON THEN /* REL RECORD ACCESS NOT ALLOWED 00079000 * FOR QSAM */ 00080000 TM DMCBKYD(DMCBPTR),B'11000000' 0042 00081000 BZ @RF00042 0042 00082000 * DO; /* KEYED OR REL RECORD ACCESS NOT 00083000 * ALLOWED */ 00084000 * DMCBREJ=F2C; /* INDICATE REASON FOR REJECTION */ 00085000 MVI DMCBREJ(DMCBPTR),X'02' 0044 00086000 * DMCBRTC=INVRQ; /* INDICATE INVALID REQUEST */ 00087000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0045 00088000 * END; /* KEYED OR REL RECORD ACCESS NOT 00089000 * ALLOWED */ 00090000 * IF DCBRECL='01'B THEN /* ARE THE RECORDS VARYING LENGTH*/ 00091000 @RF00042 TM DCBRECL+28(DCBPTR),B'01000000' 0047 00092000 BNO @RF00047 0047 00093000 TM DCBRECL+28(DCBPTR),B'10000000' 0047 00094000 BNZ @RF00047 0047 00095000 * DO; /* QSAM VARIABLE LENGTH RECORD */ 00096000 * IF DMCBBLENDCBLRECL THEN/* OR IS RECORD TOO BIG */ 00099000 L @10,DMCBORL(,DMCBPTR) 0049 00100000 LA @04,4 0049 00101000 ALR @04,@10 0049 00102000 C @04,DMCBBLEN(,DMCBPTR) 0049 00103000 BH @RT00049 0049 00104000 CH @10,DCBLRECL+72(,DCBPTR) 0049 00105000 BNH @RF00049 0049 00106000 @RT00049 DS 0H 0050 00107000 * DO; /* BUFFER TOO SMALL */ 00108000 * DMCBREJ=F3C; 0051 00109000 MVI DMCBREJ(DMCBPTR),X'03' 0051 00110000 * DMCBRTC=INVRQ; 0052 00111000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0052 00112000 * END; /* BUFFER TOO SMALL */ 00113000 * END; /* QSAM VARIABLE LENGTH RECORD */ 00114000 * ELSE /* RECORDS ARE FIXED LENGTH */ 00115000 * DO; /* QSAM FIXED LENGTH RECORDS */ 00116000 B @RC00047 0055 00117000 @RF00047 DS 0H 0056 00118000 * IF DMCBORL^=DCBLRECL THEN/* INVALID RECORD LENGTH */ 00119000 L @10,DMCBORL(,DMCBPTR) 0056 00120000 CH @10,DCBLRECL+72(,DCBPTR) 0056 00121000 BE @RF00056 0056 00122000 * DO; /* INVALID RECORD LENGTH */ 00123000 * DMCBREJ=F8C; 0058 00124000 MVI DMCBREJ(DMCBPTR),X'08' 0058 00125000 * DMCBRTC=INVRQ; 0059 00126000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0059 00127000 * END; /* INVALID RECORD LENGTH */ 00128000 * END; /* QSAM FIXED LENGTH RECORDS */ 00129000 @RF00056 DS 0H 0062 00130000 * IF DMCBRTC=F0C& /* VALID REQUEST SO FAR */ 00131000 * DCBRECL='01'B THEN /* VARIABLE LENGTH RECORD */ 00132000 @RC00047 L @10,DMCBRTC(,DMCBPTR) 0062 00133000 LTR @10,@10 0062 00134000 BNZ @RF00062 0062 00135000 TM DCBRECL+28(DCBPTR),B'01000000' 0062 00136000 BNO @RF00062 0062 00137000 TM DCBRECL+28(DCBPTR),B'10000000' 0062 00138000 BNZ @RF00062 0062 00139000 * DO; /* QSAM VL RECORD */ 00140000 * 0063 00141000 * /*****************************************************/ 00142000 * /* */ 00143000 * /* IF THE RECORD IS VARIABLE LENGTH THEN IT MUST BE */ 00144000 * /* CONVERTED TO THE QSAM FORMAT BY SHIFTING THE DATA */ 00145000 * /* IN THE BUFFER 4 BYTES TO THE RIGHT AND INSERTING */ 00146000 * /* THE RECORD DESCRIPTOR WORD. */ 00147000 * /* */ 00148000 * /*****************************************************/ 00149000 * 0064 00150000 * IF DMCBORL>F65531C THEN/* IS DATA TOO LONG */ 00151000 L @10,DMCBORL(,DMCBPTR) 0064 00152000 C @10,@CF00576 0064 00153000 BNH @RF00064 0064 00154000 * DO; /* DATA TOO LONG */ 00155000 * DMCBRTC=INVRQ; 0066 00156000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0066 00157000 * DMCBREJ=F8C; 0067 00158000 MVI DMCBREJ(DMCBPTR),X'08' 0067 00159000 * END; /* DATA TOO LONG */ 00160000 * ELSE 0069 00161000 * DO; /* VALID DATA LENGTH */ 00162000 B @RC00064 0069 00163000 @RF00064 DS 0H 0070 00164000 * REM=DMCBORL&XMOD4C;/* REM IS DMCBORL MODULUS 4 */ 00165000 L @10,DMCBORL(,DMCBPTR) 0070 00166000 LR REM,@10 0070 00167000 N REM,@CF00584 0070 00168000 * MOVEPTR=DMCBBUFP+DMCBORL-REM;/* FIRST MOVE LAST 00169000 * REM BYTES */ 00170000 AL @10,DMCBBUFP(,DMCBPTR) 0071 00171000 SLR @10,REM 0071 00172000 LR MOVEPTR,@10 0071 00173000 * IF REM^=F0C THEN 0072 00174000 LTR REM,REM 0072 00175000 BZ @RF00072 0072 00176000 * TOTAIL(F1C:REM)=FROMTAIL(F1C:REM); 0073 00177000 * 0073 00178000 LR @10,REM 0073 00179000 BCTR @10,0 0073 00180000 EX @10,@SM00621 0073 00181000 * /*************************************************/ 00182000 * /* */ 00183000 * /* NOW MOVE FULLWORD CHUNKS OF THE BUFFER */ 00184000 * /* STARTING AT THE END */ 00185000 * /* */ 00186000 * /*************************************************/ 00187000 * 0074 00188000 * DO MOVEPTR=MOVEPTR-F4C TO DMCBBUFP BY-F4C;/* DO 00189000 * MOVE */ 00190000 @RF00072 LR @10,MOVEPTR 0074 00191000 SL @10,@CF00041 0074 00192000 LR MOVEPTR,@10 0074 00193000 B @DE00074 0074 00194000 @DL00074 DS 0H 0075 00195000 * TOWORD=FROMWORD; 0075 00196000 L @10,FROMWORD(,MOVEPTR) 0075 00197000 ST @10,TOWORD(,MOVEPTR) 0075 00198000 * END; /* DO MOVE */ 00199000 * 0076 00200000 AL MOVEPTR,@CF00617 0076 00201000 @DE00074 CL MOVEPTR,DMCBBUFP(,DMCBPTR) 0076 00202000 BNL @DL00074 0076 00203000 * /*************************************************/ 00204000 * /* */ 00205000 * /* NOW BUILD THE RECORD DESCRIPTOR WORD */ 00206000 * /* */ 00207000 * /*************************************************/ 00208000 * 0077 00209000 * DATALEN=DMCBORL+F4C;/* INCLUDE THE RDW IN THE 0077 00210000 * LENGTH */ 00211000 L @10,DMCBBUFP(,DMCBPTR) 0077 00212000 LA @04,4 0077 00213000 AL @04,DMCBORL(,DMCBPTR) 0077 00214000 STH @04,DATALEN(,@10) 0077 00215000 * RECFLGS=F0C; /* INDICATE NON SPANNED RECORDS */ 00216000 SLR @04,@04 0078 00217000 STH @04,RECFLGS(,@10) 0078 00218000 * END; /* VALID DATA LENGTH */ 00219000 * END; /* QSAM VL RECORD */ 00220000 @RC00064 DS 0H 0081 00221000 * IF DMCBRTC=F0C THEN /* TEST FOR VALID REQUEST */ 00222000 @RF00062 L @10,DMCBRTC(,DMCBPTR) 0081 00223000 LTR @10,@10 0081 00224000 BNZ @RF00081 0081 00225000 * DO; /* VALID REQUEST */ 00226000 * 0082 00227000 * /*****************************************************/ 00228000 * /* */ 00229000 * /* SET UP AND DO PUT */ 00230000 * /* */ 00231000 * /*****************************************************/ 00232000 * 0083 00233000 * DCBSYNA=ADDR(PUTERR);/* INSERT SYNAD EXIT ADDRESS */ 00234000 LA @10,PUTERR 0083 00235000 STCM @10,7,DCBSYNA+52(DCBPTR) 0083 00236000 * RFY 0084 00237000 * (GPR01P, 0084 00238000 * GPR00P) RSTD; 0084 00239000 * GPR01P=ADDR(DMCBDCB);/* ADDRESS DCB FOR GET MACRO */ 00240000 LA GPR01P,DMCBDCB(,DMCBPTR) 0085 00241000 * GPR00P=DMCBBUFP; /* ADDRESS BUFFER FOR GET MACRO */ 00242000 L GPR00P,DMCBBUFP(,DMCBPTR) 0086 00243000 * GEN REFS(GPR01P,GPR00P) FLOWS(PUTERR) 0087 00244000 * (PUT (GPR01P),(GPR00P)); 0087 00245000 * 0087 00246000 PUT (GPR01P),(GPR00P) 00247000 * /*****************************************************/ 00248000 * /* */ 00249000 * /* IF A PHYSICAL ERROR OCCURRED THEN THE EXIT ROUTINE*/ 00250000 * /* WOULD HAVE SET DMCBRTC */ 00251000 * /* */ 00252000 * /*****************************************************/ 00253000 * 0088 00254000 * RFY 0088 00255000 * (GPR01P, 0088 00256000 * GPR00P) UNRSTD; 0088 00257000 * END; /* VALID REQUEST */ 00258000 * END; /* QSAM FILE */ 00259000 EJECT 00260000 * 0091 00261000 * /*************************************************************/ 00262000 * /* */ 00263000 * /* VSAM FILE */ 00264000 * /* */ 00265000 * /*************************************************************/ 00266000 * 0091 00267000 * ELSE 0091 00268000 * DO; /* VSAM FILE */ 00269000 * 0091 00270000 B @RC00039 0091 00271000 @RF00039 DS 0H 0092 00272000 * /*********************************************************/ 00273000 * /* */ 00274000 * /* FOR VSAM FILES CALL BLSCSETT TO PERFORM RPL */ 00275000 * /* MODIFICATIONS */ 00276000 * /* */ 00277000 * /*********************************************************/ 00278000 * 0092 00279000 * RFY 0092 00280000 * GPR01P RSTD; 0092 00281000 * GPR01P=DMCBPTR; /* BLSCSETT INTERFACE */ 00282000 LR GPR01P,DMCBPTR 0093 00283000 * CALL BLSCSETT; /* PERFORM SET FUNCTION */ 00284000 L @15,@CV00525 0094 00285000 BALR @14,@15 0094 00286000 * RFY 0095 00287000 * GPR01P UNRSTD; 0095 00288000 * IF DMCBRTC=F0C THEN 0096 00289000 SLR @10,@10 0096 00290000 C @10,DMCBRTC(,DMCBPTR) 0096 00291000 BNE @RF00096 0096 00292000 * DO; /* SET IS OK */ 00293000 * 0097 00294000 * /*****************************************************/ 00295000 * /* */ 00296000 * /* DETERMINE IF ACCESS IS BY RELATIVE RECORD AND IF */ 00297000 * /* SO THEN CALCULATE EFFECTIVE RBA */ 00298000 * /* */ 00299000 * /*****************************************************/ 00300000 * 0098 00301000 * IF DMCBKYD=OFF /* NON KEYED ACCESS */ 00302000 * &DMCBRNO=ON THEN/* RELATIVE RECORD ACCESS */ 00303000 TM DMCBRNO(DMCBPTR),B'01000000' 0098 00304000 BNO @RF00098 0098 00305000 TM DMCBKYD(DMCBPTR),B'10000000' 0098 00306000 BNZ @RF00098 0098 00307000 * DO; /* VSAM RELATIVE RECORD REQUEST */ 00308000 * IF DMCBRRL=F0C THEN/* IS THIS FILE ELIGIBLE FOR 00309000 * RELATIVE RECORD ACCESS. 0100 00310000 * DMCBRRL = 0 INDICATES THAT IT 00311000 * IS NOT */ 00312000 C @10,DMCBRRL(,DMCBPTR) 0100 00313000 BNE @RF00100 0100 00314000 * DO; /* RELATIVE RECORD LENGTH ZERO */ 00315000 * DMCBRTC=INVRQ;/* REJECT THE REQUEST */ 00316000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0102 00317000 * DMCBREJ=F2C;/* INDICATE INELIGIBILITY FOR 0103 00318000 * RELATIVE RECORD ACCESS */ 00319000 MVI DMCBREJ(DMCBPTR),X'02' 0103 00320000 * END; /* RELATIVE RECORD LENGTH ZERO */ 00321000 * IF RELRECNO<=F0C THEN/* RECORD NUMBER OUT OF 0105 00322000 * RANGE */ 00323000 @RF00100 L @10,DMCBKEYP(,DMCBPTR) 0105 00324000 L @10,RELRECNO(,@10) 0105 00325000 LTR @10,@10 0105 00326000 BP @RF00105 0105 00327000 * DO; /* RELATIVE RECORD NUMBER OUT OF 00328000 * RANGE */ 00329000 * DMCBRTC=INVRQ;/* REJECT THE REQUEST */ 00330000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0107 00331000 * DMCBREJ=F4C;/* INDICATE THE REASON */ 00332000 MVI DMCBREJ(DMCBPTR),X'04' 0108 00333000 * END; /* RELATIVE RECORD NUMBER OUT OF 00334000 * RANGE */ 00335000 * 0109 00336000 * /*************************************************/ 00337000 * /* */ 00338000 * /* COMPUTE RELATIVE BYTE ADDRESS OF RECORD */ 00339000 * /* */ 00340000 * /*************************************************/ 00341000 * 0110 00342000 * IF DMCBRTC=F0C THEN/* TEST FOR VALID REQUEST */ 00343000 @RF00105 L @10,DMCBRTC(,DMCBPTR) 0110 00344000 LTR @10,@10 0110 00345000 BNZ @RF00110 0110 00346000 * DMCBRBA=(RELRECNO-1)*DMCBRRL; 0111 00347000 L @10,DMCBKEYP(,DMCBPTR) 0111 00348000 L @01,RELRECNO(,@10) 0111 00349000 BCTR @01,0 0111 00350000 M @00,DMCBRRL(,DMCBPTR) 0111 00351000 ST @01,DMCBRBA(,DMCBPTR) 0111 00352000 * END; /* VSAM RELATIVE RECORD REQUEST */ 00353000 * 0112 00354000 @RF00110 DS 0H 0113 00355000 * /*****************************************************/ 00356000 * /* */ 00357000 * /* PERFORM VSAM PUT REQUEST */ 00358000 * /* */ 00359000 * /*****************************************************/ 00360000 * 0113 00361000 * IF DMCBRTC=F0C THEN /* TEST FOR VALID REQUEST */ 00362000 @RF00098 L @10,DMCBRTC(,DMCBPTR) 0113 00363000 LTR @10,@10 0113 00364000 BNZ @RF00113 0113 00365000 * DO; /* DO PUT */ 00366000 * RFY 0115 00367000 * GPR01P RSTD; 0115 00368000 * GPR01P=ADDR(DMCBRPL); 0116 00369000 LA GPR01P,DMCBRPL(,DMCBPTR) 0116 00370000 * RFY 0117 00371000 * GPR15F RSTD; 0117 00372000 * GEN REFS(GPR01P) SETS(GPR15F)(PUT RPL=(GPR01P)); 00373000 PUT RPL=(GPR01P) 00374000 * DMCBSUBC=GPR15F;/* SAVE THE VSAM RETCODE */ 00375000 ST GPR15F,DMCBSUBC(,DMCBPTR) 0119 00376000 * RFY 0120 00377000 * (GPR01P, 0120 00378000 * GPR15F) UNRSTD; 0120 00379000 * IF DMCBSUBC=F8C THEN/* IF A LOGICAL ERROR */ 00380000 L @10,DMCBSUBC(,DMCBPTR) 0121 00381000 CL @10,@CF00043 0121 00382000 BNE @RF00121 0121 00383000 * CALL VSMLERR; /* THEN ANALYSE THE FDBK FIELD IN 00384000 * THE RPL */ 00385000 BAL @14,VSMLERR 0122 00386000 * ELSE 0123 00387000 * IF DMCBSUBC=F12C THEN/* ELSE IF A PHYSICAL 0123 00388000 * ERROR */ 00389000 B @RC00121 0123 00390000 @RF00121 LA @10,12 0123 00391000 CL @10,DMCBSUBC(,DMCBPTR) 0123 00392000 BNE @RF00123 0123 00393000 * DMCBRTC=PERMER;/* THEN REPORT IN RETURN CODE */ 00394000 ST @10,DMCBRTC(,DMCBPTR) 0124 00395000 * END; /* DO PUT */ 00396000 @RF00123 DS 0H 0125 00397000 @RC00121 DS 0H 0126 00398000 * END; /* SET IS OK */ 00399000 @RF00113 DS 0H 0127 00400000 * END; /* VSAM FILE */ 00401000 @RF00096 DS 0H 0128 00402000 * END; /* DMCB IS OPEN */ 00403000 @RC00039 DS 0H 0129 00404000 * IF DMCBRTC^=F0C THEN /* TEST FOR ERROR */ 00405000 @RC00032 L @10,DMCBRTC(,DMCBPTR) 0129 00406000 LTR @10,@10 0129 00407000 BZ @RF00129 0129 00408000 * DMCBMODN=MODNAME; /* SUPPLY MODULE NAME FOR ERROR 00409000 * MESSAGE */ 00410000 MVC DMCBMODN(8,DMCBPTR),MODNAME 0130 00411000 * RETURN; 0131 00412000 @EL00001 L @13,4(,@13) 0131 00413000 @EF00001 L @00,@SIZDATD 0131 00414000 LR @01,@11 0131 00415000 BLSCFRES R,LV=(0),A=(1) 00416000 @ER00001 LM @14,@12,12(@13) 0131 00417000 BR @14 0131 00418000 *PUTERR: 0132 00419000 * PROCEDURE OPTIONS(NOSAVE); 0132 00420000 * 0132 00421000 B @EL00001 0132 00422000 PUTERR DS 0H 0133 00423000 * /*****************************************************************/ 00424000 * /* */ 00425000 * /* THIS ROUTINE IS ENTERED ON A QSAM SYNAD ERROR */ 00426000 * /* */ 00427000 * /*****************************************************************/ 00428000 * 0133 00429000 * DCL 0133 00430000 * SYNMSG CHAR(128) BASED(GPR01P); 0133 00431000 * RFY 0134 00432000 * GPR01P RSTD; 0134 00433000 * GEN SETS(GPR01P)(SYNADAF ACSMETH=QSAM); 0135 00434000 SYNADAF ACSMETH=QSAM 00435000 * DMCBSYNM=SYNMSG; /* MOVE MESSAGE PRODUCED BY 0136 00436000 * SYNADAF INTO DMCB */ 00437000 MVC DMCBSYNM(128,DMCBPTR),SYNMSG(GPR01P) 0136 00438000 * RFY 0137 00439000 * GPR01P UNRSTD; 0137 00440000 * DMCBRTC=PERMER; /* INDICATE PERMANENT ERROR */ 00441000 MVC DMCBRTC(4,DMCBPTR),@CF00059 0138 00442000 * GEN(SYNADRLS); 0139 00443000 SYNADRLS 00444000 * RETURN; 0140 00445000 @EL00002 DS 0H 0140 00446000 @EF00002 DS 0H 0140 00447000 @ER00002 BR @14 0140 00448000 * END PUTERR; 0141 00449000 *VSMLERR: 0142 00450000 * PROCEDURE; 0142 00451000 * 0142 00452000 VSMLERR STM @14,@12,@SA00003 0142 00453000 * /*****************************************************************/ 00454000 * /* */ 00455000 * /* THIS ROUTINE IS ENTERED IF A VSAM LOGICAL ERROR OCCURS IT */ 00456000 * /* EXTRACTS THE FEEDBACK FIELD FROM THE REQUEST PARAMETER LIST */ 00457000 * /* AND DETERMINES THE PROPER RETURN CODE. CERTAIN LOGICAL ERRORS */ 00458000 * /* WHICH SHOULD NOT OCCUR MAY INDICATE THAT THE DATA MANAGER IS */ 00459000 * /* WORKING IMPROPERLY. IF THESE OCCUR THEN AN ABEND WILL BE */ 00460000 * /* ISSUED. */ 00461000 * /* */ 00462000 * /*****************************************************************/ 00463000 * 0143 00464000 * RFY 0143 00465000 * (GPR02P, 0143 00466000 * GPR03P, 0143 00467000 * GPR08P, 0143 00468000 * GPR15F) RSTD; 0143 00469000 * GPR08P=ADDR(DMCBRPL); /* ADDRESS RPL FOR SHOWCB MACRO */ 00470000 LA GPR08P,DMCBRPL(,DMCBPTR) 0144 00471000 * GPR02P=ADDR(SHWLIST); /* POINT TO SHOW PARAMETER LIST */ 00472000 LA GPR02P,SHWLIST 0145 00473000 * GPR03P=ADDR(DMCBRPLF); /* POINT TO FEEDBACK AREA */ 00474000 LA GPR03P,DMCBRPLF(,DMCBPTR) 0146 00475000 * GEN SETS(SHWLIST,DMCBRPLF,GPR15F) REFS(GPR02P,GPR03P,GPR08P); 0147 00476000 SHOWCB RPL=(GPR08P),AREA=(GPR03P),LENGTH=4, *00477000 FIELDS=(FDBK),MF=(G,(GPR02P)) 00478000 * SUBCODE=GPR15F; 0148 00479000 ST GPR15F,SUBCODE 0148 00480000 * RFY 0149 00481000 * (GPR08P, 0149 00482000 * GPR02P, 0149 00483000 * GPR03P, 0149 00484000 * GPR15F) UNRSTD; 0149 00485000 * IF SUBCODE^=F0C THEN /* IF SHOW WAS UNSUCCESSFUL */ 00486000 L @10,SUBCODE 0150 00487000 LTR @10,@10 0150 00488000 BZ @RF00150 0150 00489000 * DO; /* ABEND(F139C) DUMP */ 00490000 * RESPECIFY 0152 00491000 * (GPR01F) RESTRICTED; 0152 00492000 * GPR01F=F139C; /* COMP CODE IN REG 1 */ 00493000 LA GPR01F,139 0153 00494000 * GPR01F=GPR01F|'80000000'X; /* DUMP/STEP/DUMPOPTS FLAG */ 00495000 O GPR01F,@CF00604 0154 00496000 * SVC(13); /* ISSUE ABEND SVC */ 00497000 SVC 13 0155 00498000 * RESPECIFY 0156 00499000 * (GPR01F) UNRESTRICTED; 0156 00500000 * END; /* ABEND(F139C) DUMP VSAM SHOWCB 00501000 * ERROR */ 00502000 * IF DMCBRPLF=F8C /* DUPLICATE KEY */ 00503000 * |DMCBRPLF=F92C THEN /* UPDATE W/O PRECEDING GET */ 00504000 @RF00150 L @10,DMCBRPLF(,DMCBPTR) 0158 00505000 CL @10,@CF00043 0158 00506000 BE @RT00158 0158 00507000 CL @10,@CF00561 0158 00508000 BNE @RF00158 0158 00509000 @RT00158 DS 0H 0159 00510000 * DMCBRTC=DUPKY; /* INDICATE DUPLICATE RECORD */ 00511000 MVC DMCBRTC(4,DMCBPTR),@CF00043 0159 00512000 * ELSE 0160 00513000 * DO; /* PROBABLE INVALID REQUEST */ 00514000 B @RC00158 0160 00515000 @RF00158 DS 0H 0161 00516000 * DMCBRTC=INVRQ; /* PROBABLY INVALID REQUEST */ 00517000 MVC DMCBRTC(4,DMCBPTR),@CF00041 0161 00518000 * IF DMCBRPLF=F32C THEN /* INVALID RBA */ 00519000 CLC DMCBRPLF(4,DMCBPTR),@CF00411 0162 00520000 BNE @RF00162 0162 00521000 * DMCBREJ=F4C; /* RELATIVE RECORD ERROR */ 00522000 MVI DMCBREJ(DMCBPTR),X'04' 0163 00523000 * ELSE 0164 00524000 * IF DMCBRPLF=F72C THEN /* WRONG ACCESS MODE */ 00525000 B @RC00162 0164 00526000 @RF00162 CLC DMCBRPLF(4,DMCBPTR),@CF00344 0164 00527000 BNE @RF00164 0164 00528000 * DMCBREJ=F2C; /* ACCESS TYPE UNSUPPORTED */ 00529000 MVI DMCBREJ(DMCBPTR),X'02' 0165 00530000 * ELSE 0166 00531000 * IF DMCBRPLF=F88C THEN /* POSITIONING ERROR */ 00532000 B @RC00164 0166 00533000 @RF00164 CLC DMCBRPLF(4,DMCBPTR),@CF00559 0166 00534000 BNE @RF00166 0166 00535000 * DMCBREJ=F5C; 0167 00536000 MVI DMCBREJ(DMCBPTR),X'05' 0167 00537000 * ELSE 0168 00538000 * IF DMCBRPLF=F96C THEN /* UPDATE CHANGED KEY */ 00539000 B @RC00166 0168 00540000 @RF00166 CLC DMCBRPLF(4,DMCBPTR),@CF00498 0168 00541000 BNE @RF00168 0168 00542000 * DMCBREJ=F6C; 0169 00543000 MVI DMCBREJ(DMCBPTR),X'06' 0169 00544000 * ELSE 0170 00545000 * IF DMCBRPLF=F100C THEN/* INVALID LENGTH CHANGE */ 00546000 B @RC00168 0170 00547000 @RF00168 CLC DMCBRPLF(4,DMCBPTR),@CF00564 0170 00548000 BNE @RF00170 0170 00549000 * DMCBREJ=F7C; 0171 00550000 MVI DMCBREJ(DMCBPTR),X'07' 0171 00551000 * ELSE 0172 00552000 * IF DMCBRPLF=F102C THEN/* INVALID RECORD LENGTH */ 00553000 B @RC00170 0172 00554000 @RF00170 CLC DMCBRPLF(4,DMCBPTR),@CF00566 0172 00555000 BNE @RF00172 0172 00556000 * DMCBREJ=F8C; 0173 00557000 MVI DMCBREJ(DMCBPTR),X'08' 0173 00558000 * ELSE 0174 00559000 * IF DMCBRPLF=F112C THEN/* INVALID KEY LENGTH */ 00560000 B @RC00172 0174 00561000 @RF00172 CLC DMCBRPLF(4,DMCBPTR),@CF00568 0174 00562000 BNE @RF00174 0174 00563000 * DMCBREJ=F9C; 0175 00564000 MVI DMCBREJ(DMCBPTR),X'09' 0175 00565000 * ELSE 0176 00566000 * DMCBREJ=F255C;/* SEVERE ERROR EITHER VSAM OR 0176 00567000 * DATA MANAGER ERROR */ 00568000 B @RC00174 0176 00569000 @RF00174 MVI DMCBREJ(DMCBPTR),X'FF' 0176 00570000 * END; /* PROBABLE INVALID REQUEST */ 00571000 * END VSMLERR; 0178 00572000 @EL00003 DS 0H 0178 00573000 @EF00003 DS 0H 0178 00574000 @ER00003 LM @14,@12,@SA00003 0178 00575000 BR @14 0178 00576000 SPACE 3 00577000 * 0179 00578000 * /*****************************************************************/ 00579000 * /* */ 00580000 * /* END OF EXECUTABLE PROCEDURE STATEMENTS */ 00581000 * /* */ 00582000 * /*****************************************************************/ 00583000 * 0179 00584000 * DECLARE /* GENERAL PURPOSE REGISTERS */ 00585000 * GPR01F FIXED(31) REG(1), 0179 00586000 * GPR15F FIXED(31) REG(15), 0179 00587000 * GPR00P PTR(31) REG(0), 0179 00588000 * GPR01P PTR(31) REG(1), 0179 00589000 * GPR02P PTR(31) REG(2), 0179 00590000 * GPR03P PTR(31) REG(3), 0179 00591000 * GPR08P PTR(31) REG(8); 0179 00592000 * DECLARE /* COMMON VARIABLES */ 00593000 * I256C CHAR(256) BASED, 0180 00594000 * I031F FIXED(31) BASED, 0180 00595000 * I031P PTR(31) BASED, 0180 00596000 * I015F FIXED(15) BASED, 0180 00597000 * I015P PTR(15) BASED, 0180 00598000 * I008P PTR(8) BASED, 0180 00599000 * I001C CHAR(1) BASED; 0180 00600000 * DCL 0181 00601000 * 1 DASPATCH LOCAL BDY(DWORD), /* PATCH AREA */ 00602000 * 2 DASPATA(DASPATLN) PTR INIT((DASPATLN)0); 0181 00603000 * END BLSCPUTT 0182 00604000 * 0182 00605000 */* THE FOLLOWING INCLUDE STATEMENTS WERE FOUND IN THIS PROGRAM. */ 00606000 */*%INCLUDE SYSLIB (IHADCBDF) */ 00607000 */*%INCLUDE SYSLIB (IHADCB ) */ 00608000 * 0182 00609000 * ; 0182 00610000 @DATA DS 0H 00611000 @SM00621 MVC TOTAIL(0,MOVEPTR),FROMTAIL(MOVEPTR) 00612000 @DATD DSECT 00613000 DS 0F 00614000 @SA00001 DS 18F 00615000 @SA00003 DS 15F 00616000 BLSCPUTT CSECT 00617000 DS 0F 00618000 @CF00041 DC F'4' 00619000 @CF00043 DC F'8' 00620000 @CF00059 DC F'12' 00621000 @CF00411 DC F'32' 00622000 @CF00344 DC F'72' 00623000 @CF00559 DC F'88' 00624000 @CF00561 DC F'92' 00625000 @CF00498 DC F'96' 00626000 @CF00564 DC F'100' 00627000 @CF00566 DC F'102' 00628000 @CF00568 DC F'112' 00629000 @CF00576 DC F'65531' 00630000 @CF00617 DC F'-4' 00631000 @CF00584 DC XL4'00000003' 00632000 @CF00604 DC XL4'80000000' 00633000 @DATD DSECT 00634000 DS 0D 00635000 MODSTAT DS CL12 00636000 ORG MODSTAT 00637000 MODNAME DS CL8 00638000 SUBCODE DS FL4 00639000 ORG MODSTAT+12 00640000 DS CL4 00641000 SHWLIST DS CL28 00642000 ORG *+1-(*-@DATD)/(*-@DATD) INSURE DSECT DATA 00643000 @ENDDATD EQU * 00644000 BLSCPUTT CSECT 00645000 DS 0F 00646000 @SIZDATD DC AL1(0) 00647000 DC AL3(@ENDDATD-@DATD) 00648000 @CV00525 DC V(BLSCSETT) 00649000 DS 0D 00650000 @CC00586 DC C'BLSCPUTT' 00651000 DASPATCH DS CL80 00652000 ORG DASPATCH 00653000 DASPATA DC 20A(0) 00654000 ORG DASPATCH+80 00655000 @00 EQU 00 EQUATES FOR REGISTERS 0-15 00656000 @01 EQU 01 00657000 @02 EQU 02 00658000 @03 EQU 03 00659000 @04 EQU 04 00660000 @05 EQU 05 00661000 @06 EQU 06 00662000 @07 EQU 07 00663000 @08 EQU 08 00664000 @09 EQU 09 00665000 @10 EQU 10 00666000 @11 EQU 11 00667000 @12 EQU 12 00668000 @13 EQU 13 00669000 @14 EQU 14 00670000 @15 EQU 15 00671000 MOVEPTR EQU @02 00672000 REM EQU @04 00673000 DMCBPTR EQU @05 00674000 DCBPTR EQU @03 00675000 GPR01P EQU @01 00676000 GPR00P EQU @00 00677000 GPR15F EQU @15 00678000 GPR02P EQU @02 00679000 GPR03P EQU @03 00680000 GPR08P EQU @08 00681000 GPR01F EQU @01 00682000 IHADCB EQU 0 00683000 IHADCS00 EQU 0 00684000 DCBFDAD EQU IHADCS00+5 00685000 IHADCS01 EQU 0 00686000 DCBDVTBL EQU IHADCS01 00687000 IHADCS02 EQU 0 00688000 IHADCS04 EQU 0 00689000 DCBPRBYT EQU IHADCS04+3 00690000 IHADCS11 EQU 0 00691000 DCBRELB EQU IHADCS11 00692000 DCBREL EQU DCBRELB+1 00693000 DCBBUFCB EQU IHADCS11+4 00694000 DCBDSORG EQU IHADCS11+10 00695000 DCBDSRG1 EQU DCBDSORG 00696000 DCBDSRG2 EQU DCBDSORG+1 00697000 DCBIOBAD EQU IHADCS11+12 00698000 DCBODEB EQU DCBIOBAD 00699000 DCBLNP EQU DCBODEB 00700000 DCBQSLM EQU DCBLNP 00701000 DCBIOBAA EQU DCBODEB+1 00702000 IHADCS50 EQU 0 00703000 DCBSVCXL EQU IHADCS50 00704000 DCBEODAD EQU IHADCS50+4 00705000 DCBBFALN EQU DCBEODAD 00706000 DCBHIARC EQU DCBBFALN 00707000 DCBBFTEK EQU DCBHIARC 00708000 DCBBFT EQU DCBBFTEK 00709000 DCBEXLST EQU IHADCS50+8 00710000 DCBRECFM EQU DCBEXLST 00711000 DCBRECLA EQU DCBRECFM 00712000 DCBRECL EQU DCBRECLA 00713000 IHADCS24 EQU 0 00714000 DCBOFLGS EQU IHADCS24+8 00715000 DCBOFLWR EQU DCBOFLGS 00716000 DCBIFLG EQU IHADCS24+9 00717000 DCBIBPCT EQU DCBIFLG 00718000 DCBMACR EQU IHADCS24+10 00719000 DCBMACR1 EQU DCBMACR 00720000 DCBMRFE EQU DCBMACR1 00721000 DCBMRGET EQU DCBMRFE 00722000 DCBMRAPG EQU DCBMACR1 00723000 DCBMRRD EQU DCBMRAPG 00724000 DCBMRCI EQU DCBMACR1 00725000 DCBMRMVG EQU DCBMRCI 00726000 DCBMRLCG EQU DCBMACR1 00727000 DCBMRABC EQU DCBMACR1 00728000 DCBMRPT1 EQU DCBMRABC 00729000 DCBMRSBG EQU DCBMRPT1 00730000 DCBMRCRL EQU DCBMACR1 00731000 DCBMRCHK EQU DCBMRCRL 00732000 DCBMRRDX EQU DCBMRCHK 00733000 DCBMRDMG EQU DCBMACR1 00734000 DCBMACR2 EQU DCBMACR+1 00735000 DCBMRPUT EQU DCBMACR2 00736000 DCBMRWRT EQU DCBMACR2 00737000 DCBMRMVP EQU DCBMACR2 00738000 DCBMR5WD EQU DCBMACR2 00739000 DCBMRLDM EQU DCBMR5WD 00740000 DCBMRLCP EQU DCBMRLDM 00741000 DCBMR4WD EQU DCBMACR2 00742000 DCBMRPT2 EQU DCBMR4WD 00743000 DCBMRTMD EQU DCBMRPT2 00744000 DCBMR3WD EQU DCBMACR2 00745000 DCBMRCTL EQU DCBMR3WD 00746000 DCBMRSTK EQU DCBMRCTL 00747000 DCBMR1WD EQU DCBMACR2 00748000 DCBMRSWA EQU DCBMR1WD 00749000 DCBMRDMD EQU DCBMRSWA 00750000 IHADCS25 EQU 0 00751000 DCBMACRF EQU IHADCS25+2 00752000 DCBMACF1 EQU DCBMACRF 00753000 DCBMFFE EQU DCBMACF1 00754000 DCBMFGET EQU DCBMFFE 00755000 DCBMFAPG EQU DCBMACF1 00756000 DCBMFRD EQU DCBMFAPG 00757000 DCBMFCI EQU DCBMACF1 00758000 DCBMFMVG EQU DCBMFCI 00759000 DCBMFLCG EQU DCBMACF1 00760000 DCBMFABC EQU DCBMACF1 00761000 DCBMFPT1 EQU DCBMFABC 00762000 DCBMFSBG EQU DCBMFPT1 00763000 DCBMFCRL EQU DCBMACF1 00764000 DCBMFCHK EQU DCBMFCRL 00765000 DCBMFDMG EQU DCBMACF1 00766000 DCBMACF2 EQU DCBMACRF+1 00767000 DCBMFPUT EQU DCBMACF2 00768000 DCBMFWRT EQU DCBMACF2 00769000 DCBMFMVP EQU DCBMACF2 00770000 DCBMF5WD EQU DCBMACF2 00771000 DCBMFLDM EQU DCBMF5WD 00772000 DCBMFLCP EQU DCBMFLDM 00773000 DCBMF4WD EQU DCBMACF2 00774000 DCBMFPT2 EQU DCBMF4WD 00775000 DCBMFTMD EQU DCBMFPT2 00776000 DCBMF3WD EQU DCBMACF2 00777000 DCBMFCTL EQU DCBMF3WD 00778000 DCBMFSTK EQU DCBMFCTL 00779000 DCBMF1WD EQU DCBMACF2 00780000 DCBMFSWA EQU DCBMF1WD 00781000 DCBMFDMD EQU DCBMFSWA 00782000 DCBDEBAD EQU IHADCS25+4 00783000 DCBIFLGS EQU DCBDEBAD 00784000 DCBIFPCT EQU DCBIFLGS 00785000 IHADCS27 EQU 0 00786000 DCBGET EQU IHADCS27 00787000 DCBPUT EQU DCBGET 00788000 DCBGETA EQU DCBPUT+1 00789000 IHADCS36 EQU 0 00790000 DCBGERR EQU IHADCS36 00791000 DCBPERR EQU DCBGERR 00792000 DCBCHECK EQU DCBPERR 00793000 DCBOPTCD EQU DCBCHECK 00794000 DCBOPTH EQU DCBOPTCD 00795000 DCBOPTO EQU DCBOPTH 00796000 DCBOPTZ EQU DCBOPTCD 00797000 DCBGERRA EQU DCBCHECK+1 00798000 DCBPERRA EQU DCBGERRA 00799000 DCBSYNAD EQU IHADCS36+4 00800000 DCBSYNA EQU DCBSYNAD+1 00801000 DCBCIND1 EQU IHADCS36+8 00802000 DCBCIND2 EQU IHADCS36+9 00803000 DCBIOBA EQU IHADCS36+16 00804000 DCBCICB EQU DCBIOBA 00805000 IHADCS52 EQU 0 00806000 DCBDIRCT EQU IHADCS52 00807000 DCBQSWS EQU DCBDIRCT 00808000 DCBUSASI EQU DCBQSWS 00809000 DCBQADFS EQU DCBUSASI 00810000 DCBBUFOF EQU DCBDIRCT+1 00811000 IHADCS37 EQU 0 00812000 DCBFLAG1 EQU IHADCS37 00813000 IHADCS40 EQU 0 00814000 DCBEOBAD EQU IHADCS40 00815000 DCBCCCW EQU IHADCS40+4 00816000 DCBRECAD EQU DCBCCCW 00817000 DCBRECBT EQU DCBRECAD 00818000 DCBRCREL EQU DCBRECBT 00819000 DCBLRECL EQU IHADCS40+10 00820000 DCBCNTRL EQU IHADCS40+12 00821000 DCBEROPT EQU DCBCNTRL 00822000 DMCB EQU 0 00823000 DMCBRTC EQU DMCB+12 00824000 DMCBFTY EQU DMCB+20 00825000 DMCBVSF EQU DMCBFTY 00826000 DMCBOPN EQU DMCB+21 00827000 DMCBSOUT EQU DMCBOPN 00828000 DMCBRMOD EQU DMCB+23 00829000 DMCBOUT EQU DMCBRMOD 00830000 DMCBOPTS EQU DMCB+24 00831000 DMCBKYD EQU DMCBOPTS 00832000 DMCBGKY EQU DMCBOPTS 00833000 DMCBRNO EQU DMCBGKY 00834000 DMCBMFLG EQU DMCB+28 00835000 DMCBFMOD EQU DMCBMFLG 00836000 DMCBREJ EQU DMCB+29 00837000 DMCBBUFP EQU DMCB+32 00838000 DMCBBLEN EQU DMCB+36 00839000 DMCBORL EQU DMCB+40 00840000 DMCBKEYP EQU DMCB+44 00841000 DMCBRBA EQU DMCB+56 00842000 DMCBRRL EQU DMCB+60 00843000 DMCBFRE EQU DMCB+88 00844000 DMCBEOB EQU DMCB+92 00845000 DMCBACBE EQU DMCB+124 00846000 DMCBRPLF EQU DMCB+128 00847000 DMCBSYNM EQU DMCB+132 00848000 DMCBSPEC EQU DMCB+380 00849000 DMCBSUBC EQU DMCB+404 00850000 DMCBAMS EQU DMCB+416 00851000 DMCBAUDT EQU DMCB+568 00852000 DMCBLSCP EQU DMCBAUDT+16 00853000 DMCBMODN EQU DMCB+632 00854000 RDW EQU 0 00855000 DATALEN EQU RDW 00856000 RECFLGS EQU RDW+2 00857000 RELRECNO EQU 0 00858000 MOVSTRUC EQU 0 00859000 FROMWORD EQU MOVSTRUC 00860000 FROMTAIL EQU FROMWORD 00861000 TOWORD EQU MOVSTRUC+4 00862000 TOTAIL EQU TOWORD 00863000 SYNMSG EQU 0 00864000 DMCBRQC EQU 0 00865000 I001C EQU 0 00866000 I008P EQU 0 00867000 I015F EQU 0 00868000 I015P EQU 0 00869000 I031F EQU 0 00870000 I031P EQU 0 00871000 I256C EQU 0 00872000 DMCBVSM EQU DMCBAMS 00873000 DMCBRPL EQU DMCBVSM 00874000 DMCBQSM EQU DMCBAMS 00875000 DMCBDCB EQU DMCBQSM 00876000 AGO .@UNREFD START UNREFERENCED COMPONENTS 00877000 DMCBRES7 EQU DMCBQSM+96 00878000 DMCBACB EQU DMCBVSM+76 00879000 DMCBWRK EQU DMCB+648 00880000 DMCBRES8 EQU DMCB+640 00881000 DMCBCARY EQU DMCBAUDT+20 00882000 DMCBCLC EQU DMCBAUDT+12 00883000 DMCBOPC EQU DMCBAUDT+8 00884000 DMCBFRC EQU DMCBAUDT+4 00885000 DMCBALC EQU DMCBAUDT 00886000 DMCBFR EQU DMCB+412 00887000 DMCBRES6 EQU DMCB+410 00888000 DMCBIRSC EQU DMCB+408 00889000 DMCBDRBP EQU DMCB+400 00890000 DMCBRSZM EQU DMCB+398 00891000 DMCBRSZA EQU DMCB+396 00892000 DMCBCISZ EQU DMCB+394 00893000 DMCBDCBL EQU DMCB+392 00894000 DMCBDCLR EQU DMCB+390 00895000 DMCBDCFM EQU DMCB+389 00896000 DMCBRES5 EQU DMCB+388 00897000 DMCBLBRT EQU DMCB+386 00898000 DMCBLBSQ EQU DMCB+384 00899000 DMCBLBPS EQU DMCB+383 00900000 DMCBLBTY EQU DMCB+382 00901000 DMCBRES4 EQU DMCB+381 00902000 DMCBSPRS EQU DMCBSPEC 00903000 DMCBSPRN EQU DMCBSPEC 00904000 DMCBSPCT EQU DMCBSPEC 00905000 DMCBSPRL EQU DMCBSPEC 00906000 DMCBSPSE EQU DMCB+376 00907000 DMCBSPPR EQU DMCB+372 00908000 DMCBSPTY EQU DMCB+369 00909000 DMCBODIS EQU DMCB+368 00910000 DMCBDISP EQU DMCB+367 00911000 DMCBSTAT EQU DMCB+366 00912000 DMCBRES3 EQU DMCB+364 00913000 DMCBMEMB EQU DMCB+356 00914000 DMCBMODL EQU DMCB+348 00915000 DMCBRES9 EQU DMCB+340 00916000 DMCBPID EQU DMCB+332 00917000 DMCBTYPE EQU DMCB+328 00918000 DMCBDSN EQU DMCB+284 00919000 DMCBUNIT EQU DMCB+276 00920000 DMCBDSOR EQU DMCB+274 00921000 DMCBVOL EQU DMCB+268 00922000 DMCBDDNM EQU DMCB+260 00923000 DMCBDCBE EQU DMCBACBE 00924000 DMCBARC EQU DMCB+120 00925000 DMCBCPC EQU DMCB+116 00926000 DMCBRET EQU DMCB+112 00927000 DMCBSTL EQU DMCB+96 00928000 DMCBRES2 EQU DMCB+85 00929000 DMCBSPID EQU DMCB+84 00930000 DMCBRESC EQU DMCB+80 00931000 DMCBZZ1P EQU DMCB+76 00932000 DMCBMSGS EQU DMCB+72 00933000 DMCBMSG0 EQU DMCB+68 00934000 DMCBRI EQU DMCB+64 00935000 DMCBMSG EQU DMCB+52 00936000 DMCBKEYL EQU DMCB+48 00937000 DMCBKPC EQU DMCBKEYP 00938000 DMCBBFPC EQU DMCBBUFP 00939000 DMCBRES1 EQU DMCB+31 00940000 DMCBACCM EQU DMCB+30 00941000 DMCBRESB EQU DMCBMFLG 00942000 DMCBLOPT EQU DMCB+27 00943000 DMCBLRM EQU DMCB+26 00944000 DMCBLRQ EQU DMCB+25 00945000 DMCBOPRS EQU DMCBOPTS 00946000 DMCBLRD EQU DMCBOPTS 00947000 DMCBBWD EQU DMCBOPTS 00948000 DMCBUPD EQU DMCBOPTS 00949000 DMCBAPX EQU DMCBOPTS 00950000 DMCBRMRS EQU DMCBRMOD 00951000 DMCBRM5 EQU DMCBRMOD 00952000 DMCBRM6 EQU DMCBRMOD 00953000 DMCBTMP EQU DMCBOUT 00954000 DMCBRQST EQU DMCB+22 00955000 DMCBRESA EQU DMCBOPN 00956000 DMCBSIN EQU DMCBOPN 00957000 DMCBKSF EQU DMCBFTY 00958000 DMCBFTRS EQU DMCBFTY 00959000 DMCBSHF EQU DMCBFTY 00960000 DMCBIRL EQU DMCB+16 00961000 DMCBTVP EQU DMCB+8 00962000 DMCBNEXT EQU DMCB+4 00963000 DMCBID EQU DMCB 00964000 DCBEOB EQU IHADCS40+20 00965000 DCBPRECL EQU IHADCS40+18 00966000 @NM00029 EQU IHADCS40+16 00967000 DCBCNTRA EQU DCBCNTRL+1 00968000 @NM00028 EQU DCBEROPT 00969000 DCBERABE EQU DCBEROPT 00970000 DCBERSKP EQU DCBEROPT 00971000 DCBERACC EQU DCBEROPT 00972000 @NM00027 EQU IHADCS40+9 00973000 @NM00026 EQU IHADCS40+8 00974000 DCBRECA EQU DCBRECAD+1 00975000 @NM00025 EQU DCBRECBT 00976000 DCBRCFGT EQU DCBRCREL 00977000 DCBRCTRU EQU DCBRCREL 00978000 DCBLCCW EQU DCBEOBAD 00979000 @NM00024 EQU DCBFLAG1 00980000 DCBSTFLS EQU DCBFLAG1 00981000 DCBSTQCK EQU DCBFLAG1 00982000 DCBDIRCQ EQU DCBBUFOF 00983000 DCBQSTRU EQU DCBUSASI 00984000 @NM00023 EQU DCBUSASI 00985000 DCBQADF3 EQU DCBQADFS 00986000 DCBQADF2 EQU DCBQADFS 00987000 DCBQADF1 EQU DCBQADFS 00988000 DCBBLBP EQU DCBUSASI 00989000 @NM00022 EQU DCBUSASI 00990000 DCBCICBA EQU DCBCICB+1 00991000 @NM00021 EQU DCBCICB 00992000 DCBOFFSW EQU IHADCS36+15 00993000 DCBOFFSR EQU IHADCS36+14 00994000 DCBWCPL EQU IHADCS36+13 00995000 DCBWCPO EQU IHADCS36+12 00996000 DCBBLKSI EQU IHADCS36+10 00997000 DCBCNQSM EQU DCBCIND2 00998000 DCBCNFEO EQU DCBCIND2 00999000 DCBCNCHS EQU DCBCIND2 01000000 DCBCNBFP EQU DCBCIND2 01001000 DCBCNIOE EQU DCBCIND2 01002000 DCBCNCLO EQU DCBCIND2 01003000 DCBCNWRO EQU DCBCIND2 01004000 DCBCNSTO EQU DCBCIND2 01005000 DCBCNEXB EQU DCBCIND1 01006000 @NM00020 EQU DCBCIND1 01007000 DCBCNBRM EQU DCBCIND1 01008000 @NM00019 EQU DCBCIND1 01009000 DCBCNEVA EQU DCBCIND1 01010000 DCBCNEVB EQU DCBCIND1 01011000 DCBCNSRD EQU DCBCIND1 01012000 DCBCNTOV EQU DCBCIND1 01013000 DCBIOBL EQU DCBSYNAD 01014000 DCBCHCKA EQU DCBPERRA 01015000 DCBOPTJ EQU DCBOPTCD 01016000 DCBOPTT EQU DCBOPTCD 01017000 DCBSRCHD EQU DCBOPTZ 01018000 DCBOPTQ EQU DCBOPTCD 01019000 DCBBCKPT EQU DCBOPTO 01020000 DCBOPTC EQU DCBOPTCD 01021000 DCBOPTU EQU DCBOPTCD 01022000 DCBOPTW EQU DCBOPTCD 01023000 DCBPUTA EQU DCBGETA 01024000 @NM00018 EQU DCBPUT 01025000 DCBDEBA EQU DCBDEBAD+1 01026000 @NM00017 EQU DCBIFLGS 01027000 DCBIFIOE EQU DCBIFLGS 01028000 DCBCH12 EQU DCBIFPCT 01029000 DCBCH9 EQU DCBIFPCT 01030000 DCBIFEC EQU DCBIFLGS 01031000 DCBMFSTI EQU DCBMFDMD 01032000 DCBMFAWR EQU DCBMFSTK 01033000 DCBMFUIP EQU DCBMFTMD 01034000 DCBMFIDW EQU DCBMFLCP 01035000 DCBMFWRK EQU DCBMFMVP 01036000 DCBMFRDQ EQU DCBMFWRT 01037000 DCBMFGTQ EQU DCBMFPUT 01038000 DCBMFSTL EQU DCBMACF2 01039000 DCBMFCK EQU DCBMFDMG 01040000 DCBMFRDX EQU DCBMFCHK 01041000 DCBMFDBF EQU DCBMFSBG 01042000 DCBMFRDI EQU DCBMFLCG 01043000 DCBMFRDK EQU DCBMFMVG 01044000 DCBMFWRQ EQU DCBMFRD 01045000 DCBMFPTQ EQU DCBMFGET 01046000 DCBMFECP EQU DCBMACF1 01047000 DCBTIOT EQU IHADCS25 01048000 DCBMRSTI EQU DCBMRDMD 01049000 DCBMRAWR EQU DCBMRSTK 01050000 DCBMRUIP EQU DCBMRTMD 01051000 DCBMRIDW EQU DCBMRLCP 01052000 DCBMRWRK EQU DCBMRMVP 01053000 DCBMRRDQ EQU DCBMRWRT 01054000 DCBMRGTQ EQU DCBMRPUT 01055000 DCBMRSTL EQU DCBMACR2 01056000 DCBMRCK EQU DCBMRDMG 01057000 DCBPGFXA EQU DCBMRRDX 01058000 DCBMRDBF EQU DCBMRSBG 01059000 DCBMRRDI EQU DCBMRLCG 01060000 DCBMRRDK EQU DCBMRMVG 01061000 DCBMRWRQ EQU DCBMRRD 01062000 DCBMRPTQ EQU DCBMRGET 01063000 DCBMRECP EQU DCBMACR1 01064000 @NM00016 EQU DCBIFLG 01065000 DCBIBIOE EQU DCBIFLG 01066000 DCBICH12 EQU DCBIBPCT 01067000 DCBICH9 EQU DCBIBPCT 01068000 DCBIBEC EQU DCBIFLG 01069000 DCBOFIOF EQU DCBOFLGS 01070000 DCBOFUEX EQU DCBOFLGS 01071000 DCBOFTM EQU DCBOFLGS 01072000 DCBOFPPC EQU DCBOFLGS 01073000 DCBOFOPN EQU DCBOFLGS 01074000 DCBOFEOV EQU DCBOFLGS 01075000 DCBOFLRB EQU DCBOFLGS 01076000 DCBOFIOD EQU DCBOFLWR 01077000 DCBDDNAM EQU IHADCS24 01078000 DCBEXLSA EQU DCBEXLST+1 01079000 DCBRECKL EQU DCBRECFM 01080000 DCBRECCC EQU DCBRECFM 01081000 DCBRECSB EQU DCBRECFM 01082000 DCBRECBR EQU DCBRECFM 01083000 DCBRECTO EQU DCBRECLA 01084000 DCBEODA EQU DCBEODAD+1 01085000 DCBBFA EQU DCBBFTEK 01086000 DCBH0 EQU DCBBFTEK 01087000 DCBBFTKD EQU DCBBFTEK 01088000 DCBBFTE EQU DCBBFT 01089000 DCBBFTKR EQU DCBBFT 01090000 DCBBFTS EQU DCBBFT 01091000 DCBH1 EQU DCBBFTEK 01092000 DCBSVCXA EQU DCBSVCXL+1 01093000 @NM00015 EQU DCBSVCXL 01094000 DCBODEBA EQU DCBIOBAA 01095000 @NM00014 EQU DCBQSLM 01096000 DCBUPDBT EQU DCBQSLM 01097000 DCBUPDCM EQU DCBQSLM 01098000 DCB1DVDS EQU DCBQSLM 01099000 @NM00013 EQU DCBDSRG2 01100000 DCBDSGTR EQU DCBDSRG2 01101000 DCBACBM EQU DCBDSRG2 01102000 @NM00012 EQU DCBDSRG2 01103000 DCBDSGTQ EQU DCBDSRG2 01104000 DCBDSGTX EQU DCBDSRG2 01105000 DCBDSGGS EQU DCBDSRG2 01106000 DCBDSGU EQU DCBDSRG1 01107000 DCBDSGPO EQU DCBDSRG1 01108000 @NM00011 EQU DCBDSRG1 01109000 @NM00010 EQU DCBDSRG1 01110000 DCBDSGCX EQU DCBDSRG1 01111000 DCBDSGDA EQU DCBDSRG1 01112000 DCBDSGPS EQU DCBDSRG1 01113000 DCBDSGIS EQU DCBDSRG1 01114000 DCBBUFL EQU IHADCS11+8 01115000 DCBBUFCA EQU DCBBUFCB+1 01116000 DCBBUFNO EQU DCBBUFCB 01117000 DCBDEVT EQU DCBREL 01118000 DCBKEYLE EQU DCBRELB 01119000 DCBTRCID EQU DCBPRBYT 01120000 @NM00009 EQU DCBPRBYT 01121000 DCBPRTOV EQU IHADCS04+2 01122000 @NM00008 EQU IHADCS04+1 01123000 DCBPRTSP EQU IHADCS04 01124000 @NM00007 EQU IHADCS02+19 01125000 DCBDEN EQU IHADCS02+18 01126000 @NM00006 EQU IHADCS02+17 01127000 DCBTRTCH EQU IHADCS02+16 01128000 DCBBLKCT EQU IHADCS02+12 01129000 @NM00005 EQU IHADCS02 01130000 DCBTRBAL EQU IHADCS01+6 01131000 @NM00004 EQU IHADCS01+5 01132000 @NM00003 EQU IHADCS01+4 01133000 DCBDVTBA EQU DCBDVTBL+1 01134000 @NM00002 EQU DCBDVTBL 01135000 DCBKEYCN EQU IHADCS00+4 01136000 DCBRELAD EQU IHADCS00 01137000 @NM00001 EQU IHADCB 01138000 .@UNREFD ANOP END UNREFERENCED COMPONENTS 01139000 @RF00049 EQU @RC00047 01140000 @RF00081 EQU @RC00039 01141000 @RF00129 EQU @EL00001 01142000 @RC00158 EQU @EL00003 01143000 @RC00174 EQU @EL00003 01144000 @RC00172 EQU @EL00003 01145000 @RC00170 EQU @EL00003 01146000 @RC00168 EQU @EL00003 01147000 @RC00166 EQU @EL00003 01148000 @RC00164 EQU @EL00003 01149000 @RC00162 EQU @EL00003 01150000 @ENDDATA EQU * 01151000 END BLSCPUTT,(C'PLS1939',0701,78062) 01152000