cdc:nos2.source:opl.opl871:deck:sxmain
Deck SXMAIN
5 Modifications
Listing Sections
- Deck SXMAIN Start
- Deck SXMAIN Part 1 (Line 2191)
Source
Seq # *Modification Id* Act ----------------------------+ 00001 M01S00001.sxmain +++|PROC DOZER((EXPIRTIME)); 00002 M01S00002.sxmain +++| 00003 M01S00003.sxmain +++|# TITLE DOZER - PUT *SSEXEC* INTO RECALL. # 00004 M01S00004.sxmain +++| 00005 M01S00005.sxmain +++| BEGIN # DOZER # 00006 M01S00006.sxmain +++| 00007 M01S00007.sxmain +++|# 00008 M01S00008.sxmain +++|** DOZER - PUT *SSEXEC* INTO RECALL. 00009 M01S00009.sxmain +++|* 00010 M01S00010.sxmain +++|* *DOZER* ISSUES REPEATED *RECALL* REQUESTS UNTIL 00011 M01S00011.sxmain +++|* THE EXPIRATION TIME HAS BEEN REACHED, OR UNTIL 00012 M01S00012.sxmain +++|* ONE OF SEVERAL REACTIVATION CONDITIONS OCCURS. 00013 M01S00013.sxmain +++|* 00014 M01S00014.sxmain +++|* PROC DOZER((EXPIRTIME)) 00015 M01S00015.sxmain +++|* 00016 M01S00016.sxmain +++|* ENTRY (EXPIRTIME) = DELAY EXPIRATION TIME. 00017 M01S00017.sxmain +++|* 00018 M01S00018.sxmain +++|* EXIT ONE OF THE FOLLOWING CONDITIONS IS MET - 00019 M01S00019.sxmain +++|* 1. EXPIRATION TIME HAS BEEN REACHED. 00020 M01S00020.sxmain +++|* 2. THE *TDAM* BUFFER IS NOT EMPTY. 00021 M01S00021.sxmain +++|* 3. THE *UCP* BUFFER IS NOT EMPTY. 00022 M01S00022.sxmain +++|* 4. THE *K* DISPLAY BUFFER IS NOT EMPTY. 00023 M01S00023.sxmain +++|* 5. THE CPU DRIVER COMPLETE FLAG (*DRVRRECALL*) IS SET. 00024 M01S00024.sxmain +++|* 6. THE *IDLE* BIT IS SET. 00025 M01S00025.sxmain +++|* 7. THE STOM FILE IS NOT EMPTY. 00026 M01S00026.sxmain +++|# 00027 M01S00027.sxmain +++| 00028 M01S00028.sxmain +++| 00029 M01S00029.sxmain +++|# 00030 M01S00030.sxmain +++|**** PROC DOZER - XREF LIST BEGIN. 00031 M01S00031.sxmain +++|# 00032 M01S00032.sxmain +++| 00033 M01S00033.sxmain +++| XREF 00034 M01S00034.sxmain +++| BEGIN 00035 M01S00035.sxmain +++| PROC KCG; # KEEP COPIES GOING # 00036 M01S00036.sxmain +++| PROC RECALL; # SUSPEND PROCESSING # 00037 M01S00037.sxmain +++| PROC RTIME; # GET TIME SINCE LAST DEADSTART # 00038 M01S00038.sxmain +++| PROC SLAVERP; # CHECK SLAVE FILE # 00039 M01S00039.sxmain +++| END 00040 M01S00040.sxmain +++| 00041 M01S00041.sxmain +++|# 00042 M01S00042.sxmain +++|**** PROC DOZER - XREF LIST END. 00043 M01S00043.sxmain +++|# 00044 M01S00044.sxmain +++| 00045 M01S00045.sxmain +++| ITEM EXPIRTIME U; # EXPIRATION TIME # 00046 M01S00046.sxmain +++| 00047 M01S00047.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00048 M01S00048.sxmain +++|*CALL,COMBFAS 00049 M01S00049.sxmain +++|*CALL,COMBCHN 00050 M01S00050.sxmain +++|*CALL,COMBFET 00051 M01S00051.sxmain +++|*CALL,COMBKDD 00052 M01S00052.sxmain +++|*CALL,COMBUCR 00053 M01S00053.sxmain +++|*CALL,COMBUDT 00054 M01S00054.sxmain +++|*CALL,COMXCTF 00055 M01S00055.sxmain +++|*CALL,COMXIPR 00056 M01S00056.sxmain +++|*CALL,COMXJCA 00057 M01S00057.sxmain +++|*CALL,COMXMMF 00058 M01S00058.sxmain +++|*CALL,COMXMSC 00059 M01S00059.sxmain +++| 00060 M01S00060.sxmain +++| ITEM I U; # INDUCTION VARIABLE # 00061 M01S00061.sxmain +++| CONTROL EJECT; 00062 M01S00062.sxmain +++| 00063 M01S00063.sxmain +++|# 00064 M01S00064.sxmain +++|* ISSUE *RECALL* REQUESTS UNTIL EXPIRATION TIME, OR UNTIL 00065 M01S00065.sxmain +++|* ANOTHER CRITERIA FOR RESUMPTION OF PROCESSING IS MET. 00066 M01S00066.sxmain +++|# 00067 M01S00067.sxmain +++| 00068 M01S00068.sxmain +++| FASTFOR I = 0 WHILE RTIMSECS[0] LS EXPIRTIME 00069 M01S00069.sxmain +++| DO 00070 M01S00070.sxmain +++| BEGIN # ISSUE *RECALL* REQUESTS # 00071 M01S00071.sxmain +++| 00072 M01S00072.sxmain +++| RECALL(0); 00073 M01S00073.sxmain +++| 00074 M01S00074.sxmain +++| IF CHN$BOC[LCHN"KC$GOING"] NQ 0 00075 M01S00075.sxmain +++| THEN 00076 M01S00076.sxmain +++| BEGIN 00077 M01S00077.sxmain +++| KCG; 00078 M01S00078.sxmain +++| END 00079 M01S00079.sxmain +++| 00080 M01S00080.sxmain +++| IF (RA$TDAM[0] NQ 0 AND CHN$BOC[LCHN"RTD$FRSPC"] NQ 0) ## 00081 M01S00081.sxmain +++| OR RA$SSCINLK[0] ## 00082 M01S00082.sxmain +++| OR KB$CLEAR[0] NQ 0 ## 00083 M01S00083.sxmain +++| OR DRVRRECALL ## 00084 M01S00084.sxmain +++| OR CHN$BOC[LCHN"HL$PFMWAIT"] NQ 0 ## 00085 M01S00085.sxmain +++| OR CHN$BOC[LCHN"HL$DELAY"] NQ 0 ## 00086 M01S00086.sxmain +++| OR CHN$BOC[LCHN"LL$DELAY"] NQ 0 ## 00087 M01S00087.sxmain +++| OR RA$IDLEDWN[0] 00088 M01S00088.sxmain +++| THEN # RESUME *SSEXEC* ACTIVITY # 00089 M01S00089.sxmain +++| BEGIN 00090 M01S00090.sxmain +++| RETURN; 00091 M01S00091.sxmain +++| END 00092 M01S00092.sxmain +++| 00093 M01S00093.sxmain +++| RTIME(RTIMESTAT[0]); 00094 M01S00094.sxmain +++| 00095 M01S00095.sxmain +++|# 00096 M01S00096.sxmain +++|* PROCESS *SLAVE* REQUESTS. 00097 M01S00097.sxmain +++|# 00098 M01S00098.sxmain +++| 00099 M01S00099.sxmain +++| IF RTIMSECS[0] GQ STOM$EXPIR 00100 M01S00100.sxmain +++| 00101 M01S00101.sxmain +++| THEN 00102 M01S00102.sxmain +++| BEGIN 00103 M01S00103.sxmain +++| SLAVERP(EXPIRTIME); 00104 M01S00104.sxmain +++| END 00105 M01S00105.sxmain +++| 00106 M01S00106.sxmain +++| END # ISSUE *RECALL* REQUESTS # 00107 M01S00107.sxmain +++| 00108 M01S00108.sxmain +++| END # DOZER # 00109 M01S00109.sxmain +++| 00110 M01S00110.sxmain +++| TERM 00111 M01S00111.sxmain +++|PROC ENTDAM((TDAMIN),(NEWOK),TDAMOUT); 00112 M01S00112.sxmain +++| 00113 M01S00113.sxmain +++|# TITLE ENTDAM - ENTER NEW *TDAM* REQUEST FOR PROCESSING. # 00114 M01S00114.sxmain +++| 00115 M01S00115.sxmain +++| BEGIN # ENTDAM # 00116 M01S00116.sxmain +++| 00117 M01S00117.sxmain +++|# 00118 M01S00118.sxmain +++|** ENTDAM - ENTER NEW *TDAM* REQUEST FOR PROCESSING. 00119 M01S00119.sxmain +++|* 00120 M01S00120.sxmain +++|* *ENTDAM* ENTERS A NEW *TDAM* REQUEST FOR PROCESSING AS FOLLOWS: 00121 M01S00121.sxmain +++|* 1) FOR A STAGE REQUEST, IT SEARCHES THE *HLRQ* AND *RTRQ* CHAINS 00122 M01S00122.sxmain +++|* TO SEE IF THIS REQUEST HAS ALREADY BEEN ENTERED. 00123 M01S00123.sxmain +++|* 2) IF IT IS NOT A DUPLICATE OF A STAGE REQUEST, IF THE *NEWOK* 00124 M01S00124.sxmain +++|* PARAMETER ALLOWS IT, AND IF SPACE EXISTS IN THE *RTRQ* FREE 00125 M01S00125.sxmain +++|* SPACE CHAIN, THE *TDAM* ENTRY IS ADDED TO THE *RTRQ* CHAIN. 00126 M01S00126.sxmain +++|* 00127 M01S00127.sxmain +++|* ENTRY (TDAMIN) = LOCATION OF THE INCOMING *TDAM* REQUEST. 00128 M01S00128.sxmain +++|* (NEWOK) = 0, IT IS OK TO CREATE A NEW *RTRQ* ENTRY. 00129 M01S00129.sxmain +++|* 00130 M01S00130.sxmain +++|* EXIT (TDAMOUT) = LOCATION OF THE NEW OR DUPLICATE 00131 M01S00131.sxmain +++|* *TDAM* ENTRY. =0, IF NOT A DUPLICATE, AND 00132 M01S00132.sxmain +++|* A NEW *RTRQ* ENTRY WAS NOT CREATED. 00133 M01S00133.sxmain +++|* 00134 M01S00134.sxmain +++|# 00135 M01S00135.sxmain +++| 00136 M01S00136.sxmain +++| ITEM TDAMIN U; # LOCATION OF INCOMING *TDAM* 00137 M01S00137.sxmain +++| REQUEST # 00138 M01S00138.sxmain +++| ITEM NEWOK U; # CONTROLS CREATION OF NEW *RTRQ* 00139 M01S00139.sxmain +++| ENTRY # 00140 M01S00140.sxmain +++| ITEM TDAMOUT U; # LOCATION OF ACCEPTED *TDAM* 00141 M01S00141.sxmain +++| REQUEST # 00142 M01S00142.sxmain +++| 00143 M01S00143.sxmain +++|# 00144 M01S00144.sxmain +++|**** PROC ENTDAM - XREF LIST BEGIN. 00145 M01S00145.sxmain +++|# 00146 M01S00146.sxmain +++| 00147 M01S00147.sxmain +++| XREF 00148 M01S00148.sxmain +++| BEGIN 00149 M01S00149.sxmain +++| PROC ADD$LNK; # ADD ENTRY TO CHAIN # 00150 M01S00150.sxmain +++| PROC DEL$LNK; # DELETE ENTRY FROM CHAIN # 00151 M01S00151.sxmain +++| END 00152 M01S00152.sxmain +++| 00153 M01S00153.sxmain +++|# 00154 M01S00154.sxmain +++|**** PROC ENTDAM - XREF LIST END. 00155 M01S00155.sxmain +++|# 00156 M01S00156.sxmain +++| 00157 M01S00157.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00158 M01S00158.sxmain +++|*CALL,COMBFAS 00159 M01S00159.sxmain +++|*CALL,COMBCHN 00160 M01S00160.sxmain +++|*CALL,COMBTDM 00161 M01S00161.sxmain +++|*CALL,COMXHLR 00162 M01S00162.sxmain +++|*CALL,COMXJCA 00163 M01S00163.sxmain +++|*CALL,COMXMSC 00164 M01S00164.sxmain +++| 00165 M01S00165.sxmain +++| 00166 M01S00166.sxmain +++| ITEM ASAX U; # *ASA* VALUE FROM *TDAMIN* # 00167 M01S00167.sxmain +++| ITEM EVENTID U; # EVENT ID # 00168 M01S00168.sxmain +++| ITEM FAM C(7); # FAMILY FROM *TDAMIN* # 00169 M01S00169.sxmain +++| ITEM I I; # LOOP INDEX # 00170 M01S00170.sxmain +++| ITEM LINK U; # ADDRESS OF NEW CHAIN ENTRY # 00171 M01S00171.sxmain +++| ITEM OFFSET U; # INCREMENT TO GET TO *TDAM* ENTRY 00172 M01S00172.sxmain +++| FROM THE LINK ADDRESS # 00173 M01S00173.sxmain +++| ITEM SFX U; # SUBFAMILY INDEX FROM *TDAMIN* # 00174 M01S00174.sxmain +++| 00175 M01S00175.sxmain +++| BASED 00176 M01S00176.sxmain +++| ARRAY TDAMBUF [0:0] S(6); 00177 M01S00177.sxmain +++| BEGIN 00178 M01S00178.sxmain +++| ITEM TDAMBUF60 C(00,00,60); # *TDAM* REQUEST # 00179 M01S00179.sxmain +++| END 00180 M01S00180.sxmain +++| 00181 M01S00181.sxmain +++| CONTROL EJECT; 00182 M01S00182.sxmain +++| P<TDAM> = TDAMIN; 00183 M01S00183.sxmain +++| FAM = TDAMFAM[0]; 00184 M01S00184.sxmain +++| SFX = TDAMSBF[0]; 00185 M01S00185.sxmain +++| 00186 M01S00186.sxmain +++| P<ASA> = LOC(TDAMASA[0]); 00187 M01S00187.sxmain +++| ASAX = TDAMASA[0]; 00188 M01S00188.sxmain +++| 00189 M01S00189.sxmain +++| EVENTID = TDAMEVENT[0]; 00190 M01S00190.sxmain +++| 00191 M01S00191.sxmain +++|# 00192 M01S00192.sxmain +++|* SEARCH FOR DUPLICATE STAGE REQUEST IN *HLRQ* OR *RTRQ*. 00193 M01S00193.sxmain +++|# 00194 M01S00194.sxmain +++| 00195 M01S00195.sxmain +++| IF TDAMFC[0] EQ TDAMFCODE"STAGE" 00196 M01S00196.sxmain +++| THEN 00197 M01S00197.sxmain +++| BEGIN # SEARCH FOR DUPLICATE # 00198 M01S00198.sxmain +++| LINK = CHN$BOC[LCHN"HL$ACTV"]; 00199 M01S00199.sxmain +++| 00200 M01S00200.sxmain +++| REPEAT WHILE LINK NQ 0 00201 M01S00201.sxmain +++| DO 00202 M01S00202.sxmain +++| BEGIN # SEARCH HLRQ CHAIN # 00203 M01S00203.sxmain +++| P<HLRQ> = LINK; 00204 M01S00204.sxmain +++| P<TDAM> = LOC(HLR$TDAM[0]); 00205 M01S00205.sxmain +++| LINK = HLR$LNK2; 00206 M01S00206.sxmain +++| 00207 M01S00207.sxmain +++| IF FAM EQ TDAMFAM[0] ## 00208 M01S00208.sxmain +++| AND SFX EQ TDAMSBF[0] ## 00209 M01S00209.sxmain +++| AND ASAX EQ TDAMASA[0] 00210 M01S00210.sxmain +++| THEN # MATCH FOUND # 00211 M01S00211.sxmain +++| BEGIN 00212 M01S00212.sxmain +++| TDAMOUT = LOC(TDAM[0]); 00213 M01S00213.sxmain +++| 00214 M01S00214.sxmain +++| IF TDAMEVENT[0] EQ 0 00215 M01S00215.sxmain +++| THEN 00216 M01S00216.sxmain +++| BEGIN 00217 M01S00217.sxmain +++| TDAMEVENT[0] = EVENTID; 00218 M01S00218.sxmain +++| END 00219 M01S00219.sxmain +++| 00220 M01S00220.sxmain +++| RETURN; 00221 M01S00221.sxmain +++| END # MATCH MADE # 00222 M01S00222.sxmain +++| 00223 M01S00223.sxmain +++| END # SEARCH OF HLRQ CHAIN COMPLITE # 00224 M01S00224.sxmain +++| 00225 M01S00225.sxmain +++| LINK = CHN$BOC[LCHN"RTD$ACT"]; 00226 M01S00226.sxmain +++| 00227 M01S00227.sxmain +++| REPEAT WHILE LINK NQ 0 00228 M01S00228.sxmain +++| DO 00229 M01S00229.sxmain +++| BEGIN # SEARCH CHAIN # 00230 M01S00230.sxmain +++| P<TDAM> = LINK + 1; 00231 M01S00231.sxmain +++| P<LINKWRD> = LINK; 00232 M01S00232.sxmain +++| LINK = LINK$ADR[0]; 00233 M01S00233.sxmain +++| 00234 M01S00234.sxmain +++| IF FAM EQ TDAMFAM[0] ## 00235 M01S00235.sxmain +++| AND SFX EQ TDAMSBF[0] ## 00236 M01S00236.sxmain +++| AND ASAX EQ TDAMASA[0] 00237 M01S00237.sxmain +++| THEN # MATCH FOUND # 00238 M01S00238.sxmain +++| BEGIN 00239 M01S00239.sxmain +++| TDAMOUT = LOC(TDAM[0]); 00240 M01S00240.sxmain +++| IF TDAMEVENT[0] EQ 0 00241 M01S00241.sxmain +++| THEN 00242 M01S00242.sxmain +++| BEGIN 00243 M01S00243.sxmain +++| TDAMEVENT[0] = EVENTID; 00244 M01S00244.sxmain +++| END 00245 M01S00245.sxmain +++| 00246 M01S00246.sxmain +++| RETURN; 00247 M01S00247.sxmain +++| END 00248 M01S00248.sxmain +++| 00249 M01S00249.sxmain +++| END # SEARCH CHAIN # 00250 M01S00250.sxmain +++| 00251 M01S00251.sxmain +++| END # SEARCH FOR DUPLICATE # 00252 M01S00252.sxmain +++| 00253 M01S00253.sxmain +++|# 00254 M01S00254.sxmain +++|* IF OK, PLACE REQUEST IN A NEW *RTRQ* ENTRY. 00255 M01S00255.sxmain +++|# 00256 M01S00256.sxmain +++| 00257 M01S00257.sxmain +++| LINK = CHN$BOC[LCHN"RTD$FRSPC"]; 00258 M01S00258.sxmain +++| 00259 M01S00259.sxmain +++| IF (NEWOK EQ 0) ## 00260 M01S00260.sxmain +++| AND (LINK NQ 0) 00261 M01S00261.sxmain +++| THEN # ADD TO *RTRQ* # 00262 M01S00262.sxmain +++| BEGIN 00263 M01S00263.sxmain +++| TDAMOUT = LINK+1; 00264 M01S00264.sxmain +++| P<TDAM> = LINK+1; 00265 M01S00265.sxmain +++| DEL$LNK(LINK,LCHN"RTD$FRSPC",0); 00266 M01S00266.sxmain +++| ADD$LNK(LINK,LCHN"RTD$ACT",0); 00267 M01S00267.sxmain +++| P<TDAMBUF> = TDAMIN; 00268 M01S00268.sxmain +++| TDAMREQST[0] = TDAMBUF60[0]; 00269 M01S00269.sxmain +++| IF (TDAMFC[0] EQ TDAMFCODE"STAGE" ## 00270 M01S00270.sxmain +++| AND CHN$BOC[LCHN"HL$FRSPC"] NQ 0) ## 00271 M01S00271.sxmain +++| OR (TDAMFC[0] NQ TDAMFCODE"STAGE") 00272 M01S00272.sxmain +++| THEN 00273 M01S00273.sxmain +++| BEGIN 00274 M01S00274.sxmain +++| STG$MSK = 0; 00275 M01S00275.sxmain +++| END 00276 M01S00276.sxmain +++| 00277 M01S00277.sxmain +++| END 00278 M01S00278.sxmain +++| 00279 M01S00279.sxmain +++| ELSE 00280 M01S00280.sxmain +++| BEGIN 00281 M01S00281.sxmain +++| TDAMOUT = 0; 00282 M01S00282.sxmain +++| END 00283 M01S00283.sxmain +++| 00284 M01S00284.sxmain +++| RETURN; 00285 M01S00285.sxmain +++| END # ENTDAM # 00286 M01S00286.sxmain +++| 00287 M01S00287.sxmain +++| TERM 00288 M01S00288.sxmain +++|PROC FLUSHMS; 00289 M01S00289.sxmain +++| 00290 M01S00290.sxmain +++|# TITLE FLUSHMS - FLUSH THE *MTOS* BUFFERS. # 00291 M01S00291.sxmain +++| 00292 M01S00292.sxmain +++| BEGIN # FLUSHMS # 00293 M01S00293.sxmain +++| 00294 M01S00294.sxmain +++|# 00295 M01S00295.sxmain +++|** FLUSHMS - FLUSH THE *MTOS* BUFFERS. 00296 M01S00296.sxmain +++|* 00297 M01S00297.sxmain +++|* *FLUSHMS* IS CALLED TO UPDATE THE MASTER-TO-SLAVE 00298 M01S00298.sxmain +++|* (*MTOS*) COMMUNICATION FILE BY REWRITING THE *MTOS* 00299 M01S00299.sxmain +++|* FILE BUFFER TO THE LINK DEVICE. 00300 M01S00300.sxmain +++|* 00301 M01S00301.sxmain +++|* PROC FLUSHMS. 00302 M01S00302.sxmain +++|* 00303 M01S00303.sxmain +++|* ENTRY THE *FET* AND BUFFER FOR THE *MTOS* FILE 00304 M01S00304.sxmain +++|* ARE INITIALIZED. 00305 M01S00305.sxmain +++|* 00306 M01S00306.sxmain +++|* EXIT THE VARIABLE *MTOS$EXPIR* IS UPDATED TO 00307 M01S00307.sxmain +++|* INDICATE THE NEXT TIME THIS PROCEDURE SHOULD 00308 M01S00308.sxmain +++|* BE CALLED. IF THE *DRYUP* FLAG IS SET, OR 00309 M01S00309.sxmain +++|* IF NO SLAVE MAINFRAMES REMAIN DEFINED, *MTOS$EXPIR* 00310 M01S00310.sxmain +++|* IS SET TO A LARGE VALUE. 00311 M01S00311.sxmain +++|* 00312 M01S00312.sxmain +++|* MESSAGES 00313 M01S00313.sxmain +++| * EXEC SMF MODE - ALL SLAVES OMITTED.* 00314 M01S00314.sxmain +++|* A MESSAGE INDICATING THAT THE *SSEXEC* 00315 M01S00315.sxmain +++|* IS UNABLE TO COMMUNICATE WITH ANY *SSSLV* 00316 M01S00316.sxmain +++|* PROGRAM AND IS NOW RUNNING IN SINGLE 00317 M01S00317.sxmain +++|* MAINFRAME MODE. 00318 M01S00318.sxmain +++|* 00319 M01S00319.sxmain +++|# 00320 M01S00320.sxmain +++| 00321 M01S00321.sxmain +++| 00322 M01S00322.sxmain +++|# 00323 M01S00323.sxmain +++|**** PROC FLUSHMS - XREF LIST BEGIN. 00324 M01S00324.sxmain +++|# 00325 M01S00325.sxmain +++| 00326 M01S00326.sxmain +++| XREF 00327 M01S00327.sxmain +++| BEGIN 00328 M01S00328.sxmain +++| PROC MESSAGE; # ISSUE MESSAGE # 00329 M01S00329.sxmain +++| PROC PDATE; # GET PACKED DATE AND TIME # 00330 M01S00330.sxmain +++| PROC REWIND; # REWIND FILE # 00331 M01S00331.sxmain +++| PROC REWRITR; # REWRITE FILE # 00332 M01S00332.sxmain +++| PROC RTIME; # GET TIME SINCE DEADSTART # 00333 M01S00333.sxmain +++| END 00334 M01S00334.sxmain +++| 00335 M01S00335.sxmain +++|# 00336 M01S00336.sxmain +++|**** PROC FLUSHMS - XREF LIST END. 00337 M01S00337.sxmain +++|# 00338 M01S00338.sxmain +++| 00339 M01S00339.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00340 M01S00340.sxmain +++|*CALL,COMBFAS 00341 M01S00341.sxmain +++|*CALL,COMBFET 00342 M01S00342.sxmain +++|*CALL,COMXCTF 00343 M01S00343.sxmain +++|*CALL,COMXIPR 00344 M01S00344.sxmain +++|*CALL,COMXMMF 00345 M01S00345.sxmain +++| 00346 M01S00346.sxmain +++| 00347 M01S00347.sxmain +++| ARRAY MSGOMITALL [0:0] S(4); # SLAVE OMITTED MESSAGE # 00348 M01S00348.sxmain +++| BEGIN 00349 M01S00349.sxmain +++| ITEM MSGO$TEXT C(00,00,38) # MESSAGE TEXT # 00350 M01S00350.sxmain +++| = [" EXEC SMF MODE - ALL SLAVES OMITTED."]; 00351 M01S00351.sxmain +++| ITEM MSGO$EOL U(03,48,12) = [0]; # END OF LINE # 00352 M01S00352.sxmain +++| END 00353 M01S00353.sxmain +++| 00354 M01S00354.sxmain +++| 00355 M01S00355.sxmain +++| CONTROL EJECT; 00356 M01S00356.sxmain +++| 00357 M01S00357.sxmain +++|# 00358 M01S00358.sxmain +++|* UPDATE THE HEADER INFORMATION OF THE *MTOS* FILE. 00359 M01S00359.sxmain +++|# 00360 M01S00360.sxmain +++| 00361 M01S00361.sxmain +++| MSH$MWC[0] = MSH$MWC[0] + 1; 00362 M01S00362.sxmain +++| PDATE(PDATESTAT[0]); 00363 M01S00363.sxmain +++| MSH$PDATE[0] = PDATEV[0]; 00364 M01S00364.sxmain +++| 00365 M01S00365.sxmain +++|# 00366 M01S00366.sxmain +++|* SET UP THE TIME TO NEXT FLUSH THE *MTOS* BUFFERS. 00367 M01S00367.sxmain +++|# 00368 M01S00368.sxmain +++| 00369 M01S00369.sxmain +++| RTIME(RTIMESTAT[0]); 00370 M01S00370.sxmain +++| IF SLVACTIVE 00371 M01S00371.sxmain +++| THEN # USE SMALL DELAY # 00372 M01S00372.sxmain +++| BEGIN 00373 M01S00373.sxmain +++| MTOS$EXPIR = RTIMSECS[0] + SLRP$INTV; 00374 M01S00374.sxmain +++| END 00375 M01S00375.sxmain +++| 00376 M01S00376.sxmain +++| ELSE # USE LARGE DELAY # 00377 M01S00377.sxmain +++| BEGIN 00378 M01S00378.sxmain +++| MTOS$EXPIR = RTIMSECS[0] + SLAV$INTV; 00379 M01S00379.sxmain +++| END 00380 M01S00380.sxmain +++| 00381 M01S00381.sxmain +++| IF DRYUP OR SLAVECTR EQ 0 00382 M01S00382.sxmain +++| THEN 00383 M01S00383.sxmain +++| BEGIN 00384 M01S00384.sxmain +++| MTOS$EXPIR = MAXSECS; 00385 M01S00385.sxmain +++| MSH$IDLE[0] = TRUE; 00386 M01S00386.sxmain +++| END 00387 M01S00387.sxmain +++| 00388 M01S00388.sxmain +++| IF SLAVECTR EQ 0 00389 M01S00389.sxmain +++| THEN 00390 M01S00390.sxmain +++| BEGIN 00391 M01S00391.sxmain +++| MESSAGE(MSGOMITALL,SYSUDF1); 00392 M01S00392.sxmain +++| END 00393 M01S00393.sxmain +++| 00394 M01S00394.sxmain +++|# 00395 M01S00395.sxmain +++|* WRITE THE *MTOS* BUFFER TO THE *MTOS* FILE. 00396 M01S00396.sxmain +++|# 00397 M01S00397.sxmain +++| 00398 M01S00398.sxmain +++| REWIND(MTOSM,RCL); 00399 M01S00399.sxmain +++| P<FETSET> = LOC(MTOSM); 00400 M01S00400.sxmain +++| FET$OUT[0] = FET$FRST[0]; 00401 M01S00401.sxmain +++| FET$IN[0] = FET$FRST[0] + L$MTOS; 00402 M01S00402.sxmain +++| REWRITR(MTOSM,RCL); 00403 M01S00403.sxmain +++| RETURN; 00404 M01S00404.sxmain +++| END # FLUSHMS # 00405 M01S00405.sxmain +++| 00406 M01S00406.sxmain +++| TERM 00407 M01S00407.sxmain +++|PROC MAINLP; 00408 M01S00408.sxmain +++| 00409 M01S00409.sxmain +++|# TITLE MAINLP - MAIN LOOP OF *SSEXEC*. # 00410 M01S00410.sxmain +++| 00411 M01S00411.sxmain +++| BEGIN # MAINLP # 00412 M01S00412.sxmain +++| 00413 M01S00413.sxmain +++|# 00414 M01S00414.sxmain +++|** MAINLP - MAIN LOOP OF *SSEXEC*. 00415 M01S00415.sxmain +++|* 00416 M01S00416.sxmain +++|* *MAINLP* IS THE MAIN PROCESSING LOOP WHICH IS CALLED 00417 M01S00417.sxmain +++|* BY *MSASDIR*. 00418 M01S00418.sxmain +++|* 00419 M01S00419.sxmain +++|* PROC MAINLP 00420 M01S00420.sxmain +++|* 00421 M01S00421.sxmain +++|* ENTRY INITIALIZATION HAS BEEN PERFORMED. 00422 M01S00422.sxmain +++|* 00423 M01S00423.sxmain +++|* EXIT PROCESSING HAS BEEN TERMINATED IN RESPONSE 00424 M01S00424.sxmain +++|* TO THE *N.IDLE* COMMAND FROM THE CONSOLE 00425 M01S00425.sxmain +++|* OR BY A FATAL ERROR CONDITION. 00426 M01S00426.sxmain +++|# 00427 M01S00427.sxmain +++| 00428 M01S00428.sxmain +++|# 00429 M01S00429.sxmain +++|**** PROC MAINLP - XREF LIST BEGIN. 00430 M01S00430.sxmain +++|# 00431 M01S00431.sxmain +++| 00432 M01S00432.sxmain +++| XREF 00433 M01S00433.sxmain +++| BEGIN 00434 M01S00434.sxmain +++| PROC CKPFETC; # CHECK *UGET* COMPLETE # 00435 M01S00435.sxmain +++| PROC FLUSHMS; # FLUSH M-TO-S FILE # 00436 M01S00436.sxmain +++| PROC GETACT; # GET ACTIVITY COUNT # 00437 M01S00437.sxmain +++| PROC KCG; # KEEP COPIES GOING # 00438 M01S00438.sxmain +++| PROC KPROC; # *K* DISPLAY PROCESSOR # 00439 M01S00439.sxmain +++| PROC SSOVL; # LOAD *MSAS* OVERLAYS # 00440 M01S00440.sxmain +++| PROC RCLTEST; # PERFORM RECALL TEST # 00441 M01S00441.sxmain +++| PROC RTIME; # GET TIME SINCE LAST DEADSTART # 00442 M01S00442.sxmain +++| PROC RTRNBUF; # RETURN BUFFER SPACE # 00443 M01S00443.sxmain +++| PROC SCAN$LTCT; # SCAN THE *LTCT* # 00444 M01S00444.sxmain +++| PROC SLAVERP; # SLAVE REQUEST PROCESSOR # 00445 M01S00445.sxmain +++| PROC TERMTST; # PERFORM TEMINATION TEST # 00446 M01S00446.sxmain +++| PROC TRYTDAM; # SERVICE THE *TDAM* BUFFER # 00447 M01S00447.sxmain +++| PROC WAKE$UP; # REACTIVATE DELAYED PROCESSES # 00448 M01S00448.sxmain +++| END 00449 M01S00449.sxmain +++| 00450 M01S00450.sxmain +++|# 00451 M01S00451.sxmain +++|**** PROC MAINLP - XREF LIST END. 00452 M01S00452.sxmain +++|# 00453 M01S00453.sxmain +++| 00454 M01S00454.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00455 M01S00455.sxmain +++|*CALL,COMBFAS 00456 M01S00456.sxmain +++|*CALL,COMBCHN 00457 M01S00457.sxmain +++|*CALL,COMBCPR 00458 M01S00458.sxmain +++|*CALL,COMBOVL 00459 M01S00459.sxmain +++|*CALL,COMBTDM 00460 M01S00460.sxmain +++|*CALL,COMXCTF 00461 M01S00461.sxmain +++|*CALL,COMXJCA 00462 M01S00462.sxmain +++|*CALL,COMXMFD 00463 M01S00463.sxmain +++|*CALL,COMXMSC 00464 M01S00464.sxmain +++| 00465 M01S00465.sxmain +++| ITEM STAT I; # STATUS RETURN VALUE # 00466 M01S00466.sxmain +++| 00467 M01S00467.sxmain +++| CONTROL EJECT; 00468 M01S00468.sxmain +++| 00469 M01S00469.sxmain +++|# 00470 M01S00470.sxmain +++|* REPEAT MAIN LOOP UNTIL *TERMINATE* FLAG IS SET. 00471 M01S00471.sxmain +++|# 00472 M01S00472.sxmain +++| 00473 M01S00473.sxmain +++| TERMINATE = FALSE; 00474 M01S00474.sxmain +++| 00475 M01S00475.sxmain +++| REPEAT WHILE NOT TERMINATE 00476 M01S00476.sxmain +++| DO 00477 M01S00477.sxmain +++| BEGIN # MAIN PROCESSING LOOP # 00478 M01S00478.sxmain +++| 00479 M01S00479.sxmain +++|# 00480 M01S00480.sxmain +++|* SET *DRYUP* FLAG IF *IDLEDOWN* IS SET. 00481 M01S00481.sxmain +++|# 00482 M01S00482.sxmain +++| 00483 M01S00483.sxmain +++| DRYUP = RA$IDLEDWN[0]; 00484 M01S00484.sxmain +++| 00485 M01S00485.sxmain +++|# 00486 M01S00486.sxmain +++|* SERVICE THE *K* DISPLAY BUFFER. 00487 M01S00487.sxmain +++|# 00488 M01S00488.sxmain +++| 00489 M01S00489.sxmain +++| KPROC; 00490 M01S00490.sxmain +++| 00491 M01S00491.sxmain +++|# 00492 M01S00492.sxmain +++|* SERVICE THE *TDAM* BUFFER. 00493 M01S00493.sxmain +++|# 00494 M01S00494.sxmain +++| 00495 M01S00495.sxmain +++| IF RA$TDAM[0] NQ 0 ## 00496 M01S00496.sxmain +++| AND CHN$BOC[LCHN"RTD$FRSPC"] NQ 0 00497 M01S00497.sxmain +++| THEN 00498 M01S00498.sxmain +++| BEGIN 00499 M01S00499.sxmain +++| TRYTDAM; 00500 M01S00500.sxmain +++| END 00501 M01S00501.sxmain +++| 00502 M01S00502.sxmain +++|# 00503 M01S00503.sxmain +++|* PERIODICALLY SCAN *LTCT* FOR SWAPPED *UCP*-S. 00504 M01S00504.sxmain +++|# 00505 M01S00505.sxmain +++| 00506 M01S00506.sxmain +++| RTIME(RTIMESTAT[0]); 00507 M01S00507.sxmain +++| IF RTIMSECS[0] GQ UCP$EXPIR 00508 M01S00508.sxmain +++| THEN 00509 M01S00509.sxmain +++| BEGIN 00510 M01S00510.sxmain +++| SCAN$LTCT; 00511 M01S00511.sxmain +++| END 00512 M01S00512.sxmain +++| 00513 M01S00513.sxmain +++| 00514 M01S00514.sxmain +++| IF GLPFMFL 00515 M01S00515.sxmain +++| THEN 00516 M01S00516.sxmain +++| BEGIN 00517 M01S00517.sxmain +++| GOTO NEXTCHK; 00518 M01S00518.sxmain +++| END 00519 M01S00519.sxmain +++| 00520 M01S00520.sxmain +++|# 00521 M01S00521.sxmain +++|* TEST FOR REASON TO LOAD NEW WORK OVERLAY. 00522 M01S00522.sxmain +++|# 00523 M01S00523.sxmain +++| 00524 M01S00524.sxmain +++|# 00525 M01S00525.sxmain +++|* PERIODICALLY RECLAIM CATALOG AND SMA MAP INTERLOCKS. 00526 M01S00526.sxmain +++|# 00527 M01S00527.sxmain +++| 00528 M01S00528.sxmain +++| RTIME(RTIMESTAT[0]); 00529 M01S00529.sxmain +++| IF GLBINTLK AND RTIMSECS[0] GQ ITLK$EXPIR 00530 M01S00530.sxmain +++| THEN # RECLAIM CATALOG INTERLOCKS # 00531 M01S00531.sxmain +++| BEGIN 00532 M01S00532.sxmain +++| RCLMCAT = TRUE; 00533 M01S00533.sxmain +++| END 00534 M01S00534.sxmain +++| 00535 M01S00535.sxmain +++| IF MAPINTLK AND RTIMSECS[0] GQ MAP$EXPIR 00536 M01S00536.sxmain +++| THEN # RECLAIM SMA MAP INTERLOCKS # 00537 M01S00537.sxmain +++| BEGIN 00538 M01S00538.sxmain +++| RCLMMAP = TRUE; 00539 M01S00539.sxmain +++| END 00540 M01S00540.sxmain +++| 00541 M01S00541.sxmain +++| IF RCLMCAT OR RCLMMAP 00542 M01S00542.sxmain +++| THEN 00543 M01S00543.sxmain +++| BEGIN 00544 M01S00544.sxmain +++| SSOVL(LNEWWORK,0); # LOAD *NEWWORK* OVERLAY # 00545 M01S00545.sxmain +++| GOTO NEXTCHK; 00546 M01S00546.sxmain +++| END 00547 M01S00547.sxmain +++| 00548 M01S00548.sxmain +++|# 00549 M01S00549.sxmain +++|* CHECK FOR REQUEST IN *UCP* BUFFER WHICH CAN BE PROCESSED. 00550 M01S00550.sxmain +++|* IF THE REQUEST IS TYPE 4 OR AN UPDATE-UDT TYPE 5, THERE 00551 M01S00551.sxmain +++|* MUST BE AN AVAILABLE *LLRQ* ENTRY AND FULL INITIALIZATION 00552 M01S00552.sxmain +++|* MUST NOT BE IN PROGRESS. 00553 M01S00553.sxmain +++|# 00554 M01S00554.sxmain +++| 00555 M01S00555.sxmain +++| IF RA$SSCINLK[0] 00556 M01S00556.sxmain +++| THEN # *UCP* BUFFER CONTAINS REQUEST # 00557 M01S00557.sxmain +++| BEGIN # CHECK *UCP* REQUEST # 00558 M01S00558.sxmain +++| P<CPR> = RA$SSCAP[0] + 2; 00559 M01S00559.sxmain +++| 00560 M01S00560.sxmain +++| IF ((CPR$RQT[0] EQ TYP"TYP4" ## 00561 M01S00561.sxmain +++| OR (CPR$RQT[0] EQ TYP"TYP5" ## 00562 M01S00562.sxmain +++| AND CPR$RQC[0] EQ REQTYP5"SSA$UUDT")) ## 00563 M01S00563.sxmain +++| AND (CHN$BOC[LCHN"LL$FRSPC"] NQ 0 ## 00564 M01S00564.sxmain +++| AND NOT INITIALIZE)) ## 00565 M01S00565.sxmain +++| OR (CPR$RQT[0] NQ TYP"TYP4" ## 00566 M01S00566.sxmain +++| AND NOT (CPR$RQT[0] EQ TYP"TYP5" ## 00567 M01S00567.sxmain +++| AND CPR$RQC[0] EQ REQTYP5"SSA$UUDT")) 00568 M01S00568.sxmain +++| THEN # REQUEST CAN BE PROCESSED # 00569 M01S00569.sxmain +++| BEGIN 00570 M01S00570.sxmain +++| SSOVL(LNEWWORK,0); # LOAD *NEWWORK* OVERLAY # 00571 M01S00571.sxmain +++| GOTO NEXTCHK; 00572 M01S00572.sxmain +++| END 00573 M01S00573.sxmain +++| 00574 M01S00574.sxmain +++| END # CHECK *UCP* REQUEST # 00575 M01S00575.sxmain +++| 00576 M01S00576.sxmain +++|# 00577 M01S00577.sxmain +++|* CHECK IF DESTAGING IS TO BE INITIATED. 00578 M01S00578.sxmain +++|# 00579 M01S00579.sxmain +++| 00580 M01S00580.sxmain +++| IF (DSC$INIT NQ 0) ## 00581 M01S00581.sxmain +++| AND (NOT INITIALIZE) ## 00582 M01S00582.sxmain +++| AND (CHN$BOC[LCHN"HL$FRSPC"] NQ 0) 00583 M01S00583.sxmain +++| THEN 00584 M01S00584.sxmain +++| BEGIN 00585 M01S00585.sxmain +++| SSOVL(LNEWWORK,0); # LOAD *NEWWORK* OVERLAY # 00586 M01S00586.sxmain +++| GOTO NEXTCHK; 00587 M01S00587.sxmain +++| END 00588 M01S00588.sxmain +++| 00589 M01S00589.sxmain +++| 00590 M01S00590.sxmain +++|# 00591 M01S00591.sxmain +++|* CHECK *RTRQ* FOR *TDAM* REQUEST WHICH CAN BE PROCESSED. 00592 M01S00592.sxmain +++|# 00593 M01S00593.sxmain +++| 00594 M01S00594.sxmain +++| IF CHN$BOC[LCHN"RTD$ACT"] NQ 0 ## 00595 M01S00595.sxmain +++| AND (NOT INITIALIZE) ## 00596 M01S00596.sxmain +++| AND (STG$MSK EQ 0) 00597 M01S00597.sxmain +++| THEN # CAN PROCESS *TDAM* REQUESTS # 00598 M01S00598.sxmain +++| BEGIN 00599 M01S00599.sxmain +++| SSOVL(LNEWWORK,0); # LOAD *NEWWORK* OVERLAY # 00600 M01S00600.sxmain +++| GOTO NEXTCHK; 00601 M01S00601.sxmain +++| END 00602 M01S00602.sxmain +++| 00603 M01S00603.sxmain +++|# 00604 M01S00604.sxmain +++|* CHECK EXPIRATION TIME FOR PROCESSING *SLAVE* REQUESTS. 00605 M01S00605.sxmain +++|# 00606 M01S00606.sxmain +++| 00607 M01S00607.sxmain +++| 00608 M01S00608.sxmain +++|NEXTCHK: 00609 M01S00609.sxmain +++| RTIME(RTIMESTAT[0]); 00610 M01S00610.sxmain +++| IF RTIMSECS[0] GQ STOM$EXPIR ## 00611 M01S00611.sxmain +++| AND GLBDSFL 00612 M01S00612.sxmain +++| THEN # CAN ACCEPT SLAVE REQUESTS # 00613 M01S00613.sxmain +++| BEGIN 00614 M01S00614.sxmain +++| SLAVERP(0); 00615 M01S00615.sxmain +++| END 00616 M01S00616.sxmain +++| 00617 M01S00617.sxmain +++|# 00618 M01S00618.sxmain +++|* PERIODICALLY FLUSH MASTER-TO-SLAVE FILE. 00619 M01S00619.sxmain +++|# 00620 M01S00620.sxmain +++| 00621 M01S00621.sxmain +++| IF RTIMSECS[0] GQ MTOS$EXPIR 00622 M01S00622.sxmain +++| THEN 00623 M01S00623.sxmain +++| BEGIN 00624 M01S00624.sxmain +++| FLUSHMS; 00625 M01S00625.sxmain +++| END 00626 M01S00626.sxmain +++| 00627 M01S00627.sxmain +++|# 00628 M01S00628.sxmain +++|* CHECK FOR PFM REQUEST COMPLETE BEFORE PROCESSING 00629 M01S00629.sxmain +++|* MORE HLRQ REQUESTS. 00630 M01S00630.sxmain +++|# 00631 M01S00631.sxmain +++| 00632 M01S00632.sxmain +++| 00633 M01S00633.sxmain +++| IF GLPFMFL 00634 M01S00634.sxmain +++| THEN 00635 M01S00635.sxmain +++| BEGIN 00636 M01S00636.sxmain +++| CKPFETC(NAME[0],PFMSTAT);
Line S00637 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00637 M02S00637.sxmain3 ---| IF PFMSTAT LS 0
Line S00638 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00638 M02S00638.sxmain3 ---| THEN
Line S00639 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00639 M02S00639.sxmain3 ---| BEGIN # PFM REQUEST NOT COMPLETE #
Line S00640 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00640 M02S00640.sxmain3 ---| GLPFMFL = TRUE;
Line S00641 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00641 M02S00641.sxmain3 ---| END
Line S00642 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00642 M02S00642.sxmain3 ---|
Line S00643 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00643 M02S00643.sxmain3 ---| ELSE
Line S00644 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00644 M02S00644.sxmain3 ---| BEGIN # PFM REQUEST COMPLETE #
Line S00645 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00645 M02S00645.sxmain3 ---| GLPFMFL = FALSE;
Line S00646 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain3 |
Seq # *Modification Id* Act ----------------------------+ 00646 M02S00646.sxmain3 ---| END 00647 M01S00001.sxmain3 +++| GLPFMFL = PFMSTAT LS 0; # SET IF PFM REQUEST NOT COMPLETE # 00648 M01S00647.sxmain +++| END # PFM REQUEST COMPLETE # 00649 M01S00648.sxmain +++| 00650 M01S00649.sxmain +++| 00651 M01S00650.sxmain +++|# 00652 M01S00651.sxmain +++|* SERVICE HIGH LEVEL PROCESSES. 00653 M01S00652.sxmain +++|# 00654 M01S00653.sxmain +++| 00655 M01S00654.sxmain +++| IF CHN$BOC[LCHN"HL$DELAY"] NQ 0 00656 M01S00655.sxmain +++| THEN # *HLRQ* DELAY CHAIN POPULATED # 00657 M01S00656.sxmain +++| BEGIN 00658 M01S00657.sxmain +++| WAKE$UP; # REACTIVATE DELAYED PROCESSES # 00659 M01S00658.sxmain +++| END 00660 M01S00659.sxmain +++| 00661 M01S00660.sxmain +++| IF (NOT GLPFMFL) # PFM UGET/UREPLACE ACTIVE # 00662 M01S00661.sxmain +++| AND (NOT INITIALIZE) #DELAY DURING FULL INITIALIZATION # 00663 M01S00662.sxmain +++| AND ((CHN$BOC[LCHN"HL$READY"] NQ 0) ## 00664 M01S00663.sxmain +++| OR (CHN$BOC[LCHN"HL$PFMWAIT"] NQ 0)) 00665 M01S00664.sxmain +++| THEN # ADVANCE HIGH LEVEL REQUESTS # 00666 M01S00665.sxmain +++| BEGIN 00667 M01S00666.sxmain +++| SSOVL(LHLRQMTR,0); # LOAD *HLRQMTR* OVERLAY # 00668 M01S00667.sxmain +++| END 00669 M01S00668.sxmain +++| 00670 M01S00669.sxmain +++|# 00671 M01S00670.sxmain +++|* RETURN BUFFER SPACE IF POSSIBLE. 00672 M01S00671.sxmain +++|# 00673 M01S00672.sxmain +++| 00674 M01S00673.sxmain +++| IF GLBRTRNB 00675 M01S00674.sxmain +++| THEN 00676 M01S00675.sxmain +++| BEGIN # GLOBAL FLAG SET # 00677 M01S00676.sxmain +++| GETACT(STAT); 00678 M01S00677.sxmain +++| P<ACTSTAT> = LOC(STAT); 00679 M01S00678.sxmain +++| IF ACT$STCNT[0] EQ 0 00680 M01S00679.sxmain +++| THEN # NO CURRENT ACTIVITY # 00681 M01S00680.sxmain +++| BEGIN 00682 M01S00681.sxmain +++| RTRNBUF; 00683 M01S00682.sxmain +++| END 00684 M01S00683.sxmain +++| 00685 M01S00684.sxmain +++| END # GLOBAL FLAG SET # 00686 M01S00685.sxmain +++| 00687 M01S00686.sxmain +++|# 00688 M01S00687.sxmain +++|* SERVICE LOW LEVEL PROCESSES. 00689 M01S00688.sxmain +++|# 00690 M01S00689.sxmain +++| 00691 M01S00690.sxmain +++| IF CHN$BOC[LCHN"LL$DELAY"] NQ 0 00692 M01S00691.sxmain +++| THEN # *LLRQ* DELAY CHAIN POPULATED # 00693 M01S00692.sxmain +++| BEGIN 00694 M01S00693.sxmain +++| WAKE$UP; # REACTIVATE DELAYED PROCESSES # 00695 M01S00694.sxmain +++| END 00696 M01S00695.sxmain +++| 00697 M01S00696.sxmain +++| RTIME(RTIMESTAT[0]); 00698 M01S00697.sxmain +++| IF DRVRRECALL ## 00699 M01S00698.sxmain +++| OR (CHN$BOC[LCHN"LL$READY"] NQ 0) ## 00700 M01S00699.sxmain +++| THEN # LOW LEVEL REQUESTS TO ADVANCE # 00701 M01S00700.sxmain +++| BEGIN 00702 M01S00701.sxmain +++| SSOVL(LLLRQMTR,0); # LOAD *LLRQMTR* OVERLAY # 00703 M01S00702.sxmain +++| END 00704 M01S00703.sxmain +++| 00705 M01S00704.sxmain +++|# 00706 M01S00705.sxmain +++|* KEEP COPY OPERATIONS GOING. 00707 M01S00706.sxmain +++|# 00708 M01S00707.sxmain +++| 00709 M01S00708.sxmain +++| IF CHN$BOC[LCHN"KC$GOING"] NQ 0 00710 M01S00709.sxmain +++| THEN 00711 M01S00710.sxmain +++| BEGIN 00712 M01S00711.sxmain +++| KCG; 00713 M01S00712.sxmain +++| END 00714 M01S00713.sxmain +++| 00715 M01S00714.sxmain +++|# 00716 M01S00715.sxmain +++|* DETERMINE IF *SSEXEC* CAN GO INTO RECALL. 00717 M01S00716.sxmain +++|# 00718 M01S00717.sxmain +++| 00719 M01S00718.sxmain +++| RCLTEST; 00720 M01S00719.sxmain +++| 00721 M01S00720.sxmain +++|# 00722 M01S00721.sxmain +++|* CHECK *DRYUP* FLAG. 00723 M01S00722.sxmain +++|# 00724 M01S00723.sxmain +++| 00725 M01S00724.sxmain +++| IF DRYUP 00726 M01S00725.sxmain +++| THEN # DO TERMINATION TEST # 00727 M01S00726.sxmain +++| BEGIN 00728 M01S00727.sxmain +++| TERMTST; 00729 M01S00728.sxmain +++| END 00730 M01S00729.sxmain +++| 00731 M01S00730.sxmain +++| END # MAIN PROCESSING LOOP # 00732 M01S00731.sxmain +++| 00733 M01S00732.sxmain +++|# 00734 M01S00733.sxmain +++|* EXIT FROM MAIN LOOP. 00735 M01S00734.sxmain +++|# 00736 M01S00735.sxmain +++| 00737 M01S00736.sxmain +++| RETURN; 00738 M01S00737.sxmain +++| 00739 M01S00738.sxmain +++| END # MAINLP # 00740 M01S00739.sxmain +++| 00741 M01S00740.sxmain +++| TERM 00742 M01S00741.sxmain +++|PROC MNGMEM((MEMCHNG),RESP); 00743 M01S00742.sxmain +++| 00744 M01S00743.sxmain +++|# TITLE MNGMEM - MANAGE MEMORY. # 00745 M01S00744.sxmain +++| 00746 M01S00745.sxmain +++| BEGIN # MNGMEM # 00747 M01S00746.sxmain +++| 00748 M01S00747.sxmain +++|# 00749 M01S00748.sxmain +++|** MNGMEM - MANAGE MEMORY. 00750 M01S00749.sxmain +++|* 00751 M01S00750.sxmain +++|* *MNGMEM* PROCESSES REQUESTS FOR AN INCREASE OR DECREASE 00752 M01S00751.sxmain +++|* IN USABLE MEMORY. BASED ON THE CURRENT UNUSED MEMORY AND 00753 M01S00752.sxmain +++|* THE AMOUNT OF CHANGE REQUESTED, A *MEMORY* CALL IS MADE 00754 M01S00753.sxmain +++|* AND FIELD LENGTH VALUES ARE UPDATED. 00755 M01S00754.sxmain +++|* 00756 M01S00755.sxmain +++|* MNGMEM((MEMCHNG),RESP). 00757 M01S00756.sxmain +++|* 00758 M01S00757.sxmain +++|* ENTRY (MEMCHNG) = CHANGE IN MEMORY REQUESTED. 00759 M01S00758.sxmain +++|* 00760 M01S00759.sxmain +++|* EXIT (RESP) - RESPONSE TO MEMORY REQUEST. 00761 M01S00760.sxmain +++|* = 0, REQUEST DENIED. 00762 M01S00761.sxmain +++|* = OTHER, * FWA* OF NEW MEMORY BLOCK IF AN 00763 M01S00762.sxmain +++|* INCREASE IN MEMORY WAS REQUESTED. 00764 M01S00763.sxmain +++|# 00765 M01S00764.sxmain +++| 00766 M01S00765.sxmain +++| ITEM MEMCHNG I; # CHANGE IN MEMORY REQUESTED # 00767 M01S00766.sxmain +++| ITEM RESP U; # RESPONSE TO MEMORY REQUEST # 00768 M01S00767.sxmain +++| 00769 M01S00768.sxmain +++|# 00770 M01S00769.sxmain +++|**** PROC MNGMEM - XREF LIST BEGIN. 00771 M01S00770.sxmain +++|# 00772 M01S00771.sxmain +++| 00773 M01S00772.sxmain +++| XREF 00774 M01S00773.sxmain +++| BEGIN 00775 M01S00774.sxmain +++| PROC MEMORY; # REQUEST MEMORY CHANGE # 00776 M01S00775.sxmain +++| END 00777 M01S00776.sxmain +++| 00778 M01S00777.sxmain +++|# 00779 M01S00778.sxmain +++|**** PROC MNGMEM - XREF LIST END. 00780 M01S00779.sxmain +++|# 00781 M01S00780.sxmain +++| 00782 M01S00781.sxmain +++| DEF MEMAU #O"100"#; # MEMORY ALLOCATION UNIT # 00783 M01S00782.sxmain +++| 00784 M01S00783.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00785 M01S00784.sxmain +++|*CALL,COMBFAS 00786 M01S00785.sxmain +++|*CALL,COMXMSC 00787 M01S00786.sxmain +++| 00788 M01S00787.sxmain +++| ITEM AMTMEM I; # AMOUNT OF MEMORY NEEDED # 00789 M01S00788.sxmain +++| ITEM BLKMEM I; # MEMORY BLOCK SIZE # 00790 M01S00789.sxmain +++| 00791 M01S00790.sxmain +++| ARRAY MEMSTAT [0:0] P(1); # MEMORY REQUEST # 00792 M01S00791.sxmain +++| BEGIN 00793 M01S00792.sxmain +++| ITEM MEMVAL U(00,00,30); # NEW FIELD LENGTH VALUE # 00794 M01S00793.sxmain +++| END 00795 M01S00794.sxmain +++| 00796 M01S00795.sxmain +++| CONTROL EJECT; 00797 M01S00796.sxmain +++| 00798 M01S00797.sxmain +++|# 00799 M01S00798.sxmain +++|* CALCULATE SIZE OF FIELD LENGTH TO REQUEST. 00800 M01S00799.sxmain +++|# 00801 M01S00800.sxmain +++| 00802 M01S00801.sxmain +++| IF (MEMCHNG GQ 0 ## 00803 M01S00802.sxmain +++| AND MEMCHNG GR UNU$FL) ## 00804 M01S00803.sxmain +++| OR ((UNU$FL - MEMCHNG) GQ MEMAU) 00805 M01S00804.sxmain +++| THEN 00806 M01S00805.sxmain +++| BEGIN # MEMORY REQUEST NEEDED # 00807 M01S00806.sxmain +++| AMTMEM = MEMCHNG - UNU$FL; 00808 M01S00807.sxmain +++| IF AMTMEM GQ 0 00809 M01S00808.sxmain +++| THEN # IF *FL* TO BE INCREASED # 00810 M01S00809.sxmain +++| BEGIN 00811 M01S00810.sxmain +++| BLKMEM = (((AMTMEM - 1)/MEMAU) + 1) * MEMAU; 00812 M01S00811.sxmain +++| END 00813 M01S00812.sxmain +++| 00814 M01S00813.sxmain +++| ELSE # IF *FL* TO BE DECREASED # 00815 M01S00814.sxmain +++| BEGIN 00816 M01S00815.sxmain +++| BLKMEM = ((AMTMEM / MEMAU) * MEMAU); 00817 M01S00816.sxmain +++| END 00818 M01S00817.sxmain +++| 00819 M01S00818.sxmain +++| MEMVAL[0] = CUR$FL + BLKMEM; 00820 M01S00819.sxmain +++| 00821 M01S00820.sxmain +++|# 00822 M01S00821.sxmain +++|* REQUEST FIELD LENGTH CHANGE AND UPDATE RELEVANT VALUES. 00823 M01S00822.sxmain +++|# 00824 M01S00823.sxmain +++| 00825 M01S00824.sxmain +++| MEMORY("CM",MEMSTAT,RCL,NA); 00826 M01S00825.sxmain +++| IF MEMVAL[0] NQ (CUR$FL + BLKMEM) 00827 M01S00826.sxmain +++| THEN # IF MEMORY REQUEST DENIED # 00828 M01S00827.sxmain +++| BEGIN 00829 M01S00828.sxmain +++| RESP = 0; 00830 M01S00829.sxmain +++| RETURN; 00831 M01S00830.sxmain +++| END 00832 M01S00831.sxmain +++| 00833 M01S00832.sxmain +++| CUR$FL = MEMVAL[0]; # UPDATE *FL* VALUES # 00834 M01S00833.sxmain +++| NFLCHNG = NFLCHNG + 1; 00835 M01S00834.sxmain +++| IF CUR$FL GR MAX$FL 00836 M01S00835.sxmain +++| THEN # UPDATE MAXIMUM *FL* REACHED # 00837 M01S00836.sxmain +++| BEGIN 00838 M01S00837.sxmain +++| MAX$FL = CUR$FL; 00839 M01S00838.sxmain +++| END 00840 M01S00839.sxmain +++| 00841 M01S00840.sxmain +++| END # MEMORY REQUEST NEEDED # 00842 M01S00841.sxmain +++| 00843 M01S00842.sxmain +++| RESP = NEXTADR; # RETURN *FWA* OF MEMORY AREA TO 00844 M01S00843.sxmain +++| CALLER # 00845 M01S00844.sxmain +++| NEXTADR = NEXTADR + MEMCHNG; 00846 M01S00845.sxmain +++| UNU$FL = CUR$FL - NEXTADR; 00847 M01S00846.sxmain +++| RETURN; 00848 M01S00847.sxmain +++| END # MNGMEM # 00849 M01S00848.sxmain +++| 00850 M01S00849.sxmain +++| TERM 00851 M01S00850.sxmain +++|PROC MSASDIR; 00852 M01S00851.sxmain +++| 00853 M01S00852.sxmain +++|# TITLE MSASDIR - *SSEXEC* DIRECTOR. # 00854 M01S00853.sxmain +++| 00855 M01S00854.sxmain +++| BEGIN # MSASDIR # 00856 M01S00855.sxmain +++| 00857 M01S00856.sxmain +++|# 00858 M01S00857.sxmain +++|** MSASDIR - *SSEXEC* DIRECTOR. 00859 M01S00858.sxmain +++|* 00860 M01S00859.sxmain +++|* *MSASDIR* IS THE OVERALL DIRECTOR WHICH INITIATES 00861 M01S00860.sxmain +++|* THE MAJOR PHASES OF *SSEXEC* ACTIVITY. IF THE 00862 M01S00861.sxmain +++|* *MASTER/*SLAVE* FLAG IN *CMR* INDICATES *SLAVE* 00863 M01S00862.sxmain +++|* MODE, A JOB ADVANCE OCCURS AND *SSSLV* IS LOADED. 00864 M01S00863.sxmain +++|* *MSASDIR* CALLS *STARTUP* TO DO ALL INITIALIZATION, 00865 M01S00864.sxmain +++|* AND THEN CALLS *MAINLP* FROM WHICH ALL MAJOR PROCESSING 00866 M01S00865.sxmain +++|* ROUTINES ARE CALLED. WHEN TERMINATION CONDITIONS 00867 M01S00866.sxmain +++|* OCCUR, CONTROL RETURNS TO *MSASDIR*, WHICH THEN CALLS 00868 M01S00867.sxmain +++|* *WRAPUP* TO DO ALL NORMAL TERMINATION PROCESSING. 00869 M01S00868.sxmain +++|* 00870 M01S00869.sxmain +++|* PROC MSASDIR 00871 M01S00870.sxmain +++|* 00872 M01S00871.sxmain +++|* ENTRY CONTROL COMMAND PARAMETERS HAVE BEEN PLACED IN JOB 00873 M01S00872.sxmain +++|* COMMUNICATION AREA AND CONTROL REGISTER R1 IS SET 00874 M01S00873.sxmain +++|* TO 0 (INITIAL LOAD OF EXEC) OR *RESTART* (DEFINED 00875 M01S00874.sxmain +++|* IN *COMXMSC*). 00876 M01S00875.sxmain +++|* 00877 M01S00876.sxmain +++|* EXIT TERMINATION IS DUE TO ONE OF THE FOLLOWING 00878 M01S00877.sxmain +++|* 1. *MSAS* HAS BEEN TERMINATED NORMALLY VIA 00879 M01S00878.sxmain +++|* AN *N.IDLE* CONSOLE COMMAND. R1 IS UNCHANGED. 00880 M01S00879.sxmain +++|* 00881 M01S00880.sxmain +++|* MESSAGES 00882 M01S00881.sxmain +++|* * SSEXEC TERMINATING.*. 00883 M01S00882.sxmain +++|* * SLAVE MODE - LOADING SSSLV.*. 00884 M01S00883.sxmain +++|* * FATAL INITIALIZATION ERROR.*. 00885 M01S00884.sxmain +++|* * OPERATOR IDLE OF EXEC.*. 00886 M01S00885.sxmain +++|# 00887 M01S00886.sxmain +++| 00888 M01S00887.sxmain +++| 00889 M01S00888.sxmain +++|# 00890 M01S00889.sxmain +++|**** PROC MSASDIR - XREF LIST BEGIN. 00891 M01S00890.sxmain +++|# 00892 M01S00891.sxmain +++| 00893 M01S00892.sxmain +++| XREF 00894 M01S00893.sxmain +++| BEGIN 00895 M01S00894.sxmain +++| PROC ABORT; # CALLS *ABORT* MACRO # 00896 M01S00895.sxmain +++| PROC GETMI; # GET MACHINE INFORMATION # 00897 M01S00896.sxmain +++| PROC SSOVL; # LOAD *MSAS* OVERLAYS # 00898 M01S00897.sxmain +++| PROC MAINLP; # MAIN PROCESSING LOOP # 00899 M01S00898.sxmain +++| PROC MESSAGE; # ISSUE MESSAGE # 00900 M01S00899.sxmain +++| PROC STARTUP; # *SSEXEC* INITIALIZER # 00901 M01S00900.sxmain +++| END 00902 M01S00901.sxmain +++| 00903 M01S00902.sxmain +++|# 00904 M01S00903.sxmain +++|**** PROC MSASDIR - XREF LIST END. 00905 M01S00904.sxmain +++|# 00906 M01S00905.sxmain +++| 00907 M01S00906.sxmain +++| STATUS MSGTYPE # TYPE OF MESSAGE TO ISSUE # 00908 M01S00907.sxmain +++| HEADER, # MESSAGE HEADER # 00909 M01S00908.sxmain +++| SLAVE, # SLAVE MODE # 00910 M01S00909.sxmain +++| FATAL, # FATAL ERROR # 00911 M01S00910.sxmain +++| IDLE; # EXEC IDLED # 00912 M01S00911.sxmain +++| 00913 M01S00912.sxmain +++| CONTROL PRESET; 00914 M01S00913.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 00915 M01S00914.sxmain +++|*CALL,COMBFAS 00916 M01S00915.sxmain +++|*CALL,COMBCMD 00917 M01S00916.sxmain +++|*CALL,COMBKDA 00918 M01S00917.sxmain +++|*CALL,COMBMCT 00919 M01S00918.sxmain +++|*CALL,COMBOVL 00920 M01S00919.sxmain +++|*CALL,COMBTDM 00921 M01S00920.sxmain +++|*CALL,COMBUCR 00922 M01S00921.sxmain +++|*CALL,COMBUDT 00923 M01S00922.sxmain +++|*CALL,COMXCTF 00924 M01S00923.sxmain +++|*CALL,COMXIPR 00925 M01S00924.sxmain +++|*CALL,COMXMFD 00926 M01S00925.sxmain +++|*CALL,COMXMMF 00927 M01S00926.sxmain +++|*CALL,COMXMSC 00928 M01S00927.sxmain +++| 00929 M01S00928.sxmain +++| ITEM TERMTYPE S:MSGTYPE; # TERMINATION TYPE # 00930 M01S00929.sxmain +++| 00931 M01S00930.sxmain +++| ARRAY MSGLINE [0:3] S(4); # CONTAINS DAYFILE MESSAGES # 00932 M01S00931.sxmain +++| BEGIN 00933 M01S00932.sxmain +++| ITEM MSGITEM C(00,00,38)=[ # CHARACTER STRINGS # 00934 M01S00933.sxmain +++| "$SSEXEC TERMINATING.", 00935 M01S00934.sxmain +++| "$MSAS MASTER DISABLED - ABORT.", 00936 M01S00935.sxmain +++| "$FATAL INITIALIZATION ERROR.", 00937 M01S00936.sxmain +++| "$OPERATOR IDLE OF EXEC."]; 00938 M01S00937.sxmain +++| ITEM MSGZERO U(03,48,12)=[0]; # ZERO BYTE TERMINATOR # 00939 M01S00938.sxmain +++| END 00940 M01S00939.sxmain +++| 00941 M01S00940.sxmain +++| CONTROL EJECT; 00942 M01S00941.sxmain +++| 00943 M01S00942.sxmain +++|# 00944 M01S00943.sxmain +++|* CHECK FOR *MASTER* OR *SLAVE* MAINFRAME STATUS. 00945 M01S00944.sxmain +++|# 00946 M01S00945.sxmain +++| 00947 M01S00946.sxmain +++| GETMI(CMRINFO[0],EVENT); 00948 M01S00947.sxmain +++| IF CMR$SLAVE[0] 00949 M01S00948.sxmain +++| THEN # *SLAVE* MODE INDICATED # 00950 M01S00949.sxmain +++| BEGIN 00951 M01S00950.sxmain +++| FATALERR = TRUE; 00952 M01S00951.sxmain +++| TERMTYPE = S"SLAVE"; 00953 M01S00952.sxmain +++| GOTO ENDJOB; # CAUSE JOB ADVANCE # 00954 M01S00953.sxmain +++| END 00955 M01S00954.sxmain +++| 00956 M01S00955.sxmain +++|# 00957 M01S00956.sxmain +++|* PERFORM *SSEXEC* INITIALIZATION. 00958 M01S00957.sxmain +++|# 00959 M01S00958.sxmain +++| 00960 M01S00959.sxmain +++| STARTUP; 00961 M01S00960.sxmain +++| 00962 M01S00961.sxmain +++| IF FATALERR 00963 M01S00962.sxmain +++| THEN # FATAL ERROR IN INITIALIZATION # 00964 M01S00963.sxmain +++| BEGIN 00965 M01S00964.sxmain +++| TERMTYPE = S"FATAL"; 00966 M01S00965.sxmain +++| GOTO ENDJOB; 00967 M01S00966.sxmain +++| END 00968 M01S00967.sxmain +++| 00969 M01S00968.sxmain +++|# 00970 M01S00969.sxmain +++|* ENTER MAIN PROCESSING LOOP. 00971 M01S00970.sxmain +++|# 00972 M01S00971.sxmain +++| 00973 M01S00972.sxmain +++| MAINLP; 00974 M01S00973.sxmain +++| 00975 M01S00974.sxmain +++|# 00976 M01S00975.sxmain +++|* PERFORM TERMINATION PROCESSING. 00977 M01S00976.sxmain +++|# 00978 M01S00977.sxmain +++| 00979 M01S00978.sxmain +++| SSOVL(LWRAPUP,0); 00980 M01S00979.sxmain +++| TERMTYPE = S"IDLE"; 00981 M01S00980.sxmain +++| 00982 M01S00981.sxmain +++|# 00983 M01S00982.sxmain +++|* ISSUE TERMINATION MESSAGES AND ADVANCE TO NEXT JOB STEP. 00984 M01S00983.sxmain +++|# 00985 M01S00984.sxmain +++| 00986 M01S00985.sxmain +++|ENDJOB: 00987 M01S00986.sxmain +++| MESSAGE(MSGLINE[MSGTYPE"HEADER"],SYSUDF1); 00988 M01S00987.sxmain +++| MESSAGE(MSGLINE[TERMTYPE],SYSUDF1); 00989 M01S00988.sxmain +++| IF FATALERR 00990 M01S00989.sxmain +++| THEN 00991 M01S00990.sxmain +++| BEGIN 00992 M01S00991.sxmain +++| ABORT; 00993 M01S00992.sxmain +++| END 00994 M01S00993.sxmain +++| 00995 M01S00994.sxmain +++| RETURN; 00996 M01S00995.sxmain +++| END # MSASDIR # 00997 M01S00996.sxmain +++| 00998 M01S00997.sxmain +++| TERM 00999 M01S00998.sxmain +++|PROC NEWWORK; 01000 M01S00999.sxmain +++| 01001 M01S01000.sxmain +++|# TITLE NEWWORK - ACQUIRES NEW WORK FOR *SSEXEC* TO PROCESS. # 01002 M01S01001.sxmain +++| 01003 M01S01002.sxmain +++| BEGIN # NEWWORK # 01004 M01S01003.sxmain +++| 01005 M01S01004.sxmain +++|# 01006 M01S01005.sxmain +++|** NEWWORK - ACQUIRES NEW WORK FOR *SSEXEC* TO PROCESS. 01007 M01S01006.sxmain +++|* 01008 M01S01007.sxmain +++|* *NEWWORK* DETERMINES IF ANY NEW WORK EXISTS WHICH 01009 M01S01008.sxmain +++|* CAN BE ACCEPTED AT THIS TIME. FOR ANY ACCEPTABLE 01010 M01S01009.sxmain +++|* NEW WORK, THE APPROPRIATE REQUEST PROCESSOR IS CALLED 01011 M01S01010.sxmain +++|* (*UCP*, *TDAM*, *SLAVE*, *SCAN$LTCT*, AND/OR *SSMOVE* 01012 M01S01011.sxmain +++|* REQUEST PROCESSOR). IF EITHER *RCLMCAT* OR *RCLMMAP* 01013 M01S01012.sxmain +++|* (DEFINED IN *ECTFCOM*) IS TRUE, THEN THE *RCLMLK* OVERLAY 01014 M01S01013.sxmain +++|* IS LOADED TO RECLAIM CATALOG OR MAP INTERLOCKS. 01015 M01S01014.sxmain +++|* 01016 M01S01015.sxmain +++|* PROC NEWWORK 01017 M01S01016.sxmain +++|* 01018 M01S01017.sxmain +++|* ENTRY TEST FOR NEW WORK IN *MAINLP* IS SUCCESSFUL. 01019 M01S01018.sxmain +++|* 01020 M01S01019.sxmain +++|* EXIT NEW REQUESTS PROCESSED AS FAR AS POSSIBLE. 01021 M01S01020.sxmain +++|# 01022 M01S01021.sxmain +++| 01023 M01S01022.sxmain +++|# 01024 M01S01023.sxmain +++|**** PROC NEWWORK - XREF LIST BEGIN. 01025 M01S01024.sxmain +++|# 01026 M01S01025.sxmain +++| 01027 M01S01026.sxmain +++| XREF 01028 M01S01027.sxmain +++| BEGIN 01029 M01S01028.sxmain +++| PROC CRELSLK; # RELEASE CATALOG INTERLOCKS # 01030 M01S01029.sxmain +++| PROC DSNTDAM; # GET NEXT DESTAGE REQUEST # 01031 M01S01030.sxmain +++| PROC HLRQENQ; # BUILD *HLRQ* ENTRY # 01032 M01S01031.sxmain +++| PROC SSOVL; # LOAD *MSAS* OVERLAYS # 01033 M01S01032.sxmain +++| PROC MOVERP; # *SSMOVE* REQUEST PROCESSOR # 01034 M01S01033.sxmain +++| PROC SCAN$LTCT; # SCAN LONG TERM CONNECT TABLE # 01035 M01S01034.sxmain +++| PROC SLAVERP; # *SSSLV* REQUEST PROCESSOR # 01036 M01S01035.sxmain +++| PROC TDAM$RP; # *TDAM* REQUEST PROCESSOR # 01037 M01S01036.sxmain +++| PROC UCP$RES; # REPLY TO A *UCP* # 01038 M01S01037.sxmain +++| PROC UCP$RP; # *UCP* REQUEST PROCESSOR # 01039 M01S01038.sxmain +++| END 01040 M01S01039.sxmain +++| 01041 M01S01040.sxmain +++|# 01042 M01S01041.sxmain +++|**** PROC NEWWORK - XREF LIST END. 01043 M01S01042.sxmain +++|# 01044 M01S01043.sxmain +++| 01045 M01S01044.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01046 M01S01045.sxmain +++|*CALL,COMBFAS 01047 M01S01046.sxmain +++|*CALL,COMBCHN 01048 M01S01047.sxmain +++|*CALL,COMBCPR 01049 M01S01048.sxmain +++|*CALL,COMBOVL 01050 M01S01049.sxmain +++|*CALL,COMBTDM 01051 M01S01050.sxmain +++|*CALL COMBUDT 01052 M01S01051.sxmain +++|*CALL COMBUCR 01053 M01S01052.sxmain +++|*CALL,COMXCTF 01054 M01S01053.sxmain +++|*CALL,COMXHLR 01055 M01S01054.sxmain +++|*CALL,COMXJCA 01056 M01S01055.sxmain +++|*CALL,COMXLTC 01057 M01S01056.sxmain +++|*CALL,COMXMFD 01058 M01S01057.sxmain +++|*CALL,COMXMSC 01059 M01S01058.sxmain +++| 01060 M01S01059.sxmain +++| 01061 M01S01060.sxmain +++| 01062 M01S00001.sxmain1 +++| ITEM ACTIVEHLRQ I; # *HLRQ* COUNT # 01063 M01S01061.sxmain +++| ITEM HLRQADR U; # *HLRQ* ENTRY ADDRESS # 01064 M01S01062.sxmain +++| ITEM I I; # INDEX COUNTER # 01065 M01S00002.sxmain1 +++| ITEM LINK I; # LINK TO NEXT *HLRQ* # 01066 M01S01063.sxmain +++| ITEM STAT U; # STATUS # 01067 M01S01064.sxmain +++| CONTROL EJECT; 01068 M01S01065.sxmain +++| 01069 M01S01066.sxmain +++|# 01070 M01S01067.sxmain +++|* PROCESS *UCP* REQUESTS. ALL TYPE 4 REQUESTS AND ALL UPDATE-UDT 01071 M01S01068.sxmain +++|* TYPE 5 REQUESTS REQUIRE AN AVAILABLE *LLRQ* ENTRY. 01072 M01S01069.sxmain +++|# 01073 M01S01070.sxmain +++| 01074 M01S01071.sxmain +++| IF RA$SSCINLK[0] 01075 M01S01072.sxmain +++| THEN # *UCP* BUFFER CONTAINS REQUEST # 01076 M01S01073.sxmain +++| BEGIN # CHECK *UCP* REQUEST # 01077 M01S01074.sxmain +++| P<CPR> = RA$SSCAP[0] + 2; 01078 M01S01075.sxmain +++| 01079 M01S01076.sxmain +++| IF ((CPR$RQT[0] EQ TYP"TYP4") ## 01080 M01S01077.sxmain +++| OR ((CPR$RQT[0] EQ TYP"TYP5") ## 01081 M01S01078.sxmain +++| AND (CPR$RQC[0] EQ REQTYP5"SSA$UUDT")) ## 01082 M01S01079.sxmain +++| AND (CHN$BOC[LCHN"LL$FRSPC"] NQ 0)) ## 01083 M01S01080.sxmain +++| OR ((CPR$RQT[0] NQ TYP"TYP4") ## 01084 M01S01081.sxmain +++| AND ((CPR$RQT[0] NQ TYP"TYP5") ## 01085 M01S01082.sxmain +++| OR (CPR$RQC[0] NQ REQTYP5"SSA$UUDT"))) 01086 M01S01083.sxmain +++| THEN # REQUEST CAN BE PROCESSED # 01087 M01S01084.sxmain +++| BEGIN 01088 M01S01085.sxmain +++| UCP$RP; 01089 M01S01086.sxmain +++| END 01090 M01S01087.sxmain +++| 01091 M01S01088.sxmain +++| END # CHECK *UCP* REQUEST # 01092 M01S01089.sxmain +++| 01093 M01S01090.sxmain +++|# 01094 M01S01091.sxmain +++|* PROCESS ONLY UCP REQUESTS IF IN FULL INITIALIZATION. 01095 M01S01092.sxmain +++|# 01096 M01S01093.sxmain +++| 01097 M01S01094.sxmain +++| IF INITIALIZE 01098 M01S01095.sxmain +++| THEN # STOP REQUEST PROCESSING # 01099 M01S01096.sxmain +++| BEGIN # EXIT # 01100 M01S01097.sxmain +++| RETURN; 01101 M01S01098.sxmain +++| END # EXIT # 01102 M01S01099.sxmain +++| 01103 M01S01100.sxmain +++|# 01104 M01S01101.sxmain +++|* RECLAIM CATALOG OR MAP INTERLOCKS IF NECESSARY. 01105 M01S01102.sxmain +++|# 01106 M01S01103.sxmain +++| 01107 M01S01104.sxmain +++| IF RCLMCAT OR RCLMMAP 01108 M01S01105.sxmain +++| THEN # INTERLOCKS TO BE RECLAIMED # 01109 M01S01106.sxmain +++| BEGIN 01110 M01S01107.sxmain +++| SSOVL(LRCLMLK,0); 01111 M01S01108.sxmain +++| END 01112 M01S01109.sxmain +++| 01113 M01S01110.sxmain +++|# 01114 M01S01111.sxmain +++|* PROCESS *TDAM* REQUESTS. 01115 M01S01112.sxmain +++|# 01116 M01S01113.sxmain +++| 01117 M01S01114.sxmain +++| IF CHN$BOC[LCHN"RTD$ACT"] NQ 0 ## 01118 M01S01115.sxmain +++| AND (STG$MSK EQ 0) 01119 M01S01116.sxmain +++| THEN # REQUEST CAN BE PROCESSED # 01120 M01S01117.sxmain +++| BEGIN 01121 M01S01118.sxmain +++| TDAM$RP; 01122 M01S01119.sxmain +++| END 01123 M01S01120.sxmain +++| 01124 M01S01121.sxmain +++|# 01125 M01S01122.sxmain +++|* CHECK IF DESTAGING IS TO BE INITIATED. 01126 M01S01123.sxmain +++|# 01127 M01S01124.sxmain +++|
Line S01125 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01128 M02S01125.sxmain1 ---| STAT = 0;
Line S01126 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01129 M02S01126.sxmain1 ---| SLOWFOR I=1 STEP 1 UNTIL MAXSMUNIT
Line S01127 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01130 M02S01127.sxmain1 ---| DO
Line S01128 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01131 M02S01128.sxmain1 ---| BEGIN # CHECK FOR A DESTAGE SUBSPENDED #
Line S01129 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01132 M02S01129.sxmain1 ---| IF SM$EXIST[I]
Line S01130 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01133 M02S01130.sxmain1 ---| THEN
Line S01131 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01134 M02S01131.sxmain1 ---| BEGIN
Line S01132 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01135 M02S01132.sxmain1 ---| IF SM$DSRQF[I]
Line S01133 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01136 M02S01133.sxmain1 ---| THEN
Line S01134 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01137 M02S01134.sxmain1 ---| BEGIN # WAIT RESOURSE FREE UP #
Line S01135 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01138 M02S01135.sxmain1 ---| STAT = 1;
Line S01136 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01139 M02S01136.sxmain1 ---| GOTO SMFOUND;
Line S01137 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01140 M02S01137.sxmain1 ---| END
Line S01138 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01141 M02S01138.sxmain1 ---| END # END CHECK FOR DESTAGE SUBSPENDED #
Line S01139 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01142 M02S01139.sxmain1 ---| END
Line S01140 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01143 M02S01140.sxmain1 ---|
Line S01141 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01144 M02S01141.sxmain1 ---|SMFOUND: 01145 M01S00003.sxmain1 +++| IF DSC$INIT EQ 0 01146 M01S00004.sxmain1 +++| THEN 01147 M01S00005.sxmain1 +++| BEGIN 01148 M01S00006.sxmain1 +++| RETURN; 01149 M01S00007.sxmain1 +++| END 01150 M01S00008.sxmain1 +++| 01151 M01S00009.sxmain1 +++| ACTIVEHLRQ = 0; 01152 M01S00010.sxmain1 +++| LINK = CHN$BOC[LCHN"HL$ACTV"]; 01153 M01S00011.sxmain1 +++| 01154 M01S00012.sxmain1 +++| REPEAT WHILE LINK NQ 0 01155 M01S00013.sxmain1 +++| DO 01156 M01S00014.sxmain1 +++| BEGIN # SEARCH *HLRQ* CHAIN # 01157 M01S00015.sxmain1 +++| P<HLRQ> = LINK; 01158 M01S00016.sxmain1 +++| LINK = HLR$LNK2; 01159 M01S00017.sxmain1 +++| ACTIVEHLRQ = ACTIVEHLRQ + 1; 01160 M01S00018.sxmain1 +++| END # COUNT THE ACTIVE NUMBER OF *HLRQ-S* # 01161 M01S00019.sxmain1 +++| 01162 M01S00020.sxmain1 +++| IF ACTIVEHLRQ NQ 0 01163 M01S00021.sxmain1 +++| THEN 01164 M01S00022.sxmain1 +++| BEGIN # LET ONE OVER BUFFER COUNT START # 01165 M01S00023.sxmain1 +++| ACTIVEHLRQ = ACTIVEHLRQ - 1; 01166 M01S00024.sxmain1 +++| END 01167 M01S00025.sxmain1 +++| 01168 M01S00026.sxmain1 +++| IF ACTIVEHLRQ EQ MAX$ACHN 01169 M01S00027.sxmain1 +++| THEN 01170 M01S00028.sxmain1 +++| BEGIN 01171 M01S00029.sxmain1 +++| DSC$INIT = 0; 01172 M01S00030.sxmain1 +++| DSC$WRESRS = 1; 01173 M01S00031.sxmain1 +++| END 01174 M01S00032.sxmain1 +++| 01175 M01S01142.sxmain +++| IF (DSC$INIT NQ 0) ## 01176 M01S01143.sxmain +++| AND (CHN$BOC[LCHN"HL$FRSPC"] NQ 0) ##
Line S01144 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01177 M02S01144.sxmain1 ---| AND (STAT EQ 0) 01178 M01S01145.sxmain +++| THEN 01179 M01S01146.sxmain +++| BEGIN 01180 M01S01147.sxmain +++| 01181 M01S01148.sxmain +++| IF DSC$LKMSK NQ 0 01182 M01S01149.sxmain +++| THEN 01183 M01S01150.sxmain +++| BEGIN 01184 M01S01151.sxmain +++| CRELSLK(DSC$FAM,DSC$LKMSK,0,STAT); 01185 M01S01152.sxmain +++| DSC$LKMSK = 0; 01186 M01S01153.sxmain +++| END 01187 M01S01154.sxmain +++|
Line S01155 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | sxmain1 |
Seq # *Modification Id* Act ----------------------------+ 01188 M02S01155.sxmain1 ---| DSC$INIT = 0; 01189 M01S01156.sxmain +++| HLRQENQ(HLRQADR); 01190 M01S01157.sxmain +++| P<HLRQ> = HLRQADR; 01191 M01S01158.sxmain +++| HLR$HPN[0] = HLRPN"DESTAGE"; 01192 M01S01159.sxmain +++| HLR$RESP[0] = ERRST"NXTSUBF"; 01193 M01S01160.sxmain +++| 01194 M01S01161.sxmain +++| DSNTDAM(HLRQADR); 01195 M01S01162.sxmain +++| 01196 M01S01163.sxmain +++| P<TDAM> = LOC(HLR$TDAM[0]); 01197 M01S01164.sxmain +++| IF TDAMFC[0] EQ TDAMFCODE"NOREQ" 01198 M01S01165.sxmain +++| THEN # DONE WITH DESTAGING # 01199 M01S01166.sxmain +++| BEGIN 01200 M01S01167.sxmain +++| LTCENTRY = DSC$LTCT; 01201 M01S01168.sxmain +++| IF DSC$LTCT NQ 0 AND LTC$RQI[LTCENTRY] EQ REQNAME"RQIMOVE" 01202 M01S01169.sxmain +++| THEN # REPLY TO *SSMOVE* # 01203 M01S01170.sxmain +++| BEGIN 01204 M01S01171.sxmain +++| LTC$RQR[LTCENTRY] = RESPTYP2"OK2"; 01205 M01S01172.sxmain +++| UCP$RES; # NOTIFY *SSMOVE* # 01206 M01S01173.sxmain +++| DSC$LTCT = 0; 01207 M01S01174.sxmain +++| END 01208 M01S01175.sxmain +++| 01209 M01S01176.sxmain +++| STG$MSK = 0; 01210 M01S01177.sxmain +++| DSC$FAM = 0; 01211 M01S00033.sxmain1 +++| DSC$INIT = 0; 01212 M01S00034.sxmain1 +++| DSC$WRESRS = 0; 01213 M01S01178.sxmain +++| HLR$HPS[0] = PROCST"COMPLETE"; 01214 M01S01179.sxmain +++| END 01215 M01S01180.sxmain +++| 01216 M01S01181.sxmain +++| END 01217 M01S01182.sxmain +++| 01218 M01S01183.sxmain +++| 01219 M01S01184.sxmain +++| RETURN; 01220 M01S01185.sxmain +++| END # NEWWORK # 01221 M01S01186.sxmain +++| 01222 M01S01187.sxmain +++| TERM 01223 M01S01188.sxmain +++|PROC RCLTEST; 01224 M01S01189.sxmain +++| 01225 M01S01190.sxmain +++|# TITLE RCLTEST - TESTS RECALL CRITERIA FOR *SSEXEC*. # 01226 M01S01191.sxmain +++| 01227 M01S01192.sxmain +++| BEGIN # RCLTEST # 01228 M01S01193.sxmain +++| 01229 M01S01194.sxmain +++|# 01230 M01S01195.sxmain +++|** RCLTEST - TESTS RECALL CRITERIA FOR *SSEXEC*. 01231 M01S01196.sxmain +++|* 01232 M01S01197.sxmain +++|* *RCLTEST* CHECKS WHETHER THE CRITERIA FOR 01233 M01S01198.sxmain +++|* PUTTING *SSEXEC* INTO RECALL ARE MET. IF THE 01234 M01S01199.sxmain +++|* EARLIEST EXPIRATION TIME EXCEEDS A DEFINED 01235 M01S01200.sxmain +++|* THRESHOLD (*SWAPTHRESH*), *SSEXEC* ALSO REDUCES 01236 M01S01201.sxmain +++|* ITS FIELD LENGTH BEFORE GOING INTO RECALL. 01237 M01S01202.sxmain +++|* 01238 M01S01203.sxmain +++|* PROC RCLTEST 01239 M01S01204.sxmain +++|* 01240 M01S01205.sxmain +++|* ENTRY CALLED UNCONDITIONALLY BY *MAINLP* EACH 01241 M01S01206.sxmain +++|* TIME THROUGH THE LOOP. 01242 M01S01207.sxmain +++|* 01243 M01S01208.sxmain +++|* EXIT CRITERIA FOR RECALL ARE NOT MET, EXPIRATION 01244 M01S01209.sxmain +++|* TIME HAS BEEN REACHED, OR A CONDITION FOR 01245 M01S01210.sxmain +++|* RESUMING ACTIVITY HAS BEEN SATISFIED. 01246 M01S01211.sxmain +++|# 01247 M01S01212.sxmain +++| 01248 M01S01213.sxmain +++|# 01249 M01S01214.sxmain +++|**** PROC RCLTEST - XREF LIST BEGIN. 01250 M01S01215.sxmain +++|# 01251 M01S01216.sxmain +++| 01252 M01S01217.sxmain +++| XREF 01253 M01S01218.sxmain +++| BEGIN 01254 M01S01219.sxmain +++| PROC DOZER; # PUT *SSEXEC* INTO RECALL # 01255 M01S01220.sxmain +++| PROC GETACT; # GET ACTIVITY COUNT # 01256 M01S01221.sxmain +++| PROC RTIME; # GET TIME SINCE LAST DEADSTART # 01257 M01S01222.sxmain +++| PROC SWAPPER; # REDUCE FIELD LENGTH OF *SSEXEC* 01258 M01S01223.sxmain +++| # 01259 M01S01224.sxmain +++| END 01260 M01S01225.sxmain +++| 01261 M01S01226.sxmain +++|# 01262 M01S01227.sxmain +++|**** PROC RCLTEST - XREF LIST END. 01263 M01S01228.sxmain +++|# 01264 M01S01229.sxmain +++| 01265 M01S01230.sxmain +++| 01266 M01S01231.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01267 M01S01232.sxmain +++|*CALL,COMBFAS 01268 M01S01233.sxmain +++|*CALL,COMBCHN 01269 M01S01234.sxmain +++|*CALL,COMBKDA 01270 M01S01235.sxmain +++|*CALL,COMBKDD 01271 M01S01236.sxmain +++|*CALL,COMBTDM 01272 M01S01237.sxmain +++|*CALL,COMBUDT 01273 M01S01238.sxmain +++|*CALL,COMXCTF 01274 M01S01239.sxmain +++|*CALL,COMXIPR 01275 M01S01240.sxmain +++|*CALL,COMXJCA 01276 M01S01241.sxmain +++|*CALL,COMXMFD 01277 M01S01242.sxmain +++|*CALL,COMXMSC 01278 M01S01243.sxmain +++| 01279 M01S00001.msea025 +++| ITEM I U; # COUNTER # 01280 M01S00002.msea025 +++| ITEM J U; # COUNTER # 01281 M01S01244.sxmain +++| ITEM EXPIRTIME U; # EXPIRATION TIME # 01282 M01S01245.sxmain +++| ITEM PPUSTAT U; # STATUS FROM *GETACT* # 01283 M01S01246.sxmain +++| 01284 M01S01247.sxmain +++| CONTROL EJECT; 01285 M01S01248.sxmain +++| 01286 M01S01249.sxmain +++|# 01287 M01S01250.sxmain +++|* RETURN IF THERE IS WORK TO BE DONE. 01288 M01S01251.sxmain +++|# 01289 M01S01252.sxmain +++| 01290 M01S01253.sxmain +++| IF (RA$TDAM[0] NQ 0 AND CHN$BOC[LCHN"RTD$FRSPC"] NQ 0) ## 01291 M01S01254.sxmain +++| OR RA$SSCINLK ## 01292 M01S01255.sxmain +++| OR KB$CLEAR[0] NQ 0 ## 01293 M01S01256.sxmain +++| OR DRVRRECALL 01294 M01S01257.sxmain +++| THEN 01295 M01S01258.sxmain +++| BEGIN 01296 M01S01259.sxmain +++| RETURN; 01297 M01S01260.sxmain +++| END 01298 M01S01261.sxmain +++| 01299 M01S01262.sxmain +++| IF (CHN$BOC[LCHN"RTD$ACT"] NQ 0 AND STG$MSK EQ 0 ## 01300 M01S01263.sxmain +++| AND NOT INITIALIZE) ## 01301 M01S01264.sxmain +++| OR (DSC$INIT NQ 0 AND CHN$BOC[LCHN"HL$FRSPC"] NQ 0 ## 01302 M01S01265.sxmain +++| AND NOT INITIALIZE) ## 01303 M01S01266.sxmain +++| OR CHN$BOC[LCHN"HL$READY"] NQ 0 ## 01304 M01S01267.sxmain +++| OR CHN$BOC[LCHN"LL$READY"] NQ 0 01305 M01S01268.sxmain +++| THEN # ACTIVE CHAINS NOT ALL EMPTY # 01306 M01S01269.sxmain +++| BEGIN 01307 M01S01270.sxmain +++| RETURN; 01308 M01S01271.sxmain +++| END 01309 M01S01272.sxmain +++| 01310 M01S01273.sxmain +++|# 01311 M01S01274.sxmain +++|* CALCULATE RECALL EXPIRATION AS THE MINIMUM OF VARIOUS 01312 M01S01275.sxmain +++|* OTHER EXPIRATION TIMES. 01313 M01S01276.sxmain +++|# 01314 M01S01277.sxmain +++| 01315 M01S01278.sxmain +++| EXPIRTIME = MAXTIME; 01316 M01S01279.sxmain +++| IF MINQ$EXPIR GR 0 01317 M01S01280.sxmain +++| THEN 01318 M01S01281.sxmain +++| BEGIN 01319 M01S01282.sxmain +++| EXPIRTIME = MINQ$EXPIR; 01320 M01S01283.sxmain +++| END 01321 M01S01284.sxmain +++| 01322 M01S01285.sxmain +++| IF ITLK$EXPIR GR 0 ## 01323 M01S01286.sxmain +++| AND ITLK$EXPIR LS EXPIRTIME 01324 M01S01287.sxmain +++| THEN 01325 M01S01288.sxmain +++| BEGIN 01326 M01S01289.sxmain +++| EXPIRTIME = ITLK$EXPIR; 01327 M01S01290.sxmain +++| END 01328 M01S01291.sxmain +++| 01329 M01S01292.sxmain +++| IF MAP$EXPIR GR 0 AND MAP$EXPIR LS EXPIRTIME 01330 M01S01293.sxmain +++| THEN 01331 M01S01294.sxmain +++| BEGIN 01332 M01S01295.sxmain +++| EXPIRTIME = MAP$EXPIR; 01333 M01S01296.sxmain +++| END 01334 M01S01297.sxmain +++| 01335 M01S01298.sxmain +++| IF UCP$EXPIR GR 0 ## 01336 M01S01299.sxmain +++| AND UCP$EXPIR LS EXPIRTIME 01337 M01S01300.sxmain +++| THEN 01338 M01S01301.sxmain +++| BEGIN 01339 M01S01302.sxmain +++| EXPIRTIME = UCP$EXPIR; 01340 M01S01303.sxmain +++| END 01341 M01S01304.sxmain +++| 01342 M01S01305.sxmain +++| IF KDIS$EXPIR GR 0 ## 01343 M01S01306.sxmain +++| AND KDIS$EXPIR LS EXPIRTIME 01344 M01S01307.sxmain +++| THEN 01345 M01S01308.sxmain +++| BEGIN 01346 M01S01309.sxmain +++| EXPIRTIME = KDIS$EXPIR; 01347 M01S01310.sxmain +++| END 01348 M01S01311.sxmain +++| 01349 M01S00035.sxmain1 +++| IF KSM$EXPIR GR 0 ## 01350 M01S00036.sxmain1 +++| AND KSM$EXPIR LS EXPIRTIME 01351 M01S00037.sxmain1 +++| THEN # SM DISPLAY UP # 01352 M01S00038.sxmain1 +++| BEGIN # PRESERVE # 01353 M01S00039.sxmain1 +++| EXPIRTIME = KSM$EXPIR; 01354 M01S00040.sxmain1 +++| END # PRESERVE # 01355 M01S00041.sxmain1 +++| 01356 M01S01312.sxmain +++|# 01357 M01S01313.sxmain +++|* PUT *SSEXEC* INTO RECALL. IF THE EXPIRATION TIME EXCEEDS A 01358 M01S01314.sxmain +++|* THRESHOLD, NO PP IS ACTIVE, THE * REQUEST K-DISPLAY* MESSAGE 01359 M01S01315.sxmain +++|* IS NOT ON THE *B-DISPLAY* AND NO CONNECTED *UCP*-S ARE SWAPPED 01360 M01S01316.sxmain +++|* OUT, REDUCE FIELD LENGTH FIRST. 01361 M01S01317.sxmain +++|# 01362 M01S01318.sxmain +++| 01363 M01S01319.sxmain +++| RTIME(RTIMESTAT[0]); 01364 M01S01320.sxmain +++| 01365 M01S01321.sxmain +++| IF (EXPIRTIME - RTIMSECS[0] GR SWAPTHRESH) ## 01366 M01S01322.sxmain +++| AND (NOT DRVRRECALL) ## 01367 M01S01323.sxmain +++| AND KREQCLEAR ## 01368 M01S01324.sxmain +++| AND (NOT GLBUCPSW) ## 01369 M01S01325.sxmain +++| AND CHN$BOC[LCHN"HL$ACTV"] EQ 0 01370 M01S01326.sxmain +++| 01371 M01S01327.sxmain +++| THEN 01372 M01S01328.sxmain +++| BEGIN 01373 M01S00003.msea025 +++| IF (DSC$INIT EQ 0) 01374 M01S00004.msea025 +++| AND (DSC$WRESRS EQ 1) 01375 M01S00005.msea025 +++| THEN 01376 M01S00006.msea025 +++| BEGIN 01377 M01S00007.msea025 +++| DSC$INIT = 1; 01378 M01S00008.msea025 +++| DSC$WRESRS = 0; 01379 M01S00009.msea025 +++| SLOWFOR I = 1STEP 1 UNTIL MAXSMUNIT 01380 M01S00010.msea025 +++| DO 01381 M01S00011.msea025 +++| BEGIN 01382 M01S00012.msea025 +++| SM$DSRFW[I] = 0; 01383 M01S00013.msea025 +++| END 01384 M01S00014.msea025 +++| SLOWFOR J = 0 STEP 1 UNTIL MAXSF 01385 M01S00015.msea025 +++| DO 01386 M01S00016.msea025 +++| BEGIN 01387 M01S00017.msea025 +++| SCR$WTDRD[J] = FALSE; 01388 M01S00018.msea025 +++| END 01389 M01S00019.msea025 +++| END 01390 M01S01329.sxmain +++| GETACT(PPUSTAT); # CHECK FOR ACTIVE PPU # 01391 M01S01330.sxmain +++| P<ACTSTAT> = LOC(PPUSTAT);
Line S01331 Modification History | |
---|---|
M01 (Added by) | sxmain |
M02 (Updated by) | msea025 |
Seq # *Modification Id* Act ----------------------------+ 01392 M02S01331.msea025 ---| IF ACT$STCNT[0] EQ 0 01393 M01S00020.msea025 +++| IF (ACT$STCNT[0] EQ 0) 01394 M01S00021.msea025 +++| AND (DSC$INIT EQ 0) 01395 M01S01332.sxmain +++| THEN # NO ACTIVE PPU # 01396 M01S01333.sxmain +++| BEGIN 01397 M01S01334.sxmain +++| SWAPPER(EXPIRTIME); # REDUCE FIELD LENGTH AND RECALL # 01398 M01S01335.sxmain +++| RETURN; 01399 M01S01336.sxmain +++| END 01400 M01S01337.sxmain +++| 01401 M01S01338.sxmain +++| ELSE # PPU STILL ACTIVE # 01402 M01S01339.sxmain +++| BEGIN 01403 M01S01340.sxmain +++| EXPIRTIME = RTIMSECS[0] + SWAPTHRESH; 01404 M01S01341.sxmain +++| END 01405 M01S01342.sxmain +++| 01406 M01S01343.sxmain +++| END 01407 M01S01344.sxmain +++| 01408 M01S01345.sxmain +++| DOZER(EXPIRTIME); # ISSUE RECALL REQUEST # 01409 M01S01346.sxmain +++| 01410 M01S01347.sxmain +++| RETURN; 01411 M01S01348.sxmain +++| END # RCLTEST # 01412 M01S01349.sxmain +++| 01413 M01S01350.sxmain +++| TERM 01414 M01S01351.sxmain +++|PROC RCLMLK; 01415 M01S01352.sxmain +++| 01416 M01S01353.sxmain +++|# TITLE RCLMLK - RECLAIM INTERLOCKED CATALOGS AND MAPS. # 01417 M01S01354.sxmain +++| 01418 M01S01355.sxmain +++| BEGIN # RCLMLK # 01419 M01S01356.sxmain +++| 01420 M01S01357.sxmain +++|# 01421 M01S01358.sxmain +++|** RCLMLK - RECLAIM INTERLOCKED CATALOGS AND MAPS. 01422 M01S01359.sxmain +++|* 01423 M01S01360.sxmain +++|* *RCLMLK* RECLAIMS INTERLOCKED CATALOGS AND/OR SMA MAPS. 01424 M01S01361.sxmain +++|* 01425 M01S01362.sxmain +++|* PROC RCLMLK 01426 M01S01363.sxmain +++|* 01427 M01S01364.sxmain +++|* ENTRY (RCLMCAT) - RECLAIM CATALOG INTERLOCKS FLAG 01428 M01S01365.sxmain +++|* (DEFINED IN *ECTFCOM*). 01429 M01S01366.sxmain +++|* = TRUE, RECLAIM CATALOGS. 01430 M01S01367.sxmain +++|* = FALSE, DO NOT RECLAIM CATALOGS. 01431 M01S01368.sxmain +++|* (RCLMMAP) - RECLAIM SMA MAP INTERLOCKS FLAG 01432 M01S01369.sxmain +++|* (DEFINED IN *ECTFCOM*). 01433 M01S01370.sxmain +++|* = TRUE, RECLAIM MAPS. 01434 M01S01371.sxmain +++|* = FALSE, DO NOT RECLAIM MAPS. 01435 M01S01372.sxmain +++|* 01436 M01S01373.sxmain +++|* EXIT CATALOG AND/OR MAP INTERLOCKS HAVE BEEN RECLAIMED, AND 01437 M01S01374.sxmain +++|* EXPIRATION TIMES HAVE BEEN ADJUSTED IF NECESSARY. 01438 M01S01375.sxmain +++|* 01439 M01S01376.sxmain +++|* MESSAGES * EXEC ABNORMAL, RCLMLK.*. 01440 M01S01377.sxmain +++|# 01441 M01S01378.sxmain +++| 01442 M01S01379.sxmain +++|# 01443 M01S01380.sxmain +++|**** PROC RCLMLK - XREF LIST BEGIN. 01444 M01S01381.sxmain +++|# 01445 M01S01382.sxmain +++| 01446 M01S01383.sxmain +++| XREF 01447 M01S01384.sxmain +++| BEGIN 01448 M01S01385.sxmain +++| PROC ABORT; # ABORT PROCESSING # 01449 M01S01386.sxmain +++| PROC CRCLMLK; # RECLAIM CATALOG INTERLOCKS # 01450 M01S01387.sxmain +++| PROC MESSAGE; # ISSUE DAYFILE MESSAGE # 01451 M01S01388.sxmain +++| PROC MRCLMLK; # RECLAIM SMA MAP INTERLOCKS # 01452 M01S01389.sxmain +++| PROC RTIME; # GET CURRENT TIME # 01453 M01S01390.sxmain +++| PROC SETPFP; # SET FAMILY AND USER INDEX # 01454 M01S01391.sxmain +++| END 01455 M01S01392.sxmain +++| 01456 M01S01393.sxmain +++|# 01457 M01S01394.sxmain +++|**** PROC RCLMLK - XREF LIST END. 01458 M01S01395.sxmain +++|# 01459 M01S01396.sxmain +++| 01460 M01S01397.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01461 M01S01398.sxmain +++|*CALL,COMBFAS 01462 M01S01399.sxmain +++|*CALL,COMBCMS 01463 M01S01400.sxmain +++|*CALL,COMBPFP 01464 M01S01401.sxmain +++|*CALL,COMXCTF 01465 M01S01402.sxmain +++|*CALL,COMXIPR 01466 M01S01403.sxmain +++|*CALL,COMXMSC 01467 M01S01404.sxmain +++| 01468 M01S01405.sxmain +++| ITEM I I; # INDUCTION VARIABLE # 01469 M01S01406.sxmain +++| ITEM STAT I; # ERROR STATUS # 01470 M01S01407.sxmain +++| 01471 M01S01408.sxmain +++| CONTROL EJECT; 01472 M01S01409.sxmain +++| 01473 M01S01410.sxmain +++|# 01474 M01S01411.sxmain +++|* RECLAIM CATALOG INTERLOCKS. 01475 M01S01412.sxmain +++|# 01476 M01S01413.sxmain +++| 01477 M01S01414.sxmain +++| IF RCLMCAT 01478 M01S01415.sxmain +++| THEN 01479 M01S01416.sxmain +++| BEGIN # RECLAIM CATALOGS # 01480 M01S01417.sxmain +++| RCLMCAT = FALSE; 01481 M01S01418.sxmain +++| CRCLMLK(STAT); 01482 M01S01419.sxmain +++| END # RECLAIM CATALOGS # 01483 M01S01420.sxmain +++| 01484 M01S01421.sxmain +++|# 01485 M01S01422.sxmain +++|* RECLAIM SMA MAP INTERLOCKS. 01486 M01S01423.sxmain +++|# 01487 M01S01424.sxmain +++| 01488 M01S01425.sxmain +++| IF RCLMMAP 01489 M01S01426.sxmain +++| THEN 01490 M01S01427.sxmain +++| BEGIN # RECLAIM SMA MAPS # 01491 M01S01428.sxmain +++| PFP$WRD0[0] = 0; 01492 M01S01429.sxmain +++| PFP$FG1[0] = TRUE; 01493 M01S01430.sxmain +++| PFP$FG4[0] = TRUE; 01494 M01S01431.sxmain +++| PFP$FAM[0] = DEF$FAM; 01495 M01S01432.sxmain +++| PFP$UI[0] = DEF$UI; 01496 M01S01433.sxmain +++| SETPFP(PFP[0]); 01497 M01S01434.sxmain +++| IF PFP$STAT NQ OK 01498 M01S01435.sxmain +++| THEN 01499 M01S01436.sxmain +++| BEGIN 01500 M01S01437.sxmain +++| FE$RTN[0] = "RCLMLK."; 01501 M01S01438.sxmain +++| MESSAGE(FEMSG[0],UDFL1); 01502 M01S01439.sxmain +++| ABORT; 01503 M01S01440.sxmain +++| END 01504 M01S01441.sxmain +++| 01505 M01S01442.sxmain +++| RCLMMAP = FALSE; 01506 M01S01443.sxmain +++| MAPINTLK = FALSE; 01507 M01S01444.sxmain +++| MAP$EXPIR = 0; 01508 M01S01445.sxmain +++| FASTFOR I = 1 STEP 1 UNTIL MAXSM 01509 M01S01446.sxmain +++| DO 01510 M01S01447.sxmain +++| BEGIN 01511 M01S01448.sxmain +++| MRCLMLK(I,STAT); 01512 M01S01449.sxmain +++| IF STAT EQ CMASTAT"INTLK" 01513 M01S01450.sxmain +++| THEN 01514 M01S01451.sxmain +++| BEGIN 01515 M01S01452.sxmain +++| MAPINTLK = TRUE; 01516 M01S01453.sxmain +++| END 01517 M01S01454.sxmain +++| 01518 M01S01455.sxmain +++| END 01519 M01S01456.sxmain +++| 01520 M01S01457.sxmain +++| IF MAPINTLK 01521 M01S01458.sxmain +++| THEN 01522 M01S01459.sxmain +++| BEGIN 01523 M01S01460.sxmain +++| RTIME(RTIMESTAT[0]); 01524 M01S01461.sxmain +++| MAP$EXPIR = RTIMSECS[0] + MAP$INTV; 01525 M01S01462.sxmain +++| END 01526 M01S01463.sxmain +++| 01527 M01S01464.sxmain +++| END # RECLAIM SMA MAPS # 01528 M01S01465.sxmain +++| 01529 M01S01466.sxmain +++| END # RCLMLK # 01530 M01S01467.sxmain +++| 01531 M01S01468.sxmain +++| TERM 01532 M01S01469.sxmain +++|PROC SCAN$LTCT; 01533 M01S01470.sxmain +++| 01534 M01S01471.sxmain +++|# TITLE SCAN$LTCT - PROCESS SWAPPED OUT *UCP*-S. # 01535 M01S01472.sxmain +++| 01536 M01S01473.sxmain +++| BEGIN # SCAN$LTCT # 01537 M01S01474.sxmain +++| 01538 M01S01475.sxmain +++|# 01539 M01S01476.sxmain +++|** SCAN$LTCT - PROCESS SWAPPED OUT *UCP*-S. 01540 M01S01477.sxmain +++|* 01541 M01S01478.sxmain +++|* *SCAN$LTCT* SCANS THE *LTCT* TO REISSUE *UCP* RESPONSE CALLS 01542 M01S01479.sxmain +++|* FOR ENTRIES WHICH HAVE THE SWAPPED-UCP FLAG SET. IT IS CALLED 01543 M01S01480.sxmain +++|* PERIODICALLY FROM *MAINLP*. 01544 M01S01481.sxmain +++|* 01545 M01S01482.sxmain +++|* PROC SCAN$LTCT 01546 M01S01483.sxmain +++|* 01547 M01S01484.sxmain +++|* ENTRY IF THE GLOBAL SWAPPED *UCP* FLAG (*GLBUCPSW*) 01548 M01S01485.sxmain +++|* IS SET, AN ATTEMPT IS MADE TO RESPOND TO ANY 01549 M01S01486.sxmain +++|* PREVIOUSLY SWAPPED OUT *UCP*-S. IF *GLBUCPSW* 01550 M01S01487.sxmain +++|* IS NOT SET, NO PROCESSING IS DONE. 01551 M01S01488.sxmain +++|* 01552 M01S01489.sxmain +++|* EXIT ANY SWAPPED-OUT *UCP*-S HAVE BEEN PROCESSED. 01553 M01S01490.sxmain +++|# 01554 M01S01491.sxmain +++| 01555 M01S01492.sxmain +++|# 01556 M01S01493.sxmain +++|**** PROC SCAN$LTCT - XREF LIST BEGIN. 01557 M01S01494.sxmain +++|# 01558 M01S01495.sxmain +++| 01559 M01S01496.sxmain +++| XREF 01560 M01S01497.sxmain +++| BEGIN 01561 M01S01498.sxmain +++| PROC RTIME; # GET TIME SINCE LAST DEADSTART # 01562 M01S01499.sxmain +++| PROC SFCALL; # INTERFACE TO *SFCALL* MACRO # 01563 M01S01500.sxmain +++| PROC UCP$RES; # NOTIFY *UCP* OF COMPLETION # 01564 M01S01501.sxmain +++| END 01565 M01S01502.sxmain +++| 01566 M01S01503.sxmain +++|# 01567 M01S01504.sxmain +++|**** PROC SCAN$LTCT - XREF LIST END. 01568 M01S01505.sxmain +++|# 01569 M01S01506.sxmain +++| 01570 M01S01507.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01571 M01S01508.sxmain +++|*CALL,COMBFAS 01572 M01S01509.sxmain +++|*CALL,COMBUCR 01573 M01S01510.sxmain +++|*CALL,COMXCTF 01574 M01S01511.sxmain +++|*CALL,COMXIPR 01575 M01S01512.sxmain +++|*CALL,COMXLTC 01576 M01S01513.sxmain +++|*CALL,COMXMSC 01577 M01S01514.sxmain +++| 01578 M01S01515.sxmain +++| CONTROL EJECT; 01579 M01S01516.sxmain +++| 01580 M01S01517.sxmain +++|# 01581 M01S01518.sxmain +++|* ONLY PROCESS SWAPPED OUT *UCP*-S. 01582 M01S01519.sxmain +++|# 01583 M01S01520.sxmain +++| 01584 M01S01521.sxmain +++| IF NOT GLBUCPSW 01585 M01S01522.sxmain +++| THEN 01586 M01S01523.sxmain +++| BEGIN 01587 M01S01524.sxmain +++| RETURN; 01588 M01S01525.sxmain +++| END 01589 M01S01526.sxmain +++| 01590 M01S01527.sxmain +++| UCP$EXPIR = 0; 01591 M01S01528.sxmain +++| 01592 M01S01529.sxmain +++| GLBUCPSW = FALSE; 01593 M01S01530.sxmain +++| FASTFOR LTCENTRY = 1 STEP 1 UNTIL LTCTCNT 01594 M01S01531.sxmain +++| DO 01595 M01S01532.sxmain +++| BEGIN # CHECK FOR *UCP* SWAPPED # 01596 M01S01533.sxmain +++| IF LTC$UCPSW[LTCENTRY] 01597 M01S01534.sxmain +++| THEN 01598 M01S01535.sxmain +++| BEGIN # CHECK SWAP IN STATUS # 01599 M01S01536.sxmain +++| IF LTC$SFFCC[LTCENTRY] 01600 M01S01537.sxmain +++| THEN 01601 M01S01538.sxmain +++| BEGIN 01602 M01S01539.sxmain +++| UCP$RES; 01603 M01S01540.sxmain +++| END 01604 M01S01541.sxmain +++| 01605 M01S01542.sxmain +++| ELSE 01606 M01S01543.sxmain +++| BEGIN 01607 M01S01544.sxmain +++| GLBUCPSW = TRUE; 01608 M01S01545.sxmain +++| RTIME(RTIMESTAT[0]); 01609 M01S01546.sxmain +++| UCP$EXPIR = RTIMSECS[0] + UCP$INTV; 01610 M01S01547.sxmain +++| END 01611 M01S01548.sxmain +++| 01612 M01S01549.sxmain +++| END # CHECK SWAP IN STATUS # 01613 M01S01550.sxmain +++| 01614 M01S01551.sxmain +++| END # CHECK FOR *UCP* SWAPPED # 01615 M01S01552.sxmain +++| 01616 M01S01553.sxmain +++| RETURN; 01617 M01S01554.sxmain +++| END # SCAN$LTCT # 01618 M01S01555.sxmain +++| 01619 M01S01556.sxmain +++| TERM 01620 M01S01557.sxmain +++|PROC SLAVERP(CALLERCTL); 01621 M01S01558.sxmain +++| 01622 M01S01559.sxmain +++|# TITLE SLAVERP - SLAVE REQUEST PROCESSOR. # 01623 M01S01560.sxmain +++| 01624 M01S01561.sxmain +++| BEGIN # SLAVERP # 01625 M01S01562.sxmain +++| 01626 M01S01563.sxmain +++|# 01627 M01S01564.sxmain +++|** SLAVERP - SLAVE REQUEST PROCESSOR. 01628 M01S01565.sxmain +++|* 01629 M01S01566.sxmain +++|* *SLAVERP* IS PERIODICALLY CALLED TO READ AND PROCESS THE 01630 M01S01567.sxmain +++|* COMMUNICATION FILE FROM EACH DEFINED *SSSLV*. AN INFORMATIVE 01631 M01S01568.sxmain +++|* OPERATOR MESSAGE WILL BE DISPLAYED FOR ANY *SSSLV* WHOSE 01632 M01S01569.sxmain +++|* ACTIVE/INACTIVE STATUS HAS CHANGED SINCE THE PREVIOUS TIME ITS 01633 M01S01570.sxmain +++|* COMMUNICATION FILE WAS READ. ALSO, THE STATUS OF EACH REQUEST 01634 M01S01571.sxmain +++|* BLOCK FOR EACH ACTIVE *SSSLV* IS EXAMINED TO DETERMINE IF ANY 01635 M01S01572.sxmain +++|* PROCESSING BY THE *SSEXEC* IS REQUIRED. IF STAGE REQUESTS ARE 01636 M01S01573.sxmain +++|* DETECTED, THEY ARE ADDED TO THE *HLRQ*. 01637 M01S01574.sxmain +++|* 01638 M01S01575.sxmain +++|* PROC SLAVERP(CALLERCTL) 01639 M01S01576.sxmain +++|* 01640 M01S01577.sxmain +++|* ENTRY (CALLERCTL) =0, IF CALLED BY *MAINLP*. 01641 M01S01578.sxmain +++|* .NQ. 0, IF CALLED BY *DOZER*. 01642 M01S01579.sxmain +++|* 01643 M01S01580.sxmain +++|* THE IDENTITY AND PREVIOUS STATUS OF EACH DEFINED SLAVE 01644 M01S01581.sxmain +++|* EXEC IS CONTAINED IN THE BUFFER FOR THE HEADER PORTION 01645 M01S01582.sxmain +++|* OF THE *MTOS* FILE. 01646 M01S01583.sxmain +++|* (NXTRB) = THE NEXT REQUEST BLOCK FROM WHICH A STAGE 01647 M01S01584.sxmain +++|* REQUEST WILL BE ACCEPTED. 01648 M01S01585.sxmain +++|* 01649 M01S01586.sxmain +++|* EXIT (CALLERCTL) =0, IF CALLED BY *DOZER* AND SLAVE 01650 M01S01587.sxmain +++|* REQUESTS NEED TO BE PROCESSED. 01651 M01S01588.sxmain +++|* UNCHANGED OTHERWISE. 01652 M01S01589.sxmain +++|* 01653 M01S01590.sxmain +++|* THE VARIABLE *STOM$EXPIR* IS UPDATED 01654 M01S01591.sxmain +++|* TO REFLECT THE NEXT TIME THIS PROCEDURE SHOULD BE 01655 M01S01592.sxmain +++|* CALLED. 01656 M01S01593.sxmain +++|* 01657 M01S01594.sxmain +++|* THE HEADER PORTION OF THE *MTOS* FILE BUFFER IS 01658 M01S01595.sxmain +++|* UPDATED TO REFLECT ANY NEW STATUS INFORMATION FOR EACH 01659 M01S01596.sxmain +++|* *SSSLV*. THE REPLY BLOCK PORTION OF THE *MTOS* FILE 01660 M01S01597.sxmain +++|* IS UPDATED TO REFLECT ANY RESPONSE TO REQUESTS IN THE 01661 M01S01598.sxmain +++|* REQUEST BLOCKS (SEE THE COMPOSITE REQUEST/REPLY BLOCK 01662 M01S01599.sxmain +++|* STATUS DESCRIPTION IN *COMXMMF*). 01663 M01S01600.sxmain +++|* 01664 M01S01601.sxmain +++|* NOTES IF THE *STOM* FILE FOR A GIVEN *SSSLV* ENCOUNTERS A 01665 M01S01602.sxmain +++|* READ ERROR OR IF THE FILE LENGTH IS DIFFERENT FROM 01666 M01S01603.sxmain +++|* WHAT IS EXPECTED, THE STATUS OF THAT *SSSLV* 01667 M01S01604.sxmain +++|* WILL BE SET TO UNDEFINED. IF THIS RESULTS IN NO 01668 M01S01605.sxmain +++|* DEFINED *SSSLV*, THEN THE *STOM$EXPIR* WORD WILL BE 01669 M01S01606.sxmain +++|* SET TO A VERY LARGE VALUE SO THE *SSSLV* REQUEST 01670 M01S01607.sxmain +++|* PROCESSOR IS NEVER CALLED. 01671 M01S01608.sxmain +++|* 01672 M01S01609.sxmain +++|* MESSAGES * EXEC - SLAVE N XXXX.* 01673 M01S01610.sxmain +++|* AN INFORMATIVE MESSAGE INDICATING THAT 01674 M01S01611.sxmain +++|* A CHANGE IN THE STATUS OF THE INDICATED 01675 M01S01612.sxmain +++|* *SSSLV* PROGRAM HAS BEEN DETECTED. THE 01676 M01S01613.sxmain +++|* NEW *SSSLV* STATUS IS INDICATED BY *XXXX*, 01677 M01S01614.sxmain +++|* WHICH CAN BE *ACTIVE* OR *INACTIVE*. 01678 M01S01615.sxmain +++|* 01679 M01S01616.sxmain +++|* * EXEC - SLAVE N OMITTED -* 01680 M01S01617.sxmain +++|* - STOM FILE ERROR.* 01681 M01S01618.sxmain +++|* THIS MESSAGE INDICATES THAT AN ERROR CONDITION 01682 M01S01619.sxmain +++|* WAS DETECTED WHILE READING THE COMMUNICATION 01683 M01S01620.sxmain +++|* FILE FROM THE SPECIFIED *SSSLV* PROGRAM. 01684 M01S01621.sxmain +++|* THE *SSEXEC* WILL CONTINUE TO OPERATE, BUT WILL 01685 M01S01622.sxmain +++|* NOT ATTEMPT TO RECEIVE REQUESTS FROM THE 01686 M01S01623.sxmain +++|* SPECIFIED *SSSLV* PROGRAM. 01687 M01S01624.sxmain +++|* 01688 M01S01625.sxmain +++|# 01689 M01S01626.sxmain +++| 01690 M01S01627.sxmain +++| ITEM CALLERCTL U; # CALLER IDENTIFICATION # 01691 M01S01628.sxmain +++| 01692 M01S01629.sxmain +++|# 01693 M01S01630.sxmain +++|**** PROC SLAVERP - XREF LIST BEGIN. 01694 M01S01631.sxmain +++|# 01695 M01S01632.sxmain +++| 01696 M01S01633.sxmain +++| XREF 01697 M01S01634.sxmain +++| BEGIN 01698 M01S01635.sxmain +++| PROC MESSAGE; # ISSUE MESSAGE MACRO # 01699 M01S01636.sxmain +++| PROC PDATE; # ISSUE PDATE MACRO # 01700 M01S01637.sxmain +++| PROC READ; # READ FILE # 01701 M01S01638.sxmain +++| PROC REWIND; # REWIND FILE # 01702 M01S01639.sxmain +++| PROC RTIME; # ISSUE RTIME MACRO # 01703 M01S01640.sxmain +++| PROC SLVRBP; # SLAVE REQUEST BLOCK PROCESSOR # 01704 M01S01641.sxmain +++| FUNC XCOD C(10); # INTEGER TO DISPLAY # 01705 M01S01642.sxmain +++| PROC ZSETFET; # INITIALIZE *FET* # 01706 M01S01643.sxmain +++| END 01707 M01S01644.sxmain +++| 01708 M01S01645.sxmain +++|# 01709 M01S01646.sxmain +++|**** PROC SLAVERP - XREF LIST END. 01710 M01S01647.sxmain +++|# 01711 M01S01648.sxmain +++| 01712 M01S01649.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01713 M01S01650.sxmain +++|*CALL,COMBFAS 01714 M01S01651.sxmain +++|*CALL,COMBFET 01715 M01S01652.sxmain +++|*CALL,COMXCTF 01716 M01S01653.sxmain +++|*CALL,COMXIPR 01717 M01S01654.sxmain +++|*CALL,COMXJCA 01718 M01S01655.sxmain +++|*CALL,COMXMMF 01719 M01S01656.sxmain +++|*CALL,COMXMSC 01720 M01S01657.sxmain +++| 01721 M01S01658.sxmain +++| 01722 M01S01659.sxmain +++| ITEM DELAY U; # NUMBER OF SECONDS UNTIL NEXT 01723 M01S01660.sxmain +++| READ OF *STOM* # 01724 M01S01661.sxmain +++| ITEM DELTART I; # CHANGE IN THRESHOLD # 01725 M01S01662.sxmain +++| ITEM PASSCTR U; # DUMMY INDUCION VARIABLE # 01726 M01S01663.sxmain +++| CONTROL EJECT; 01727 M01S01664.sxmain +++| 01728 M01S01665.sxmain +++| SLVACTIVE = FALSE; # ASSUME NO SLAVES ACTIVE # 01729 M01S01666.sxmain +++| DELAY = SLRP$INTV; 01730 M01S01667.sxmain +++| RELOOP = FALSE; 01731 M01S01668.sxmain +++| SLOWFOR PASSCTR = 1 STEP 1 UNTIL 2 01732 M01S01669.sxmain +++| DO 01733 M01S01670.sxmain +++| BEGIN # *STOM* SCAN # 01734 M01S01671.sxmain +++| IF (NOT RELOOP OR NXTRB NQ 0) ## 01735 M01S01672.sxmain +++| AND PASSCTR EQ 2 01736 M01S01673.sxmain +++| THEN # EXIT IF SECOND PASS NOT NEEDED 01737 M01S01674.sxmain +++| OR NOT USEFUL # 01738 M01S01675.sxmain +++| BEGIN 01739 M01S01676.sxmain +++| TEST PASSCTR; 01740 M01S01677.sxmain +++| END 01741 M01S01678.sxmain +++| 01742 M01S01679.sxmain +++| SLOWFOR SINDX = 1 STEP 1 UNTIL NUMSLV 01743 M01S01680.sxmain +++| DO 01744 M01S01681.sxmain +++| BEGIN # PROCESS NEXT SLAVE # 01745 M01S01682.sxmain +++| P<MTOSREPBLK> = LOC(MTOSHEAD) + L$MTOSH + (SINDX-1)*NUMRB; 01746 M01S01683.sxmain +++| IF NOT MSH$DEFD[SINDX] 01747 M01S01684.sxmain +++| THEN # SLAVE NOT DEFINED # 01748 M01S01685.sxmain +++| BEGIN 01749 M01S01686.sxmain +++| TEST SINDX; 01750 M01S01687.sxmain +++| END 01751 M01S01688.sxmain +++| 01752 M01S01689.sxmain +++|# 01753 M01S01690.sxmain +++|* READ *STOM* FILE. 01754 M01S01691.sxmain +++|# 01755 M01S01692.sxmain +++| 01756 M01S01693.sxmain +++| ZSETFET(LOC(STOMM),MSH$PFNS[SINDX],LOC(STOMMBUF), ## 01757 M01S01694.sxmain +++| STOMBUFL,SFETL); 01758 M01S01695.sxmain +++| P<STOMFILE> = LOC(STOMMBUF); 01759 M01S01696.sxmain +++| REWIND(STOMM,RCL); 01760 M01S01697.sxmain +++| READ(STOMM,RCL); 01761 M01S01698.sxmain +++| PDATE(PDATESTAT[0]); 01762 M01S01699.sxmain +++| RTIME(RTIMESTAT[0]); 01763 M01S01700.sxmain +++| 01764 M01S01701.sxmain +++|# 01765 M01S01702.sxmain +++|* CHECK FOR FILE LENGTH OK AND NO *CIO* ERRORS. 01766 M01S01703.sxmain +++|# 01767 M01S01704.sxmain +++| 01768 M01S01705.sxmain +++| IF (FET$AT[0] NQ 0) ## 01769 M01S01706.sxmain +++| OR (FET$IN[0]-FET$OUT[0] LS L$STOM) 01770 M01S01707.sxmain +++| THEN # *STOM* READ ERROR OR TOO SHORT # 01771 M01S01708.sxmain +++| BEGIN # ISSUE ERROR MESSAGE # 01772 M01S01709.sxmain +++| MSH$DEFD[SINDX] = FALSE; 01773 M01S01710.sxmain +++| SLAVECTR = SLAVECTR - 1; 01774 M01S01711.sxmain +++| CHAR10 = XCOD(SINDX); 01775 M01S01712.sxmain +++| SLVN$INDX[0] = C<9,1>CHAR10; 01776 M01S01713.sxmain +++| SLVN$STAT[0] = "OMITTED - "; 01777 M01S01714.sxmain +++| MESSAGE(SLVNSTAT,SYSUDF1); 01778 M01S01715.sxmain +++| MMFD$PROB[0] = "STOM FILE ERROR."; 01779 M01S01716.sxmain +++| MESSAGE(MMFDETAIL,SYSUDF1); 01780 M01S01717.sxmain +++| NXTRB = 0; 01781 M01S01718.sxmain +++| TEST SINDX; 01782 M01S01719.sxmain +++| END # ISSUE ERROR MESSAGE # 01783 M01S01720.sxmain +++| 01784 M01S01721.sxmain +++| IF DELAY GR SM$DELAY[0] ## 01785 M01S01722.sxmain +++| AND SM$DELAY[0] NQ 0 01786 M01S01723.sxmain +++| THEN 01787 M01S01724.sxmain +++| BEGIN 01788 M01S01725.sxmain +++| DELAY = SM$DELAY[0]; 01789 M01S01726.sxmain +++| END 01790 M01S01727.sxmain +++| 01791 M01S01728.sxmain +++|# 01792 M01S01729.sxmain +++|* CHECK FOR CHANGE IN STATUS OF SLAVE EXEC. 01793 M01S01730.sxmain +++|# 01794 M01S01731.sxmain +++| 01795 M01S01732.sxmain +++| SLVN$INDX[0] = C<6,1>MSH$PFNS[SINDX]; 01796 M01S01733.sxmain +++| IF SM$SWC[0] NQ MSH$SWC[SINDX] 01797 M01S01734.sxmain +++| THEN # SLAVE IS ACTIVE # 01798 M01S01735.sxmain +++| BEGIN # ACTIVE STATUS # 01799 M01S01736.sxmain +++| SLVACTIVE = TRUE; 01800 M01S01737.sxmain +++| IF MSH$STATS[SINDX] NQ S"ACTIVE" 01801 M01S01738.sxmain +++| THEN 01802 M01S01739.sxmain +++| BEGIN 01803 M01S01740.sxmain +++| SLVN$STAT[0] = "ACTIVE."; 01804 M01S01741.sxmain +++| MSH$STATS[SINDX] = S"ACTIVE"; 01805 M01S01742.sxmain +++| MESSAGE(SLVNSTAT,SYSUDF1); 01806 M01S01743.sxmain +++| END 01807 M01S01744.sxmain +++| 01808 M01S01745.sxmain +++| MSH$SSW[SINDX] = SM$SSW[0]; 01809 M01S01746.sxmain +++| MSH$TIMOUT[SINDX] = RTIMSECS[0] + SLAV$INTV; 01810 M01S01747.sxmain +++| END # ACTIVE STATUS # 01811 M01S01748.sxmain +++| 01812 M01S01749.sxmain +++| ELSE # CHECK FOR TIMEOUT # 01813 M01S01750.sxmain +++| BEGIN # CHECK STATUS # 01814 M01S01751.sxmain +++| IF MSH$TIMOUT[SINDX] LS RTIMSECS[0] 01815 M01S01752.sxmain +++| THEN 01816 M01S01753.sxmain +++| BEGIN 01817 M01S01754.sxmain +++| SLVN$STAT[0] = "INACTIVE."; 01818 M01S01755.sxmain +++| MESSAGE(SLVNSTAT,SYSUDF1); 01819 M01S01756.sxmain +++| NXTRB = 0; 01820 M01S01757.sxmain +++| MSH$TIMOUT[SINDX] = MAXSECS; 01821 M01S01758.sxmain +++| MSH$STATS[SINDX] = S"DEAD"; 01822 M01S01759.sxmain +++| TEST SINDX; 01823 M01S01760.sxmain +++| END 01824 M01S01761.sxmain +++| 01825 M01S01762.sxmain +++| ELSE 01826 M01S01763.sxmain +++| BEGIN 01827 M01S01764.sxmain +++| SLVACTIVE = TRUE; 01828 M01S01765.sxmain +++| END 01829 M01S01766.sxmain +++| 01830 M01S01767.sxmain +++| END # CHECK STATUS # 01831 M01S01768.sxmain +++| 01832 M01S01769.sxmain +++|# 01833 M01S01770.sxmain +++|* EXAMINE EACH REQUEST BLOCK ON THE *STOM* FILE 01834 M01S01771.sxmain +++|* AND PROCESS ACCORDING TO ITS COMPOSITE STATUS. 01835 M01S01772.sxmain +++|# 01836 M01S01773.sxmain +++| 01837 M01S01774.sxmain +++| IF SM$REQCTL[0] NQ MSH$REQCTL[SINDX] 01838 M01S01775.sxmain +++| THEN 01839 M01S01776.sxmain +++| BEGIN 01840 M01S01777.sxmain +++| IF (CALLERCTL EQ 0) 01841 M01S01778.sxmain +++| THEN # OK TO CALL *SLVRBP* # 01842 M01S01779.sxmain +++| BEGIN 01843 M01S01780.sxmain +++| SLVRBP; 01844 M01S01781.sxmain +++| END 01845 M01S01782.sxmain +++| 01846 M01S01783.sxmain +++| ELSE # RETURN TO CALLER # 01847 M01S01784.sxmain +++| BEGIN 01848 M01S01785.sxmain +++| CALLERCTL = 0; 01849 M01S01786.sxmain +++| RETURN; 01850 M01S01787.sxmain +++| END 01851 M01S01788.sxmain +++| 01852 M01S01789.sxmain +++| END 01853 M01S01790.sxmain +++| 01854 M01S01791.sxmain +++| END # PROCESS NEXT SLAVE # 01855 M01S01792.sxmain +++| 01856 M01S01793.sxmain +++| END # *STOM* SCAN # 01857 M01S01794.sxmain +++| 01858 M01S01795.sxmain +++|# 01859 M01S01796.sxmain +++|* ESTABLISH THE NEXT TIME THE SLAVE REQUEST PROCESSOR 01860 M01S01797.sxmain +++|* IS TO BE CALLED. 01861 M01S01798.sxmain +++|# 01862 M01S01799.sxmain +++| 01863 M01S01800.sxmain +++| IF NOT SLVACTIVE 01864 M01S01801.sxmain +++| THEN # USE LARGER DELAY INTERVAL # 01865 M01S01802.sxmain +++| BEGIN 01866 M01S01803.sxmain +++| DELAY = SLAV$INTV; 01867 M01S01804.sxmain +++| END 01868 M01S01805.sxmain +++| 01869 M01S01806.sxmain +++| RTIME(RTIMESTAT[0]); 01870 M01S01807.sxmain +++| STOM$EXPIR = RTIMSECS[0] + DELAY; 01871 M01S01808.sxmain +++| IF SLAVECTR EQ 0 OR DRYUP 01872 M01S01809.sxmain +++| THEN 01873 M01S01810.sxmain +++| BEGIN 01874 M01S01811.sxmain +++| SLVACTIVE = FALSE; 01875 M01S01812.sxmain +++| STOM$EXPIR = MAXSECS; 01876 M01S01813.sxmain +++| END 01877 M01S01814.sxmain +++| 01878 M01S01815.sxmain +++| RETURN; 01879 M01S01816.sxmain +++| END # SLAVERP # 01880 M01S01817.sxmain +++| 01881 M01S01818.sxmain +++| TERM 01882 M01S01819.sxmain +++|PROC SLVRBP; 01883 M01S01820.sxmain +++| 01884 M01S01821.sxmain +++|# TITLE SLVRBP - SLAVE REQUEST BLOCK PROCESSOR. # 01885 M01S01822.sxmain +++| 01886 M01S01823.sxmain +++| BEGIN # SLVRBP # 01887 M01S01824.sxmain +++| 01888 M01S01825.sxmain +++|# 01889 M01S01826.sxmain +++|** SLVRBP - SLAVE REQUEST BLOCK PROCESSOR. 01890 M01S01827.sxmain +++|* 01891 M01S01828.sxmain +++|* *SLVRBP* CHECKS THE STATUS OF EACH REQUEST BLOCK FOR THE 01892 M01S01829.sxmain +++|* CURRENT *SSSLV* AND DETERMINES IF ANY PROCESSING BY *SSEXEC* 01893 M01S01830.sxmain +++|* IS REQUIRED. 01894 M01S01831.sxmain +++|* 01895 M01S01832.sxmain +++|* PROC SLVRBP 01896 M01S01833.sxmain +++|* 01897 M01S01834.sxmain +++|* ENTRY (PDATEV[0]) = CURRENT PACKED DATE AND TIME. 01898 M01S01835.sxmain +++|* P<MTOSREPBLK> = REPLY BLOCK PORTION OF THE *MTOS* 01899 M01S01836.sxmain +++|* FILE. 01900 M01S01837.sxmain +++|* P<STOMFILE> = *STOM* FILE REQUEST BLOCKS. 01901 M01S01838.sxmain +++|* 01902 M01S01839.sxmain +++|* EXIT THE REPLY BLOCK PORTION OF THE *MTOS* FILE IS 01903 M01S01840.sxmain +++|* UPDATED TO REFLECT ANY RESPONSE TO REQUESTS IN THE 01904 M01S01841.sxmain +++|* REQUEST BLOCKS (SEE THE COMPOSITE REQUEST/REPLY 01905 M01S01842.sxmain +++|* BLOCK STATUS DESCRIPTION IN *COMXMMF*. 01906 M01S01843.sxmain +++|# 01907 M01S01844.sxmain +++| 01908 M01S01845.sxmain +++|# 01909 M01S01846.sxmain +++|**** PROC SLVRBP - XREF LIST BEGIN. 01910 M01S01847.sxmain +++|# 01911 M01S01848.sxmain +++| 01912 M01S01849.sxmain +++| XREF 01913 M01S01850.sxmain +++| BEGIN 01914 M01S01851.sxmain +++| PROC SLVTDAM; # SLAVE *TDAM* REQUEST PROCESSOR # 01915 M01S01852.sxmain +++| END 01916 M01S01853.sxmain +++| 01917 M01S01854.sxmain +++|# 01918 M01S01855.sxmain +++|**** PROC SLVRBP - XREF LIST END. 01919 M01S01856.sxmain +++|# 01920 M01S01857.sxmain +++| 01921 M01S01858.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 01922 M01S01859.sxmain +++|*CALL,COMBFAS 01923 M01S01860.sxmain +++|*CALL,COMXIPR 01924 M01S01861.sxmain +++|*CALL,COMXMMF 01925 M01S01862.sxmain +++| 01926 M01S01863.sxmain +++| ITEM I I; # LOOP COUNTER # 01927 M01S01864.sxmain +++| ITEM REJCNT I; # REJECT COUNTER # 01928 M01S01865.sxmain +++| CONTROL EJECT; 01929 M01S01866.sxmain +++| 01930 M01S01867.sxmain +++| REJCNT = 0; 01931 M01S01868.sxmain +++| FASTFOR I = 1 STEP 1 UNTIL NUMRB 01932 M01S01869.sxmain +++| DO 01933 M01S01870.sxmain +++| BEGIN # PROCESS REQUEST BLOCKS # 01934 M01S01871.sxmain +++| 01935 M01S01872.sxmain +++| IF SM$SRC[I] EQ S"AVAIL" ## 01936 M01S01873.sxmain +++| AND MSR$MRC[I] EQ S"FINISHED" 01937 M01S01874.sxmain +++| THEN 01938 M01S01875.sxmain +++| 01939 M01S01876.sxmain +++|# 01940 M01S01877.sxmain +++|* MASTER REPLY CODE PROCCESSED BY SLAVE - MAKE REQUEST BLOCK 01941 M01S01878.sxmain +++|* AVAILABLE FOR NEW REQUESTS. 01942 M01S01879.sxmain +++|# 01943 M01S01880.sxmain +++| 01944 M01S01881.sxmain +++| BEGIN 01945 M01S01882.sxmain +++| MSR$MRC[I] = S"AVAIL"; 01946 M01S01883.sxmain +++| MSR$PDATE[I] = PDATEV[0]; 01947 M01S01884.sxmain +++| TEST I; # PROCESS NEXT REQUEST # 01948 M01S01885.sxmain +++| END 01949 M01S01886.sxmain +++| 01950 M01S01887.sxmain +++| IF SM$SRC[I] EQ S"CANCEL" ## 01951 M01S01888.sxmain +++| AND MSR$MRC[I] NQ S"FINISHED" 01952 M01S01889.sxmain +++| THEN 01953 M01S01890.sxmain +++| 01954 M01S01891.sxmain +++|# 01955 M01S01892.sxmain +++|* SLAVE CANCELLED THIS REQUEST - ACKNOWLEDGE CANCELLATION. 01956 M01S01893.sxmain +++|# 01957 M01S01894.sxmain +++| 01958 M01S01895.sxmain +++| BEGIN 01959 M01S01896.sxmain +++| MSR$MRC[I] = S"FINISHED"; 01960 M01S01897.sxmain +++| MSR$REPLY[I] = S"CANCELLED"; 01961 M01S01898.sxmain +++| MSR$PDATE[I] = PDATEV[0]; 01962 M01S01899.sxmain +++| TEST I; # PROCESS NEXT REQUEST # 01963 M01S01900.sxmain +++| END 01964 M01S01901.sxmain +++| 01965 M01S01902.sxmain +++| IF SM$SRC[I] EQ S"SUBMITTED" ## 01966 M01S01903.sxmain +++| AND MSR$MRC[I] EQ S"AVAIL" 01967 M01S01904.sxmain +++| THEN 01968 M01S01905.sxmain +++| 01969 M01S01906.sxmain +++|# 01970 M01S01907.sxmain +++|* SLAVE ISSUED A NEW *TDAM* REQUEST - PROCESS THIS REQUEST. 01971 M01S01908.sxmain +++|# 01972 M01S01909.sxmain +++| 01973 M01S01910.sxmain +++| BEGIN 01974 M01S01911.sxmain +++| SLVTDAM(I,REJCNT); 01975 M01S01912.sxmain +++| END 01976 M01S01913.sxmain +++| 01977 M01S01914.sxmain +++| END # PROCESS REQUEST BLOCKS # 01978 M01S01915.sxmain +++| 01979 M01S01916.sxmain +++| IF REJCNT EQ 0 01980 M01S01917.sxmain +++| THEN 01981 M01S01918.sxmain +++| BEGIN 01982 M01S01919.sxmain +++| MSH$REQCTL[SINDX] = SM$REQCTL[0]; 01983 M01S01920.sxmain +++| END 01984 M01S01921.sxmain +++| 01985 M01S01922.sxmain +++| END # SLVPRB # 01986 M01S01923.sxmain +++| 01987 M01S01924.sxmain +++| TERM 01988 M01S01925.sxmain +++|PROC SLVTDAM((RB),REJCNT); 01989 M01S01926.sxmain +++| 01990 M01S01927.sxmain +++|# TITLE SLVTDAM - SLAVE *TDAM* REQUEST PROCESSOR. # 01991 M01S01928.sxmain +++| 01992 M01S01929.sxmain +++| BEGIN # SLVTDAM # 01993 M01S01930.sxmain +++| 01994 M01S01931.sxmain +++|# 01995 M01S01932.sxmain +++|** SLVTDAM - SLAVE *TDAM* REQUEST PROCESSOR. 01996 M01S01933.sxmain +++|* 01997 M01S01934.sxmain +++|* *SLVTDAM* DOES THE PRELIMINARY PROCESSING OF A REQUEST FROM AN 01998 M01S01935.sxmain +++|* *STOM* FILE REQUEST BLOCK. STAGE REQUESTS WHICH DUPLICATE 01999 M01S01936.sxmain +++|* THOSE ALREADY IN PROCESS (*HLRQ*) OR QUEUED (*RTRQ*) ARE 02000 M01S01937.sxmain +++|* UPDATED TO INDICATE SLAVE ORIGIN. NON-DUPLICATE STAGE 02001 M01S01938.sxmain +++|* AND OTHER REQUESTS ARE QUEUED IN THE *RTRQ* ACTIVE CHAIN. 02002 M01S01939.sxmain +++|* 02003 M01S01940.sxmain +++|* PROC SLVTDAM((RB),REJCNT) 02004 M01S01941.sxmain +++|* 02005 M01S01942.sxmain +++|* ENTRY (NXTRB) = THE NEXT REQUEST BLOCK FROM WHICH A STAGE 02006 M01S01943.sxmain +++|* REQUEST WILL BE ACCEPTED. 02007 M01S01944.sxmain +++|* (PDATEV[0]) = PACKED DATE AND TIME. 02008 M01S01945.sxmain +++|* P<MTOSREPBLK> = REPLY BLOCK PORTION OF THE *MTOS* 02009 M01S01946.sxmain +++|* FILE. 02010 M01S01947.sxmain +++|* P<STOMFILE> = *STOM* FILE REQUEST BLOCKS. 02011 M01S01948.sxmain +++|* (RB) = REQUEST BLOCK INDEX. 02012 M01S01949.sxmain +++|* (REJCNT) = REJECT COUNTER. 02013 M01S01950.sxmain +++|* (SINDX) = SLAVE INDEX. 02014 M01S01951.sxmain +++|* 02015 M01S01952.sxmain +++|* MESSAGES * INCORRECT TDAM REQUEST.* 02016 M01S01953.sxmain +++|* 02017 M01S01954.sxmain +++|* NOTES IF A STAGE REQUEST FROM REQUEST BLOCK *J* OF *SSSLV* 02018 M01S01955.sxmain +++|* *I* CANNOT BE ENTERED INTO THE *HLRQ* FOR PROCESSING 02019 M01S01956.sxmain +++|* BECAUSE EITHER THE THRESHOLD FOR *SSSLV* STAGE 02020 M01S01957.sxmain +++|* REQUESTS HAS BEEN REACHED OR BECAUSE THE *HLRQ* IS 02021 M01S01958.sxmain +++|* FULL, *NXTRB* WILL BE SET TO REFLECT THE VALUES OF 02022 M01S01959.sxmain +++|* *I* AND *J*. WHEN THIS OCCURS, ALL NORMAL PROCESSING 02023 M01S01960.sxmain +++|* OF THE *STOM* FILES CONTINUES, EXCEPT THAT ALL 02024 M01S01961.sxmain +++|* NONDUPLICATE STAGE REQUESTS ARE IGNORED UNTIL THE ONE 02025 M01S01962.sxmain +++|* FROM *SSSLV* *I*, REQUEST BLOCK *J*, CAN BE ACCEPTED. 02026 M01S01963.sxmain +++|* WHEN THIS STAGE REQUEST IS FINALLY ACCEPTED, A SECOND 02027 M01S01964.sxmain +++|* SCAN OF ALL *STOM* FILES IS MADE TO SEE IF A 02028 M01S01965.sxmain +++|* PREVIOUSLY IGNORED STAGE REQUEST CAN NOW BE ACCEPTED. 02029 M01S01966.sxmain +++|# 02030 M01S01967.sxmain +++| 02031 M01S01968.sxmain +++| ITEM RB U; # REQUEST BLOCK INDEX # 02032 M01S01969.sxmain +++| ITEM REJCNT I; # REJECT COUNTER # 02033 M01S01970.sxmain +++| 02034 M01S01971.sxmain +++|# 02035 M01S01972.sxmain +++|**** PROC SLVTDAM - XREF LIST BEGIN. 02036 M01S01973.sxmain +++|# 02037 M01S01974.sxmain +++| 02038 M01S01975.sxmain +++| XREF 02039 M01S01976.sxmain +++| BEGIN 02040 M01S01977.sxmain +++| PROC ENTDAM; # ENTER *TDAM* REQUEST FOR 02041 M01S01978.sxmain +++| PROCESSING # 02042 M01S01979.sxmain +++| PROC MSG; # ISSUE MESSAGE # 02043 M01S01980.sxmain +++| PROC SRCHDS; # SEARCH FOR DUPLICATE STAGE # 02044 M01S01981.sxmain +++| END 02045 M01S01982.sxmain +++| 02046 M01S01983.sxmain +++|# 02047 M01S01984.sxmain +++|**** PROC SLVTDAM - XREF LIST END. 02048 M01S01985.sxmain +++|# 02049 M01S01986.sxmain +++| 02050 M01S01987.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS # 02051 M01S01988.sxmain +++|*CALL,COMBFAS 02052 M01S01989.sxmain +++|*CALL,COMBTDM 02053 M01S01990.sxmain +++|*CALL,COMXCTF 02054 M01S01991.sxmain +++|*CALL,COMXIPR 02055 M01S01992.sxmain +++|*CALL,COMXMMF 02056 M01S01993.sxmain +++| 02057 M01S01994.sxmain +++| ITEM I U; # INDEX # 02058 M01S01995.sxmain +++| ITEM NEWTDAM U; # ADDRESS OF ACCEPTED *TDAM* 02059 M01S01996.sxmain +++| REQUEST # 02060 M01S01997.sxmain +++| ITEM STAT I; 02061 M01S01998.sxmain +++| ITEM THISRB U; 02062 M01S01999.sxmain +++| 02063 M01S02000.sxmain +++| CONTROL EJECT; 02064 M01S02001.sxmain +++| 02065 M01S02002.sxmain +++| P<TDAM> = LOC(SM$TDAM[RB]); 02066 M01S02003.sxmain +++| IF TDAMFC[0] LQ TDAMFCODE"NOREQ" ## 02067 M01S02004.sxmain +++| OR TDAMFC[0] EQ TDAMFCODE"DESTRLS" ## 02068 M01S02005.sxmain +++| OR TDAMFC[0] EQ TDAMFCODE"DESTAGE" ## 02069 M01S02006.sxmain +++| OR TDAMFC[0] GQ TDAMFCODE"FCEND" 02070 M01S02007.sxmain +++| THEN # ABANDON INCORRECT REQUESTS # 02071 M01S02008.sxmain +++| BEGIN 02072 M01S02009.sxmain +++| MSG(INVRQC,UDFL1); 02073 M01S02010.sxmain +++| MSR$MRC[RB] = S"FINISHED"; 02074 M01S02011.sxmain +++| MSR$REPLY[RB] = S"ABANDONED"; 02075 M01S02012.sxmain +++| MSR$PDATE[RB] = PDATEV[0]; 02076 M01S02013.sxmain +++| MTOS$EXPIR = 0; 02077 M01S02014.sxmain +++| END 02078 M01S02015.sxmain +++| 02079 M01S02016.sxmain +++|# 02080 M01S02017.sxmain +++|* PROCESS SLAVE *TDAM* REQUESTS. 02081 M01S02018.sxmain +++|# 02082 M01S02019.sxmain +++| 02083 M01S02020.sxmain +++| THISRB = SINDX * NUMRB + RB; 02084 M01S02021.sxmain +++| IF THISRB EQ NXTRB 02085 M01S02022.sxmain +++| THEN 02086 M01S02023.sxmain +++| BEGIN 02087 M01S02024.sxmain +++| NXTRB = 0; 02088 M01S02025.sxmain +++| END 02089 M01S02026.sxmain +++| 02090 M01S02027.sxmain +++| ENTDAM(P<TDAM>,NXTRB,NEWTDAM); 02091 M01S02028.sxmain +++| 02092 M01S02029.sxmain +++| IF NEWTDAM NQ 0 02093 M01S02030.sxmain +++| THEN # REQUEST ACCEPTED # 02094 M01S02031.sxmain +++| BEGIN # PROCESS REQUEST ACCEPTED # 02095 M01S02032.sxmain +++| P<TDAM> = NEWTDAM; 02096 M01S02033.sxmain +++| IF TDAMFC[0] NQ TDAMFCODE"STAGE" 02097 M01S02034.sxmain +++| THEN # REPLY TO INTERLOCK REQUEST # 02098 M01S02035.sxmain +++| BEGIN 02099 M01S02036.sxmain +++| MSR$MRC[RB] = S"FINISHED"; 02100 M01S02037.sxmain +++| MSR$REPLY[RB] = REPLY"OK"; 02101 M01S02038.sxmain +++| MTOS$EXPIR = 0; 02102 M01S02039.sxmain +++| MSR$PDATE[RB] = PDATEV[0]; 02103 M01S02040.sxmain +++| RETURN; 02104 M01S02041.sxmain +++| END 02105 M01S02042.sxmain +++| 02106 M01S02043.sxmain +++| TDAMOSLV[0] = TRUE; 02107 M01S02044.sxmain +++| 02108 M01S02045.sxmain +++|# 02109 M01S02046.sxmain +++|* REPLY TO STAGE REQUEST. 02110 M01S02047.sxmain +++|# 02111 M01S02048.sxmain +++| 02112 M01S02049.sxmain +++| IF TDAMSSN[0] EQ 0 02113 M01S02050.sxmain +++| THEN # ESTABLISH A STAGING SEQUENCE 02114 M01S02051.sxmain +++| NUMBER # 02115 M01S02052.sxmain +++| BEGIN 02116 M01S02053.sxmain +++| TDAMSSN[0] = NEXTSSN; 02117 M01S02054.sxmain +++| NEXTSSN = NEXTSSN + 1; 02118 M01S02055.sxmain +++| IF NEXTSSN GQ MAXSSN 02119 M01S02056.sxmain +++| THEN 02120 M01S02057.sxmain +++| BEGIN 02121 M01S02058.sxmain +++| NEXTSSN = 1; 02122 M01S02059.sxmain +++| END 02123 M01S02060.sxmain +++| 02124 M01S02061.sxmain +++| END 02125 M01S02062.sxmain +++| 02126 M01S02063.sxmain +++| MSR$SSN[RB] = TDAMSSN[0]; 02127 M01S02064.sxmain +++| MSR$MRC[RB] = S"ACCEPTED"; 02128 M01S02065.sxmain +++| END # PROCESS REQUEST ACCEPTED # 02129 M01S02066.sxmain +++| 02130 M01S02067.sxmain +++| ELSE # REQUEST NOT ACCEPTED # 02131 M01S02068.sxmain +++| BEGIN 02132 M01S02069.sxmain +++| REJCNT = REJCNT + 1; 02133 M01S02070.sxmain +++| 02134 M01S02071.sxmain +++| IF NXTRB NQ 0 02135 M01S02072.sxmain +++| THEN 02136 M01S02073.sxmain +++| BEGIN 02137 M01S02074.sxmain +++| RELOOP = RELOOP OR (THISRB LS NXTRB); 02138 M01S02075.sxmain +++| END 02139 M01S02076.sxmain +++| 02140 M01S02077.sxmain +++| ELSE 02141 M01S02078.sxmain +++| BEGIN 02142 M01S02079.sxmain +++| NXTRB = THISRB; 02143 M01S02080.sxmain +++| END 02144 M01S02081.sxmain +++| 02145 M01S02082.sxmain +++| RETURN; 02146 M01S02083.sxmain +++| END 02147 M01S02084.sxmain +++| 02148 M01S02085.sxmain +++| END # SLVTDAM # 02149 M01S02086.sxmain +++| 02150 M01S02087.sxmain +++| TERM 02151 M01S02088.sxmain +++|PROC STARTUP; 02152 M01S02089.sxmain +++| 02153 M01S02090.sxmain +++|# TITLE STARTUP - HANDLES ALL *SSEXEC* INITIALIZATION. # 02154 M01S02091.sxmain +++| BEGIN # STARTUP # 02155 M01S02092.sxmain +++| 02156 M01S02093.sxmain +++|# 02157 M01S02094.sxmain +++|** STARTUP - HANDLES ALL *SSEXEC* INITIALIZATION. 02158 M01S02095.sxmain +++|* 02159 M01S02096.sxmain +++|* THIS ROUTINE PERFORMS ALL HARDWARE AND NON-HARDWARE INITIALIZING 02160 M01S02097.sxmain +++|* OF *SSEXEC*. 02161 M01S02098.sxmain +++|* 02162 M01S02099.sxmain +++|* PROC STARTUP. 02163 M01S02100.sxmain +++|* 02164 M01S02101.sxmain +++|* EXIT ALL INITIALIZATION HAS BEEN PERFORMED. 02165 M01S02102.sxmain +++|* 02166 M01S02103.sxmain +++|* NOTES THIS ROUTINE CALLS THE OVERLAY *INITLZR* TO 02167 M01S02104.sxmain +++|* PERFORM *SSEXEC* INITIALIZATION, AND 02168 M01S02105.sxmain +++|* THEN ISSUES AN *INITHW* *LLRQ* REQUEST TO 02169 M01S02106.sxmain +++|* TO INITIALIZE THE *M860* HARDWARE. 02170 M01S02107.sxmain +++|# 02171 M01S02108.sxmain +++| 02172 M01S02109.sxmain +++|# 02173 M01S02110.sxmain +++|**** PROC STARTUP - XREF LIST BEGIN. 02174 M01S02111.sxmain +++|# 02175 M01S02112.sxmain +++| 02176 M01S02113.sxmain +++| XREF 02177 M01S02114.sxmain +++| BEGIN 02178 M01S02115.sxmain +++| PROC KPROC; # *K* DISPLAY PROCESSOR # 02179 M01S02116.sxmain +++| PROC KREQ; # ISSUE K-DISPLAY REQUEST # 02180 M01S02117.sxmain +++| PROC SSOVL; # LOAD *MSAS* OVERLAYS # 02181 M01S02118.sxmain +++| PROC LLRQENQ; # *LLRQ* ENQUEUER # 02182 M01S02119.sxmain +++| PROC MSG; # ISSUE DAYFILE MESSAGE # 02183 M01S02120.sxmain +++| PROC RECALL; # SUSPEND PROCESSING # 02184 M01S02121.sxmain +++| END 02185 M01S02122.sxmain +++| 02186 M01S02123.sxmain +++|# 02187 M01S02124.sxmain +++|**** PROC STARTUP - XREF LIST END. 02188 M01S02125.sxmain +++|# 02189 M01S02126.sxmain +++| 02190 M01S02127.sxmain +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS #
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxmain.txt ยท Last modified: by 127.0.0.1