Seq # *Modification Id* Act
----------------------------+
00001 M01S00001.sxinit +++|PROC CALCTS;
00002 M01S00002.sxinit +++|# TITLE CALCTS - CALCULATE TABLE SPACE. #
00003 M01S00003.sxinit +++| BEGIN # CALCTS #
00004 M01S00004.sxinit +++|
00005 M01S00005.sxinit +++|#
00006 M01S00006.sxinit +++|** CALCTS - CALCULATE TABLE SPACE.
00007 M01S00007.sxinit +++|*
00008 M01S00008.sxinit +++|* THIS PROCEDURE WILL CALCULATE THE NUMBER OF ENTRIES AND THE SPACE
00009 M01S00009.sxinit +++|* REQUIRED FOR EACH OF THE VARIABLE TABLES, AND STORE THE RESULTS
00010 M01S00010.sxinit +++|* IN THE ARRAY *MAT*.
00011 M01S00011.sxinit +++|*
00012 M01S00012.sxinit +++|* EXIT TABLE CALCULATIONS COMPLETED.
00013 M01S00013.sxinit +++|#
00014 M01S00014.sxinit +++|
00015 M01S00015.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
00016 M01S00016.sxinit +++|*CALL COMBFAS
00017 M01S00017.sxinit +++|*CALL COMBCMD
00018 M01S00018.sxinit +++|*CALL COMBLBL
00019 M01S00019.sxinit +++|*CALL COMBLRQ
00020 M01S00020.sxinit +++|*CALL COMBMAT
00021 M01S00021.sxinit +++|*CALL COMBMCT
00022 M01S00022.sxinit +++|*CALL COMBTDM
00023 M01S00023.sxinit +++|*CALL COMBUDT
00024 M01S00024.sxinit +++|*CALL COMXBST
00025 M01S00025.sxinit +++|*CALL COMXCTF
00026 M01S00026.sxinit +++|*CALL COMXEXP
00027 M01S00027.sxinit +++|*CALL COMXFCQ
00028 M01S00028.sxinit +++|*CALL COMXHLR
00029 M01S00029.sxinit +++|*CALL,COMXIPR
00030 M01S00030.sxinit +++|*CALL COMXINT
00031 M01S00031.sxinit +++|*CALL COMXLTC
00032 M01S00001.sxinit2 +++|*CALL COMXMFD
00033 M01S00032.sxinit +++|*CALL COMXMSC
00034 M01S00033.sxinit +++|
00035 M01S00034.sxinit +++| ITEM TEMPCOUNT U; # TEMPORARY COUNT FIELD #
00036 M01S00035.sxinit +++| CONTROL EJECT;
00037 M01S00036.sxinit +++|
00038 M01S00037.sxinit +++|#
00039 M01S00038.sxinit +++|* CALCULATES THE SPACE REQUIRED AND THE NUMBER OF ENTRIES FOR EACH
00040 M01S00039.sxinit +++|* OF THE VARIABLE TABLES, AND STORES THE RESULTS IN THE ARRAY
00041 M01S00040.sxinit +++|* *MAT*.
00042 M01S00041.sxinit +++|#
00043 M01S00042.sxinit +++|
00044 M01S00043.sxinit +++| TEMPCOUNT = Q+2;
00045 M01S00044.sxinit +++|
00046 M01S00045.sxinit +++| MAT$COUNT[MAT$ENTRY"HLRQ"] = TEMPCOUNT;
00047 M01S00046.sxinit +++| MAT$SPACE[MAT$ENTRY"HLRQ"] = HLRQLEN * TEMPCOUNT;
00048 M01S00047.sxinit +++|
00049 M01S00048.sxinit +++|
00050 M01S00049.sxinit +++| MAT$COUNT[MAT$ENTRY"LLRQ"] = TEMPCOUNT;
00051 M01S00050.sxinit +++| MAT$SPACE[MAT$ENTRY"LLRQ"] = LLRQENTL * TEMPCOUNT;
00052 M01S00051.sxinit +++|
00053 M01S00052.sxinit +++| MAT$COUNT[MAT$ENTRY"RTRQ"] = Q * RTRQ$SPACE;
00054 M01S00053.sxinit +++| MAT$SPACE[MAT$ENTRY"RTRQ"] = (TDAMLEN + 1) * (Q * RTRQ$SPACE);
00055 M01S00054.sxinit +++|
00056 M01S00055.sxinit +++| MAT$COUNT[MAT$ENTRY"FCTQ"] = Q; # SET FCTQ FIELD #
00057 M01S00056.sxinit +++| MAT$SPACE[MAT$ENTRY"FCTQ"] = (FCTQHL+FCTENTL) * Q;
00058 M01S00057.sxinit +++|
00059 M01S00058.sxinit +++| BSTL = MAXCTN * 2;
00060 M01S00059.sxinit +++| MAT$COUNT[MAT$ENTRY"BST"] = BSTL;
00061 M01S00060.sxinit +++| MAT$SPACE[MAT$ENTRY"BST"] = BSTENTL * BSTL;
00062 M01S00061.sxinit +++|
00063 M01S00062.sxinit +++| LTCTCNT = FAMCNT + 3;
00064 M01S00063.sxinit +++| MAT$COUNT[MAT$ENTRY"LTCT"] = FAMCNT + 3;
00065 M01S00064.sxinit +++| MAT$SPACE[MAT$ENTRY"LTCT"] = LTCL * (FAMCNT + 3);
00066 M01S00065.sxinit +++|
00067 M01S00066.sxinit +++| MAT$COUNT[MAT$ENTRY"MRFT"] = FAMCNT;
00068 M01S00067.sxinit +++| MAT$SPACE[MAT$ENTRY"MRFT"] = MRFTLEN * FAMCNT;
00069 M01S00068.sxinit +++|
00070 M01S00069.sxinit +++| MAT$COUNT[MAT$ENTRY"OMT"] = MAXSM;
00071 M01S00070.sxinit +++| MAT$SPACE[MAT$ENTRY"OMT"] = OMTENTL * MAXSM;
00072 M01S00071.sxinit +++|
00073 M01S00072.sxinit +++| MAT$COUNT[MAT$ENTRY"OCT"] = 8 * FAMCNT;
00074 M01S00073.sxinit +++| MAT$SPACE[MAT$ENTRY"OCT"] = OCTENTL * 8 * FAMCNT;
00075 M01S00074.sxinit +++|
00076 M01S00075.sxinit +++| MAT$COUNT[MAT$ENTRY"PREAMBLE"] = 8 * FAMCNT;
00077 M01S00076.sxinit +++| MAT$SPACE[MAT$ENTRY"PREAMBLE"] = PRMTLEN * 8 * FAMCNT * 3;
00078 M01S00077.sxinit +++|
00079 M01S00002.sxinit2 +++| MAT$COUNT[MAT$ENTRY"SCR$BUF"] = BSTL;
00080 M01S00003.sxinit2 +++| MAT$SPACE[MAT$ENTRY"SCR$BUF"] = SCCBL * BSTL;
00081 M01S00004.sxinit2 +++|
00082 M01S00078.sxinit +++| MAT$COUNT[MAT$ENTRY"UDT$CONT"] = MAXCTN;
00083 M01S00079.sxinit +++| MAT$SPACE[MAT$ENTRY"UDT$CONT"] = UDTCUL + 1; # HEADER INCLUDED #
00084 M01S00080.sxinit +++|
00085 M01S00081.sxinit +++| MAT$COUNT[MAT$ENTRY"UDT$SM"] = MAXSMUNIT;
00086 M01S00082.sxinit +++| MAT$SPACE[MAT$ENTRY"UDT$SM"] = UDTSML;
00087 M01S00083.sxinit +++|
00088 M01S00084.sxinit +++| MAT$COUNT[MAT$ENTRY"CAT$FET"] = 1;
00089 M01S00085.sxinit +++| MAT$SPACE[MAT$ENTRY"CAT$FET"] = RFETL;
00090 M01S00086.sxinit +++|
00091 M01S00087.sxinit +++| MAT$COUNT[MAT$ENTRY"CAT$BUF"] = 1;
00092 M01S00088.sxinit +++| MAT$SPACE[MAT$ENTRY"CAT$BUF"] = FCTBL;
00093 M01S00089.sxinit +++|
00094 M01S00090.sxinit +++| MAT$COUNT[MAT$ENTRY"MAP$FET"] = 1;
00095 M01S00091.sxinit +++| MAT$SPACE[MAT$ENTRY"MAP$FET"] = RFETL;
00096 M01S00092.sxinit +++|
00097 M01S00093.sxinit +++| MAT$COUNT[MAT$ENTRY"MAP$BUF"] = 1;
00098 M01S00094.sxinit +++| MAT$SPACE[MAT$ENTRY"MAP$BUF"] = MAPBUFL;
00099 M01S00095.sxinit +++|
00100 M01S00096.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$FET"] = 1;
00101 M01S00097.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$FET"] = RFETL * 2;
00102 M01S00098.sxinit +++|
00103 M01S00099.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$BUF"] = 1;
00104 M01S00100.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$BUF"] = TBUFL;
00105 M01S00101.sxinit +++|
00106 M01S00102.sxinit +++| MAT$COUNT[MAT$ENTRY"TEMP$WB"] = 1;
00107 M01S00103.sxinit +++| MAT$SPACE[MAT$ENTRY"TEMP$WB"] = WBUFL;
00108 M01S00104.sxinit +++|
00109 M01S00105.sxinit +++| MAT$COUNT[MAT$ENTRY"AST$BUF"] = 1;
00110 M01S00106.sxinit +++| MAT$SPACE[MAT$ENTRY"AST$BUF"] = ABUFLEN;
00111 M01S00107.sxinit +++|
00112 M01S00108.sxinit +++| MAT$COUNT[MAT$ENTRY"LABBUF"] = 1;
00113 M01S00109.sxinit +++| MAT$SPACE[MAT$ENTRY"LABBUF"] = LABLEN;
00114 M01S00110.sxinit +++|
Line S00111 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00115 M02S00111.sxinit3 ---| MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC;
Line S00112 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00116 M02S00112.sxinit3 ---| MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC *
00117 M01S00001.sxinit3 +++| MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC;
00118 M01S00002.sxinit3 +++| MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC *
00119 M01S00113.sxinit +++| (MWBUFL + SFMWL + 1);
00120 M01S00114.sxinit +++| # READ BUFFER ADDRESS INCLUDED #
00121 M01S00115.sxinit +++|
Line S00116 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00122 M02S00116.sxinit3 ---| MAT$COUNT[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC;
Line S00117 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00123 M02S00117.sxinit3 ---| MAT$SPACE[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC * (MRBUFL+SFMRL);
00124 M01S00003.sxinit3 +++| MAT$COUNT[MAT$ENTRY"MR$BUFS"] = MAXCTUNIT * CHANPC;
00125 M01S00004.sxinit3 +++| MAT$SPACE[MAT$ENTRY"MR$BUFS"] = MAXCTUNIT*CHANPC*(MRBUFL+SFMRL);
00126 M01S00118.sxinit +++|
Line S00119 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00127 M02S00119.sxinit3 ---| MAT$COUNT[MAT$ENTRY"SBT"] = MAXCTN + (2 * MAXSMUNIT) + 1;
Line S00120 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00128 M02S00120.sxinit3 ---| MAT$SPACE[MAT$ENTRY"SBT"] = (MAXCTN+(2*MAXSMUNIT)+1) * MSGLT;
00129 M01S00005.sxinit3 +++| MAT$COUNT[MAT$ENTRY"SBT"] = MAXCTUNIT + (2 * MAXSMUNIT) + 1;
00130 M01S00006.sxinit3 +++| MAT$SPACE[MAT$ENTRY"SBT"] = (MAXCTUNIT+(2*MAXSMUNIT)+1) * MSGLT;
00131 M01S00121.sxinit +++|
00132 M01S00122.sxinit +++| END # CALCTS #
00133 M01S00123.sxinit +++|
00134 M01S00124.sxinit +++| TERM
00135 M01S00125.sxinit +++|PROC CRAST((FCTX),(QADDR),(ASTADDR));
00136 M01S00126.sxinit +++|
00137 M01S00127.sxinit +++|# TITLE CRAST - CREATE *AST* ENTRY. #
00138 M01S00128.sxinit +++| BEGIN # CRAST #
00139 M01S00129.sxinit +++|
00140 M01S00130.sxinit +++|#
00141 M01S00131.sxinit +++|** CRAST - CREATE *AST* ENTRY.
00142 M01S00132.sxinit +++|*
00143 M01S00133.sxinit +++|* THIS PROCEDURE WILL SCAN THE *FCT* ENTRY AT ORDINAL *FCTX* TO
00144 M01S00134.sxinit +++|* CREATE THE CORRESPONDING TRIAL *AST* ENTRY TO BE
00145 M01S00135.sxinit +++|* CHECKED WITH THE EXISTING AST IN THE PROCEDURE OPENCAT.
00146 M01S00136.sxinit +++|*
00147 M01S00137.sxinit +++|* PROC CRAST((FCTX),(QADDR),(ASTADDR))
00148 M01S00138.sxinit +++|*
00149 M01S00139.sxinit +++|* ENTRY (FCTX) = ORDINAL OF *FCT* ENTRY.
00150 M01S00140.sxinit +++|* (QADDR) = ADDRESS OF *FCTQ* ENTRY.
00151 M01S00141.sxinit +++|* (ASTADDR) = ADDRESS OF *AST* BUFFER.
00152 M01S00142.sxinit +++|*
00153 M01S00143.sxinit +++|* EXIT *AST* ENTRY HAS BEEN CONSTRUCTED.
00154 M01S00144.sxinit +++|#
00155 M01S00145.sxinit +++|
00156 M01S00146.sxinit +++| ITEM FCTX U; # ORDINAL OF *FCT* ENTRY #
00157 M01S00147.sxinit +++| ITEM QADDR U; # ADDRESS OF *FCTQ* ENTRY #
00158 M01S00148.sxinit +++| ITEM ASTADDR U; # ADDRESS OF *AST* BUFFER #
00159 M01S00149.sxinit +++|
00160 M01S00150.sxinit +++| DEF SPACES #" "#; # SPACES #
00161 M01S00151.sxinit +++|
00162 M01S00152.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
00163 M01S00153.sxinit +++|
00164 M01S00154.sxinit +++|*CALL COMBFAS
00165 M01S00155.sxinit +++|*CALL COMBMCT
00166 M01S00156.sxinit +++|*CALL COMXCTF
00167 M01S00157.sxinit +++|*CALL COMXFCQ
00168 M01S00158.sxinit +++|*CALL COMXINT
00169 M01S00159.sxinit +++|*CALL COMXMSC
00170 M01S00160.sxinit +++|
00171 M01S00161.sxinit +++| ITEM ATBNDRY B; # TRUE IF AT *CDP* OR DONE #
00172 M01S00162.sxinit +++| ITEM DONE B; # TRUE IF AFTER LAST AU #
00173 M01S00163.sxinit +++| ITEM I U; # INDEX #
00174 M01S00164.sxinit +++| ITEM LASTBUSY U; # LAST PROTECTED AU #
00175 M01S00165.sxinit +++| ITEM NXTFREE U; # NEXT (EXPECTED) FREE VOLUME #
00176 M01S00166.sxinit +++| ITEM PREVVOL U; # AU OF PREVIOUS VOLUME #
00177 M01S00167.sxinit +++| ITEM TEMP U; # TEMPORARY #
00178 M01S00168.sxinit +++| ITEM THISAU U; # LOOP INDEX #
00179 M01S00169.sxinit +++| ITEM TOTAU U; # TOTAL AU AVAILABLE FOR
00180 M01S00170.sxinit +++| ALLOCATION #
00181 M01S00171.sxinit +++| ITEM VOLLN U; # NUMBER OF (EXPECTED)
00182 M01S00172.sxinit +++| CONTINUATION AU #
00183 M01S00173.sxinit +++|
00184 M01S00174.sxinit +++|
00185 M01S00175.sxinit +++| CONTROL EJECT;
00186 M01S00176.sxinit +++|
00187 M01S00177.sxinit +++| P<FCT> = QADDR + FCTQHL;
00188 M01S00178.sxinit +++| P<AST> = ASTADDR;
00189 M01S00179.sxinit +++| IF AST$STAT[FCTX] NQ ASTENSTAT"ASS$CART"
00190 M01S00180.sxinit +++| THEN
00191 M01S00181.sxinit +++| BEGIN
00192 M01S00182.sxinit +++| RETURN;
00193 M01S00183.sxinit +++| END
00194 M01S00184.sxinit +++|
00195 M01S00185.sxinit +++|#
00196 M01S00186.sxinit +++|* DET OFF CARTRIDGE LINK AND ALLOCATION ALLOWED FLAGS IS AST.
00197 M01S00187.sxinit +++|#
00198 M01S00188.sxinit +++|
00199 M01S00189.sxinit +++| AST$NOCLF[FCTX] = FCT$OCLF[FCTX] EQ 7;
00200 M01S00190.sxinit +++| AST$AAF[FCTX] = NOT ( FCT$IAF[0] OR FCT$LCF[0] OR ##
00201 M01S00191.sxinit +++| FCT$EEF[0] OR FCT$SEF[0] OR ##
00202 M01S00192.sxinit +++| FCT$FCF[0]) OR (FCT$ORD[0] NQ FCTX);
00203 M01S00193.sxinit +++|
00204 M01S00194.sxinit +++|#
00205 M01S00195.sxinit +++|* THE OBJECTIVES OF THE FOLLOWING ANALYSIS OF THE *FCT* ENTRY
00206 M01S00196.sxinit +++|* ARE THREEFOLD:
00207 M01S00197.sxinit +++|*
00208 M01S00198.sxinit +++|* 1) COUNT THE AU AVAILABLE FOR ALLOCATION.
00209 M01S00199.sxinit +++|*
00210 M01S00200.sxinit +++|* 2) IDENTIFY THE FREE AU WHICH CAN SAFELY BE ALLOCATED
00211 M01S00201.sxinit +++|* FOR STORAGE OF FILE DATA, LEAVING ALONE THOSE AU
00212 M01S00202.sxinit +++|* WHICH ARE UNALLOCATED, BUT ARE FLAGGED, FLAWED OR
00213 M01S00203.sxinit +++|* INCLUDED WITHIN THE COUNT OF CONTINUATION AU OF
00214 M01S00204.sxinit +++|* AN AU OR VOLUME WHICH IS ALLOCATED.
00215 M01S00205.sxinit +++|*
00216 M01S00206.sxinit +++|* 3) RE-ORGANIZE THESE USABLE AU INTO VOLUMES AND REBUILD
00217 M01S00207.sxinit +++|* THE CHAIN OF AVAILABLE VOLUMES FOR USE BY THE ALLOCATOR.
00218 M01S00208.sxinit +++|*
00219 M01S00209.sxinit +++|* A LOOP EXAMINES EACH AU IN THE *FCT* ENTRY. EACH AU IS
00220 M01S00210.sxinit +++|* REJECTED AS BEING AVAILABLE IF IT IS BUSY, FLAWED, OR HAS
00221 M01S00211.sxinit +++|* OTHER FLAGS SET. AN AU WHICH IS EXPECTED TO BE A
00222 M01S00212.sxinit +++|* CONTINUATION AU FOR A VOLUME AVAILABLE FOR ALLOCATION IS
00223 M01S00213.sxinit +++|* ACCEPTED IN THE VOLUME IF IT IS NOT BUSY OR FLAGGED.
00224 M01S00214.sxinit +++|* ANY AU WHICH IS NOT BUSY, FLAGGED, OR PART OF A VOLUME IS
00225 M01S00215.sxinit +++|* TREATED AS THE START OF A NEW VOLUME, AND PROPERLY LINKED
00226 M01S00216.sxinit +++|* INTO THE CHAIN OF FREE VOLUMES.
00227 M01S00217.sxinit +++|*
00228 M01S00218.sxinit +++|* THE FOLLOWING SEQUENCE OF STEPS IS TAKEN TO ACHIEVE THE ABOVE:
00229 M01S00219.sxinit +++|*
00230 M01S00220.sxinit +++|* 1) DETERMINE IF THIS AU IS JUST AFTER A BOUNDARY POINT,
00231 M01S00221.sxinit +++|* I.E., IT IS JUST AFTER THE LAST AU FOR SHORT OR LONG FILES.
00232 M01S00222.sxinit +++|*
00233 M01S00223.sxinit +++|* 2) IF A VOLUME OF FREE AU IS BEING ACCUMULATED, REDUCE THE
00234 M01S00224.sxinit +++|* VOLUME LENGTH IF IT WOULD OTHERWISE INCLUDE AN AU WHICH
00235 M01S00225.sxinit +++|* SHOULD NOT BE PART OF THE VOLUME.
00236 M01S00226.sxinit +++|*
00237 M01S00227.sxinit +++|* 3) IF THIS AU IS JUST AFTER A BOUNDARY POINT (SEE STEP 1),
00238 M01S00228.sxinit +++|* - VERIFY THAT THE FREE VOLUME CHAIN IS TERMINATED WITH A
00239 M01S00229.sxinit +++|* LINK=0.
00240 M01S00230.sxinit +++|* - SAVE THE COUNT OF FREE AU IN THE *FCT* HEADER.
00241 M01S00231.sxinit +++|* - IF AT START OF AU FOR LONG FILES, RESET COUNTERS.
00242 M01S00232.sxinit +++|*
00243 M01S00233.sxinit +++|* 4) IF THIS AU IS BUSY,
00244 M01S00234.sxinit +++|* - SET A VARIABLE SO THAT ANY AU WHICH ARE CLAIMED TO
00245 M01S00235.sxinit +++|* BE CONTINUATION AU ARE NOT TREATED AS AVAILABLE FOR
00246 M01S00236.sxinit +++|* ALLOCATION REGARDLESS OF THEIR *FCT* ENTRY.
00247 M01S00237.sxinit +++|* - LOOP TO EXAMINE THE NEXT AU.
00248 M01S00238.sxinit +++|*
00249 M01S00239.sxinit +++|* 5) IF THE AU IS PROTECTED (SEE STEP 4) OR FLAGGED, LOOP TO
00250 M01S00240.sxinit +++|* EXAMINE THE NEXT AU.
00251 M01S00241.sxinit +++|*
00252 M01S00242.sxinit +++|* 6) PROCESS THE AU WHICH IS REALLY AVAILABLE FOR ALLOCATION.
00253 M01S00243.sxinit +++|* - CLEAR CONTINUATION FLAG..FORCE A HEAD OF VOLUME STATUS.
00254 M01S00244.sxinit +++|* - ADJUST IF NECESSARY THE FREE VOLUME LINKAGE TO POINT
00255 M01S00245.sxinit +++|* TO THIS AU (VOLUME).
00256 M01S00246.sxinit +++|* - SAVE LENGTH FIELD AS THE COUNT OF NUMBER OF EXPECTED
00257 M01S00247.sxinit +++|* CONTINUATION AU.
00258 M01S00248.sxinit +++|* - SAVE LINK FIELD AS THE NEXT EXPECTED FREE VOLUME.
00259 M01S00249.sxinit +++|* - SAVE THE ID OF THIS VOLUME IN CASE ITS LENGTH HAS
00260 M01S00250.sxinit +++|* TO BE REDUCED (SEE STEP 2), OR ITS LINK HAS TO BE
00261 M01S00251.sxinit +++|* ADJUSTED (SEE ABOVE SUBSTEP).
00262 M01S00252.sxinit +++|#
00263 M01S00253.sxinit +++|
00264 M01S00254.sxinit +++| FCT$FLAWS[0] = 0;
00265 M01S00255.sxinit +++| PREVVOL = 0;
00266 M01S00256.sxinit +++| NXTFREE = FCT$FAUSF[0];
00267 M01S00257.sxinit +++| TOTAU = 0;
00268 M01S00258.sxinit +++| VOLLN = 0;
00269 M01S00259.sxinit +++| LASTBUSY = 0;
00270 M01S00260.sxinit +++| DONE = FALSE;
00271 M01S00261.sxinit +++|
00272 M01S00262.sxinit +++| FOR THISAU = 1 STEP 1 WHILE NOT DONE
00273 M01S00263.sxinit +++| DO
00274 M01S00264.sxinit +++| BEGIN # THISAU LOOP #
00275 M01S00265.sxinit +++|
00276 M01S00266.sxinit +++|#
00277 M01S00267.sxinit +++|* STEP 1 - DETERMINE IF AT A BOUNDARY POINT.
00278 M01S00268.sxinit +++|#
00279 M01S00269.sxinit +++|
00280 M01S00270.sxinit +++| SETFCTX(THISAU);
00281 M01S00271.sxinit +++| DONE = THISAU GR FCT$AVOT[0];
00282 M01S00272.sxinit +++| ATBNDRY = (THISAU EQ FCT$CDP[0]) OR DONE;
00283 M01S00273.sxinit +++|
00284 M01S00274.sxinit +++|#
00285 M01S00275.sxinit +++|* STEP 2 - IF IN A SEQUENCE OF CONTINUATION AU, VERIFY THAT
00286 M01S00276.sxinit +++|* THIS AU CAN BE INCLUDED. IF NOT, CORRECT VOLUME LENGTH.
00287 M01S00277.sxinit +++|#
00288 M01S00278.sxinit +++|
00289 M01S00279.sxinit +++| IF VOLLN NQ 0
00290 M01S00280.sxinit +++| THEN
00291 M01S00281.sxinit +++| BEGIN # STEP 2 #
00292 M01S00282.sxinit +++| FCT$CLFG(0,0) = FCT$CLFG(FWD,FPS);
00293 M01S00283.sxinit +++| FCT$CAUF(0,0) = 1-FCT$CAUF(0,0);
00294 M01S00284.sxinit +++|
00295 M01S00285.sxinit +++| IF (FCT$FLGS1(0,0) EQ 0) ##
00296 M01S00286.sxinit +++| AND NOT ATBNDRY
00297 M01S00287.sxinit +++| THEN # AU IS OK AS A CONTINUATION AU #
00298 M01S00288.sxinit +++| BEGIN
00299 M01S00289.sxinit +++| TOTAU = TOTAU + 1;
00300 M01S00290.sxinit +++| FCT$CLFG(FWD,FPS) = 0;
00301 M01S00291.sxinit +++| FCT$CAUF(FWD,FPS) = 1;
00302 M01S00292.sxinit +++| FCT$LEN(FWD,FPS) = VOLLN - 1;
00303 M01S00293.sxinit +++| FCT$LINK(FWD,FPS) = PREVVOL;
00304 M01S00294.sxinit +++| VOLLN = VOLLN - 1;
00305 M01S00295.sxinit +++| TEST THISAU;
00306 M01S00296.sxinit +++| END
00307 M01S00297.sxinit +++|
00308 M01S00298.sxinit +++| ELSE # TERMINATE THIS VOLUME AND ADJUST
00309 M01S00299.sxinit +++| ITS LENGTH #
00310 M01S00300.sxinit +++| BEGIN
00311 M01S00301.sxinit +++| SETFCTX(PREVVOL);
00312 M01S00302.sxinit +++| FCT$LEN(FWD,FPS) = FCT$LEN(FWD,FPS) - VOLLN;
00313 M01S00303.sxinit +++| VOLLN = 0;
00314 M01S00304.sxinit +++| END
00315 M01S00305.sxinit +++|
00316 M01S00306.sxinit +++| END # STEP 2 #
00317 M01S00307.sxinit +++|
00318 M01S00308.sxinit +++|#
00319 M01S00309.sxinit +++|* STEP 3 - PROCESS BOUNDARY CONDITION.
00320 M01S00310.sxinit +++|#
00321 M01S00311.sxinit +++|
00322 M01S00312.sxinit +++| IF ATBNDRY
00323 M01S00313.sxinit +++| THEN
00324 M01S00314.sxinit +++| BEGIN # STEP 3 #
00325 M01S00315.sxinit +++| SETFCTX(PREVVOL);
00326 M01S00316.sxinit +++| IF NXTFREE NQ 0
00327 M01S00317.sxinit +++| THEN # SET LINK TO ZERO #
00328 M01S00318.sxinit +++| BEGIN
00329 M01S00319.sxinit +++| FCT$LINK(FWD,FPS) = 0;
00330 M01S00320.sxinit +++| END
00331 M01S00321.sxinit +++|
00332 M01S00322.sxinit +++| IF DONE
00333 M01S00323.sxinit +++| THEN # FINISHED AU FOR LONG FILES #
00334 M01S00324.sxinit +++| BEGIN
00335 M01S00325.sxinit +++| AST$AULF[FCTX] = TOTAU;
00336 M01S00326.sxinit +++| IF FCT$FAULF[0] EQ 0
00337 M01S00327.sxinit +++| THEN
00338 M01S00328.sxinit +++| BEGIN
00339 M01S00329.sxinit +++| AST$AULF[FCTX] = 0;
00340 M01S00330.sxinit +++| END
00341 M01S00331.sxinit +++|
00342 M01S00332.sxinit +++| TEST THISAU;
00343 M01S00333.sxinit +++| END
00344 M01S00334.sxinit +++|
00345 M01S00335.sxinit +++| ELSE # FINISHED AU FOR SHORT FILES #
00346 M01S00336.sxinit +++| BEGIN
00347 M01S00337.sxinit +++| AST$AUSF[FCTX] = TOTAU;
00348 M01S00338.sxinit +++| TOTAU = 0;
00349 M01S00339.sxinit +++| PREVVOL = 0;
00350 M01S00340.sxinit +++| NXTFREE = FCT$FAULF[0];
00351 M01S00341.sxinit +++| END
00352 M01S00342.sxinit +++|
00353 M01S00343.sxinit +++| END # STEP 3 #
00354 M01S00344.sxinit +++|
00355 M01S00345.sxinit +++|#
00356 M01S00346.sxinit +++|* STEP 4 - PROCESS AU BUSY.
00357 M01S00347.sxinit +++|#
00358 M01S00348.sxinit +++|
00359 M01S00349.sxinit +++| SETFCTX(THISAU);
00360 M01S00350.sxinit +++| IF FCT$FBF(FWD,FPS) EQ 1
00361 M01S00351.sxinit +++| THEN # AU IS BUSY, PROTECT ALL AU
00362 M01S00352.sxinit +++| COVERED BY LENGTH FIELD #
00363 M01S00353.sxinit +++| BEGIN
00364 M01S00354.sxinit +++| TEMP = THISAU + FCT$LEN(FWD,FPS);
00365 M01S00355.sxinit +++| IF TEMP GR LASTBUSY
00366 M01S00356.sxinit +++| THEN
00367 M01S00357.sxinit +++| BEGIN
00368 M01S00358.sxinit +++| LASTBUSY = TEMP;
00369 M01S00359.sxinit +++| END
00370 M01S00360.sxinit +++|
00371 M01S00361.sxinit +++| TEST THISAU;
00372 M01S00362.sxinit +++| END
00373 M01S00363.sxinit +++|
00374 M01S00364.sxinit +++|#
00375 M01S00365.sxinit +++|* STEP 5 - SKIP ANY AU THAT ARE PROTECTED OR FLAGGED.
00376 M01S00366.sxinit +++|#
00377 M01S00367.sxinit +++|
00378 M01S00368.sxinit +++| FCT$CAUF(FWD,FPS) = 0; # CLEAR CONTINUATION AU FLAG #
00379 M01S00369.sxinit +++|
00380 M01S00370.sxinit +++| IF FCT$FAUF(FWD,FPS) NQ 0
00381 M01S00371.sxinit +++| THEN # COUNT FLAWED AU #
00382 M01S00372.sxinit +++| BEGIN
00383 M01S00373.sxinit +++| FCT$FLAWS[0] = FCT$FLAWS[0] + 1;
00384 M01S00374.sxinit +++| END
00385 M01S00375.sxinit +++|
00386 M01S00376.sxinit +++| IF THISAU LQ LASTBUSY ##
00387 M01S00377.sxinit +++| OR (FCT$FLGS1(FWD,FPS) NQ 0)
00388 M01S00378.sxinit +++| THEN
00389 M01S00379.sxinit +++| BEGIN
00390 M01S00380.sxinit +++| TEST THISAU;
00391 M01S00381.sxinit +++| END
00392 M01S00382.sxinit +++|
00393 M01S00383.sxinit +++|#
00394 M01S00384.sxinit +++|* STEP 6 - ENSURE THE VOLUME HEADED BY THIS AU IS IN THE
00395 M01S00385.sxinit +++|* FREE SPACE CHAIN.
00396 M01S00386.sxinit +++|* - IF THE NEXT EXPECTED FREE VOLUME (*NXTFREE*)
00397 M01S00387.sxinit +++|* IS BEYOND THIS AU, INSERT THIS AU IN THE MIDDLE
00398 M01S00388.sxinit +++|* OF THE CHAIN.
00399 M01S00389.sxinit +++|* - IF THE NEXT EXPECTED FREE VOLUME IS PRIOR TO THIS
00400 M01S00390.sxinit +++|* AU, CORRECT THE LINK FIELD OF THE PREVIOUS VOLUME
00401 M01S00391.sxinit +++|* BY LINKING TO THIS AU.
00402 M01S00392.sxinit +++|* - USE THE VOLUME LENGTH AND LINK FIELDS AS SPECIFIED
00403 M01S00393.sxinit +++|* BY THIS AU-S *FCT* ENTRY. IF THEY ARE NOT CORRECT,
00404 M01S00394.sxinit +++|* STEP 2 WILL REDUCE THE LENGTH, AND STEP 3 OR THIS
00405 M01S00395.sxinit +++|* STEP WILL CORRECT THE LINK FIELD.
00406 M01S00396.sxinit +++|#
00407 M01S00397.sxinit +++|
00408 M01S00398.sxinit +++| IF THISAU NQ NXTFREE
00409 M01S00399.sxinit +++| THEN # NEED TO CORRECT LINKAGE #
00410 M01S00400.sxinit +++| BEGIN # CORRECT LINKAGE #
00411 M01S00401.sxinit +++| IF THISAU LS NXTFREE
00412 M01S00402.sxinit +++| THEN # ADD THIS AU (VOLUME) TO CURRENT
00413 M01S00403.sxinit +++| CHAIN #
00414 M01S00404.sxinit +++| BEGIN
00415 M01S00405.sxinit +++| FCT$LINK(FWD,FPS) = NXTFREE;
00416 M01S00406.sxinit +++| END
00417 M01S00407.sxinit +++|
00418 M01S00408.sxinit +++|#
00419 M01S00409.sxinit +++|* ADJUST LINK FIELD OF PREVIOUS ENTRY TO POINT TO THIS VOLUME.
00420 M01S00410.sxinit +++|#
00421 M01S00411.sxinit +++|
00422 M01S00412.sxinit +++| IF PREVVOL EQ 0
00423 M01S00413.sxinit +++| THEN # UPDATE FREE SPACE POINTERS #
00424 M01S00414.sxinit +++| BEGIN
00425 M01S00415.sxinit +++| IF THISAU LS FCT$CDP[0]
00426 M01S00416.sxinit +++| THEN # UPDATE SHORT FILE POINTER #
00427 M01S00417.sxinit +++| BEGIN
00428 M01S00418.sxinit +++| FCT$FAUSF[0] = THISAU;
00429 M01S00419.sxinit +++| END
00430 M01S00420.sxinit +++|
00431 M01S00421.sxinit +++| ELSE # UPDATE LONG FILE POINTER #
00432 M01S00422.sxinit +++| BEGIN
00433 M01S00423.sxinit +++| FCT$FAULF[0] = THISAU;
00434 M01S00424.sxinit +++| END
00435 M01S00425.sxinit +++|
00436 M01S00426.sxinit +++| END
00437 M01S00427.sxinit +++|
00438 M01S00428.sxinit +++| ELSE # UPDATE PREVIOUS LINK #
00439 M01S00429.sxinit +++| BEGIN
00440 M01S00430.sxinit +++| SETFCTX(PREVVOL);
00441 M01S00431.sxinit +++| FCT$LINK(FWD,FPS) = THISAU;
00442 M01S00432.sxinit +++| END
00443 M01S00433.sxinit +++|
00444 M01S00434.sxinit +++| END # CORRECT LINKAGE #
00445 M01S00435.sxinit +++|
00446 M01S00436.sxinit +++| SETFCTX(THISAU);
00447 M01S00437.sxinit +++| TOTAU = TOTAU + 1;
00448 M01S00438.sxinit +++| PREVVOL = THISAU;
00449 M01S00439.sxinit +++| NXTFREE = FCT$LINK(FWD,FPS);
00450 M01S00440.sxinit +++| VOLLN = FCT$LEN(FWD,FPS);
00451 M01S00441.sxinit +++| TEST THISAU;
00452 M01S00442.sxinit +++| END # THISAU LOOP #
00453 M01S00443.sxinit +++|
00454 M01S00444.sxinit +++| FCT$CLFG(0,0) = 0;
00455 M01S00445.sxinit +++| RETURN;
00456 M01S00446.sxinit +++| END # CRAST #
00457 M01S00447.sxinit +++|
00458 M01S00448.sxinit +++| TERM
00459 M01S00449.sxinit +++|PROC GETRTP;
00460 M01S00450.sxinit +++|# TITLE GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS. #
00461 M01S00451.sxinit +++|
00462 M01S00452.sxinit +++| BEGIN # GETRTP #
00463 M01S00453.sxinit +++|
00464 M01S00454.sxinit +++|#
00465 M01S00455.sxinit +++|** GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS.
00466 M01S00456.sxinit +++|*
00467 M01S00457.sxinit +++|* THIS ROUTINE WILL GET AND PROCESS THE TUNING PARAMETER
00468 M01S00458.sxinit +++|* AND THE TRACE MODE PARAMETER.
00469 M01S00459.sxinit +++|*
00470 M01S00460.sxinit +++|* PROC GETRTP
00471 M01S00461.sxinit +++|*
00472 M01S00462.sxinit +++|* EXIT THE RUN TIME PARAMETERS HAVE BEEN PROCESSED.
00473 M01S00463.sxinit +++|*
00474 M01S00464.sxinit +++|* MESSAGE 1) EXEC ABORT - SYNTAX ERROR.
00475 M01S00465.sxinit +++|*
00476 M01S00466.sxinit +++|* 2) *Q* PARAMETER TOO LARGE -
00477 M01S00467.sxinit +++|* MAXIMUM ALLOWABLE VALUE SUBSTITUTED.
00478 M01S00468.sxinit +++|*
00479 M01S00469.sxinit +++|* 3) *Q* PARAMETER TOO SMALL -
00480 M01S00470.sxinit +++|* MINIMUM ALLOWABLE VALUE SUBSTITUTED.
00481 M01S00471.sxinit +++|#
00482 M01S00472.sxinit +++|
00483 M01S00473.sxinit +++|#
00484 M01S00474.sxinit +++|**** PROC GETRTP - XREF LIST BEGIN.
00485 M01S00475.sxinit +++|#
00486 M01S00476.sxinit +++|
00487 M01S00477.sxinit +++| XREF
00488 M01S00478.sxinit +++| BEGIN
00489 M01S00479.sxinit +++| PROC EXTAB; # SETS UP PARAMETER LIST #
00490 M01S00480.sxinit +++| PROC MESSAGE; # ISSUES MESSAGE TO DAYFILE #
00491 M01S00481.sxinit +++| PROC XARG; # CRACK PARAMETER LIST #
00492 M01S00482.sxinit +++| PROC XDXB; # CONVERT DECIMAL TO BINARY #
00493 M01S00483.sxinit +++| END
00494 M01S00484.sxinit +++|
00495 M01S00485.sxinit +++|#
00496 M01S00486.sxinit +++|**** PROC GETRTP - XREF LIST END.
00497 M01S00487.sxinit +++|#
00498 M01S00488.sxinit +++|
00499 M01S00489.sxinit +++|
00500 M01S00490.sxinit +++|
00501 M01S00491.sxinit +++| DEF DEC$TYPE #1#; # DECIMAL TYPE CONVERSION #
00502 M01S00492.sxinit +++| DEF QAVERAGE #10#; # AVERAGE TUNING PARAMETER VALUE #
00503 M01S00493.sxinit +++| DEF QMAXIMUM #50#; # MAXIMUM TUNING PARAMETER VALUE #
00504 M01S00494.sxinit +++| DEF QMINIMUM #6#; # MINIMUM TUNING PARAMETER VALUE #
00505 M01S00495.sxinit +++| DEF SYNTAXOK #0#; # NO SYNTAX ERRORS #
00506 M01S00496.sxinit +++|
00507 M01S00497.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
00508 M01S00498.sxinit +++|*CALL COMBFAS
00509 M01S00499.sxinit +++|*CALL COMXCTF
00510 M01S00500.sxinit +++|*CALL COMXEXP
00511 M01S00501.sxinit +++|*CALL COMXINT
00512 M01S00502.sxinit +++|*CALL,COMXJCA
00513 M01S00503.sxinit +++|
00514 M01S00504.sxinit +++| ITEM ARGLIST U; # ADDRESS OF ARGUMENT LIST #
00515 M01S00505.sxinit +++| ITEM ARG$Q I; # INTEGER TUNING PARAMETER #
00516 M01S00506.sxinit +++| ITEM DFLT B; # DEFAULT *Q* FLAG #
00517 M01S00507.sxinit +++| ITEM FLAG U; # STATUS FLAG FOR ASARG #
00518 M01S00508.sxinit +++| ITEM OPTION U; # OPTION TO SKIP PROGRAM NAME #
00519 M01S00509.sxinit +++|
00520 M01S00510.sxinit +++|#
00521 M01S00511.sxinit +++|* MESSAGE BUFFER.
00522 M01S00512.sxinit +++|#
00523 M01S00513.sxinit +++|
00524 M01S00514.sxinit +++| ARRAY MSGBUF[0:0] P(5);
00525 M01S00515.sxinit +++| BEGIN # ARRAY MSGBUF #
00526 M01S00516.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE #
00527 M01S00517.sxinit +++| ITEM MSG$RZRO C(04,00,12); # ZERO BYE TERMINATOR #
00528 M01S00518.sxinit +++| END # ARRAY MSGBUF #
00529 M01S00519.sxinit +++|
00530 M01S00520.sxinit +++| CONTROL EJECT;
00531 M01S00521.sxinit +++|
00532 M01S00522.sxinit +++|#
00533 M01S00523.sxinit +++|* GET THE RUN TIME PARAMETERS.
00534 M01S00524.sxinit +++|#
00535 M01S00525.sxinit +++|
00536 M01S00526.sxinit +++| EXTAB(ARGLIST); # SET UP ARGUMENT LIST #
00537 M01S00527.sxinit +++| OPTION = 0; # SKIP OVER PROGRAM NAME #
00538 M01S00528.sxinit +++| XARG(ARGLIST,OPTION,FLAG); # GET PARAMETERS #
00539 M01S00529.sxinit +++|
00540 M01S00530.sxinit +++| IF FLAG NQ SYNTAXOK
00541 M01S00531.sxinit +++| THEN
00542 M01S00532.sxinit +++| BEGIN # IF SYNTAX ERRORS DETECTED BY ASARG #
00543 M01S00533.sxinit +++| MSG$LINE[0] = " EXEC ABORT - SYNTAX ERRORS. ";
00544 M01S00534.sxinit +++| MESSAGE(MSGBUF[0],UDFL1); # ERROR MESSAGE TO DAYFILE #
00545 M01S00535.sxinit +++| FATALERR = TRUE;
00546 M01S00536.sxinit +++| RETURN;
00547 M01S00537.sxinit +++| END # IF SYNTAX ERRORS DETECTED BY ASARG #
00548 M01S00538.sxinit +++|
00549 M01S00539.sxinit +++|#
00550 M01S00540.sxinit +++|* CHANGE DISPLAY CODE *S* PARAMETER TO DECIMAL INTEGER. IF
00551 M01S00541.sxinit +++|* *S* PARAMETER IS NOT FOUND ON CONTROL COMMAND, *ARG$S*
00552 M01S00542.sxinit +++|* WILL BE SET TO -1.
00553 M01S00543.sxinit +++|#
00554 M01S00544.sxinit +++|
00555 M01S00545.sxinit +++| XDXB(ARG$SC[0],DEC$TYPE,ARG$S);
00556 M01S00546.sxinit +++|
00557 M01S00547.sxinit +++|#
00558 M01S00548.sxinit +++|* SET THE SMALLEST *HLRQ* COUNT.
00559 M01S00549.sxinit +++|#
00560 M01S00550.sxinit +++|
00561 M01S00551.sxinit +++| Q = MAXSMUNIT * 2; # SET MAXIMUN AND DEFAULT *HLRQ* COUNT #
00562 M01S00552.sxinit +++| IF MIMHLRQ LS Q
00563 M01S00553.sxinit +++| THEN
00564 M01S00554.sxinit +++| BEGIN # FORCE THE SMALLEST *HLRQ* COUNT #
00565 M01S00555.sxinit +++| Q = MIMHLRQ;
00566 M01S00556.sxinit +++| END
00567 M01S00557.sxinit +++|
00568 M01S00558.sxinit +++|
00569 M01S00559.sxinit +++|#
00570 M01S00560.sxinit +++|* SET *RA$TRACE* TO *TRUE* IF *TM* PARAMETER SPECIFIED.
00571 M01S00561.sxinit +++|#
00572 M01S00562.sxinit +++|
00573 M01S00563.sxinit +++| RA$TRACE = (ARG$T NQ -1);
00574 M01S00564.sxinit +++|
00575 M01S00565.sxinit +++| RETURN;
00576 M01S00566.sxinit +++| END # GETRTP #
00577 M01S00567.sxinit +++|
00578 M01S00568.sxinit +++| TERM
00579 M01S00569.sxinit +++|PROC GETUDT;
00580 M01S00570.sxinit +++|# TITLE GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION. #
00581 M01S00571.sxinit +++|
00582 M01S00572.sxinit +++| BEGIN # GETUDT #
00583 M01S00573.sxinit +++|
00584 M01S00574.sxinit +++|#
00585 M01S00575.sxinit +++|** GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION.
00586 M01S00576.sxinit +++|*
00587 M01S00577.sxinit +++|* THIS ROUTINE WILL INITIALIZE VARIABLES DEFINING THE
00588 M01S00578.sxinit +++|* CONFIGURATION OF THE CONTROLLERS AND STORAGE MODULES.
00589 M01S00579.sxinit +++|*
00590 M01S00580.sxinit +++|* PROC GETUDT.
00591 M01S00581.sxinit +++|*
00592 M01S00582.sxinit +++|* ENTRY M860 HARDWARE CONFIGURATION EXISTS.
00593 M01S00583.sxinit +++|*
00594 M01S00584.sxinit +++|* EXIT CONFIGURATION INFORMATION HAS BEEN PROCESSED.
00595 M01S00585.sxinit +++|*
00596 M01S00586.sxinit +++|* MESSAGES 1) ATTACH ERROR - BUDT FILE BUSY.
00597 M01S00587.sxinit +++|*
00598 M01S00588.sxinit +++|* 2) ATTACH ERROR - BUDT FILE NOT FOUND.
00599 M01S00589.sxinit +++|*
00600 M01S00590.sxinit +++|* 3) BUDT CONTROLLER ENTRY COUNT EXCEEDED.
00601 M01S00591.sxinit +++|*
00602 M01S00592.sxinit +++|* 4) BUDT CONTROLLER TABLE READ ERROR.
00603 M01S00593.sxinit +++|*
00604 M01S00594.sxinit +++|* 5) BUDT READ ERROR.
00605 M01S00595.sxinit +++|*
00606 M01S00596.sxinit +++|* 6) BUDT SM ENTRY COUNT EXCEEDED.
00607 M01S00597.sxinit +++|*
00608 M01S00598.sxinit +++|* 7) BUDT SM TABLE READ ERROR.
00609 M01S00599.sxinit +++|*
00610 M01S00600.sxinit +++|* 8) EST ORDINAL XX - NO UDT ENTRY.
00611 M01S00601.sxinit +++|*
00612 M01S00602.sxinit +++|* 9) EST READ ERROR.
00613 M01S00603.sxinit +++|*
00614 M01S00604.sxinit +++|* 10) EST/UDT CHANNEL MISMATCH.
00615 M01S00605.sxinit +++|*
00616 M01S00606.sxinit +++|* 11) MORE CHANNELS THAN MSG FETS.
00617 M01S00607.sxinit +++|*
00618 M01S00608.sxinit +++|* 12) VERIFY ERROR ON EST ENTRY XX.
00619 M01S00609.sxinit +++|*
00620 M01S00610.sxinit +++|* NOTES *INITTAB* MUST BE CALLED BEFORE *GETUDT* SO THAT AN
00621 M01S00611.sxinit +++|* I/O BUFFER IS AVAILABLE TO READ THE BUDT INTO
00622 M01S00612.sxinit +++|* *SSEXEC*.
00623 M01S00613.sxinit +++|*
00624 M01S00614.sxinit +++|* *KINIT* MUST BE CALLED BEFORE *GETUDT* SO THAT A
00625 M01S00615.sxinit +++|* K-DISPLAY MESSAGE CAN BE ISSUED ALLOWING THE OPERATOR
00626 M01S00616.sxinit +++|* TO RUN *SSALTER* TO MODIFY THE UDT.
00627 M01S00617.sxinit +++|*
00628 M01S00618.sxinit +++|* THE *UCP* INTERFACE MUST BE INITIALIZED BEFORE
00629 M01S00619.sxinit +++|* *GETUDT* IS CALLED SO THAT *SSALTER* MAY BE RUN.
00630 M01S00620.sxinit +++|#
00631 M01S00621.sxinit +++|
00632 M01S00622.sxinit +++|#
00633 M01S00623.sxinit +++|**** PROC GETUDT - XREF LIST BEGIN.
00634 M01S00624.sxinit +++|#
00635 M01S00625.sxinit +++|
00636 M01S00626.sxinit +++| XREF
00637 M01S00627.sxinit +++| BEGIN
00638 M01S00628.sxinit +++| PROC ATTACH; # ATTACH FILE #
00639 M01S00629.sxinit +++| PROC BZFILL; # BLANK OR ZERO FILLS #
00640 M01S00630.sxinit +++| PROC PFD; # PFM ENTRY #
00641 M01S00631.sxinit +++| PROC SETPFP; # SETS USER INDEX AND FAMILY #
00642 M01S00632.sxinit +++| PROC MESSAGE; # CALLS *MESSAGE* MACRO #
00643 M01S00633.sxinit +++| PROC RDEST; # READ EST ENTRIES #
00644 M01S00634.sxinit +++| PROC READ; # READS FILE TO I/O BUFFER #
00645 M01S00635.sxinit +++| PROC READW; # READS FILE TO WORKING BUFFER #
00646 M01S00636.sxinit +++| PROC RETERN; # RETURNS FILE #
00647 M01S00637.sxinit +++| PROC RTIME; # GET REAL TIME #
00648 M01S00638.sxinit +++| FUNC XCOD C(10); # CONVERT OCTAL TO DISPLAY #
00649 M01S00639.sxinit +++| PROC ZSETFET; # SETS UP *FET* #
00650 M01S00640.sxinit +++| END
00651 M01S00641.sxinit +++|
00652 M01S00642.sxinit +++|#
00653 M01S00643.sxinit +++|**** PROC GETUDT - XREF LIST END.
00654 M01S00644.sxinit +++|#
00655 M01S00645.sxinit +++|
00656 M01S00646.sxinit +++| DEF CNTYPE #"SS"#; # CONTROLLER TYPE #
00657 M01S00001.sxinit4 +++| DEF DOWNSTATUS #3#; # CONTROLLER EST *DOWN* STATUS #
00658 M01S00647.sxinit +++| DEF ESTCHAN(CUO,UCHO) #B<13+(UCHO*6),5>EST$WORD[0]#;
00659 M01S00648.sxinit +++| # EST CHANNEL #
Line S00649 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00660 M02S00649.sxinit2 ---| DEF ESTON(CUO,UCHO) #B<12+(UCHO*6),1>EST$WORD[0]#;
00661 M01S00005.sxinit2 +++| DEF ESTON(UCHO) # B<12+(UCHO*6),1>EST$WORD[0]#;
00662 M01S00650.sxinit +++| # EST CHANNEL STATUS #
00663 M01S00651.sxinit +++| DEF FILLSIZE #7#; # FILL SIZE FOR *BZFILL* #
00664 M01S00652.sxinit +++| DEF FIRSTCHAN #1#; # PRIMARY EST CHANNEL INDEX #
00665 M01S00002.sxinit4 +++| DEF IDLESTATUS #1#; # CONTROLLER EST *IDLE* STATUS #
00666 M01S00003.sxinit4 +++| DEF OFFSTATUS #2#; # CONTROLLER EST *OFF* STATUS #
00667 M01S00004.sxinit4 +++| DEF ONSTATUS #0#; # CONTROLLER EST *ON* STATUS #
00668 M01S00653.sxinit +++| DEF READMODE #1#; # READ MODE FOR ATTACH #
00669 M01S00654.sxinit +++| DEF UDTEX(CUO,CIFO) #B<CIFO,1>UD$CHEX[CUO]#;
00670 M01S00655.sxinit +++| # SET IF CHANNEL EXISTS #
00671 M01S00656.sxinit +++|
00672 M01S00657.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
00673 M01S00658.sxinit +++|*CALL COMBFAS
00674 M01S00659.sxinit +++|*CALL COMBBZF
00675 M01S00660.sxinit +++|*CALL COMBCMD
00676 M01S00661.sxinit +++|*CALL COMBCPR
00677 M01S00662.sxinit +++|*CALL,COMBFET
00678 M01S00663.sxinit +++|*CALL COMBKDD
00679 M01S00664.sxinit +++|*CALL COMBMAT
00680 M01S00665.sxinit +++|*CALL,COMBPFP
00681 M01S00666.sxinit +++|*CALL COMBPFS
00682 M01S00667.sxinit +++|*CALL COMBUCR
00683 M01S00668.sxinit +++|*CALL COMBUDT
00684 M01S00669.sxinit +++|*CALL COMSPFM
00685 M01S00670.sxinit +++|*CALL COMXBST
00686 M01S00671.sxinit +++|*CALL COMXCTF
00687 M01S00672.sxinit +++|*CALL COMXINT
00688 M01S00673.sxinit +++|*CALL COMXJCA
00689 M01S00674.sxinit +++|
00690 M01S00675.sxinit +++|
00691 M01S00007.sxinit3 +++| ITEM BITMAPPOS U; # BIT POSITION IN EST ORD BIT MAP #
00692 M01S00008.sxinit3 +++| ITEM BITMAPWORD U; # EST ORDINAL BIT MAP WORD #
00693 M01S00676.sxinit +++| ITEM BUFL U; # I/O BUFFER LENGTH #
00694 M01S00009.sxinit3 +++| ITEM DESIREDORD I; # EST ORD TO CHECK IN BIT MAP #
00695 M01S00677.sxinit +++| ITEM ESTNUM U; # COUNT OF EST ENTRIES READ #
00696 M01S00678.sxinit +++| ITEM ESTORD C(10); # DISPLAY CODE EST ORDINAL #
00697 M01S00679.sxinit +++| ITEM NUM I; # NUMBER OF EST ENTRIES #
00698 M01S00680.sxinit +++| ITEM FETL U; # TEMP BUFFER FET LENGTH #
00699 M01S00681.sxinit +++| ITEM FOUND B; # SET IF EST/UDT MATCH FOUND #
00700 M01S00682.sxinit +++| ITEM I U; # INDEX #
00701 M01S00683.sxinit +++| ITEM J U; # INDEX #
00702 M01S00684.sxinit +++| ITEM K I; # INDEX #
00703 M01S00685.sxinit +++| ITEM LFN C(7); # BUDT LOCAL FILENAME #
00704 M01S00686.sxinit +++| ITEM PASSWORD C(7); # BUDT FILE PASSWORD #
00705 M01S00687.sxinit +++| ITEM STAT U; # FUNCTION RETURN STATUS #
00706 M01S00688.sxinit +++| ITEM TMPCCNT U; # TEMP CHANNEL COUNT #
00707 M01S00689.sxinit +++|
00708 M01S00690.sxinit +++|#
00709 M01S00691.sxinit +++|* ARRAY TO MARK SS-TYPE EQUIPMENT.
00710 M01S00692.sxinit +++|#
00711 M01S00693.sxinit +++|
Line S00694 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00712 M02S00694.sxinit3 ---| ARRAY EQBITS [0:0] S(9);
00713 M01S00010.sxinit3 +++| ARRAY EQBITS [0:8] S(9);
00714 M01S00695.sxinit +++| BEGIN
Line S00696 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00715 M02S00696.sxinit3 ---| ITEM EQUSED U;
00716 M01S00011.sxinit3 +++| ITEM EQUSED U(00,00,60); # BIT MAP WORD #
00717 M01S00697.sxinit +++| END
00718 M01S00698.sxinit +++|
00719 M01S00699.sxinit +++|
00720 M01S00700.sxinit +++|#
00721 M01S00701.sxinit +++|* EST BUFFER.
00722 M01S00702.sxinit +++|#
00723 M01S00703.sxinit +++|
00724 M01S00704.sxinit +++| ARRAY ESTB [0:0] S(2);
00725 M01S00705.sxinit +++| BEGIN # EST #
00726 M01S00706.sxinit +++| ITEM EST$WORD U(00,00,60); # EST WORD #
00727 M01S00005.sxinit4 +++| ITEM EST$STAT U(00,10,02); # CONTROLLER STATUS #
00728 M01S00707.sxinit +++| ITEM EST$CHBDWN B(00,12,01); # CHANNEL *B* DOWN #
00729 M01S00708.sxinit +++| ITEM EST$CHB U(00,13,05); # CHANNEL *B* #
00730 M01S00709.sxinit +++| ITEM EST$CHADWN B(00,18,01); # CHANNEL *A* DOWN #
00731 M01S00710.sxinit +++| ITEM EST$CHA U(00,19,05); # CHANNEL *A* #
00732 M01S00711.sxinit +++| ITEM EST$CHDDWN B(00,24,01); # CHANNEL *D* DOWN #
00733 M01S00712.sxinit +++| ITEM EST$CHD U(00,25,05); # CHANNEL *D* #
00734 M01S00713.sxinit +++| ITEM EST$CHCDWN B(00,30,01); # CHANNEL *C* DOWN #
00735 M01S00714.sxinit +++| ITEM EST$CHC U(00,31,05); # CHANNEL *C* #
Line S00715 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit4 |
Seq # *Modification Id* Act
----------------------------+
00736 M02S00715.sxinit4 ---| ITEM EST$OFF B(00,36,01); # CONTROLLER OFF #
00737 M01S00716.sxinit +++| ITEM EST$CONT U(00,37,11); # CONTROLLER TYPE #
00738 M01S00717.sxinit +++| ITEM EST$CNCT U(00,48,03); # CONNECT CODE #
00739 M01S00718.sxinit +++| END # EST #
00740 M01S00719.sxinit +++|
00741 M01S00720.sxinit +++|
00742 M01S00721.sxinit +++|#
00743 M01S00722.sxinit +++|* UDT CHANNEL ARRAY.
00744 M01S00723.sxinit +++|#
00745 M01S00724.sxinit +++|
00746 M01S00725.sxinit +++| ARRAY UDTCH [0:MAX$CH] S(1);
00747 M01S00726.sxinit +++| BEGIN
00748 M01S00006.sxinit2 +++| ITEM UDTCWORD U(00,00,06); # CHANNEL WORD #
00749 M01S00727.sxinit +++| ITEM UDTBSTAT B(00,00,01); # CHANNEL STATUS (BOOLEAN) #
00750 M01S00728.sxinit +++| ITEM UDTSTAT U(00,00,01); # CHANNEL STATUS #
00751 M01S00729.sxinit +++| ITEM UDTCHAN U(00,01,05); # CHANNEL NUMBER #
00752 M01S00730.sxinit +++| END
00753 M01S00731.sxinit +++|
00754 M01S00732.sxinit +++|
00755 M01S00733.sxinit +++|#
00756 M01S00734.sxinit +++|* *MISSING UDT ENTRY* ERROR MESSAGE BUFFER.
00757 M01S00735.sxinit +++|#
00758 M01S00736.sxinit +++|
00759 M01S00737.sxinit +++| ARRAY MISMB [0:0] S(4);
00760 M01S00738.sxinit +++| BEGIN # MESSAGE BUFFER #
00761 M01S00739.sxinit +++| ITEM MIS$1 C(00,00,13) = [" EST ORDINAL "];
00762 M01S00740.sxinit +++| ITEM MIS$NUM U(01,18,24); # EST ORDINAL #
00763 M01S00741.sxinit +++| ITEM MIS$2 C(01,42,16) = [" - NO UDT ENTRY."];
00764 M01S00742.sxinit +++| ITEM MIS$ZRO U(03,18,42) = [0]; # ZERO-BYTE TERMINATOR #
00765 M01S00743.sxinit +++| END # MESSAGE BUFFER #
00766 M01S00744.sxinit +++|
00767 M01S00745.sxinit +++|
00768 M01S00746.sxinit +++|#
00769 M01S00747.sxinit +++|* GENERAL ERROR MESSAGE BUFFER.
00770 M01S00748.sxinit +++|#
00771 M01S00749.sxinit +++|
00772 M01S00750.sxinit +++| ARRAY MSGMB [0:0] S(5);
00773 M01S00751.sxinit +++| BEGIN # MESSAGE BUFFER #
00774 M01S00752.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE #
00775 M01S00753.sxinit +++| ITEM MSG$ZRO U(04,00,12) = [0]; # ZERO-BYTE TERMINATOR #
00776 M01S00754.sxinit +++| END # MESSAGE BUFFER #
00777 M01S00755.sxinit +++|
00778 M01S00756.sxinit +++|
00779 M01S00757.sxinit +++|#
00780 M01S00758.sxinit +++|* *VERIFY* ERROR MESSAGE BUFFER.
00781 M01S00759.sxinit +++|#
00782 M01S00760.sxinit +++|
00783 M01S00761.sxinit +++| ARRAY VERMB [0:0] S(4);
00784 M01S00762.sxinit +++| BEGIN # MESSAGE BUFFER #
00785 M01S00763.sxinit +++| ITEM VER$1 C(00,00,27) = [" VERIFY ERROR ON EST ENTRY "];
00786 M01S00764.sxinit +++| ITEM VER$NUM C(02,42,24); # EST ORDINAL #
00787 M01S00765.sxinit +++| ITEM VER$2 C(03,06,06) = ["."];
00788 M01S00766.sxinit +++| ITEM VER$ZRO U(03,12,48) = [0]; # ZERO-BYTE TERMINATOR #
00789 M01S00767.sxinit +++| END # MESSAGE BUFFER #
00790 M01S00768.sxinit +++|
00791 M01S00769.sxinit +++|
00792 M01S00770.sxinit +++| CONTROL EJECT;
00793 M01S00771.sxinit +++|
00794 M01S00772.sxinit +++|#
00795 M01S00773.sxinit +++|* READ BUDT INTO TEMPORARY BUFFER.
00796 M01S00774.sxinit +++|#
00797 M01S00775.sxinit +++|
00798 M01S00776.sxinit +++| LFN = BUDT;
00799 M01S00777.sxinit +++| PASSWORD = BUDTPW;
00800 M01S00778.sxinit +++| BZFILL(LFN,TYPFILL"ZFILL",FILLSIZE); # CLEAR FILENAME #
00801 M01S00779.sxinit +++| BZFILL(PASSWORD,TYPFILL"ZFILL",FILLSIZE); # CLEAR PASSWORD #
00802 M01S00780.sxinit +++| PFP$UI = DEF$UI; # SET *SETPFP* PARAMETERS #
00803 M01S00781.sxinit +++| PFP$FAM = FAM$NAME[DEFAULTORD];
00804 M01S00782.sxinit +++| PFP$FG1 = TRUE;
00805 M01S00783.sxinit +++| PFP$FG4 = TRUE;
00806 M01S00784.sxinit +++| SETPFP(PFP[0]); # SET USER INDEX AND FAMILY #
00807 M01S00785.sxinit +++|
00808 M01S00786.sxinit +++|#
00809 M01S00787.sxinit +++|* TRY ATTACHING BUDT FILE 10 TIMES BEFORE TERMINATING.
00810 M01S00788.sxinit +++|#
00811 M01S00789.sxinit +++| SLOWFOR I = 0 STEP 1 UNTIL 10
00812 M01S00790.sxinit +++| DO
00813 M01S00791.sxinit +++| BEGIN
00814 M01S00792.sxinit +++| PFD("ATTACH",LFN,0,"PW",PASSWORD,"RC",PFSTAT,"NA",0,"UP",0,0);
00815 M01S00793.sxinit +++|
00816 M01S00794.sxinit +++| IF PFSTAT EQ OK
00817 M01S00795.sxinit +++| THEN
00818 M01S00796.sxinit +++| BEGIN # BUDT ATTACHED #
00819 M01S00797.sxinit +++| GOTO ENDCON;
00820 M01S00798.sxinit +++| END
00821 M01S00799.sxinit +++| END # ATTACH BUDT LOOP #
00822 M01S00800.sxinit +++|
00823 M01S00801.sxinit +++|ENDCON:
00824 M01S00802.sxinit +++|
00825 M01S00803.sxinit +++| IF PFSTAT NQ OK
00826 M01S00804.sxinit +++| THEN # PROCESS ATTACH ERROR #
00827 M01S00805.sxinit +++| BEGIN # ABORT #
00828 M01S00806.sxinit +++| MSG$LINE[0] = " ATTACH ERROR - BUDT FILE BUSY.";
00829 M01S00807.sxinit +++| IF PFP$STAT[0] NQ FBS
00830 M01S00808.sxinit +++| THEN # BUDT FILE NOT FOUND #
00831 M01S00809.sxinit +++| BEGIN # NOT FOUND #
00832 M01S00810.sxinit +++| MSG$LINE[0] = " ATTACH ERROR - BUDT FILE NOT FOUND.";
00833 M01S00811.sxinit +++| END # NOT FOUND #
00834 M01S00812.sxinit +++|
00835 M01S00813.sxinit +++| GOTO GETUDT1;
00836 M01S00814.sxinit +++| END # ABORT #
00837 M01S00815.sxinit +++|
00838 M01S00816.sxinit +++| BUFL = MAT$SPACE[MAT$ENTRY"TEMP$BUF"];
00839 M01S00817.sxinit +++| FETL = MAT$SPACE[MAT$ENTRY"TEMP$FET"];
00840 M01S00818.sxinit +++| ZSETFET(TFETADR,LFN,TBUFADR,BUFL,FETL);
00841 M01S00819.sxinit +++| READ(TFET,RCL); # READ BUDT WITH AUTO-RECALL #
00842 M01S00820.sxinit +++|
00843 M01S00821.sxinit +++|#
00844 M01S00822.sxinit +++|* READ BUDT FROM TEMPORARY BUFFER INTO UDT SPACE.
00845 M01S00823.sxinit +++|#
00846 M01S00824.sxinit +++|
00847 M01S00825.sxinit +++| P<UDT$WORD> = UDTCADR;
00848 M01S00826.sxinit +++| READW(TFET,UDT$WORD,1,STAT);
00849 M01S00827.sxinit +++| IF STAT NQ OK
00850 M01S00828.sxinit +++| THEN # READ COMPLETED WITH ERRORS #
00851 M01S00829.sxinit +++| BEGIN # ABORT #
00852 M01S00830.sxinit +++| MSG$LINE[0] = " BUDT READ ERROR.";
00853 M01S00831.sxinit +++| GOTO GETUDT1;
00854 M01S00832.sxinit +++| END # ABORT #
00855 M01S00833.sxinit +++|
00856 M01S00834.sxinit +++| IF UDT$LINE$CUN[0] GR MAXCTN
00857 M01S00835.sxinit +++| THEN # CONTROLLER TABLE TOO LARGE #
00858 M01S00836.sxinit +++| BEGIN # ABORT #
00859 M01S00837.sxinit +++| MSG$LINE[0] = " BUDT CONTROLLER ENTRY COUNT EXCEEDED.";
00860 M01S00838.sxinit +++| GOTO GETUDT1;
00861 M01S00839.sxinit +++| END # ABORT #
00862 M01S00840.sxinit +++|
Line S00841 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00863 M02S00841.sxinit2 ---| IF UDT$LINE$SMN[0] GR MAXSMUNIT
00864 M01S00007.sxinit2 +++| IF UDT$LINE$SMN[0] GR MAXSM
00865 M01S00842.sxinit +++| THEN # SM TABLE TOO LARGE #
00866 M01S00843.sxinit +++| BEGIN # ABORT #
00867 M01S00844.sxinit +++| MSG$LINE[0] = " BUDT SM ENTRY COUNT EXCEEDED.";
00868 M01S00845.sxinit +++| GOTO GETUDT1;
00869 M01S00846.sxinit +++| END # ABORT #
00870 M01S00847.sxinit +++|
00871 M01S00848.sxinit +++| UDT$WORDCNT[0] = MAT$SPACE[MAT$ENTRY"UDT$CONT"]
00872 M01S00849.sxinit +++| + MAT$SPACE[MAT$ENTRY"UDT$SM"];
00873 M01S00850.sxinit +++|
00874 M01S00851.sxinit +++| READW(TFET,UDT$CN,UDTCUL,STAT); # STORE CU TABLE #
00875 M01S00852.sxinit +++| IF STAT NQ OK
00876 M01S00853.sxinit +++| THEN # READ COMPLETED WITH ERRORS #
00877 M01S00854.sxinit +++| BEGIN # ABORT #
00878 M01S00855.sxinit +++| MSG$LINE[0] = " BUDT CONTROLLER TABLE READ ERROR.";
00879 M01S00856.sxinit +++| GOTO GETUDT1;
00880 M01S00857.sxinit +++| END # ABORT #
00881 M01S00858.sxinit +++|
00882 M01S00859.sxinit +++| READW(TFET,UDT$SMA,UDTSML,STAT); # STORE *SM* TABLE #
00883 M01S00860.sxinit +++| IF STAT NQ OK
00884 M01S00861.sxinit +++| THEN # READ COMPLETED WITH ERRORS #
00885 M01S00862.sxinit +++| BEGIN # ABORT #
00886 M01S00863.sxinit +++| MSG$LINE[0] = " BUDT SM TABLE READ ERROR.";
00887 M01S00864.sxinit +++| GOTO GETUDT1;
00888 M01S00865.sxinit +++| END # ABORT #
00889 M01S00866.sxinit +++|
00890 M01S00867.sxinit +++| RETERN(TFET,RCL); # RETURN BUDT WITH AUTO-RECALL #
00891 M01S00868.sxinit +++| RETERN(TFET,RCL);
00892 M01S00869.sxinit +++|
00893 M01S00870.sxinit +++|#
00894 M01S00871.sxinit +++|* INITIALIZE UDT CONTROLLER AND SM ENTRIES.
00895 M01S00872.sxinit +++|#
00896 M01S00873.sxinit +++|
Line S00874 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00897 M02S00874.sxinit3 ---| EQUSED = 0;
00898 M01S00012.sxinit3 +++| SLOWFOR I = 1 STEP 1 UNTIL 9
00899 M01S00013.sxinit3 +++| DO # PRESET EST ORDINAL BIT MAP #
00900 M01S00014.sxinit3 +++| BEGIN # PRESET #
00901 M01S00015.sxinit3 +++| EQUSED[I] = 0;
00902 M01S00016.sxinit3 +++| END # PRESET #
00903 M01S00875.sxinit +++|
00904 M01S00876.sxinit +++| MAX$ACHN = 0; # PRESET ACTIVE CHANNEL COUNT #
00905 M01S00877.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND I LQ MAXCTN
00906 M01S00878.sxinit +++| DO # PRESET CONTROLLER ENTRIES #
00907 M01S00879.sxinit +++| BEGIN # PRESET #
00908 M01S00880.sxinit +++| NUM = 1;
00909 M01S00881.sxinit +++| ESTNUM = UD$ESTO[I];
00910 M01S00882.sxinit +++| RDEST(ESTB,NUM,ESTNUM); # READ EST ENTRY #
00911 M01S00883.sxinit +++| IF NUM NQ 1
00912 M01S00884.sxinit +++| THEN # ABORT ON READ ERROR #
00913 M01S00885.sxinit +++| BEGIN
00914 M01S00886.sxinit +++| MSG$LINE[0] = "EST READ ERROR.";
00915 M01S00887.sxinit +++| GOTO GETUDT1;
00916 M01S00888.sxinit +++| END
00917 M01S00889.sxinit +++|
00918 M01S00890.sxinit +++| IF EST$CONT[0] NQ CNTYPE # CONTROLLER TYPE MISMATCH #
00919 M01S00891.sxinit +++| OR EST$CNCT[0] NQ UD$CUDA[I] # CONNECT MISMATCH #
00920 M01S00892.sxinit +++| THEN # CONTROLLER ENTRY IS INCORRECT #
00921 M01S00893.sxinit +++| BEGIN # ABORT #
00922 M01S00894.sxinit +++| ESTORD = XCOD(UD$ESTO[I]); # SET EST ORDINAL IN MESSAGE #
00923 M01S00895.sxinit +++| VER$NUM[0] = C<6,4>ESTORD;
00924 M01S00896.sxinit +++| MESSAGE(VERMB,SYSUDF1);
00925 M01S00897.sxinit +++| FATALERR = TRUE;
00926 M01S00898.sxinit +++| RETURN;
00927 M01S00899.sxinit +++| END # ABORT #
00928 M01S00900.sxinit +++|
Line S00901 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit4 |
Seq # *Modification Id* Act
----------------------------+
00929 M02S00901.sxinit4 ---| UD$CUON[I] = NOT EST$OFF[0]; # MOVE CU STATUS #
00930 M01S00006.sxinit4 +++| UD$CUON[I] = EST$STAT[0] EQ ONSTATUS # MOVE CU STATUS #
00931 M01S00007.sxinit4 +++| OR EST$STAT[0] EQ IDLESTATUS;
Line S00902 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00932 M02S00902.sxinit2 ---| UDTCHAN[0] = UD$CHANA[I]; # COPY UDT CHANNEL INFO #
Line S00903 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00933 M02S00903.sxinit2 ---| UDTCHAN[1] = UD$CHANB[I];
Line S00904 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00934 M02S00904.sxinit2 ---| UDTCHAN[2] = UD$CHANC[I];
Line S00905 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00935 M02S00905.sxinit2 ---| UDTCHAN[3] = UD$CHAND[I];
00936 M01S00008.sxinit2 +++| UDTCWORD[0] = UD$CHANA[I]; # COPY UDT CHANNEL INFO #
00937 M01S00009.sxinit2 +++| UDTCWORD[1] = UD$CHANB[I];
00938 M01S00010.sxinit2 +++| UDTCWORD[2] = UD$CHANC[I];
00939 M01S00011.sxinit2 +++| UDTCWORD[3] = UD$CHAND[I];
00940 M01S00906.sxinit +++| TMPCCNT = 0; # PRESET TEMP CHANNEL COUNT #
00941 M01S00907.sxinit +++| SLOWFOR J = 0 STEP 1 UNTIL MAX$CH
00942 M01S00908.sxinit +++| DO # SCAN EST ENTRY FOR CHANNELS #
00943 M01S00909.sxinit +++| BEGIN # SCAN EST #
00944 M01S00910.sxinit +++| IF J EQ FIRSTCHAN # IN CASE CHANNEL 0 #
00945 M01S00911.sxinit +++| OR ESTCHAN(I,J) NQ 0
00946 M01S00912.sxinit +++| THEN # EST CHANNEL FOUND #
00947 M01S00913.sxinit +++| BEGIN # FOUND #
00948 M01S00914.sxinit +++| FOUND = FALSE;
00949 M01S00915.sxinit +++| SLOWFOR K = 0 STEP 1 UNTIL MAX$CH
00950 M01S00916.sxinit +++| DO # SCAN ARRAY FOR CHANNEL MATCH #
00951 M01S00917.sxinit +++| BEGIN # SCAN UDT #
00952 M01S00918.sxinit +++| IF UDTEX(I,K) NQ 0 # UDT CHANNEL FOUND #
00953 M01S00919.sxinit +++| AND ESTCHAN(I,J) EQ UDTCHAN[K] # CHANNELS MATCH #
00954 M01S00920.sxinit +++| THEN # MOVE CHANNEL STATUS TO UDT #
00955 M01S00921.sxinit +++| BEGIN # STATUS #
00956 M01S00922.sxinit +++| FOUND = TRUE;
Line S00923 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit2 |
Seq # *Modification Id* Act
----------------------------+
00957 M02S00923.sxinit2 ---| UDTSTAT[K] = 1 - ESTON(I,J); # TOGGLE SO ON IF SET #
00958 M01S00924.sxinit +++| MAX$ACHN = MAX$ACHN + UDTSTAT[K]; # COUNT CHANNELS #
00959 M01S00925.sxinit +++| TMPCCNT = TMPCCNT + 1;
00960 M01S00012.sxinit2 +++| IF ESTON(J) EQ 1
00961 M01S00013.sxinit2 +++| THEN # CHANNEL OFF IN EST #
00962 M01S00014.sxinit2 +++| BEGIN # OFF #
00963 M01S00015.sxinit2 +++| UDTBSTAT[K] = FALSE; # TURN OFF CHANNEL IN UDT #
00964 M01S00016.sxinit2 +++| END # OFF #
00965 M01S00017.sxinit2 +++|
00966 M01S00926.sxinit +++| END # STATUS #
00967 M01S00927.sxinit +++|
00968 M01S00928.sxinit +++| END # SCAN UDT #
00969 M01S00929.sxinit +++|
00970 M01S00930.sxinit +++| IF NOT FOUND
00971 M01S00931.sxinit +++| THEN # CHANNEL MISMATCH #
00972 M01S00932.sxinit +++| BEGIN # ABORT #
00973 M01S00933.sxinit +++| GOTO GETUDT2;
00974 M01S00934.sxinit +++| END # ABORT #
00975 M01S00935.sxinit +++|
00976 M01S00936.sxinit +++| END # FOUND #
00977 M01S00937.sxinit +++|
00978 M01S00938.sxinit +++| END # SCAN EST #
00979 M01S00939.sxinit +++|
00980 M01S00940.sxinit +++| IF TMPCCNT NQ (UDTEX(I,0) + UDTEX(I,1) +
00981 M01S00941.sxinit +++| UDTEX(I,2) + UDTEX(I,3))
00982 M01S00942.sxinit +++| THEN # CHANNEL MISMATCH #
00983 M01S00943.sxinit +++| BEGIN # ABORT #
00984 M01S00944.sxinit +++| GOTO GETUDT2;
00985 M01S00945.sxinit +++| END # ABORT #
00986 M01S00946.sxinit +++|
00987 M01S00947.sxinit +++| UD$CHANA$O[I] = UDTBSTAT[0]; # COPY CHANNEL STATUSES TO UDT #
00988 M01S00948.sxinit +++| UD$CHANB$O[I] = UDTBSTAT[1];
00989 M01S00949.sxinit +++| UD$CHANC$O[I] = UDTBSTAT[2];
00990 M01S00950.sxinit +++| UD$CHAND$O[I] = UDTBSTAT[3];
00991 M01S00951.sxinit +++| P<UDT$MSG> = LOC(UD$MSG[I]);
00992 M01S00952.sxinit +++| MS$MSQN$CN[0] = I; # STORE CONTROLLER ORDINAL #
Line S00953 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
00993 M02S00953.sxinit3 ---| B<UD$ESTO[I],1>EQUSED = 1;
00994 M01S00017.sxinit3 +++| BITMAPWORD = UD$ESTO[I]/60;
00995 M01S00018.sxinit3 +++| BITMAPPOS = UD$ESTO[I] - (BITMAPWORD * 60);
00996 M01S00019.sxinit3 +++| B<BITMAPPOS,1>EQUSED[BITMAPWORD] = 1; # NOTE ORD PROCESSED #
00997 M01S00954.sxinit +++| END # PRESET #
00998 M01S00955.sxinit +++|
00999 M01S00956.sxinit +++| SLOWFOR I= 1 STEP 1 UNTIL MAX$ACHN
01000 M01S00957.sxinit +++| DO
01001 M01S00958.sxinit +++| BEGIN
01002 M01S00959.sxinit +++| BST$AUTH[I] = TRUE;
01003 M01S00960.sxinit +++| END
01004 M01S00961.sxinit +++|
01005 M01S00962.sxinit +++|
Line S00963 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
01006 M02S00963.sxinit3 ---| SLOWFOR I = 1 STEP 1 WHILE NUM EQ 1
01007 M01S00020.sxinit3 +++| SLOWFOR BITMAPWORD = 0 STEP 1 WHILE NUM EQ 1
01008 M01S00964.sxinit +++| DO # FIND UNUSED M860 EST ENTRIES #
01009 M01S00965.sxinit +++| BEGIN # FIND #
Line S00966 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
01010 M02S00966.sxinit3 ---| NUM = 1;
Line S00967 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
01011 M02S00967.sxinit3 ---| RDEST(ESTB,NUM,I);
01012 M01S00021.sxinit3 +++| SLOWFOR BITMAPPOS = 0 STEP 1 UNTIL 59
01013 M01S00022.sxinit3 +++| DO # SCAN EST ORDINAL BIT MAP WORD #
01014 M01S00023.sxinit3 +++| BEGIN # WORD #
01015 M01S00024.sxinit3 +++| DESIREDORD = BITMAPPOS + (BITMAPWORD * 60);
01016 M01S00025.sxinit3 +++| IF DESIREDORD EQ 0
01017 M01S00026.sxinit3 +++| THEN # AVOID READING ENTIRE EST #
01018 M01S00027.sxinit3 +++| BEGIN # SKIP #
01019 M01S00028.sxinit3 +++| TEST BITMAPPOS; # ONLY READ INDIVIDUAL ENTRIES #
01020 M01S00029.sxinit3 +++| END # SKIP #
01021 M01S00030.sxinit3 +++|
01022 M01S00031.sxinit3 +++| NUM = 1;
01023 M01S00032.sxinit3 +++| RDEST(ESTB,NUM,DESIREDORD);
01024 M01S00033.sxinit3 +++| IF NUM NQ 1
01025 M01S00034.sxinit3 +++| THEN # EST ORDINAL NON-EXISTENT #
01026 M01S00035.sxinit3 +++| BEGIN # END #
01027 M01S00036.sxinit3 +++| TEST BITMAPWORD; # REACHED END OF EST #
01028 M01S00037.sxinit3 +++| END # END #
01029 M01S00038.sxinit3 +++|
01030 M01S00968.sxinit +++| IF EST$CONT[0] EQ CNTYPE
Line S00969 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
01031 M02S00969.sxinit3 ---| AND B<I,1>EQUSED EQ 0
01032 M01S00039.sxinit3 +++| AND B<BITMAPPOS,1>EQUSED[BITMAPWORD] EQ 0
01033 M01S00970.sxinit +++| THEN # UNPROCESSED ENTRY FOUND #
01034 M01S00971.sxinit +++| BEGIN # MESSAGE #
Line S00972 Modification History |
M01 (Added by) | sxinit |
M02 (Updated by) | sxinit3 |
Seq # *Modification Id* Act
----------------------------+
01035 M02S00972.sxinit3 ---| ESTORD = XCOD(I); # SET EST ORDINAL IN MESSAGE #
01036 M01S00040.sxinit3 +++| ESTORD = XCOD(DESIREDORD); # SET EST ORDINAL IN MESSAGE #
01037 M01S00973.sxinit +++| MIS$NUM[0] = C<6,4>ESTORD;
01038 M01S00974.sxinit +++| MESSAGE(MISMB,SYSUDF1);
01039 M01S00975.sxinit +++| END # MESSAGE #
01040 M01S00976.sxinit +++|
01041 M01S00041.sxinit3 +++| END # WORD #
01042 M01S00042.sxinit3 +++|
01043 M01S00977.sxinit +++| END # FIND #
01044 M01S00978.sxinit +++|
01045 M01S00979.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE SM$EXIST[I] AND I LQ MAXSMUNIT
01046 M01S00980.sxinit +++| DO # PRESET SM ENTRIES #
01047 M01S00981.sxinit +++| BEGIN # PRESET #
01048 M01S00982.sxinit +++| P<UDT$MSG> = LOC(D0$MSG[I]);
01049 M01S00983.sxinit +++| MS$MSQN$CN[0] = I; # STORE SM ORDINAL #
01050 M01S00984.sxinit +++| MS$MSQN$D0[0] = TRUE; # SET DRD 0 FLAG #
01051 M01S00985.sxinit +++| P<UDT$MSG> = LOC(D1$MSG[I]);
01052 M01S00986.sxinit +++| MS$MSQN$CN[0] = I; # STORE SM ORDINAL #
01053 M01S00987.sxinit +++| MS$MSQN$D1[0] = TRUE; # SET DRD 1 FLAG #
01054 M01S00988.sxinit +++| END # PRESET #
01055 M01S00989.sxinit +++|
01056 M01S00990.sxinit +++|#
01057 M01S00991.sxinit +++|* INITIALIZE MESSAGE READ AND WRITE BUFFER FETS.
01058 M01S00992.sxinit +++|#
01059 M01S00993.sxinit +++|
01060 M01S00994.sxinit +++| P<FETMWB> = MWRBADR + 1; # ALLOW FOR READ BUFFER PTR #
01061 M01S00995.sxinit +++| P<FETMRB> = MRDBADR;
01062 M01S00996.sxinit +++| SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND (I LQ MAXCTN)
01063 M01S00997.sxinit +++| DO # CHECK UDT CHANNELS #
01064 M01S00998.sxinit +++| BEGIN # CHECK #
01065 M01S00999.sxinit +++| CHT$WORD[0] = UD$CHANA[I]; # PRESET TEMPORARY CHANNEL ARRAY #
01066 M01S01000.sxinit +++| CHT$WORD[1] = UD$CHANB[I];
01067 M01S01001.sxinit +++| CHT$WORD[2] = UD$CHANC[I];
01068 M01S01002.sxinit +++| CHT$WORD[3] = UD$CHAND[I];
01069 M01S01003.sxinit +++| SLOWFOR J = 0 STEP 1 WHILE J LQ MAX$CIF
01070 M01S01004.sxinit +++| DO # FIND ON CHANNELS #
01071 M01S01005.sxinit +++| BEGIN # FIND #
01072 M01S01006.sxinit +++| IF CHT$ON[J]
01073 M01S01007.sxinit +++| AND (CHT$CHAN[J] NQ 0 OR J EQ 0)
01074 M01S01008.sxinit +++| THEN # INITIALIZE ASSOCIATED MSG FETS #
01075 M01S01009.sxinit +++| BEGIN # INITIALIZE #
01076 M01S01010.sxinit +++| IF P<FETMWB> GQ (MWRBADR + MAT$SPACE[MAT$ENTRY"MW$BUFS"])
01077 M01S01011.sxinit +++| THEN # MORE CHANNELS THAN MSG FETS #
01078 M01S01012.sxinit +++| BEGIN # ABORT #
01079 M01S01013.sxinit +++| MSG$LINE[0] = " MORE CHANNELS THAN MSG FETS.";
01080 M01S01014.sxinit +++| GOTO GETUDT1;
01081 M01S01015.sxinit +++| END # ABORT #
01082 M01S01016.sxinit +++|
01083 M01S01017.sxinit +++| P<FETMRA> = P<FETMWB> - 1;
01084 M01S01018.sxinit +++| FRA$MRBADR[0] = P<FETMRB>; # MESSAGE READ BUFFER ADDRESS #
01085 M01S01019.sxinit +++|
01086 M01S01020.sxinit +++| FMW$FIRST[0] = P<FETMWB> + SFMWL; # PRESET WRITE BUFFER #
01087 M01S01021.sxinit +++| FMW$IN[0] = FMW$FIRST[0];
01088 M01S01022.sxinit +++| FMW$OUT[0] = FMW$FIRST[0];
01089 M01S01023.sxinit +++| FMW$CHAN[0] = CHT$CHAN[J];
01090 M01S01024.sxinit +++| FMW$CHON[0] = TRUE;
01091 M01S01025.sxinit +++| FMW$LIMIT[0] = FMW$FIRST[0] + MWBUFL;
01092 M01S01026.sxinit +++|
01093 M01S01027.sxinit +++| FMR$CU[0] = I; # PRESET READ BUFFER #
01094 M01S01028.sxinit +++| FMR$FIRST[0] = P<FETMRB> + SFMRL;
01095 M01S01029.sxinit +++| FMR$IN[0] = FMR$FIRST[0];
01096 M01S01030.sxinit +++| FMR$OUT[0] = FMR$FIRST[0];
01097 M01S01031.sxinit +++| FMR$CHAN[0] = CHT$CHAN[J];
01098 M01S01032.sxinit +++| FMR$CIF[0] = J;
01099 M01S01033.sxinit +++| FMR$LIMIT[0] = FMR$FIRST[0] + MRBUFL;
01100 M01S01034.sxinit +++| P<KWORD> = LOC(FMR$KWORDS[0]); # PRESET K-DISPLAY WORDS #
01101 M01S01035.sxinit +++| KW$COMP[0] = TRUE;
01102 M01S01036.sxinit +++|
01103 M01S01037.sxinit +++| P<MWBTMP> = LOC(UD$CAMF[I]);
01104 M01S01038.sxinit +++| MWB$ADDR[J] = P<FETMWB>; # SET FET ADDRESS IN CU ORDINAL #
01105 M01S01039.sxinit +++| P<FETMWB> = P<FETMWB> + SFMWL + MWBUFL + 1; # NEXT FETS #
01106 M01S01040.sxinit +++| P<FETMRB> = P<FETMRB> + SFMRL + MRBUFL;
01107 M01S01041.sxinit +++| END # INITIALIZE #
01108 M01S01042.sxinit +++|
01109 M01S01043.sxinit +++| END # FIND #
01110 M01S01044.sxinit +++|
01111 M01S01045.sxinit +++| END # CHECK #
01112 M01S01046.sxinit +++|
01113 M01S01047.sxinit +++| RETURN;
01114 M01S01048.sxinit +++|
01115 M01S01049.sxinit +++|GETUDT2:
01116 M01S01050.sxinit +++| MSG$LINE[0] = " EST/UDT CHANNEL MISMATCH.";
01117 M01S01051.sxinit +++|
01118 M01S01052.sxinit +++|GETUDT1:
01119 M01S01053.sxinit +++| MESSAGE(MSGMB,SYSUDF1); # ABORT PROCESSING #
01120 M01S01054.sxinit +++| FATALERR = TRUE;
01121 M01S01055.sxinit +++| RETURN;
01122 M01S01056.sxinit +++| END # GETUDT #
01123 M01S01057.sxinit +++|
01124 M01S01058.sxinit +++| TERM
01125 M01S01059.sxinit +++|PROC INITDAM;
01126 M01S01060.sxinit +++|# TITLE INITDAM - INITIALIZE *TDAM* INTERFACE. #
01127 M01S01061.sxinit +++| BEGIN # INITDAM #
01128 M01S01062.sxinit +++|
01129 M01S01063.sxinit +++|#
01130 M01S01064.sxinit +++|*** INITDAM - INITAILIZE *TDAM* INTERFACE.
01131 M01S01065.sxinit +++|*
01132 M01S01066.sxinit +++|* THIS ROUTINE WILL INITIALIZE THE *TDAM* INTERFACE
01133 M01S01067.sxinit +++|* AND ISSUE AN EVENT TO SWAP IN THE JOBS WAITING FOR *MSAS*.
01134 M01S01068.sxinit +++|
01135 M01S01069.sxinit +++|* PROC INITDAM.
01136 M01S01070.sxinit +++|*
01137 M01S01071.sxinit +++|* ENTRY *SSEXEC* HAS BEEN INITIALIZED AND READY TO BE
01138 M01S01072.sxinit +++|* CALLED BY WAITING JOBS.
01139 M01S01073.sxinit +++|*
01140 M01S01074.sxinit +++|* EXIT *TDAM* INTERFACE HAS BEEN INITIALIZED AND
01141 M01S01075.sxinit +++|* EVENT TO SWAP IN WAITING JOBS HAS BEEN ISSUED.
01142 M01S01076.sxinit +++|#
01143 M01S01077.sxinit +++|
01144 M01S01078.sxinit +++|#
01145 M01S01079.sxinit +++|**** PROC INITDAM - XREF LIST BEGIN.
01146 M01S01080.sxinit +++|#
01147 M01S01081.sxinit +++|
01148 M01S01082.sxinit +++| XREF
01149 M01S01083.sxinit +++| BEGIN
01150 M01S01084.sxinit +++| PROC EESET; # ENTERS EVENT IN EVENT TABLE #
01151 M01S01085.sxinit +++| PROC SYSTEM; # CALLS *SYSTEM* MACRO #
01152 M01S01086.sxinit +++| PROC ZFILL; # ZERO FILLS BUFFER #
01153 M01S01087.sxinit +++| END
01154 M01S01088.sxinit +++|
01155 M01S01089.sxinit +++|#
01156 M01S01090.sxinit +++|**** PROC INITDAM - XREF LIST END.
01157 M01S01091.sxinit +++|#
01158 M01S01092.sxinit +++|
01159 M01S01093.sxinit +++| DEF NO$EQUIP #0#; # NO EQUIPMENT VALUE #
01160 M01S01094.sxinit +++|
01161 M01S01095.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
01162 M01S01096.sxinit +++|*CALL COMBFAS
01163 M01S01097.sxinit +++|*CALL,COMBCDD
01164 M01S01098.sxinit +++|*CALL COMBTDM
01165 M01S01099.sxinit +++|*CALL COMBUDT
01166 M01S01100.sxinit +++|*CALL COMXCTF
01167 M01S01101.sxinit +++|*CALL COMXINT
01168 M01S01102.sxinit +++|*CALL,COMXJCA
01169 M01S01103.sxinit +++|
01170 M01S01104.sxinit +++| ITEM I U; # INDEX #
01171 M01S01105.sxinit +++|
01172 M01S01106.sxinit +++|
01173 M01S01107.sxinit +++|
01174 M01S01108.sxinit +++|
01175 M01S01109.sxinit +++|
01176 M01S01110.sxinit +++|#
01177 M01S01111.sxinit +++|* INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS
01178 M01S01112.sxinit +++|* WAITING FOR *MSAS*.
01179 M01S01113.sxinit +++|#
01180 M01S01114.sxinit +++|
01181 M01S01115.sxinit +++| P<TDAM> = LOC(RA$TDAM);
01182 M01S01116.sxinit +++| ZFILL(TDAM,TDAMLEN);
01183 M01S01117.sxinit +++|
01184 M01S01118.sxinit +++| EESET$EQ[0] = NO$EQUIP; # USE NO EQUIPMENT VALUE #
01185 M01S01119.sxinit +++| EESET(EVENT); # SET EVENT INTO EVENT TABLE #
01186 M01S01120.sxinit +++|
01187 M01S01121.sxinit +++|
01188 M01S01122.sxinit +++|#
01189 M01S01123.sxinit +++|* PRESET ALL PP CALL BLOCK ENTRIES.
01190 M01S01124.sxinit +++|#
01191 M01S01125.sxinit +++|
01192 M01S01126.sxinit +++| SLOWFOR I = 1 STEP 1 UNTIL PPCBTSIZE
01193 M01S01127.sxinit +++| DO # SET PARAMETER WORD ADDRESS #
01194 M01S01128.sxinit +++| BEGIN # SET ADDRESS #
01195 M01S01129.sxinit +++| PPU$1SS[I] = "1SS";
01196 M01S01130.sxinit +++| PPU$PADDR[I] = LOC(PPU$WORD1[I]);
01197 M01S01131.sxinit +++| PPU$DRCL[I] = LOC(DRVRRECALL);
01198 M01S01132.sxinit +++| END # SET ADDRESS #
01199 M01S01133.sxinit +++|
01200 M01S01134.sxinit +++| PPU$FC[1] = IRTDAM;
01201 M01S01135.sxinit +++| PPCBENCNT = PPCBENCNT+1; # INCREMENT PPCALL COUNT #
01202 M01S01136.sxinit +++| SPC$SPC[0] = "SPC";
01203 M01S01137.sxinit +++| SPC$ADDR[0] = LOC(PPTMP);
01204 M01S01138.sxinit +++| PPT$WORD0[0] = PPU$WORD0[1];
01205 M01S01139.sxinit +++| SLOWFOR I = 0 WHILE PPT$WORD0[0] NQ 0
01206 M01S01140.sxinit +++| DO
01207 M01S01141.sxinit +++| BEGIN
01208 M01S01142.sxinit +++| SYSTEM(SPC,RCL);
01209 M01S01143.sxinit +++| END
01210 M01S01144.sxinit +++|
01211 M01S01145.sxinit +++| END # INITDAM #
01212 M01S01146.sxinit +++|
01213 M01S01147.sxinit +++| TERM
01214 M01S01148.sxinit +++|PROC INITFAM;
01215 M01S01149.sxinit +++|# TITLE INITFAM - INITIALIZES SUBFAMILY PARAMETERS. #
01216 M01S01150.sxinit +++|
01217 M01S01151.sxinit +++| BEGIN # INITFAM #
01218 M01S01152.sxinit +++|
01219 M01S01153.sxinit +++|#
01220 M01S01154.sxinit +++|** INITFAM - INITIALIZES SUBFAMILY PARAMETERS.
01221 M01S01155.sxinit +++|*
01222 M01S01156.sxinit +++|* PROC INITFAM.
01223 M01S01157.sxinit +++|#
01224 M01S01158.sxinit +++|
01225 M01S01159.sxinit +++|#
01226 M01S01160.sxinit +++|**** PROC INITFAM - XREF LIST BEGIN.
01227 M01S01161.sxinit +++|#
01228 M01S01162.sxinit +++|
01229 M01S01163.sxinit +++| XREF
01230 M01S01164.sxinit +++| BEGIN
01231 M01S01165.sxinit +++| PROC ABORT; # CALLS *ABORT* MACRO #
01232 M01S01166.sxinit +++| PROC BZFILL; # BLANK OR ZERO FILLS #
01233 M01S01167.sxinit +++| PROC GETFAM; # GETS TABLE OF FAMILIES #
01234 M01S01168.sxinit +++| PROC MESSAGE; # CALLS *MESSAGE* MACRO #
01235 M01S01169.sxinit +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS #
01236 M01S01170.sxinit +++| PROC RETERN; # RETURNS FILE #
01237 M01S01171.sxinit +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS #
01238 M01S01172.sxinit +++| PROC SETPFP; # SETS USER INDEX AND FAMILY #
01239 M01S01173.sxinit +++| FUNC XCOD I; # CHANGES INTEGER TO DISPLAY #
01240 M01S01174.sxinit +++| PROC XWOD; # CHANGES INTEGER TO OCTAL #
01241 M01S01175.sxinit +++| PROC ZSETFET; # SETS UP *FET* #
01242 M01S01176.sxinit +++| END
01243 M01S01177.sxinit +++|
01244 M01S01178.sxinit +++|#
01245 M01S01179.sxinit +++|**** PROC INITFAM - XREF LIST END.
01246 M01S01180.sxinit +++|#
01247 M01S01181.sxinit +++|
01248 M01S01182.sxinit +++| DEF FILLSIZE #7#; # FILL SIZE FOR *BZFILL* #
01249 M01S01183.sxinit +++| DEF NUM$MST #4#; # NUMBER OF *MSA-S* #
01250 M01S01184.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
01251 M01S01185.sxinit +++|*CALL COMBFAS
01252 M01S01186.sxinit +++|*CALL COMBBZF
01253 M01S01187.sxinit +++|*CALL COMBPFP
01254 M01S01188.sxinit +++|*CALL COMBPFS
01255 M01S01189.sxinit +++|*CALL COMBUDT
01256 M01S01190.sxinit +++|*CALL COMXCTF
01257 M01S01191.sxinit +++|*CALL COMXINT
01258 M01S01192.sxinit +++|*CALL COMXMSC
01259 M01S01193.sxinit +++|*CALL COMSPFM
01260 M01S01194.sxinit +++|
01261 M01S01195.sxinit +++|
01262 M01S01196.sxinit +++| ITEM ATLEASTONE B; # AT LEAST ONE FOUND FLAG #
01263 M01S01197.sxinit +++| ITEM BADNUM U; # BAD FILE INDEX #
01264 M01S01198.sxinit +++| ITEM BLKFILL S:TYPFILL = S"BFILL"; # BLANK FILL #
01265 M01S01199.sxinit +++| ITEM BLKFOUND B; # BLANK FOUND FLAG #
01266 M01S01200.sxinit +++| ITEM FOUND B; # ITEM FOUND FLAG #
01267 M01S01201.sxinit +++| ITEM I U; # INDEX #
01268 M01S01202.sxinit +++| ITEM J U; # INDEX #
01269 M01S01203.sxinit +++| ITEM K U; # INDEX #
01270 M01S01204.sxinit +++| ITEM MSGTEMP C(8); # ITEM FOR *BZFILL* #
01271 M01S01205.sxinit +++| ITEM NUM$FAM U; # NUMBER OF *GETFAM* ENTRIES #
01272 M01S01206.sxinit +++| ITEM UI U; # USER INDEX #
01273 M01S01207.sxinit +++|
01274 M01S01208.sxinit +++|
01275 M01S01209.sxinit +++|#
01276 M01S01210.sxinit +++|* ARRAY TO DISPLAY BAD FILE INFORMATION.
01277 M01S01211.sxinit +++|#
01278 M01S01212.sxinit +++|
01279 M01S01213.sxinit +++| ARRAY BADFILE[0:MAXSF] P(3);
01280 M01S01214.sxinit +++| BEGIN
01281 M01S01215.sxinit +++| ITEM BAD$PFN C(00,00,07); # FILE NAME #
01282 M01S01216.sxinit +++| ITEM BAD$FAM C(00,42,08); # FAMILY NAME #
01283 M01S01217.sxinit +++| ITEM BAD$INDEX C(01,30,06); # USER INDEX #
01284 M01S01218.sxinit +++| END
01285 M01S01219.sxinit +++|
01286 M01S01220.sxinit +++|#
01287 M01S01221.sxinit +++|* ARRAY TO USER INDEX DISPLAY CODE.
01288 M01S01222.sxinit +++|#
01289 M01S01223.sxinit +++|
01290 M01S01224.sxinit +++| ARRAY DIS[0:0] P(2);
01291 M01S01225.sxinit +++| BEGIN
01292 M01S01226.sxinit +++| ITEM DIS$UI C(01,24,06); # USER INDEX IN DISPLAY CODE #
01293 M01S01227.sxinit +++| END
01294 M01S01228.sxinit +++|
01295 M01S01229.sxinit +++|#
01296 M01S01230.sxinit +++|* ARRAY TO HOLD *SFMCAT* FILE NAME.
01297 M01S01231.sxinit +++|#
01298 M01S01232.sxinit +++|
01299 M01S01233.sxinit +++| ARRAY CAT[0:0];
01300 M01S01234.sxinit +++| BEGIN # CAT #
01301 M01S01235.sxinit +++| ITEM CAT$PFN C(00,00,07) = ["SFMCAT "]; # FILE NAME #
01302 M01S01236.sxinit +++| ITEM CAT$UNID C(00,36,01); # UNIQUE IDENTIFIER #
01303 M01S01237.sxinit +++| END # CAT #
01304 M01S01238.sxinit +++|
01305 M01S01239.sxinit +++|
01306 M01S01240.sxinit +++|#
01307 M01S01241.sxinit +++|* MESSAGE BUFFER.
01308 M01S01242.sxinit +++|#
01309 M01S01243.sxinit +++|
01310 M01S01244.sxinit +++| ARRAY MSGBUF[0:0] P(5);
01311 M01S01245.sxinit +++| BEGIN # ARRAY MSGBUF #
01312 M01S01246.sxinit +++| ITEM MSG$LINE C(00,00,40); # MESSAGE LINE #
01313 M01S01247.sxinit +++| ITEM MSG$RZRO C(04,00,12); # ZERO BYE TERMINATOR #
01314 M01S01248.sxinit +++| END # ARRAY MSGBUF #
01315 M01S01249.sxinit +++|
01316 M01S01250.sxinit +++| ARRAY SC$FET [0:0] P(SFETL);
01317 M01S01251.sxinit +++| ;
01318 M01S01252.sxinit +++| CONTROL EJECT;
01319 M01S01253.sxinit +++|
01320 M01S01254.sxinit +++|#
01321 M01S01255.sxinit +++|* FUNCTION 2 - ANALYZE FAMILIES.
01322 M01S01256.sxinit +++|*
01323 M01S01257.sxinit +++|* FIND NUMBER AND NAMES OF FAMILIES WITH ALL SUBFAMILY CATALOGS.
01324 M01S01258.sxinit +++|#
01325 M01S01259.sxinit +++|
01326 M01S01260.sxinit +++| NFAM = 1;
01327 M01S01261.sxinit +++|
01328 M01S01262.sxinit +++| SSID = ATAS;
01329 M01S01263.sxinit +++| GETFAM(FAMT,NUM$FAM,LINK[0],DEFAULTORD,SSID);
01330 M01S01264.sxinit +++| DEF$FAM = FAM$NAME[DEFAULTORD];
01331 M01S01265.sxinit +++|
01332 M01S01266.sxinit +++|
01333 M01S01267.sxinit +++|#
01334 M01S01268.sxinit +++|* ATTEMPT TO ATTACH EACH *SFMCAT* FILE FOR EACH FAMILY.
01335 M01S01269.sxinit +++|* THE FOLLOWING ACTIONS WILL BE TAKEN DEPENDING ON THE NUMBER
01336 M01S01270.sxinit +++|* OF FILES ATTACHED
01337 M01S01271.sxinit +++|*
01338 M01S01272.sxinit +++|* 1) IF NONE, DO NOTHING,
01339 M01S01273.sxinit +++|* 2) IF EIGHT, SAVE THE FAMILY NAME,
01340 M01S01274.sxinit +++|* 3) IF SOME BUT NOT EIGHT, ISSUE ERROR MESSAGE.
01341 M01S01275.sxinit +++|#
01342 M01S01276.sxinit +++|
01343 M01S01277.sxinit +++| SLOWFOR I = 1 STEP 1 UNTIL NUM$FAM
01344 M01S01278.sxinit +++| DO
01345 M01S01279.sxinit +++| BEGIN # CHECK ALL FAMILIES FOR EIGHT CATALOGS #
01346 M01S01280.sxinit +++|
01347 M01S01281.sxinit +++| ATLEASTONE = FALSE; # AT LEAST ONE FOUND FLAG #
01348 M01S01282.sxinit +++| FOUND = TRUE; # CATALOG FOUND FLAG #
01349 M01S01283.sxinit +++| BADNUM = 0; # BAD FILE INDEX #
01350 M01S01284.sxinit +++|
01351 M01S01285.sxinit +++| SLOWFOR J = 0 STEP 1 UNTIL MAXSF
01352 M01S01286.sxinit +++| DO
01353 M01S01287.sxinit +++| BEGIN # CHECK CATALOG FOR EACH SUBFAMILY #
01354 M01S01288.sxinit +++|
01355 M01S01289.sxinit +++| PFP$UI = DEF$UI + J; # SET USER INDEX FOR *SETPFP* #
01356 M01S01290.sxinit +++| PFP$FAM = FAM$NAME[I]; # SET FAMILY NAME FOR *SETPFP* #
01357 M01S01291.sxinit +++| PFP$FG1 = TRUE; # SET FAMILY BIT FOR *SETPFP* #
01358 M01S01292.sxinit +++| PFP$FG4 = TRUE; # SET INDEX BIT FOR *SETPFP* #
01359 M01S01293.sxinit +++| SETPFP(PFP); # SET USER INDEX AND FAMILY #
01360 M01S01294.sxinit +++|
01361 M01S01295.sxinit +++|#
01362 M01S01296.sxinit +++|* IF UNABLE TO DO A *SETPFP* ON A FAMILY, IGNORE CATALOG VALIDATION
01363 M01S01297.sxinit +++|* AND CONTINUE WITH THE NEXT FAMILY.
01364 M01S01298.sxinit +++|#
01365 M01S01299.sxinit +++|
01366 M01S01300.sxinit +++| IF PFP$STAT NQ 0
01367 M01S01301.sxinit +++| THEN
01368 M01S01302.sxinit +++| BEGIN
01369 M01S01303.sxinit +++| TEST I; # NEXT FAMILY #
01370 M01S01304.sxinit +++| END
01371 M01S01305.sxinit +++|
01372 M01S01306.sxinit +++| CAT$UNID[0] = XCOD(J); # CHANGE INDEX TO DISPLAY CODE #
01373 M01S01307.sxinit +++| PFD("ATTACH",CAT$PFN,0,"RC", ##
01374 M01S01308.sxinit +++| PFSTAT,"NA",0,"UP",0,0);
01375 M01S01309.sxinit +++| IF PFSTAT EQ 0 OR PFSTAT EQ FBS
01376 M01S01310.sxinit +++| THEN
01377 M01S01311.sxinit +++| BEGIN # IF ATTACH SUCCESSFUL #
01378 M01S01312.sxinit +++| ATLEASTONE = TRUE;
01379 M01S01313.sxinit +++| END # IF ATTACH SUCCESSFUL #
01380 M01S01314.sxinit +++|
01381 M01S01315.sxinit +++| ELSE
01382 M01S01316.sxinit +++| BEGIN # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE #
01383 M01S01317.sxinit +++| UI = DEF$UI + J;
01384 M01S01318.sxinit +++| XWOD(UI,DIS);
01385 M01S01319.sxinit +++|
01386 M01S01320.sxinit +++| BAD$PFN[BADNUM] = CAT$PFN[0]; # SAVE FILE NAME #
01387 M01S01321.sxinit +++| MSGTEMP = FAM$NAME[I];
01388 M01S01322.sxinit +++| BZFILL(MSGTEMP,BLKFILL,FILLSIZE);
01389 M01S01323.sxinit +++| BAD$FAM[BADNUM] = MSGTEMP; # SAVE FAMILY NAME #
01390 M01S01324.sxinit +++| BAD$INDEX[BADNUM] = DIS$UI; # SAVE USER INDEX #
01391 M01S01325.sxinit +++|
01392 M01S01326.sxinit +++| BADNUM = BADNUM + 1; # INCREMENT COUNT #
01393 M01S01327.sxinit +++| FOUND = FALSE; # CATALOG NOT ATTACHED #
01394 M01S01328.sxinit +++| END # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE #
01395 M01S01329.sxinit +++|
01396 M01S01330.sxinit +++| ZSETFET(LOC(SC$FET[0]),CAT$PFN,0,0,SFETL);
01397 M01S01331.sxinit +++| RETERN(SC$FET[0],RCL);
01398 M01S01332.sxinit +++|
01399 M01S01333.sxinit +++| END # CHECK CATALOG FOR EACH SUBFAMILY #
01400 M01S01334.sxinit +++|
01401 M01S01335.sxinit +++| IF FOUND
01402 M01S01336.sxinit +++| THEN
01403 M01S01337.sxinit +++| BEGIN # IF EIGHT CATALOGS EXIST #
01404 M01S01338.sxinit +++| NAMEFAM[NFAM] = FAM$NAME[I]; # SAVE FAMILY NAME #
01405 M01S01339.sxinit +++| NFAM = NFAM + 1; # INCREMENT FAMILY COUNT #
01406 M01S01340.sxinit +++| END # IF EIGHT CATALOGS EXIST #
01407 M01S01341.sxinit +++|
01408 M01S01342.sxinit +++| ELSE
01409 M01S01343.sxinit +++| BEGIN # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH #
01410 M01S01344.sxinit +++| IF ATLEASTONE
01411 M01S01345.sxinit +++| THEN
01412 M01S01346.sxinit +++| BEGIN # OUTPUT MESSAGE FOR EACH BAD FILE #
01413 M01S01347.sxinit +++| SLOWFOR J = 0 STEP 1 WHILE J LS BADNUM
01414 M01S01348.sxinit +++| DO
01415 M01S01349.sxinit +++| BEGIN # FOR EACH BAD FILE #
01416 M01S01350.sxinit +++| MSG$LINE[0] = " ATTACH ERROR ON SFM SUBFAMILY CATALOG.";
01417 M01S01351.sxinit +++| MESSAGE(MSGBUF,UDFL1);
01418 M01S01352.sxinit +++|
01419 M01S01353.sxinit +++| MSGPFN[0] = BAD$PFN[J];
01420 M01S01354.sxinit +++| MSGFAM[0] = BAD$FAM[J];
01421 M01S01355.sxinit +++| MSGUI[0] = BAD$INDEX[J];
01422 M01S01356.sxinit +++|
01423 M01S01357.sxinit +++| MSG$LINE[0] = MSG$TEXT[0];
01424 M01S01358.sxinit +++| RMVBLNK(MSGBUF[0],40);
01425 M01S01359.sxinit +++| MESSAGE(MSGBUF,UDFL1);
01426 M01S01360.sxinit +++| END # FOR EACH BAD FILE #
01427 M01S01361.sxinit +++|
01428 M01S01362.sxinit +++| END # OUTPUT MESSAGE FOR EACH BAD FILE #
01429 M01S01363.sxinit +++|
01430 M01S01364.sxinit +++| END # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH #
01431 M01S01365.sxinit +++|
01432 M01S01366.sxinit +++| END # CHECK ALL FAMILIES FOR EIGHT CATALOGS #
01433 M01S01367.sxinit +++|
01434 M01S01368.sxinit +++| NFAM = NFAM - 1; # SET FAMILY COUNT #
01435 M01S01369.sxinit +++|
01436 M01S01370.sxinit +++|#
01437 M01S01371.sxinit +++|* SET THE FATAL ERROR FLAG IF THERE ARE NO FAMILIES WITH
01438 M01S01372.sxinit +++|* EIGHT *SFM* CATALOGS.
01439 M01S01373.sxinit +++|#
01440 M01S01374.sxinit +++|
01441 M01S01375.sxinit +++| IF NFAM EQ 0
01442 M01S01376.sxinit +++| THEN
01443 M01S01377.sxinit +++| BEGIN # NO FAMILY WITH 8 CATALOGS FOUND #
01444 M01S01378.sxinit +++| FATALERR = TRUE;
01445 M01S01379.sxinit +++|
01446 M01S01380.sxinit +++| MSG$LINE[0] = " INITIALIZATION PROBLEMS -";
01447 M01S01381.sxinit +++| MESSAGE(MSGBUF[0],UDFL1);
01448 M01S01382.sxinit +++|
01449 M01S01383.sxinit +++| MSG$LINE[0] = " NO FAMILY WITH 8 CATALOGS FOUND.";
01450 M01S01384.sxinit +++| MESSAGE(MSGBUF[0],UDFL1);
01451 M01S01385.sxinit +++| END # NO FAMILY WITH 8 CATALOGS FOUND #
01452 M01S01386.sxinit +++|
01453 M01S01387.sxinit +++| END # INITFAM #
01454 M01S01388.sxinit +++|
01455 M01S01389.sxinit +++| TERM
01456 M01S01390.sxinit +++|PROC INITFLG;
01457 M01S01391.sxinit +++|# TITLE INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS. #
01458 M01S01392.sxinit +++|
01459 M01S01393.sxinit +++| BEGIN # INITFLG #
01460 M01S01394.sxinit +++|
01461 M01S01395.sxinit +++|#
01462 M01S01396.sxinit +++|** INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS.
01463 M01S01397.sxinit +++|*
01464 M01S01398.sxinit +++|* THIS PROCEDURE WILL INITIALIZE ASSORTED FLAGS AND COUNTERS.
01465 M01S01399.sxinit +++|*
01466 M01S01400.sxinit +++|* PROC INITFLG.
01467 M01S01401.sxinit +++|*
01468 M01S01402.sxinit +++|* EXIT FLAGS HAVE BEEN INITIALIZED.
01469 M01S01403.sxinit +++|#
01470 M01S01404.sxinit +++|
01471 M01S01405.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
01472 M01S01406.sxinit +++|*CALL COMBFAS
01473 M01S01407.sxinit +++|*CALL COMBCMD
01474 M01S01408.sxinit +++|*CALL COMBLBL
01475 M01S01409.sxinit +++|*CALL COMBMAT
01476 M01S01410.sxinit +++|*CALL COMBUCR
01477 M01S01411.sxinit +++|*CALL COMBUDT
01478 M01S01412.sxinit +++|*CALL COMXBST
01479 M01S01413.sxinit +++|*CALL COMXCTF
01480 M01S01414.sxinit +++|*CALL COMXINT
01481 M01S01415.sxinit +++| CONTROL EJECT;
01482 M01S01416.sxinit +++|
01483 M01S01417.sxinit +++|#
01484 M01S01418.sxinit +++|* INITIALIZE FLAGS.
01485 M01S01419.sxinit +++|#
01486 M01S01420.sxinit +++|
01487 M01S01421.sxinit +++| CURESERVED = FALSE; # CONTROLLER RESERVED FLAG #
01488 M01S01422.sxinit +++| DRVRRECALL = FALSE; # DRIVER RECALL FLAG #
01489 M01S01423.sxinit +++| DRYUP = FALSE; # DRY-UP FLAG #
01490 M01S01424.sxinit +++| EXEC = TRUE; # MSAS EXECUTIVE FLAG #
01491 M01S01425.sxinit +++| GLBINTLK = FALSE; # GLOBAL CATALOG INTERLOCK FLAG #
01492 M01S01426.sxinit +++| GLBSTFL = TRUE; # GLOBAL STAGE FLAG #
01493 M01S01427.sxinit +++| GLBDSFL = TRUE; # GLOBAL DESTAGE FLAG #
01494 M01S01428.sxinit +++| GLBUCPSW = FALSE; # GLOBAL *UCP* SWAPPED FLAG #
01495 M01S01429.sxinit +++| LABELBUSY = FALSE; # LABEL BUFFER BUSY FLAG #
01496 M01S01430.sxinit +++| TERMINATE = FALSE; # TERMINATE FLAG #
01497 M01S01431.sxinit +++|
01498 M01S01432.sxinit +++|#
01499 M01S01433.sxinit +++|* INITIALIZE COUNTS.
01500 M01S01434.sxinit +++|#
01501 M01S01435.sxinit +++|
01502 M01S01436.sxinit +++| SMCNT = NSM; # NUMBER OF *SM-S* #
01503 M01S01437.sxinit +++| FAMCNT = NFAM; # NUMBER OF FAMILIES #
01504 M01S01438.sxinit +++| PPCBENCNT = 0; # CALL BLOCK ACTIVE ENTRY COUNT #
01505 M01S01439.sxinit +++|
01506 M01S01440.sxinit +++|#
01507 M01S01441.sxinit +++|* INITIALIZE THRESHOLDS.
01508 M01S01442.sxinit +++|#
01509 M01S01443.sxinit +++|
01510 M01S01444.sxinit +++|
01511 M01S01445.sxinit +++|#
01512 M01S01446.sxinit +++|* INITIALIZE DELAY EXPIRATION TIMES.
01513 M01S01447.sxinit +++|#
01514 M01S01448.sxinit +++|
01515 M01S01449.sxinit +++| ITLK$EXPIR = 0; # RECLAIM CATALOG INTERLOCKS #
01516 M01S01450.sxinit +++| MINQ$EXPIR = 0; # MINIMUM QUEUE DELAY EXPIRATION #
01517 M01S01451.sxinit +++| KDIS$EXPIR = 0; # K-DISPLAY REFRESH #
01518 M01S01452.sxinit +++|
01519 M01S01453.sxinit +++|#
01520 M01S01454.sxinit +++|* INITIALIZE ASSORTED POINTERS.
01521 M01S01455.sxinit +++|#
01522 M01S01456.sxinit +++|
01523 M01S01457.sxinit +++| SFBLKPTR = LOC(SFPARMBLK);
01524 M01S01458.sxinit +++| END # INITFLG #
01525 M01S01459.sxinit +++|
01526 M01S01460.sxinit +++| TERM
01527 M01S01461.sxinit +++|PROC INITLZR;
01528 M01S01462.sxinit +++|# TITLE INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS. #
01529 M01S01463.sxinit +++| BEGIN # INITLZR #
01530 M01S01464.sxinit +++|
01531 M01S01465.sxinit +++|#
01532 M01S01466.sxinit +++|*** INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS.
01533 M01S01467.sxinit +++|*
01534 M01S01468.sxinit +++|* THIS ROUTINE WILL MAKE CALLS TO SUBROUTINES AND MACROES TO
01535 M01S01469.sxinit +++|* PERFORM ALL NON-HARDWARE INITIALIZATION STEPS FOR *SSEXEC*.
01536 M01S01470.sxinit +++|*
01537 M01S01471.sxinit +++|* PROC INITLZR.
01538 M01S01472.sxinit +++|*
01539 M01S01473.sxinit +++|* ENTRY CALLED FROM *SSEXEC*.
01540 M01S01474.sxinit +++|*
01541 M01S01475.sxinit +++|* EXIT PARAMETERS HAVE BEEN PROCESSED AND ALL NON-HARDWARE
01542 M01S01476.sxinit +++|* INITIALIZATION STEPS HAVE BEEN EXECUTED OR THE FATAL
01543 M01S01477.sxinit +++|* ERROR FLAG HAS BEEN SET.
01544 M01S01478.sxinit +++|*
01545 M01S01479.sxinit +++|* NOTES THIS INITIALIZATION ROUTINE MAKES PROCEDURE CALLS TO
01546 M01S01480.sxinit +++|* DO THE FOLLOWING:
01547 M01S01481.sxinit +++|*
01548 M01S01482.sxinit +++|* 1) GET THE RUN TIME PARAMETERS,
01549 M01S01483.sxinit +++|* 2) INITIALIZE SUBFAMILY PARAMETERS,
01550 M01S01484.sxinit +++|* 3) INITIALIZE ASSORTED FLAGS,
01551 M01S01485.sxinit +++|* 4) INITIALIZE ASSORTED TABLES,
01552 M01S01486.sxinit +++|* 5) INITIALIZE FOR MULTI-MAINFRAMES,
01553 M01S01487.sxinit +++|* 6) ADVISE SYSTEM OF KEYBOARD BUFFER,
01554 M01S01488.sxinit +++|* 7) REQUEST ACTIVE SUBSYSTEM STATUS,
01555 M01S01489.sxinit +++|* 8) INITIALIZE UDT INTERFACE,
01556 M01S01490.sxinit +++|* 9) INITIALIZE *TDAM* INTERFACE.
01557 M01S01491.sxinit +++|#
01558 M01S01492.sxinit +++|
01559 M01S01493.sxinit +++|#
01560 M01S01494.sxinit +++|**** PROC INITLZR - XREF LIST BEGIN.
01561 M01S01495.sxinit +++|#
01562 M01S01496.sxinit +++|
01563 M01S01497.sxinit +++| XREF
01564 M01S01498.sxinit +++| BEGIN
01565 M01S01499.sxinit +++| PROC CALLSS; # ISSUES REQUEST TO SUBSYSTEM #
01566 M01S01500.sxinit +++| PROC GETMI; # GETS MACHINE INFORMATION #
01567 M01S01501.sxinit +++| PROC GETRTP; # GETS RUN TIME PARAMETERS #
01568 M01S01502.sxinit +++| PROC GETSPS; # GET SYSTEM ORIGIN PRIVILEDGES #
01569 M01S01503.sxinit +++| PROC GETUDT; # GETS UNIT DEVICE TABLE #
01570 M01S01504.sxinit +++| PROC INITDAM; # INITIALIZES *TDAM* INTERFACE #
01571 M01S01505.sxinit +++| PROC INITFAM; # INITIALIZE SUBFAMILY PARAMETERS
01572 M01S01506.sxinit +++| #
01573 M01S01507.sxinit +++| PROC INITFLG; # INITIALIZES FLAGS #
01574 M01S01508.sxinit +++| PROC OPENCAT; # OPEN CATALOGS AND MAPS #
01575 M01S01509.sxinit +++| PROC INITSRP; # INITIALIZES FOR *MMF* MODE #
01576 M01S01510.sxinit +++| PROC INITTAB; # INITIALIZES ASSORTED TABLES #
01577 M01S01511.sxinit +++| PROC KINIT; # INITIALIZES *K* DISPLAY #
01578 M01S01512.sxinit +++| PROC RTIME; # INTERFACE TO *RTIME* MACRO #
01579 M01S01513.sxinit +++| END
01580 M01S01514.sxinit +++|
01581 M01S01515.sxinit +++|#
01582 M01S01516.sxinit +++|**** PROC INITLZR - XREF LIST END.
01583 M01S01517.sxinit +++|#
01584 M01S01518.sxinit +++|
01585 M01S01519.sxinit +++| DEF NOPARAM #-1#; # NO PARAMETER SPECIFIED #
01586 M01S01520.sxinit +++| DEF SECOND #1#; # SWITCH FOR SECOND BUFFER #
01587 M01S01521.sxinit +++| DEF SS$SYS #0#; # REQUEST SUBSYSTEM STATUS CODE #
01588 M01S01522.sxinit +++| DEF RSLEN #1#; # RETURN USER STATUS #
01589 M01S01523.sxinit +++|
01590 M01S01524.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS #
01591 M01S01525.sxinit +++|*CALL COMBFAS
01592 M01S01526.sxinit +++|*CALL COMBCPR
01593 M01S01527.sxinit +++|*CALL COMBUCR
01594 M01S01528.sxinit +++|*CALL COMXCTF
01595 M01S01529.sxinit +++|*CALL COMXEXP
01596 M01S01530.sxinit +++|*CALL COMXINT
01597 M01S01531.sxinit +++|*CALL,COMXJCA
01598 M01S01532.sxinit +++| ITEM FAMSRP C(7); # FAMILY FOR *INITSRP* #
01599 M01S01533.sxinit +++| ITEM MFINDEX U; # MACHINE INDEX FOR *INITSRP* #
01600 M01S01534.sxinit +++| ITEM PBLOCK U = 0; # PARAMETER BLOCK #
01601 M01S01535.sxinit +++| ITEM SS U; # SUBSYSTEM QUEUE PRIORITY #
01602 M01S01536.sxinit +++|
01603 M01S01537.sxinit +++|
01604 M01S01538.sxinit +++| ARRAY SPSSTAT [0:0] S(RSLEN);
01605 M01S01539.sxinit +++| BEGIN
01606 M01S01540.sxinit +++| ITEM SPS$STATUS U(00,48,12); # RETURN STATUS #
01607 M01S01541.sxinit +++| END
01608 M01S01542.sxinit +++|
01609 M01S01543.sxinit +++| CONTROL EJECT;
01610 M01S01544.sxinit +++|
01611 M01S01545.sxinit +++|#
01612 M01S01546.sxinit +++|* READ AND SAVE RTIME.
01613 M01S01547.sxinit +++|#
01614 M01S01548.sxinit +++|
01615 M01S01549.sxinit +++| RTIME(RTIMESTAT);
01616 M01S01550.sxinit +++| FIRSTRTIME = RTIMSECS[0];
01617 M01S01551.sxinit +++|
01618 M01S01552.sxinit +++|#
01619 M01S01553.sxinit +++|* CHECK SYSTEM ORIGIN PRIVILEDGES.
01620 M01S01554.sxinit +++|#
01621 M01S01555.sxinit +++|
01622 M01S01556.sxinit +++|
01623 M01S01557.sxinit +++| GETSPS(SPSSTAT);
01624 M01S01558.sxinit +++| IF SPS$STATUS NQ 0
01625 M01S01559.sxinit +++| THEN
01626 M01S01560.sxinit +++| BEGIN
01627 M01S01561.sxinit +++| FATALERR = TRUE;
01628 M01S01562.sxinit +++| END
01629 M01S01563.sxinit +++|
01630 M01S01564.sxinit +++|#
01631 M01S01565.sxinit +++|* SET UP *RA* POINTER.
01632 M01S01566.sxinit +++|#
01633 M01S01567.sxinit +++|
01634 M01S01568.sxinit +++| P<RA$AREA> = 0;
01635 M01S01569.sxinit +++|
01636 M01S01570.sxinit +++|#
01637 M01S01571.sxinit +++|* CALL *GETRTP* TO PROCESS RUN TIME PARAMETERS.
01638 M01S01572.sxinit +++|#
01639 M01S01573.sxinit +++|
01640 M01S01574.sxinit +++| GETRTP;
01641 M01S01575.sxinit +++|
01642 M01S01576.sxinit +++| IF FATALERR
01643 M01S01577.sxinit +++| THEN
01644 M01S01578.sxinit +++| BEGIN # IF FATAL ERROR #
01645 M01S01579.sxinit +++| RETURN;
01646 M01S01580.sxinit +++| END # IF FATAL ERROR #
01647 M01S01581.sxinit +++|
01648 M01S01582.sxinit +++|#
01649 M01S01583.sxinit +++|* CALL *INITFAM* TO INITIALIZE SUBFAMILY PARAMETERS.
01650 M01S01584.sxinit +++|#
01651 M01S01585.sxinit +++|
01652 M01S01586.sxinit +++| INITFAM;
01653 M01S01587.sxinit +++|
01654 M01S01588.sxinit +++| IF FATALERR
01655 M01S01589.sxinit +++| THEN
01656 M01S01590.sxinit +++| BEGIN # IF FATAL ERROR #
01657 M01S01591.sxinit +++| RETURN;
01658 M01S01592.sxinit +++| END # IF FATAL ERROR #
01659 M01S01593.sxinit +++|
01660 M01S01594.sxinit +++|#
01661 M01S01595.sxinit +++|* CALL *INITFLG* TO INITIALIZE ASSORTED FLAGS.
01662 M01S01596.sxinit +++|#
01663 M01S01597.sxinit +++|
01664 M01S01598.sxinit +++| INITFLG;
01665 M01S01599.sxinit +++|
01666 M01S01600.sxinit +++|#
01667 M01S01601.sxinit +++|* CALL *INITTAB* TO INITIALIZE ASSORTED TABLES.
01668 M01S01602.sxinit +++|#
01669 M01S01603.sxinit +++|
01670 M01S01604.sxinit +++| INITTAB;
01671 M01S01605.sxinit +++|
01672 M01S01606.sxinit +++| IF FATALERR
01673 M01S01607.sxinit +++| THEN
01674 M01S01608.sxinit +++| BEGIN
01675 M01S01609.sxinit +++| RETURN;
01676 M01S01610.sxinit +++| END
01677 M01S01611.sxinit +++|
01678 M01S01612.sxinit +++|#
01679 M01S01613.sxinit +++|* CALL *INITSRP* TO INITIALIZE FOR MULTI-MAINFRAMES.
01680 M01S01614.sxinit +++|#
01681 M01S01615.sxinit +++|
01682 M01S01616.sxinit +++| GETMI(CMRINFO,EVENT);
01683 M01S01617.sxinit +++|
01684 M01S01618.sxinit +++| EESET$EVT = EESET$ASXE; # MSAS SET UP #
01685 M01S01619.sxinit +++| EESET$ASXE = 0;
01686 M01S01620.sxinit +++|
01687 M01S01621.sxinit +++| IF ARG$SC EQ NOPARAM
01688 M01S01622.sxinit +++| THEN
01689 M01S01623.sxinit +++| BEGIN # *S* NOT SPECIFIED #
01690 M01S01624.sxinit +++| FAMSRP = FAM$NAME[LINK$ORD[0]];
01691 M01S01625.sxinit +++| MFINDEX = CMR$MFID[0];
01692 M01S01626.sxinit +++| END # *S* NOT SPECIFIED #
01693 M01S01627.sxinit +++|
01694 M01S01628.sxinit +++| ELSE
01695 M01S01629.sxinit +++| BEGIN # *S* PARAMETER SPECIFIED #
01696 M01S01630.sxinit +++| FAMSRP = DEF$FAM;
01697 M01S01631.sxinit +++| MFINDEX = ARG$S;
01698 M01S01632.sxinit +++| END # *S* PARAMTER SPECIFIED #
01699 M01S01633.sxinit +++|
01700 M01S01634.sxinit +++| INITSRP(CMR$MID[0],MFINDEX,FAMSRP);
01701 M01S01635.sxinit +++|
01702 M01S01636.sxinit +++|#
01703 M01S01637.sxinit +++|* CALL *KINIT* TO INITIALIZE *K* DISPLAY.
01704 M01S01638.sxinit +++|#
01705 M01S01639.sxinit +++|
01706 M01S01640.sxinit +++| KINIT;
01707 M01S01641.sxinit +++|
01708 M01S01642.sxinit +++|#
01709 M01S01643.sxinit +++|* CALL *CALLSS* MACRO TO REQUEST ACTIVE SUBSYSTEM STATUS AND
01710 M01S01644.sxinit +++|* INITIALIZE RA.SSC AND *UCPPARMSW* FOR INCOMING *UCP* REQUESTS.
01711 M01S01645.sxinit +++|* *UPCPARMSW* INDICATES WHICH BUFFER THE NEXT *UCP* REQUEST
01712 M01S01646.sxinit +++|* WILL USE.
01713 M01S01647.sxinit +++|#
01714 M01S01648.sxinit +++|
01715 M01S01649.sxinit +++| SS = SS$SYS; # REQUEST ACTIVE STATUS CODE #
01716 M01S01650.sxinit +++| CALLSS(SS,PBLOCK,NRCL); # REQUEST ACTIVE STATUS #
01717 M01S01651.sxinit +++|
01718 M01S01652.sxinit +++| RA$SSWWRD[0] = 0;
01719 M01S01653.sxinit +++| RA$SSCINLK = FALSE;
01720 M01S01654.sxinit +++| RA$SSCPP = TRUE;
01721 M01S01655.sxinit +++| RA$SSCXP = 0;
01722 M01S01656.sxinit +++| RA$SSCVF = TRUE;
01723 M01S01657.sxinit +++| RA$SSCLP = CPRLEN + 2;
01724 M01S01658.sxinit +++| RA$SSCAP = LOC(PRAMUCP); # SET *UCP* PARAMETER ADDRESS #
01725 M01S01659.sxinit +++| RA$SSPN = "SSEXEC";
01726 M01S01660.sxinit +++| RA$SSCODE = SSID;
01727 M01S01661.sxinit +++| UCPPARMSW = SECOND; # SET NEXT BUFFER SWITCH #
01728 M01S01662.sxinit +++|
01729 M01S01663.sxinit +++|#
01730 M01S01664.sxinit +++|* CALL *GETUDT* TO INITIALIZE UDT INTERFACE.
01731 M01S01665.sxinit +++|#
01732 M01S01666.sxinit +++|
01733 M01S01667.sxinit +++| GETUDT;
01734 M01S01668.sxinit +++|
01735 M01S01669.sxinit +++| IF FATALERR
01736 M01S01670.sxinit +++| THEN
01737 M01S01671.sxinit +++| BEGIN # IF FATAL ERROR #
01738 M01S01672.sxinit +++| RETURN;
01739 M01S01673.sxinit +++| END # IF FATAL ERROR #
01740 M01S01674.sxinit +++|
01741 M01S01675.sxinit +++|#
01742 M01S01676.sxinit +++|* CALL OPENCAT TO INITIALIZE THE OCT AND OMT TABLES AND
01743 M01S01677.sxinit +++|* TO FIND ANY DESCREPENCIES IN THE AST.
01744 M01S01678.sxinit +++|#
01745 M01S01679.sxinit +++| OPENCAT;
01746 M01S01680.sxinit +++|
01747 M01S01681.sxinit +++|#
01748 M01S01682.sxinit +++|* INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS
01749 M01S01683.sxinit +++|* WAITING FOR *MSAS*.
01750 M01S01684.sxinit +++|#
01751 M01S01685.sxinit +++|
01752 M01S01686.sxinit +++| INITDAM;
01753 M01S01687.sxinit +++|
01754 M01S01688.sxinit +++| END # INITLZR #
01755 M01S01689.sxinit +++|
01756 M01S01690.sxinit +++| TERM
01757 M01S01691.sxinit +++|PROC INITSRP((MID),(MIDX),(LINKFAM));
01758 M01S01692.sxinit +++|# TITLE INITSRP - INITIALIZE SLAVE REQUEST PROCESSOR. #
01759 M01S01693.sxinit +++|
01760 M01S01694.sxinit +++| BEGIN # INITSRP #
01761 M01S01695.sxinit +++|
01762 M01S01696.sxinit +++|#
01763 M01S01697.sxinit +++|** INITSRP - INITIALIZE THE SLAVE REQUEST PROCESSOR.
01764 M01S01698.sxinit +++|*
01765 M01S01699.sxinit +++|* *INITSRP* INITIALIZES THE *SSEXEC* FOR MULTIMAINFRAME
01766 M01S01700.sxinit +++|* PROCESSING. IT WILL INITIALIZE THE *MTOS* FILE WHICH IS USED TO
01767 M01S01701.sxinit +++|* COMMUNICATE WITH EACH *SLVEXEC*. IT WILL ALSO ATTACH IN
01768 M01S01702.sxinit +++|* READ-ALLOW-MODIFY MODE THE *STOM* FILES FROM ALL POSSIBLE SLAVE
01769 M01S01703.sxinit +++|* MAINFRAMES SO STAGING REQUESTS FROM *SLVEXEC* PROGRAMS CAN BE
01770 M01S01704.sxinit +++|* ACCEPTED AND PROCESSED.
01771 M01S01705.sxinit +++|*
01772 M01S01706.sxinit +++|* PROC INITSRP((MID),(MIDX),(LINKFAM))
01773 M01S01707.sxinit +++|*
01774 M01S01708.sxinit +++|* ENTRY (MID) = 2 CHARACTER ID OF THE MASTER MAINFRAME.
01775 M01S01709.sxinit +++|* (MIDX) = MACHINE INDEX (1-4) OF THE MASTER MAINFRAME.
01776 M01S01710.sxinit +++|* (LINKFAM) = NAME OF THE FAMILY ON WHICH THE
01777 M01S01711.sxinit +++|* COMMUNICATION FILES RESIDE, OR ARE TO
01778 M01S01712.sxinit +++|* RESIDE.
01779 M01S01713.sxinit +++|*
01780 M01S01714.sxinit +++|* EXIT THE VARIABLES *STOM$EXPIR* AND *MTOS$EXPIR* (IN
01781 M01S01715.sxinit +++|* *COMXCTF*) ARE INITIALIZED TO INDICATE THE TIMES WHEN
01782 M01S01716.sxinit +++|* THE *STOM* FILES SHOULD BE MONITORED AND THE *MTOS*
01783 M01S01717.sxinit +++|* FILE SHOULD BE UPDATED, RESPECTIVELY. IF THE
01784 M01S01718.sxinit +++|* *SSEXEC* IS TO RUN IN SINGLE MAINFRAME MODE, THESE
01785 M01S01719.sxinit +++|* TIMES ARE SET TO THE LARGEST POSSIBLE VALUE.
01786 M01S01720.sxinit +++|*
01787 M01S01721.sxinit +++|* NOTES THE *SSEXEC* WILL RUN IN SINGLE MAINFRAME MODE IF ANY
01788 M01S01722.sxinit +++|* OF THE FOLLOWING CONDITIONS ARE MET.
01789 M01S01723.sxinit +++|* 1) THE MAINFRAME IS NOT IN MULTIMAINFRAME
01790 M01S01724.sxinit +++|* MODE.
01791 M01S01725.sxinit +++|* 2) THE *SETPFP* REQUEST FAILS.
01792 M01S01726.sxinit +++|* 3) THE *MTOS* FILE EXISTS, BUT CANNOT BE
01793 M01S01727.sxinit +++|* ATTACHED IN MODIFY MODE.
01794 M01S01728.sxinit +++|* 4) THE *MTOS* FILE DOES NOT EXIST, BUT
01795 M01S01729.sxinit +++|* CANNOT BE DEFINED.
01796 M01S01730.sxinit +++|* 5) NO VALID SLAVE MAINFRAMES CAN BE
01797 M01S01731.sxinit +++|* IDENTIFIED.
01798 M01S01732.sxinit +++|*
01799 M01S01733.sxinit +++|* ANOTHER MAINFRAME WILL NOT BE RECOGNIZED AS A VALID
01800 M01S01734.sxinit +++|* SLAVE MAINFRAME IF ANY OF THE FOLLOWING IS TRUE.
01801 M01S01735.sxinit +++|* 1) THE *STOM* FILE CANNOT BE ATTACHED IN
01802 M01S01736.sxinit +++|* READ-ALLOW-MODIFY MODE.
01803 M01S01737.sxinit +++|*
01804 M01S01738.sxinit +++|* 2) THE LENGTH OF THE *STOM* FILE INDICATES
01805 M01S01739.sxinit +++|* THAT THE *SLVEXEC* IS WORKING WITH A
01806 M01S01740.sxinit +++|* DIFFERENT SET OF INSTALLATION
01807 M01S01741.sxinit +++|* PARAMETERS.
01808 M01S01742.sxinit +++|*
01809 M01S01743.sxinit +++|* MESSAGES
01810 M01S01744.sxinit +++|* * EXEC MMF INITIALIZATION OK.*
01811 M01S01745.sxinit +++|* AN INFORMATIVE MESSAGE NOTING THAT *SSEXEC*
01812 M01S01746.sxinit +++|* IS READY TO RUN IN MULTIMAINFRAME MODE.
01813 M01S01747.sxinit +++|*
01814 M01S01748.sxinit +++|* * EXEC MMF INITIALIZATION FAILED -*
01815 M01S01749.sxinit +++|* * - ALL SLAVES OMITTED.* -OR-
01816 M01S01750.sxinit +++|* * - ATTACH MTOS FAILED.* -OR-
01817 M01S01751.sxinit +++|* * - DEFINE MTOS FAILED.* -OR-
01818 M01S01752.sxinit +++|* * - MTOS FILE BUSY.* -OR-
01819 M01S01753.sxinit +++|* * - SETPFP PROBLEM.*
01820 M01S01754.sxinit +++|* A MESSAGE INDICATING THAT THE *SSEXEC* PROGRAM
01821 M01S01755.sxinit +++|* WILL NOT RUN IN MULTIFRAME MODE FOR THE REASON
01822 M01S01756.sxinit +++|* NOTED ON THE SECOND LINE.
01823 M01S01757.sxinit +++|*
01824 M01S01758.sxinit +++|* * EXEC IN SINGLE MAINFRAME MODE.*
01825 M01S01759.sxinit +++|* AN INFORMATIVE MESSAGE INDICATING THAT THE
01826 M01S01760.sxinit +++|* *SSEXEC* PROGRAM IS RUNNING IN A SINGLE
01827 M01S01761.sxinit +++|* MAINFRAME CONFIGURATION.
01828 M01S01762.sxinit +++|*
01829 M01S01763.sxinit +++|* * EXEC - SLAVE N XXXX.*
01830 M01S01764.sxinit +++|* XXXX = ACTIVE/IDLE.
01831 M01S01765.sxinit +++|* AN INFORMATIVE MESSAGE INDICATING THAT *SSEXEC*
01832 M01S01766.sxinit +++|* IS READY TO COMMUNICATE WITH THE *SSSLV*
01833 M01S01767.sxinit +++|* PROGRAM WHICH IS RUNNING ON MAINFRAME *N*.
01834 M01S01768.sxinit +++|*
01835 M01S01769.sxinit +++|* * EXEC - SLAVE N OMITTED -*
01836 M01S01770.sxinit +++|* * - NO STOM FILE.* -OR-
01837 M01S01771.sxinit +++|* * - STOM FILE LENGTH PROBLEM.*
01838 M01S01772.sxinit +++|* A MESSAGE INDICATING THAT *SSEXEC* WILL NOT
01839 M01S01773.sxinit +++|* COMMUNICATE WITH AN *SSSLV* PROGRAM, IF ANY, ON
01840 M01S01774.sxinit +++|* MAINFRAME *N* FOR THE REASON NOTED IN THE
01841 M01S01775.sxinit +++|* SECOND LINE.
01842 M01S01776.sxinit +++|*
01843 M01S01777.sxinit +++|#
01844 M01S01778.sxinit +++|
01845 M01S01779.sxinit +++|
01846 M01S01780.sxinit +++| ITEM MID C(2); # MACHINE ID OF MASTER MF #
01847 M01S01781.sxinit +++| ITEM MIDX U; # INDEX (1-4) OF MASTER MF #
01848 M01S01782.sxinit +++| ITEM LINKFAM C(7); # NAME OF LINK FAMILY #
01849 M01S01783.sxinit +++|
01850 M01S01784.sxinit +++|#
01851 M01S01785.sxinit +++|**** PROC INITSRP - XREF LIST BEGIN.
01852 M01S01786.sxinit +++|#
01853 M01S01787.sxinit +++|
01854 M01S01788.sxinit +++| XREF
01855 M01S01789.sxinit +++| BEGIN
01856 M01S01790.sxinit +++| PROC MESSAGE; # ISSUES MESSAGE MACRO #
01857 M01S01791.sxinit +++| PROC PDATE; # ISSUE PDATE MACRO #
01858 M01S01792.sxinit +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS #
01859 M01S01793.sxinit +++| PROC READ; # READ FILE #
01860 M01S01794.sxinit +++| PROC READW; # READ LINE #
01861 M01S01795.sxinit +++| PROC REWIND; # REWIND FILE #
01862 M01S01796.sxinit +++| PROC RETERN; # RETURN FILE #
01863 M01S01797.sxinit +++| PROC RTIME; # ISSUE RTIME MACRO #
01864 M01S01798.sxinit +++| PROC SETPFP; # ISSUE SETPFP MACRO #
01865 M01S01799.sxinit +++| PROC WRITER; # WRITE FILE #
01866 M01S01800.sxinit +++| FUNC XCOD C(10); # INTEGER TO DISPLAY #
01867 M01S01801.sxinit +++| PROC ZFILL; # ZERO FILL AN ARRAY #
01868 M01S01802.sxinit +++| PROC ZSETFET; # INITIALIZE *FET* #
01869 M01S01803.sxinit +++| END
01870 M01S01804.sxinit +++|
01871 M01S01805.sxinit +++|#
01872 M01S01806.sxinit +++|**** PROC INITSRP - XREF LIST END.
01873 M01S01807.sxinit +++|#
01874 M01S01808.sxinit +++|
01875 M01S01809.sxinit +++| DEF LISTCON #0#; # DO NOT LIST COMMON DECKS #
01876 M01S01810.sxinit +++|
01877 M01S01811.sxinit +++|
01878 M01S01812.sxinit +++|*CALL,COMBFAS
01879 M01S01813.sxinit +++|*CALL,COMBFET
01880 M01S01814.sxinit +++|*CALL,COMBPFP
01881 M01S01815.sxinit +++|*CALL COMBPFS
01882 M01S01816.sxinit +++|*CALL,COMXCTF
01883 M01S01817.sxinit +++|*CALL COMXINT
01884 M01S01818.sxinit +++|*CALL,COMXIPR
01885 M01S01819.sxinit +++|*CALL,COMXMMF
01886 M01S01820.sxinit +++|*CALL,COMSPFM
01887 M01S01821.sxinit +++|
01888 M01S01822.sxinit +++|
01889 M01S01823.sxinit +++|
01890 M01S01824.sxinit +++| ARRAY MMFSTAT [0:0] S(4);
01891 M01S01825.sxinit +++| BEGIN
01892 M01S01826.sxinit +++| ITEM MMF$TEXT C(00,00,38) # INITIALIZATION STATUS #
01893 M01S01827.sxinit +++| =[" EXEC MMF INITIALIZATION STATUS"];
01894 M01S01828.sxinit +++| ITEM MMF$STAT C(02,30,09); # OK/FAILED - #
01895 M01S01829.sxinit +++| ITEM MMF$END U(03,48,12) =[0]; # END OF LINE #
01896 M01S01830.sxinit +++| END
01897 M01S01831.sxinit +++|
01898 M01S01832.sxinit +++|
01899 M01S01833.sxinit +++| ARRAY RBBUF [0:0] S(RBSIZE);; # SCRATCH BUFFER #
01900 M01S01834.sxinit +++|
01901 M01S01835.sxinit +++|
01902 M01S01836.sxinit +++|
01903 M01S01837.sxinit +++| ITEM PFNAME C(7); # PERMANENT FILE NAME #
01904 M01S01838.sxinit +++| ITEM RB U; # INDEX TO A REQUEST BLOCK #
01905 M01S01839.sxinit +++| ITEM STAT U; # SCRATCH STATUS WORD #
01906 M01S01840.sxinit +++| ITEM STATM S:EXECSTAT; # STATUS OF MMF INITIALIZATION #
01907 M01S01841.sxinit +++| ITEM STATS S:EXECSTAT; # STATUS OF A SLAVE #
01908 M01S01842.sxinit +++| ITEM THISSLV U; # SCRATCH WORD #
01909 M01S01843.sxinit +++|
01910 M01S01844.sxinit +++| CONTROL EJECT;
01911 M01S01845.sxinit +++|
01912 M01S01846.sxinit +++|#
01913 M01S01847.sxinit +++|* INITIALIZE VARIOUS ITEMS AND POINTERS.
01914 M01S01848.sxinit +++|#
01915 M01S01849.sxinit +++|
01916 M01S01850.sxinit +++| STATM = S"INITPROB";
01917 M01S01851.sxinit +++| L$STOM = (NUMRB + 1) * RBSIZE;
01918 M01S01852.sxinit +++| L$MTOSH = (MAXSLV + 1) * 3;
01919 M01S01853.sxinit +++| L$MTOS = L$MTOSH + NUMRB * NUMSLV;
01920 M01S01854.sxinit +++| P<MTOSHEAD> = LOC(MTOS$BUF);
01921 M01S01855.sxinit +++| P<MTOSM> = LOC(MTOB$FET);
01922 M01S01856.sxinit +++| P<STOMMBUF> = LOC(STOM$BUF);
01923 M01S01857.sxinit +++| STOMBUFL = STOM$BFL;
01924 M01S01858.sxinit +++|
01925 M01S01859.sxinit +++| ZSETFET(LOC(MTOSM),MTOSMLFN,LOC(MTOSHEAD),L$MTOS + 1,SFETL);
01926 M01S01860.sxinit +++|
01927 M01S01861.sxinit +++| IF MIDX EQ 0
01928 M01S01862.sxinit +++| THEN # SINGLE MAINFRAME MODE #
01929 M01S01863.sxinit +++| BEGIN
01930 M01S01864.sxinit +++| STATM = S"SMF";
01931 M01S01865.sxinit +++| GOTO INITMASTER;
01932 M01S01866.sxinit +++| END
01933 M01S01867.sxinit +++|
01934 M01S01868.sxinit +++|#
01935 M01S01869.sxinit +++|* ISSUE A *SETPFP* SO THE COMMUNICATION FILES
01936 M01S01870.sxinit +++|* CAN BE ATTACHED.
01937 M01S01871.sxinit +++|#
01938 M01S01872.sxinit +++|
01939 M01S01873.sxinit +++| PFP$WRD0[0] = 0;
01940 M01S01874.sxinit +++| PFP$FAM[0] = LINKFAM;
01941 M01S01875.sxinit +++| PFP$FG1[0] = TRUE; # CHANGE FAMILY #
01942 M01S01876.sxinit +++| PFP$FG4[0] = TRUE; # CHANGE USER INDEX #
01943 M01S01877.sxinit +++| PFP$UI[0] = DEF$UI;
01944 M01S01878.sxinit +++| SETPFP(PFP);
01945 M01S01879.sxinit +++| IF PFP$STAT[0] NQ 0
01946 M01S01880.sxinit +++| THEN
01947 M01S01881.sxinit +++| BEGIN
01948 M01S01882.sxinit +++| MMFD$PROB[0] = "SETPFP PROBLEM.";
01949 M01S01883.sxinit +++| GOTO INITMASTER;
01950 M01S01884.sxinit +++| END
01951 M01S01885.sxinit +++|
01952 M01S01886.sxinit +++|#
01953 M01S01887.sxinit +++|* ATTACH THE *MTOS* FILE IN MODIFY MODE,
01954 M01S01888.sxinit +++|* AND READ IT TO THE *MTOS* BUFFER.
01955 M01S01889.sxinit +++|* USE THE *STOM* FILE BUFFER AND *FET* TO READ THE *MTOS* FILE.
01956 M01S01890.sxinit +++|#
01957 M01S01891.sxinit +++|
01958 M01S01892.sxinit +++| ZSETFET(LOC(STOMM),MTOSMLFN,LOC(STOMMBUF),STOMBUFL,SFETL);
01959 M01S01893.sxinit +++| PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW,
01960 M01S01894.sxinit +++| "M","M", "RC",PFSTAT,"NA",0,"UP",0,0);
01961 M01S01895.sxinit +++| IF PFSTAT EQ FBS
01962 M01S01896.sxinit +++| THEN # FILE BUSY #
01963 M01S01897.sxinit +++| BEGIN
01964 M01S01898.sxinit +++| MMFD$PROB[0] = "MTOS FILE BUSY.";
01965 M01S01899.sxinit +++| GOTO INITMASTER;
01966 M01S01900.sxinit +++| END
01967 M01S01901.sxinit +++|
01968 M01S01902.sxinit +++|
01969 M01S01903.sxinit +++| IF PFSTAT EQ OK
01970 M01S01904.sxinit +++| THEN # READ *MTOS* #
01971 M01S01905.sxinit +++| BEGIN
01972 M01S01906.sxinit +++| READ(STOMM,RCL);
01973 M01S01907.sxinit +++| READW(STOMM,MTOSHEAD,L$MTOS,STAT);
01974 M01S01908.sxinit +++| END
01975 M01S01909.sxinit +++|
01976 M01S01910.sxinit +++|
01977 M01S01911.sxinit +++|
01978 M01S01912.sxinit +++| IF PFSTAT NQ OK ##
01979 M01S01913.sxinit +++| OR MSH$NUMSLV[0] NQ NUMSLV ##
01980 M01S01914.sxinit +++| OR MSH$NUMRB[0] NQ NUMRB
01981 M01S01915.sxinit +++| THEN # INITIALIZE THE *MTOS* FILE #
01982 M01S01916.sxinit +++| BEGIN
01983 M01S01917.sxinit +++| PFSTAT = 1;
01984 M01S01918.sxinit +++| MSH$NUMSLV[0] = NUMSLV;
01985 M01S01919.sxinit +++| MSH$NUMRB[0] = NUMRB;
01986 M01S01920.sxinit +++| STAT = 1;
01987 M01S01921.sxinit +++| END
01988 M01S01922.sxinit +++|
01989 M01S01923.sxinit +++|#
01990 M01S01924.sxinit +++|* INITIALIZE THE MASTER STATUS INFORMATION.
01991 M01S01925.sxinit +++|#
01992 M01S01926.sxinit +++|
01993 M01S01927.sxinit +++| MSH$PFNM[0] = MTBSPFN;
01994 M01S01928.sxinit +++| MSH$MIDM[0] = MID;
01995 M01S01929.sxinit +++| MSH$MIDX[0] = MIDX;
01996 M01S01930.sxinit +++|
01997 M01S01931.sxinit +++|
01998 M01S01932.sxinit +++| IF PFSTAT NQ OK
01999 M01S01933.sxinit +++| THEN
02000 M01S01934.sxinit +++| BEGIN # CREATE *MTOS* #
02001 M01S01935.sxinit +++|
02002 M01S01936.sxinit +++|#
02003 M01S01937.sxinit +++|* CREATE A NEW *MTOS* PERMANENT FILE WHICH
02004 M01S01938.sxinit +++|* HAS THE MASTER HEADER INFORMATION.
02005 M01S01939.sxinit +++|* REATTACH THE *MTOS* FILE IN MODIFY MODE
02006 M01S01940.sxinit +++|* SO THE *SSSLV* PROGRAMS CAN READ IT.
02007 M01S01941.sxinit +++|#
02008 M01S01942.sxinit +++|
02009 M01S01943.sxinit +++| RETERN(STOMM,RCL);
02010 M01S01944.sxinit +++| PFD("PURGE",MTBSPFN,"PW",MTOSPW,"RC",PFSTAT,"UP",0,0);
02011 M01S01945.sxinit +++| PFD("DEFINE",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"BR","N", "R",
02012 M01S01946.sxinit +++| LINK$DT[0],"RC",PFSTAT,"UP",0,0);
02013 M01S01947.sxinit +++| IF PFSTAT NQ OK
02014 M01S01948.sxinit +++| THEN # CAN NOT DEFINE #
02015 M01S01949.sxinit +++| BEGIN
02016 M01S01950.sxinit +++| MMFD$PROB[0] = "DEFINE MTOS FAILED.";
02017 M01S01951.sxinit +++| GOTO INITMASTER;
02018 M01S01952.sxinit +++| END
02019 M01S01953.sxinit +++|
02020 M01S01954.sxinit +++| P<FETSET> = LOC(MTOSM);
02021 M01S01955.sxinit +++| FET$IN[0] = FET$FRST[0] + L$MTOS;
02022 M01S01956.sxinit +++| WRITER(MTOSM,RCL);
02023 M01S01957.sxinit +++| PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"M","M", "RC",PFSTAT
02024 M01S01958.sxinit +++| ,"NA",0,"UP",0,0);
02025 M01S01959.sxinit +++| IF PFSTAT NQ OK
02026 M01S01960.sxinit +++| THEN # ABNORMAL ERROR #
02027 M01S01961.sxinit +++| BEGIN
02028 M01S01962.sxinit +++| MMFD$PROB[0] = "ATTACH MTOS FAILED.";
02029 M01S01963.sxinit +++| GOTO INITMASTER;
02030 M01S01964.sxinit +++| END
02031 M01S01965.sxinit +++|
02032 M01S01966.sxinit +++| END # CREATE *MTOS* #
02033 M01S01967.sxinit +++|
02034 M01S01968.sxinit +++| STATM = S"ACTIVE";
02035 M01S01969.sxinit +++|
02036 M01S01970.sxinit +++|
02037 M01S01971.sxinit +++|
02038 M01S01972.sxinit +++|
02039 M01S01973.sxinit +++|#
02040 M01S01974.sxinit +++|* ATTACH AND READ THE *STOM* COMMUNICATION FILE
02041 M01S01975.sxinit +++|* FROM EACH POSSIBLE SLAVE AND INITIALIZE THE
02042 M01S01976.sxinit +++|* HEADER AND EACH REPLY BLOCK STATUS FOR EACH SLAVE.
02043 M01S01977.sxinit +++|#
02044 M01S01978.sxinit +++|
02045 M01S01979.sxinit +++| SINDX = 1;
02046 M01S01980.sxinit +++| P<STOMFILE> = LOC(RBBUF);
02047 M01S01981.sxinit +++| FASTFOR DUMMY = 1 STEP 1 UNTIL MAXSLV + 1
02048 M01S01982.sxinit +++| DO
02049 M01S01983.sxinit +++| BEGIN # INITIALIZE EACH SLAVE #
02050 M01S01984.sxinit +++| IF DUMMY EQ MIDX OR ##
02051 M01S01985.sxinit +++| SINDX GR NUMSLV
02052 M01S01986.sxinit +++| THEN # BYPASS THIS *MF* #
02053 M01S01987.sxinit +++| BEGIN
02054 M01S01988.sxinit +++| TEST DUMMY;
02055 M01S01989.sxinit +++| END
02056 M01S01990.sxinit +++|
02057 M01S01991.sxinit +++| P<MTOSREPBLK> = LOC(MTOSHEAD) + L$MTOSH + (SINDX-1)*NUMRB;
02058 M01S01992.sxinit +++| PFNAME = STOMPFN;
02059 M01S01993.sxinit +++| CHAR10 = XCOD(DUMMY);
02060 M01S01994.sxinit +++| CHAR1 = C<9,1>CHAR10;
02061 M01S01995.sxinit +++| B<36,6>PFNAME = CHAR1;
02062 M01S01996.sxinit +++| SLVN$INDX[0] = CHAR1;
02063 M01S01997.sxinit +++| MSH$PFNS[SINDX] = PFNAME;
02064 M01S01998.sxinit +++|
02065 M01S01999.sxinit +++|#
02066 M01S02000.sxinit +++|* ATTACH AND READ THE *STOM* FILE FOR THIS SLAVE
02067 M01S02001.sxinit +++|#
02068 M01S02002.sxinit +++|
02069 M01S02003.sxinit +++| PFD("ATTACH",PFNAME,0,"PW",STOMPW,"M","RM","RC",PFSTAT, "NA",0
02070 M01S02004.sxinit +++| ,"UP",0,0);
02071 M01S02005.sxinit +++| IF PFSTAT NQ OK