Deck SXINIT

3 Modifications

Listing Sections

Source

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
Proceed to Part 1