ASCB TITLE 'BLSSASCB--FIND ADDRESS SPACE CONTROL BLOCK (ASCB) *00001000 ' 00002000 */* CHANGE ACTIVITY -------------------------------------------------*/ 00003000 */* THIS MODULE WAS WRITTEN FOR @G57LPRW */ 00004000 */*------------------------------------------------------------------*/ 00005000 BLSSASCB CSECT , 01S0002 00006000 @MAINENT DS 0H 01S0002 00007000 USING *,@15 01S0002 00008000 B @PROLOG 01S0002 00009000 DC AL1(16) 01S0002 00010000 DC C'BLSSASCB 78.059' 01S0002 00011000 DROP @15 00012000 @PROLOG STM @14,@12,12(@13) 01S0002 00013000 BALR @12,0 01S0002 00014000 @PSTART DS 0H 01S0002 00015000 USING @PSTART,@12 01S0002 00016000 L @00,@SIZDATD 01S0002 00017000 BLSUALLS R,LV=(0) 00018000 LR @11,@01 01S0002 00019000 USING @DATD,@11 01S0002 00020000 ST @13,@SA00001+4 01S0002 00021000 LM @00,@01,20(@13) 01S0002 00022000 ST @11,8(,@13) 01S0002 00023000 LR @13,@11 01S0002 00024000 MVC @PC00001(8),0(@01) 01S0002 00025000 * RETC=ZZZFLAGS; /* RETURN CODE */ 00026000 LA RETC,12 01S0148 00027000 * ESBAPTR=ADDR(ESPA); /* ->ESBA (ALIAS FOR ESPA) */ 00028000 L ESBAPTR,@PC00001+4 01S0149 00029000 * IF SYMA^='ASCB'|ESBASYM(LENGTH(SYM)+1:LENGTH(ESBASYM))^=BLANKSUF 00030000 * THEN /* INVALID SYMBOL */ 00031000 CLC SYMA(4,ESBAPTR),@CC01219 01S0150 00032000 BNE @RT00150 01S0150 00033000 CLC ESBASYM+7(24,ESBAPTR),BLANKSUF 01S0150 00034000 BNE @RT00150 01S0150 00035000 * GO TO EXIT; /* COMMON EXIT PATH */ 00036000 * DO J1=1 TO LENGTH(SYMB) WHILE(SYMB(J1:J1)>='0'&SYMB(J1:J1)<='9'); 00037000 LA J1,1 01S0152 00038000 @DL00152 LR @14,ESBAPTR 01S0152 00039000 ALR @14,J1 01S0152 00040000 CLI SYMB-1(@14),C'0' 01S0152 00041000 BL @DC00152 01S0152 00042000 LR @14,ESBAPTR 01S0152 00043000 ALR @14,J1 01S0152 00044000 CLI SYMB-1(@14),C'9' 01S0152 00045000 BH @DC00152 01S0152 00046000 * END; 01S0153 00047000 AH J1,@CH00046 01S0153 00048000 CH J1,@CH00156 01S0153 00049000 BNH @DL00152 01S0153 00050000 @DC00152 DS 0H 01S0154 00051000 * IF J1<=LENGTH(SYMB) THEN /* NON-NUMERIC DIGIT */ 00052000 CH J1,@CH00156 01S0154 00053000 BNH @RT00154 01S0154 00054000 * GO TO EXIT; /* COMMON EXIT PATH */ 00055000 * ESAUSYM='ASVT'; /* SYMBOL */ 00056000 MVI ESAUSYM+4,C' ' 01S0156 00057000 MVC ESAUSYM+5(26),ESAUSYM+4 01S0156 00058000 MVC ESAUSYM(4),@CC01301 01S0156 00059000 * ESAUDT=DTASV; /* DATA TYPE */ 00060000 MVC ESAUDT(34),DTASV 01S0157 00061000 * CALL BLSRESGU(ZZ2,ESAU); /* FIND THE ASVT */ 00062000 ST R9,@AL00001 01S0158 00063000 LA @14,ESAU 01S0158 00064000 ST @14,@AL00001+4 01S0158 00065000 L @10,ZZ2RVTP(,R9) 01S0158 00066000 L @15,RVTESGUP(,@10) 01S0158 00067000 LA @01,@AL00001 01S0158 00068000 BALR @14,@15 01S0158 00069000 * RETC=RF; /* RETURN CODE */ 00070000 LR RETC,RF 01S0159 00071000 * IF RF>ZZZFLAGE THEN /* ASVT NOT FOUND */ 00072000 CH RF,@CH00054 01S0160 00073000 BH @RT00160 01S0160 00074000 * GO TO EXIT; /* COMMON EXIT PATH */ 00075000 * DO; /* BLRCNVCU(SYMB) 01S0162 00076000 * FROM(CHARACTER)TO(UNSIGNED 00077000 * BINARY)SET(ASID)REMARK(ADDRESS 00078000 * SPACE IDENTIFIER) */ 00079000 * 01S0162 00080000 * /***************************************************************/ 00081000 * /* */ 00082000 * /* ADDRESS SPACE IDENTIFIER */ 00083000 * /* */ 00084000 * /***************************************************************/ 00085000 * 01S0163 00086000 * PACK(PACKED,SYMB); /* EBCDIC=>PACKED DECIMAL */ 00087000 PACK PACKED(8),SYMB(3,ESBAPTR) 01S0163 00088000 * CVB(ASID,PACKED); /* PACKED DECIMAL=>UNSIGNED 01S0164 00089000 * BINARY */ 00090000 CVB ASID,PACKED 01S0164 00091000 * END; /* BLRCNVCU(SYMB) 01S0165 00092000 * FROM(CHARACTER)TO(UNSIGNED 00093000 * BINARY)SET(ASID)REMARK(ADDRESS 00094000 * SPACE IDENTIFIER) */ 00095000 * J2=ADDR(ASVTFRST)-ADDR(ASVT)+ASID*LENGTH(ASVTENTY);/* OFFSET */ 00096000 LR J2,ASID 01S0166 00097000 SLA J2,2 01S0166 00098000 AH J2,@CH01328 01S0166 00099000 * IF J2>=ESAUDOF+ESAUDLE THEN /* ASID LARGER THAN MAXUSER */ 00100000 * 01S0167 00101000 L @14,ESAUDOF 01S0167 00102000 AL @14,ESAUDLE 01S0167 00103000 CLR J2,@14 01S0167 00104000 BL @RF00167 01S0167 00105000 * /***************************************************************/ 00106000 * /* */ 00107000 * /* ASID LARGER THAN MAXUSER */ 00108000 * /* */ 00109000 * /***************************************************************/ 00110000 * 01S0168 00111000 * DO; /* ASID LARGER THAN MAXUSER */ 00112000 * M000B=M000S; /* MESSAGE M000 LITERAL TEXT */ 00113000 MVC M000B(47),M000S 01S0169 00114000 * DO; /* BLRCNVUC(ASID) FROM(UNSIGNED B 00115000 * INARY)TO(CHARACTER)SET(M000BTB 00116000 * )PATTERN('402020202120'X)OPTIO 00117000 * NS(PATTERN IN 01S0170 00118000 * PLACE)REMARK(ADDRESS SPACE 00119000 * IDENTIFIER) */ 00120000 * 01S0170 00121000 * /***********************************************************/ 00122000 * /* */ 00123000 * /* ADDRESS SPACE IDENTIFIER */ 00124000 * /* */ 00125000 * /***********************************************************/ 00126000 * 01S0171 00127000 * CVD(ASID,PACKED); /* UNSIGNED BINARY=>PACKED 01S0171 00128000 * DECIMAL */ 00129000 CVD ASID,PACKED 01S0171 00130000 * ED(M000BTB,PACKED(41:64));/* PACKED DECIMAL=>EBCDIC */ 00131000 ED M000BTB(6),PACKED+5 01S0172 00132000 * END; /* BLRCNVUC(ASID) FROM(UNSIGNED B 00133000 * INARY)TO(CHARACTER)SET(M000BTB 00134000 * )PATTERN('402020202120'X)OPTIO 00135000 * NS(PATTERN IN 01S0173 00136000 * PLACE)REMARK(ADDRESS SPACE 00137000 * IDENTIFIER) */ 00138000 * CALL BLSUMPK1(ZZ2,M000B); /* COMPRESS MESSAGE M000 */ 00139000 ST R9,@AL00001 01S0174 00140000 LA @14,M000B 01S0174 00141000 ST @14,@AL00001+4 01S0174 00142000 L @10,ZZ2BVTP(,R9) 01S0174 00143000 L @15,BVTMPK1P(,@10) 01S0174 00144000 LA @01,@AL00001 01S0174 00145000 BALR @14,@15 01S0174 00146000 * CALL BLSUPUTV(ZZ2,M000B); /* TRANSMIT MESSAGE M000 */ 00147000 ST R9,@AL00001 01S0175 00148000 LA @14,M000B 01S0175 00149000 ST @14,@AL00001+4 01S0175 00150000 L @10,ZZ2BVTP(,R9) 01S0175 00151000 L @15,BVTPUTVP(,@10) 01S0175 00152000 LA @01,@AL00001 01S0175 00153000 BALR @14,@15 01S0175 00154000 * RETC=MAX(RF,ZZZFLAGS); /* RETURN CODE */ 00155000 LA RETC,12 01S0176 00156000 CR RETC,RF 01S0176 00157000 BNL *+6 00158000 LR RETC,RF 01S0176 00159000 * GO TO EXIT; /* COMMON EXIT PATH */ 00160000 B EXIT 01S0177 00161000 * END; /* ASID LARGER THAN MAXUSER */ 00162000 * ESAUD=DATC; /* DESCRIPTION OF ASVT ENTRY */ 00163000 @RF00167 MVC ESAUD(60),DATC 01S0179 00164000 * ESAUDOF=J2; /* GET ASVT ENTRY FOR THE ASID */ 00165000 ST J2,ESAUDOF 01S0180 00166000 * CALL BLSRACC(ZZ2,ESAU,ESBALAD); /* RETRIEVE ->ASCB */ 00167000 ST R9,@AL00001 01S0181 00168000 LA @14,ESAU 01S0181 00169000 ST @14,@AL00001+4 01S0181 00170000 LA @14,ESBALAD(,ESBAPTR) 01S0181 00171000 ST @14,@AL00001+8 01S0181 00172000 L @10,ZZ2RVTP(,R9) 01S0181 00173000 L @15,RVTRACCP(,@10) 01S0181 00174000 LA @01,@AL00001 01S0181 00175000 BALR @14,@15 01S0181 00176000 * IF RF^=ZZZFLAGI THEN /* ->ASCB NOT AVAILABLE */ 00177000 * 01S0182 00178000 LTR RF,RF 01S0182 00179000 BZ @RF00182 01S0182 00180000 * /***************************************************************/ 00181000 * /* */ 00182000 * /* ->ASCB NOT AVAILABLE */ 00183000 * /* */ 00184000 * /***************************************************************/ 00185000 * 01S0183 00186000 * DO; /* ->ASCB NOT AVAILABLE */ 00187000 * RETC=MAX(RF,ZZZFLAGS); /* RETURN CODE */ 00188000 LA RETC,12 01S0184 00189000 CR RETC,RF 01S0184 00190000 BNL *+6 00191000 LR RETC,RF 01S0184 00192000 * GO TO EXIT; /* COMMON EXIT PATH */ 00193000 B EXIT 01S0185 00194000 * END; /* ->ASCB NOT AVAILABLE */ 00195000 * IF ASIDFLAG='1'B THEN /* ASID NOT ACTIVE */ 00196000 * 01S0187 00197000 @RF00182 L @14,@PC00001+4 01S0187 00198000 TM ASIDFLAG(@14),B'10000000' 01S0187 00199000 BNO @RF00187 01S0187 00200000 * /***************************************************************/ 00201000 * /* */ 00202000 * /* ASID NOT ACTIVE */ 00203000 * /* */ 00204000 * /***************************************************************/ 00205000 * 01S0188 00206000 * DO; /* ASID NOT ACTIVE */ 00207000 * M001B=M001S; /* MESSAGE M001 LITERAL TEXT */ 00208000 MVC M001B(37),M001S 01S0189 00209000 * DO; /* BLRCNVUC(ASID) FROM(UNSIGNED B 00210000 * INARY)TO(CHARACTER)SET(M001BTB 00211000 * )PATTERN('402020202120'X)OPTIO 00212000 * NS(PATTERN IN 01S0190 00213000 * PLACE)REMARK(ADDRESS SPACE 00214000 * IDENTIFIER) */ 00215000 * 01S0190 00216000 * /***********************************************************/ 00217000 * /* */ 00218000 * /* ADDRESS SPACE IDENTIFIER */ 00219000 * /* */ 00220000 * /***********************************************************/ 00221000 * 01S0191 00222000 * CVD(ASID,PACKED); /* UNSIGNED BINARY=>PACKED 01S0191 00223000 * DECIMAL */ 00224000 CVD ASID,PACKED 01S0191 00225000 * ED(M001BTB,PACKED(41:64));/* PACKED DECIMAL=>EBCDIC */ 00226000 ED M001BTB(6),PACKED+5 01S0192 00227000 * END; /* BLRCNVUC(ASID) FROM(UNSIGNED B 00228000 * INARY)TO(CHARACTER)SET(M001BTB 00229000 * )PATTERN('402020202120'X)OPTIO 00230000 * NS(PATTERN IN 01S0193 00231000 * PLACE)REMARK(ADDRESS SPACE 00232000 * IDENTIFIER) */ 00233000 * CALL BLSUMPK1(ZZ2,M001B); /* COMPRESS MESSAGE M001 */ 00234000 ST R9,@AL00001 01S0194 00235000 LA @14,M001B 01S0194 00236000 ST @14,@AL00001+4 01S0194 00237000 L @10,ZZ2BVTP(,R9) 01S0194 00238000 L @15,BVTMPK1P(,@10) 01S0194 00239000 LA @01,@AL00001 01S0194 00240000 BALR @14,@15 01S0194 00241000 * CALL BLSUPUTV(ZZ2,M001B); /* TRANSMIT MESSAGE M001 */ 00242000 ST R9,@AL00001 01S0195 00243000 LA @14,M001B 01S0195 00244000 ST @14,@AL00001+4 01S0195 00245000 L @10,ZZ2BVTP(,R9) 01S0195 00246000 L @15,BVTPUTVP(,@10) 01S0195 00247000 LA @01,@AL00001 01S0195 00248000 BALR @14,@15 01S0195 00249000 * RETC=MAX(RF,ZZZFLAGS); /* RETURN CODE */ 00250000 LA RETC,12 01S0196 00251000 CR RETC,RF 01S0196 00252000 BNL *+6 00253000 LR RETC,RF 01S0196 00254000 * GO TO EXIT; /* COMMON EXIT PATH */ 00255000 B EXIT 01S0197 00256000 * END; /* ASID NOT ACTIVE */ 00257000 * ESBAAS=DATS; /* MASTER ADDRESS SPACE */ 00258000 @RF00187 MVC ESBAAS(16,ESBAPTR),DATS 01S0199 00259000 * ESBAAS1=ZZ6DQA1; /* PREFERRED CPU ADDRESS */ 00260000 L @14,ZZ2AZZ6P(,R9) 01S0200 00261000 MVC ESBAAS1(4,ESBAPTR),ZZ6DQA1(@14) 01S0200 00262000 * CALL BLSRSAGU(ZZ2,SAAU,ESBA); /* PROCESS SA RECORD */ 00263000 ST R9,@AL00001 01S0201 00264000 LA @14,SAAU 01S0201 00265000 ST @14,@AL00001+4 01S0201 00266000 ST ESBAPTR,@AL00001+8 01S0201 00267000 L @10,ZZ2RVTP(,R9) 01S0201 00268000 L @15,RVTSAGUP(,@10) 01S0201 00269000 LA @01,@AL00001 01S0201 00270000 BALR @14,@15 01S0201 00271000 * RETC=MAX(RETC,RF,SAAUSRC); /* RETURN CODE */ 00272000 LR @14,RF 01S0202 00273000 CR @14,RETC 01S0202 00274000 BNL *+6 00275000 LR @14,RETC 01S0202 00276000 SLR @10,@10 01S0202 00277000 IC @10,SAAUSRC 01S0202 00278000 CR @14,@10 01S0202 00279000 BNL *+6 00280000 LR @14,@10 01S0202 00281000 LR RETC,@14 01S0202 00282000 * IF RETC