TITLE 'IGC0012F - MSSC SVC *00001000 ' 00002000 * /* DATE MACRO */ 00003000 MACRO 00004000 DATEM 00005000 LCLC &FILL 00006000 &FILL SETC 'CL8'.''''.'&SYSDATE'.'''' 00007000 DC &FILL 00008000 MEND 00009000 IGC0012F CSECT , 0002 00010000 @PROLOG BALR @08,0 0002 00011000 @PSTART LA @11,4095(,@08) 0002 00012000 LA @12,4095(,@11) 0002 00013000 USING @PSTART,@08 0002 00014000 USING @PSTART+4095,@11 0002 00015000 USING @PSTART+8190,@12 0002 00016000 LR @09,@01 0002 00017000 L @00,@SIZDATD 0002 00018000 GETMAIN R,LV=(0) 00019000 LR @10,@01 0002 00020000 USING @DATD,@10 0002 00021000 LR @01,@09 0002 00022000 ST @13,@SA00001+4 0002 00023000 LR @13,@10 0002 00024000 IICBACRE DS 0H 0009 00025000 IICBMCRT DS 0H 0012 00026000 IICBDEFV DS 0H 0014 00027000 IICBMODC DS 0H 0016 00028000 IICBCOVV DS 0H 0018 00029000 IICBCOVC DS 0H 0020 00030000 IICBCOTB DS 0H 0021 00031000 IICBVARF DS 0H 0023 00032000 IICBVARN DS 0H 0025 00033000 IICBMNT DS 0H 0026 00034000 IICBMNTD DS 0H 0029 00035000 IICBPAIP DS 0H 0031 00036000 IICBPAIR DS 0H 0033 00037000 IICBASDA DS 0H 0034 00038000 IICBTUNE DS 0H 0036 00039000 IICBSUSP DS 0H 0038 00040000 IICBTRAC DS 0H 0040 00041000 IICBQUER DS 0H 0042 00042000 IICBNULL DS 0H 0048 00043000 * 0180 00044000 * /*@Y30LB00*/ 00045000 B SSCSVC BR AROUND EYE CATCHER @Y30LB00 00046000 DC C'IGC0012F' EYE CATCHER @Y30LB00 00047000 DATEM 00048000 SSCSVC EQU * END OF EYE CATCHER @Y30LB00 00049000 ST R14,TWELVE(R13) SAVE REGISTER 14 @Y30LB00 00050000 * /*****************************************************************/ 00051000 * /* */ 00052000 * /* SAVE THE INPUT BLOCK POINTER AND BASE REGS @Y30LB00*/ 00053000 * /* */ 00054000 * /*****************************************************************/ 00055000 * 0181 00056000 * R6=R1; /* SAVE ADDR OF INPUT BLK 0181 00057000 * @Y30LB00*/ 00058000 LR R6,R1 0181 00059000 * SAVBAS08=R8; /* @ZA27588*/ 00060000 ST R8,SAVBAS08 0182 00061000 * SAVBAS11=R11; /* @Y30LB00*/ 00062000 ST R11,SAVBAS11 0183 00063000 * SAVBAS12=R12; /* @Y30LB00*/ 00064000 * 0184 00065000 ST R12,SAVBAS12 0184 00066000 * /*****************************************************************/ 00067000 * /* */ 00068000 * /* **************************************************** @Y30LB00*/ 00069000 * /* @Y30LB00*/ 00070000 * /* ZERO THE REASON CODE TO THE USER @Y30LB00*/ 00071000 * /* @Y30LB00*/ 00072000 * /* **************************************************** @Y30LB00*/ 00073000 * /* */ 00074000 * /*****************************************************************/ 00075000 * 0185 00076000 * RETNCODE=ZERO; /* @Y30LB00*/ 00077000 * 0185 00078000 SLR @09,@09 0185 00079000 ST @09,RETNCODE 0185 00080000 * /*****************************************************************/ 00081000 * /* */ 00082000 * /* ZERO THE INTERNAL SWITCHES AND STORAGE POINTERS @Y30LB00*/ 00083000 * /* OF THE SVC @Y30LB00*/ 00084000 * /* */ 00085000 * /*****************************************************************/ 00086000 * 0186 00087000 * TCBPT=R4; /* @ZA27588*/ 00088000 ST R4,TCBPT 0186 00089000 * ASCBPTR=R7; /* @ZA27588*/ 00090000 ST R7,ASCBPTR 0187 00091000 * SWITCHES=ZERO; /* @Y30LB00*/ 00092000 ST @09,SWITCHES 0188 00093000 * IODATAPT=ZERO; /* @Y30LB00*/ 00094000 ST @09,IODATAPT 0189 00095000 * NEWELPTR=ZERO; /* @Y30LB00*/ 00096000 ST @09,NEWELPTR 0190 00097000 * INPUTREQ=ZERO; /* @Y30LB00*/ 00098000 ST @09,INPUTREQ 0191 00099000 * SSCDATAP=ZERO; /* @ZA11664*/ 00100000 ST @09,SSCDATAP 0192 00101000 * SAVETCBP=TCBPT; /* @Y30LB00*/ 00102000 L @07,TCBPT 0193 00103000 ST @07,SAVETCBP 0193 00104000 * SAVASCBP=ASCBPTR; /* @Y30LB00*/ 00105000 L @07,ASCBPTR 0194 00106000 ST @07,SAVASCBP 0194 00107000 * ICBPTR=CVTICB; /* SET SSCB POINTER @G24LB01*/ 00108000 L @07,CVTPTR 0195 00109000 L @07,CVTEXT2(,@07) 0195 00110000 L @07,CVTICB(,@07) 0195 00111000 ST @07,ICBPTR 0195 00112000 * RFY 0196 00113000 * ICB2SSCB BASED(ICBPTR); /* SET BASE POINTER @G24LB01*/ 00114000 */* DETERMINE IF THE MSC IS AVAILABLE FOR USE. @Y30LB00 00115000 * IF THE POINTER IN THE CVT TO ICB CONTROL @Y30LB00 00116000 * BLOCK IS ZERO, THE MSC IS NOT AVAILABLE - SET @Y30LB00 00117000 * REASON CODE TO INDICATE MSC NOT AVAILABLE. IF THE @Y30LB00 00118000 * CVT POINTER IS NOT ZERO, INITIALIZE THE SVC INTERNAL @Y30LB00 00119000 * POINTER TO THE ICB CONTROL BLOCK @Y30LB00*/ 00120000 * 0197 00121000 * IF CVTICB=ZERO THEN /* IS ADDR OF ICB CONTROL 0197 00122000 * @Y30LB00 00123000 * BLOCK IN CVT ZERO @Y30LB00*/ 00124000 CR @07,@09 0197 00125000 BNE @RF00197 0197 00126000 * DO; /* SET ERROR CODE @Y30LB00*/ 00127000 * VVICERR=B1ONE; /* @Y30LB00*/ 00128000 OI VVICERR,B'00010000' 0199 00129000 * IF REQCODE=ACQUIRE|REQCODE=RELINQ THEN/* @Y30LB00 00130000 * IS ACQUIRE OR REL @Y30LB00 00131000 * REQUEST @Y30LB00*/ 00132000 CLI REQCODE(R6),2 0200 00133000 BE @RT00200 0200 00134000 CLI REQCODE(R6),4 0200 00135000 BNE @RF00200 0200 00136000 @RT00200 DS 0H 0201 00137000 * DO; /* GO SET COMPLETION CODE 0201 00138000 * @Y30LB00 00139000 * IN EACH REQUEST @Y30LB00*/ 00140000 * ARERRCD=CODE373; /* @Y30LB00*/ 00141000 MVC ARERRCD(4),@CF00788 0202 00142000 * CALL ARERR2; /* GO TO ROUTINE WHICH @Y30LB00 00143000 * INSERTS COMPLETION CODE 0203 00144000 * @Y30LB00 00145000 * IN EACH REQUEST OF @Y30LB00 00146000 * CHAIN @Y30LB00*/ 00147000 BAL @14,ARERR2 0203 00148000 * END; /* @Y30LB00*/ 00149000 * ELSE /* NO ACQ/REL REQUEST @Y30LB00*/ 00150000 * RETNCODE=CODE373; /* SET REASON CODE @Y30LB00*/ 00151000 B @RC00200 0205 00152000 @RF00200 MVC RETNCODE(4),@CF00788 0205 00153000 * END; /* @Y30LB00*/ 00154000 @RC00200 DS 0H 0207 00155000 * IF RETNCODE=ZERO THEN /* HAS ERROR BEEN DETECTED 0207 00156000 * @Y30LB00*/ 00157000 @RF00197 L @09,RETNCODE 0207 00158000 LTR @09,@09 0207 00159000 BNZ @RF00207 0207 00160000 * DO; /* 1ST CODE CHECK PROCESS 0208 00161000 * @ZM31012*/ 00162000 * 0208 00163000 * /*************************************************************/ 00164000 * /* */ 00165000 * /* **************************************************** */ 00166000 * /* @Y30LB00*/ 00167000 * /* @Y30LB00*/ 00168000 * /* ISSUE ESTAE MACRO FOR RECOVERY IN THE MSSC SVC @Y30LB00*/ 00169000 * /* @Y30LB00*/ 00170000 * /* **************************************************** */ 00171000 * /* @Y30LB00*/ 00172000 * /* */ 00173000 * /*************************************************************/ 00174000 * 0209 00175000 * GEN REFS(R10,IESTAE); 0209 00176000 * 0209 00177000 * /*@Y30LB00*/ 00178000 * ISSUE THE ESTAE MACRO TO GET RECOVERY FOR THE SSC SVC @Y30LB00 00179000 XC IESTAE(ESTAPLEN),IESTAE CLEAR ESTAE PARM LIST @Y30LB00 00180000 MVI IESTAE,TWENTY SET FLAG BYTE @Y30LB00 00181000 IESTAE00 ESTAE SVCESTAE,CT,PARAM=(R10),XCTL=YES,ESTAR=NO, @Y30LB00*00182000 PURGE=QUIESCE,ASYNCH=YES,TERM=YES,RECORD=YES, @Y30LB00*00183000 MF=(E,IESTAE) @Y30LB00 00184000 * /*************************************************************/ 00185000 * /* */ 00186000 * /* **************************************************** */ 00187000 * /* @ZM31012*/ 00188000 * /* @ZM31012*/ 00189000 * /* DETERMINE IF THE HOST INTERFACE TO THE MSC HAS @ZM31012*/ 00190000 * /* BEEN INITIALIZED BEFORE PROCESSING ANY REQUEST @ZM31012*/ 00191000 * /* OTHER THAN AN INITIALIZE ORDER. IF THE INTERFACE @ZM31012*/ 00192000 * /* HAS NOT BEEN INITIALIZED, THE SVC SETS AN REASON @ZM31012*/ 00193000 * /* CODE INDICATING SUCH. @ZM31012*/ 00194000 * /* **************************************************** */ 00195000 * /* @ZM31012*/ 00196000 * /* */ 00197000 * /*************************************************************/ 00198000 * 0210 00199000 * IF REQCODE^=INITCODE THEN /* IS INITIALIZE REQ @ZM31012 00200000 * BEING PROCESSED @ZM31012*/ 00201000 CLI REQCODE(R6),16 0210 00202000 BE @RF00210 0210 00203000 * DO; /* REQ IS NOT INIT @ZM31012*/ 00204000 * IF ICBI^=B1ONE THEN /* IS INTERFACE @ZM31012 00205000 * INITIALIZED @ZM31012*/ 00206000 L @09,ICBPTR 0212 00207000 TM ICBI(@09),B'10000000' 0212 00208000 BO @RF00212 0212 00209000 * DO; /* NO, SET ERROR CODE @ZM31012*/ 00210000 * IF REQCODE=SEL|REQCODE=TRM THEN 0214 00211000 CLI REQCODE(R6),137 0214 00212000 BE @RT00214 0214 00213000 CLI REQCODE(R6),138 0214 00214000 BNE @RF00214 0214 00215000 @RT00214 DS 0H 0215 00216000 * DO; /* @ZA24770*/ 00217000 * R0=ZERO; /* INDICATE 1ST ENTRY @ZA24770 00218000 * INTO MSVC FOR REQUEST @ZA24770*/ 00219000 SLR R0,R0 0216 00220000 * R1=R6; /* ADDRESS REQUEST @ZA24770*/ 00221000 LR R1,R6 0217 00222000 * RFY 0218 00223000 * (R13) RESTRICTED;/* @ZA24770*/ 00224000 * R13=ADDR(SAVAREA);/* @ZA24770 00225000 * SUPPLY REG SAVEAREA @ZA24770*/ 00226000 * 0219 00227000 LA R13,SAVAREA 0219 00228000 * /*************************************************/ 00229000 * /* */ 00230000 * /* SEL& TRM REQUESTS GO TO SCREENING RTN @ZA24770*/ 00231000 * /* */ 00232000 * /*************************************************/ 00233000 * 0220 00234000 * R15=ICBVSCRA; /* MSVC SCREENING RTN @ZA24770*/ 00235000 L @09,ICBPTR 0220 00236000 L R15,ICBVSCRA(,@09) 0220 00237000 * GEN REFS(R14,R15); 0221 00238000 * /*@ZA24770*/ 00239000 BALR R14,R15 BRANCH TO MSVC @ZA24770 00240000 * R13=R10; /* RESTORE SVC SAVEAREA @ZA24770*/ 00241000 LR R13,R10 0222 00242000 * RFY 0223 00243000 * (R13) UNRESTRICTED;/* @ZA24770*/ 00244000 * GO TO EXIT; /* DONE WITH SVC THIS TRIP 0224 00245000 * @ZA24770*/ 00246000 B EXIT 0224 00247000 * END; /* @ZA24770*/ 00248000 * ELSE 0226 00249000 * DO; /* @ZA24770*/ 00250000 @RF00214 DS 0H 0227 00251000 * VVICERR=B1ONE; /* @ZM31012*/ 00252000 OI VVICERR,B'00010000' 0227 00253000 * IF REQCODE=ACQUIRE|REQCODE=RELINQ/* IS ACQUIRE 0228 00254000 * @ZM31012*/ 00255000 * 0228 00256000 * /*************************************************/ 00257000 * /* */ 00258000 * /* OR RELINQUISH REQUEST @ZM31012*/ 00259000 * /* BEING PROCESSED @ZM31012*/ 00260000 * /* */ 00261000 * /*************************************************/ 00262000 * 0228 00263000 * THEN /* THIS IS ACQUIRE OR RELINQUISH 00264000 * @ZM31012*/ 00265000 CLI REQCODE(R6),2 0228 00266000 BE @RT00228 0228 00267000 CLI REQCODE(R6),4 0228 00268000 BNE @RF00228 0228 00269000 @RT00228 DS 0H 0229 00270000 * DO; /* GO SET COMPLETION @ZM31012 00271000 * CODE IN EACH REQUEST @ZM31012*/ 00272000 * ARERRCD=CODE371;/* @ZM31012*/ 00273000 MVC ARERRCD(4),@CF00792 0230 00274000 * CALL ARERR2;/* GO TO ROUTINE WHICH @ZM31012 00275000 * INSERTS COMPETION CODE 0231 00276000 * @ZM31012 00277000 * IN EACH REQ OF CHAIN @ZM31012*/ 00278000 BAL @14,ARERR2 0231 00279000 * END; /* @ZM31012*/ 00280000 * ELSE /* NOT ACQ/REL REQUEST @ZM31012*/ 00281000 * RETNCODE=CODE371;/* SET REASON CODE @ZM31012*/ 00282000 B @RC00228 0233 00283000 @RF00228 MVC RETNCODE(4),@CF00792 0233 00284000 * END; /* @ZA24770*/ 00285000 @RC00228 DS 0H 0235 00286000 * END; /* @ZM31012*/ 00287000 * END; /* @ZM31012*/ 00288000 @RF00212 DS 0H 0237 00289000 * IF RETNCODE=ZERO THEN /* HAS ERROR BEEN DETECTED 0237 00290000 * @ZM31012*/ 00291000 @RF00210 L @09,RETNCODE 0237 00292000 LTR @09,@09 0237 00293000 BNZ @RF00237 0237 00294000 * DO; /* NO, CONTINUE PROCESSING 0238 00295000 * @ZM31012*/ 00296000 * 0238 00297000 * /*********************************************************/ 00298000 * /* */ 00299000 * /* **************************************************** */ 00300000 * /* @ZM31012*/ 00301000 * /* @ZM31012*/ 00302000 * /* DETERMINE IF REQUEST IS FOR MSVC ONLY @ZM31012*/ 00303000 * /* @ZM31012*/ 00304000 * /* **************************************************** */ 00305000 * /* @ZM31012*/ 00306000 * /* */ 00307000 * /*********************************************************/ 00308000 * 0239 00309000 * IF VVICREQ=B1ONE THEN /* IS MSVC REQUEST #Y30LB00*/ 00310000 TM VVICREQ(R6),B'10000000' 0239 00311000 BNO @RF00239 0239 00312000 * DO; /* REQUEST IS FOR MSVC #Y30LB00*/ 00313000 * CALL MSVCONLY; /* CALL SUB TO PROCESS @G24LB01*/ 00314000 BAL @14,MSVCONLY 0241 00315000 * END; /* #Y30LB00*/ 00316000 * ELSE /* NOT MSVC REQUEST #Y30LB00*/ 00317000 * DO; /* BEGIN TO PROCESSES #Y30LB00 00318000 * MSC REQUEST #Y30LB00*/ 00319000 * 0243 00320000 B @RC00239 0243 00321000 @RF00239 DS 0H 0244 00322000 * /*****************************************************/ 00323000 * /* */ 00324000 * /* ***************************************************/ 00325000 * /* ** #Y30LB00*/ 00326000 * /* #Y30LB00*/ 00327000 * /* CHECK MOVE, DEFINE, COPY TABLES, COPY VOLUME, */ 00328000 * /* #Y30LB00*/ 00329000 * /* COPY CARTRIDGE, DEMOUNT AND ACQUIRE AND RELINQUISH*/ 00330000 * /* @Y30LB00*/ 00331000 * /* IF DELAYED RESPONSE IS SPECIFIED, AND VARY OFF IF */ 00332000 * /* @Y30LB00*/ 00333000 * /* VIRTUAL IS SPECIFIED AND TUNE WITH DISPLAY MODE */ 00334000 * /* @Y30LB00*/ 00335000 * /* TO INSURE THAT THE ECB IS VALID AND THAT THE */ 00336000 * /* LENGTH @Y30LB00*/ 00337000 * /* FOR ANY REQUEST IS CORRECT @Y30LB00*/ 00338000 * /* @Y30LB00*/ 00339000 * /* ***************************************************/ 00340000 * /* ** @Y30LB00*/ 00341000 * /* */ 00342000 * /*****************************************************/ 00343000 * 0244 00344000 * CALL SYNCHK; /* CALL SUBROUTINE WHICH @Y30LB00 00345000 * SYNTAX CHECKS REQUEST @Y30LB00*/ 00346000 BAL @14,SYNCHK 0244 00347000 * IF RETNCODE=ZERO THEN/* IS REASON CODE ZERO @Y30LB00*/ 00348000 L @09,RETNCODE 0245 00349000 LTR @09,@09 0245 00350000 BNZ @RF00245 0245 00351000 * DO; /* DO PREPARATION TO @Y30LB00 00352000 * ISSUE THE I/O @Y30LB00*/ 00353000 * CALL IOSTORG; /* GET STORAGE FOR I/O @ZM31012*/ 00354000 * 0247 00355000 BAL @14,IOSTORG 0247 00356000 * /*************************************************/ 00357000 * /* */ 00358000 * /* CHECK THE RETNCODE TO SEE IF THE STORAGE */ 00359000 * /* REQUIRED #Y30LB00*/ 00360000 * /* FOR THE CHANNEL PROGRAM AND THE I/O CONTROL */ 00361000 * /* BLOCKS #Y30LB00*/ 00362000 * /* COULD BE OBTAINED. @Y30LB00*/ 00363000 * /* */ 00364000 * /*************************************************/ 00365000 * 0248 00366000 * IF RETNCODE=ZERO THEN/* IS REASON CODE ZERO 0248 00367000 * @ZDR2048*/ 00368000 L @09,RETNCODE 0248 00369000 LTR @09,@09 0248 00370000 BNZ @RF00248 0248 00371000 * DO; /* CONTINUE I/O PREP @ZDR2048*/ 00372000 * IF REQCODE=DEMOUNT&/* TEST FOR DEMOUNT 0250 00373000 * @ZDR2048*/ 00374000 * DMVUAVAL=B1ONE THEN/* AND VUA VALID 0250 00375000 * @ZDR2048*/ 00376000 CLI REQCODE(R6),6 0250 00377000 BNE @RF00250 0250 00378000 TM DMVUAVAL(R6),B'00100000' 0250 00379000 BNO @RF00250 0250 00380000 * DO; /* DEMOUNT REQUEST @ZDR2048*/ 00381000 * DMTID=DMTIDCD;/* SET IOBX DEMOUNT CODE 0252 00382000 * @ZDR2048*/ 00383000 L @09,SSCDATAP 0252 00384000 MVC DMTID(2,@09),DMTIDCD 0252 00385000 * DMTCNT=ONE;/* SET DEMOUNT COUNT @ZDR2048*/ 00386000 MVI DMTCNT,X'01' 0253 00387000 * END; /* END DEMOUNT GROUP @ZDR2048*/ 00388000 * ELSE /* NOT DEMOUNT REQUEST @ZDR2048*/ 00389000 * DO; /* NON DEMOUNT @ZDR2048*/ 00390000 B @RC00250 0255 00391000 @RF00250 DS 0H 0256 00392000 * DMTID=DMTIDBL;/* BLANK IOBX DMT CODE 0256 00393000 * @ZDR2048*/ 00394000 L @09,SSCDATAP 0256 00395000 MVC DMTID(2,@09),DMTIDBL 0256 00396000 * DMTCNT=ZERO;/* CLEAR DEMOUNT COUNT 0257 00397000 * @ZDR2048*/ 00398000 MVI DMTCNT,X'00' 0257 00399000 * END; /* END NON DEMOUNT GROUP @ZDR2048*/ 00400000 * DO UNTIL DMTCNT=ZERO;/* TWICE FOR DMT FAILS 00401000 * @ZDR2048*/ 00402000 @RC00250 DS 0H 0259 00403000 @DL00259 DS 0H 0260 00404000 * IF DMTCNT=TWO THEN/* ON LAST DEMOUNT ? 0260 00405000 * @ZDR2048*/ 00406000 CLI DMTCNT,2 0260 00407000 BNE @RF00260 0260 00408000 * DMTCNT=ZERO;/* SET COUNT TO EXIT VAL 0261 00409000 * @ZDR2048*/ 00410000 MVI DMTCNT,X'00' 0261 00411000 * CALL REQSTLU;/* CALL SUB TO PROCESS REQ 0262 00412000 * @ZDR2048*/ 00413000 @RF00260 BAL @14,REQSTLU 0262 00414000 * IF VVICERR=B1ZERO THEN/* WAS SITUATION 0263 00415000 * DETECTED @ZDR2048 00416000 * SUCH THAT MSVC SHOULD @ZDR2048 00417000 * NOT BE CALLED @ZDR2048*/ 00418000 TM VVICERR,B'00010000' 0263 00419000 BNZ @RF00263 0263 00420000 * DO; /* NO CHECK IF MSVC SHOULD 0264 00421000 * @ZDR2048 00422000 * BE CALLED @ZDR2048*/ 00423000 * IF(REQCODE=MOUNT&MDVISMNT=B1ZERO)|/* 0265 00424000 * @ZDR2048*/ 00425000 * REQCODE=DEMOUNT|REQCODE=NULLCART|/* 00426000 * @ZDR2048*/ 00427000 * REQCODE=DEFINE|REQCODE=MOVE|/* 0265 00428000 * @ZDR2048*/ 00429000 * REQCODE=COPYV|REQCODE=COPYC|/* 0265 00430000 * @ZDR2048*/ 00431000 * REQCODE=PURGE|/* @ZDR2048*/ 00432000 * (REQCODE=SUSPEND&SUPPRSW=B1ZERO)|/* 00433000 * @ZDR2048*/ 00434000 * (REQCODE=ACQUIRE&ARSEC=B1ONE)|/* 0265 00435000 * @G24LB01*/ 00436000 * (REQCODE=ASSOCIAT&(ASASSOC=B1ONE|/* 00437000 * @ZDR2048*/ 00438000 * ASDASSOC=B1ONE|ASDMNT=B1ONE|ASDEINT= 00439000 * B1ONE))/* @ZDR2048*/ 00440000 * THEN/* @ZDR2048 00441000 * IS REQUEST ONE WHICH @ZDR2048 00442000 * REQUIRES A CALL TO MSVC 0265 00443000 * @ZDR2048 00444000 * BEFORE EXITING THE SVC 0265 00445000 * @ZDR2048*/ 00446000 CLI REQCODE(R6),8 0265 00447000 BNE @GL00014 0265 00448000 TM MDVISMNT(R6),B'01000000' 0265 00449000 BZ @RT00265 0265 00450000 @GL00014 CLI REQCODE(R6),6 0265 00451000 BE @RT00265 0265 00452000 CLI REQCODE(R6),9 0265 00453000 BE @RT00265 0265 00454000 CLI REQCODE(R6),24 0265 00455000 BE @RT00265 0265 00456000 CLI REQCODE(R6),14 0265 00457000 BE @RT00265 0265 00458000 CLI REQCODE(R6),42 0265 00459000 BE @RT00265 0265 00460000 CLI REQCODE(R6),40 0265 00461000 BE @RT00265 0265 00462000 CLI REQCODE(R6),20 0265 00463000 BE @RT00265 0265 00464000 CLI REQCODE(R6),34 0265 00465000 BNE @GL00006 0265 00466000 TM SUPPRSW(R6),B'00100000' 0265 00467000 BZ @RT00265 0265 00468000 @GL00006 CLI REQCODE(R6),2 0265 00469000 BNE @GL00005 0265 00470000 L @09,ARPTR 0265 00471000 TM ARSEC(@09),B'00010000' 0265 00472000 BO @RT00265 0265 00473000 @GL00005 CLI REQCODE(R6),44 0265 00474000 BNE @RF00265 0265 00475000 TM ASASSOC(R6),B'11000110' 0265 00476000 BZ @RF00265 0265 00477000 @RT00265 DS 0H 0266 00478000 * DO; /* CALL MSVC @ZDR2048*/ 00479000 * SECVVIC=B1ONE;/* INDICATE SECOND 0267 00480000 * ENTRY @ZDR2048 00481000 * INTO MSVC FOR REQ @ZDR2048*/ 00482000 OI SECVVIC,B'10000000' 0267 00483000 * R0=RETNCODE;/* SUPPLY REASON CODE 00484000 * FOR @ZDR2048 00485000 * REQUEST @ZDR2048*/ 00486000 L R0,RETNCODE 0268 00487000 * R1=R6;/* ADDRESS REQUEST @ZDR2048*/ 00488000 LR R1,R6 0269 00489000 * RFY 0270 00490000 * (R13) RESTRICTED;/* @ZDR2048*/ 00491000 * R13=ADDR(SAVAREA);/* SUPPLY REG 0271 00492000 * SAVEAREA @ZDR2048*/ 00493000 * 0271 00494000 LA R13,SAVAREA 0271 00495000 * /***********************************/ 00496000 * /* */ 00497000 * /* MSVC ACQ REQUESTS GO TO */ 00498000 * /* SCREENING RTN @G24LB01*/ 00499000 * /* OTHERS TO QUEUE MGR. @G24LB01*/ 00500000 * /* */ 00501000 * /***********************************/ 00502000 * 0272 00503000 * IF REQCODE=ACQUIRE THEN/* @G24LB01*/ 00504000 CLI REQCODE(R6),2 0272 00505000 BNE @RF00272 0272 00506000 * R15=ICBVSCRA;/* MSVC SCREENING 0273 00507000 * RTN @ZA24770*/ 00508000 L @09,ICBPTR 0273 00509000 L R15,ICBVSCRA(,@09) 0273 00510000 * ELSE/* SEND REQ TO QUEUE MGR 0274 00511000 * @G24LB01*/ 00512000 * R15=ICBVVIC;/* GET ADDRESS OF 0274 00513000 * MSVC @G24LB01*/ 00514000 B @RC00272 0274 00515000 @RF00272 L @09,ICBPTR 0274 00516000 L R15,ICBVVIC(,@09) 0274 00517000 * VVICERR=B1ONE;/* TO KEEP FROM 0275 00518000 * CALLING @ZDR2048 00519000 * MSVC MORE THAN ONCE @ZDR2048 00520000 * AFTER A REQUEST @ZDR2048*/ 00521000 @RC00272 OI VVICERR,B'00010000' 0275 00522000 * GEN REFS(R14,R15); 0276 00523000 * /*@ZDR2048*/ 00524000 BALR R14,R15 BRANCH TO MSVC @ZDR2048 00525000 * R13=R10;/* RESTORE SVC SAVEAREA 0277 00526000 * @ZDR2048*/ 00527000 LR R13,R10 0277 00528000 * SECVVIC=B1ZERO;/* INDICATE MSVC 0278 00529000 * CALLED @ZDR2048 00530000 * SECOND TIME @ZDR2048*/ 00531000 NI SECVVIC,B'01111111' 0278 00532000 * IF R15^=ZERO THEN/* DID MSVC RETURN 00533000 * WITH @ZDR2048 00534000 * ERROR @ZDR2048*/ 00535000 LTR R15,R15 0279 00536000 BZ @RF00279 0279 00537000 * RETNCODE=R0;/* REASON CODE IS SET 00538000 * TO @ZDR2048 00539000 * MSVC RETURN CODE @ZDR2048*/ 00540000 ST R0,RETNCODE 0280 00541000 * RFY 0281 00542000 * (R13) UNRESTRICTED;/* @ZDR2048*/ 00543000 @RF00279 DS 0H 0282 00544000 * END;/* @ZDR2048*/ 00545000 * END; /* @ZDR2048*/ 00546000 @RF00265 DS 0H 0284 00547000 * IF REQCODE=DEMOUNT THEN/* TEST FOR DEMOUNT 00548000 * @ZDR2048*/ 00549000 @RF00263 CLI REQCODE(R6),6 0284 00550000 BNE @RF00284 0284 00551000 * IF DMTCNT=ONE THEN/* TEST FOR FIRST DMNT 00552000 * @ZDR2048*/ 00553000 CLI DMTCNT,1 0285 00554000 BNE @RF00285 0285 00555000 * IF RETNCODE=HEXC1 THEN/* C1 REASON CODE 00556000 * @ZDR2048*/ 00557000 CLC RETNCODE(4),@CF02513 0286 00558000 BNE @RF00286 0286 00559000 * DO; /* REISSUE DEMOUNT @ZDR2048*/ 00560000 * DMVOL=DMTVOL;/* SENSE VOL TO ORDER 00561000 * @ZDR2048*/ 00562000 L @09,SSCDATAP 0288 00563000 MVC DMVOL(6,R6),DMTVOL(@09) 0288 00564000 * DMTCNT=TWO;/* SET FOR DEMOUNT LOOP 00565000 * @ZDR2048*/ 00566000 * 0289 00567000 MVI DMTCNT,X'02' 0289 00568000 * /***********************************/ 00569000 * /* */ 00570000 * /* CLEAR NECESSARY SWITCHES FOR */ 00571000 * /* REENTRY @ZDR2048*/ 00572000 * /* TO REQSTLU CODE. @ZDR2048*/ 00573000 * /* */ 00574000 * /***********************************/ 00575000 * 0290 00576000 * VVICERR=B1ZERO;/* @ZDR2048*/ 00577000 NI VVICERR,B'11101111' 0290 00578000 * IOCMP=B1ZERO;/* @ZDR2048*/ 00579000 * IO=B1ZERO;/* @ZDR2048*/ 00580000 * ELEMINV=B1ZERO;/* @ZDR2048*/ 00581000 NI IOCMP,B'11100110' 0293 00582000 * ELEMSW=B1ZERO;/* @ZDR2048*/ 00583000 NI ELEMSW,B'01111111' 0294 00584000 * ELEMQUE=B1ZERO;/* @ZDR2048*/ 00585000 NI ELEMQUE,B'11011111' 0295 00586000 * RETNCODE=ZERO;/* @ZDR2048*/ 00587000 SLR @09,@09 0296 00588000 ST @09,RETNCODE 0296 00589000 * END;/* END REISSUE SETUP @ZDR2048*/ 00590000 * ELSE /* NOT C1 REASON CODE @ZDR2048*/ 00591000 * DMTCNT=ZERO;/* END DEMOUNT LOOP 0298 00592000 * @ZDR2048*/ 00593000 B @RC00286 0298 00594000 @RF00286 MVI DMTCNT,X'00' 0298 00595000 * END; /* END DEMOUNT DO UNTIL @ZDR2048*/ 00596000 @RC00286 DS 0H 0299 00597000 @RF00285 DS 0H 0299 00598000 @RF00284 DS 0H 0299 00599000 @DE00259 CLI DMTCNT,0 0299 00600000 BNE @DL00259 0299 00601000 * IF REQCODE=MSCREAD|REQCODE=MSCDUMP|/* QUERY 00602000 * FUNCTIONS @ZA13482*/ 00603000 * REQCODE=CAUDIT THEN/* QUERY FUNCTIONS 0300 00604000 * @ZA13482*/ 00605000 CLI REQCODE(R6),5 0300 00606000 BE @RT00300 0300 00607000 CLI REQCODE(R6),11 0300 00608000 BE @RT00300 0300 00609000 CLI REQCODE(R6),7 0300 00610000 BNE @RF00300 0300 00611000 @RT00300 DS 0H 0301 00612000 * DO; /* SET FREEMAIN LENGTH @ZA13482*/ 00613000 * IF RETNCODE=ZERO THEN/* GOOD RETURN TEST 00614000 * @ZA13482*/ 00615000 L @09,RETNCODE 0302 00616000 LTR @09,@09 0302 00617000 BNZ @RF00302 0302 00618000 * DO; /* MOVE DATA TO USER AREA 0303 00619000 * @ZA13482*/ 00620000 * USER1=BUFF1;/* MOVE FIRST HALF DATA 00621000 * @ZA13482*/ 00622000 L @09,QUPTR(,R6) 0304 00623000 L @07,BUFFPTR 0304 00624000 MVC USER1(256,@09),BUFF1(@07) 0304 00625000 * USER2=BUFF2;/* MOVE SECOND HALF DATA 00626000 * @ZA13482*/ 00627000 MVC USER2(256,@09),BUFF2(@07) 0305 00628000 * END; /* END MOVE DATA CODE @ZA13482*/ 00629000 * R0=IOLENGTH+ORDLENG+LENGTH(BUFFER);/* SET 00630000 * FREEMAIN LEN @ZA13482*/ 00631000 @RF00302 L R0,IOLENGTH 0307 00632000 AL R0,ORDLENG 0307 00633000 AL R0,@CF02475 0307 00634000 * END; /* END FREEMAIN LENGTH CODE 0308 00635000 * @ZA13482*/ 00636000 * ELSE /* TEST FOR ACQ/REL REQUEST 0309 00637000 * @ZA13482*/ 00638000 * IF ARSW=B1ONE THEN/* IS ACQ/REL REQUEST 0309 00639000 * @Y30LB00 00640000 * BEING PROCESSED @Y30LB00*/ 00641000 B @RC00300 0309 00642000 @RF00300 TM ARSW,B'00100000' 0309 00643000 BNO @RF00309 0309 00644000 * R0=IOLENGTH+(LISTLEN-EIGHT);/* @Y30LB00 00645000 * CALCULATE LENGTH OF I/O 0310 00646000 * @Y30LB00 00647000 * AREA TO BE FREED @Y30LB00*/ 00648000 L R0,LISTLEN(,R6) 0310 00649000 SL R0,@CF00033 0310 00650000 AL R0,IOLENGTH 0310 00651000 * ELSE /* NO ACQ/REL REQUEST @Y30LB00*/ 00652000 * R0=IOLENGTH+ORDLENG;/* CALCULATE LENGTH 00653000 * OF I/O @Y30LB00 00654000 * AREA TO BE FREED @Y30LB00*/ 00655000 B @RC00309 0311 00656000 @RF00309 L R0,IOLENGTH 0311 00657000 AL R0,ORDLENG 0311 00658000 * R1=ADDR(IFREEMAI);/* @Y30LB00*/ 00659000 @RC00309 DS 0H 0312 00660000 @RC00300 LA R1,IFREEMAI 0312 00661000 * GEN REFS(R1,R0,IODATAPT); 0313 00662000 * /*@Y30LB00*/ 00663000 * FREE THE STORAGE FOR THE I/O CONTROL BLOCKS @Y30LB00 00664000 IFREEM10 FREEMAIN E,MF=(E,(R1)),LV=(R0),A=IODATAPT,SP=245, @Y30LB00*00665000 RELATED=(SP245,IGC0012F(IGETMA10)) @Y30LB00 00666000 * IODATAPT=ZERO;/* CLEAR ADDR OF I/O BLKS 0314 00667000 * @Y30LB00*/ 00668000 SLR @09,@09 0314 00669000 ST @09,IODATAPT 0314 00670000 * IOBLKSW=B1ZERO;/* INDICATE I/O BLKS FREED 0315 00671000 * @Y30LB00*/ 00672000 NI IOBLKSW,B'11110111' 0315 00673000 * END; /* @Y30LB00*/ 00674000 * END; /* @Y30LB00*/ 00675000 @RF00248 DS 0H 0318 00676000 * END; /* @Y30LB00*/ 00677000 @RF00245 DS 0H 0319 00678000 * END; /* @Y30LB00*/ 00679000 @RC00239 DS 0H 0320 00680000 * END; /* @ZM31012*/ 00681000 @RF00237 DS 0H 0321 00682000 *EXIT: 0321 00683000 * IF ARSW=B1ONE THEN /* IS ACQ/REL REQUEST @ZA24770 00684000 * BEING PROCESSED @Y30LB00*/ 00685000 @RF00207 DS 0H 0321 00686000 EXIT TM ARSW,B'00100000' 0321 00687000 BNO @RF00321 0321 00688000 * DO; /* SET EXIT FLAG @Y30LB00*/ 00689000 * IF RELSW=B1ONE&RELERRSW=B1ONE THEN/* @Y30LB00 00690000 * IS REL CHAIN WITH AN @Y30LB00 00691000 * ERROR @Y30LB00*/ 00692000 TM RELSW,B'00001000' 0323 00693000 BNO @RF00323 0323 00694000 TM RELERRSW,B'10000000' 0323 00695000 BNO @RF00323 0323 00696000 * RETNCODE=FOUR; /* SET RETURN CODE @Y30LB00*/ 00697000 MVC RETNCODE(4),@CF00076 0324 00698000 * RFY 0325 00699000 * (R2, 0325 00700000 * R9, 0325 00701000 * R13) RESTRICTED; /* @ZA27588*/ 00702000 @RF00323 DS 0H 0326 00703000 * R2=FOXFOX; /* SET EXIT FLAG @Y30LB00*/ 00704000 LA R2,255 0326 00705000 * END; /* @Y30LB00*/ 00706000 * ELSE /* NOT ACQ/REL REQUEST @Y30LB00*/ 00707000 * R2=ZERO; /* CLEAR ACQ/REL EXIT FLAG 0328 00708000 * @Y30LB00*/ 00709000 B @RC00321 0328 00710000 @RF00321 SLR R2,R2 0328 00711000 * R9=RETNCODE; /* SAVE THE REASON CODE @Y30LB00*/ 00712000 @RC00321 L R9,RETNCODE 0329 00713000 * GEN REFS(R9,R13,R0,R1,R10,R2,R15,R14,R6); 0330 00714000 * /*@ZA27588*/ 00715000 L R13,TWELVE(R13) SAVE RETURN ADDRESS @ZA27588 00716000 L R0,@SIZDATD LOAD SIZE OF DYNAMIC AREA @Y30LB00 00717000 LR R1,R10 LOAD ADDR DYNAMIC AREA @Y30LB00 00718000 IFREEM00 FREEMAIN R,LV=(R0),A=(R1) FREE DYNAMIC AREA @Y30LB00 00719000 LTR R2,R2 TEST FLAG REGISTER @Y30LB00 00720000 BZ NOTAR BRANCH IF NOT ACQ/REL @Y30LB00 00721000 SR R0,R0 CLEAR REGISTER 0 @Y30LB00 00722000 LR R15,R9 LOAD RETURN CODE @Y30LB00 00723000 B LOADREG BR TO RESTORE R14 @Y30LB00 00724000 NOTAR LR R0,R9 LOAD REASON CODE @Y30LB00 00725000 SR R15,R15 CLEAR REGISTER 15 @Y30LB00 00726000 LTR R0,R0 TEST ERROR CODE @Y30LB00 00727000 BZ LOADREG BR IF ERROR CODE 0 @Y30LB00 00728000 LA R15,FOUR LOAD ERROR RETURN CODE @Y30LB00 00729000 LOADREG LR R14,R13 RESTORE REGISTER 14 @ZA27588 00730000 LR R1,R6 RESTORE REGISTER 1 TO @Y30LB00 00731000 * THE ADDRESS OF THE @Y30LB00 00732000 * INPUT REQUEST @Y30LB00 00733000 SVCEXIT BR R14 BRANCH R14 - RETURN @Y30LB00 00734000 FEDIAG EQU * FE DIAG WORDS @ZDR2048 00735000 DS 8F DIAG WORK AREA @ZDR2048 00736000 * RFY 0331 00737000 * (R2, 0331 00738000 * R9, 0331 00739000 * R13) UNRESTRICTED; /* @ZA27588*/ 00740000 * 0332 00741000 */* START OF SPECIFICATIONS **** @ZM31012 00742000 * @ZM31012 00743000 *01* MODULE-NAME = IOSTORG @ZM31012 00744000 * @ZM31012 00745000 *01* FUNCTION = THIS SUBROUTINE OBTAINS STORAGE NEEDED FOR @ZM31012 00746000 * I/O TO THE MSC FOR THE REQUEST(S) BEING PROCESSED @ZM31012 00747000 * THE AMOUNT OF STORAGE NEEDED IS CALCULATED, AND @ZM31012 00748000 * IF THE GETMAIN IS UNSUCCESSFUL, THE APPROPRIATE @ZM31012 00749000 * REASON CODE IS INSERTED INTO EACH REQUEST. @ZM31012 00750000 * @ZM31012 00751000 *02* INPUT = THE FOLLOWING -- @ZM31012 00752000 * ACQUIRE OR RELINQUISH SWITCH SET @ZM31012 00753000 * ADDRESS OF REQUEST @ZM31012 00754000 * @ZM31012 00755000 *02* OUTPUT = RETNCODE @ZM31012 00756000 * 174 -- GETMAIN REQUEST FOR I/O BLOCKS FAILED @ZM31012 00757000 * @ZM31012 00758000 * @ZM31012 00759000 **** END OF SPECIFICATIONS ** @ZM31012*/ 00760000 * 0332 00761000 *IOSTORG: 0332 00762000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* I/O STORAGE @ZM31012*/ 00763000 B @PB00002 0332 00764000 IOSTORG DS 0H 0333 00765000 * DCL 0333 00766000 * R14IO POINTER(31); /* TO SAVE REG 14 ON ENTRY 0333 00767000 * @ZM31012*/ 00768000 * R14IO=R14; /* SAVE INPUT REG 14 @ZM31012*/ 00769000 ST R14,R14IO 0334 00770000 */* FOR MOUNT AND DEMOUNT, CALL SUB TO PUT PRIMARY UNIT @ZDR2048 00771000 * ADDRESS IN THE REQUEST BLOCK. @ZDR2048*/ 00772000 * 0335 00773000 * IF(REQCODE=MOUNT|(REQCODE=DEMOUNT&DMVUAVAL=B1ONE))&MDHOST=C5ZEROS 00774000 * THEN /* ZA17173 */ 00775000 CLI REQCODE(R6),8 0335 00776000 BE @GL00022 0335 00777000 CLI REQCODE(R6),6 0335 00778000 BNE @RF00335 0335 00779000 TM DMVUAVAL(R6),B'00100000' 0335 00780000 BNO @RF00335 0335 00781000 @GL00022 CLC MDHOST(5,R6),C5ZEROS 0335 00782000 BNE @RF00335 0335 00783000 * CALL VUACK; /* @ZDR2048*/ 00784000 * 0336 00785000 BAL @14,VUACK 0336 00786000 * /*****************************************************************/ 00787000 * /* */ 00788000 * /* **************************************************** @ZM31012*/ 00789000 * /* @ZM31012*/ 00790000 * /* CALCULATE THE LENGTH OF THE ORDER TO BE TRANSFERRED @ZM31012*/ 00791000 * /* @ZM31012*/ 00792000 * /* **************************************************** @ZM31012*/ 00793000 * /* IF REQUEST IS AN ACQ @ZM31012*/ 00794000 * /* RELINQUISH, DEFINE, @ZM31012*/ 00795000 * /* QUERY(MSCREAD,CAUDIT, @Z40LB01*/ 00796000 * /* MSCDUMP),NULLC, @Z40LB01*/ 00797000 * /* MOVE,COPYV CALCULATE @ZM31012*/ 00798000 * /* THE LENGTH OF THE @ZM31012*/ 00799000 * /* ORDER @ZM31012*/ 00800000 * /* */ 00801000 * /*****************************************************************/ 00802000 * 0337 00803000 * IF REQCODE=ACQUIRE|REQCODE=RELINQ|/* @ZM31012*/ 00804000 * REQCODE=DEFINE|REQCODE=MOVE|/* @ZM31012*/ 00805000 * REQCODE=MSCREAD|REQCODE=CAUDIT|REQCODE=NULLCART|/* @Z40LB01*/ 00806000 * REQCODE=MSCDUMP| /* @Z40LB01*/ 00807000 * REQCODE=COPYV THEN /* @ZM31012*/ 00808000 @RF00335 CLI REQCODE(R6),2 0337 00809000 BE @RT00337 0337 00810000 CLI REQCODE(R6),4 0337 00811000 BE @RT00337 0337 00812000 CLI REQCODE(R6),24 0337 00813000 BE @RT00337 0337 00814000 CLI REQCODE(R6),14 0337 00815000 BE @RT00337 0337 00816000 CLI REQCODE(R6),5 0337 00817000 BE @RT00337 0337 00818000 CLI REQCODE(R6),7 0337 00819000 BE @RT00337 0337 00820000 CLI REQCODE(R6),9 0337 00821000 BE @RT00337 0337 00822000 CLI REQCODE(R6),11 0337 00823000 BE @RT00337 0337 00824000 CLI REQCODE(R6),42 0337 00825000 BNE @RF00337 0337 00826000 @RT00337 DS 0H 0338 00827000 * ORDLENG=LISTLEN-EIGHT; /* CALCULATE LEN OF ORDER 0338 00828000 * @ZM31012*/ 00829000 L @09,LISTLEN(,R6) 0338 00830000 SL @09,@CF00033 0338 00831000 ST @09,ORDLENG 0338 00832000 * ELSE /* NOT ACQ, REL, DEFINE, @ZM31012 00833000 * QUERY(MSCREAD,CAUDIT, @Z40LB01 00834000 * MSCDUMP), NULLC, @Z40LB01 00835000 * MOVE, OR COPY VOLUME @ZM31012 00836000 * REQUEST @ZM31012*/ 00837000 * IF REQCODE=MOUNT THEN /* IS MOUNT REQUEST @ZM31012*/ 00838000 B @RC00337 0339 00839000 @RF00337 CLI REQCODE(R6),8 0339 00840000 BNE @RF00339 0339 00841000 * ORDLENG=LISTLEN-ELEVEN; /* CALCULATE LEN OF ORDER 0340 00842000 * @ZM31012*/ 00843000 L @09,LISTLEN(,R6) 0340 00844000 SL @09,@CF00034 0340 00845000 ST @09,ORDLENG 0340 00846000 * ELSE /* NOT SPECIAL LENGTH @ZD00155*/ 00847000 * ORDLENG=LISTLEN-FOUR; /* @ZM31012 00848000 * CALCULATE THE LENGTH @ZM31012 00849000 * OF THE OTHER ORDERS @ZM31012*/ 00850000 * 0341 00851000 B @RC00339 0341 00852000 @RF00339 L @09,LISTLEN(,R6) 0341 00853000 SL @09,@CF00076 0341 00854000 ST @09,ORDLENG 0341 00855000 * /*****************************************************************/ 00856000 * /* */ 00857000 * /* GET STORAGE FROM SQA FOR THE CHANNEL PROGRAM, @ZM31012*/ 00858000 * /* THE I/O CONTROL BLOCKS - SRB, IOSB, MSSC DATA AREA, @ZM31012*/ 00859000 * /* AND THE ORDER TO BE PASSED TO THE MSC. A @ZM31012*/ 00860000 * /* CONDITIONAL GETMAIN IS ISSUED, IF STORAGE CAN NOT BE @ZM31012*/ 00861000 * /* OBTAINED THE SVC SETS AN ERROR CODE INDICATING @ZM31012*/ 00862000 * /* THAT STORAGE COULD NOT BE OBTAINED. @ZM31012*/ 00863000 * /* */ 00864000 * /*****************************************************************/ 00865000 * 0342 00866000 * IOLENGTH=LENGTH(SRB)+LENGTH(IOSB)+LENGTH(SSCDATA)/* @ZD00155*/ 00867000 * +LENGTH(CCWS)+LENGTH(NOOP1E);/* @ZD00155*/ 00868000 @RC00339 DS 0H 0342 00869000 @RC00337 MVC IOLENGTH(4),@CF03059 0342 00870000 */* FOR QUERY REQUESTS ADD BUFFER AREA TO GETMAIN LENGTH @ZA13482*/ 00871000 * 0343 00872000 * IF REQCODE=MSCREAD|REQCODE=MSCDUMP|REQCODE=CAUDIT THEN/* @ZA13482*/ 00873000 CLI REQCODE(R6),5 0343 00874000 BE @RT00343 0343 00875000 CLI REQCODE(R6),11 0343 00876000 BE @RT00343 0343 00877000 CLI REQCODE(R6),7 0343 00878000 BNE @RF00343 0343 00879000 @RT00343 DS 0H 0344 00880000 * R0=IOLENGTH+ORDLENG+LENGTH(BUFFER);/* @ZA13482*/ 00881000 L R0,IOLENGTH 0344 00882000 AL R0,ORDLENG 0344 00883000 AL R0,@CF02475 0344 00884000 * ELSE /* CALC LENGTH FOR NON QUERY 0345 00885000 * @ZA13482*/ 00886000 * R0=IOLENGTH+ORDLENG; /* @ZM31012*/ 00887000 B @RC00343 0345 00888000 @RF00343 L R0,IOLENGTH 0345 00889000 AL R0,ORDLENG 0345 00890000 * R1=ADDR(IGETMAIN); /* @ZM31012*/ 00891000 @RC00343 LA R1,IGETMAIN 0346 00892000 * GEN REFS(R1,R0,IODATAPT); 0347 00893000 * /*@ZM31012*/ 00894000 * GETMAIN FOR THE IOB CONTROL BLOCKS @ZM31012 00895000 IGETMA10 GETMAIN EC,MF=(E,(R1)),LV=(R0),A=IODATAPT,SP=245, @ZM31012*00896000 BNDRY=PAGE, @ZA13482*00897000 RELATED=(SP245,IGC0012F(IFREEM10), @ZM31012*00898000 SP245,IGC0012F(IFREEM11)) @ZM31012 00899000 * IF R15^=ZERO THEN /* WAS STORAGE OBTAINED @ZM31012*/ 00900000 LTR R15,R15 0348 00901000 BZ @RF00348 0348 00902000 * DO; /* SET REASON CODE @ZM31012*/ 00903000 * VVICERR=B1ONE; /* @ZM31012*/ 00904000 OI VVICERR,B'00010000' 0350 00905000 * IF ARSW=B1ONE THEN /* IS ACQ/REL REQUEST @ZM31012 00906000 * BEING PROCESSED @ZM31012*/ 00907000 TM ARSW,B'00100000' 0351 00908000 BNO @RF00351 0351 00909000 * DO; /* GO TO ROUTINE TO SET @ZM31012 00910000 * COMPLETION CODE IN EACH 0352 00911000 * @ZM31012 00912000 * REQUEST IN CHAIN @ZM31012*/ 00913000 * ARERRCD=CODE372; /* @ZM31012*/ 00914000 MVC ARERRCD(4),@CF00790 0353 00915000 * CALL ARERR2; /* GO TO ROUTINE TO SET @ZM31012 00916000 * COMPLETION CODE IN EACH 0354 00917000 * @ZM31012 00918000 * REQUEST IN CHAIN @ZM31012*/ 00919000 BAL @14,ARERR2 0354 00920000 * END; /* @ZM31012*/ 00921000 * ELSE /* NOT ACQ/REL REQUEST @ZM31012*/ 00922000 * RETNCODE=CODE372; /* SET THE REASON CODE @ZM31012*/ 00923000 B @RC00351 0356 00924000 @RF00351 MVC RETNCODE(4),@CF00790 0356 00925000 * END; /* @ZM31012*/ 00926000 * ELSE /* STORAGE OBTAINED FOR @ZM31012 00927000 * THE I/O CONTROL BLKS @ZM31012*/ 00928000 * DO; /* SET THE ADDRESSES OF @ZM31012 00929000 * I/O CONTROL BLKS @ZM31012*/ 00930000 * 0358 00931000 B @RC00348 0358 00932000 @RF00348 DS 0H 0359 00933000 * /*************************************************************/ 00934000 * /* */ 00935000 * /* GET ADDRESS OF CCW, SRB, IOSB, MSSC DATA AREA, @ZM31012*/ 00936000 * /* I/O ECB AND ORDER AREA IN GETMAIN STORAGE @ZM31012*/ 00937000 * /* */ 00938000 * /*************************************************************/ 00939000 * 0359 00940000 * CCWPTR=IODATAPT; /* @ZM31012*/ 00941000 L @09,IODATAPT 0359 00942000 ST @09,CCWPTR 0359 00943000 * SRBPTR=IODATAPT+LENGTH(CCWS);/* POSITION OF SRB @ZD00155*/ 00944000 LA @07,24 0360 00945000 ALR @07,@09 0360 00946000 ST @07,SRBPTR 0360 00947000 * IOSBPTR=IODATAPT+LENGTH(CCWS)+LENGTH(SRB);/* @ZD00155*/ 00948000 LA @07,68 0361 00949000 ALR @07,@09 0361 00950000 ST @07,IOSBPTR 0361 00951000 * SSCDATAP=IODATAPT+LENGTH(CCWS)+LENGTH(SRB)+/* @ZD00155*/ 00952000 * LENGTH(IOSB); /* @ZM31012*/ 00953000 LA @07,176 0362 00954000 ALR @07,@09 0362 00955000 ST @07,SSCDATAP 0362 00956000 * IOECB=ZERO; /* @ZM31012*/ 00957000 SLR @04,@04 0363 00958000 ST @04,IOECB(,@07) 0363 00959000 * ORDPTR=IODATAPT+LENGTH(CCWS)+LENGTH(SRB)+/* @ZD00155*/ 00960000 * LENGTH(IOSB)+LENGTH(SSCDATA);/* @ZM31012*/ 00961000 AL @09,@CF03058 0364 00962000 ST @09,ORDPTR 0364 00963000 * IF(REQCODE=SUSPEND&SUPPRSW=B1ONE) THEN/* SUSPEND @ZD00155 00964000 * PREP-TO-SWAP ? @ZD00155*/ 00965000 CLI REQCODE(R6),34 0365 00966000 BNE @RF00365 0365 00967000 TM SUPPRSW(R6),B'00100000' 0365 00968000 BNO @RF00365 0365 00969000 * NOOPPTR=IODATAPT+LENGTH(CCWS)+/* @ZD00155*/ 00970000 * LENGTH(SRB)+LENGTH(IOSB)+LENGTH(SSCDATA)/* @ZD00155*/ 00971000 * +ORDLENG; /* @ZD00155*/ 00972000 AL @09,ORDLENG 0366 00973000 ST @09,NOOPPTR 0366 00974000 * BUFFPTR=ORDPTR+LENGTH(NOOP1E)+ORDLENG;/* DATA AREA PTR 0367 00975000 * @ZA13482*/ 00976000 @RF00365 LA @09,4 0367 00977000 AL @09,ORDPTR 0367 00978000 AL @09,ORDLENG 0367 00979000 ST @09,BUFFPTR 0367 00980000 * END; /* @ZM31012*/ 00981000 * R14=R14IO; /* RESTORE INPUT REG 14 @ZM31012*/ 00982000 @RC00348 L R14,R14IO 0369 00983000 * RETURN; /* @ZM31012*/ 00984000 @EL00002 DS 0H 0370 00985000 @EF00002 DS 0H 0370 00986000 @ER00002 BR @14 0370 00987000 * END IOSTORG; /* @ZM31012*/ 00988000 * 0372 00989000 */* START OF SPECIFICATIONS **** @ZM31012 00990000 * @ZM31012 00991000 *01* MODULE-NAME = REQSTLU @ZM31012 00992000 * @ZM31012 00993000 *01* FUNCTION = THIS IS THE MAIN REQUEST PROCESSING LOOP OF @ZM31012 00994000 * THIS MODULE @ZM31012 00995000 * @ZM31012 00996000 * FOR REQUESTS WHICH SPECIFY MORE THAN ONE MSC @ZM31012 00997000 * COMMUNICATION, THE LOOP IS EXECUTED AS MANY TIMES @ZM31012 00998000 * AS NECESSARY. (ACQUIRE OR RELINQUISH REQUESTS MAY @ZM31012 00999000 * BE CHAINED, BUT NOT MIXED, BY PRESENT DESIGN). @ZM31012 01000000 * @ZM31012 01001000 * FOR OTHER REQUESTS, THE LOOP IS EXECUTED ONCE @ZM31012 01002000 * @ZM31012 01003000 * IF THE REQUEST ANTICIPATES A DELAYED RESPONSE @ZM31012 01004000 * FROM THE MSC, THE ROUTINE QUEELM IS CALLED @ZM31012 01005000 * @ZM31012 01006000 * MSVC IS CALLED FOR REQUESTS WHICH IT PROCESSES @ZM31012 01007000 * @ZM31012 01008000 * THE CONTROL BLOCKS FOR THE I/O ARE BUILT BY THE @ZM31012 01009000 * ROUTINE CCWBUILD @ZM31012 01010000 * THE ORDER FOR THE I/O IS BUILT BY ROUTINE MOVORDER @ZM31012 01011000 * THE CPU ID IS ADDED BY ROUTINE CPUID, IF REQUIRED @ZM31012 01012000 * THE ASID IS ADDED BY ROUTINE ASID, IF REQUIRED @ZM31012 01013000 * @ZM31012 01014000 * THIS ROUTINE BRANCHES TO THE FRONT END OF THE MSSC @ZM31012 01015000 * I/O DRIVER (ICB2SIOF) FOR EACH REQUEST TO BE ISSUED @ZM31012 01016000 * TO THE MSC AND WAITS FOR COMPLETION OF THAT REQUEST @ZM31012 01017000 * (DEVICE END AND CHANNEL END RETURNED BY THE MSC) @ZM31012 01018000 * -- NOTIFIED BY POSTING VIA THE MSSC I/O DRIVER @ZM31012 01019000 * TERMINATION ROUTINE (OR BACK END), ICB2SIOB @ZM31012 01020000 * @ZM31012 01021000 * AFTER COMPLETION OF THE I/O, THIS ROUTINE SETS THE @ZM31012 01022000 * APPROPRIATE REASON CODE IN EACH REQUEST @ZM31012 01023000 * IF NECESSARY, THE DELAYED RESPONSE QUEUE ELEMENT @ZM31012 01024000 * IS INVALIDATED (IN CASE OF MSVC OR I/O ERROR) @ZM31012 01025000 * @ZM31012 01026000 *02* INPUT = ADDRESS OF REQUEST BLOCK @ZM31012 01027000 * INDICATION IF ACQUIRE OR RELINQUISH REQUEST @ZM31012 01028000 * ADDRESS OF STORAGE FOR I/O @ZM31012 01029000 * ASSORTED ADDRESSES FROM MSSC CTL BLK @ZM31012 01030000 * @ZM31012 01031000 *02* OUTPUT = RETNCODE @ZM31012 01032000 * I/O TO MSC @ZM31012 01033000 * @ZM31012 01034000 **** END OF SPECIFICATIONS ** @X04AC00*/ 01035000 * 0372 01036000 *REQSTLU: 0372 01037000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* REQUEST LOOP @ZM31012*/ 01038000 REQSTLU DS 0H 0373 01039000 * DCL 0373 01040000 * R14LU POINTER(31); /* SAVE INPUT R14 @ZM31012*/ 01041000 * DCL 0374 01042000 * IGC0112F ENTRY; /* NEW MODULE FOR ACQUIRES 0374 01043000 * @ZA27588*/ 01044000 * R14LU=R14; /* SAVE CALLERS REG 14 @ZM31012*/ 01045000 ST R14,R14LU 0375 01046000 * IF ARSW=B1ONE THEN /* IS ACQ/REL SWITCH ON @ZM31012*/ 01047000 TM ARSW,B'00100000' 0376 01048000 BNO @RF00376 0376 01049000 * ARPTR=R6; /* ADDRESS FIRST REQUEST @ZM31012 01050000 * IN CHAIN @ZM31012*/ 01051000 ST R6,ARPTR 0377 01052000 * LOOPSW=B1ONE; /* @ZM31012*/ 01053000 @RF00376 OI LOOPSW,B'01000000' 0378 01054000 * DO WHILE LOOPSW=B1ONE; /* LOOP THRU REQUEST(S) @ZM31012 01055000 * ISSUING THE I/O @ZM31012*/ 01056000 B @DE00379 0379 01057000 @DL00379 DS 0H 0380 01058000 * IF ARSW=B1ONE THEN /* IS ACQ/REL SWITCH ON @ZM31012*/ 01059000 TM ARSW,B'00100000' 0380 01060000 BNO @RF00380 0380 01061000 * DO; /* CHECK IF DELAYED @ZM31012 01062000 * RESPONSE REQUEST @ZM31012*/ 01063000 * ESTAEFLG=C2ZEROS; /* @ZM31012*/ 01064000 SLR @09,@09 0382 01065000 STH @09,ESTAEFLG 0382 01066000 * ORDLENG=(ADDR(AREXT)-ADDR(AROP))+/* @ZM31012*/ 01067000 * (ARNMEXT*FOUR); /* @ZM31012 01068000 * CALCULATE LENGTH OF @ZM31012 01069000 * ACQ/REL ORDER @ZM31012*/ 01070000 L @09,ARPTR 0383 01071000 SLR @07,@07 0383 01072000 IC @07,ARNMEXT(,@09) 0383 01073000 SLA @07,2 0383 01074000 AL @07,@CF00487 0383 01075000 ST @07,ORDLENG 0383 01076000 * IF ACQSW=B1ONE THEN /* IS ACQ SWITCH ON @ZM31012*/ 01077000 TM ACQSW,B'00010000' 0384 01078000 BNO @RF00384 0384 01079000 * DO; /* CHECK FOR DELAYED @ZM31012 01080000 * RESPONSE REQUEST @ZM31012*/ 01081000 * IF ARDRES=B1ONE THEN /* @ZM31012 01082000 * IS DELAYED RESPONSE @ZM31012 01083000 * FLAG ON @ZM31012*/ 01084000 TM ARDRES(@09),B'01000000' 0386 01085000 BNO @RF00386 0386 01086000 * DO; /* SAVE ECB ADDRESS @ZM31012*/ 01087000 * DRSWITCH=B1ONE; /* @ZM31012 01088000 * INDICATE DELAYED @ZM31012 01089000 * RESPONSE REQUEST @ZM31012*/ 01090000 OI DRSWITCH,B'10000000' 0388 01091000 * DELRECB=ARECB; /* @ZM31012 01092000 * SAVE ECB ADDR @ZM31012*/ 01093000 L @09,ARECB(,@09) 0389 01094000 ST @09,DELRECB 0389 01095000 * END; /* @ZM31012*/ 01096000 * END; /* @ZM31012*/ 01097000 * ELSE /* RELINQUISH REQUEST @ZM31012*/ 01098000 * DO; /* CHECK FOR DELAYED @ZM31012 01099000 * RESPONSE REQUEST @ZM31012*/ 01100000 B @RC00384 0392 01101000 @RF00384 DS 0H 0393 01102000 * IF ARCOMPC=ZERO THEN /* @ZM31012 01103000 * DOES REQUEST HAVE ZERO 0393 01104000 * @ZM31012 01105000 * COMPLETION CODE @ZM31012*/ 01106000 L @09,ARPTR 0393 01107000 LH @07,ARCOMPC(,@09) 0393 01108000 N @07,@CF03081 0393 01109000 LTR @07,@07 0393 01110000 BNZ @RF00393 0393 01111000 * DO; /* CHECK FOR DELAYED @ZM31012 01112000 * RESPONSE REQUEST @ZM31012*/ 01113000 * IF ARDRES=B1ONE THEN/* @ZM31012 01114000 * IS DELAYED RESPONSE @ZM31012 01115000 * FLAG ON @ZM31012*/ 01116000 TM ARDRES(@09),B'01000000' 0395 01117000 BNO @RF00395 0395 01118000 * DO; /* SAVE ECB ADDRESS @ZM31012*/ 01119000 * DRSWITCH=B1ONE;/* @ZM31012 01120000 * INDICATE DELAYED RESP @ZM31012 01121000 * REQUEST @ZM31012*/ 01122000 OI DRSWITCH,B'10000000' 0397 01123000 * DELRECB=ARECB;/* @ZM31012 01124000 * SAVE ECB ADDR @ZM31012*/ 01125000 L @09,ARECB(,@09) 0398 01126000 ST @09,DELRECB 0398 01127000 * END; /* @ZM31012*/ 01128000 * END; /* @ZM31012*/ 01129000 * ELSE /* REQUEST IN ERROR @ZM31012*/ 01130000 * RETNCODE=FOUR; /* @ZM31012 01131000 * SET REASON CODE TO 4 @ZM31012*/ 01132000 B @RC00393 0401 01133000 @RF00393 MVC RETNCODE(4),@CF00076 0401 01134000 * END; /* @ZM31012*/ 01135000 @RC00393 DS 0H 0403 01136000 * END; /* @ZM31012*/ 01137000 @RC00384 DS 0H 0404 01138000 */* ****************************************************** @ZM31012*/ 01139000 */* @ZM31012*/ 01140000 */* IF THE REQUEST HAS AN IMPLIED OR REQUESTED DELAYED @ZM31012*/ 01141000 */* RESPONSE, CREATE A QUEUE ELEMENT IN SQA AND QUEUE @ZM31012*/ 01142000 */* THE ELEMENT AT THE HEAD OF THE CHAIN @ZM31012*/ 01143000 */* @ZM31012*/ 01144000 */* ****************************************************** @ZM31012*/ 01145000 * 0404 01146000 * IF DRSWITCH=B1ONE THEN /* IS DELAYED RESPONSE @ZM31012 01147000 * REQUEST @ZM31012*/ 01148000 @RF00380 TM DRSWITCH,B'10000000' 0404 01149000 BNO @RF00404 0404 01150000 * CALL QUEELM; /* QUEUE DELAYED RESPONSE 0405 01151000 * @ZM31012 01152000 * ELEMENT @ZM31012*/ 01153000 BAL @14,QUEELM 0405 01154000 * IF RETNCODE=ZERO THEN /* IS REASON CODE ZERO @ZM31012*/ 01155000 @RF00404 L @09,RETNCODE 0406 01156000 LTR @09,@09 0406 01157000 BNZ @RF00406 0406 01158000 * DO; /* SET UP I/O BLKS, ISSUE 0407 01159000 * @ZM31012 01160000 * THE I/O @ZM31012*/ 01161000 * INPUTREQ=ADDR(SAVEREQ); /* @ZM31012*/ 01162000 LA @09,SAVEREQ 0408 01163000 ST @09,INPUTREQ 0408 01164000 * SAVEREQ(1:LISTLEN)=INPTLIST(1:LISTLEN);/* @ZM31012*/ 01165000 L @09,LISTLEN(,R6) 0409 01166000 BCTR @09,0 0409 01167000 EX @09,@SM03082 0409 01168000 * IF(REQCODE=MOUNT&MDVISMNT=B1ZERO)/* @ZM31012*/ 01169000 * |REQCODE=DEMOUNT| /* @ZM31012*/ 01170000 * REQCODE=NULLCART| /* @Z40LB01*/ 01171000 * REQCODE=DEFINE|REQCODE=MOVE|/* @ZM31012*/ 01172000 * REQCODE=COPYV|REQCODE=COPYC|/* @ZM31012*/ 01173000 * (REQCODE=ACQUIRE&ARSEC=B1ONE)|/* @G24LB01*/ 01174000 * (REQCODE=SUSPEND&SUPPRSW=B1ZERO)|REQCODE=PURGE|/* 0410 01175000 * @ZD00155*/ 01176000 * (REQCODE=ASSOCIAT&(ASASSOC=B1ONE|/* @ZA05118*/ 01177000 * ASDASSOC=B1ONE|ASDMNT=B1ONE|ASDEINT=/* @ZA05118*/ 01178000 * B1ONE)) /* @ZA05118*/ 01179000 * THEN /* @ZM31012 01180000 * IS REQUEST ONE THAT @ZM31012 01181000 * MUST BE SENT TO MSVC @ZM31012*/ 01182000 CLI REQCODE(R6),8 0410 01183000 BNE @GL00045 0410 01184000 TM MDVISMNT(R6),B'01000000' 0410 01185000 BZ @RT00410 0410 01186000 @GL00045 CLI REQCODE(R6),6 0410 01187000 BE @RT00410 0410 01188000 CLI REQCODE(R6),9 0410 01189000 BE @RT00410 0410 01190000 CLI REQCODE(R6),24 0410 01191000 BE @RT00410 0410 01192000 CLI REQCODE(R6),14 0410 01193000 BE @RT00410 0410 01194000 CLI REQCODE(R6),42 0410 01195000 BE @RT00410 0410 01196000 CLI REQCODE(R6),40 0410 01197000 BE @RT00410 0410 01198000 CLI REQCODE(R6),2 0410 01199000 BNE @GL00038 0410 01200000 L @09,ARPTR 0410 01201000 TM ARSEC(@09),B'00010000' 0410 01202000 BO @RT00410 0410 01203000 @GL00038 CLI REQCODE(R6),34 0410 01204000 BNE @GL00037 0410 01205000 TM SUPPRSW(R6),B'00100000' 0410 01206000 BZ @RT00410 0410 01207000 @GL00037 CLI REQCODE(R6),20 0410 01208000 BE @RT00410 0410 01209000 CLI REQCODE(R6),44 0410 01210000 BNE @RF00410 0410 01211000 TM ASASSOC(R6),B'11000110' 0410 01212000 BZ @RF00410 0410 01213000 @RT00410 DS 0H 0411 01214000 * DO; /* SEND REQUEST TO MSVC @ZM31012*/ 01215000 * R0=ZERO; /* INDICATE 1ST ENTRY @ZM31012 01216000 * INTO MSVC FOR REQUEST @ZM31012*/ 01217000 SLR R0,R0 0412 01218000 * R1=R6; /* ADDRESS REQUEST @ZM31012*/ 01219000 LR R1,R6 0413 01220000 * RFY 0414 01221000 * (R13) RESTRICTED; /* @ZM31012*/ 01222000 * R13=ADDR(SAVAREA); /* @ZM31012 01223000 * SUPPLY REG SAVEAREA @ZM31012*/ 01224000 * 0415 01225000 LA R13,SAVAREA 0415 01226000 * /*******************************************************/ 01227000 * /* */ 01228000 * /* MSVC ACQ REQUESTS GO TO SCREENING RTN @G24LB01*/ 01229000 * /* OTHERS TO QUEUE MGR. @G24LB01*/ 01230000 * /* */ 01231000 * /*******************************************************/ 01232000 * 0416 01233000 * IF REQCODE=ACQUIRE THEN/* @G24LB01*/ 01234000 CLI REQCODE(R6),2 0416 01235000 BNE @RF00416 0416 01236000 * R15=ICBVSCRA; /* MSVC SCREENING RTN @ZA24770*/ 01237000 L @09,ICBPTR 0417 01238000 L R15,ICBVSCRA(,@09) 0417 01239000 * ELSE /* SEND REQ TO QUEUE MGR @G24LB01*/ 01240000 * R15=ICBVVIC; /* @G24LB01 01241000 * GET ADDR OF MSVC @ZM31012*/ 01242000 B @RC00416 0418 01243000 @RF00416 L @09,ICBPTR 0418 01244000 L R15,ICBVVIC(,@09) 0418 01245000 * VVICCALL=B1ONE; /* @ZM31012*/ 01246000 @RC00416 OI VVICCALL,B'01000000' 0419 01247000 * GEN REFS(R14,R15); 0420 01248000 * /*@ZM31012*/ 01249000 BALR R14,R15 BRANCH TO MSVC @ZM31012 01250000 * R13=R10; /* RESTORE SVC SAVEAREA @ZM31012*/ 01251000 LR R13,R10 0421 01252000 * RFY 0422 01253000 * (R13) UNRESTRICTED; /* @ZM31012*/ 01254000 * IF R15^=ZERO THEN /* @ZM31012 01255000 * DID MSVC DETECT AN @ZM31012 01256000 * ERROR @ZM31012*/ 01257000 LTR R15,R15 0423 01258000 BZ @RF00423 0423 01259000 * DO; /* SAVE MSVC ERROR @ZM31012*/ 01260000 * VVICERR=B1ONE; /* @ZM31012 01261000 * INDICATE MSVC DETECTED 0425 01262000 * @ZM31012 01263000 * ERROR @ZM31012*/ 01264000 OI VVICERR,B'00010000' 0425 01265000 * LOOPSW=B1ZERO; /* @ZM31012 01266000 * INDICATE GET OUT OF I/O 0426 01267000 * @ZM31012 01268000 * LOOP @ZM31012*/ 01269000 NI LOOPSW,B'10111111' 0426 01270000 * RETNCODE=R0; /* @ZM31012 01271000 * SAVE MSVC ERROR CODE @ZM31012*/ 01272000 ST R0,RETNCODE 0427 01273000 * IF DRSWITCH=B1ONE THEN/* @ZM31012 01274000 * DID REQUEST HAVE @ZM31012 01275000 * A DELAYED RESPONSE @ZM31012*/ 01276000 TM DRSWITCH,B'10000000' 0428 01277000 BNO @RF00428 0428 01278000 * DO; /* INVALIDATE ELEMENT @ZM31012*/ 01279000 * QELFLG3=FOXFOX;/* @ZM31012*/ 01280000 L @09,NEWELPTR 0430 01281000 MVI QELFLG3(@09),X'FF' 0430 01282000 * ELEMINV=B1ONE;/* @ZM31012 01283000 * INDICATE QUEUE ELEMENT 0431 01284000 * @ZM31012 01285000 * INVALIDATED FOR REQUEST 0431 01286000 * @ZM31012*/ 01287000 OI ELEMINV,B'00000001' 0431 01288000 * END; /* @ZM31012*/ 01289000 * END; /* @ZM31012*/ 01290000 * ELSE /* MSVC DID NOT @ZM31012 01291000 * DETECT AN ERROR @ZM31012*/ 01292000 * RETNCODE=ZERO; /* @ZM31012 01293000 * ZERO REASON CODE - @ZM31012 01294000 * NO ERROR INDICATION @ZM31012*/ 01295000 B @RC00423 0434 01296000 @RF00423 SLR @09,@09 0434 01297000 ST @09,RETNCODE 0434 01298000 * END; /* @ZM31012*/ 01299000 @RC00423 DS 0H 0436 01300000 * IF RETNCODE=ZERO THEN /* @ZM31012 01301000 * HAS AN ERROR BEEN @ZM31012 01302000 * FOUND @ZM31012*/ 01303000 @RF00410 L @09,RETNCODE 0436 01304000 LTR @09,@09 0436 01305000 BNZ @RF00436 0436 01306000 * DO; /* NO, CONTINUE WITH I/O @ZM31012*/ 01307000 * CALL IOBLKBLD; /* SET UP IO BLOCKS @ZM31012*/ 01308000 BAL @14,IOBLKBLD 0438 01309000 * CALL CCWBUILD; /* BUILD THE CCWS @ZM31012*/ 01310000 BAL @14,CCWBUILD 0439 01311000 * CALL MOVORDER; /* MOVE ORDER INTO I/O BLK 0440 01312000 * @ZM31012 01313000 * AREA @ZM31012*/ 01314000 BAL @14,MOVORDER 0440 01315000 * IF RETNCODE=ZERO THEN /* IF NON-ZERO THEN WAS QUERY LT 01316000 * MSC AND NONE WAS AVAILABLE */ 01317000 L @09,RETNCODE 0441 01318000 LTR @09,@09 0441 01319000 BNZ @RF00441 0441 01320000 * DO; /* CONTINUE OTHERWISE @ZA27590*/ 01321000 * CALL CPUID; /* PUT CPUID INTO ORDER @ZM31012*/ 01322000 BAL @14,CPUID 0443 01323000 * IF DRSWITCH=B1ONE THEN/* @ZM31012 01324000 * DOES THE REQUEST HAVE @ZM31012 01325000 * A DELAYED RESPONSE @ZM31012*/ 01326000 TM DRSWITCH,B'10000000' 0444 01327000 BNO @RF00444 0444 01328000 * CALL ASID; /* GO INSERT ASID INTO @ZM31012 01329000 * THE ORDER @ZM31012*/ 01330000 * 0445 01331000 BAL @14,ASID 0445 01332000 * /***************************************************/ 01333000 * /* */ 01334000 * /* IF ICBMSSC AND USERX1 ARE NOT ZERO THEN @G24LB01*/ 01335000 * /* BRANCH TO TRAP EXIT ROUTINE. @G24LB01*/ 01336000 * /* */ 01337000 * /***************************************************/ 01338000 * 0446 01339000 * IF ICBMSSC^=ZERO&USERX1^=ZERO THEN/* @G24LB01*/ 01340000 @RF00444 SLR @09,@09 0446 01341000 L @07,ICBPTR 0446 01342000 L @07,ICBMSSC(,@07) 0446 01343000 CR @07,@09 0446 01344000 BE @RF00446 0446 01345000 C @09,USERX1(,@07) 0446 01346000 BE @RF00446 0446 01347000 * DO; /* @G24LB01*/ 01348000 * R1=IOSBPTR; /* SET R1 PTR TO IOSB @G24LB01*/ 01349000 L R1,IOSBPTR 0448 01350000 * RETNCODE=CODE377;/* SET SPECIAL RETCODE 0449 01351000 * @G24LB01*/ 01352000 MVC RETNCODE(4),@CF00798 0449 01353000 * GEN(STM 0,15,SAVAREA);/* SAVE REGS @ZA17151*/ 01354000 STM 0,15,SAVAREA 01355000 * R15=USERX1; /* SET BRANCH ENTRY @ZA17151*/ 01356000 L @09,ICBPTR 0451 01357000 L @09,ICBMSSC(,@09) 0451 01358000 L R15,USERX1(,@09) 0451 01359000 * GEN(BALR 14,15);/* BRANCH TRAP CODE @G24LB01*/ 01360000 BALR 14,15 01361000 * GEN(LM 0,15,SAVAREA);/* RESTORE REGS @ZA17151*/ 01362000 LM 0,15,SAVAREA 01363000 * RETNCODE=ZERO;/* RESET RETURN CODE @G24LB01*/ 01364000 SLR @09,@09 0454 01365000 ST @09,RETNCODE 0454 01366000 * END; /* END TRAP CODE @G24LB01*/ 01367000 * 0455 01368000 * /***************************************************/ 01369000 * /* */ 01370000 * /* OBTAIN THE ADDRESS OF THE SRB AND BRANCH */ 01371000 * /* @ZM31012*/ 01372000 * /* I/O DRIVER. WAIT FOR THE I/O TO BE POSTED. */ 01373000 * /* @ZM31012*/ 01374000 * /* */ 01375000 * /***************************************************/ 01376000 * 0456 01377000 * IF REQCODE=ACQUIRE&ICBVOLST^=ZERO THEN/* CALL 0456 01378000 * IGC0112F ? */ 01379000 @RF00446 CLI REQCODE(R6),2 0456 01380000 BNE @RF00456 0456 01381000 L @09,ICBPTR 0456 01382000 L @09,ICBVOLST(,@09) 0456 01383000 LTR @09,@09 0456 01384000 BZ @RF00456 0456 01385000 * DO; /* YES , CALL TO SEE IF CAN ELIM 01386000 * THIS ACQUIRE @ZA27588*/ 01387000 * RFY 0458 01388000 * (R13) RSTD; /* SAVE MY SAVE AREA ADDR 0458 01389000 * @ZA27588*/ 01390000 * R13=ADDR(SAVAREA);/* @ZA27588*/ 01391000 LA R13,SAVAREA 0459 01392000 * RECOVERY=C7ZEROS;/* CLEAR ENQ AREA @ZA27588*/ 01393000 MVC RECOVERY(7),C7ZEROS 0460 01394000 * CALL IGC0112F(ICBPTR,ORDPTR,'BIO',RECOVERY);/* 01395000 * BIO CALL */ 01396000 LA @09,ICBPTR 0461 01397000 ST @09,@AL00001 0461 01398000 LA @09,ORDPTR 0461 01399000 ST @09,@AL00001+4 0461 01400000 LA @09,@CC02570 0461 01401000 ST @09,@AL00001+8 0461 01402000 LA @09,RECOVERY 0461 01403000 ST @09,@AL00001+12 0461 01404000 L @15,@CV02563 0461 01405000 LA @01,@AL00001 0461 01406000 BALR @14,@15 0461 01407000 * R13=R10; /* RESET DATA AREA ADDR @ZA27588*/ 01408000 LR R13,R10 0462 01409000 * RFY 0463 01410000 * (R13) UNRSTD;/* RELEASE R13 TO COMPILER 0463 01411000 * @ZA27588*/ 01412000 * IF R15=FOUR THEN/* CAN I ELIM THIS ACQUIRE ? 0464 01413000 * @ZA27588*/ 01414000 C R15,@CF00076 0464 01415000 BNE @RF00464 0464 01416000 * DO; /* YES. SET UP TO LOOK LIKE I/O 01417000 * DONE @ZA27588*/ 01418000 * R15=ZERO; /* SET GOOD RETURN CODE @ZA27588*/ 01419000 SLR R15,R15 0466 01420000 * ECBCODE=C7FH;/* SET GOOD POST CODE @ZA27588*/ 01421000 L @09,SSCDATAP 0467 01422000 MVI ECBCODE(@09),X'7F' 0467 01423000 * IO=B1ONE; /* INDICATE I/O ISSUED @ZA27588*/ 01424000 OI IO,B'00010000' 0468 01425000 * GO TO BYPASSIO;/* NOW SKIP I/O @ZA27588*/ 01426000 B BYPASSIO 0469 01427000 * END; /* @ZA27588*/ 01428000 * END; /* @ZA27588*/ 01429000 @RF00464 DS 0H 0472 01430000 * R1=SRBPTR; /* ADDRESS OF THE SRB @ZM31012*/ 01431000 @RF00456 L R1,SRBPTR 0472 01432000 * RFY 0473 01433000 * (R13) RESTRICTED;/* @ZM31012*/ 01434000 * R13=ADDR(SAVAREA);/* @ZM31012 01435000 * SUPPLY REG SAVEAREA @ZM31012*/ 01436000 LA R13,SAVAREA 0474 01437000 * R15=ICBSIOP; /* GET ADDR OF FRONT END @ZM31012 01438000 * OF I/O DRIVER @ZM31012*/ 01439000 L @09,ICBPTR 0475 01440000 L R15,ICBSIOP(,@09) 0475 01441000 * GENERATE REFS(R14,R15); 0476 01442000 * /*@ZM31012*/ 01443000 BALR R14,R15 BRANCH TO I/O DRIVER @ZM31012 01444000 * IO=B1ONE; /* INDICATE I/O ISSUED @ZM31012*/ 01445000 OI IO,B'00010000' 0477 01446000 * R13=R10; /* RESTORE SVC SAVE AREA @ZM31012*/ 01447000 LR R13,R10 0478 01448000 * RFY 0479 01449000 * (R13) UNRESTRICTED;/* @ZM31012*/ 01450000 * IF R15=ZERO THEN /* @ZM31012 01451000 * DID I/O DRIVER ISSUE @ZM31012 01452000 * THE I/O @ZM31012*/ 01453000 LTR R15,R15 0480 01454000 BNZ @RF00480 0480 01455000 * DO; /* YES, WAIT TO COMPLETE @ZM31012*/ 01456000 * RFY 0482 01457000 * (R9) RESTRICTED;/* @ZA27588*/ 01458000 * R9=ADDR(IOECB);/* ADDRESS OF THE I/O ECB 0483 01459000 * @ZA27588*/ 01460000 L R9,SSCDATAP 0483 01461000 * GENERATE REFS(R9); 0484 01462000 * /*@ZA27588*/ 01463000 IWAIT WAIT ECB=(R9) WAIT FOR I/O TO COMPLETE @ZA27588 01464000 * RFY 0485 01465000 * (R9) UNRESTRICTED;/* @ZA27588*/ 01466000 * R15=ZERO; /* @ZM31012*/ 01467000 SLR R15,R15 0486 01468000 * END; /* @ZM31012*/ 01469000 * 0487 01470000 * /***************************************************/ 01471000 * /* */ 01472000 * /* *************************************************/ 01473000 * /* **** @ZA30410*/ 01474000 * /* UPDATE AND SHIFT THE ORDER TRACE AREA DATA, THEN*/ 01475000 * /* @ZA30410*/ 01476000 * /* MOVE INTO THE LAST ORDER FIELD THE PARAMETERS IN*/ 01477000 * /* @ZA30410*/ 01478000 * /* THE INPUT REQUEST BLOCK STARTING WITH BYTE 4. */ 01479000 * /* @ZA30410*/ 01480000 * /* INSERT THE IOERRCD INTO THE SECOND BYTE OF THE */ 01481000 * /* @ZA30410*/ 01482000 * /* LAST ORDER FIELD(IMMEDIATELY FOLLOWING THE ORDER*/ 01483000 * /* @ZA30410*/ 01484000 * /* CODE.) @ZA30410*/ 01485000 * /* *************************************************/ 01486000 * /* **** @ZA30410*/ 01487000 * /* */ 01488000 * /***************************************************/ 01489000 * 0488 01490000 * RFY 0488 01491000 * (R9) RESTRICTED; /* @ZA30410*/ 01492000 @RF00480 DS 0H 0489 01493000 * IF ARSW=B1ONE THEN/* IS ACQ/REL REQ BEING @ZA30410 01494000 * PROCESSED @ZA30410*/ 01495000 TM ARSW,B'00100000' 0489 01496000 BNO @RF00489 0489 01497000 * R9=ARPTR; /* SAVE REQ BLK POINTER @ZA30410*/ 01498000 L R9,ARPTR 0490 01499000 * ELSE /* NOT ACQ/REL REQUEST @ZA30410*/ 01500000 * R9=R6; /* SAVE ADDR OF REQUEST @ZA30410*/ 01501000 B @RC00489 0491 01502000 @RF00489 LR R9,R6 0491 01503000 * ICBOTRC=ICBTRACE(TRCENTLN+1:TRCENTLN+LENGTH(ICBOTRC)) 01504000 * ; /* @ZA30410*/ 01505000 @RC00489 L @07,ICBPTR 0492 01506000 MVC @TS00001(256),ICBTRACE+16(@07) 0492 01507000 MVC ICBOTRC(256,@07),@TS00001 0492 01508000 * ICBLORD=''B; /* @ZA30410*/ 01509000 XC ICBLORD(128,@07),ICBLORD(@07) 0493 01510000 * IF LISTLEN<=ONE32 THEN/* MOVE COMPLETE PARM LIST 0494 01511000 * @ZA30410*/ 01512000 L @04,LISTLEN(,R6) 0494 01513000 C @04,@CF02521 0494 01514000 BH @RF00494 0494 01515000 * ICBLORD(1:LISTLEN-4)=R9->DATAAREA(5:LISTLEN);/* 01516000 * @ZA30410*/ 01517000 SL @04,@CF00084 0495 01518000 EX @04,@SM03086 0495 01519000 * ELSE /* PARM GREATER THAN 132 BYTES 0496 01520000 * @ZA30410*/ 01521000 * ICBLORD=R9->DATAAREA(5:ONE32);/* LIMIT TO 128 0496 01522000 * BYTES @ZA30410*/ 01523000 B @RC00494 0496 01524000 @RF00494 L @07,ICBPTR 0496 01525000 MVC ICBLORD(128,@07),DATAAREA+4(R9) 0496 01526000 * ICBLORD(2:2)=IOERRCD;/* INSERT ERROR CODE @ZA30410*/ 01527000 @RC00494 L @07,SSCDATAP 0497 01528000 LH @07,IOERRCD(,@07) 0497 01529000 L @04,ICBPTR 0497 01530000 STC @07,ICBLORD+1(,@04) 0497 01531000 * RFY 0498 01532000 * (R9) UNRESTRICTED;/* @Y30LB00*/ 01533000 *BYPASSIO: /* @ZA27588*/ 01534000 * IOCMP=B1ONE; /* @ZM31085*/ 01535000 * 0499 01536000 BYPASSIO OI IOCMP,B'00001000' 0499 01537000 * /***************************************************/ 01538000 * /* */ 01539000 * /* IF ICBMSSC AND USERX2 ARE NOT ZERO THEN @G24LB01*/ 01540000 * /* BRANCH TO TRAP EXIT ROUTINE. @G24LB01*/ 01541000 * /* */ 01542000 * /***************************************************/ 01543000 * 0500 01544000 * IF ICBMSSC^=ZERO&USERX2^=ZERO THEN/* @G24LB01*/ 01545000 SLR @09,@09 0500 01546000 L @07,ICBPTR 0500 01547000 L @07,ICBMSSC(,@07) 0500 01548000 CR @07,@09 0500 01549000 BE @RF00500 0500 01550000 C @09,USERX2(,@07) 0500 01551000 BE @RF00500 0500 01552000 * DO; /* @G24LB01*/ 01553000 * R1=IOSBPTR; /* POINT TO IOB @G24LB01*/ 01554000 L R1,IOSBPTR 0502 01555000 * GEN(STM 0,15,SAVAREA);/* SAVE REGS @ZA17151*/ 01556000 STM 0,15,SAVAREA 01557000 * R15=USERX2; /* SET BRANCH ENTRY @G24LB01*/ 01558000 L @09,ICBPTR 0504 01559000 L @09,ICBMSSC(,@09) 0504 01560000 L R15,USERX2(,@09) 0504 01561000 * GEN(BALR 14,15);/* BRANCH TRAP CODE @G24LB01*/ 01562000 BALR 14,15 01563000 * GEN(LM 0,15,SAVAREA);/* RESTORE REGS @ZA17151*/ 01564000 LM 0,15,SAVAREA 01565000 * END; /* END TRAP CODE @G24LB01*/ 01566000 * 0507 01567000 * /***************************************************/ 01568000 * /* */ 01569000 * /* TEST TO DETERMINE IF I/O PROCESSING OF THE MSC */ 01570000 * /* @Y30LB00*/ 01571000 * /* REQUEST COMPLETED WITHOUT ERROR. @ZM31012*/ 01572000 * /* */ 01573000 * /***************************************************/ 01574000 * 0508 01575000 * IF ECBCODE^=C7FH|R15^=ZERO THEN/* @ZM31012 01576000 * DID I/O HAVE ERROR @ZM31012*/ 01577000 @RF00500 L @09,SSCDATAP 0508 01578000 CLI ECBCODE(@09),127 0508 01579000 BNE @RT00508 0508 01580000 LTR R15,R15 0508 01581000 BZ @RF00508 0508 01582000 @RT00508 DS 0H 0509 01583000 * DO; /* SAVE ERROR CODE @ZM31012*/ 01584000 * IOBAD=B1ONE; /* @ZM31012*/ 01585000 OI IOBAD,B'00000010' 0510 01586000 * IF ARSW=B1ONE THEN/* @ZM31012 01587000 * IS ACQ/REL SWITCH ON @ZM31012*/ 01588000 TM ARSW,B'00100000' 0511 01589000 BNO @RF00511 0511 01590000 * DO; /* SET ERROR IN REQUEST @ZM31012*/ 01591000 * ARCOMPC=IOERRCD;/* @ZM31012*/ 01592000 L @09,SSCDATAP 0513 01593000 LH @09,IOERRCD(,@09) 0513 01594000 L @07,ARPTR 0513 01595000 STH @09,ARCOMPC(,@07) 0513 01596000 * IF ACQSW=B1ONE THEN/* @ZM31012 01597000 * IS ACQ SWITCH ON @ZM31012*/ 01598000 TM ACQSW,B'00010000' 0514 01599000 BNO @RF00514 0514 01600000 * DO; /* GO SET NO-FURTHER @ZM31012 01601000 * PROCESSING IN REST OF @ZM31012 01602000 * REQUESTS IN CHAIN @ZM31012*/ 01603000 * ARERRCD=CODE368;/* @ZM31012*/ 01604000 MVC ARERRCD(4),@CF00796 0516 01605000 * CALL ARERR1;/* @ZM31012 01606000 * GO SET NO-FURTHER- @ZM31012 01607000 * PROCESSING COMP CODE @ZM31012 01608000 * IN SUBSEQUENT REQS IN @ZM31012 01609000 * CHAIN @ZM31012*/ 01610000 BAL @14,ARERR1 0517 01611000 * IF ICBVOLST^=ZERO THEN/* CALL IGC0112F 01612000 * ? @ZA27588*/ 01613000 L @09,ICBPTR 0518 01614000 L @09,ICBVOLST(,@09) 0518 01615000 LTR @09,@09 0518 01616000 BZ @RF00518 0518 01617000 * DO; /* YES , CALL TO RESET CYLINDERS 01618000 * ACQUIRED INDICATORS */ 01619000 * RFY 0520 01620000 * (R13) RSTD;/* SAVE MY SAVE AREA 0520 01621000 * ADDR @ZA27588*/ 01622000 * R13=ADDR(SAVAREA);/* @ZA27588*/ 01623000 LA R13,SAVAREA 0521 01624000 * RECOVERY=C7ZEROS;/* CLEAR ENQ AREA 01625000 * @ZA27588*/ 01626000 MVC RECOVERY(7),C7ZEROS 0522 01627000 * CALL IGC0112F(ICBPTR,ORDPTR,'EIO', 01628000 * RECOVERY);/* EIO CALL */ 01629000 LA @09,ICBPTR 0523 01630000 ST @09,@AL00001 0523 01631000 LA @09,ORDPTR 0523 01632000 ST @09,@AL00001+4 0523 01633000 LA @09,@CC02575 0523 01634000 ST @09,@AL00001+8 0523 01635000 LA @09,RECOVERY 0523 01636000 ST @09,@AL00001+12 0523 01637000 L @15,@CV02563 0523 01638000 LA @01,@AL00001 0523 01639000 BALR @14,@15 0523 01640000 * R13=R10;/* RESET DATA AREA ADDR 0524 01641000 * @ZA27588*/ 01642000 LR R13,R10 0524 01643000 * RFY 0525 01644000 * (R13) UNRSTD;/* RELEASE R13 TO 0525 01645000 * COMPILER @ZA27588*/ 01646000 * END;/* @ZA27588*/ 01647000 * END; /* @ZM31012*/ 01648000 * ELSE /* RELINQUISH REQUEST @ZM31012*/ 01649000 * RELERRSW=B1ONE;/* @ZM31012 01650000 * SET REL ERROR SWITCH ON 0528 01651000 * @ZM31012*/ 01652000 B @RC00514 0528 01653000 @RF00514 OI RELERRSW,B'10000000' 0528 01654000 * END; /* @ZM31012*/ 01655000 * ELSE /* NOT ACQ/REL REQUEST @ZM31012*/ 01656000 * RETNCODE=IOERRCD;/* @ZM31012 01657000 * SET REASON CODE TO @ZM31012 01658000 * ERROR @ZM31012*/ 01659000 * 0530 01660000 B @RC00511 0530 01661000 @RF00511 L @09,SSCDATAP 0530 01662000 LH @09,IOERRCD(,@09) 0530 01663000 ST @09,RETNCODE 0530 01664000 * /***********************************************/ 01665000 * /* */ 01666000 * /* IF THE REQUEST HAS AN IMPLIED OR REQUESTED */ 01667000 * /* DELAYED @ZM31012*/ 01668000 * /* RESPONSE, THE ELEMENT QUEUED FOR THE REQUEST*/ 01669000 * /* MUST @ZM31012*/ 01670000 * /* BE MARKED INVALID @ZM31012*/ 01671000 * /* */ 01672000 * /***********************************************/ 01673000 * 0531 01674000 * IF DRSWITCH=B1ONE THEN/* @ZM31012 01675000 * DID REQUEST HAVE A @ZM31012 01676000 * DELAYED RESPONSE @ZM31012*/ 01677000 @RC00511 TM DRSWITCH,B'10000000' 0531 01678000 BNO @RF00531 0531 01679000 * DO; /* INVALIDATE DELAYED @ZM31012 01680000 * RESPONSE ELEMENT ON @ZM31012 01681000 * QUEUE @ZM31012*/ 01682000 * QELFLG3=FOXFOX;/* @ZM31012*/ 01683000 L @09,NEWELPTR 0533 01684000 MVI QELFLG3(@09),X'FF' 0533 01685000 * ELEMINV=B1ONE;/* @ZM31012 01686000 * INDICATE QUEUE ELEMENT 0534 01687000 * @ZM31012 01688000 * INVALIDATED FOR REQ @ZM31012*/ 01689000 OI ELEMINV,B'00000001' 0534 01690000 * END; /* @ZM31012*/ 01691000 * END; /* @ZM31012*/ 01692000 * ELSE /* I/O DID NOT HAVE ERROR 0537 01693000 * @ZM31012*/ 01694000 * DO; /* CHECK OF VARY REQUEST @ZM31012*/ 01695000 B @RC00508 0537 01696000 @RF00508 DS 0H 0538 01697000 * IF ICBVOLST^=ZERO&(REQCODE=DEMOUNT|REQCODE=PURGE| 01698000 * /* @ZA27588*/ 01699000 * REQCODE=SUSPEND|REQCODE=ASSOCIAT|REQCODE= 01700000 * RELINQ) THEN/* @ZA27588*/ 01701000 L @09,ICBPTR 0538 01702000 L @09,ICBVOLST(,@09) 0538 01703000 LTR @09,@09 0538 01704000 BZ @RF00538 0538 01705000 CLI REQCODE(R6),6 0538 01706000 BE @RT00538 0538 01707000 CLI REQCODE(R6),20 0538 01708000 BE @RT00538 0538 01709000 CLI REQCODE(R6),34 0538 01710000 BE @RT00538 0538 01711000 CLI REQCODE(R6),44 0538 01712000 BE @RT00538 0538 01713000 CLI REQCODE(R6),4 0538 01714000 BNE @RF00538 0538 01715000 @RT00538 DS 0H 0539 01716000 * DO; /* PERFORM MAINTENANCE ON VOLUME 01717000 * LIST @ZA27588*/ 01718000 * RFY 0540 01719000 * (R13) RSTD;/* SAVE MY SAVE AREA ADDR 0540 01720000 * @ZA27588*/ 01721000 * R13=ADDR(SAVAREA);/* @ZA27588*/ 01722000 LA R13,SAVAREA 0541 01723000 * RECOVERY=C7ZEROS;/* CLEAR ENQ AREA @ZA27588*/ 01724000 MVC RECOVERY(7),C7ZEROS 0542 01725000 * CALL IGC0112F(ICBPTR,ORDPTR,'AIO',RECOVERY); 01726000 LA @09,ICBPTR 0543 01727000 ST @09,@AL00001 0543 01728000 LA @09,ORDPTR 0543 01729000 ST @09,@AL00001+4 0543 01730000 LA @09,@CC02576 0543 01731000 ST @09,@AL00001+8 0543 01732000 LA @09,RECOVERY 0543 01733000 ST @09,@AL00001+12 0543 01734000 L @15,@CV02563 0543 01735000 LA @01,@AL00001 0543 01736000 BALR @14,@15 0543 01737000 * /* AIO CALL */ 01738000 * R13=R10; /* RESET DATA AREA ADDR @ZA27588*/ 01739000 LR R13,R10 0544 01740000 * RFY 0545 01741000 * (R13) UNRSTD;/* RELEASE R13 TO COMPILER 0545 01742000 * @ZA27588*/ 01743000 * END; /* @ZA27588*/ 01744000 * IOOK=B1ONE; /* @ZM31012*/ 01745000 @RF00538 OI IOOK,B'00000100' 0547 01746000 * RETNCODE=CODE00;/* @ZM31012 01747000 * SET GOOD REASON CODE @ZM31012*/ 01748000 SLR @09,@09 0548 01749000 ST @09,RETNCODE 0548 01750000 * IF REQCODE=VARYOFF|REQCODE=VARYON/* @ZM31012*/ 01751000 * THEN /* IS VARY REQUEST @ZM31012*/ 01752000 CLI REQCODE(R6),12 0549 01753000 BE @RT00549 0549 01754000 CLI REQCODE(R6),10 0549 01755000 BNE @RF00549 0549 01756000 @RT00549 DS 0H 0550 01757000 * CALL RECRDVRY;/* @ZM31012 01758000 * RECORD IN SMF AND @ZM31012 01759000 * POSSIBLY CALL SVC 91 @ZM31012*/ 01760000 BAL @14,RECRDVRY 0550 01761000 * END; /* @ZM31012*/ 01762000 @RF00549 DS 0H 0552 01763000 * END; /* @ZM31012*/ 01764000 @RC00508 DS 0H 0553 01765000 * END; /* END OF ZA27590 MSC ERROR 0553 01766000 * @ZA27590*/ 01767000 @RF00441 DS 0H 0554 01768000 * END; /* @ZM31012*/ 01769000 @RF00436 DS 0H 0555 01770000 * IF ARSW=B1ONE THEN /* @ZM31012 01771000 * IS ACQ/REL SWITCH ON @ZM31012*/ 01772000 @RF00406 TM ARSW,B'00100000' 0555 01773000 BNO @RF00555 0555 01774000 * DO; /* CHECK FOR ANOTHER REQ @ZM31012*/ 01775000 * IF ACQSW=B1ONE&RETNCODE^=ZERO/* @ZM31012*/ 01776000 * THEN /* IS ACQ REQ IN ERROR @ZM31012*/ 01777000 TM ACQSW,B'00010000' 0557 01778000 BNO @RF00557 0557 01779000 L @09,RETNCODE 0557 01780000 LTR @09,@09 0557 01781000 BZ @RF00557 0557 01782000 * LOOPSW=B1ZERO; /* @ZM31012 01783000 * RESET THE LOOP SWITCH @ZM31012 01784000 * IN ORDER TO EXIT THE @ZM31012 01785000 * SVC @ZM31012*/ 01786000 NI LOOPSW,B'10111111' 0558 01787000 * ELSE /* REQLINQUISH REQUEST OR 0559 01788000 * @ZM31012 01789000 * ACQ NOT IN ERROR @ZM31012*/ 01790000 * IF ARNEDB^=ZERO THEN /* @ZM31012 01791000 * IS THERE ANOTHER REQ @ZM31012*/ 01792000 B @RC00557 0559 01793000 @RF00557 SLR @09,@09 0559 01794000 L @07,ARPTR 0559 01795000 L @07,ARNEDB(,@07) 0559 01796000 CR @07,@09 0559 01797000 BE @RF00559 0559 01798000 * DO; /* ADDRESS NEXT REQUEST @ZM31012*/ 01799000 * RETNCODE=ZERO; /* @ZM31012 01800000 * ZERO THE REASON CODE @ZM31012*/ 01801000 ST @09,RETNCODE 0561 01802000 * ARPTR=ARNEDB; /* @ZM31012 01803000 * ADDRESS NEXT REQ IN @ZM31012 01804000 * ACQ/REL CHAIN @ZM31012*/ 01805000 ST @07,ARPTR 0562 01806000 * END; /* @ZM31012*/ 01807000 * ELSE /* NO MORE REQUESTS @ZM31012*/ 01808000 * LOOPSW=B1ZERO; /* @ZM31012 01809000 * GET OUT OF LOOP @ZM31012*/ 01810000 B @RC00559 0564 01811000 @RF00559 NI LOOPSW,B'10111111' 0564 01812000 * END; /* @ZM31012*/ 01813000 * ELSE /* NOT ACQ/REL REQUEST @ZM31012*/ 01814000 * LOOPSW=B1ZERO; /* @ZM31012 01815000 * GET OUT OF LOOP @ZM31012*/ 01816000 B @RC00555 0566 01817000 @RF00555 NI LOOPSW,B'10111111' 0566 01818000 * END; /* @ZM31012*/ 01819000 @RC00555 DS 0H 0567 01820000 @DE00379 TM LOOPSW,B'01000000' 0567 01821000 BO @DL00379 0567 01822000 * R14=R14LU; /* RESTORE CALLERS REG 14 0568 01823000 * @ZM31012*/ 01824000 L R14,R14LU 0568 01825000 * RETURN; /* RETURN TO CALLER @ZM31012*/ 01826000 @EL00003 DS 0H 0569 01827000 @EF00003 DS 0H 0569 01828000 @ER00003 BR @14 0569 01829000 * END REQSTLU; /* END REQUEST LOOP @ZM31012*/ 01830000 * 0571 01831000 */* START OF SPECIFICATIONS **** @Y30LB00 01832000 * @Y30LB00 01833000 *01* MODULE-NAME = QUEELM @Y30LB00 01834000 * @Y30LB00 01835000 *01* DESCRIPTIVE-NAME = QUEUES A DELAYED RESPONSE @Y30LB00 01836000 * ELEMENT @Y30LB00 01837000 * @Y30LB00 01838000 *01* FUNCTION = THIS SUBROUTINE QUEUES A DELAYED @Y30LB00 01839000 * RESPONSE ELEMENT IF THE REQUEST @Y30LB00 01840000 * HAS AN IMPLIED OR REQUESTED @Y30LB00 01841000 * DELAYED RESPONSE @Y30LB00 01842000 * @Y30LB00 01843000 *01* NOTES = LOCKS, LOCAL AND CMS, ARE OBTAINED @Y30LB00 01844000 * BEFORE SCANNING THE QUEUE, TO INSURE @Y30LB00 01845000 * THAT THE SVC AND MESSAGE TASK DO NOT @Y30LB00 01846000 * OBSTRUCT EACH OTHERS PROCESSING. @Y30LB00 01847000 * STORAGE FOR THE DELAYED RESPONSE @Y30LB00 01848000 * ELEMENT IS OBTAINED FROM SQA. ELEMENTS @Y30LB00 01849000 * ARE ADDED AT THE HEAD OF THE QUEUE. @Y30LB00 01850000 * @Y30LB00 01851000 * @Y30LB00 01852000 *02* PURPOSE = THIS SUBROUTINE CREATES AND QUEUES @Y30LB00 01853000 * A DELAYED RESPONSE ELEMENT IF @Y30LB00 01854000 * A REQUEST HAS AN IMPLIED OR REQUESTED @Y30LB00 01855000 * DELAYED RESPONSE. @Y30LB00 01856000 * @Y30LB00 01857000 * CALLS THE FOLLOWING MSSC SVC SUBROUTINE: @Y30LB00 01858000 * @Y30LB00 01859000 * ARERR1 @Y30LB00 01860000 * @Y30LB00 01861000 *02* INPUT = TCBPT @Y30LB00 01862000 * DELRECB @Y30LB00 01863000 * ASCBPTR @Y30LB00 01864000 * R14 - RETURN ADDRESS @Y30LB00 01865000 * @Y30LB00 01866000 *02* OUTPUT = RETNCODE @Y30LB00 01867000 * 0 - DELAYED RESPONSE ELEMENT @Y30LB00 01868000 * QUEUED @Y30LB00 01869000 * 243 - GETMAIN FAILURE FOR DELAYED @Y30LB00 01870000 * RESPONSE ELEMENT @Y30LB00 01871000 * 244 - AN ELEMENT ALREADY QUEUED HAS @Y30LB00 01872000 * THE SAME ASID, TCB AND ECB @Y30LB00 01873000 * ADDRESSES @Y30LB00 01874000 * NEWELPTR - ADDRESS OF ELEMENT IF @Y30LB00 01875000 * RETNCODE IS 0 @Y30LB00 01876000 * DELAYED RESPONSE ELEMENT QUEUED @Y30LB00 01877000 * FOR THE REQUEST - IF RETNCODE IS 0 @Y30LB00 01878000 * @Y30LB00 01879000 * @Y30LB00 01880000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 01881000 * 0571 01882000 * 0571 01883000 * /*****************************************************************/ 01884000 * /* */ 01885000 * /* THE SUBROUTINE WHICH CREATES A DELAYED RESPONSE @Y30LB00*/ 01886000 * /* ELEMENT AND QUEUES IT. ELEMENTS ARE ADDED AT @Y30LB00*/ 01887000 * /* THE HEAD OF THE QUEUE. @Y30LB00*/ 01888000 * /* */ 01889000 * /*****************************************************************/ 01890000 * 0571 01891000 *QUEELM: 0571 01892000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 01893000 * 0571 01894000 QUEELM DS 0H 0572 01895000 * /*****************************************************************/ 01896000 * /* */ 01897000 * /* GET STORAGE FOR THE DELAYED RESPONSE ELEMENT @Y30LB00*/ 01898000 * /* */ 01899000 * /*****************************************************************/ 01900000 * 0572 01901000 * SAVE14=R14; /* @Y30LB00*/ 01902000 ST R14,SAVE14 0572 01903000 * ELEMOBT=B1ONE; /* @Y30LB00*/ 01904000 OI ELEMOBT,B'01000000' 0573 01905000 * R0=LENGTH(NEWELMT); /* @Y30LB00*/ 01906000 LA R0,20 0574 01907000 * R1=ADDR(IGETMAIN); /* @Y30LB00*/ 01908000 LA R1,IGETMAIN 0575 01909000 * GEN REFS(R0,R1,NEWELPTR); 0576 01910000 * /*@Y30LB00*/ 01911000 * GETMAIN FOR THE DELAYED RESPONSE ELEMENT @Y30LB00 01912000 IGETMA20 GETMAIN EC,MF=(E,(R1)),LV=(R0),A=NEWELPTR,SP=245, @Y30LB00*01913000 RELATED=(SP245,IGC0012F(IFREEM20), @Y30LB00*01914000 SP245,ICB2MSG(IFREEMN2), @Y30LB00*01915000 SP245,IGC0012F(IFREEM21)) @Y30LB00 01916000 * IF R15^=ZERO THEN /* WAS STORAGE OBTAINED @Y30LB00*/ 01917000 LTR R15,R15 0577 01918000 BZ @RF00577 0577 01919000 * DO; /* SET REASON CODE @Y30LB00*/ 01920000 * VVICERR=B1ONE; /* @Y30LB00*/ 01921000 OI VVICERR,B'00010000' 0579 01922000 * IF ARSW=B1ONE THEN /* IS ACQ/REL REQUEST @Y30LB00 01923000 * BEING PROCESSED @Y30LB00*/ 01924000 TM ARSW,B'00100000' 0580 01925000 BNO @RF00580 0580 01926000 * DO; /* SET COMPLETION CODE @Y30LB00 01927000 * IN REQUEST @Y30LB00*/ 01928000 * ARCOMPC=CODE243; /* @Y30LB00*/ 01929000 L @09,ARPTR 0582 01930000 MVC ARCOMPC(2,@09),@CH00782 0582 01931000 * IF ACQSW=B1ONE THEN /* @Y30LB00 01932000 * IS ACQUIRE BEING @Y30LB00 01933000 * PROCESSED @Y30LB00*/ 01934000 TM ACQSW,B'00010000' 0583 01935000 BNO @RF00583 0583 01936000 * DO; /* GO TO ROUTINE WHICH @Y30LB00 01937000 * SETS NO-FURTHER- @Y30LB00 01938000 * PROCESSING OF REQ @Y30LB00 01939000 * COMPLETION CODE IN @Y30LB00 01940000 * SUBSEQUENT ACQS IN @Y30LB00 01941000 * CHAIN @Y30LB00*/ 01942000 * ARERRCD=CODE368; /* @Y30LB00*/ 01943000 MVC ARERRCD(4),@CF00796 0585 01944000 * CALL ARERR1; /* GO TO ROUTINE WHICH @Y30LB00 01945000 * INDICATES REST OF ACQS 0586 01946000 * @Y30LB00 01947000 * NOT PROCESSED @Y30LB00*/ 01948000 BAL @14,ARERR1 0586 01949000 * END; /* @Y30LB00*/ 01950000 * ELSE /* RELINQUISH REQUEST @Y30LB00*/ 01951000 * RELERRSW=B1ONE; /* SET REL ERROR SWITCH @Y30LB00*/ 01952000 B @RC00583 0588 01953000 @RF00583 OI RELERRSW,B'10000000' 0588 01954000 * ARERRSW=B1ONE; /* SET ACQ/REL ERROR @Y30LB00 01955000 * SWITCH ON @Y30LB00*/ 01956000 @RC00583 OI ARERRSW,B'00000100' 0589 01957000 * RETNCODE=FOUR; /* SET THE REASON CODE @Y30LB00*/ 01958000 MVC RETNCODE(4),@CF00076 0590 01959000 * END; /* @Y30LB00*/ 01960000 * ELSE /* NOT ACQ/REL REQUEST @Y30LB00*/ 01961000 * RETNCODE=CODE243; /* SET REASON CODE @Y30LB00*/ 01962000 B @RC00580 0592 01963000 @RF00580 MVC RETNCODE(4),@CF00782 0592 01964000 * END; /* @Y30LB00*/ 01965000 * ELSE /* STORAGE OBTAINED FOR @Y30LB00 01966000 * THE DELAYED RESPONSE @Y30LB00 01967000 * ELEMENT @Y30LB00*/ 01968000 * DO; /* QUEUE THE ELEMENT @Y30LB00*/ 01969000 B @RC00577 0594 01970000 @RF00577 DS 0H 0595 01971000 */* FILL IN THE DELAYED RESPONSE ELEMENT WITH THE @Y30LB00 01972000 * THE SUBPOOL NUMBER OF THE STORAGE FOR THE @Y30LB00 01973000 * ELEMENT, THE TCB ADDRESS OF THE REQUESTER, THE @Y30LB00 01974000 * ECB ADDRESS OF THE REQUEST, THE ASID, AND ZERO OUT @Y30LB00 01975000 * FLAGS AND RESERVED FIELDS @Y30LB00*/ 01976000 * 0595 01977000 * NEWELMT=''B; /* @Y30LB00*/ 01978000 L @09,NEWELPTR 0595 01979000 XC NEWELMT(20,@09),NEWELMT(@09) 0595 01980000 * QELSP=TWO45; /* @Y30LB00*/ 01981000 MVI QELSP(@09),X'F5' 0596 01982000 * QELTCBPR=TCBPT; /* @Y30LB00*/ 01983000 MVC QELTCBPR(3,@09),TCBPT+1 0597 01984000 * QELECB=DELRECB; /* @Y30LB00*/ 01985000 L @07,DELRECB 0598 01986000 ST @07,QELECB(,@09) 0598 01987000 * QELASID=ASCBASID; /* @Y30LB00*/ 01988000 L @07,ASCBPTR 0599 01989000 LH @07,ASCBASID(,@07) 0599 01990000 N @07,@CF03081 0599 01991000 STH @07,QELASID(,@09) 0599 01992000 * GEN; 0600 01993000 * /*@Y30LB00*/ 01994000 * OBTAIN THE LOCAL LOCK IN ORDER TO QUEUE THE @Y30LB00 01995000 * DELAYED RESPONSE ELEMENT @Y30LB00 01996000 ISETLK10 SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=USE, @Y30LB00*01997000 RELATED=(LOCAL,IGC0012F(ISETLK11), @Y30LB00*01998000 LOCAL,IGC0012F(ISETLK31), @Y30LB00*01999000 LOCAL,IGC0012F(ISETLK12), @Y30LB00*02000000 LOCAL,IGC0012F(ISETLK13)) @Y30LB00 02001000 * LOCLOCK=B1ONE; /* @Y30LB00*/ 02002000 OI LOCLOCK,B'00000010' 0601 02003000 * GEN; 0602 02004000 * /*@Y30LB00*/ 02005000 * OBTAIN THE CMS LOCK INORDER TO QUEUE THE @Y30LB00 02006000 * DELAYED RESPONSE ELEMENT @Y30LB00 02007000 ISETLK20 SETLOCK OBTAIN,TYPE=CMS,MODE=UNCOND,REGS=USE, @Y30LB00*02008000 RELATED=(CMS,IGC0012F(ISETLK21), @Y30LB00*02009000 CMS,IGC0012F(ISETLK41), @Y30LB00*02010000 CMS,IGC0012F(ISETLK22), @Y30LB00*02011000 CMS,IGC0012F(ISETLK23)) @Y30LB00 02012000 * CMSLOCK=B1ONE; /* @Y30LB00*/ 02013000 OI CMSLOCK,B'00000001' 0603 02014000 * IF ICBQHEAD=ZERO THEN /* IS DELAYED RESPONSE @Y30LB00 02015000 * QUEUE EMPTY @Y30LB00*/ 02016000 L @09,ICBPTR 0604 02017000 L @07,ICBQHEAD(,@09) 0604 02018000 LTR @07,@07 0604 02019000 BNZ @RF00604 0604 02020000 * DO; /* QUEUE ELEMENT AS FIRST 0605 02021000 * @Y30LB00 02022000 * ON QUEUE @Y30LB00*/ 02023000 * ICBQHEAD=NEWELPTR; /* QUEUE ELEM AT HEAD OF @Y30LB00 02024000 * QUEUE @Y30LB00*/ 02025000 L @07,NEWELPTR 0606 02026000 ST @07,ICBQHEAD(,@09) 0606 02027000 * ELEMSW=B1ONE; /* INDICATE SCAN OF QUEUE 0607 02028000 * @Y30LB00 02029000 * COMPLETE @Y30LB00*/ 02030000 OI ELEMSW,B'10000000' 0607 02031000 * ELEMQUE=B1ONE; /* INDICATE ELEM QUEUED @Y30LB00*/ 02032000 OI ELEMQUE,B'00100000' 0608 02033000 * END; /* @Y30LB00*/ 02034000 * ELSE /* DELAYED RESPONSE QUEUE 0610 02035000 * @Y30LB00 02036000 * NOT EMPTY, ADDRESS @Y30LB00 02037000 * FIRST ELEMENT ON QUEUE 0610 02038000 * @Y30LB00*/ 02039000 * QELEMPTR=ICBQHEAD; /* @Y30LB00*/ 02040000 B @RC00604 0610 02041000 @RF00604 L @09,ICBPTR 0610 02042000 L @09,ICBQHEAD(,@09) 0610 02043000 ST @09,QELEMPTR 0610 02044000 * DO WHILE ELEMSW=B1ZERO; /* SCAN FOR LAST ELEMENT @Y30LB00 02045000 * ON THE QUEUE @Y30LB00*/ 02046000 @RC00604 B @DE00611 0611 02047000 @DL00611 DS 0H 0612 02048000 * IF ELMTCB=TCBPT&ELMECB=DELRECB/* @Y30LB00*/ 02049000 * &ELMASID=ASCBASID&MSGFLG^=FOXFOX/* @Y30LB00*/ 02050000 * &INVALFLG^=FOXFOX THEN/* @Y30LB00 02051000 * IS QUEUED ELEMENT TCB @Y30LB00 02052000 * AND ECB ADDRESS AND @Y30LB00 02053000 * ASID EQUAL TO TCB AND @Y30LB00 02054000 * ECB ADDRESSES AND ASID 0612 02055000 * @Y30LB00 02056000 * OF THIS REQUESTER AND @Y30LB00 02057000 * THE REQUEST IS NOT @Y30LB00 02058000 * FROM THE MESSAGE TASK @Y30LB00 02059000 * AND THE QUEUED ELEMENT 0612 02060000 * @Y30LB00 02061000 * IS NOT FLAGGED AS @Y30LB00 02062000 * INVALID BY THE SVC @Y30LB00*/ 02063000 L @09,QELEMPTR 0612 02064000 L @07,ELMTCB-1(,@09) 0612 02065000 LA @07,0(,@07) 0612 02066000 C @07,TCBPT 0612 02067000 BNE @RF00612 0612 02068000 CLC ELMECB(4,@09),DELRECB 0612 02069000 BNE @RF00612 0612 02070000 L @07,ASCBPTR 0612 02071000 CLC ELMASID(2,@09),ASCBASID(@07) 0612 02072000 BNE @RF00612 0612 02073000 CLI MSGFLG,255 0612 02074000 BE @RF00612 0612 02075000 CLI INVALFLG(@09),255 0612 02076000 BE @RF00612 0612 02077000 * DO; /* SET ERROR CODE @Y30LB00*/ 02078000 * IF ARSW=B1ONE THEN /* IS ACQ/REL REQUEST @Y30LB00 02079000 * BEING PROCESSED @Y30LB00*/ 02080000 TM ARSW,B'00100000' 0614 02081000 BNO @RF00614 0614 02082000 * DO; /* SET COMPLETION CODE @Y30LB00*/ 02083000 * ARCOMPC=CODE244; /* @Y30LB00 02084000 * SET ACQ/REL REASON CODE 0616 02085000 * @Y30LB00*/ 02086000 L @09,ARPTR 0616 02087000 MVC ARCOMPC(2,@09),@CH00784 0616 02088000 * IF ACQSW=B1ONE THEN/* @Y30LB00 02089000 * IS ACQUIRE BEING @Y30LB00 02090000 * PROCESSED @Y30LB00*/ 02091000 TM ACQSW,B'00010000' 0617 02092000 BNO @RF00617 0617 02093000 * DO; /* GO TO ROUTINE WHICH @Y30LB00 02094000 * SETS NOT-FURTHER- @Y30LB00 02095000 * PROCESSED CODE IN @Y30LB00 02096000 * SUBSEQUENT ACUIRES IN @Y30LB00 02097000 * CHAIN @Y30LB00*/ 02098000 * ARERRCD=CODE368;/* @Y30LB00 02099000 * SET ACQ/REL REASON CODE 0619 02100000 * @Y30LB00*/ 02101000 MVC ARERRCD(4),@CF00796 0619 02102000 * CALL ARERR1; /* GO TO ROUTINE WHICH #Y30LB00 02103000 * INDICATES REST OF ACQS 0620 02104000 * #Y30LB00 02105000 * NOT PROCESSED @Y30LB00*/ 02106000 BAL @14,ARERR1 0620 02107000 * END; /* @Y30LB00*/ 02108000 * ELSE /* RELINQUISH REQUEST @Y30LB00*/ 02109000 * RELERRSW=B1ONE; /* @Y30LB00 02110000 * SET REL ERROR SWITCH ON 0622 02111000 * @Y30LB00*/ 02112000 B @RC00617 0622 02113000 @RF00617 OI RELERRSW,B'10000000' 0622 02114000 * ARERRSW=B1ONE; /* SET ACQ/REL ERROR SWITCH 0623 02115000 * @Y30LB00 02116000 * ON @Y30LB00*/ 02117000 @RC00617 OI ARERRSW,B'00000100' 0623 02118000 * RETNCODE=FOUR; /* SET REASON CODE @Y30LB00*/ 02119000 MVC RETNCODE(4),@CF00076 0624 02120000 * END; /* #Y30LB00*/ 02121000 * ELSE /* NOT ACQ/REL REQUEST #Y30LB00*/ 02122000 * RETNCODE=CODE244; /* SET REASON CODE #Y30LB00*/ 02123000 B @RC00614 0626 02124000 @RF00614 MVC RETNCODE(4),@CF00784 0626 02125000 * ELEMSW=B1ONE; /* INDICATE SCAN OF QUEUE 0627 02126000 * @Y30LB00 02127000 * COMPLETE @Y30LB00*/ 02128000 @RC00614 OI ELEMSW,B'10000000' 0627 02129000 * END; /* #Y30LB00*/ 02130000 * ELSE /* TCB AND ECB ADDRS @Y30LB00 02131000 * AND ASID DID NOT MATCH, 0629 02132000 * @Y30LB00 02133000 * OR THEY MATCHED BUT @Y30LB00 02134000 * THE REQUEST IS FROM THE 0629 02135000 * @Y30LB00 02136000 * MESSAGE TASK, OR THE @Y30LB00 02137000 * QUEUED ELEMENT WAS @Y30LB00 02138000 * FLAGGED INVALID BY THE 0629 02139000 * @Y30LB00 02140000 * SVC @Y30LB00*/ 02141000 * IF ELMHEAD=ZERO THEN /* IS ELEMENT LAST ON Q @Y30LB00*/ 02142000 B @RC00612 0629 02143000 @RF00612 L @09,QELEMPTR 0629 02144000 L @09,ELMHEAD-1(,@09) 0629 02145000 LA @09,0(,@09) 0629 02146000 LTR @09,@09 0629 02147000 BNZ @RF00629 0629 02148000 * DO; /* QUEUE NEW ELEMENT AT @Y30LB00 02149000 * HEAD OF QUEUE @Y30LB00*/ 02150000 * 0630 02151000 * /*****************************************************/ 02152000 * /* */ 02153000 * /* POINT NEW ELEMENT TO FIRST ON QUEUE, @Y30LB00*/ 02154000 * /* POINT FIRST ELEMENT ON QUEUE TO NEW @Y30LB00*/ 02155000 * /* ELEMENT, QUEUE THE NEW ELEMENT AT THE @Y30LB00*/ 02156000 * /* HEAD OF THE QUEUE. INDICATE SCAN OF @Y30LB00*/ 02157000 * /* QUEUE COMPLETE AND THAT THE ELEMENT HAS @Y30LB00*/ 02158000 * /* BEEN QUEUED @Y30LB00*/ 02159000 * /* */ 02160000 * /*****************************************************/ 02161000 * 0631 02162000 * QELAHEAD=ICBQHEAD; /* @Y30LB00*/ 02163000 L @09,NEWELPTR 0631 02164000 L @07,ICBPTR 0631 02165000 L @04,ICBQHEAD(,@07) 0631 02166000 STCM @04,7,QELAHEAD(@09) 0631 02167000 * HEADBACK=NEWELPTR; /* @Y30LB00*/ 02168000 STCM @09,7,HEADBACK(@04) 0632 02169000 * ICBQHEAD=NEWELPTR; /* @Y30LB00*/ 02170000 ST @09,ICBQHEAD(,@07) 0633 02171000 * ELEMSW=B1ONE; /* @Y30LB00*/ 02172000 OI ELEMSW,B'10000000' 0634 02173000 * ELEMQUE=B1ONE; /* @Y30LB00*/ 02174000 OI ELEMQUE,B'00100000' 0635 02175000 * END; /* @Y30LB00*/ 02176000 * ELSE /* NOT LAST ELEMENT ON Q @Y30LB00*/ 02177000 * QELEMPTR=ELMHEAD; /* ADDRESS NEXT ELEM ON Q 0637 02178000 * @Y30LB00*/ 02179000 B @RC00629 0637 02180000 @RF00629 L @09,QELEMPTR 0637 02181000 L @09,ELMHEAD-1(,@09) 0637 02182000 LA @09,0(,@09) 0637 02183000 ST @09,QELEMPTR 0637 02184000 * END; /* @Y30LB00*/ 02185000 @RC00629 DS 0H 0638 02186000 @RC00612 DS 0H 0638 02187000 @DE00611 TM ELEMSW,B'10000000' 0638 02188000 BZ @DL00611 0638 02189000 * CMSLOCK=B1ZERO; /* @Y30LB00*/ 02190000 NI CMSLOCK,B'11111110' 0639 02191000 * GEN; 0640 02192000 * /*@Y30LB00*/ 02193000 * RELEASE THE CMS LOCK AFTER QUEUING THE DELAYED @Y30LB00 02194000 * RESPONSE ELEMENT OR SEARCHING THE QUEUE @Y30LB00 02195000 ISETLK21 SETLOCK RELEASE,TYPE=CMS,REGS=USE, @Y30LB00*02196000 RELATED=(CMS,IGC0012F(ISETLK20)) @Y30LB00 02197000 * LOCLOCK=B1ZERO; /* @Y30LB00*/ 02198000 NI LOCLOCK,B'11111101' 0641 02199000 * GEN; 0642 02200000 * /*@Y30LB00*/ 02201000 * RELEASE THE LOCAL LOCK AFTER QUEUING THE DELAYED RESPONSE @Y30LB00 02202000 * ELEMENT OR SEARCHING THE QUEUE @Y30LB00 02203000 ISETLK11 SETLOCK RELEASE,TYPE=LOCAL,REGS=USE, @Y30LB00*02204000 RELATED=(LOCAL,IGC0012F(ISETLK10)) @Y30LB00 02205000 * ELEMSW=B1ZERO; /* @Y30LB00*/ 02206000 NI ELEMSW,B'01111111' 0643 02207000 * IF RETNCODE^=ZERO THEN /* IS ERROR CODE NON ZERO 0644 02208000 * @Y30LB00*/ 02209000 L @09,RETNCODE 0644 02210000 LTR @09,@09 0644 02211000 BZ @RF00644 0644 02212000 * DO; /* FREE STORAGE FOR @Y30LB00 02213000 * ELEMENT @Y30LB00*/ 02214000 * VVICERR=B1ONE; /* @Y30LB00*/ 02215000 OI VVICERR,B'00010000' 0646 02216000 * R0=LENGTH(NEWELMT); /* @Y30LB00*/ 02217000 LA R0,20 0647 02218000 * R1=ADDR(IFREEMAI); /* @Y30LB00*/ 02219000 LA R1,IFREEMAI 0648 02220000 * GEN REFS(R0,R1,NEWELPTR); 0649 02221000 * /*@Y30LB00*/ 02222000 * FREE THE DELAYED RESPONSE ELEMENT IF THE ELEMENT @Y30LB00 02223000 * COULD NOT BE QUEUED @Y30LB00 02224000 IFREEM20 FREEMAIN E,MF=(E,(R1)),LV=(R0),A=NEWELPTR,SP=245, @Y30LB00*02225000 RELATED=(SP245,IGC0012F(IGETMA20)) @Y30LB00 02226000 * ELEMFREE=B1ONE; /* INDICATE ELEMENT FREED 0650 02227000 * @Y30LB00*/ 02228000 OI ELEMFREE,B'10000000' 0650 02229000 * NEWELPTR=ZERO; /* CLEAR ELEMENT ADDRESS @Y30LB00*/ 02230000 SLR @09,@09 0651 02231000 ST @09,NEWELPTR 0651 02232000 * END; /* @Y30LB00*/ 02233000 * END; /* @Y30LB00*/ 02234000 @RF00644 DS 0H 0654 02235000 *QUEEXIT: /* @Y30LB00*/ 02236000 * R14=SAVE14; /* @Y30LB00*/ 02237000 @RC00577 DS 0H 0654 02238000 QUEEXIT L R14,SAVE14 0654 02239000 * RETURN; /* RETURN TO CALLER - WITH 0655 02240000 * @Y30LB00 02241000 * ZERO REASON CODE AND @Y30LB00 02242000 * ELEMENT QUEUED, OR @Y30LB00 02243000 * NON-ZERO REASON CODE @Y30LB00 02244000 * AND ELEMENT NOT QUEUED 0655 02245000 * @Y30LB00*/ 02246000 @EL00004 DS 0H 0655 02247000 @EF00004 DS 0H 0655 02248000 @ER00004 BR @14 0655 02249000 * END QUEELM; /* @Y30LB00*/ 02250000 * 0657 02251000 */* START OF SPECIFICATIONS **** @Y30LB00 02252000 * @Y30LB00 02253000 *01* MODULE-NAME = CCWBUILD @Y30LB00 02254000 * @Y30LB00 02255000 *01* DESCRIPTIVE-NAME = CONSTRUCT THE CCWS @Y30LB00 02256000 * @Y30LB00 02257000 *01* FUNCTION = THIS SUBROUTINE BUILDS THE CCWS FOR @Y30LB00 02258000 * THE I/O. @Y30LB00 02259000 * @Y30LB00 02260000 *01* NOTES = THE CHANNEL PROGRAM WHICH IS CONSTRUCTED FOR @Z40LB01 02261000 * SUSPEND WITH PREPARE TO SWAP OPTION CONSISTS @Z40LB01 02262000 * CHANNEL COMMAND CODE 87 (EXECUTE) CHAINED TO @Z40LB01 02263000 * CHANNEL COMMAND CODE 87 (EXECUTE-NOOP) CHAINED @Z40LB01 02264000 * CHANNEL COMMAND CODE 03 (NOOP). @Z40LB01 02265000 * @Z40LB01 02266000 * THE CHANNEL PROGRAM WHICH IS CONSTRUCTED FOR @Z40LB01 02267000 * QUERY AND CAUDIT CONSISTS OF CHANNEL COMMAND @Z40LB01 02268000 * CODE 27 (INTERROGATE) CHAINED TO CHANNEL @Z40LB01 02269000 * COMMAND CODE 42 (DIAGNOSTIC READ) CHAINED TO @Z40LB01 02270000 * CHANNEL COMMAND CODE 03 (NOOP). @Z40LB01 02271000 * @Z40LB01 02272000 * THE CHANNEL PROGRAM WHICH IS CONSTRUCTED FOR @Z40LB01 02273000 * NULLIFYC CONSISTS OF CHANNEL COMMAND CODE @Z40LB01 02274000 * 27 (INTERROGATE) CHAINED TO CHANNEL COMMAND @Z40LB01 02275000 * CODE 03 (NOOP). @Z40LB01 02276000 * @Z40LB01 02277000 * THE CHANNEL PROGRAM FOR ALL OTHER FUNCTIONS @Z40LB01 02278000 * CONSISTS OF A CHANNEL COMMAND 87 (EXECUTE) @Z40LB01 02279000 * CHAINED TO CHANNEL COMMAND 03 (NOOP). @Z40LB01 02280000 * #Y30LB00 02281000 *02* CHARACTER-CODE-DEPENDENCIES = NONE #Y30LB00 02282000 * #Y30LB00 02283000 *02* DEPENDENCIES = NONE #Y30LB00 02284000 * @Y30LB00 02285000 *02* RESTRICTIONS = NONE @Y30LB00 02286000 * @Y30LB00 02287000 *01* MODULE-TYPE = MODULE @Y30LB00 02288000 * @Y30LB00 02289000 *02* PROCESSOR = PLS2 @Y30LB00 02290000 * @Y30LB00 02291000 * @Y30LB00 02292000 *02* PURPOSE = THIS SUBROUTINE BUILD THE CHANNEL @Y30LB00 02293000 * PROGRAM (CCWS) USED TO TRANSFER THE @Y30LB00 02294000 * ORDER TO THE MSC. @Y30LB00 02295000 * @Y30LB00 02296000 *02* INPUT = CCWPTR @Y30LB00 02297000 * ORDLENG @Y30LB00 02298000 * ORDPTR @Y30LB00 02299000 * R14 - RETURN ADDRESS @Y30LB00 02300000 * @Y30LB00 02301000 *02* OUTPUT = CCWS INITIALIZED @Y30LB00 02302000 * @Y30LB00 02303000 * @Y30LB00 02304000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 02305000 * 0657 02306000 * 0657 02307000 * /*****************************************************************/ 02308000 * /* */ 02309000 * /* THIS SUBROUTINE BUILDS THE CCWS NECESSARY TO @Y30LB00*/ 02310000 * /* TRANSFER THE ORDER TO MSC FOR PROCESSING @Y30LB00*/ 02311000 * /* */ 02312000 * /*****************************************************************/ 02313000 * 0657 02314000 *CCWBUILD: 0657 02315000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 02316000 CCWBUILD DS 0H 0658 02317000 */* THE FIRST CCW IN THE CHANNEL PROGRAM FOR MSC @Z40LB01*/ 02318000 */* INTERROGATE FUNCTIONS QUERY AND NULLIFYC MUST @Z40LB01*/ 02319000 */* BE A CHANNEL COMMAND CODE OF 27. ALL OTHER @Z40LB01*/ 02320000 */* FUNCTIONS REQUIRE A CHANNEL CMD CODE OF 87. THE REST @Z40LB01*/ 02321000 */* OF THE CCW FIELDS ARE THE SAME FOR ALL FUNCTIONS. @Z40LB01*/ 02322000 * 0658 02323000 * IF REQCODE=MSCREAD|REQCODE=CAUDIT|/* @Z40LB01*/ 02324000 * REQCODE=NULLCART|REQCODE=MSCDUMP THEN/* @Z40LB01*/ 02325000 CLI REQCODE(R6),5 0658 02326000 BE @RT00658 0658 02327000 CLI REQCODE(R6),7 0658 02328000 BE @RT00658 0658 02329000 CLI REQCODE(R6),9 0658 02330000 BE @RT00658 0658 02331000 CLI REQCODE(R6),11 0658 02332000 BNE @RF00658 0658 02333000 @RT00658 DS 0H 0659 02334000 * CCW1CC=QUERY; /* @Z40LB01*/ 02335000 L @09,CCWPTR 0659 02336000 MVI CCW1CC(@09),X'27' 0659 02337000 * ELSE /* @Z40LB01*/ 02338000 * CCW1CC=EXECUTE; /* @Z40LB01*/ 02339000 B @RC00658 0660 02340000 @RF00658 L @09,CCWPTR 0660 02341000 MVI CCW1CC(@09),X'87' 0660 02342000 * CCW1DATA=ORDPTR; /* @ZD00155*/ 02343000 @RC00658 L @09,CCWPTR 0661 02344000 MVC CCW1DATA(3,@09),ORDPTR+1 0661 02345000 * CCW1FLGS=COMNDCHN; /* @ZD00155*/ 02346000 MVI CCW1FLGS(@09),X'40' 0662 02347000 * CCW1CNT=ORDLENG; /* @ZD00155*/ 02348000 L @07,ORDLENG 0663 02349000 STH @07,CCW1CNT(,@09) 0663 02350000 * IF(REQCODE=SUSPEND&SUPPRSW=B1ONE) THEN/* SUSPEND WITH @ZD00155 02351000 * PREP-TO-SWAP ATTRIBUTE? 0664 02352000 * @ZD00155*/ 02353000 CLI REQCODE(R6),34 0664 02354000 BNE @RF00664 0664 02355000 TM SUPPRSW(R6),B'00100000' 0664 02356000 BNO @RF00664 0664 02357000 * DO; /* YES,SPECIAL DEFINE CCWS 0665 02358000 * @ZD00155*/ 02359000 * CCW2CC=EXECUTE; /* @ZD00155*/ 02360000 MVI CCW2CC(@09),X'87' 0666 02361000 * CCW2DATA=NOOPPTR; /* @ZD00155*/ 02362000 MVC CCW2DATA(3,@09),NOOPPTR+1 0667 02363000 * CCW2FLGS=COMNDCHN; /* @ZD00155*/ 02364000 MVI CCW2FLGS(@09),X'40' 0668 02365000 * CCW2CNT=LENGTH(NOOP1E); /* @ZD00155*/ 02366000 MVC CCW2CNT(2,@09),@CH00076 0669 02367000 * CCW3CC=NOOP; /* @ZD00155*/ 02368000 MVI CCW3CC(@09),X'03' 0670 02369000 * CCW3DATA=ZERO; /* @ZD00155*/ 02370000 SLR @07,@07 0671 02371000 STCM @07,7,CCW3DATA(@09) 0671 02372000 * CCW3FLGS=C1ZERO; /* @ZD00155*/ 02373000 MVI CCW3FLGS(@09),X'00' 0672 02374000 * CCW3CNT=ONE; /* @ZD00155*/ 02375000 MVC CCW3CNT(2,@09),@CH00061 0673 02376000 * END; /* @ZD00155*/ 02377000 * ELSE /* @Z40LB01*/ 02378000 */* IF QUERY BUILD SPECIAL CHANNEL PROGRAM @Z40LB01*/ 02379000 * 0675 02380000 * IF REQCODE=MSCREAD|REQCODE=CAUDIT|/* @Z40LB01*/ 02381000 * REQCODE=MSCDUMP THEN /* @Z40LB01*/ 02382000 B @RC00664 0675 02383000 @RF00664 CLI REQCODE(R6),5 0675 02384000 BE @RT00675 0675 02385000 CLI REQCODE(R6),7 0675 02386000 BE @RT00675 0675 02387000 CLI REQCODE(R6),11 0675 02388000 BNE @RF00675 0675 02389000 @RT00675 DS 0H 0676 02390000 * DO; /* @Z40LB01*/ 02391000 * CCW2CC=QREAD; /* @Z40LB01*/ 02392000 L @09,CCWPTR 0677 02393000 MVI CCW2CC(@09),X'42' 0677 02394000 * CCW2DATA=BUFFPTR; /* @ZA13482*/ 02395000 MVC CCW2DATA(3,@09),BUFFPTR+1 0678 02396000 * CCW2FLGS=COMNDCHN; /* @Z40LB01*/ 02397000 MVI CCW2FLGS(@09),X'40' 0679 02398000 * CCW2CNT=FIVE12; /* @Z40LB01*/ 02399000 MVC CCW2CNT(2,@09),@CH02475 0680 02400000 * CCW3CC=NOOP; /* @Z40LB01*/ 02401000 MVI CCW3CC(@09),X'03' 0681 02402000 * CCW3DATA=ZERO; /* @Z40LB01*/ 02403000 SLR @07,@07 0682 02404000 STCM @07,7,CCW3DATA(@09) 0682 02405000 * CCW3FLGS=C1ZERO; /* @Z40LB01*/ 02406000 MVI CCW3FLGS(@09),X'00' 0683 02407000 * CCW3CNT=ONE; /* @Z40LB01*/ 02408000 MVC CCW3CNT(2,@09),@CH00061 0684 02409000 * END; /* @Z40LB01*/ 02410000 * ELSE /* SET UP REGULAR CCWS @ZD00155*/ 02411000 * DO; /* @ZD00155*/ 02412000 B @RC00675 0686 02413000 @RF00675 DS 0H 0687 02414000 * CCW2CC=NOOP; /* @ZD00155*/ 02415000 L @09,CCWPTR 0687 02416000 MVI CCW2CC(@09),X'03' 0687 02417000 * CCW2DATA=ZERO; /* @ZD00155*/ 02418000 SLR @07,@07 0688 02419000 STCM @07,7,CCW2DATA(@09) 0688 02420000 * CCW2FLGS=C1ZERO; /* @ZD00155*/ 02421000 MVI CCW2FLGS(@09),X'00' 0689 02422000 * CCW2CNT=ONE; /* @ZD00155*/ 02423000 MVC CCW2CNT(2,@09),@CH00061 0690 02424000 * END; /* @ZD00155*/ 02425000 *CCWEXIT: /* #Y30LB00*/ 02426000 * RETURN; /* RETURN TO CALLER - #Y30LB00 02427000 * WITH CCWS INITIALIZED #Y30LB00*/ 02428000 @EL00005 DS 0H 0692 02429000 @EF00005 DS 0H 0692 02430000 @ER00005 BR @14 0692 02431000 * END CCWBUILD; /* #Y30LB00*/ 02432000 B @EL00005 0693 02433000 * 0694 02434000 */* START OF SPECIFICATIONS **** @X70AC01 02435000 * @X70AC01 02436000 *01* MODULE-NAME = MSVCONLY @G24LB01 02437000 * @G24LB01 02438000 *01* DESCRIPTIVE-NAME = BRANCH ENTER MSVC CODE FOR MSVC @G24LB01 02439000 * ONLY ORDERS. @G24LB01 02440000 * @G24LB01 02441000 *01* FUNCTION = THIS ROUTINE DETERMINES WHICH MSVC MODULE @G24LB01 02442000 * SHOULD BE BRANCHED TO, SETS UP INTERFACE @G24LB01 02443000 * REGS, AND DOES THE BRANCH. @G24LB01 02444000 * @G24LB01 02445000 *02* INPUT = R6 POINTING TO PARM LIST @G24LB01 02446000 * @G24LB01 02447000 *02* OUTPUT TO MSVC MODULE = R1 POINTING TO PARM LIST @G24LB01 02448000 * R13 POINTING TO SAVE AREA @G24LB01 02449000 * R15 POINTING TO MSVC ENTRY @G24LB01 02450000 * @G24LB01 02451000 *02* OUTPUT TO CALLER = MSVC RETURN CODE IN R15 @G24LB01 02452000 * MSVC REASON CODE IN R0 @G24LB01 02453000 * OTHER REGS RESTORED @G24LB01 02454000 * @G24LB01 02455000 **** END OF SPECIFICATIONS ** @G24LB01*/ 02456000 * 0694 02457000 *MSVCONLY: 0694 02458000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @G24LB01*/ 02459000 MSVCONLY DS 0H 0695 02460000 * DCL 0695 02461000 * MSVC14 FIXED(31); /* RETURN REG SAVE AREA @G24LB01*/ 02462000 * MSVC14=R14; /* SAVE RETURN @G24LB01*/ 02463000 ST R14,MSVC14 0696 02464000 * IF ICBVVICB=ZERO THEN /* IF NO POINTER TO VVIC CTL BLK 02465000 * @G24LB01*/ 02466000 SLR @09,@09 0697 02467000 L @07,ICBPTR 0697 02468000 C @09,ICBVVICB(,@07) 0697 02469000 BNE @RF00697 0697 02470000 * DO; /* @G24LB01*/ 02471000 * RETNCODE=ZERO; /* SET RETURN CODE TO ZERO 0699 02472000 * @G24LB01*/ 02473000 ST @09,RETNCODE 0699 02474000 * RETURN; /* @G24LB01*/ 02475000 @EL00006 DS 0H 0700 02476000 @EF00006 DS 0H 0700 02477000 @ER00006 BR @14 0700 02478000 * END; /* @G24LB01*/ 02479000 * INPUTREQ=ADDR(SAVEREQ); /* @G24LB01*/ 02480000 @RF00697 LA @09,SAVEREQ 0702 02481000 ST @09,INPUTREQ 0702 02482000 * SAVEREQ(1:LISTLEN)=INPTLIST(1:LISTLEN);/* @G24LB01 02483000 * SAVE REQUEST IN SUBPOOL 0703 02484000 * @G24LB01 02485000 * 245 INCASE OF ABNORMAL 0703 02486000 * @G24LB01 02487000 * TERMINATION @G24LB01*/ 02488000 L @09,LISTLEN(,R6) 0703 02489000 BCTR @09,0 0703 02490000 EX @09,@SM03082 0703 02491000 * R0=ZERO; /* CLEAR R0 TO INDICATE @G24LB01 02492000 * 1ST ENTRY IN MSVC FOR @G24LB01 02493000 * REQUEST @G24LB01*/ 02494000 SLR R0,R0 0704 02495000 * R1=R6; /* ADDRESS REQUEST @G24LB01*/ 02496000 LR R1,R6 0705 02497000 * RFY 0706 02498000 * (R13) RESTRICTED; /* @G24LB01*/ 02499000 * R13=ADDR(SAVAREA); /* SUPPLY REG SAVE AREA @G24LB01*/ 02500000 * 0707 02501000 LA R13,SAVAREA 0707 02502000 * /*****************************************************************/ 02503000 * /* */ 02504000 * /* SET MSVC ENTRY POINT IN R15 BASED ON REQUEST CODE @G24LB01*/ 02505000 * /* */ 02506000 * /*****************************************************************/ 02507000 * 0708 02508000 * IF REQCODE=SEL|REQCODE=TRM THEN /* @G24LB01*/ 02509000 CLI REQCODE(R6),137 0708 02510000 BE @RT00708 0708 02511000 CLI REQCODE(R6),138 0708 02512000 BNE @RF00708 0708 02513000 @RT00708 DS 0H 0709 02514000 * R15=ICBVSCRA; /* MSVC SCREENING ROUTINE 0709 02515000 * @ZA24770*/ 02516000 L @09,ICBPTR 0709 02517000 L R15,ICBVSCRA(,@09) 0709 02518000 * ELSE /* @G24LB01*/ 02519000 * R15=ICBVVIC; /* MSVC QUEUE MGR ROUTINE 0710 02520000 * @G24LB01*/ 02521000 B @RC00708 0710 02522000 @RF00708 L @09,ICBPTR 0710 02523000 L R15,ICBVVIC(,@09) 0710 02524000 * VVICCALL=B1ONE; /* @G24LB01*/ 02525000 @RC00708 OI VVICCALL,B'01000000' 0711 02526000 * IF R15^=ZERO THEN /* IS MSVC MOD FOUND @G24LB02*/ 02527000 LTR R15,R15 0712 02528000 BZ @RF00712 0712 02529000 * DO; /* BRANCH TO MSVC @G24LB02*/ 02530000 * GEN REFS(R14,R15); 0714 02531000 * /*@G24LB01*/ 02532000 BALR R14,R15 BRANCH TO MSVC @G24LB01 02533000 * END; /* END BRANCH TO MSVC @G24LB02*/ 02534000 * R13=R10; /* @G24LB01*/ 02535000 @RF00712 LR R13,R10 0716 02536000 * RFY 0717 02537000 * (R13) UNRESTRICTED; /* @G24LB01*/ 02538000 * IF R15^=ZERO THEN /* DOES MSVC REQUEST HAVE 0718 02539000 * @G24LB01 02540000 * AN ERROR @G24LB01*/ 02541000 LTR R15,R15 0718 02542000 BZ @RF00718 0718 02543000 * RETNCODE=R0; /* YES SET REASON CODE @G24LB01*/ 02544000 ST R0,RETNCODE 0719 02545000 * ELSE /* NO MSVC ERROR @G24LB01*/ 02546000 * RETNCODE=ZERO; /* SET REAS CODE NO ERR @G24LB01*/ 02547000 B @RC00718 0720 02548000 @RF00718 SLR @09,@09 0720 02549000 ST @09,RETNCODE 0720 02550000 * R14=MSVC14; /* RESTORE RETURN REG @G24LB01*/ 02551000 @RC00718 L R14,MSVC14 0721 02552000 * RETURN; /* RETURN TO CALLER @G24LB01*/ 02553000 B @EL00006 0722 02554000 * END MSVCONLY; /* END SUB - ROUTINE @G24LB01*/ 02555000 * 0724 02556000 */* START OF SPECIFICATIONS **** @Y30LB00 02557000 * @Y30LB00 02558000 *01* MODULE-NAME = IOBLKBLD @Y30LB00 02559000 * @Y30LB00 02560000 *01* DESCRIPTIVE-NAME = CONSTRUCT THE I/O BLOCKS - IOSB, @Y30LB00 02561000 * SRB, MSSC DATA AREA @Y30LB00 02562000 * @Y30LB00 02563000 *01* FUNCTION = THIS SUBROUTINE CONSTRUCTS THE I/O @Y30LB00 02564000 * CONTROL BLOCKS USED TO TRANSFER @Y30LB00 02565000 * THE ORDER TO THE MSC. @Y30LB00 02566000 * @Y30LB00 02567000 *01* NOTES = THIS I/O REQUIRES A DATA AREA (MSSC DATA @Y30LB00 02568000 * AREA) WHICH IS USED BY THE I/O DRIVER @Y30LB00 02569000 * AND AE APPENDAGE. THE AREA IS POINTED @Y30LB00 02570000 * TO BY THE IOSUSE FIELD IN THE IOSB. @Y30LB00 02571000 * THE AREA IS MAPPED AS FOLLOWS: @Y30LB00 02572000 * @Y30LB00 02573000 * 4 BYTES FOR THE I/O ECB @Y30LB00 02574000 * 4 BYTES FOR THE TCB ADDRESS @Y30LB00 02575000 * 2 BYTE ERROR CODE FIELD @Y30LB00 02576000 * 2 BYTES FOR APPENDAGE SWITCHES @Y30LB00 02577000 * 64 BYTE REGISTER SAVE AREA FOR THE AE @Y30LB00 02578000 * APPENDAGE @Y30LB00 02579000 * @Y30LB00 02580000 * @Y30LB00 02581000 *02* PURPOSE = THIS SUBROUTINE CONSTRUCTS THE I/O @Y30LB00 02582000 * CONTROL BLOCKS USED TO TRANSFER THE @Y30LB00 02583000 * ORDER TO THE MSC. @Y30LB00 02584000 * @Y30LB00 02585000 *02* INPUT = SRBPTR @Y30LB00 02586000 * IOSBPTR @Y30LB00 02587000 * SSCDATAP @Y30LB00 02588000 * ASCBPTR @Y30LB00 02589000 * TCBPT @Y30LB00 02590000 * CCWPTR @Y30LB00 02591000 * R14 - RETURN ADDRESS @Y30LB00 02592000 * @Y30LB00 02593000 *02* OUTPUT = I/O CONTROL BLOCKS - IOSB, SRB, @Y30LB00 02594000 * MSSC DATA AREA INITIALIZED @Y30LB00 02595000 * @Y30LB00 02596000 * @Y30LB00 02597000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 02598000 * 0724 02599000 * 0724 02600000 * /*****************************************************************/ 02601000 * /* */ 02602000 * /* THIS SUBROUTINE FILLS IN THE I/O BLOCKS - IOSB, @Y30LB00*/ 02603000 * /* SRB AND MSSC DATA AREA USED IN THE I/O TO THE MSC @Y30LB00*/ 02604000 * /* */ 02605000 * /*****************************************************************/ 02606000 * 0724 02607000 *IOBLKBLD: 0724 02608000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 02609000 * 0724 02610000 IOBLKBLD DS 0H 0725 02611000 * /*****************************************************************/ 02612000 * /* */ 02613000 * /* FILL IN THE I/O CONTROL BLOCKS. INITIALIZE @Y30LB00*/ 02614000 * /* THE IOSB, THE SRB, AND THE MSSC DATA AREA @Y30LB00*/ 02615000 * /* */ 02616000 * /*****************************************************************/ 02617000 * 0725 02618000 * SRB=''B; /* ZERO THE SRB @Y30LB00*/ 02619000 L @09,SRBPTR 0725 02620000 XC SRB(44,@09),SRB(@09) 0725 02621000 * SRBID=SRBEBCDC; /* EBCDIC OF SRB @Y30LB00*/ 02622000 MVC SRBID(4,@09),SRBEBCDC 0726 02623000 * SRBASCB=ASCBPTR; /* ASCB ADDRESS @Y30LB00*/ 02624000 L @07,ASCBPTR 0727 02625000 ST @07,SRBASCB(,@09) 0727 02626000 * SRBPARM=IOSBPTR; /* IOSB POINTER @Y30LB00*/ 02627000 L @04,IOSBPTR 0728 02628000 ST @04,SRBPARM(,@09) 0728 02629000 * IOSB=''B; /* ZERO THE IOSB @Y30LB00*/ 02630000 XC IOSB(108,@04),IOSB(@04) 0729 02631000 * IOSFLA=C40H; /* COMMAND CHAIN FLAG @Y30LB00*/ 02632000 MVI IOSFLA(@04),X'40' 0730 02633000 * IOSASID=ASCBASID; /* ASID OF CALLER @Y30LB00*/ 02634000 MVC IOSASID(2,@04),ASCBASID(@07) 0731 02635000 * IOSSRB=SRBPTR; /* SRB ADDRESS @Y30LB00*/ 02636000 ST @09,IOSSRB(,@04) 0732 02637000 * IOSUSE=SSCDATAP; /* MSSC DATA AREA ADDR @Y30LB00*/ 02638000 L @09,SSCDATAP 0733 02639000 ST @09,IOSUSE(,@04) 0733 02640000 * IOSVST=CCWPTR; /* ADDRESS OF THE CCWS @Y30LB00*/ 02641000 L @07,CCWPTR 0734 02642000 ST @07,IOSVST(,@04) 0734 02643000 */* CLEAR AND SET SSCDATA AREA FIELDS AS REQUIRED @ZDR2048*/ 02644000 * 0735 02645000 * IOECB=''B; /* CLEAR IO ECB @ZDR2048*/ 02646000 SLR @07,@07 0735 02647000 ST @07,IOECB(,@09) 0735 02648000 * IOERRCD=''B; /* CLEAR IO ERROR CODE @ZDR2048*/ 02649000 STH @07,IOERRCD(,@09) 0736 02650000 * APPSW=''B; /* CLEAR APPENDAGE 0737 02651000 * SWITCHES@ZDR2048 */ 02652000 STH @07,APPSW(,@09) 0737 02653000 * TCBADDR=TCBPT; /* TCB ADDRESS @Y30LB00*/ 02654000 L @07,TCBPT 0738 02655000 ST @07,TCBADDR(,@09) 0738 02656000 *IOBLKEXT: /* @Y30LB00*/ 02657000 * RETURN; /* RETURN TO CALLER WITH @Y30LB00 02658000 * SRB, IOSB, AND MSSC @Y30LB00 02659000 * DATA AREA INITIALIZED @Y30LB00*/ 02660000 @EL00007 DS 0H 0739 02661000 @EF00007 DS 0H 0739 02662000 @ER00007 BR @14 0739 02663000 * END IOBLKBLD; /* @Y30LB00*/ 02664000 B @EL00007 0740 02665000 * 0741 02666000 */* START OF SPECIFICATIONS **** @Y30LB00 02667000 * @Y30LB00 02668000 *01* MODULE-NAME = MOVORDER @Y30LB00 02669000 * @Y30LB00 02670000 *01* DESCRIPTIVE-NAME = MOVE INPUT PARAMETERS INTO @Y30LB00 02671000 * ORDER AREA @Y30LB00 02672000 * @Y30LB00 02673000 *01* FUNCTION = THIS SUBROUTINE MOVES THE INPUT @Y30LB00 02674000 * INTO THE STORAGE OBTAINED FOR THE @Y30LB00 02675000 * ORDER @Y30LB00 02676000 * @Y30LB00 02677000 * @Y30LB00 02678000 *02* PURPOSE = THIS SUBROUTINE CONSTRUCTS THE ORDER @Y30LB00 02679000 * TO BE TRANSFERRED FROM THE INPUT @Y30LB00 02680000 * PARAMETERS. FOR SUSPEND WITH PREPARE-TO- @ZD00155 02681000 * SWAP ATTRIBUTE: BUILDS NO-OP ORDER ALSO. @ZD00155 02682000 * @Y30LB00 02683000 *02* INPUT = ORDPTR @Y30LB00 02684000 * R6 - ADDRESS OF INPUT PARAMETER LIST/ @Y30LB00 02685000 * ARPTR - ADDRESS OF THE ACQUIRE/ @Y30LB00 02686000 * RELINQUISH REQUEST BEING PROCESSED @Y30LB00 02687000 * ORDLENG @Y30LB00 02688000 * R14 - RETURN ADDRESS @Y30LB00 02689000 * @Y30LB00 02690000 *02* OUTPUT = PARAMETERS MOVED INTO ORDER AREA. FOR @ZD00155 02691000 * SUSPEND WITH PREPARE-TO-SWAP ATTRIBUTE: @ZD00155 02692000 * BUILDS NO-OP ORDER ALSO. @ZD00155 02693000 * @Y30LB00 02694000 * @Y30LB00 02695000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 02696000 * 0741 02697000 * 0741 02698000 * /*****************************************************************/ 02699000 * /* */ 02700000 * /* THIS SUBROUTINE MOVES THE REQUEST INTO THE @Y30LB00*/ 02701000 * /* ORDER AREA @Y30LB00*/ 02702000 * /* */ 02703000 * /*****************************************************************/ 02704000 * 0741 02705000 *MOVORDER: 0741 02706000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 02707000 * 0741 02708000 MOVORDER DS 0H 0742 02709000 * /*****************************************************************/ 02710000 * /* */ 02711000 * /* **************************************************** #Y30LB00*/ 02712000 * /* AFTER SETTING UP A POINTER TO THE INPUT REQUEST, @ZD00046*/ 02713000 * /* MOVE INTO THE I/O ORDER AREA THE PARAMETERS IN #Y30LB00*/ 02714000 * /* THE INPUT REQUEST BLOCK. #Y30LB00*/ 02715000 * /* **************************************************** #Y30LB00*/ 02716000 * /* */ 02717000 * /*****************************************************************/ 02718000 * 0742 02719000 * RFY 0742 02720000 * (R9) RESTRICTED; /* #Y30LB00*/ 02721000 * IF ARSW=B1ONE THEN /* IS ACQ/REL REQ BEING #Y30LB00 02722000 * PROCESSED #Y30LB00*/ 02723000 TM ARSW,B'00100000' 0743 02724000 BNO @RF00743 0743 02725000 * R9=ARPTR; /* SAVE REQ BLK POINTER #Y30LB00*/ 02726000 L R9,ARPTR 0744 02727000 * ELSE /* NOT ACQ/REL REQUEST #Y30LB00*/ 02728000 * R9=R6; /* SAVE ADDR OF REQUEST #Y30LB00*/ 02729000 B @RC00743 0745 02730000 @RF00743 LR R9,R6 0745 02731000 * R9=R9+4; /* SET POINTER PAST LENGTH FIELD 02732000 * @ZA13482*/ 02733000 @RC00743 AL R9,@CF00076 0746 02734000 * ORDLIST(1:ORDLENG)=R9->DATAAREA(1:ORDLENG);/* @ZD00046*/ 02735000 L @07,ORDPTR 0747 02736000 L @04,ORDLENG 0747 02737000 BCTR @04,0 0747 02738000 EX @04,@SM03094 0747 02739000 * IF(REQCODE=SUSPEND&SUPPRSW=B1ONE) THEN/* SUSPEND WITH @ZD00155 02740000 * PREP-TO-SWAP ATTRIBUTE? 0748 02741000 * @ZD00155*/ 02742000 CLI REQCODE(R6),34 0748 02743000 BNE @RF00748 0748 02744000 TM SUPPRSW(R6),B'00100000' 0748 02745000 BNO @RF00748 0748 02746000 * NOOP1E=NOOPORDR; /* YES,SET UP NO-OP DATA @ZD00155 02747000 * AREA @ZD00155*/ 02748000 L @07,NOOPPTR 0749 02749000 MVC NOOP1E(4,@07),NOOPORDR 0749 02750000 * IF REQCODE=MSCDUMP&QWALTMSC=ON THEN/* DUMP OF ALT MSC ? @ZA27590*/ 02751000 @RF00748 CLI REQCODE(R6),11 0750 02752000 BNE @RF00750 0750 02753000 TM QWALTMSC(R6),B'00000001' 0750 02754000 BNO @RF00750 0750 02755000 * DO; /* @ZA27590*/ 02756000 * QWALTMSC=OFF; /* DON'T WANT TO LEAVE BIT ON 0752 02757000 * @ZA27590*/ 02758000 NI QWALTMSC(R6),B'11111110' 0752 02759000 * IOSUCB=ICBAUCB; /* IS ALT SO SET ALT MSC UCB FOR 02760000 * SIOF */ 02761000 L @07,ICBPTR 0753 02762000 L @07,ICBAUCB(,@07) 0753 02763000 L @04,IOSBPTR 0753 02764000 ST @07,IOSUCB(,@04) 0753 02765000 * IF IOSUCB=ZERO THEN /* IS THERE ALT MSC ? @ZA27590*/ 02766000 LTR @07,@07 0754 02767000 BNZ @RF00754 0754 02768000 * RETNCODE=CF0H; /* NO, SET F0 RETURN CODE 0755 02769000 * @ZA27590*/ 02770000 MVC RETNCODE(4),@CF02507 0755 02771000 * END; /* @ZA27590*/ 02772000 *MOVEEXIT: /* @ZD00155*/ 02773000 * RETURN; /* RETURN TO CALLER - @ZD00155 02774000 * THE INPUT REQUEST @ZD00155 02775000 * PARAMETERS TO BE SENT @ZD00155 02776000 * TO THE MSC HAVE BEEN @ZD00155 02777000 * MOVED INTO THE ORDER @ZD00155 02778000 * AREA @ZD00155*/ 02779000 @EL00008 DS 0H 0757 02780000 @EF00008 DS 0H 0757 02781000 @ER00008 BR @14 0757 02782000 * RFY 0758 02783000 * (R9) UNRESTRICTED; /* @Y30LB00*/ 02784000 * END MOVORDER; /* @Y30LB00*/ 02785000 B @EL00008 0759 02786000 * 0760 02787000 */* START OF SPECIFICATIONS **** @Y30LB00 02788000 * @Y30LB00 02789000 *01* MODULE-NAME = ARERR1 @Y30LB00 02790000 * @Y30LB00 02791000 *01* DESCRIPTIVE-NAME = GIVES REQUESTS WITHIN AN ACQUIRE/ @Y30LB00 02792000 * RELINQUISH CHAIN A COMPLETION CODE @Y30LB00 02793000 * WHICH INDICATES THAT THE REQUEST @Y30LB00 02794000 * WAS NOT PROCESSED ANY FURTHER AFTER @Y30LB00 02795000 * AN ERROR WAS DETECTED IN A @Y30LB00 02796000 * PREVIOUS REQUEST @Y30LB00 02797000 * @Y30LB00 02798000 *01* FUNCTION = THIS SUBROUTINE GIVES ACQUIRE/ @Y30LB00 02799000 * RELINQUISH REQUESTS A COMPLETION @Y30LB00 02800000 * CODE INDICATING THAT THE REQUEST WAS @Y30LB00 02801000 * NOT PROCESSED ANY FURTHER @Y30LB00 02802000 * @Y30LB00 02803000 * @Y30LB00 02804000 *02* PURPOSE = THIS SUBROUTINE GIVES REQUESTS WITHIN @Y30LB00 02805000 * A CHAIN OF ACQUIRES/RELINQUISHES A @Y30LB00 02806000 * COMPLETION CODE INDICATING THAT THE @Y30LB00 02807000 * REQUEST WAS NOT PROCESSED ANY FURTHER. @Y30LB00 02808000 * THIS SUBROUTINE KEYS OFF THE LAST @Y30LB00 02809000 * REQUEST PROCESSED IN THE MAINLINE - @Y30LB00 02810000 * ALL SUBSEQUENT REQUESTS ARE GIVEN THE @Y30LB00 02811000 * COMPLETION CODE. @Y30LB00 02812000 * @Y30LB00 02813000 *02* INPUT = ARPTR @Y30LB00 02814000 * ARERRCD @Y30LB00 02815000 * R14 - RETURN ADDRESS @Y30LB00 02816000 * @Y30LB00 02817000 *02* OUTPUT = ALL ACQUIRE/RELINQUISH REQUESTS @Y30LB00 02818000 * FOLLOWING THE REQUEST ADDRESSED BY ARPTR @Y30LB00 02819000 * CONTAIN THE COMPLETION CODE WHICH @Y30LB00 02820000 * INDICATES THAT THE REQUEST(S) WAS @Y30LB00 02821000 * (WERE) NOT PROCESSED FURTHER. @Y30LB00 02822000 * @Y30LB00 02823000 * ARPTR ADDRESS THE LAST ACQUIRE/RELINQUISH @Y30LB00 02824000 * REQUEST IN THE CHAIN @Y30LB00 02825000 * @Y30LB00 02826000 * RETNCODE = 4 @Y30LB00 02827000 * ARERRSW IS ON @Y30LB00 02828000 * @Y30LB00 02829000 * @Y30LB00 02830000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 02831000 * 0760 02832000 * 0760 02833000 * /*****************************************************************/ 02834000 * /* */ 02835000 * /* THE SUBROUTINE WHICH INDICATES IN ANY ACQUIRE OR @Y30LB00*/ 02836000 * /* RELINQUISH REQUEST AFTER THE ONE THAT HAS AN ERROR @Y30LB00*/ 02837000 * /* THAT THIS REQUEST WAS NOT PROCESSED ANY FURTHER @Y30LB00*/ 02838000 * /* */ 02839000 * /*****************************************************************/ 02840000 * 0760 02841000 *ARERR1: 0760 02842000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 02843000 ARERR1 DS 0H 0761 02844000 * ARERRLP=B1ONE; /* SET THE LOOP SWITCH ON 0761 02845000 * #Y30LB00*/ 02846000 OI ARERRLP,B'00000010' 0761 02847000 * DO WHILE ARERRLP=B1ONE; /* LOOP THRU REST OF #Y30LB00 02848000 * ACQ/REL REQUEST IN CHN 0762 02849000 * #Y30LB00 02850000 * PUTTING COMPLETION CODE 0762 02851000 * #Y30LB00 02852000 * OF NOT-PROCESSED- #Y30LB00 02853000 * FURTHER #Y30LB00*/ 02854000 B @DE00762 0762 02855000 @DL00762 DS 0H 0763 02856000 * IF ARNEDB=ZERO THEN /* ARE THERE ANY MORE REQS 0763 02857000 * #Y30LB00 02858000 * IN THE CHAIN #Y30LB00*/ 02859000 L @09,ARPTR 0763 02860000 L @09,ARNEDB(,@09) 0763 02861000 LTR @09,@09 0763 02862000 BNZ @RF00763 0763 02863000 * ARERRLP=B1ZERO; /* NO, GET OUT OF LOOP #Y30LB00*/ 02864000 NI ARERRLP,B'11111101' 0764 02865000 * ELSE /* ANOTHER REQUEST IN CHN 0765 02866000 * #Y30LB00*/ 02867000 * DO; /* INSERT COMPLETION CODE 0765 02868000 * #Y30LB00 02869000 * IN NEXT REQUEST BLOCK #Y30LB00*/ 02870000 B @RC00763 0765 02871000 @RF00763 DS 0H 0766 02872000 * ARPTR=ARNEDB; /* ADDRESS NEXT REQUEST #Y30LB00*/ 02873000 L @09,ARPTR 0766 02874000 L @09,ARNEDB(,@09) 0766 02875000 ST @09,ARPTR 0766 02876000 * ARCOMPC=ARERRCD; /* SET REASON CODE IN REQ 0767 02877000 * #Y30LB00*/ 02878000 L @07,ARERRCD 0767 02879000 STH @07,ARCOMPC(,@09) 0767 02880000 * END; /* #Y30LB00*/ 02881000 * END; /* #Y30LB00*/ 02882000 @RC00763 DS 0H 0769 02883000 @DE00762 TM ARERRLP,B'00000010' 0769 02884000 BO @DL00762 0769 02885000 * ARERRSW=B1ONE; /* #Y30LB00*/ 02886000 OI ARERRSW,B'00000100' 0770 02887000 * RETNCODE=FOUR; /* #Y30LB00*/ 02888000 MVC RETNCODE(4),@CF00076 0771 02889000 *ERR1EXIT: /* #Y30LB00*/ 02890000 * RETURN; /* RETURN TO CALLER - #Y30LB00 02891000 * ALL REQUESTS SUBSEQUENT 0772 02892000 * #Y30LB00 02893000 * TO THE ONE IN ERROR #Y30LB00 02894000 * CONTAIN NOT-PROCESSED- 0772 02895000 * #Y30LB00 02896000 * FURTHER ERROR CODE #Y30LB00*/ 02897000 @EL00009 DS 0H 0772 02898000 @EF00009 DS 0H 0772 02899000 @ER00009 BR @14 0772 02900000 * END ARERR1; /* #Y30LB00*/ 02901000 B @EL00009 0773 02902000 * 0774 02903000 */* START OF SPECIFICATIONS **** @Y30LB00 02904000 * @Y30LB00 02905000 *01* MODULE-NAME = ARERR2 @Y30LB00 02906000 * @Y30LB00 02907000 *01* DESCRIPTIVE-NAME = GIVES REQUESTS WITHIN AN ACQUIRE/ @Y30LB00 02908000 * RELINQUISH CHAIN A COMPLETION CODE @Y30LB00 02909000 * THAT APPLIES TO ALL THE REQUESTS @Y30LB00 02910000 * @Y30LB00 02911000 *01* FUNCTION = THIS SUBROUTINE GIVES ALL ACQUIRE/ @Y30LB00 02912000 * RELINQUISH REQUESTS WITHIN A CHAIN @Y30LB00 02913000 * A COMPLETION CODE WHICH APPLIES @Y30LB00 02914000 * TO ALL THE REQUESTS. @Y30LB00 02915000 * @Y30LB00 02916000 * IF A COMPLETION CODE FOR A REQUEST @Y30LB00 02917000 * INDICATES IT IS ALREADY IN ERROR, @Y30LB00 02918000 * THE CODE IS NOT BE CHANGED. @Y30LB00 02919000 * @Y30LB00 02920000 * @Y30LB00 02921000 *02* PURPOSE = THIS SUBROUTINE IS CALLED WHEN @Y30LB00 02922000 * ALL REQUESTS WITHIN AN ACQUIRE/ @Y30LB00 02923000 * RELINQUISH CHAIN ARE TO HAVE THE SAME @Y30LB00 02924000 * COMPLETION CODE. THIS SUBROUTINE @Y30LB00 02925000 * KEYS OFF THE FIRST REQUEST IN THE @Y30LB00 02926000 * CHAIN - ALL REQUESTS BUT THOSE @Y30LB00 02927000 * ALREADY IN ERROR ARE GIVEN THE @Y30LB00 02928000 * COMPLETION CODE. @Y30LB00 02929000 * @Y30LB00 02930000 *02* INPUT = ARERRCD @Y30LB00 02931000 * R6 - ADDR OF FIRST ACQUIRE/RELINQUISH @Y30LB00 02932000 * IN THE CHAIN @Y30LB00 02933000 * R14 - RETURN ADDRESS @Y30LB00 02934000 * @Y30LB00 02935000 *02* OUTPUT = ALL ACQUIRE/RELINQUISH REQUESTS @Y30LB00 02936000 * THAT DO NOT HAVE AN ERROR CONTAIN @Y30LB00 02937000 * THE COMPLETION CODE WHICH APPLIES @Y30LB00 02938000 * TO ALL THE REQUESTS IN THE @Y30LB00 02939000 * CHAIN. @Y30LB00 02940000 * @Y30LB00 02941000 * ARPTR ADDRESS THE LAST ACQUIRE/RELINQUISH @Y30LB00 02942000 * REQUEST IN THE CHAIN @Y30LB00 02943000 * @Y30LB00 02944000 * RETNCODE = 4 @Y30LB00 02945000 * ARERRSW IS ON @Y30LB00 02946000 * @Y30LB00 02947000 * @Y30LB00 02948000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 02949000 * 0774 02950000 * 0774 02951000 * /*****************************************************************/ 02952000 * /* */ 02953000 * /* THE SUBROUTINE WHICH INDICATES IN ALL ACQUIRE OR @Y30LB00*/ 02954000 * /* RELINQUISH REQUESTS EXCEPT THOSE ALREADY IN ERROR, @Y30LB00*/ 02955000 * /* THE ERROR THAT APPLIES TO ALL THE REQUESTS @Y30LB00*/ 02956000 * /* WITHIN THE CHAIN @Y30LB00*/ 02957000 * /* */ 02958000 * /*****************************************************************/ 02959000 * 0774 02960000 *ARERR2: 0774 02961000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 02962000 ARERR2 DS 0H 0775 02963000 * ARPTR=R6; /* ADDRESS 1ST ACQ/REL REQ 0775 02964000 * @Y30LB00 02965000 * IN CHAIN @Y30LB00*/ 02966000 ST R6,ARPTR 0775 02967000 * ARERRLP=B1ONE; /* SET LOOP SWITCH ON @Y30LB00*/ 02968000 OI ARERRLP,B'00000010' 0776 02969000 * DO WHILE ARERRLP=B1ONE; /* LOOP THRU CHAIN OF REQS 0777 02970000 * @Y30LB00 02971000 * INSERTING COMPLETION @Y30LB00 02972000 * CODE IN THOSE THAT ARE 0777 02973000 * @Y30LB00 02974000 * NOT IN ERROR @Y30LB00*/ 02975000 B @DE00777 0777 02976000 @DL00777 DS 0H 0778 02977000 * IF ARCOMPC=ZERO THEN /* IS REQUEST IN ERROR @Y30LB00*/ 02978000 L @09,ARPTR 0778 02979000 LH @07,ARCOMPC(,@09) 0778 02980000 N @07,@CF03081 0778 02981000 LTR @07,@07 0778 02982000 BNZ @RF00778 0778 02983000 * ARCOMPC=ARERRCD; /* NO, INSERT ERROR CODE @Y30LB00*/ 02984000 L @07,ARERRCD 0779 02985000 STH @07,ARCOMPC(,@09) 0779 02986000 * IF ARNEDB=ZERO THEN /* IS THERE ANOTHER REQ @Y30LB00 02987000 * IN THE CHAIN @Y30LB00*/ 02988000 @RF00778 L @09,ARPTR 0780 02989000 L @09,ARNEDB(,@09) 0780 02990000 LTR @09,@09 0780 02991000 BNZ @RF00780 0780 02992000 * ARERRLP=B1ZERO; /* NO, SET LOOP SWITCH OFF 0781 02993000 * @Y30LB00*/ 02994000 NI ARERRLP,B'11111101' 0781 02995000 * ELSE /* THERE IS ANOTHER REQ @Y30LB00*/ 02996000 * ARPTR=ARNEDB; /* ADDR NEXT REQ BLOCK @Y30LB00*/ 02997000 B @RC00780 0782 02998000 @RF00780 L @09,ARPTR 0782 02999000 L @09,ARNEDB(,@09) 0782 03000000 ST @09,ARPTR 0782 03001000 * END; /* @Y30LB00*/ 03002000 @RC00780 DS 0H 0783 03003000 @DE00777 TM ARERRLP,B'00000010' 0783 03004000 BO @DL00777 0783 03005000 * ARERRSW=B1ONE; /* INDICATE ACQ/REL ERROR 0784 03006000 * @Y30LB00*/ 03007000 OI ARERRSW,B'00000100' 0784 03008000 * RETNCODE=FOUR; /* SET REASON CODE @Y30LB00*/ 03009000 MVC RETNCODE(4),@CF00076 0785 03010000 *ERR2EXIT: /* @Y30LB00*/ 03011000 * RETURN; /* RETURN TO CALLER - @Y30LB00 03012000 * ALL REQS NOT ALREADY @Y30LB00 03013000 * IN ERROR CONTAIN THE @Y30LB00 03014000 * COMPLETION @Y30LB00*/ 03015000 @EL00010 DS 0H 0786 03016000 @EF00010 DS 0H 0786 03017000 @ER00010 BR @14 0786 03018000 * END ARERR2; /* @Y30LB00*/ 03019000 B @EL00010 0787 03020000 * 0788 03021000 */* START OF SPECIFICATIONS **** @Y30LB00 03022000 * @Y30LB00 03023000 *01* MODULE-NAME = CPUID @Y30LB00 03024000 * @Y30LB00 03025000 *01* DESCRIPTIVE-NAME = IF NECESSARY GETS AND INSERTS @Y30LB00 03026000 * THE CPUID INTO THE ORDER @Y30LB00 03027000 * @Y30LB00 03028000 *01* FUNCTION = THIS SUBROUTINE GETS AND INSERTS @Y30LB00 03029000 * THE CPUID OF THE MACHINE INTO @Y30LB00 03030000 * THOSE ORDERS WHICH REQUIRE IT @Y30LB00 03031000 * @Y30LB00 03032000 * @Y30LB00 03033000 *02* PURPOSE = THIS SUBROUTINE CHECKS FOR AN @Y30LB00 03034000 * ACQUIRE, RELINQUISH, MOUNT, DEMOUNT, @Y30LB00 03035000 * VARY OFF, OR PURGE REQUEST @Y30LB00 03036000 * WITH A CPUID FIELD OF ZERO. IF ANY @Y30LB00 03037000 * OF THE ABOVE REQUESTS HAS A ZERO @Y30LB00 03038000 * CPUID, THE MACHINE CPUID IS STORED @Y30LB00 03039000 * AND INSERTED INTO THE ORDER. @Y30LB00 03040000 * FOR DISASSOCIATE THE ICBCPUID @G24LB05 03041000 * FIELD IS UPDATED FROM ASDACPU @G24LB05 03042000 * FIELD OF DISASSOCIATE ORDER @G24LB05 03043000 * @Y30LB00 03044000 *02* INPUT = ORDPTR @Y30LB00 03045000 * R6 - ADDRESS OF INPUT REQUEST @Y30LB00 03046000 * @Y30LB00 03047000 *02* OUTPUT = POSSIBLY, ORDERPT AND @Y30LB00 03048000 * MACHINE CPUID INSERTED INTO THE @Y30LB00 03049000 * ORDER @Y30LB00 03050000 * @Y30LB00 03051000 * @Y30LB00 03052000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 03053000 * 0788 03054000 * 0788 03055000 * /*****************************************************************/ 03056000 * /* */ 03057000 * /* DETERMINE IF THE UNIQUE IDENTIFIER OF THE CPU NEEDS @Y30LB00*/ 03058000 * /* TO BE INSERTED INTO THE INPUT BLOCK. IF THE INPUT @Y30LB00*/ 03059000 * /* BLOCK INDICATES THAT THE REQUEST IS ACQUIRE, @Y30LB00*/ 03060000 * /* RELINQUISH, PURGE, MOUNT, DEMOUNT, OR @Y30LB00*/ 03061000 * /* VARY OFF AND THE CPUID FIELD IS ZEROS THEN INSERT @Y30LB00*/ 03062000 * /* THE UNIQUE CPUID INTO THE ORDER FROM ICBCPUID FIELD @G24LB05*/ 03063000 * /* FOR DISASSOCIATE THE ICBCPUID FIELD IS UPDATED @G24LB05*/ 03064000 * /* FROM THE ASDACPU FIELD OF DISASSOCIATE ORDER. @G24LB05*/ 03065000 * /* */ 03066000 * /*****************************************************************/ 03067000 * 0788 03068000 *CPUID: 0788 03069000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 03070000 CPUID DS 0H 0789 03071000 * IF(REQCODE=ACQUIRE&ARHOST=C5ZEROS)|/* #Y30LB00*/ 03072000 * (REQCODE=RELINQ&ARHOST=C5ZEROS)|/* #Y30LB00*/ 03073000 * (REQCODE=MOUNT&MDHOST=C5ZEROS)|/* #Y30LB00*/ 03074000 * (REQCODE=DEMOUNT&DMHOST=C5ZEROS)|/* #Y30LB00*/ 03075000 * (REQCODE=VARYOFF&VOFTEST=B1ONE&/* #Y30LB00*/ 03076000 * VOFHOST=C5ZEROS)|(REQCODE=PURGE&/* #Y30LB00*/ 03077000 * PURGHOST=C5ZEROS)|(REQCODE=ASSOCIAT&/* @G24LB05*/ 03078000 * (ASDASSOC=ON|ASDEINT=ON)& /* @G24LB05*/ 03079000 * ICBMSCA=OFF) THEN /* IS CPUID FIELD ZERO @G24LB05*/ 03080000 CLI REQCODE(R6),2 0789 03081000 BNE @GL00079 0789 03082000 L @09,ARPTR 0789 03083000 CLC ARHOST(5,@09),C5ZEROS 0789 03084000 BE @RT00789 0789 03085000 @GL00079 CLI REQCODE(R6),4 0789 03086000 BNE @GL00078 0789 03087000 L @09,ARPTR 0789 03088000 CLC ARHOST(5,@09),C5ZEROS 0789 03089000 BE @RT00789 0789 03090000 @GL00078 CLI REQCODE(R6),8 0789 03091000 BNE @GL00077 0789 03092000 CLC MDHOST(5,R6),C5ZEROS 0789 03093000 BE @RT00789 0789 03094000 @GL00077 CLI REQCODE(R6),6 0789 03095000 BNE @GL00076 0789 03096000 CLC DMHOST(5,R6),C5ZEROS 0789 03097000 BE @RT00789 0789 03098000 @GL00076 CLI REQCODE(R6),12 0789 03099000 BNE @GL00075 0789 03100000 TM VOFTEST(R6),B'00010000' 0789 03101000 BNO @GL00075 0789 03102000 CLC VOFHOST(5,R6),C5ZEROS 0789 03103000 BE @RT00789 0789 03104000 @GL00075 CLI REQCODE(R6),20 0789 03105000 BNE @GL00074 0789 03106000 CLC PURGHOST(5,R6),C5ZEROS 0789 03107000 BE @RT00789 0789 03108000 @GL00074 CLI REQCODE(R6),44 0789 03109000 BNE @RF00789 0789 03110000 TM ASDASSOC(R6),B'01000100' 0789 03111000 BZ @RF00789 0789 03112000 L @09,ICBPTR 0789 03113000 TM ICBMSCA(@09),B'00000010' 0789 03114000 BNZ @RF00789 0789 03115000 @RT00789 DS 0H 0790 03116000 * DO; /* STORE CPUID INTO REQ #Y30LB00*/ 03117000 * RFY 0791 03118000 * (ARLIST, 0791 03119000 * VOFLIST, 0791 03120000 * MNTLIST, 0791 03121000 * DMTLIST, 0791 03122000 * PURGLIST) /* #Y30LB00*/ 03123000 * BASED(ORDERPT); /* #Y30LB00*/ 03124000 * ORDERPT=ADDR(ORDLIST)-FOUR; /* #Y30LB00 03125000 * ADDRESS THE ORDER AREA 0792 03126000 * #Y30LB00 03127000 * MINUS FOUR BYTES #Y30LB00*/ 03128000 L @09,ORDPTR 0792 03129000 SL @09,@CF00076 0792 03130000 ST @09,ORDERPT 0792 03131000 * IF REQCODE=ACQUIRE|REQCODE=RELINQ THEN/* #Y30LB00 03132000 * IS ACQ/REL REQUEST #Y30LB00*/ 03133000 CLI REQCODE(R6),2 0793 03134000 BE @RT00793 0793 03135000 CLI REQCODE(R6),4 0793 03136000 BNE @RF00793 0793 03137000 @RT00793 DS 0H 0794 03138000 * ARHOST=ICBCPUID; /* STORE CPUID @G24LB05*/ 03139000 L @09,ORDERPT 0794 03140000 L @07,ICBPTR 0794 03141000 MVC ARHOST(5,@09),ICBCPUID(@07) 0794 03142000 * ELSE /* NOT ACQ/REL REQUEST #Y30LB00*/ 03143000 * IF REQCODE=MOUNT THEN /* IS MOUNT REQUEST #Y30LB00*/ 03144000 B @RC00793 0795 03145000 @RF00793 CLI REQCODE(R6),8 0795 03146000 BNE @RF00795 0795 03147000 * MDHOST=ICBCPUID; /* STORE CPUID @G24LB05*/ 03148000 L @09,ORDERPT 0796 03149000 L @07,ICBPTR 0796 03150000 MVC MDHOST(5,@09),ICBCPUID(@07) 0796 03151000 * ELSE /* NOT MOUNT REQUEST #Y30LB00*/ 03152000 * IF REQCODE=DEMOUNT THEN /* #Y30LB00 03153000 * IS DEMOUNT REQUEST #Y30LB00*/ 03154000 B @RC00795 0797 03155000 @RF00795 CLI REQCODE(R6),6 0797 03156000 BNE @RF00797 0797 03157000 * DMHOST=ICBCPUID; /* STORE CPUID @G24LB05*/ 03158000 L @09,ORDERPT 0798 03159000 L @07,ICBPTR 0798 03160000 MVC DMHOST(5,@09),ICBCPUID(@07) 0798 03161000 * ELSE /* NOT DEMOUNT REQUEST #Y30LB00*/ 03162000 * IF REQCODE=VARYOFF THEN/* #Y30LB00 03163000 * IS VARY OFF REQUEST #Y30LB00*/ 03164000 B @RC00797 0799 03165000 @RF00797 CLI REQCODE(R6),12 0799 03166000 BNE @RF00799 0799 03167000 * VOFHOST=ICBCPUID; /* STORE CPUID @G24LB05*/ 03168000 L @09,ORDERPT 0800 03169000 L @07,ICBPTR 0800 03170000 MVC VOFHOST(5,@09),ICBCPUID(@07) 0800 03171000 * ELSE /* NOT VARY OFF REQUEST #Y30LB00*/ 03172000 * IF REQCODE=PURGE THEN/* #Y30LB00 03173000 * IS PURGE REQUEST @Y30LB00*/ 03174000 B @RC00799 0801 03175000 @RF00799 CLI REQCODE(R6),20 0801 03176000 BNE @RF00801 0801 03177000 * PURGHOST=ICBCPUID;/* STORE CPUID @G24LB05*/ 03178000 L @09,ORDERPT 0802 03179000 L @07,ICBPTR 0802 03180000 MVC PURGHOST(5,@09),ICBCPUID(@07) 0802 03181000 * ELSE /* @G24LB05*/ 03182000 * IF REQCODE=ASSOCIAT THEN/* @G24LB05*/ 03183000 B @RC00801 0803 03184000 @RF00801 CLI REQCODE(R6),44 0803 03185000 BNE @RF00803 0803 03186000 * ICBCPUID=ASDACPU;/* @G24LB05*/ 03187000 L @09,ICBPTR 0804 03188000 MVC ICBCPUID(5,@09),ASDACPU(R6) 0804 03189000 * RFY 0805 03190000 * (VOFLIST, 0805 03191000 * MNTLIST, 0805 03192000 * DMTLIST, 0805 03193000 * PURGLIST) /* @Y30LB00*/ 03194000 * BASED(R6); /* @Y30LB00*/ 03195000 @RF00803 DS 0H 0805 03196000 @RC00801 DS 0H 0805 03197000 @RC00799 DS 0H 0805 03198000 @RC00797 DS 0H 0805 03199000 @RC00795 DS 0H 0805 03200000 @RC00793 DS 0H 0806 03201000 * RFY 0806 03202000 * (ARLIST) BASED(ARPTR); /* @Y30LB00*/ 03203000 * END; /* @Y30LB00*/ 03204000 *IDEXIT: /* @Y30LB00*/ 03205000 * RETURN; /* RETURN TO CALLER - @Y30LB00 03206000 * IF REQUIRED FOR THE @Y30LB00 03207000 * ORDER, THE CPUID OF @Y30LB00 03208000 * MACHINE HAS BEEN @Y30LB00 03209000 * INSERTED INTO THE @Y30LB00 03210000 * ORDER @Y30LB00*/ 03211000 @EL00011 DS 0H 0808 03212000 @EF00011 DS 0H 0808 03213000 @ER00011 BR @14 0808 03214000 * END CPUID; /* @Y30LB00*/ 03215000 B @EL00011 0809 03216000 * 0810 03217000 */* START OF SPECIFICATIONS **** @Y30LB00 03218000 * @Y30LB00 03219000 *01* MODULE-NAME = RECRDVRY @Y30LB00 03220000 * @Y30LB00 03221000 *01* DESCRIPTIVE-NAME = INITIATES THE WRITING OF A @Y30LB00 03222000 * SMF RECORD FOR VARY ON/OFF @Y30LB00 03223000 * REQUESTS. CALLS SVC 91 FOR A @Y30LB00 03224000 * VARY OFF REQUEST. @Y30LB00 03225000 * @Y30LB00 03226000 *01* FUNCTION = THIS SUBROUTINE INITIATES THE @Y30LB00 03227000 * THE WRITING OF A SMF RECORD FOR VARY @Y30LB00 03228000 * REQUESTS AND CALLS SVC 91 TO @Y30LB00 03229000 * OFFLOAD THE BUFFERED LOG DATA FOR VARY @Y30LB00 03230000 * OFF REQUESTS. @Y30LB00 03231000 * @Y30LB00 03232000 * @Y30LB00 03233000 *02* PURPOSE = THIS SUBROUTINE CONSTRUCTS @Y30LB00 03234000 * THE SMF RECORD FOR THE VARY AND @Y30LB00 03235000 * INITIATES THE WRITING OF THE RECORD. @Y30LB00 03236000 * FOR A VARY OFF REQUEST SVC 91 IS @Y30LB00 03237000 * CALLED TO OFFLOAD THE BUFFERED @Y30LB00 03238000 * LOG DATA FOR THE DEVICE. @Y30LB00 03239000 * @Y30LB00 03240000 *02* INPUT = R6 - INPUT REQUEST ADDRESS @Y30LB00 03241000 * @Y30LB00 03242000 *02* OUTPUT = SMF RECORD WRITTEN @Y30LB00 03243000 * POSSIBLY, BUFFERED LOG DATA COLLECTED @Y30LB00 03244000 * FOR THE DEVICE @Y30LB00 03245000 * @Y30LB00 03246000 * @Y30LB00 03247000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 03248000 * 0810 03249000 * 0810 03250000 */* THE SUBROUTINE BUILDS A SMF RECORD AND CALLS SVC 83 @Y30LB00 03251000 * INORDER TO HAVE IT WRITTEN. IF THE REQUEST IS AN @Y30LB00 03252000 * VARY OFF SVC 91 IS CALLED TO OFFLOAD THE BUFFERED LOG @Y30LB00 03253000 * DATA FOR THE DEVICE @Y30LB00*/ 03254000 * 0810 03255000 *RECRDVRY: 0810 03256000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 03257000 RECRDVRY DS 0H 0811 03258000 * SAVE14=R14; /* SAVE RETURN ADDRESS #Y30LB00*/ 03259000 ST R14,SAVE14 0811 03260000 * IF SVC83=B1ZERO THEN /* HAS SVC 83 BEEN CALLED 0812 03261000 * #Y30LB00 03262000 * FOR VARY #Y30LB00*/ 03263000 TM SVC83,B'00100000' 0812 03264000 BNZ @RF00812 0812 03265000 * DO; /* CALL SVC 83 #Y30LB00*/ 03266000 * 0813 03267000 * /*************************************************************/ 03268000 * /* */ 03269000 * /* GET STORAGE FOR THE SMF RECORD FROM SUBPOOL 0 #Y30LB00*/ 03270000 * /* */ 03271000 * /*************************************************************/ 03272000 * 0814 03273000 * RFY 0814 03274000 * SMF22VON BASED(SMF22PTR+LENGTH(SMFRCD22));/* @ZDR2048*/ 03275000 * RFY 0815 03276000 * SMF22VOF BASED(SMF22PTR+LENGTH(SMFRCD22));/* @ZDR2048*/ 03277000 * R0=LENGTH(SMFRCD22)+LENGTH(SMF22VON);/* @ZDR2048*/ 03278000 LA R0,28 0816 03279000 * R1=ADDR(IGETMAIN); /* #Y30LB00*/ 03280000 LA R1,IGETMAIN 0817 03281000 * GEN REFS(R1,R0,SMF22PTR); 0818 03282000 * /*@ZDR2048*/ 03283000 * GET STORAGE FOR THE SMF RECORD #Y30LB00 03284000 IGETMA30 GETMAIN EC,MF=(E,(R1)),LV=(R0),A=SMF22PTR,SP=0, @ZDR2048*03285000 RELATED=(SP0,IGC0012F(IFREEM30)) #Y30LB00 03286000 * IF R15=ZERO THEN /* WAS STORAGE OBTAINED #Y30LB00 03287000 * FOR THE SMF RECORD #Y30LB00*/ 03288000 SLR @09,@09 0819 03289000 CR R15,@09 0819 03290000 BNE @RF00819 0819 03291000 * DO; /* INITIALIZE RECORD #Y30LB00*/ 03292000 * SMFRCD22=''B; /* CLEAR RECORD @ZDR2048*/ 03293000 L @07,SMF22PTR 0821 03294000 XC SMFRCD22(22,@07),SMFRCD22(@07) 0821 03295000 * SMF22LEN=LENGTH(SMFRCD22)+LENGTH(SMF22VON);/* LENGTH 0822 03296000 * @ZDR2048*/ 03297000 MVC SMF22LEN(2,@07),@CH00162 0822 03298000 * SMF22RTY=TWENTY2; /* RECORD TYPE - 22 @ZDR2048*/ 03299000 MVI SMF22RTY(@07),X'16' 0823 03300000 * SMF22ECT=ONE; /* COUNT @ZDR2048*/ 03301000 * 0824 03302000 MVC SMF22ECT(2,@07),@CH00061 0824 03303000 * /*********************************************************/ 03304000 * /* */ 03305000 * /* CONVERT THE SSID IN THE REQUEST TO EBCDIC #Y30LB00*/ 03306000 * /* */ 03307000 * /*********************************************************/ 03308000 * 0825 03309000 * CONVERTA=ZERO; /* #Y30LB00*/ 03310000 STCM @09,15,CONVERTA 0825 03311000 * BYTES34=VOFSSID; /* #Y30LB00*/ 03312000 MVC BYTES34(2),VOFSSID(R6) 0826 03313000 * BYTES234=BYTES234*SIXTEEN;/* #Y30LB00*/ 03314000 SLR @09,@09 0827 03315000 ICM @09,7,BYTES234 0827 03316000 SLA @09,4 0827 03317000 STCM @09,7,BYTES234 0827 03318000 * SIGN=B4ONES; /* #Y30LB00*/ 03319000 OI SIGN,B'00001111' 0828 03320000 * UNPK(CONVERTA,BYTES34); /* #Y30LB00*/ 03321000 UNPK CONVERTA(4),BYTES34(2) 0829 03322000 * IF BYTE2>TWO49 THEN /* DOES BYTE 2 NEED TO BE 0830 03323000 * #Y30LB00 03324000 * CONVERTED? #Y30LB00*/ 03325000 CLI BYTE2,249 0830 03326000 BNH @RF00830 0830 03327000 * BYTE2=BYTE2-FIFTY7; /* YES #Y30LB00*/ 03328000 SLR @09,@09 0831 03329000 IC @09,BYTE2 0831 03330000 SL @09,@CF02471 0831 03331000 STC @09,BYTE2 0831 03332000 * IF BYTE3>TWO49 THEN /* DOES BYTE 3 NEED TO #Y30LB00 03333000 * BE CONVERTED? #Y30LB00*/ 03334000 @RF00830 CLI BYTE3,249 0832 03335000 BNH @RF00832 0832 03336000 * BYTE3=BYTE3-FIFTY7; /* YES #Y30LB00*/ 03337000 SLR @09,@09 0833 03338000 IC @09,BYTE3 0833 03339000 SL @09,@CF02471 0833 03340000 STC @09,BYTE3 0833 03341000 * IF BYTE4>TWO49 THEN /* DOES BYTE 4 NEED TO BE 0834 03342000 * #Y30LB00 03343000 * CONVERTED? #Y30LB00*/ 03344000 @RF00832 CLI BYTE4,249 0834 03345000 BNH @RF00834 0834 03346000 * BYTE4=BYTE4-FIFTY7; /* YES #Y30LB00*/ 03347000 SLR @09,@09 0835 03348000 IC @09,BYTE4 0835 03349000 SL @09,@CF02471 0835 03350000 STC @09,BYTE4 0835 03351000 * IF REQCODE=VARYON THEN /* IS REQ FOR VARY ON #Y30LB00*/ 03352000 @RF00834 CLI REQCODE(R6),10 0836 03353000 BNE @RF00836 0836 03354000 * DO; /* YES, SET ID TO VARYON #Y30LB00*/ 03355000 * SMF22VON=''B; /* CLEAR ELEMENT @ZDR2048*/ 03356000 L @09,SMF22PTR 0838 03357000 LA @07,22 0838 03358000 ALR @07,@09 0838 03359000 XC SMF22VON(6,@07),SMF22VON(@07) 0838 03360000 * SMF22IND=SMFVON; /* CREATOR INDICATOR @ZDR2048*/ 03361000 MVC SMF22IND(2,@09),@CH00084 0839 03362000 * SMF22NID=SMFVON; /* ELEMENT ID 05 @ZDR2048*/ 03363000 MVI SMF22NID(@07),X'05' 0840 03364000 * SMF22NSI=BYTES234; /* PUT SSID INTO RECORD @ZDR2048*/ 03365000 MVC SMF22NSI(3,@07),BYTES234 0841 03366000 * END; /* #Y30LB00*/ 03367000 * ELSE /* VARY OFF REQUEST #Y30LB00*/ 03368000 * DO; /* SET ID TO VARY OFF #Y30LB00*/ 03369000 B @RC00836 0843 03370000 @RF00836 DS 0H 0844 03371000 * SMF22VOF=''B; /* CLEAR ELEMENT @ZDR2048*/ 03372000 L @09,SMF22PTR 0844 03373000 LA @07,22 0844 03374000 ALR @07,@09 0844 03375000 XC SMF22VOF(6,@07),SMF22VOF(@07) 0844 03376000 * SMF22IND=SMFVOF; /* CREATOR INDICATOR @ZDR2048*/ 03377000 MVC SMF22IND(2,@09),@CH00079 0845 03378000 * SMF22FID=SMFVOF; /* ELEMENT ID 06 @ZDR2048*/ 03379000 MVI SMF22FID(@07),X'06' 0846 03380000 * SMF22FSI=BYTES234; /* PUT SSID INTO RECORD @ZDR2048*/ 03381000 MVC SMF22FSI(3,@07),BYTES234 0847 03382000 * END; /* #Y30LB00*/ 03383000 * R1=SMF22PTR; /* ADDRESS RECORD @ZDR2048*/ 03384000 @RC00836 L R1,SMF22PTR 0849 03385000 * GEN; 0850 03386000 * /*@Y30LB00*/ 03387000 * CALL SVC 83 TO WRITE THE SMF RECORD @Y30LB00 03388000 ISVC83 SVC 83 @Y30LB00 03389000 * SVC83=B1ONE; /* INDICATE SVC83 CALLED @Y30LB00*/ 03390000 OI SVC83,B'00100000' 0851 03391000 */* FREE THE STORAGE FOR THE SMF RECORD @Y30LB00*/ 03392000 * 0852 03393000 * R0=LENGTH(SMFRCD22)+LENGTH(SMF22VON);/* @ZDR2048*/ 03394000 LA R0,28 0852 03395000 * R1=ADDR(IFREEMAI); /* @Y30LB00*/ 03396000 LA R1,IFREEMAI 0853 03397000 * GEN REFS(R1,R0,SMF22PTR); 0854 03398000 * /*@ZDR2048*/ 03399000 * FREE THE STORAGE FOR THE SMF RECORD @Y30LB00 03400000 IFREEM30 FREEMAIN E,MF=(E,(R1)),LV=(R0),A=SMF22PTR,SP=0, @ZDR2048*03401000 RELATED=(SP0,IGC0012F(IGETMA30)) @Y30LB00 03402000 * END; /* @Y30LB00*/ 03403000 * END; /* @Y30LB00*/ 03404000 @RF00819 DS 0H 0857 03405000 * IF REQCODE=VARYOFF&SVC91=B1ZERO THEN/* @Y30LB00 03406000 * IS VARY OFF REQUEST @Y30LB00*/ 03407000 @RF00812 CLI REQCODE(R6),12 0857 03408000 BNE @RF00857 0857 03409000 TM SVC91,B'00010000' 0857 03410000 BNZ @RF00857 0857 03411000 * DO; /* YES, CALL SVC 91 @Y30LB00*/ 03412000 * R0=ICBPUCB; /* GET ADDRESS OF PRIMARY 0859 03413000 * @Y30LB00 03414000 * UCB FOR MSC @Y30LB00*/ 03415000 L @09,ICBPTR 0859 03416000 L R0,ICBPUCB(,@09) 0859 03417000 * GEN REFS(R0); 0860 03418000 * /*@Y30LB00*/ 03419000 LCR R0,R0 GET 2S COMPLEMENT OF @Y30LB00 03420000 * DSM UCB ADDRESS @Y30LB00 03421000 * R1=VOFSSID; /* GET SSID OF DEV VARIED 0861 03422000 * @Y30LB00*/ 03423000 LH R1,VOFSSID(,R6) 0861 03424000 * GEN; 0862 03425000 * /*@Y30LB00*/ 03426000 * CALL SVC 91 TO OFFLOAD THE BUFFERED LOG DATA FOR THE @Y30LB00 03427000 * DEVICE VARIED OFF @Y30LB00 03428000 ISVC91 SVC 91 @Y30LB00 03429000 * SVC91=B1ONE; /* INDICATE SVC91 CALLED @Y30LB00*/ 03430000 OI SVC91,B'00010000' 0863 03431000 * END; /* @Y30LB00*/ 03432000 *RCRDEXIT: /* @Y30LB00*/ 03433000 * R14=SAVE14; /* RESTORE RETURN ADDRESS 0865 03434000 * @Y30LB00*/ 03435000 @RF00857 DS 0H 0865 03436000 RCRDEXIT L R14,SAVE14 0865 03437000 * RETURN; /* RETURN TO CALLER - @Y30LB00 03438000 * POSSIBLY, SMF RECORD @Y30LB00 03439000 * WRITTEN AND BUFFERED @Y30LB00 03440000 * LOG DATA COLLECTED FOR 0866 03441000 * @Y30LB00 03442000 * THE DEVICE @Y30LB00*/ 03443000 @EL00012 DS 0H 0866 03444000 @EF00012 DS 0H 0866 03445000 @ER00012 BR @14 0866 03446000 * END RECRDVRY; /* @Y30LB00*/ 03447000 * 0868 03448000 */* START OF SPECIFICATIONS **** @Y30LB00 03449000 * @Y30LB00 03450000 *01* MODULE-NAME = SYNCHK @Y30LB00 03451000 * @Y30LB00 03452000 *01* DESCRIPTIVE-NAME = SYNTAX CHECKS A REQUEST TO @Y30LB00 03453000 * MSSC SVC. @Y30LB00 03454000 * @Y30LB00 03455000 *01* FUNCTION = THIS SUBROUTINE SYNTAX CHECKS REQUESTS @Y30LB00 03456000 * WITH IMPLIED OR REQUESTED DELAYED @Y30LB00 03457000 * RESPONSE FOR CORRECT LENGTH, @Y30LB00 03458000 * A NON-ZERO ECB ADDRESS, AND POSSIBLY, @Y30LB00 03459000 * VALID NUMBER OF EXTENTS IF AN @Y30LB00 03460000 * ACQUIRE/RELINQUISH REQUEST. @Y30LB00 03461000 * @Y30LB00 03462000 * @Y30LB00 03463000 *02* PURPOSE = THIS SUBROUTINE SYNTAX CHECKS REQUESTS @Y30LB00 03464000 * WITH AN IMPLIED OR REQUESTED DELAYED @Y30LB00 03465000 * RESPONSE TO INSURE THAT THE LENGTH @Y30LB00 03466000 * SPECIFIED IN THE REQUEST IS CORRECT. @Y30LB00 03467000 * THE ECB ADDRESS IS CHECKED TO INSURE @Y30LB00 03468000 * THAT IT IS NOT ZERO. FOR ACQUIRE/ @Y30LB00 03469000 * RELINQUISH REQUEST, THE NUMBER OF EXTENTS @Y30LB00 03470000 * IS CHECKED TO INSURE THAT IT IS WITHIN @Y30LB00 03471000 * THE RANGE OF 1 AND 16 (INCLUSIVE) @Y30LB00 03472000 * @Y30LB00 03473000 * CALLS THE FOLLOWING MSSC SVC SUBROUTINE: @Y30LB00 03474000 * @Y30LB00 03475000 * LENCHK @Y30LB00 03476000 * @Y30LB00 03477000 *02* INPUT = R6 - INPUT REQUEST ADDRESS @Y30LB00 03478000 * @Y30LB00 03479000 *02* OUTPUT = RETNCODE @Y30LB00 03480000 * 0 - NO ERROR @Y30LB00 03481000 * 370 - PARAMETER NOT AS EXPECTED @Y30LB00 03482000 * (INCORRECT LENGTH, ECB ADDRESS @Y30LB00 03483000 * ZERO, OR INVALID EXTENTS) @Y30LB00 03484000 * @Y30LB00 03485000 * @Y30LB00 03486000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 03487000 * 0868 03488000 * 0868 03489000 */* SUBROUTINE WHICH SYNTAX CHECKS THOSE INPUT REQUESTS @Y30LB00*/ 03490000 */* TO THE SVC WITH AN IMPLIED OR REQUESTED DELAYED RESPONSE @Y30LB00*/ 03491000 */* TO INSURE THAT THE LENGTH OF THE REQUEST IS CORRECT, @Y30LB00*/ 03492000 */* THAT THE ECB ADDRESS IS NOT ZERO, AND THAT THE NUMBER @Y30LB00*/ 03493000 */* OF EXTS FOR AN ACQUIRE/RELINQUISH REQUEST IS BETWEEN @Y30LB00*/ 03494000 */* 1 AND 16 (INCLUSIVE) @Y30LB00*/ 03495000 * 0868 03496000 *SYNCHK: 0868 03497000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 03498000 SYNCHK DS 0H 0869 03499000 * SAVE14=R14; /* #Y30LB00*/ 03500000 ST R14,SAVE14 0869 03501000 * IF REQCODE=MOVE THEN /* IF MOVE REQUEST #Y30LB00*/ 03502000 CLI REQCODE(R6),14 0870 03503000 BNE @RF00870 0870 03504000 * DO; /* CHECK THE ECB ADDR AND 0871 03505000 * #Y30LB00 03506000 * REQUEST LENGTH #Y30LB00*/ 03507000 * IF MCRTECB=ZERO|LISTLEN^=LENGTH(MVLIST) THEN/* #Y30LB00 03508000 * IS ECB ADDR ZERO OR #Y30LB00 03509000 * LENGTH INCORRECT #Y30LB00*/ 03510000 L @09,MCRTECB(,R6) 0872 03511000 LTR @09,@09 0872 03512000 BZ @RT00872 0872 03513000 CLC LISTLEN(4,R6),@CF03063 0872 03514000 BE @RF00872 0872 03515000 @RT00872 DS 0H 0873 03516000 * DO; /* SET REASON CODE #Y30LB00*/ 03517000 * 0873 03518000 * /*********************************************************/ 03519000 * /* */ 03520000 * /* INDICATE ERROR DETECTED BEFORE MSVC CALLED AND */ 03521000 * /* #Y30LB00*/ 03522000 * /* SET REASON CODE #Y30LB00*/ 03523000 * /* */ 03524000 * /*********************************************************/ 03525000 * 0874 03526000 * VVICERR=B1ONE; /* #Y30LB00*/ 03527000 OI VVICERR,B'00010000' 0874 03528000 * RETNCODE=CODE370; /* #Y30LB00*/ 03529000 MVC RETNCODE(4),@CF00794 0875 03530000 * END; /* #Y30LB00*/ 03531000 * ELSE /* ECB ADDR NOT ZERO AND #Y30LB00 03532000 * LENGTH CORRECT #Y30LB00*/ 03533000 * DO; /* SAVE ECB ADDR #Y30LB00*/ 03534000 * 0877 03535000 B @RC00872 0877 03536000 @RF00872 DS 0H 0878 03537000 * /*********************************************************/ 03538000 * /* */ 03539000 * /* SET DELAYED RESPONSE SWITCH AND SAVE ECB ADDR #Y30LB00*/ 03540000 * /* */ 03541000 * /*********************************************************/ 03542000 * 0878 03543000 * DRSWITCH=B1ONE; /* #Y30LB00*/ 03544000 OI DRSWITCH,B'10000000' 0878 03545000 * DELRECB=MCRTECB; /* #Y30LB00*/ 03546000 L @09,MCRTECB(,R6) 0879 03547000 ST @09,DELRECB 0879 03548000 * END; /* #Y30LB00*/ 03549000 * END; /* #Y30LB00*/ 03550000 * ELSE /* IF NOT MOVE #Y30LB00*/ 03551000 * IF REQCODE=DEFINE THEN /* IS DEFINE REQUEST #Y30LB00*/ 03552000 B @RC00870 0882 03553000 @RF00870 CLI REQCODE(R6),24 0882 03554000 BNE @RF00882 0882 03555000 * DO; /* CHECK THE ECB ADDR AND 0883 03556000 * #Y30LB00 03557000 * REQUEST LENGTH #Y30LB00*/ 03558000 * IF DEFVECB=ZERO|LISTLEN^=LENGTH(DEFLIST)/* #Y30LB00*/ 03559000 * THEN /* IS ECB ADDR ZERO OR #Y30LB00 03560000 * LENGTH INCORRECT #Y30LB00*/ 03561000 L @09,DEFVECB(,R6) 0884 03562000 LTR @09,@09 0884 03563000 BZ @RT00884 0884 03564000 CLC LISTLEN(4,R6),@CF02521 0884 03565000 BE @RF00884 0884 03566000 @RT00884 DS 0H 0885 03567000 * DO; /* SET REASON CODE #Y30LB00*/ 03568000 * 0885 03569000 * /*******************************************************/ 03570000 * /* */ 03571000 * /* INDICATE ERROR DETECTED BEFORE MSVC CALLED #Y30LB00*/ 03572000 * /* AND SET REASON CODE #Y30LB00*/ 03573000 * /* */ 03574000 * /*******************************************************/ 03575000 * 0886 03576000 * VVICERR=B1ONE; /* @Y30LB00*/ 03577000 OI VVICERR,B'00010000' 0886 03578000 * RETNCODE=CODE370; /* @Y30LB00*/ 03579000 MVC RETNCODE(4),@CF00794 0887 03580000 * END; /* @Y30LB00*/ 03581000 * ELSE /* ECB ADDR NOT ZERO AND @Y30LB00 03582000 * LENGTH CORRECT @Y30LB00*/ 03583000 * DO; /* SAVE ECB ADDRESS @Y30LB00*/ 03584000 * 0889 03585000 B @RC00884 0889 03586000 @RF00884 DS 0H 0890 03587000 * /*******************************************************/ 03588000 * /* */ 03589000 * /* SET DELAYED RESPONSE SWITCH AND SAVE ECB @Y30LB00*/ 03590000 * /* ADDRESS @Y30LB00*/ 03591000 * /* */ 03592000 * /*******************************************************/ 03593000 * 0890 03594000 * DRSWITCH=B1ONE; /* @Y30LB00*/ 03595000 OI DRSWITCH,B'10000000' 0890 03596000 * DELRECB=DEFVECB; /* @Y30LB00*/ 03597000 L @09,DEFVECB(,R6) 0891 03598000 ST @09,DELRECB 0891 03599000 * END; /* @Y30LB00*/ 03600000 * END; /* @Y30LB00*/ 03601000 * ELSE /* IF NOT DEFINE @Y30LB00*/ 03602000 * 0894 03603000 * /*************************************************************/ 03604000 * /* */ 03605000 * /* IS COPY VOLUME REQ @Y30LB00*/ 03606000 * /* */ 03607000 * /*************************************************************/ 03608000 * 0894 03609000 * IF REQCODE=COPYV THEN /* @Y30LB00*/ 03610000 B @RC00882 0894 03611000 @RF00882 CLI REQCODE(R6),42 0894 03612000 BNE @RF00894 0894 03613000 * DO; /* CHECK ECB ADDR AND @Y30LB00 03614000 * REQUEST LENGTH @Y30LB00*/ 03615000 * IF CVOLECB=ZERO|LISTLEN^=LENGTH(CVLIST)/* @Y30LB00*/ 03616000 * THEN /* IS ECB ADDR ZERO OR @Y30LB00 03617000 * LENGTH INCORRECT @Y30LB00*/ 03618000 L @09,CVOLECB(,R6) 0896 03619000 LTR @09,@09 0896 03620000 BZ @RT00896 0896 03621000 CLC LISTLEN(4,R6),@CF00766 0896 03622000 BE @RF00896 0896 03623000 @RT00896 DS 0H 0897 03624000 * DO; /* SET REASON CODE @Y30LB00*/ 03625000 * 0897 03626000 * /*****************************************************/ 03627000 * /* */ 03628000 * /* INDICATE ERROR DETECTED BEFORE MSVC @Y30LB00*/ 03629000 * /* CALLED AND SET REASON CODE @Y30LB00*/ 03630000 * /* */ 03631000 * /*****************************************************/ 03632000 * 0898 03633000 * VVICERR=B1ONE; /* @Y30LB00*/ 03634000 OI VVICERR,B'00010000' 0898 03635000 * RETNCODE=CODE370; /* @Y30LB00*/ 03636000 MVC RETNCODE(4),@CF00794 0899 03637000 * END; /* @Y30LB00*/ 03638000 * ELSE /* ECB ADDR NOT ZERO AND @Y30LB00 03639000 * LENGTH CORRECT @Y30LB00*/ 03640000 * DO; /* SAVE ECB ADDRESS @Y30LB00*/ 03641000 * 0901 03642000 B @RC00896 0901 03643000 @RF00896 DS 0H 0902 03644000 * /*****************************************************/ 03645000 * /* */ 03646000 * /* SET DELAYED RESPONSE SWITCH ON AND SAVE @Y30LB00*/ 03647000 * /* ECB ADDRESS @Y30LB00*/ 03648000 * /* */ 03649000 * /*****************************************************/ 03650000 * 0902 03651000 * DRSWITCH=B1ONE; /* @Y30LB00*/ 03652000 OI DRSWITCH,B'10000000' 0902 03653000 * DELRECB=CVOLECB; /* @Y30LB00*/ 03654000 L @09,CVOLECB(,R6) 0903 03655000 ST @09,DELRECB 0903 03656000 * END; /* @Y30LB00*/ 03657000 * END; /* @Y30LB00*/ 03658000 * ELSE /* NOT COPY VOLUME REQ @Y30LB00*/ 03659000 * IF REQCODE=COPYC THEN /* IS COPY CARTRIDGE REQ @Y30LB00*/ 03660000 B @RC00894 0906 03661000 @RF00894 CLI REQCODE(R6),40 0906 03662000 BNE @RF00906 0906 03663000 * DO; /* CHECK ECB ADDR AND @Y30LB00 03664000 * REQUEST LENGTH @Y30LB00*/ 03665000 * IF CCRTECB=ZERO|LISTLEN^=LENGTH(CCLIST)/* @Y30LB00*/ 03666000 * THEN /* IS ECB ADDR ZERO OR @Y30LB00 03667000 * LENGTH INCORRECT @Y30LB00*/ 03668000 L @09,CCRTECB(,R6) 0908 03669000 LTR @09,@09 0908 03670000 BZ @RT00908 0908 03671000 CLC LISTLEN(4,R6),@CF00430 0908 03672000 BE @RF00908 0908 03673000 @RT00908 DS 0H 0909 03674000 * DO; /* SET REASON CODE @Y30LB00*/ 03675000 * 0909 03676000 * /***************************************************/ 03677000 * /* */ 03678000 * /* INDICATE ERROR DETECTED BEFORE MSVC @Y30LB00*/ 03679000 * /* CALLED AND SET REASON CODE @Y30LB00*/ 03680000 * /* */ 03681000 * /***************************************************/ 03682000 * 0910 03683000 * VVICERR=B1ONE; /* @Y30LB00*/ 03684000 OI VVICERR,B'00010000' 0910 03685000 * RETNCODE=CODE370; /* @Y30LB00*/ 03686000 MVC RETNCODE(4),@CF00794 0911 03687000 * END; /* @Y30LB00*/ 03688000 * ELSE /* ECB ADDR NOT ZERO AND @Y30LB00 03689000 * LENGTH CORRECT @Y30LB00*/ 03690000 * DO; /* SAVE ECB ADDRESS @Y30LB00*/ 03691000 * 0913 03692000 B @RC00908 0913 03693000 @RF00908 DS 0H 0914 03694000 * /***************************************************/ 03695000 * /* */ 03696000 * /* SET DELAYED RESPONSE SWITCH ON AND SAVE @Y30LB00*/ 03697000 * /* ECB ADDRESS @Y30LB00*/ 03698000 * /* */ 03699000 * /***************************************************/ 03700000 * 0914 03701000 * DRSWITCH=B1ONE; /* @Y30LB00*/ 03702000 OI DRSWITCH,B'10000000' 0914 03703000 * DELRECB=CCRTECB; /* @Y30LB00*/ 03704000 L @09,CCRTECB(,R6) 0915 03705000 ST @09,DELRECB 0915 03706000 * END; /* @Y30LB00*/ 03707000 * END; /* @Y30LB00*/ 03708000 * ELSE /* NOT COPY CARTRIDGE REQ 0918 03709000 * @Y30LB00*/ 03710000 * IF REQCODE=COPYTB THEN /* IS COPY TABLES REQUEST 0918 03711000 * @Y30LB00*/ 03712000 B @RC00906 0918 03713000 @RF00906 CLI REQCODE(R6),22 0918 03714000 BNE @RF00918 0918 03715000 * DO; /* CHECK ECB ADDR AND @Y30LB00 03716000 * REQUEST LENGTH @Y30LB00*/ 03717000 * IF LISTLEN^=LENGTH(CTLIST) THEN/* LEN ERROR @Z40LB01*/ 03718000 CLC LISTLEN(4,R6),@CF00487 0920 03719000 BE @RF00920 0920 03720000 * RETNCODE=CODE370; /* SET ERROR CODE @Z40LB01*/ 03721000 MVC RETNCODE(4),@CF00794 0921 03722000 * ELSE /* LENGTH CORRECT @Z40LB01*/ 03723000 * DO; /* @Z40LB01*/ 03724000 * 0922 03725000 B @RC00920 0922 03726000 @RF00920 DS 0H 0923 03727000 * /*************************************************/ 03728000 * /* */ 03729000 * /* NO ECB CHECK FOR INTERNAL COPY TABLES @Z40LB01*/ 03730000 * /* */ 03731000 * /*************************************************/ 03732000 * 0923 03733000 * IF COTBFLG^=(COTBFLG&BIT0800) THEN/* @Z40LB01*/ 03734000 MVC @TS00001(2),COTBFLG(R6) 0923 03735000 NC @TS00001(2),@CB02510 0923 03736000 CLC COTBFLG(2,R6),@TS00001 0923 03737000 BE @RF00923 0923 03738000 * DO; /* CHECK ECB @Z40LB01*/ 03739000 * IF COTBECB=ZERO THEN/* ECB ERROR? @Z40LB01*/ 03740000 L @09,COTBECB(,R6) 0925 03741000 LTR @09,@09 0925 03742000 BNZ @RF00925 0925 03743000 * RETNCODE=CODE370;/* YES SET ERROR @Z40LB01*/ 03744000 MVC RETNCODE(4),@CF00794 0926 03745000 * ELSE /* NO ERROR @Z40LB01*/ 03746000 * DO; /* SET FLAGS @Z40LB01*/ 03747000 B @RC00925 0927 03748000 @RF00925 DS 0H 0928 03749000 * DRSWITCH=B1ONE;/* DEL RESP SW @Z40LB01*/ 03750000 OI DRSWITCH,B'10000000' 0928 03751000 * DELRECB=COTBECB;/* SAVE ECB TR @Z40LB01*/ 03752000 L @09,COTBECB(,R6) 0929 03753000 ST @09,DELRECB 0929 03754000 * END; /* END ECB CHECK @Z40LB01*/ 03755000 * END; /* END ECB VAL CHK @Z40LB01*/ 03756000 * END; /* END GOOD LEN @Z40LB01*/ 03757000 * END; /* END COTB CODE @Z40LB01*/ 03758000 * ELSE /* IF NOT COPY TABLES @Y30LB00*/ 03759000 * 0934 03760000 * /*******************************************************/ 03761000 * /* */ 03762000 * /* IS ACQUIRE OR @Y30LB00*/ 03763000 * /* RELINQUISH REQUEST @Y30LB00*/ 03764000 * /* */ 03765000 * /*******************************************************/ 03766000 * 0934 03767000 * IF((REQCODE=ACQUIRE)|(REQCODE=RELINQ))/* @Y30LB00*/ 03768000 * THEN /* @Y30LB00*/ 03769000 B @RC00918 0934 03770000 @RF00918 CLI REQCODE(R6),2 0934 03771000 BE @RT00934 0934 03772000 CLI REQCODE(R6),4 0934 03773000 BNE @RF00934 0934 03774000 @RT00934 DS 0H 0935 03775000 * DO; /* CHECK ECB ADDRESS FOR @Y30LB00 03776000 * EACH DELAYED RESPONSE #Y30LB00 03777000 * REQUEST AS WELL AS THE 0935 03778000 * #Y30LB00 03779000 * NUMBER OF EXTENTS IN #Y30LB00 03780000 * EACH REQUEST #Y30LB00*/ 03781000 * IF REQCODE=ACQUIRE THEN/* #Y30LB00 03782000 * IS ACQUIRE REQUEST #Y30LB00*/ 03783000 CLI REQCODE(R6),2 0936 03784000 BNE @RF00936 0936 03785000 * ACQSW=B1ONE; /* SET ACQUIRE SWITCH #Y30LB00*/ 03786000 OI ACQSW,B'00010000' 0937 03787000 * ELSE /* RELINQUISH REQUEST #Y30LB00*/ 03788000 * DO; /* SET REL SWITCHES #Y30LB00*/ 03789000 B @RC00936 0938 03790000 @RF00936 DS 0H 0939 03791000 * RELSW=B1ONE; /* #Y30LB00*/ 03792000 * RELERRS=B1ONE;/* #Y30LB00*/ 03793000 OI RELSW,B'00001001' 0940 03794000 * END; /* #Y30LB00*/ 03795000 * ARSW=B1ONE; /* SET ACQ - REL SWITCH ON 0942 03796000 * #Y30LB00*/ 03797000 @RC00936 DS 0H 0943 03798000 * LOOPSW=B1ONE; /* SET LOOP SWITCH ON #Y30LB00*/ 03799000 OI ARSW,B'01100000' 0943 03800000 * ARPTR=R6; /* ADDRESS FIRST ACQ/REL #Y30LB00 03801000 * IN CHAIN OF REQS #Y30LB00*/ 03802000 ST R6,ARPTR 0944 03803000 * DO WHILE LOOPSW=B1ONE;/* #Y30LB00 03804000 * LOOP THRU ACQ/REL CHAIN 0945 03805000 * #Y30LB00 03806000 * CHECKING THE PARAMETERS 0945 03807000 * #Y30LB00 03808000 * PASSED AS INPUT #Y30LB00*/ 03809000 B @DE00945 0945 03810000 @DL00945 DS 0H 0946 03811000 * IF ACQSW=B1ONE THEN/* #Y30LB00 03812000 * IS ACQUIRE CHAIN #Y30LB00*/ 03813000 TM ACQSW,B'00010000' 0946 03814000 BNO @RF00946 0946 03815000 * DO; /* CHECK IF THIS REQUEST #Y30LB00 03816000 * IS AN ACQUIRE #Y30LB00*/ 03817000 * IF AROP^=ACQUIRE THEN/* #Y30LB00 03818000 * IS THIS REQ AN ACQ #Y30LB00*/ 03819000 L @09,ARPTR 0948 03820000 CLI AROP(@09),2 0948 03821000 BE @RF00948 0948 03822000 * DO; /* NOT ACQ, SET ERROR #Y30LB00 03823000 * SWITCHES AND ERROR CODE 0949 03824000 * #Y30LB00*/ 03825000 * INTMIXSW=B1ONE;/* #Y30LB00*/ 03826000 OI INTMIXSW,B'00100000' 0950 03827000 * ARERRSW=B1ONE;/* #Y30LB00*/ 03828000 OI ARERRSW,B'00000100' 0951 03829000 * END; /* #Y30LB00*/ 03830000 * END; /* #Y30LB00*/ 03831000 * ELSE /* RELINQUISH REQUEST #Y30LB00*/ 03832000 * DO; /* IS THIS REQ AN REL #Y30LB00*/ 03833000 B @RC00946 0954 03834000 @RF00946 DS 0H 0955 03835000 * IF AROP^=RELINQ THEN/* #Y30LB00 03836000 * THIS REQ NOT A REL #Y30LB00*/ 03837000 L @09,ARPTR 0955 03838000 CLI AROP(@09),4 0955 03839000 BE @RF00955 0955 03840000 * DO; /* SET ERROR SWITCHES #Y30LB00*/ 03841000 * 0956 03842000 * /*****************************************/ 03843000 * /* */ 03844000 * /* SET SWITCHES WHICH INDICATE #Y30LB00*/ 03845000 * /* INTERMIXED CHAIN OF RELS, #Y30LB00*/ 03846000 * /* ACQ/REL ERROR, REL CHAIN IS #Y30LB00*/ 03847000 * /* NOT TO BE PROCESSED FURTHER #Y30LB00*/ 03848000 * /* */ 03849000 * /*****************************************/ 03850000 * 0957 03851000 * INTMIXSW=B1ONE;/* #Y30LB00*/ 03852000 OI INTMIXSW,B'00100000' 0957 03853000 * ARERRSW=B1ONE;/* #Y30LB00*/ 03854000 OI ARERRSW,B'00000100' 0958 03855000 * RELNOGOS=B1ONE;/* #Y30LB00*/ 03856000 OI RELNOGOS,B'01000000' 0959 03857000 * END; /* #Y30LB00*/ 03858000 * END; /* #Y30LB00*/ 03859000 @RF00955 DS 0H 0962 03860000 * IF ARERRSW^=B1ONE THEN/* #Y30LB00 03861000 * HAS AN ERROR BEEN #Y30LB00 03862000 * DETECTED #Y30LB00*/ 03863000 @RC00946 TM ARERRSW,B'00000100' 0962 03864000 BO @RF00962 0962 03865000 * DO; /* NO, CHECK ECB ADDR, #Y30LB00 03866000 * REQUEST LENGTH, AND #Y30LB00 03867000 * # OF EXTENTS #Y30LB00*/ 03868000 * IF(ARDRES=B1ONE&ARECB=ZERO)|/* #Y30LB00*/ 03869000 * ARLL^=LENGTH(ARLIST) THEN/* #Y30LB00 03870000 * DOES REQ HAVE DELAYED #Y30LB00 03871000 * RESPONSE WITH AN ECB #Y30LB00 03872000 * OF ZERO OR IS LENGTH #Y30LB00 03873000 * INCORRECT #Y30LB00*/ 03874000 L @09,ARPTR 0964 03875000 TM ARDRES(@09),B'01000000' 0964 03876000 BNO @GL00096 0964 03877000 L @09,ARECB(,@09) 0964 03878000 LTR @09,@09 0964 03879000 BZ @RT00964 0964 03880000 @GL00096 L @09,ARPTR 0964 03881000 CLC ARLL(4,@09),@CF01880 0964 03882000 BE @RF00964 0964 03883000 @RT00964 DS 0H 0965 03884000 * ARERRSW=B1ONE;/* #Y30LB00 03885000 * SET ERROR SWITCH #Y30LB00*/ 03886000 OI ARERRSW,B'00000100' 0965 03887000 * ELSE /* DELAYED RESPONSE CHECK 0966 03888000 * #Y30LB00 03889000 * HAD NO ERROR AND #Y30LB00 03890000 * LENGTH CORRECT #Y30LB00*/ 03891000 * IF ARNMEXTSIXTEEN THEN/* #Y30LB00 03893000 * IS NUMBER OF EXTENTS #Y30LB00 03894000 * LESS THAN 1 OR GREATER 0966 03895000 * #Y30LB00 03896000 * THAN SIXTEEN #Y30LB00*/ 03897000 B @RC00964 0966 03898000 @RF00964 L @09,ARPTR 0966 03899000 CLI ARNMEXT(@09),1 0966 03900000 BL @RT00966 0966 03901000 CLI ARNMEXT(@09),16 0966 03902000 BNH @RF00966 0966 03903000 @RT00966 DS 0H 0967 03904000 * ARERRSW=B1ONE;/* #Y30LB00 03905000 * SET ERROR SWITCH #Y30LB00*/ 03906000 OI ARERRSW,B'00000100' 0967 03907000 * END; /* #Y30LB00*/ 03908000 @RF00966 DS 0H 0968 03909000 @RC00964 DS 0H 0969 03910000 * IF ARERRSW=B1ONE THEN/* #Y30LB00 03911000 * IS ERROR SWITCH ON #Y30LB00*/ 03912000 @RF00962 TM ARERRSW,B'00000100' 0969 03913000 BNO @RF00969 0969 03914000 * DO; /* ERROR SWITCH IS ON #Y30LB00*/ 03915000 * IF INTMIXSW=B1ONE THEN/* #Y30LB00 03916000 * IS ERROR INTER MIXED #Y30LB00 03917000 * CHAIN #Y30LB00*/ 03918000 TM INTMIXSW,B'00100000' 0971 03919000 BNO @RF00971 0971 03920000 * ARCOMPC=CODE374;/* #Y30LB00 03921000 * SET ERROR CODE IN REQ #Y30LB00*/ 03922000 L @09,ARPTR 0972 03923000 MVC ARCOMPC(2,@09),@CH00786 0972 03924000 * ELSE /* NOT INTER MIXED ERROR #Y30LB00*/ 03925000 * ARCOMPC=CODE370;/* #Y30LB00*/ 03926000 B @RC00971 0973 03927000 @RF00971 L @09,ARPTR 0973 03928000 MVC ARCOMPC(2,@09),@CH00794 0973 03929000 * IF ACQSW=B1ONE|RELNOGOS=B1ONE/* #Y30LB00*/ 03930000 * THEN /* IS ACQ REQ OR REL WITH 0974 03931000 * #Y30LB00 03932000 * NO GO INDICATION #Y30LB00*/ 03933000 @RC00971 TM ACQSW,B'00010000' 0974 03934000 BO @RT00974 0974 03935000 TM RELNOGOS,B'01000000' 0974 03936000 BNO @RF00974 0974 03937000 @RT00974 DS 0H 0975 03938000 * DO; /* GO GET NO-FURTHER- #Y30LB00 03939000 * PROCESSING COMPLETION #Y30LB00 03940000 * PUT IN OTHER REQUESTS #Y30LB00 03941000 * IN CHAIN #Y30LB00*/ 03942000 * ARERRCD=CODE368;/* #Y30LB00*/ 03943000 MVC ARERRCD(4),@CF00796 0976 03944000 * CALL ARERR1;/* #Y30LB00 03945000 * GO INSERT NO-FURTHER- #Y30LB00 03946000 * PROCESSING COMPLETION #Y30LB00 03947000 * CODE IN OTHER REQS IN #Y30LB00 03948000 * CHAIN #Y30LB00*/ 03949000 BAL @14,ARERR1 0977 03950000 * LOOPSW=B1ZERO;/* #Y30LB00*/ 03951000 NI LOOPSW,B'10111111' 0978 03952000 * END; /* #Y30LB00*/ 03953000 * ELSE /* REL PARAMETER ERROR #Y30LB00*/ 03954000 * RELERRSW=B1ONE;/* #Y30LB00 03955000 * SET REL ERROR SWITCH #Y30LB00*/ 03956000 B @RC00974 0980 03957000 @RF00974 OI RELERRSW,B'10000000' 0980 03958000 * END; /* #Y30LB00*/ 03959000 @RC00974 DS 0H 0982 03960000 * IF((ACQSW=B1ONE)&(ARERRSW^=B1ONE))|/* #Y30LB00*/ 03961000 * ((RELSW=B1ONE)&(RELNOGOS^=B1ONE))/* #Y30LB00*/ 03962000 * THEN /* #Y30LB00 03963000 * IS ACQ REQUEST WITHOUT 0982 03964000 * #Y30LB00 03965000 * ERROR OR A REL REQ #Y30LB00 03966000 * WITHOUT NO-GO #Y30LB00 03967000 * INDICATION #Y30LB00*/ 03968000 @RF00969 TM ACQSW,B'00010000' 0982 03969000 BNO @GL00100 0982 03970000 TM ARERRSW,B'00000100' 0982 03971000 BZ @RT00982 0982 03972000 @GL00100 TM RELSW,B'00001000' 0982 03973000 BNO @RF00982 0982 03974000 TM RELNOGOS,B'01000000' 0982 03975000 BO @RF00982 0982 03976000 @RT00982 DS 0H 0983 03977000 * DO; /* CHECK FOR ANOTHER REQ #Y30LB00*/ 03978000 * IF RELSW=B1ONE THEN/* #Y30LB00 03979000 * IS RELINQUISH REQUEST #Y30LB00*/ 03980000 TM RELSW,B'00001000' 0984 03981000 BNO @RF00984 0984 03982000 * DO; /* RESET ERROR SWITCH(ES) 0985 03983000 * #Y30LB00*/ 03984000 * ARERRSW=B1ZERO;/* #Y30LB00*/ 03985000 NI ARERRSW,B'11111011' 0986 03986000 * IF ARCOMPC=ZERO THEN/* #Y30LB00 03987000 * IS COMPLETION CODE FOR 0987 03988000 * #Y30LB00 03989000 * THIS REQUEST ZERO #Y30LB00*/ 03990000 L @09,ARPTR 0987 03991000 LH @09,ARCOMPC(,@09) 0987 03992000 N @09,@CF03081 0987 03993000 LTR @09,@09 0987 03994000 BNZ @RF00987 0987 03995000 * RELERRS=B1ZERO;/* #Y30LB00 03996000 * SET SWITCH OFF THAT #Y30LB00 03997000 * INDICATES ALL RELS #Y30LB00 03998000 * HAD AN ERROR #Y30LB00*/ 03999000 NI RELERRS,B'11111110' 0988 04000000 * END; /* #Y30LB00*/ 04001000 @RF00987 DS 0H 0990 04002000 * IF ARNEDB^=ZERO THEN/* #Y30LB00 04003000 * IS THERE ANOTHER REQ #Y30LB00*/ 04004000 @RF00984 L @09,ARPTR 0990 04005000 L @09,ARNEDB(,@09) 0990 04006000 LTR @09,@09 0990 04007000 BZ @RF00990 0990 04008000 * ARPTR=ARNEDB;/* #Y30LB00 04009000 * ADDRESS NEXT REQ #Y30LB00*/ 04010000 ST @09,ARPTR 0991 04011000 * ELSE /* NO MORE REQUESTS #Y30LB00*/ 04012000 * LOOPSW=B1ZERO;/* #Y30LB00 04013000 * SET THE LOOP SWITCH OFF 0992 04014000 * #Y30LB00*/ 04015000 B @RC00990 0992 04016000 @RF00990 NI LOOPSW,B'10111111' 0992 04017000 * END; /* #Y30LB00*/ 04018000 @RC00990 DS 0H 0994 04019000 * END; /* #Y30LB00*/ 04020000 @RF00982 DS 0H 0994 04021000 @DE00945 TM LOOPSW,B'01000000' 0994 04022000 BO @DL00945 0994 04023000 * IF RELERRS=B1ONE THEN/* #Y30LB00 04024000 * DID ALL RELS HAVE ERR #Y30LB00*/ 04025000 TM RELERRS,B'00000001' 0995 04026000 BNO @RF00995 0995 04027000 * RETNCODE=FOUR; /* ALL RELS HAD AN ERROR #Y30LB00 04028000 * SET RETURN CODE #Y30LB00*/ 04029000 MVC RETNCODE(4),@CF00076 0996 04030000 * END; /* #Y30LB00*/ 04031000 * ELSE /* NOT ACQ/REL REQUEST #Y30LB00*/ 04032000 * IF REQCODE=VARYOFF THEN/* #Y30LB00 04033000 * IS VARY OFF REQUEST #Y30LB00*/ 04034000 B @RC00934 0998 04035000 @RF00934 CLI REQCODE(R6),12 0998 04036000 BNE @RF00998 0998 04037000 * DO; /* CHECK ECB ADDR AND #Y30LB00 04038000 * REQUEST LENGTH #Y30LB00*/ 04039000 * IF LISTLEN^=LENGTH(VOFLIST) THEN/* #Y30LB00 04040000 * IS LENGTH CORRECT #Y30LB00*/ 04041000 CLC LISTLEN(4,R6),@CF00487 1000 04042000 BE @RF01000 1000 04043000 * RETNCODE=CODE370;/* #Y30LB00 04044000 * SET REASON CODE #Y30LB00*/ 04045000 MVC RETNCODE(4),@CF00794 1001 04046000 * ELSE /* LENGTH CORRECT #Y30LB00*/ 04047000 * IF VOFSTAG=B1ONE THEN/* #Y30LB00 04048000 * IS STAGE ATTRIBUTE #Y30LB00 04049000 * SET #Y30LB00*/ 04050000 B @RC01000 1002 04051000 @RF01000 TM VOFSTAG(R6),B'10000000' 1002 04052000 BNO @RF01002 1002 04053000 * DO; /* CHECK ECB ADDR #Y30LB00*/ 04054000 * IF VOFECB=ZERO THEN/* #Y30LB00 04055000 * IS ECB ADDR ZERO #Y30LB00*/ 04056000 L @09,VOFECB(,R6) 1004 04057000 LTR @09,@09 1004 04058000 BNZ @RF01004 1004 04059000 * DO; /* SET REASON CODE #Y30LB00*/ 04060000 * RETNCODE=CODE370;/* #Y30LB00*/ 04061000 MVC RETNCODE(4),@CF00794 1006 04062000 * END; /* #Y30LB00*/ 04063000 * ELSE /* ECB ADDR NOT ZERO #Y30LB00*/ 04064000 * DO; /* SAVE ECB ADDRESS #Y30LB00*/ 04065000 * 1008 04066000 B @RC01004 1008 04067000 @RF01004 DS 0H 1009 04068000 * /***************************************/ 04069000 * /* */ 04070000 * /* SET DELAYED RESPONSE SWITCH ON AND */ 04071000 * /* #Y30LB00*/ 04072000 * /* SAVE ECB ADDRESS #Y30LB00*/ 04073000 * /* */ 04074000 * /***************************************/ 04075000 * 1009 04076000 * DRSWITCH=B1ONE;/* #Y30LB00*/ 04077000 OI DRSWITCH,B'10000000' 1009 04078000 * DELRECB=VOFECB;/* #Y30LB00*/ 04079000 L @09,VOFECB(,R6) 1010 04080000 ST @09,DELRECB 1010 04081000 * END; /* #Y30LB00*/ 04082000 * END; /* #Y30LB00*/ 04083000 * END; /* #Y30LB00*/ 04084000 * ELSE /* NOT VARY OFF REQUEST #Y30LB00*/ 04085000 * IF REQCODE=TUNE THEN/* #Y30LB00 04086000 * IS TUNE REQUEST #Y30LB00*/ 04087000 B @RC00998 1014 04088000 @RF00998 CLI REQCODE(R6),28 1014 04089000 BNE @RF01014 1014 04090000 * DO; /* CHECK THE ECB ADDR AND 1015 04091000 * #Y30LB00 04092000 * REQUEST LENGTH #Y30LB00*/ 04093000 * IF LISTLEN^=LENGTH(TUNELIST) THEN/* #Y30LB00 04094000 * IS LENGTH CORRECT #Y30LB00*/ 04095000 CLC LISTLEN(4,R6),@CF00758 1016 04096000 BE @RF01016 1016 04097000 * RETNCODE=CODE370;/* #Y30LB00 04098000 * SET REASON CODE #Y30LB00*/ 04099000 MVC RETNCODE(4),@CF00794 1017 04100000 * ELSE /* LENGTH CORRECT #Y30LB00*/ 04101000 * IF TUNMODE=B1ZERO THEN/* #Y30LB00 04102000 * IS DISPLAY ATTRIBUTE #Y30LB00 04103000 * SPECIFIED #Y30LB00*/ 04104000 B @RC01016 1018 04105000 @RF01016 TM TUNMODE(R6),B'10000000' 1018 04106000 BNZ @RF01018 1018 04107000 * DO; /* CHECK ECB ADDR #Y30LB00*/ 04108000 * IF TUNEECB=ZERO THEN/* #Y30LB00 04109000 * IS ECB ADDR ZERO #Y30LB00*/ 04110000 L @09,TUNEECB(,R6) 1020 04111000 LTR @09,@09 1020 04112000 BNZ @RF01020 1020 04113000 * DO; /* SET REASON CODE #Y30LB00*/ 04114000 * RETNCODE=CODE370;/* #Y30LB00*/ 04115000 MVC RETNCODE(4),@CF00794 1022 04116000 * END; /* #Y30LB00*/ 04117000 * ELSE /* ECB ADDR NOT ZERO #Y30LB00*/ 04118000 * DO; /* SAVE ECB ADDRESS #Y30LB00*/ 04119000 * 1024 04120000 B @RC01020 1024 04121000 @RF01020 DS 0H 1025 04122000 * /*************************************/ 04123000 * /* */ 04124000 * /* SET DELAYED RESPONSE SWITCH ON */ 04125000 * /* #Y30LB00*/ 04126000 * /* AND SAVE ECB ADDRESS #Y30LB00*/ 04127000 * /* */ 04128000 * /*************************************/ 04129000 * 1025 04130000 * DRSWITCH=B1ONE;/* #Y30LB00*/ 04131000 OI DRSWITCH,B'10000000' 1025 04132000 * DELRECB=TUNEECB;/* #Y30LB00*/ 04133000 L @09,TUNEECB(,R6) 1026 04134000 ST @09,DELRECB 1026 04135000 * END; /* #Y30LB00*/ 04136000 * END; /* #Y30LB00*/ 04137000 * END; /* #Y30LB00*/ 04138000 * ELSE /* NOT VARY OFF WITH #Y30LB00 04139000 * STAGING ATTRIBUTE #Y30LB00*/ 04140000 * IF REQCODE=DEMOUNT THEN/* #Y30LB00 04141000 * IS DEMOUNT REQUEST #Y30LB00*/ 04142000 B @RC01014 1030 04143000 @RF01014 CLI REQCODE(R6),6 1030 04144000 BNE @RF01030 1030 04145000 * DO; /* CHECK ECB ADDR AND #Y30LB00 04146000 * REQUEST LENGTH #Y30LB00*/ 04147000 * IF LISTLEN^=LENGTH(DMTLIST) THEN/* #Y30LB00 04148000 * IS LENGTH CORRECT #Y30LB00*/ 04149000 CLC LISTLEN(4,R6),@CF00162 1032 04150000 BE @RF01032 1032 04151000 * RETNCODE=CODE370;/* #Y30LB00 04152000 * SET REASON CODE #Y30LB00*/ 04153000 MVC RETNCODE(4),@CF00794 1033 04154000 * ELSE /* LENGTH CORRECT #Y30LB00*/ 04155000 * IF DMDELRSP=B1ONE THEN/* #Y30LB00 04156000 * IS DELAYED RESPONSE #Y30LB00 04157000 * SPECIFIED #Y30LB00*/ 04158000 B @RC01032 1034 04159000 @RF01032 TM DMDELRSP(R6),B'01000000' 1034 04160000 BNO @RF01034 1034 04161000 * DO; /* CHECK ECB ADDR #Y30LB00*/ 04162000 * IF DMNTECB=ZERO THEN/* #Y30LB00 04163000 * IS ECB ADDR ZERO #Y30LB00*/ 04164000 L @09,DMNTECB(,R6) 1036 04165000 LTR @09,@09 1036 04166000 BNZ @RF01036 1036 04167000 * DO; /* SET REASON CODE #Y30LB00*/ 04168000 * 1037 04169000 * /***********************************/ 04170000 * /* */ 04171000 * /* INDICATE ERROR DETECTED BEFORE */ 04172000 * /* #Y30LB00*/ 04173000 * /* MSVC CALLED AND SET REASON CODE */ 04174000 * /* #Y30LB00*/ 04175000 * /* */ 04176000 * /***********************************/ 04177000 * 1038 04178000 * VVICERR=B1ONE;/* #Y30LB00*/ 04179000 OI VVICERR,B'00010000' 1038 04180000 * RETNCODE=CODE370;/* #Y30LB00*/ 04181000 MVC RETNCODE(4),@CF00794 1039 04182000 * END;/* #Y30LB00*/ 04183000 * ELSE /* ECB ADDR NOT ZERO #Y30LB00*/ 04184000 * DO; /* SAVE ECB ADDRESS #Y30LB00*/ 04185000 * 1041 04186000 B @RC01036 1041 04187000 @RF01036 DS 0H 1042 04188000 * /***********************************/ 04189000 * /* */ 04190000 * /* SET DELAYED RESPONSE SWITCH ON */ 04191000 * /* #Y30LB00*/ 04192000 * /* AND SAVE ECB ADDRESS #Y30LB00*/ 04193000 * /* */ 04194000 * /***********************************/ 04195000 * 1042 04196000 * DRSWITCH=B1ONE;/* #Y30LB00*/ 04197000 OI DRSWITCH,B'10000000' 1042 04198000 * DELRECB=DMNTECB;/* #Y30LB00*/ 04199000 L @09,DMNTECB(,R6) 1043 04200000 ST @09,DELRECB 1043 04201000 * END;/* #Y30LB00*/ 04202000 * END; /* #Y30LB00*/ 04203000 * END; /* #Y30LB00*/ 04204000 * ELSE /* NOT DEMOUNT REQUEST @Z40LB01*/ 04205000 * IF REQCODE=NULLCART THEN/* @Z40LB01*/ 04206000 B @RC01030 1047 04207000 @RF01030 CLI REQCODE(R6),9 1047 04208000 BNE @RF01047 1047 04209000 * DO; /* CHECK NULLIFYC ECB AND LENGTH 04210000 * @Z40LB01*/ 04211000 * IF NULECB=ZERO|/* @Z40LB01*/ 04212000 * LISTLEN^=LENGTH(NULLLIST) THEN/* 1049 04213000 * @Z40LB01*/ 04214000 L @09,NULECB(,R6) 1049 04215000 LTR @09,@09 1049 04216000 BZ @RT01049 1049 04217000 CLC LISTLEN(4,R6),@CF00770 1049 04218000 BE @RF01049 1049 04219000 @RT01049 DS 0H 1050 04220000 * DO; /* ERROR DETECTED @Z40LB01*/ 04221000 * VVICERR=B1ONE;/* @Z40LB01*/ 04222000 OI VVICERR,B'00010000' 1051 04223000 * RETNCODE=CODE370;/* @Z40LB01*/ 04224000 MVC RETNCODE(4),@CF00794 1052 04225000 * END; /* @Z40LB01*/ 04226000 * ELSE /* @Z40LB01*/ 04227000 * DO; /* NO ERROR FOUND @Z40LB01*/ 04228000 B @RC01049 1054 04229000 @RF01049 DS 0H 1055 04230000 * DRSWITCH=B1ONE;/* @Z40LB01*/ 04231000 OI DRSWITCH,B'10000000' 1055 04232000 * DELRECB=NULECB;/* @Z40LB01*/ 04233000 L @09,NULECB(,R6) 1056 04234000 ST @09,DELRECB 1056 04235000 * END; /* @Z40LB01*/ 04236000 * END; /* @Z40LB01*/ 04237000 * ELSE /* NOT NULLIFY REQUEST @Z40LB01*/ 04238000 * IF REQCODE=MSCREAD|/* QUERY READ @Z40LB01*/ 04239000 * REQCODE=CAUDIT|/* QUERY CELL AUDIT 1059 04240000 * @Z40LB01*/ 04241000 * REQCODE=MSCDUMP THEN/* QUERY DUMP 1059 04242000 * @Z40LB01*/ 04243000 B @RC01047 1059 04244000 @RF01047 CLI REQCODE(R6),5 1059 04245000 BE @RT01059 1059 04246000 CLI REQCODE(R6),7 1059 04247000 BE @RT01059 1059 04248000 CLI REQCODE(R6),11 1059 04249000 BNE @RF01059 1059 04250000 @RT01059 DS 0H 1060 04251000 * DO; /* QUERY MSC REQUEST @Z40LB01*/ 04252000 * IF LISTLEN^=LENGTH(QUERLIST)|/* @ZA13482*/ 04253000 * QUPTR=ZERO THEN/* @ZA13482*/ 04254000 CLC LISTLEN(4,R6),@CF00770 1061 04255000 BNE @RT01061 1061 04256000 L @09,QUPTR(,R6) 1061 04257000 LTR @09,@09 1061 04258000 BNZ @RF01061 1061 04259000 @RT01061 DS 0H 1062 04260000 * RETNCODE=CODE370;/* SET ERROR CODE 1062 04261000 * @Z40LB01*/ 04262000 MVC RETNCODE(4),@CF00794 1062 04263000 * END; /* END OF QUERY REQUEST SYNTAX CK 04264000 * @Z40LB01*/ 04265000 * ELSE /* NOT QUERY REQUEST @Z40LB01*/ 04266000 * CALL LENCHK;/* CALL SUBROUTINE TO #Y30LB00 04267000 * CHECK JUST THE LENGTH #Y30LB00 04268000 * OF THE REQUEST #Y30LB00*/ 04269000 B @RC01059 1064 04270000 @RF01059 BAL @14,LENCHK 1064 04271000 * R14=SAVE14; /* #Y30LB00*/ 04272000 @RC01059 DS 0H 1065 04273000 @RC01047 DS 0H 1065 04274000 @RC01030 DS 0H 1065 04275000 @RC01014 DS 0H 1065 04276000 @RC00998 DS 0H 1065 04277000 @RC00934 DS 0H 1065 04278000 @RC00918 DS 0H 1065 04279000 @RC00906 DS 0H 1065 04280000 @RC00894 DS 0H 1065 04281000 @RC00882 DS 0H 1065 04282000 @RC00870 L R14,SAVE14 1065 04283000 *SYNEXIT: /* #Y30LB00*/ 04284000 * RETURN; /* RETURN TO CALLER WITH #Y30LB00 04285000 * REQUEST SYNTAX CHECKED, 1066 04286000 * #Y30LB00 04287000 * AND POSSIBLY THE REASON 1066 04288000 * #Y30LB00 04289000 * CODE SET #Y30LB00*/ 04290000 @EL00013 DS 0H 1066 04291000 @EF00013 DS 0H 1066 04292000 @ER00013 BR @14 1066 04293000 * END SYNCHK; /* #Y30LB00*/ 04294000 B @EL00013 1067 04295000 * 1068 04296000 */* START OF SPECIFICATIONS **** @Y30LB00 04297000 * @Y30LB00 04298000 *01* MODULE-NAME = LENCHK @Y30LB00 04299000 * @Y30LB00 04300000 *01* DESCRIPTIVE-NAME = CHECKS LENGTH A REQUEST TO @Y30LB00 04301000 * MSSC SVC. @Y30LB00 04302000 * @Y30LB00 04303000 *01* FUNCTION = THIS SUBROUTINE CHECKS THE LENGTH OF @Y30LB00 04304000 * THOSE REQUESTS WITHOUT AN IMPLIED @Y30LB00 04305000 * OR REQUESTED DELAYED RESPONSE FOR @Y30LB00 04306000 * CORRECT LENGTH. @Y30LB00 04307000 * @Y30LB00 04308000 * @Y30LB00 04309000 *02* PURPOSE = THIS SUBROUTINE CHECKS THOSE REQUESTS @Y30LB00 04310000 * WITHOUT AN IMPLIED OR REQUESTED DELAYED @Y30LB00 04311000 * RESPONSE TO INSURE THAT THE LENGTH @Y30LB00 04312000 * SPECIFIED IN THE REQUEST IS CORRECT. @Y30LB00 04313000 * @Y30LB00 04314000 *02* INPUT = R6 - INPUT REQUEST ADDRESS @Y30LB00 04315000 * @Y30LB00 04316000 *02* OUTPUT = RETNCODE @Y30LB00 04317000 * 0 - NO ERROR @Y30LB00 04318000 * 370 - PARAMETER NOT AS EXPECTED @Y30LB00 04319000 * (INCORRECT LENGTH, OR UNKNOWN @Y30LB00 04320000 * REQUEST) @Y30LB00 04321000 * @Y30LB00 04322000 * @Y30LB00 04323000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 04324000 * 1068 04325000 * 1068 04326000 */* SUBROUTINE WHICH CHECKS THE LENGTH OF A REQUEST TO @Y30LB00*/ 04327000 */* INSURE THAT IT IS CORRECT @Y30LB00*/ 04328000 * 1068 04329000 *LENCHK: 1068 04330000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 04331000 LENCHK DS 0H 1069 04332000 * IF REQCODE=MOUNT THEN /* #Y30LB00 04333000 * IS MOUNT REQUEST #Y30LB00*/ 04334000 CLI REQCODE(R6),8 1069 04335000 BNE @RF01069 1069 04336000 * DO; /* CHECK REQUEST LENGTH #Y30LB00*/ 04337000 * IF LISTLEN^=LENGTH(MNTLIST) THEN/* #Y30LB00 04338000 * IS LENGTH CORRECT #Y30LB00*/ 04339000 CLC LISTLEN(4,R6),@CF00162 1071 04340000 BE @RF01071 1071 04341000 * RETNCODE=CODE370; /* #Y30LB00 04342000 * SET REASON CODE #Y30LB00*/ 04343000 MVC RETNCODE(4),@CF00794 1072 04344000 * END; /* #Y30LB00*/ 04345000 * ELSE /* NOT MOUNT REQUEST #Y30LB00*/ 04346000 * IF REQCODE=PURGE THEN /* #Y30LB00 04347000 * IS PURGE REQUEST #Y30LB00*/ 04348000 B @RC01069 1074 04349000 @RF01069 CLI REQCODE(R6),20 1074 04350000 BNE @RF01074 1074 04351000 * DO; /* CHECK REQUEST LENGTH #Y30LB00*/ 04352000 * IF LISTLEN^=LENGTH(PURGLIST)/* #Y30LB00*/ 04353000 * THEN /* IS LENGTH CORRECT #Y30LB00*/ 04354000 CLC LISTLEN(4,R6),@CF00323 1076 04355000 BE @RF01076 1076 04356000 * RETNCODE=CODE370; /* #Y30LB00 04357000 * SET REASON CODE #Y30LB00*/ 04358000 MVC RETNCODE(4),@CF00794 1077 04359000 * END; /* #Y30LB00*/ 04360000 * ELSE /* NOT PURGE REQUEST #Y30LB00*/ 04361000 * IF REQCODE=ASSIGNPH| /* #Y30LB00*/ 04362000 * REQCODE=INITCODE| /* #Y30LB00*/ 04363000 * REQCODE=READY THEN /* #Y30LB00 04364000 * IS ASSIGN PRIMARY HOST 1079 04365000 * #Y30LB00 04366000 * INITIALIZE OR READY #Y30LB00 04367000 * REQUEST #Y30LB00*/ 04368000 B @RC01074 1079 04369000 @RF01074 CLI REQCODE(R6),18 1079 04370000 BE @RT01079 1079 04371000 CLI REQCODE(R6),16 1079 04372000 BE @RT01079 1079 04373000 CLI REQCODE(R6),32 1079 04374000 BNE @RF01079 1079 04375000 @RT01079 DS 0H 1080 04376000 * DO; /* CHECK REQUEST LENGTH #Y30LB00*/ 04377000 * IF LISTLEN^=LENGTH(AIRLIST)/* #Y30LB00*/ 04378000 * THEN /* IS LENGTH CORRECT #Y30LB00*/ 04379000 CLC LISTLEN(4,R6),@CF00033 1081 04380000 BE @RF01081 1081 04381000 * RETNCODE=CODE370; /* #Y30LB00 04382000 * SET REASON CODE #Y30LB00*/ 04383000 MVC RETNCODE(4),@CF00794 1082 04384000 * END; /* #Y30LB00*/ 04385000 * ELSE /* NOT ASSIGN PRIMARY HOST 1084 04386000 * #Y30LB00 04387000 * INITIALIZE OR READY #Y30LB00 04388000 * REQUEST #Y30LB00*/ 04389000 * IF REQCODE=SUSPEND THEN /* #Y30LB00 04390000 * IS SUSPEND REQUEST #Y30LB00*/ 04391000 B @RC01079 1084 04392000 @RF01079 CLI REQCODE(R6),34 1084 04393000 BNE @RF01084 1084 04394000 * DO; /* CHECK REQUEST LENGTH #Y30LB00*/ 04395000 * IF LISTLEN^= /* #Y30LB00*/ 04396000 * LENGTH(SUSPLIST) THEN/* #Y30LB00 04397000 * IS LENGTH CORRECT #Y30LB00*/ 04398000 CLC LISTLEN(4,R6),@CF00033 1086 04399000 BE @RF01086 1086 04400000 * RETNCODE=CODE370; /* #Y30LB00 04401000 * SET REASON CODE #Y30LB00*/ 04402000 MVC RETNCODE(4),@CF00794 1087 04403000 * END; /* #Y30LB00*/ 04404000 * ELSE /* NOT SUSPEND REQUEST #Y30LB00*/ 04405000 * IF REQCODE=TRACE THEN /* #Y30LB00 04406000 * IS TRACE REQUEST #Y30LB00*/ 04407000 B @RC01084 1089 04408000 @RF01084 CLI REQCODE(R6),36 1089 04409000 BNE @RF01089 1089 04410000 * DO; /* #Y30LB00 04411000 * CHECK REQUEST LENGTH #Y30LB00*/ 04412000 * IF LISTLEN^= /* #Y30LB00*/ 04413000 * LENGTH(TRACLIST) THEN/* #Y30LB00 04414000 * IS LENGTH CORRECT #Y30LB00*/ 04415000 CLC LISTLEN(4,R6),@CF00088 1091 04416000 BE @RF01091 1091 04417000 * RETNCODE=CODE370; /* #Y30LB00 04418000 * SET REASON CODE #Y30LB00*/ 04419000 MVC RETNCODE(4),@CF00794 1092 04420000 * END; /* #Y30LB00*/ 04421000 * ELSE /* NOT TRACE REQUEST #Y30LB00*/ 04422000 * IF REQCODE=ASSOCIAT THEN/* #Y30LB00 04423000 * IS ASSOCIATE/ #Y30LB00 04424000 * DISASSOCIATE REQUEST #Y30LB00*/ 04425000 B @RC01089 1094 04426000 @RF01089 CLI REQCODE(R6),44 1094 04427000 BNE @RF01094 1094 04428000 * DO; /* #Y30LB00 04429000 * CHECK REQUEST LENGTH #Y30LB00*/ 04430000 * IF LISTLEN^= /* #Y30LB00*/ 04431000 * LENGTH(ASDSLIST)/* #Y30LB00*/ 04432000 * THEN /* #Y30LB00 04433000 * IS LENGTH CORRECT #Y30LB00*/ 04434000 CLC LISTLEN(4,R6),@CF00088 1096 04435000 BE @RF01096 1096 04436000 * RETNCODE=CODE370;/* #Y30LB00 04437000 * SET REASON CODE #Y30LB00*/ 04438000 MVC RETNCODE(4),@CF00794 1097 04439000 * END; /* #Y30LB00*/ 04440000 * ELSE /* #Y30LB00 04441000 * NOT ASSOCIATE/ #Y30LB00 04442000 * DISASSOCIATE REQUEST #Y30LB00*/ 04443000 * IF REQCODE=VARYON THEN/* #Y30LB00 04444000 * IS VARYON REQUEST #Y30LB00*/ 04445000 B @RC01094 1099 04446000 @RF01094 CLI REQCODE(R6),10 1099 04447000 BNE @RF01099 1099 04448000 * DO; /* #Y30LB00 04449000 * CHECK REQUEST LENGTH #Y30LB00*/ 04450000 * IF LISTLEN^= /* #Y30LB00*/ 04451000 * LENGTH(VONLIST)/* #Y30LB00*/ 04452000 * THEN /* #Y30LB00 04453000 * IS LENGTH CORRECT #Y30LB00*/ 04454000 CLC LISTLEN(4,R6),@CF00035 1101 04455000 BE @RF01101 1101 04456000 * RETNCODE=CODE370;/* #Y30LB00*/ 04457000 * 1102 04458000 MVC RETNCODE(4),@CF00794 1102 04459000 * /*************************************************/ 04460000 * /* */ 04461000 * /* SET REASON CODE #Y30LB00*/ 04462000 * /* */ 04463000 * /*************************************************/ 04464000 * 1103 04465000 * END; /* #Y30LB00*/ 04466000 * ELSE /* NOT VARYON @G24LB01*/ 04467000 * 1104 04468000 * /***************************************************/ 04469000 * /* */ 04470000 * /* CHECH LENGTH FOR MODC @G24LB01*/ 04471000 * /* */ 04472000 * /***************************************************/ 04473000 * 1104 04474000 * IF REQCODE=MODC THEN/* @G24LB01*/ 04475000 B @RC01099 1104 04476000 @RF01099 CLI REQCODE(R6),17 1104 04477000 BNE @RF01104 1104 04478000 * IF LISTLEN^= /* @G24LB01*/ 04479000 * LENGTH(MODCLIST) THEN/* @G24LB01*/ 04480000 CLC LISTLEN(4,R6),@CF03064 1105 04481000 BE @RF01105 1105 04482000 * RETNCODE=CODE370;/* @G24LB01*/ 04483000 MVC RETNCODE(4),@CF00794 1106 04484000 * ELSE 1107 04485000 * ; /* @G24LB01*/ 04486000 @RF01105 DS 0H 1108 04487000 * ELSE /* #Y30LB00 04488000 * UNKNOWN REQUEST #Y30LB00*/ 04489000 * RETNCODE=CODE370;/* #Y30LB00 04490000 * SET REASON CODE #Y30LB00*/ 04491000 B @RC01104 1108 04492000 @RF01104 MVC RETNCODE(4),@CF00794 1108 04493000 *LENEXIT: /* #Y30LB00*/ 04494000 * RETURN; /* RETURN TO CALLER WITH #Y30LB00 04495000 * LENGTH OF REQUEST #Y30LB00 04496000 * CHECKED, AND POSSIBLY, 1109 04497000 * #Y30LB00 04498000 * THE REASON CODE SET #Y30LB00*/ 04499000 @EL00014 DS 0H 1109 04500000 @EF00014 DS 0H 1109 04501000 @ER00014 BR @14 1109 04502000 * END LENCHK; /* #Y30LB00*/ 04503000 B @EL00014 1110 04504000 * 1111 04505000 */* START OF SPECIFICATIONS **** @Y30LB00 04506000 * @Y30LB00 04507000 *01* MODULE-NAME = ASID @Y30LB00 04508000 * @Y30LB00 04509000 *01* DESCRIPTIVE-NAME = INSERTS THE ASID OF THE @Y30LB00 04510000 * CALLER INTO THE ORDER @Y30LB00 04511000 * @Y30LB00 04512000 *01* FUNCTION = THIS SUBROUTINE INSERTS THE ASID @Y30LB00 04513000 * OF THE CALLER INTO THOSE ORDERS WHICH @Y30LB00 04514000 * HAVE A DELAYED RESPONSE @Y30LB00 04515000 * @Y30LB00 04516000 * @Y30LB00 04517000 *02* PURPOSE = THIS SUBROUTINE INSERTS THE ASID @Y30LB00 04518000 * OF THE CALLER INTO THE MOVE, DEFINE, @Y30LB00 04519000 * COPY VOLUME, COPY CARTRIDGE, COPY @Y30LB00 04520000 * TABLES, VARY OFF, ACQUIRE, DEMOUNT, @Y30LB00 04521000 * RELINQUISH, NULLIFYC AND TUNE ORDERS. @Z40LB01 04522000 * @Y30LB00 04523000 *02* INPUT = R6 - INPUT REQUEST ADDRESS @Y30LB00 04524000 * R7 = ASCB ADDRESS @Y30LB00 04525000 * ORDPTR @Y30LB00 04526000 * @Y30LB00 04527000 *02* OUTPUT = ORDERPT AND, POSSIBLY, @Y30LB00 04528000 * ASID INSERTED INTO THE ORDER @Y30LB00 04529000 * @Y30LB00 04530000 * @Y30LB00 04531000 **** END OF SPECIFICATIONS ** @Y30LB00*/ 04532000 * 1111 04533000 * 1111 04534000 */* THIS SUBROUTINE INSERTS THE ASID OF THE CALLER INTO @Y30LB00 04535000 * THOSE ORDERS WITH A DELAYED RESPONSE @Y30LB00*/ 04536000 * 1111 04537000 *ASID: 1111 04538000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* @Y30LB00*/ 04539000 ASID DS 0H 1112 04540000 * RFY 1112 04541000 * (ARLIST, 1112 04542000 * MVLIST, 1112 04543000 * DEFLIST, 1112 04544000 * CVLIST, 1112 04545000 * CTLIST, 1112 04546000 * VOFLIST, /* #Y30LB00*/ 04547000 * TUNELIST, 1112 04548000 * CCLIST, 1112 04549000 * DMTLIST, 1112 04550000 * NULLLIST) BASED(ORDERPT); /* @Z40LB01*/ 04551000 * ORDERPT=ADDR(ORDLIST)-FOUR; /* #Y30LB00*/ 04552000 L @09,ORDPTR 1113 04553000 SL @09,@CF00076 1113 04554000 ST @09,ORDERPT 1113 04555000 * IF REQCODE=MOVE THEN /* IS MOVE REQUEST? #Y30LB00*/ 04556000 CLI REQCODE(R6),14 1114 04557000 BNE @RF01114 1114 04558000 * MCRTASID=ASCBASID; /* INSERT THE ASID INTO #Y30LB00 04559000 * MOVE ORDER #Y30LB00*/ 04560000 L @07,ASCBPTR 1115 04561000 MVC MCRTASID(2,@09),ASCBASID(@07) 1115 04562000 * ELSE /* NOT MOVE REQUEST #Y30LB00*/ 04563000 * IF REQCODE=DEFINE THEN /* IS DEFINE REQUEST #Y30LB00*/ 04564000 B @RC01114 1116 04565000 @RF01114 CLI REQCODE(R6),24 1116 04566000 BNE @RF01116 1116 04567000 * DEFVASID=ASCBASID; /* INSERT ASID INTO THE #Y30LB00 04568000 * DEFINE ORDER #Y30LB00*/ 04569000 L @09,ORDERPT 1117 04570000 L @07,ASCBPTR 1117 04571000 MVC DEFVASID(2,@09),ASCBASID(@07) 1117 04572000 * ELSE /* NOT DEFINE REQUEST #Y30LB00*/ 04573000 * IF REQCODE=COPYV THEN /* IS COPY VOLUME REQ #Y30LB00*/ 04574000 B @RC01116 1118 04575000 @RF01116 CLI REQCODE(R6),42 1118 04576000 BNE @RF01118 1118 04577000 * CVOLASID=ASCBASID; /* INSERT THE ASID INTO #Y30LB00 04578000 * THE COPY VOLUME ORDER #Y30LB00*/ 04579000 L @09,ORDERPT 1119 04580000 L @07,ASCBPTR 1119 04581000 MVC CVOLASID(2,@09),ASCBASID(@07) 1119 04582000 * ELSE /* NOT COPY VOLUME REQ #Y30LB00*/ 04583000 * IF REQCODE=COPYC THEN /* #Y30LB00 04584000 * IS COPY CARTRIDGE REQ #Y30LB00*/ 04585000 B @RC01118 1120 04586000 @RF01118 CLI REQCODE(R6),40 1120 04587000 BNE @RF01120 1120 04588000 * CCRTASID=ASCBASID; /* INSERT ASID INTO #Y30LB00 04589000 * COPY CARTRIDGE ORDER #Y30LB00*/ 04590000 L @09,ORDERPT 1121 04591000 L @07,ASCBPTR 1121 04592000 MVC CCRTASID(2,@09),ASCBASID(@07) 1121 04593000 * ELSE /* NOT COPY VOLUME OR #Y30LB00 04594000 * COPY CARTRIDGE REQUEST 1122 04595000 * #Y30LB00*/ 04596000 * IF REQCODE=COPYTB THEN /* #Y30LB00 04597000 * IS COPY TABLES REQUEST 1122 04598000 * #Y30LB00*/ 04599000 B @RC01120 1122 04600000 @RF01120 CLI REQCODE(R6),22 1122 04601000 BNE @RF01122 1122 04602000 * COTBASID=ASCBASID; /* INSERT ASID INTO THE #Y30LB00 04603000 * COPY TABLES ORDER #Y30LB00*/ 04604000 L @09,ORDERPT 1123 04605000 L @07,ASCBPTR 1123 04606000 MVC COTBASID(2,@09),ASCBASID(@07) 1123 04607000 * ELSE /* NOT COPY TABLE REQUEST 1124 04608000 * #Y30LB00*/ 04609000 * IF REQCODE=VARYOFF THEN/* #Y30LB00 04610000 * IS VARY OFF REQUEST #Y30LB00*/ 04611000 B @RC01122 1124 04612000 @RF01122 CLI REQCODE(R6),12 1124 04613000 BNE @RF01124 1124 04614000 * VOFASID=ASCBASID; /* INSERT THE ASID INTO #Y30LB00 04615000 * THE VARY OFF ORDER #Y30LB00*/ 04616000 L @09,ORDERPT 1125 04617000 L @07,ASCBPTR 1125 04618000 MVC VOFASID(2,@09),ASCBASID(@07) 1125 04619000 * ELSE /* NOT VARY OFF REQUEST #Y30LB00*/ 04620000 * IF((REQCODE=ACQUIRE)|/* #Y30LB00*/ 04621000 * (REQCODE=RELINQ)) THEN/* #Y30LB00 04622000 * IS ACQUIRE OR #Y30LB00 04623000 * RELINQUISH REQUEST #Y30LB00*/ 04624000 B @RC01124 1126 04625000 @RF01124 CLI REQCODE(R6),2 1126 04626000 BE @RT01126 1126 04627000 CLI REQCODE(R6),4 1126 04628000 BNE @RF01126 1126 04629000 @RT01126 DS 0H 1127 04630000 * ARASID=ASCBASID; /* #Y30LB00 04631000 * INSERT THE ASID INTO #Y30LB00 04632000 * ACQUIRE OR RELINQUISH #Y30LB00 04633000 * ORDER #Y30LB00*/ 04634000 L @09,ORDERPT 1127 04635000 L @07,ASCBPTR 1127 04636000 MVC ARASID(2,@09),ASCBASID(@07) 1127 04637000 * ELSE /* NOT ACQ/REL REQUEST #Y30LB00*/ 04638000 * IF REQCODE=TUNE THEN/* #Y30LB00 04639000 * IS TUNE REQUEST #Y30LB00*/ 04640000 B @RC01126 1128 04641000 @RF01126 CLI REQCODE(R6),28 1128 04642000 BNE @RF01128 1128 04643000 * TUNEASID=ASCBASID;/* #Y30LB00 04644000 * INSERT ASID INTO TUNE #Y30LB00 04645000 * ORDER #Y30LB00*/ 04646000 L @09,ORDERPT 1129 04647000 L @07,ASCBPTR 1129 04648000 MVC TUNEASID(2,@09),ASCBASID(@07) 1129 04649000 * ELSE /* NOT TUNE REQUEST #Y30LB00*/ 04650000 * IF REQCODE=DEMOUNT THEN/* #Y30LB00 04651000 * IS DEMOUNT REQUEST #Y30LB00*/ 04652000 B @RC01128 1130 04653000 @RF01128 CLI REQCODE(R6),6 1130 04654000 BNE @RF01130 1130 04655000 * DMNTASID=ASCBASID;/* #Y30LB00 04656000 * INSERT ASID INTO #Y30LB00 04657000 * DEMOUNT ORDER #Y30LB00*/ 04658000 L @09,ORDERPT 1131 04659000 L @07,ASCBPTR 1131 04660000 MVC DMNTASID(2,@09),ASCBASID(@07) 1131 04661000 * ELSE /* NOT DEMOUNT REQUEST @Z40LB01*/ 04662000 * IF REQCODE=NULLCART THEN/* NULLIFY @Z40LB01*/ 04663000 B @RC01130 1132 04664000 @RF01130 CLI REQCODE(R6),9 1132 04665000 BNE @RF01132 1132 04666000 * NULASID=ASCBASID;/* SET ASID @Z40LB01*/ 04667000 L @09,ORDERPT 1133 04668000 L @07,ASCBPTR 1133 04669000 MVC NULASID(2,@09),ASCBASID(@07) 1133 04670000 * RFY 1134 04671000 * (MVLIST, 1134 04672000 * DEFLIST, 1134 04673000 * CVLIST, 1134 04674000 * CTLIST, 1134 04675000 * VOFLIST, 1134 04676000 * TUNELIST, /* #Y30LB00*/ 04677000 * CCLIST, 1134 04678000 * DMTLIST, 1134 04679000 * NULLLIST) /* @Z40LB01*/ 04680000 * BASED(R6); /* #Y30LB00*/ 04681000 * RFY 1135 04682000 * (ARLIST) BASED(ARPTR); /* #Y30LB00*/ 04683000 *ASIDEXIT: /* #Y30LB00*/ 04684000 * RETURN; /* RETURN TO CALLER - #Y30LB00 04685000 * POSSIBLY, ASID INSERTED 1136 04686000 * #Y30LB00 04687000 * IN TO THE ORDER #Y30LB00*/ 04688000 @EL00015 DS 0H 1136 04689000 @EF00015 DS 0H 1136 04690000 @ER00015 BR @14 1136 04691000 * END ASID; /* #Y30LB00*/ 04692000 B @EL00015 1137 04693000 * 1138 04694000 */* START OF SPECIFICATIONS **** @ZM31085 04695000 * @ZM31085 04696000 *01* MODULE-NAME = VUACK @ZM31085 04697000 * @ZM31085 04698000 *01* DESCRIPTIVE-NAME = PLACES THE PRIMARY VUA IN THE @ZM31085 04699000 * MNT/DMT REQUEST @ZDR2048 04700000 * @ZM31085 04701000 *01* FUNCTION = THIS ROUTINE GETS CONTROL FOR MNT/DMT REQUESTS.@ZDR2048 04702000 * IT USES THE UCB LOOK UP TABLES TO LOCATE THE @ZM31085 04703000 * PRIMARY UCB ADDRESS. IF THE UCBACDRESS @ZM31085 04704000 * IS VALID THE UCBNAME WILL BE CONVERTED @ZM31085 04705000 * TO HEX AND PLACED THE THE MNT/DMT REQUEST. @ZDR2048 04706000 * @ZM31085 04707000 *01* PURPOSE = THIS ROUTINE WILL GET THE PRIMARY VUA AND @ZM31085 04708000 * PLACE IT IN THE MNT/DMT REQUEST PARAMETER LIST @ZDR2048 04709000 * @ZM31085 04710000 *01* INPUT = MNT/DMT PARAMETER LIST @ZDR2048 04711000 * @ZM31085 04712000 *01* OUTPUT = MNT/DMT PARAMETER LIST WITH CORRECT VUA @ZDR2048 04713000 * @ZM31085 04714000 * @ZM31085 04715000 **** END OF SPECIFICATIONS ** @ZM31085*/ 04716000 * 1138 04717000 *VUACK: /* @ZM31085*/ 04718000 * PROC OPTIONS(NOSAVE,NOSAVEAREA);/* CHECK THE VUA @ZM31085*/ 04719000 * 1138 04720000 VUACK DS 0H 1139 04721000 * /*****************************************************************/ 04722000 * /* */ 04723000 * /* STRUCTURE TO LOCATE THE UCB LOOK UP ROUTINE @ZM31085*/ 04724000 * /* LOOK UP ROUTINE @ZM31085*/ 04725000 * /* */ 04726000 * /*****************************************************************/ 04727000 * 1139 04728000 * DCL /* @ZM31085*/ 04729000 * SAV1UCBL CHAR(64) BDY(WORD); /* SAVE AREA FOR REGS @ZM31085*/ 04730000 * DCL /* @ZM31085*/ 04731000 * SAV2UCBL CHAR(12) BDY(WORD); /* SAVE AREA FOR REGS @ZM31085*/ 04732000 * DCL /* @ZM31085*/ 04733000 * SAV3UCBL CHAR(8) BDY(WORD); /* SAVE AREA FOR REGS @ZM31085*/ 04734000 * DCL /* @ZM31085*/ 04735000 * SAVR15 FIXED(32); /* SAVE AREA FOR REG15 @ZM31085*/ 04736000 * DCL /* @ZM31085*/ 04737000 * UCBPTR PTR(31); /* UCB POINTER @ZM31085*/ 04738000 * DCL /* @ZM31085*/ 04739000 * UCBDCPTR PTR(31); /* DUMMY PTR TO USE MAPPING 1144 04740000 * @ZM31085 04741000 * MACRO @ZM31085*/ 04742000 */* **************************************************************** */ 04743000 */* */ 04744000 */* U N I T C O N T R O L B L O C K */ 04745000 */* */ 04746000 */* **************************************************************** */ 04747000 */* */ 04748000 */* STATUS */ 04749000 */* */ 04750000 */* OS/VS2 RELEASE 3, 10/31/74, LEVEL=13 */ 04751000 */* */ 04752000 */* METHOD OF ACCESS */ 04753000 */* */ 04754000 */* -MULTIPROCESSING PREFIX, COMMON AND DEVICE DEPENDENT SEGMENTS, */ 04755000 */* AND DEVICE DEPENDENT EXTENSIONS. */ 04756000 */* THE UCB ADDRESS LOCATED FROM THE UCB LOOK UP TABLE POINTS */ 04757000 */* TO THE COMMON SEGMENT. THIS ADDRESS MUST HAVE THE PREFIX */ 04758000 */* ADDRESSABILITY CONSTANT SUBTRACTED FROM IT IN ORDER TO MAP */ 04759000 */* THE PREFIX FIELDS AND STANDARD FIELDS VIA THIS MACRO. */ 04760000 */* */ 04761000 */* PL/S - DCL UCBPTR PTR */ 04762000 */* BAL - PREFIX=YES */ 04763000 */* A DSECT STATEMENT LABELED UCB IS PROVIDED. A */ 04764000 */* USING STATEMENT ON THE SYMBOL UCB WILL PROVIDE */ 04765000 */* ADDRESSABILITY TO ALL PORTIONS OF THIS MAPPING */ 04766000 */* MACRO EXCEPT THE EXTENSIONS. ADDITIONAL USING */ 04767000 */* STATEMENTS ARE NECESSARY TO OBTAIN ADDRESSING */ 04768000 */* TO THESE EXTENSIONS. THESE ARE AS FOLLOWS - */ 04769000 */* */ 04770000 */* COMMON EXTENSION UCBCMEXT */ 04771000 */* MAGNETIC TAPE EXTENSION UCBMT */ 04772000 */* OPTICAL CHARACTER READER EXT UCBOCR */ 04773000 */* 3540 DEVICE EXTENSION UCB3540X @Z30OP9A*/ 04774000 */* UNIT RECORD WITH UCS EXTENSION UCBUCS */ 04775000 */* */ 04776000 */* WHEN LISTING IS SUPPRESSED, YOU CAN DETERMINE WHICH */ 04777000 */* DSECT A SYMBOL IS IN BY USING THE STATEMENT NUMBER */ 04778000 */* IN THE DEFN COLUMN IN THE CROSS REFERENCE LISTING. */ 04779000 */* FOR EXAMPLE, ANY SYMBOL DEFINED BETWEEN THE */ 04780000 */* STATEMENT NUMBERS FOR UCBMT AND UCBOCR IS IN THE */ 04781000 */* UCBMT DSECT. */ 04782000 */* */ 04783000 */* -ALL PORTIONS EXCEPT THE MP PREFIX. */ 04784000 */* */ 04785000 */* BAL - PREFIX=NO OR THE PREFIX PARAMETER OMITTED OR EQUAL */ 04786000 */* TO ANY STRING OTHER THAN YES. */ 04787000 */* A DSECT STATEMENT SHOULD PRECEDE THE MACRO CALL. */ 04788000 */* SYMBOLS IN THE COMMON SECTION AND DEVICE DEPENDENT */ 04789000 */* SEGMENTS ARE ADDRESSABLE BY A USING ON UCBOB. */ 04790000 */* THE ABOVE COMMENTS ON THE EXTENSIONS APPLY HERE. */ 04791000 */* */ 04792000 */* F.E.'S */ 04793000 */* */ 04794000 */* MICROFICHE LISTING - IEFUCBOB */ 04795000 */* */ 04796000 */* DEVELOPERS */ 04797000 */* */ 04798000 */* BAL LISTING - SPECIFY LIST=YES ON MACRO CALL */ 04799000 */* PL/S LISTING - SPECIFY %IHALIST='YES' BEFORE INCLUDE */ 04800000 */* */ 04801000 */* */ 04802000 */* FUNCTION */ 04803000 */* */ 04804000 */* A UNIT CONTROL BLOCK INCORPORATING A SYSTEM RESOURCE TABLE */ 04805000 */* RECORDS THE STATUS OF A PHYSICAL INPUT OUTPUT DEVICE */ 04806000 */* ADDRESS AND IS CREATED AND INITIALIZED DURING SYSTEM */ 04807000 */* GENERATION. THE UNIT CONTROL BLOCK RESIDES IN THE NUCLEUS */ 04808000 */* BELOW 64K AND MAY POINT TO A DEVICE TYPE DEPENDENT */ 04809000 */* EXTENSION RESIDING HIGHER IN THE NUCLEUS. */ 04810000 */* THE COMMON SEGMENT OF THE UCB IS POINTED TO BY */ 04811000 */* THE UCB LOOKUP TABLE WHICH IS INDEXED BY */ 04812000 */* A FUNCTION OF THE CHANNEL CONTROL UNIT DEVICE ADDRESS. */ 04813000 */* THE UCB MAY BE POINTED TO BY TASK INPUT/OUTPUT TABLES */ 04814000 */* AND DATA EXTENT BLOCKS. THE UCB WILL CONTAIN INDICES */ 04815000 */* INTO DEVICE STATISTICS, ATTENTION AND LOGICAL CHANNEL */ 04816000 */* TABLES. */ 04817000 */* */ 04818000 */* OUTPUT */ 04819000 */* MULTIPROCESSING PREFIX */ 04820000 */* SYSGEN INDEPENDENT COMMON SECTION */ 04821000 */* INCLUDING UCBTYP WORD */ 04822000 */* DEVICE DEPENDENT SEGMENT (ONE OF THE FOLLOWING) */ 04823000 */* DIRECT ACCESS */ 04824000 */* MAGNETIC TAPE */ 04825000 */* UNIT RECORD WITH UCS OR 3886 OR 3540 @Z30OP9A*/ 04826000 */* GRAPHICS EXCEPT 3270 */ 04827000 */* 3270 GRAPHICS */ 04828000 */* 3704, 3705 TELEPROCESSING DEVICE */ 04829000 */* COMMON EXTENSION */ 04830000 */* UCB EXTENSION (ONE OF THE FOLLOWING) */ 04831000 */* MAGNETIC TAPE */ 04832000 */* OPTICAL CHARACTER READER */ 04833000 */* 3540 DEVICE @Z30OP9A*/ 04834000 */* UNIT RECORD WITH UNIVERSAL CHARACTER SET */ 04835000 */* */ 04836000 */* **************************************************************** */ 04837000 * 1145 04838000 * 1145 04839000 */* **************************************************************** */ 04840000 */* */ 04841000 */* MULTIPROCESSING UCB PREFIX */ 04842000 */* */ 04843000 */* **************************************************************** */ 04844000 * 1145 04845000 * DECLARE 1145 04846000 * 1 UCB BASED(UCBPTR-512) BDY(WORD),/* UCB PREFIX YM0450*/ 04847000 * 2 * CHAR(504), /* RESERVED */ 04848000 * 2 UCBPXST CHAR(0), /* START OF USED FIELDS IN PREFIX 04849000 * MDC187 */ 04850000 * 2 UCBLOCK FIXED(31), /* DEVICE LOCK MDC238 */ 04851000 * 2 UCBIOQ PTR(31), /* ADDRESS OF LAST QUEUING 1145 04852000 * ELEMENT USED FOR THIS DEVICE. 04853000 * ADDRESS OF ERP WORK AREA 1145 04854000 * DURING INTERCEPT AND 1145 04855000 * ASYNCHRONOUS ATTENTION/DEVICE 04856000 * END WITH UNIT CHECK 1145 04857000 * CONDITIONS. WHEN DIRECT ACCESS 04858000 * VOLUME VERIFICATION (DAVV) IS 04859000 * WAITING FOR A VOLUME MOUNT, 1145 04860000 * THIS FIELD WILL POINT TO THE 04861000 * DAVV SRB. MDC197 */ 04862000 * 2 UCBPFXND CHAR(0); /* END OF PREFIX YM0450*/ 04863000 */* **************************************************************** */ 04864000 */* */ 04865000 */* SYSGEN-INDEPENDENT */ 04866000 */* COMMON SECTION */ 04867000 */* */ 04868000 */* **************************************************************** */ 04869000 * 1146 04870000 * DECLARE 1146 04871000 * 1 UCBOB BASED(UCBPTR) BDY(WORD), 1146 04872000 * 2 UCBCMSEG CHAR(0), /* START OF COMMON SECTION MDC168*/ 04873000 * 2 UCBJBNR BIT(8) BDY(WORD), /* FLAG BYTE (OS/VS2) MDC012 */ 04874000 * 3 UCBVRDEV BIT(1), /* UCB FOR VIRTUAL DEVICE MDC012 */ 04875000 * 3 UCBJES3 BIT(1), /* ALL VOLUME MOUNTING AND DEVICE 04876000 * MANAGEMENT FOR THIS DEVICE IS 04877000 * CONTROLLED BY JES3 MDC246 */ 04878000 * 3 UCBRV002 BIT(1), /* RESERVED */ 04879000 * 3 UCBRV003 BIT(1), /* RESERVED */ 04880000 * 3 UCBOLDSM BIT(1), /* OLTEP COMMUNICATING DIRECTLY 04881000 * WITH THE MASS STORAGE CONTROL 04882000 * (MSC), NOT THROUGH THE MASS 1146 04883000 * STORAGE SYSTEM COMMUNICATOR 1146 04884000 * (MSSC) (MDC301) @Z30LP9A*/ 04885000 * 3 UCBRSV02 BIT(1), /* RESERVED */ 04886000 * 3 UCBRV011 BIT(1), /* RESERVED MDC013 */ 04887000 * 3 UCBMONT BIT(1), /* VOLUME TO BE MOUNTED IS TO BE 04888000 * RETAINED OR CONTAIN A PASSED 04889000 * DATA SET. (SET BY DEVICE 1146 04890000 * ALLOCATION OR DATA MANAGEMENT 04891000 * FOR OS/VS2) MDC014 */ 04892000 * 2 UCBFL5 BIT(8), /* FLAGS */ 04893000 * 3 UCBDCC BIT(1), /* DISCONNECT COMMAND CHAIN 1146 04894000 * DEVICE MDC098 */ 04895000 * 3 UCBAF BIT(1), /* ATTENTION FOR THIS CONSOLE 1146 04896000 * DEVICE IS TO BE PROCESSED BY 04897000 * THE COMMUNICATIONS TASK ICB321*/ 04898000 * 4 UCBAMV BIT(1), /* SUCCESSFUL COMPARISON CHECKING 04899000 * OF THE ACCESS METHOD CATALOG 04900000 * AND THE VTOC (VSAM DIRECT 1146 04901000 * ACCESS DEVICES ONLY) ICB437 */ 04902000 * 3 UCBSASK BIT(1), /* DEVICE REQUIRES STAND ALONE 1146 04903000 * SEEK MDC099 */ 04904000 * 3 UCBVSDR BIT(1), /* DEVICE HAS VARIABLE LENGTH 1146 04905000 * SDR'S */ 04906000 * 3 UCBENVRD BIT(1), /* DEVICE RETURNS ENVIRONMENTAL 04907000 * DATA MDC100 */ 04908000 * 3 UCBNALOC BIT(1), /* THIS OFFLINE DEVICE IS BEING 04909000 * USED BY A SYSTEM COMPONENT. 1146 04910000 * THE DEVICE STATUS MUST NOT 1146 04911000 * CHANGE TO ONLINE NOR WILL IT 04912000 * BE ALLOCATED. THE LAST PATH/ 04913000 * CHANNEL/CPU TO THE DEVICE MUST 04914000 * NOT BE VARY'ED OFFLINE. THE 1146 04915000 * DEVICE IS UNAVAILABLE FOR 1146 04916000 * USAGE BY ANOTHER SYSTEM 1146 04917000 * COMPONENT WHICH PROCESSES 1146 04918000 * OFFLINE DEVICES. TO SET THIS 04919000 * INDICATOR ON, A COMPONENT MUST 04920000 * OBTAIN VIA ENQ, EXCLUSIVE, 1146 04921000 * SYSTEM LEVEL CONTROL OF 1146 04922000 * RESOURCE SYSIEFSD, Q4. 1146 04923000 * SERIALIZATION IS NOT REQUIRED 04924000 * TO TURN THIS INDICATOR OFF. 1146 04925000 * MDC027 */ 04926000 * 3 UCBALTCU BIT(1), /* DEVICE HAS AN ALTERNATE 1146 04927000 * CONTROL UNIT ADDRESS */ 04928000 * 3 UCBALTPH BIT(1), /* DEVICE HAS AN ALTERNATE PATH */ 04929000 * 2 UCBID CHAR(1), /* UCB IDENTIFICATION (FF) */ 04930000 * 2 UCBSTAT BIT(8), /* DEVICE STATUS */ 04931000 * 3 UCBONLI BIT(1), /* DEVICE IS ONLINE */ 04932000 * 3 UCBCHGS BIT(1), /* DEVICE STATUS IS TO BE CHANGED 04933000 * FROM ONLINE TO OFFLINE, AND 1146 04934000 * EITHER ALLOCATION IS ENQUEUED 04935000 * ON DEVICES OR THE DEVICE IS 1146 04936000 * ALLOCATED. (BIT 0 IS ALSO ON.)*/ 04937000 * 3 UCBRESV BIT(1), /* THE MOUNT STATUS OF THE VOLUME 04938000 * ON THIS DEVICE IS RESERVED */ 04939000 * 3 UCBUNLD BIT(1) ABNORMAL, /* UNLOAD OPERATOR COMMAND HAS 1146 04940000 * BEEN ADDRESSED TO THIS DEVICE. 04941000 * THE DEVICE IS NOT YET 1146 04942000 * UNLOADED. MDC167 */ 04943000 * 3 UCBALOC BIT(1), /* DEVICE IS ALLOCATED */ 04944000 * 3 UCBPRES BIT(1), /* THE MOUNT STATUS OF THE VOLUME 04945000 * ON THIS DEVICE IS PERMANENTLY 04946000 * RESIDENT */ 04947000 * 3 UCBSYSR BIT(1), /* SYSTEM RESIDENCE DEVICE OR 1146 04948000 * PRIMARY CONSOLE OR ACTIVE 1146 04949000 * CONSOLE */ 04950000 * 3 UCBDADI BIT(1), /* STANDARD TAPE LABELS HAVE BEEN 04951000 * VERIFIED FOR THIS TAPE VOLUME 04952000 * OR SECONDARY CONSOLE OR 1146 04953000 * CONSOLE STATUS CHANGING */ 04954000 * 2 UCBCHAN CHAR(2), /* BINARY CHANNEL/UNIT ADDRESS 1146 04955000 * MDC102 */ 04956000 * 3 UCBCHA PTR(8), /* BINARY CHANNEL ADDRESS OF LAST 04957000 * STARTED I/O OPERATION */ 04958000 * 3 UCBUA PTR(8), /* BINARY UNIT ADDRESS */ 04959000 * 2 UCBSFLS CHAR(2), /* DEVICE STATUS FLAGS MDC103 */ 04960000 * 3 UCBFLA BIT(8), /* I/O SUPERVISOR FLAG BYTE A 1146 04961000 * MDC104 */ 04962000 * 4 UCBFL1 BIT(8), /* ALIAS */ 04963000 * 5 UCBBSY BIT(1), /* DEVICE IS BUSY MDC105 */ 04964000 * 6 UCBBUSYD BIT(1), /* ALIAS */ 04965000 * 5 UCBNRY BIT(1), /* DEVICE NOT READY MDC106 */ 04966000 * 6 UCBNOTRD BIT(1), /* ALIAS */ 04967000 * 5 UCBPST BIT(1), /* POST FLAG (ASSOC IOQE) MDC107 */ 04968000 * 6 UCBUSING BIT(1), /* ALIAS */ 04969000 * 5 UCBPSNS BIT(1), /* PENDING SENSE OPERATION MDC108*/ 04970000 * 5 UCBCUB BIT(1), /* CONTROL UNIT BUSY MDC109 */ 04971000 * 6 UCBNOTRC BIT(1), /* ALIAS */ 04972000 * 5 UCBSAP BIT(1), /* STAND ALONE PROCESS ON DEVICE 04973000 * ACTIVE (EG., RESERVE) MDC110 */ 04974000 * 5 UCBACTV BIT(1), /* CHANNEL PROGRAM ACTIVE ON 1146 04975000 * DEVICE MDC111 */ 04976000 * 5 UCBQISCE BIT(1), /* DEVICE QUIESCED MDC112 */ 04977000 * 3 UCBFLB BIT(8), /* I/O SUPERVISOR FLAG BYTE B 1146 04978000 * MDC113 */ 04979000 * 4 UCBIORST BIT(1), /* I/O RESTART VIA ALTERNATE CPU 04980000 * RECOVERY HAS FACTORED DEVICE 04981000 * OUT OF CONFIGURATION BECAUSE 04982000 * OF NON-ACCESSABILITY. ALL 1146 04983000 * INCOMING I/O REQUESTS ARE 1146 04984000 * INTERCEPTED AND MARKED IN 1146 04985000 * PERMANENT ERROR WITH A 1146 04986000 * COMPLETION CODE OF X'51'. 1146 04987000 * HOWEVER, IF CHANNEL 1146 04988000 * RECONFIGURATION HARDWARE (CRH) 04989000 * IS ACTIVE AND CRH WILL BE USED 04990000 * TO ACCESS THE DEVICE 1146 04991000 * ASSOCIATED WITH THE UCB, THIS 04992000 * BIT WILL BE ON IN EVERY UCB 1146 04993000 * THAT HAS OUTSTANDING I/O 1146 04994000 * ACROSS A CRH PATH. (MDC320) 1146 04995000 * @Z30CQ9A*/ 04996000 * 4 UCBASNS BIT(1), /* SENSE ACTIVE ON DEVICE MDC115 */ 04997000 * 4 UCBSPST BIT(1), /* SENSE POST INDICATOR MDC116 */ 04998000 * 4 UCBRESVH BIT(1), /* DEVICE RESERVED INDICATOR 1146 04999000 * MDC157 */ 05000000 * 4 UCBCRHRV BIT(1), /* RESERVED PATH THROUGH A 1146 05001000 * CHANNEL RECONFIGURATION 1146 05002000 * HARDWARE (CRH) CONNECTION 1146 05003000 * (MDC303) @Z30CQ9A*/ 05004000 * 4 UCBCRHSN BIT(1), /* IF 1, SENSE PENDING FROM 1146 05005000 * INOPERATIVE CPU. IF 0, SENSE 05006000 * PENDING FROM OPERATIVE CPU. 1146 05007000 * BIT IS SET ONLY WHEN CHANNEL 05008000 * RECONFIGURATION HARDWARE (CRH) 05009000 * IS ACTIVE. (MDC332) @Z30CQ9A*/ 05010000 * 4 UCBVALPH BIT(1), /* PATH VALIDATION (MDC337) 1146 05011000 * @ZA00078*/ 05012000 * 4 UCBFLB7 BIT(1), /* RESERVED */ 05013000 * 2 UCBCHM BIT(8), /* PATH STATUS MASK FOR THIS 1146 05014000 * DEVICE MDC198 */ 05015000 * 3 UCBCHM1 BIT(8), /* SAME AS UCBCHM MDC199 */ 05016000 * 4 UCBPTH0 BIT(2), /* PATHS FROM CPU 0 MDC200 */ 05017000 * 5 UCBPPA BIT(1), /* PRIMARY PATH CPU 0 MDC201 */ 05018000 * 5 UCBSPA BIT(1), /* SECONDARY PATH CPU 0 MDC202 */ 05019000 * 4 UCBPTH1 BIT(2), /* PATHS FROM CPU 1 MDC203 */ 05020000 * 5 UCBPPB BIT(1), /* PRIMARY PATH CPU 1 MDC204 */ 05021000 * 5 UCBSPB BIT(1), /* SECONDARY PATH CPU 1 MDC205 */ 05022000 * 4 UCBRV014 BIT(1), /* RESERVED */ 05023000 * 4 UCBRV015 BIT(1), /* RESERVED */ 05024000 * 4 UCBRV016 BIT(1), /* RESERVED */ 05025000 * 4 UCBRV017 BIT(1), /* RESERVED */ 05026000 * 2 UCBCNT PTR(8), /* COUNT OF QUEUED REQUESTS 1146 05027000 * WAITING FOR DEVICE MDC206 */ 05028000 * 2 UCBLCI PTR(8), /* INCREMENT WHICH, WHEN 1146 05029000 * MULTIPLIED BY 8, BECOMES AN 1146 05030000 * INDEX TO THE LOGICAL CHANNEL 05031000 * TABLE (LCHTAB) */ 05032000 * 2 UCBCPU CHAR(1), /* LAST SIO TO DEVICE ISSUED FROM 05033000 * THIS CPUID MDC207 */ 05034000 * 2 UCBWGT BIT(8) BDY(WORD), /* FLAGS */ 05035000 * 3 UCBIN BIT(1), /* SYSIN */ 05036000 * 3 UCBOUT BIT(1), /* SYSOUT */ 05037000 * 3 UCBPUB BIT(1), /* ASSUMED THAT THIS DEVICE WILL 05038000 * BE ALLOCATED FOR A PUBLIC 1146 05039000 * VOLUME REQUEST */ 05040000 * 3 UCBREW BIT(1), /* REWIND COMMAND HAS BEEN 1146 05041000 * ADDRESSED TO THIS MAGNETIC 1146 05042000 * TAPE DEVICE BY I/O SUPPORT */ 05043000 * 3 UCBMTPXP BIT(1), /* MULTIPLE EXPOSURE DEVICE 1146 05044000 * MDC117 */ 05045000 * 3 UCBVORSN BIT(1), /* VARY COMMAND OPERATOR REASON 05046000 * INDICATOR MDC118 */ 05047000 * 3 UCBVHRSN BIT(1), /* VARY COMMAND HIERARCHY REASON 05048000 * INDICATOR MDC119 */ 05049000 * 3 UCBRV029 BIT(1), /* RESERVED MDC028 */ 05050000 * 2 UCBNAME CHAR(3) BDY(WORD,2),/* UNIT NAME (EBCDIC) */ 05051000 * 2 UCBTYP CHAR(4) BDY(WORD), /* DEVICE TYPE */ 05052000 * 3 UCBTBYT1 BIT(8), /* MODEL BITS */ 05053000 * 4 UCB1FEA0 BIT(1), /* BIT 0 */ 05054000 * 4 UCB1FEA1 BIT(1), /* BIT 1 */ 05055000 * 4 UCB1FEA2 BIT(1), /* BIT 2 */ 05056000 * 4 UCB1FEA3 BIT(1), /* BIT 3 */ 05057000 * 4 UCB1FEA4 BIT(1), /* BIT 4 */ 05058000 * 4 UCB1FEA5 BIT(1), /* BIT 5 */ 05059000 * 5 UCBD1600 BIT(1), /* 1600 BPI ICB475 */ 05060000 * 4 UCB1FEA6 BIT(1), /* BIT 6 */ 05061000 * 5 UCBD6250 BIT(1), /* 6250 BPI ICB475 */ 05062000 * 4 UCB1FEA7 BIT(1), /* BIT 7 */ 05063000 * 3 UCBTBYT2 BIT(8), /* OPTION FLAGS */ 05064000 * 4 UCB2OPT0 BIT(1), /* FLAG 0 */ 05065000 * 4 UCB2OPT1 BIT(1), /* FLAG 1 */ 05066000 * 4 UCB2OPT2 BIT(1), /* FLAG 2 */ 05067000 * 5 UCBDUDN1 BIT(1), /* DUAL DENSITY 800/1600 BPI 1146 05068000 * ICB475 */ 05069000 * 6 UCBRR BIT(1), /* THIS DEVICE IS SHARABLE 1146 05070000 * BETWEEN TWO CPU'S (DIRECT 1146 05071000 * ACCESS) MDC159 */ 05072000 * 4 UCB2OPT3 BIT(1), /* FLAG 3 */ 05073000 * 5 UCBDUDN2 BIT(1), /* DUAL DENSITY 1600/6250 BPI 1146 05074000 * ICB475 */ 05075000 * 6 UCBRPS BIT(1), /* ROTATIONAL POSITION SENSING 1146 05076000 * (RPS) DEVICE (DIRECT ACCESS) 05077000 * MDC120 */ 05078000 * 4 UCB2OPT4 BIT(1), /* FLAG 4 */ 05079000 * 5 UCBRWTAU BIT(1), /* READ/WRITE TAPE CONTROL MDC166*/ 05080000 * 6 UCBRVDEV BIT(1), /* IF 0, REAL DEVICE. IF 1, 1146 05081000 * VIRTUAL DEVICE. (DIRECT 1146 05082000 * ACCESS) (MDC300) @Z30LP9A*/ 05083000 * 4 UCB2OPT5 BIT(1), /* FLAG 5 */ 05084000 * 4 UCB2OPT6 BIT(1), /* FLAG 6 */ 05085000 * 5 UCBVLPWR BIT(1), /* VOLUME REQUIRES ALTERNATE 1146 05086000 * POWER SOURCE DEVICE (MDC322) 05087000 * @Z30AQ9A*/ 05088000 * 4 UCB2OPT7 BIT(1), /* FLAG 7 */ 05089000 * 5 UCBDVPWR BIT(1), /* DEVICE HAS ALTERNATE POWER 1146 05090000 * SOURCE (MDC323) @Z30AQ9A*/ 05091000 * 3 UCBTBYT3 BIT(8), /* CLASS BITS */ 05092000 * 4 UCBDVCLS BIT(8), /* SAME AS UCBTBYT3 MDC169 */ 05093000 * 5 UCB3TAPE BIT(1), /* TAPE */ 05094000 * 5 UCB3COMM BIT(1), /* COMMUNICATIONS */ 05095000 * 5 UCB3DACC BIT(1), /* DIRECT ACCESS */ 05096000 * 5 UCB3DISP BIT(1), /* DISPLAY */ 05097000 * 5 UCB3UREC BIT(1), /* UNIT RECORD */ 05098000 * 5 UCB3CHAR BIT(1), /* CHARACTER READER */ 05099000 * 5 UCBRSV10 BIT(1), /* RESERVED */ 05100000 * 5 UCBRSV11 BIT(1), /* RESERVED */ 05101000 * 3 UCBTBYT4 CHAR(1), /* DEVICE CODE */ 05102000 * 4 UCBUNTYP CHAR(1), /* SAME AS UCBTBYT4 MDC170 */ 05103000 * 2 UCBEXTPT PTR(31), /* ADDRESS OF COMMON UCB 1146 05104000 * EXTENSION MDC227 */ 05105000 * 3 UCBFLC BIT(8), /* I/O SUPERVISOR FLAG BYTE C 1146 05106000 * MDC228 */ 05107000 * 4 UCBATTP BIT(1), /* ATTENTION PENDING MDC229 */ 05108000 * 4 UCBWAA BIT(1), /* WORK AREA APPENDED MDC230 */ 05109000 * 4 UCBUDE BIT(1), /* UNSOLICITED DEVICE END 1146 05110000 * RECEIVED MDC231 */ 05111000 * 4 UCBITF BIT(1), /* INTERCEPT CONDITION MDC232 */ 05112000 * 4 UCBIVRS BIT(1), /* INTERVENTION REQUIRED MESSAGE 05113000 * ISSUED MDC233 */ 05114000 * 4 UCBIVRR BIT(1), /* INTERVENTION REQUIRED MESSAGE 05115000 * IS NEEDED MDC234 */ 05116000 * 4 UCBTICBT BIT(1), /* CHANNEL END AND/OR DEVICE END 05117000 * OR MOUNT CONDITION PENDING. 1146 05118000 * MDC235 */ 05119000 * 4 UCBDDRSW BIT(1), /* DDR SWITCH PENDING ON THIS 1146 05120000 * DEVICE MDC236 */ 05121000 * 3 UCBEXTP PTR(24), /* ADDRESS OF COMMON UCB 1146 05122000 * EXTENSION MDC237 */ 05123000 */* */ 05124000 */* **************************************************************** */ 05125000 */* */ 05126000 */* DEVICE-DEPENDENT UCB SEGMENTS */ 05127000 */* */ 05128000 * 1146 05129000 * 2 UCBDEV CHAR(0) BDY(WORD); 1146 05130000 * 1146 05131000 */* */ 05132000 */* **************************************************************** */ 05133000 */* */ 05134000 */* DIRECT ACCESS */ 05135000 */* UCB SEGMENT */ 05136000 */* */ 05137000 */* UCBVOLI, UCBSTAB AND UCBDMCT ARE SAME IN TAPE SEGMENT AS */ 05138000 */* IN DIRECT ACCESS SEGMENT. */ 05139000 */* */ 05140000 * 1147 05141000 * DECLARE 1147 05142000 * 1 UCBOBS01 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05143000 */* **************************************************************** */ 05144000 */* */ 05145000 * 1147 05146000 * 2 UCBVTOC CHAR(4) BDY(WORD), /* RELATIVE ADDRESS OF VTOC FOR 05147000 * THIS VOLUME, IN FORM TTR0 1147 05148000 * MDC085 */ 05149000 * 2 UCBVOLI CHAR(6) BDY(WORD), /* VOLUME SERIAL NUMBER */ 05150000 * 2 UCBSTAB BIT(8), /* VOLUME STATUS */ 05151000 * 3 UCBBSVL BIT(1), /* VOLUME DEMOUNTABLE BY DATA 1147 05152000 * MANAGEMENT (DIRECT ACCESS) 1147 05153000 * (OS/VS2) MDC008 */ 05154000 * 4 UCBDVSHR BIT(1), /* DEVICE NOT SHARABLE AMONG 1147 05155000 * SEVERAL CPU'S (3420 MAGNETIC 05156000 * TAPE DEVICES ONLY) (MDC245) 1147 05157000 * XA03017*/ 05158000 * 3 UCBPGFL BIT(1), /* UCB IS OPEN AND IS BEING USED 05159000 * AS A PAGE FILE ICB338 */ 05160000 * 3 UCBPRSRS BIT(1), /* DURING VOLUME ATTRIBUTE 1147 05161000 * PROCESSING THIS BIT IS USED 1147 05162000 * BOTH TO DENOTE UCB'S THAT WERE 05163000 * MARKED PERMANENTLY RESIDENT 1147 05164000 * PRIOR TO GETTING CONTROL AND 05165000 * TO IDENTIFY DEVICES THAT WERE 05166000 * SELECTED BY THE OPERATOR FOR 05167000 * MOUNTING VOLUMES (DIRECT 1147 05168000 * ACCESS) MDC162 */ 05169000 * 4 UCBBALB BIT(1), /* ADDITIONAL VOLUME LABEL 1147 05170000 * PROCESSING (TAPE) */ 05171000 * 3 UCBBPRV BIT(1), /* PRIVATE - VOLUME USE STATUS */ 05172000 * 3 UCBBPUB BIT(1), /* PUBLIC - VOLUME USE STATUS */ 05173000 * 3 UCBBSTR BIT(1), /* STORAGE - VOLUME USE STATUS 1147 05174000 * (DIRECT ACCESS) THE VOLUME 1147 05175000 * MOUNTED HAS AN AMERICAN 1147 05176000 * NATIONAL STANDARD LABEL (TAPE)*/ 05177000 * 3 UCBSHAR BIT(1), /* VOLUME SHAREABLE AMONG JOB 1147 05178000 * STEPS (OS/VS2) MDC020 */ 05179000 * 3 UCBBNUL BIT(1), /* CONTROL VOLUME - A CATALOG 1147 05180000 * DATA SET IS ON THIS VOLUME 1147 05181000 * (DIRECT ACCESS) IF THE 1147 05182000 * MULTIPLE CONSOLE SUPPORT 1147 05183000 * OPTION IS IN THE SYSTEM, 1147 05184000 * DEMOUNT OR MOUNT MESSAGES HAVE 05185000 * BEEN ISSUED AND THE MESSAGE 1147 05186000 * ID'S ARE AT OFFSETS 40 THROUGH 05187000 * 45. OPEN WILL DELETE THE 1147 05188000 * MESSAGES AND TURN THIS BIT 1147 05189000 * OFF. (TAPE) */ 05190000 * 2 UCBDMCT CHAR(1), /* VOLUME USE BYTE */ 05191000 * 3 UCBMOUNT BIT(1), /* MOUNTED OR REQUEST ISSUED (OFF 05192000 * MEANS MOUNT VERIFIED) */ 05193000 * 3 UCBDMC BIT(7), /* NUMBER OF DCB'S OPEN FOR THIS 05194000 * VOLUME */ 05195000 * 2 UCBDATP CHAR(0) BDY(WORD), /* END OF COMMON DIRECT ACCESS/ 05196000 * TAPE AREA */ 05197000 * 2 UCBSQC PTR(8), /* NUMBER OF RESERVE MACRO 1147 05198000 * INSTRUCTIONS ISSUED MDC086 */ 05199000 * 2 UCBFL4 BIT(8), /* DIRECT ACCESS FLAG BYTE MDC087*/ 05200000 * 3 UCBDAVV BIT(1), /* DIRECT ACCESS VOLUME 1147 05201000 * VERIFICATION IN CONTROL (DAVV) 05202000 * MDC127 */ 05203000 * 3 UCBWDAV BIT(1), /* DAVV WAITING FOR MOUNT MDC128 */ 05204000 * 3 UCBRV028 BIT(1), /* RESERVED MDC157 */ 05205000 * 3 UCBDSS BIT(1), /* READ HOME ADDRESS AND READ 1147 05206000 * RECORD ZERO OPERATIONS HAVE 1147 05207000 * BEEN PERFORMED BY DYNAMIC 1147 05208000 * SUPPORT SYSTEM (DSS) MDC088 */ 05209000 * 3 UCBRV065 BIT(1), /* RESERVED (MDC302) */ 05210000 * 3 UCBFL45 BIT(1), /* RESERVED */ 05211000 * 3 UCBFL46 BIT(1), /* RESERVED */ 05212000 * 3 UCBFL47 BIT(1), /* RESERVED */ 05213000 * 2 UCBUSER PTR(8), /* NUMBER OF CURRENT USERS MDC089*/ 05214000 * 2 UCBRES1A CHAR(1), /* RESERVED */ 05215000 * 2 UCBBASE PTR(31), /* ADDRESS OF BASE EXPOSURE UCB 05216000 * MDC130 */ 05217000 * 2 UCBNEXP PTR(31); /* BASE - ADDRESS OF LAST STARTED 05218000 * EXPOSURE NON-BASE - ADDRESS OF 05219000 * NEXT EXPOSURE IN THE RING THIS 05220000 * ADDRESS POINTS TO THE 1147 05221000 * MULTIPROCESSING PREFIX MDC131 */ 05222000 */* **************************************************************** */ 05223000 */* */ 05224000 */* MAGNETIC TAPE UCB SEGMENT */ 05225000 */* */ 05226000 */* UCBVOLI, UCBSTAB AND UCBDMCT ARE SAME IN TAPE SEGMENT AS */ 05227000 */* IN DIRECT ACCESS SEGMENT. */ 05228000 */* */ 05229000 * 1148 05230000 * DECLARE 1148 05231000 * 1 UCBOBS02 DEF(UCBDEV) BDY(WORD), 1148 05232000 * 1148 05233000 */* **************************************************************** */ 05234000 * 1148 05235000 * 2 UCBFSCT FIXED(15), /* DATA SET SEQUENCE COUNT MDC090*/ 05236000 * 2 UCBFSEQ FIXED(15), /* DATA SET SEQUENCE NUMBER 1148 05237000 * MDC091 */ 05238000 * 2 * CHAR(8), /* UCBVOLI, UCBSTAB AND UCBDMCT 05239000 * AS IN DIRECT ACCESS SEGMENT */ 05240000 * 2 UCBFSER CHAR(6), /* BEFORE OPEN, MESSAGE ID'S. SEE 05241000 * UCBSTAB BIT 7. AFTER OPEN, 1148 05242000 * DATA SET SERIAL NUMBER MDC092 */ 05243000 * 2 UCBRES1B CHAR(1), /* RESERVED */ 05244000 * 2 UCBTFL1 BIT(8), /* FLAG BYTE (TAPE DEVICES ONLY) 05245000 * MDC015 */ 05246000 * 3 UCBNLTP BIT(1), /* TAPE VOLUME DOES NOT CONTAIN 05247000 * LABELS MDC016 */ 05248000 * 3 UCBNSLTP BIT(1), /* TAPE CONTAINS NON-STANDARD 1148 05249000 * LABELS MDC017 */ 05250000 * 3 UCBRV038 BIT(1), /* RESERVED MDC164 */ 05251000 * 3 UCBRV005 BIT(1), /* RESERVED */ 05252000 * 3 UCBRV006 BIT(1), /* RESERVED */ 05253000 * 3 UCBRV007 BIT(1), /* RESERVED */ 05254000 * 3 UCBRV008 BIT(1), /* RESERVED */ 05255000 * 3 UCBRV009 BIT(1), /* RESERVED */ 05256000 * 2 UCBXTN PTR(31), /* ADDRESS OF THE MAGNETIC TAPE 05257000 * UCB EXTENSION MDC093 */ 05258000 * 3 UCBVOPT BIT(8), /* VOLUME STATISTICS OPTION BITS 05259000 * MDC094 */ 05260000 * 4 UCBESV BIT(1), /* ERROR STATISTICS BY VOLUME 1148 05261000 * (ESV) RECORDS KEPT MDC094 */ 05262000 * 4 UCBEVA BIT(1), /* ERROR VOLUME ANALYSIS (EVA) 1148 05263000 * RECORDS KEPT MDC094 */ 05264000 * 4 UCBESVC BIT(1), /* IF 0, ESV RECORDS SENT TO 1148 05265000 * SYS1.MAN (X OR Y) DATA SET. IF 05266000 * 1, ESV RECORDS SENT TO 1148 05267000 * CONSOLE. MDC094 */ 05268000 * 4 UCBERPC BIT(1), /* AN ERROR RECOVERY PROCEDURE 1148 05269000 * HAS CONTROL MDC094 */ 05270000 * 4 UCBESVE BIT(1), /* AN ESV RECORD HAS BEEN ISSUED 05271000 * FOR THIS VOLUME BECAUSE OF AN 05272000 * EOV CONDITION MDC094 */ 05273000 * 4 UCBRSV20 BIT(1), /* RESERVED MDC094 */ 05274000 * 4 UCBRSV21 BIT(1), /* RESERVED MDC094 */ 05275000 * 4 UCBRSV22 BIT(1), /* RESERVED MDC094 */ 05276000 * 3 UCBXTNB PTR(24); /* ADDRESS OF THE MAGNETIC TAPE 05277000 * UCB EXTENSION MDC095 */ 05278000 */* **************************************************************** */ 05279000 */* */ 05280000 */* UNIT RECORD WITH */ 05281000 */* UNIVERSAL CHARACTER SET (1403, 3211) */ 05282000 */* OR OPTICAL CHARACTER READER (3886) */ 05283000 */* OR 3540 DEVICE @Z30OP9A*/ 05284000 */* UCB SEGMENT */ 05285000 */* */ 05286000 * 1149 05287000 * DECLARE 1149 05288000 * 1 UCBOBS03 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05289000 */* **************************************************************** */ 05290000 * 1149 05291000 * 2 UCBXTADR PTR(31); /* ADDRESS OF UCS UCB EXTENSION 05292000 * (1403 OR 3211) OR ADDRESS OF 05293000 * OPTICAL CHARACTER READER UCB 05294000 * EXTENSION (3886) OR ADDRESS OF 05295000 * 3540 DEVICE UCB EXTENSION 1149 05296000 * (3540) (MDC324) @Z30OP9A*/ 05297000 */* **************************************************************** */ 05298000 */* */ 05299000 */* GRAPHICS EXCEPT 3270 */ 05300000 */* UCB SEGMENT */ 05301000 */* */ 05302000 * 1150 05303000 * DECLARE 1150 05304000 * 1 UCBOBS04 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05305000 */* **************************************************************** */ 05306000 */* */ 05307000 * 1150 05308000 * 2 UCBSTART PTR(15), /* LAST START ADDRESS (MDC247) 1150 05309000 * YM4067*/ 05310000 * 2 UCBOPEN PTR(8), /* NUMBER OF DCB'S THAT ARE 1150 05311000 * CURRENTLY OPEN FOR THIS DEVICE*/ 05312000 * 2 UCBGCB CHAR(1), /* GRAPHIC CONTROL BYTE USED FOR 05313000 * ATTENTION HANDLING */ 05314000 * 2 UCBTEB PTR(31), /* ADDRESS OF TASK ENTRY (TE) 1150 05315000 * BLOCK */ 05316000 * 2 UCBSNS CHAR(4) BDY(WORD), /* SENSE INFORMATION (MDC248) 1150 05317000 * YM4067*/ 05318000 * 2 UCBBTA PTR(31), /* ADDRESS OF BUFFER TABLE */ 05319000 * 3 UCBDI PTR(8), /* DEVICE OR DEVICES ON A CONTROL 05320000 * UNIT TO WHICH BUFFER SECTIONS 05321000 * ARE ASSIGNED */ 05322000 * 3 UCBBTB PTR(24); /* ADDRESS OF BUFFER TABLE */ 05323000 */* **************************************************************** */ 05324000 */* */ 05325000 */* 3270 GRAPHICS */ 05326000 */* UCB SEGMENT */ 05327000 */* */ 05328000 * 1151 05329000 * DECLARE 1151 05330000 * 1 UCBOBS06 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT 1151 05331000 * ICB480 */ 05332000 */* **************************************************************** */ 05333000 */* */ 05334000 * 1151 05335000 * 2 UCBAOF CHAR(2), /* ADDITIONAL OPTIONAL FEATURES. 05336000 * AN EXTENSION OF THE OPTIONAL 05337000 * FEATURES BYTE OF THE UCBTYP 1151 05338000 * FIELD. ICB480 */ 05339000 * 3 UCBAOF1 BIT(8), /* FIRST BYTE OF UCBAOF ICB480 */ 05340000 * 4 UCBOFMCR BIT(1), /* MAGNETIC CARD READER ADAPTER - 05341000 * FOR 3277 ONLY ICB480 */ 05342000 * 4 UCBOFSP BIT(1), /* SELECTOR PEN - FOR 3277 ONLY 05343000 * ICB480 */ 05344000 * 4 UCBOFNL BIT(1), /* NUMERIC LOCK - FOR 3277 ONLY 05345000 * ICB480 */ 05346000 * 4 UCBRSV64 BIT(1), /* RESERVED ICB480 */ 05347000 * 4 UCBRSV65 BIT(1), /* RESERVED ICB480 */ 05348000 * 4 UCBRSV66 BIT(1), /* RESERVED ICB480 */ 05349000 * 4 UCBRSV67 BIT(1), /* RESERVED ICB480 */ 05350000 * 4 UCBRSV68 BIT(1), /* RESERVED ICB480 */ 05351000 * 3 UCBAOF2 BIT(8), /* SECOND BYTE OF UCBAOF ICB480 */ 05352000 * 4 UCBRSV69 BIT(1), /* RESERVED ICB480 */ 05353000 * 4 UCBRSV70 BIT(1), /* RESERVED ICB480 */ 05354000 * 4 UCBRSV71 BIT(1), /* RESERVED ICB480 */ 05355000 * 4 UCBRSV72 BIT(1), /* RESERVED ICB480 */ 05356000 * 4 UCBRSV73 BIT(1), /* RESERVED ICB480 */ 05357000 * 4 UCBRSV74 BIT(1), /* RESERVED ICB480 */ 05358000 * 4 UCBRSV75 BIT(1), /* RESERVED ICB480 */ 05359000 * 4 UCBRSV76 BIT(1), /* RESERVED ICB480 */ 05360000 * 2 UCBATNCT PTR(8), /* ATTENTION COUNT. THE NUMBER OF 05361000 * ATTENTIONS NOT SERVICED IN THE 05362000 * LINE GROUP. PRESENT ONLY IF 1151 05363000 * THE DEVICE INDEX FIELD IS 1. 05364000 * OTHERWISE, THIS FIELD IS 1151 05365000 * RESERVED. ICB480 */ 05366000 * 2 * BIT(8), /* UCBGCB - CONTROL BYTE. USED 1151 05367000 * FOR ATTENTION HANDLING FLAGS. 05368000 * ICB480 */ 05369000 * 3 UCBOLTEP BIT(1), /* OLTEP IN CONTROL OF THE DEVICE 05370000 * ICB480 */ 05371000 * 3 UCBRSV77 BIT(1), /* RESERVED ICB480 */ 05372000 * 3 UCBRSV78 BIT(1), /* RESERVED ICB480 */ 05373000 * 3 UCBRSV79 BIT(1), /* RESERVED ICB480 */ 05374000 * 3 UCBRTIAC BIT(1), /* READ TI ACTIVE MDC171 */ 05375000 * 3 UCBRIPND BIT(1), /* READ INITIAL PENDING ICB480 */ 05376000 * 3 UCBSKPFG BIT(1), /* SKIP FLAG ICB480 */ 05377000 * 3 UCBATRCD BIT(1), /* ATTENTION RECEIVED FROM THE 1151 05378000 * DEVICE ICB480 */ 05379000 * 2 UCBIRB PTR(31), /* ADDRESS OF THE IRB USED FOR 1151 05380000 * SCHEDULING THE SECOND LEVEL 1151 05381000 * ATTENTION ROUTINE ICB480 */ 05382000 * 3 UCBGRAF BIT(8), /* GRAPHICS STATUS FLAGS (BTAM) 05383000 * MDC172 */ 05384000 * 4 UCBOIP BIT(1), /* OPEN IS IN PROGRESS MDC173 */ 05385000 * 4 UCBDRO BIT(1), /* DEVICE READY IN OPEN MDC174 */ 05386000 * 4 UCBDRNO BIT(1), /* DEVICE READY - NOT IN OPEN 1151 05387000 * MDC175 */ 05388000 * 4 UCBBTAM BIT(1), /* USE BTAM - IGG019UP MDC176 */ 05389000 * 4 UCBUPM BIT(1), /* USE PROVIDED MODULE MDC177 */ 05390000 * 4 UCBRPND BIT(1), /* READY PROCESSING NOT DONE 1151 05391000 * MDC178 */ 05392000 * 4 UCBDWNR BIT(1), /* DEVICE WENT NOT READY MDC179 */ 05393000 * 4 UCBRV039 BIT(1), /* RESERVED - BTAM MDC180 */ 05394000 * 3 UCBIRBA PTR(24), /* ADDRESS OF THE IRB USED FOR 1151 05395000 * SCHEDULING THE SECOND LEVEL 1151 05396000 * ATTENTION ROUTINE MDC181 */ 05397000 * 2 UCBLDNCA PTR(31), /* ADDRESS OF 3270 WORK AREA 1151 05398000 * ESTABLISHED BY VTAM MDC132 */ 05399000 * 3 UCBRDYQ PTR(31), /* ASYNCHRONOUS READY 1151 05400000 * NOTIFICATION IRB ADDRESS 1151 05401000 * (BTAM) MDC182 */ 05402000 * 4 UCBIRLN PTR(8), /* INITIALIZED RLN. THE RELATIVE 05403000 * LINE NUMBER (RLN) OF THE IOB 05404000 * INITIALIZED FOR A READ 1151 05405000 * INITIAL. IF 0, NO READ INITIAL 05406000 * IS OUTSTANDING. PRESENT ONLY 05407000 * IF THE DEVICE INDEX FIELD IS 05408000 * 1. OTHERWISE, THIS FIELD IS 1151 05409000 * RESERVED. ICB480 */ 05410000 * 5 UCBINRLN PTR(8), /* SAME AS UCBIRLN MDC183 */ 05411000 * 4 UCBLDNCB PTR(24), /* ADDRESS OF 3270 WORK AREA 1151 05412000 * ESTABLISHED BY VTAM MDC133 */ 05413000 * 5 UCBRDYQA PTR(24), /* ASYNCHRONOUS READY 1151 05414000 * NOTIFICATION IRB ADDRESS 1151 05415000 * (BTAM) MDC184 */ 05416000 * 2 UCBCTLNK PTR(31), /* SAME AS UCBCTLNA BELOW ICB480 */ 05417000 * 3 UCBRLN PTR(8), /* DEVICE INDEX. INDEX TO THE DEB 05418000 * UCB ADDRESS FIELD FOR THIS 1151 05419000 * DEVICE. THIS VALUE IS ALSO THE 05420000 * RELATIVE LINE NUMBER. ICB480 */ 05421000 * 3 UCBCTLNA PTR(24); /* CONTROL BLOCK LINK. IF THE 1151 05422000 * DEVICE INDEX FIELD IS 1, THIS 05423000 * FIELD CONTAINS THE ADDRESS OF 05424000 * THE DEB FOR THE LINE GROUP. IF 05425000 * THE DEVICE INDEX FIELD IS 1151 05426000 * BETWEEN 2 AND 255 INCLUSIVE, 05427000 * THIS FIELD CONTAINS THE 1151 05428000 * ADDRESS OF THE UCB WITH A 1151 05429000 * DEVICE INDEX OF 1. ICB480 */ 05430000 */* **************************************************************** */ 05431000 */* */ 05432000 */* 3704, 3705 TELEPROCESSING DEVICE */ 05433000 */* UCB SEGMENT */ 05434000 */* */ 05435000 * 1152 05436000 * DECLARE 1152 05437000 * 1 UCBOBS07 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05438000 */* **************************************************************** */ 05439000 */* */ 05440000 * 1152 05441000 * 2 UCBRV040 PTR(31), /* RESERVED FOR USE AS 1152 05442000 * TELEPROCESSING EXTENSION 1152 05443000 * POINTER MDC185 */ 05444000 * 2 UCBICNCB PTR(31); /* POINTER TO VTAM'S ICNCB MDC186*/ 05445000 */* **************************************************************** */ 05446000 */* */ 05447000 */* CHANNEL-TO-CHANNEL (CTC) DEVICE */ 05448000 */* UCB SEGMENT */ 05449000 */* */ 05450000 * 1153 05451000 * DECLARE 1153 05452000 * 1 UCBOBS08 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05453000 */* **************************************************************** */ 05454000 */* */ 05455000 * 1153 05456000 * 2 UCBCTCAD PTR(31), /* ADDRESS OF AN SRB/IOSB TO BE 05457000 * USED FOR SENSE COMMAND BYTE BY 05458000 * IECTCATN MDC240 */ 05459000 * 2 UCBCTCF1 BIT(8), /* CHANNEL-TO-CHANNEL (CTC) 1153 05460000 * DEVICE FLAG BYTE MDC241 */ 05461000 * 2 UCBRV042 CHAR(3); /* RESERVED MDC242 */ 05462000 */* **************************************************************** */ 05463000 */* */ 05464000 */* 3851 DEVICE */ 05465000 */* UCB SEGMENT */ 05466000 */* */ 05467000 * 1154 05468000 * DECLARE 1154 05469000 * 1 UCBOBS09 DEF(UCBDEV) BDY(WORD),/* DEVICE-DEPENDENT SEGMENT */ 05470000 */* **************************************************************** */ 05471000 */* */ 05472000 * 1154 05473000 * 2 UCBIOSBA PTR(31), /* ADDRESS OF IOSB. SET BY IOS 1154 05474000 * FOR ERROR CONDITIONS. (MDC330) 05475000 * @Z30LP9A*/ 05476000 * 2 UCBRV066 PTR(31); /* RESERVED (MDC331) @Z30LP9A*/ 05477000 */* **************************************************************** */ 05478000 */* */ 05479000 */* UNIT CONTROL BLOCK EXTENSIONS */ 05480000 */* */ 05481000 */* **************************************************************** */ 05482000 */* **************************************************************** */ 05483000 */* */ 05484000 */* COMMON UCB EXTENSION */ 05485000 */* */ 05486000 */* THIS EXTENSION IS POINTED TO BY THE UCBEXTPT FIELD IN THE */ 05487000 */* COMMON SEGMENT AND IS NOT CONTIGUOUS TO THE UCB. */ 05488000 */* */ 05489000 * 1155 05490000 * DECLARE 1155 05491000 * 1 UCBCMEXT BASED(UCBEXTPT) BDY(WORD),/* MDC225 */ 05492000 */* **************************************************************** */ 05493000 */* */ 05494000 * 1155 05495000 * 2 UCBETI PTR(8) BDY(WORD), /* A BINARY NUMBER USED BY THE 1155 05496000 * EXIT EFFECTOR ROUTINE TO 1155 05497000 * COMPLETE THE 8-BYTE NAME OF AN 05498000 * IBM-SUPPLIED ERROR ROUTINE FOR 05499000 * THIS DEVICE MDC209 */ 05500000 * 2 UCBSTI PTR(8), /* INCREMENT WHICH, WHEN 1155 05501000 * MULTIPLIED BY 10, BECOMES AN 05502000 * INDEX TO THE STATISTICS TABLE 05503000 * (STATAB) MDC210 */ 05504000 * 2 UCBDTI PTR(8), /* INDEX TO THE DEVICE TABLE 1155 05505000 * MDC211 */ 05506000 * 2 UCBATI PTR(8), /* INDEX TO THE ATTENTION TABLE 05507000 * (ANTAB) MDC212 */ 05508000 * 3 * BIT(8), /* OPTIONAL JOB ENTRY SUBSYSTEM 05509000 * (JES) FLAG BYTE ICB455 */ 05510000 * 4 UCBRSV04 BIT(1), /* RESERVED */ 05511000 * 4 UCBRSV05 BIT(1), /* RESERVED */ 05512000 * 4 UCBRSV06 BIT(1), /* RESERVED */ 05513000 * 4 UCBRSV07 BIT(1), /* RESERVED */ 05514000 * 4 UCBRSV08 BIT(1), /* RESERVED */ 05515000 * 4 UCBRSV09 BIT(1), /* RESERVED */ 05516000 * 4 UCBHALI BIT(1), /* OPTIONAL JOB ENTRY SUBSYSTEM 05517000 * (JES) ALLOCATION INDICATOR 1155 05518000 * MDC213 */ 05519000 * 4 UCBHPDV BIT(1), /* OPTIONAL JOB ENTRY SUBSYSTEM 05520000 * (JES) PSEUDO-DEVICE MDC214 */ 05521000 * 2 UCBSNSCT PTR(8), /* COUNT OF SENSE BYTES PRESENTED 05522000 * BY THIS DEVICE MDC215 */ 05523000 * 2 UCBFLP1 BIT(8), /* FLAG BYTE MDC216 */ 05524000 * 3 UCBNSRCH BIT(1), /* THE CURRENTLY ALLOCATED VOLUME 05525000 * WAS SPECIFICALLY REQUESTED BY 05526000 * VOLUME SERIAL NUMBER. IT IS 1155 05527000 * NOT AVAILABLE FOR ASSIGNMENT 05528000 * BY OPEN/EOV FOR A NON-SPECIFIC 05529000 * VOLUME REQUEST. MDC217 */ 05530000 * 3 UCBSHRUP BIT(1), /* SHAREABLE WHEN IN UNIPROCESSOR 05531000 * MODE (MDC333) @ZA00805*/ 05532000 * 3 UCBRV031 BIT(1), /* RESERVED MDC163 */ 05533000 * 3 UCBRV032 BIT(1), /* RESERVED MDC163 */ 05534000 * 3 UCBRV033 BIT(1), /* RESERVED MDC163 */ 05535000 * 3 UCBRV034 BIT(1), /* RESERVED MDC163 */ 05536000 * 3 UCBRV035 BIT(1), /* RESERVED MDC163 */ 05537000 * 3 UCBRV036 BIT(1), /* RESERVED MDC163 */ 05538000 * 2 UCBRV041 CHAR(2), /* RESERVED MDC226 */ 05539000 * 2 UCBCCWOF FIXED(15), /* OFFSET TO CCW PREFIX MDC218 */ 05540000 * 2 UCBPMSK BIT(16), /* PATH MASK FOR MESSAGES ISSUED 05541000 * MDC219 */ 05542000 * 2 UCBMFCNT FIXED(15), /* MEASUREMENT FACILITIES TOTAL 05543000 * DEVICE SIO COUNT. DURING NIP 05544000 * UCB INITIALIZATION, USED FOR 05545000 * PREVIOUSLY TESTED INDICATOR. 05546000 * MDC220 */ 05547000 * 2 UCBASID FIXED(15), /* ASID OF THE MEMORY TO WHICH 1155 05548000 * THIS DEVICE IS ALLOCATED 1155 05549000 * MDC221 */ 05550000 * 2 UCBRV043 CHAR(1), /* RESERVED (MDC249) YM6828*/ 05551000 * 2 UCBWTOID CHAR(3); /* WTO MESSAGE IDENTIFIER 1155 05552000 * (MDC250) YM6828*/ 05553000 */* **************************************************************** */ 05554000 */* */ 05555000 */* MAGNETIC TAPE */ 05556000 */* UCB EXTENSION */ 05557000 */* */ 05558000 */* THIS EXTENSION IS POINTED TO BY THE UCBXTN FIELD OF THE */ 05559000 */* UCB AND IS NOT CONTIGUOUS TO THE UCB. */ 05560000 */* */ 05561000 * 1156 05562000 * DECLARE 1156 05563000 * 1 UCBMT BASED(UCBXTN) BDY(WORD), 1156 05564000 * 1156 05565000 */* **************************************************************** */ 05566000 */* */ 05567000 * 1156 05568000 * 2 UCBCTD FIXED(15), /* SERIAL NUMBER IN BINARY OF 1156 05569000 * TAPE DRIVE UPON WHICH THE 1156 05570000 * VOLUME WAS CREATED MDC097 */ 05571000 * 2 UCBTRT PTR(8), /* TEMPORARY READ ERROR THRESHOLD 05572000 * (IF 0, EVA IS NOT IN EFFECT). 05573000 * A BINARY NUMBER FROM 1 THROUGH 05574000 * 255 AS SELECTED AT SYSGEN TIME 05575000 * ON THE SCHEDULR MACRO BY 1156 05576000 * EVA=(N1,N2) WHERE N1 = 1156 05577000 * TEMPORARY READ ERROR 1156 05578000 * THRESHOLD. MDC097 */ 05579000 * 2 UCBTWT PTR(8), /* TEMPORARY WRITE ERROR 1156 05580000 * THRESHOLD (IF 0, EVA IS NOT IN 05581000 * EFFECT). A BINARY NUMBER FROM 05582000 * 1 THROUGH 255 AS SELECTED AT 05583000 * SYSGEN TIME ON THE SCHEDULR 1156 05584000 * MACRO BY EVA=(N1,N2) WHERE N2 05585000 * = TEMPORARY WRITE ERROR 1156 05586000 * THRESHOLD. MDC097 */ 05587000 * 2 UCBTR PTR(8) BDY(WORD), /* THE NUMBER (BINARY) OF 1156 05588000 * TEMPORARY READ ERRORS THAT 1156 05589000 * HAVE OCCURRED MDC097 */ 05590000 * 2 UCBTW PTR(8), /* THE NUMBER (BINARY) OF 1156 05591000 * TEMPORARY WRITE ERRORS THAT 1156 05592000 * HAVE OCCURRED MDC097 */ 05593000 * 2 UCBSIO FIXED(15), /* THE NUMBER (BINARY) OF START 05594000 * I/O OPERATIONS THAT HAVE 1156 05595000 * OCCURRED MDC097 */ 05596000 * 2 UCBPR PTR(8) BDY(WORD), /* THE NUMBER (BINARY) OF 1156 05597000 * PERMANENT READ ERRORS THAT 1156 05598000 * HAVE OCCURRED MDC097 */ 05599000 * 2 UCBPW PTR(8), /* THE NUMBER (BINARY) OF 1156 05600000 * PERMANENT WRITE ERRORS THAT 1156 05601000 * HAVE OCCURRED MDC097 */ 05602000 * 2 UCBNB PTR(8), /* THE NUMBER (BINARY) OF NOISE 05603000 * BLOCKS THAT HAVE BEEN 1156 05604000 * ENCOUNTERED MDC097 */ 05605000 * 2 UCBMS CHAR(1), /* MODE SET OPERATION CODE FOR 1156 05606000 * DATA BLOCKS ON A 3420 MAGNETIC 05607000 * TAPE UNIT MDC097 */ 05608000 * 2 UCBERG FIXED(15) BDY(WORD),/* THE NUMBER (BINARY) OF ERASE 05609000 * GAPS THAT HAVE BEEN 1156 05610000 * ENCOUNTERED MDC097 */ 05611000 * 2 UCBCLN FIXED(15); /* THE NUMBER (BINARY) OF CLEANER 05612000 * ACTIONS THAT HAVE OCCURRED 1156 05613000 * MDC097 */ 05614000 */* **************************************************************** */ 05615000 */* */ 05616000 */* OPTICAL CHARACTER READER (3886) */ 05617000 */* UCB EXTENSION */ 05618000 */* */ 05619000 */* THIS EXTENSION IS POINTED TO BY THE UCBXTADR FIELD OF THE */ 05620000 */* UCB AND IS NOT CONTIGUOUS TO THE UCB. */ 05621000 */* */ 05622000 * 1157 05623000 * DECLARE 1157 05624000 * 1 UCBOCR BASED(UCBXTADR) BDY(WORD),/* MDC024 */ 05625000 */* **************************************************************** */ 05626000 */* */ 05627000 * 1157 05628000 * 2 UCBFRID CHAR(4) BDY(WORD), /* CURRENT FORMAT RECORD ID 1157 05629000 * (FRID) LOADED MDC025 */ 05630000 * 2 UCBRDATA CHAR(4) BDY(WORD);/* COMMAND DATA MDC026 */ 05631000 */* **************************************************************** */ 05632000 */* */ 05633000 */* 3450 DEVICE @Z30OP9A*/ 05634000 */* UCB EXTENSION @Z30OP9A*/ 05635000 */* */ 05636000 */* THIS EXTENSION IS POINTED TO BY THE UCBXTADR FIELD OF THE */ 05637000 */* UCB AND IS NOT CONTIGUOUS TO THE UCB. @Z30OP9A*/ 05638000 */* */ 05639000 * 1158 05640000 * DECLARE 1158 05641000 * 1 UCB3540X BASED(UCBXTADR) BDY(WORD),/* (MDC325) @Z30OP9A*/ 05642000 */* **************************************************************** */ 05643000 */* */ 05644000 * 1158 05645000 * 2 UCBVLSER CHAR(6), /* 3540 VOLID (MDC326) @Z30OP9A*/ 05646000 * 2 UCBDKBYT BIT(8), /* FLAG BYTE (MDC334) @Z30OP9A*/ 05647000 * 3 UCBDKAMX BIT(1), /* IBM-SUPPLIED DISKETTE READER, 05648000 * DISKETTE WRITER OR 1158 05649000 * COPY/RESTORE UTILITIES ARE 1158 05650000 * USING THIS 3540 DEVICE 1158 05651000 * (MDC335) @Z30OP9A*/ 05652000 * 3 UCBVLVER BIT(1), /* VOLUME VERIFICATION IS 1158 05653000 * REQUIRED FOR CERTAIN 1158 05654000 * INTERVENTION REQUIRED 1158 05655000 * CONDITIONS WHILE 3540 DISKETTE 05656000 * UTILITIES ARE USING THE DEVICE 05657000 * (MDC336) @Z30OP9A*/ 05658000 * 3 UCBRV067 BIT(1), /* RESERVED @Z30OP9A*/ 05659000 * 3 UCBRV068 BIT(1), /* RESERVED @Z30OP9A*/ 05660000 * 3 UCBRV069 BIT(1), /* RESERVED @Z30OP9A*/ 05661000 * 3 UCBRV070 BIT(1), /* RESERVED @Z30OP9A*/ 05662000 * 3 UCBRV071 BIT(1), /* RESERVED @Z30OP9A*/ 05663000 * 3 UCBRV072 BIT(1), /* RESERVED @Z30OP9A*/ 05664000 * 2 UCBRV073 CHAR(1); /* RESERVED @Z30OP9A*/ 05665000 */* **************************************************************** */ 05666000 */* */ 05667000 */* UNIT RECORD WITH */ 05668000 */* UNIVERSAL CHARACTER SET (1403, 3211) */ 05669000 */* UCB EXTENSION */ 05670000 */* */ 05671000 */* THIS EXTENSION IS POINTED TO BY THE UCBXTADR FIELD OF THE */ 05672000 */* UCB AND IS NOT CONTIGUOUS TO THE UCB. */ 05673000 */* */ 05674000 * 1159 05675000 * DECLARE 1159 05676000 * 1 UCBUCS BASED(UCBXTADR) BDY(WORD),/* DEVICE DEPENDENT SEGMENT */ 05677000 */* **************************************************************** */ 05678000 * 1159 05679000 * 2 UCBUCSID CHAR(4) BDY(WORD),/* UCS IMAGE IDENTIFICATION IN 1159 05680000 * BUFFER */ 05681000 * 2 UCBUCSOP BIT(8), /* FORMAT OF UCS IMAGE IN BUFFER 05682000 * (O FOR OPTION) */ 05683000 * 3 UCBUCSO1 BIT(1), /* UCS IMAGE IS A DEFAULT IMAGE */ 05684000 * 3 UCBUCSO2 BIT(1), /* UCS IMAGE IS IN FOLD MODE */ 05685000 * 3 UCBRSV39 BIT(1), /* RESERVED */ 05686000 * 3 UCBRSV40 BIT(1), /* RESERVED */ 05687000 * 3 UCBRSV41 BIT(1), /* RESERVED */ 05688000 * 3 UCBRSV42 BIT(1), /* RESERVED */ 05689000 * 3 UCBRSV43 BIT(1), /* RESERVED */ 05690000 * 3 UCBUCSPE BIT(1), /* UCS IMAGE HAS PARITY ERROR 1159 05691000 * (3211) */ 05692000 * 2 UCBFCBOP BIT(8), /* RESERVED (1403) OR FCB OPTIONS 05693000 * (3211) (O FOR OPTION) */ 05694000 * 3 UCBFCBO1 BIT(1), /* FCB IMAGE IS A DEFAULT IMAGE */ 05695000 * 3 UCBRSV44 BIT(1), /* RESERVED */ 05696000 * 3 UCBRSV45 BIT(1), /* RESERVED */ 05697000 * 3 UCBRSV46 BIT(1), /* RESERVED */ 05698000 * 3 UCBRSV47 BIT(1), /* RESERVED */ 05699000 * 3 UCBRSV48 BIT(1), /* RESERVED */ 05700000 * 3 UCBRSV49 BIT(1), /* RESERVED */ 05701000 * 3 UCBRSV50 BIT(1), /* RESERVED */ 05702000 * 2 UCBRSV51 PTR(8), /* RESERVED */ 05703000 * 2 UCBERCNT PTR(8), /* CONTAINS A COUNT OF THE ERRORS 05704000 * THAT HAVE OCCURRED. THE COUNT, 05705000 * WHICH MAY WRAP AROUND, IS 1159 05706000 * WRITTEN IN STANDARD OBR 1159 05707000 * RECORDS (ONE PER ERROR) AND IN 05708000 * NEW DEVICE-DEPENDENT OBR 1159 05709000 * RECORDS (0 TO 3 PER ERROR) AND 05710000 * SERVE TO RELATE TO EACH OTHER 05711000 * THE STANDARD AND 1159 05712000 * DEVICE-DEPENDENT OBR RECORDS 05713000 * THAT PERTAIN TO EACH ERROR 1159 05714000 * (3211) */ 05715000 * 2 UCBFCBID CHAR(4) BDY(WORD),/* THE FCB IMAGE IDENTIFICATION */ 05716000 * 2 UCBERADR PTR(31); /* THE ADDRESS OF THE ERP LOGOUT 05717000 * AREA */ 05718000 * DECLARE 1160 05719000 * UCBBGN BASED(UCBPTR-512) CHAR(536) BDY(WORD); 1160 05720000 * 1161 05721000 * /*****************************************************************/ 05722000 * /* */ 05723000 * /* MACROS REQUIRED FOR IOSGEN MACRO */ 05724000 * /* */ 05725000 * /*****************************************************************/ 05726000 * 1161 05727000 * /* @ZM31085*/ 05728000 * GEN DATA; 1161 05729000 * 1161 05730000 * /*****************************************************************/ 05731000 * /* */ 05732000 * /* WORK AREA FOR UCB NAME @ZM31085*/ 05733000 * /* */ 05734000 * /*****************************************************************/ 05735000 * 1162 05736000 * DCL 1162 05737000 * 1 SAVPACK CHAR(4) BDY(WORD,2),/* SAVE AREA FOR UCB NAME 1162 05738000 * @ZM31085*/ 05739000 * 2 SAVUNAME CHAR(3), /* SAVE AREA FOR UCB NAME 1162 05740000 * @ZM31085*/ 05741000 * 3 SAVCHF FIXED(8), /* CHANNEL ADDRESS @ZM31085*/ 05742000 * 3 SAVADD FIXED(15), /* PACKED ADDRESS @ZM31085*/ 05743000 * 4 SAVADD1 FIXED(8), /* CU ADDRESS @ZM31085*/ 05744000 * 4 SAVADD2 FIXED(8), /* DEV ADDRESS @ZM31085*/ 05745000 * 2 SAVSPARE FIXED(8); /* EXTRA CHAR FOR PACK @ZM31085*/ 05746000 * DCL /* @ZM31085*/ 05747000 * F0 FIXED(8) CONSTANT(240); /* CHAR ZERO @ZM31085*/ 05748000 * DCL /* @ZM31085*/ 05749000 * CONVCHAR FIXED(8) CONSTANT(57);/* CHAR USED TO @ZM31085 05750000 * CONVERT CHANNEL ADDRESS 1164 05751000 * @ZM31085*/ 05752000 * RFY 1165 05753000 * (R7) RSTD; /* RESTRICT R7 @ZA27588*/ 05754000 * R7=ASCBPTR; /* SET ASCBPTR TO REG @ZA27588*/ 05755000 * 1166 05756000 L R7,ASCBPTR 1166 05757000 * /*****************************************************************/ 05758000 * /* */ 05759000 * /* SAVE THE REGISTERS, GET THE VUA ADDRESS, SAVE @ZM31085*/ 05760000 * /* THE REQUIRED INFO AND RESTORE THE @ZM31085*/ 05761000 * /* REGISTERS AS SOON AS POSSIBLE @ZM31085*/ 05762000 * /* */ 05763000 * /*****************************************************************/ 05764000 * 1167 05765000 * STM(R13,R15,SAV2UCBL); /* SAVE REGISTERS @ZM31085*/ 05766000 STM R13,R15,SAV2UCBL 1167 05767000 * STM(R6,R7,SAV3UCBL); /* SAVE REGISTERS @ZA27588*/ 05768000 STM R6,R7,SAV3UCBL 1168 05769000 * RFY 1169 05770000 * R13 RSTD; /* RESTRICT REG 13 @ZDR2048*/ 05771000 * R13=ADDR(SAV1UCBL); /* SAVE AREA @ZDR2048*/ 05772000 LA R13,SAV1UCBL 1170 05773000 * RFY 1171 05774000 * R13 UNRSTD; /* FREE REG 13 @ZDR2048*/ 05775000 * IF REQCODE=DEMOUNT THEN /* IS REQUEST DMT ? @ZDR2048*/ 05776000 CLI REQCODE(R6),6 1172 05777000 BNE @RF01172 1172 05778000 * R6=DMNTVUA; /* PUT DMT VUA IN SRCH REG 1173 05779000 * @ZDR2048*/ 05780000 LH R6,DMNTVUA(,R6) 1173 05781000 * ELSE /* REQUEST MUST BE MOUNT @ZDR2048*/ 05782000 * R6=MDVUA; /* PUT MNT VUA IN SRCH REG 1174 05783000 * @ZDR2048*/ 05784000 B @RC01172 1174 05785000 @RF01172 LH R6,MDVUA(,R6) 1174 05786000 * GEN REFS(CVTILK1,CVTILK2,CVTIXAVL,CVTMAP,/* @ZM31085*/ 05787000 * CVTPTR); 1175 05788000 @RC01172 DS 0H 1175 05789000 * /*@ZM31085*/ 05790000 IOSGEN UCBLOOK @ZM31085 05791000 * GEN REFS(UCBPTR,SAVR15,R7,R10,R15); 1176 05792000 * /* @ZA27588*/ 05793000 ST R7,UCBPTR SAVE THE UCB ADDRESS @ZA27588 05794000 ST R15,SAVR15 SAVE THE RETURN CODE @ZM31085 05795000 * LM(R13,R15,SAV2UCBL); /* RESTORE THE REGISTERS @ZM31085*/ 05796000 LM R13,R15,SAV2UCBL 1177 05797000 * LM(R6,R7,SAV3UCBL); /* RESTORE THE REGISTERS @ZA27588*/ 05798000 LM R6,R7,SAV3UCBL 1178 05799000 * RFY 1179 05800000 * (R7) UNRSTD; /* FREE R7 @ZA27588*/ 05801000 * IF SAVR15=ZERO THEN /* WAS THE UCB FOUND @ZM31085*/ 05802000 L @09,SAVR15 1180 05803000 LTR @09,@09 1180 05804000 BNZ @RF01180 1180 05805000 * DO; /* @ZM31085*/ 05806000 * SAVUNAME=UCBNAME; /* GET THE UCB NAME @ZM31085*/ 05807000 L @09,UCBPTR 1182 05808000 MVC SAVUNAME(3),UCBNAME(@09) 1182 05809000 * IF SAVCHF