User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:sxinit

Deck SXINIT

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.sxinit  +++|PROC CALCTS;
00002  M00S00002.sxinit  +++|# TITLE CALCTS - CALCULATE TABLE SPACE.                               #
00003  M00S00003.sxinit  +++|      BEGIN  # CALCTS #
00004  M00S00004.sxinit  +++|
00005  M00S00005.sxinit  +++|#
00006  M00S00006.sxinit  +++|**    CALCTS - CALCULATE TABLE SPACE.
00007  M00S00007.sxinit  +++|*
00008  M00S00008.sxinit  +++|*     THIS PROCEDURE WILL CALCULATE THE NUMBER OF ENTRIES AND THE SPACE
00009  M00S00009.sxinit  +++|*     REQUIRED FOR EACH OF THE VARIABLE TABLES, AND STORE THE RESULTS
00010  M00S00010.sxinit  +++|*     IN THE ARRAY *MAT*.
00011  M00S00011.sxinit  +++|*
00012  M00S00012.sxinit  +++|*     EXIT      TABLE CALCULATIONS COMPLETED.
00013  M00S00013.sxinit  +++|#
00014  M00S00014.sxinit  +++|
00015  M00S00015.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00016  M00S00016.sxinit  +++|*CALL COMBFAS
00017  M00S00017.sxinit  +++|*CALL COMBCMD
00018  M00S00018.sxinit  +++|*CALL COMBLBL
00019  M00S00019.sxinit  +++|*CALL COMBLRQ
00020  M00S00020.sxinit  +++|*CALL COMBMAT
00021  M00S00021.sxinit  +++|*CALL COMBMCT
00022  M00S00022.sxinit  +++|*CALL COMBTDM
00023  M00S00023.sxinit  +++|*CALL COMBUDT
00024  M00S00024.sxinit  +++|*CALL COMXBST
00025  M00S00025.sxinit  +++|*CALL COMXCTF
00026  M00S00026.sxinit  +++|*CALL COMXEXP
00027  M00S00027.sxinit  +++|*CALL COMXFCQ
00028  M00S00028.sxinit  +++|*CALL COMXHLR
00029  M00S00029.sxinit  +++|*CALL,COMXIPR
00030  M00S00030.sxinit  +++|*CALL COMXINT
00031  M00S00031.sxinit  +++|*CALL COMXLTC
Line S00001 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00032  M01S00001.sxinit2 +++|*CALL COMXMFD
00033  M00S00032.sxinit  +++|*CALL COMXMSC
00034  M00S00033.sxinit  +++|
00035  M00S00034.sxinit  +++|      ITEM TEMPCOUNT  U;             # TEMPORARY COUNT FIELD #
00036  M00S00035.sxinit  +++|                                               CONTROL EJECT;
00037  M00S00036.sxinit  +++|
00038  M00S00037.sxinit  +++|#
00039  M00S00038.sxinit  +++|*     CALCULATES THE SPACE REQUIRED AND THE NUMBER OF ENTRIES FOR EACH
00040  M00S00039.sxinit  +++|*     OF THE VARIABLE TABLES, AND STORES THE RESULTS IN THE ARRAY
00041  M00S00040.sxinit  +++|*     *MAT*.
00042  M00S00041.sxinit  +++|#
00043  M00S00042.sxinit  +++|
00044  M00S00043.sxinit  +++|      TEMPCOUNT = Q+2;
00045  M00S00044.sxinit  +++|
00046  M00S00045.sxinit  +++|      MAT$COUNT[MAT$ENTRY"HLRQ"] = TEMPCOUNT;
00047  M00S00046.sxinit  +++|      MAT$SPACE[MAT$ENTRY"HLRQ"] = HLRQLEN * TEMPCOUNT;
00048  M00S00047.sxinit  +++|
00049  M00S00048.sxinit  +++|
00050  M00S00049.sxinit  +++|      MAT$COUNT[MAT$ENTRY"LLRQ"] = TEMPCOUNT;
00051  M00S00050.sxinit  +++|      MAT$SPACE[MAT$ENTRY"LLRQ"] = LLRQENTL * TEMPCOUNT;
00052  M00S00051.sxinit  +++|
00053  M00S00052.sxinit  +++|      MAT$COUNT[MAT$ENTRY"RTRQ"] = Q * RTRQ$SPACE;
00054  M00S00053.sxinit  +++|      MAT$SPACE[MAT$ENTRY"RTRQ"] = (TDAMLEN + 1) * (Q * RTRQ$SPACE);
00055  M00S00054.sxinit  +++|
00056  M00S00055.sxinit  +++|      MAT$COUNT[MAT$ENTRY"FCTQ"] = Q;        # SET FCTQ FIELD #
00057  M00S00056.sxinit  +++|      MAT$SPACE[MAT$ENTRY"FCTQ"] = (FCTQHL+FCTENTL) * Q;
00058  M00S00057.sxinit  +++|
00059  M00S00058.sxinit  +++|      BSTL = MAXCTN * 2;
00060  M00S00059.sxinit  +++|      MAT$COUNT[MAT$ENTRY"BST"] = BSTL;
00061  M00S00060.sxinit  +++|      MAT$SPACE[MAT$ENTRY"BST"] = BSTENTL * BSTL;
00062  M00S00061.sxinit  +++|
00063  M00S00062.sxinit  +++|      LTCTCNT = FAMCNT + 3;
00064  M00S00063.sxinit  +++|      MAT$COUNT[MAT$ENTRY"LTCT"] = FAMCNT + 3;
00065  M00S00064.sxinit  +++|      MAT$SPACE[MAT$ENTRY"LTCT"] = LTCL * (FAMCNT + 3);
00066  M00S00065.sxinit  +++|
00067  M00S00066.sxinit  +++|      MAT$COUNT[MAT$ENTRY"MRFT"] = FAMCNT;
00068  M00S00067.sxinit  +++|      MAT$SPACE[MAT$ENTRY"MRFT"] = MRFTLEN * FAMCNT;
00069  M00S00068.sxinit  +++|
00070  M00S00069.sxinit  +++|      MAT$COUNT[MAT$ENTRY"OMT"] = MAXSM;
00071  M00S00070.sxinit  +++|      MAT$SPACE[MAT$ENTRY"OMT"] = OMTENTL * MAXSM;
00072  M00S00071.sxinit  +++|
00073  M00S00072.sxinit  +++|      MAT$COUNT[MAT$ENTRY"OCT"] = 8 * FAMCNT;
00074  M00S00073.sxinit  +++|      MAT$SPACE[MAT$ENTRY"OCT"] = OCTENTL * 8 * FAMCNT;
00075  M00S00074.sxinit  +++|
00076  M00S00075.sxinit  +++|      MAT$COUNT[MAT$ENTRY"PREAMBLE"] = 8 * FAMCNT;
00077  M00S00076.sxinit  +++|      MAT$SPACE[MAT$ENTRY"PREAMBLE"] = PRMTLEN * 8 * FAMCNT * 3;
00078  M00S00077.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  M00S00078.sxinit  +++|      MAT$COUNT[MAT$ENTRY"UDT$CONT"] = MAXCTN;
00083  M00S00079.sxinit  +++|      MAT$SPACE[MAT$ENTRY"UDT$CONT"] = UDTCUL + 1;  # HEADER INCLUDED #
00084  M00S00080.sxinit  +++|
00085  M00S00081.sxinit  +++|      MAT$COUNT[MAT$ENTRY"UDT$SM"] = MAXSMUNIT;
00086  M00S00082.sxinit  +++|      MAT$SPACE[MAT$ENTRY"UDT$SM"] = UDTSML;
00087  M00S00083.sxinit  +++|
00088  M00S00084.sxinit  +++|      MAT$COUNT[MAT$ENTRY"CAT$FET"] = 1;
00089  M00S00085.sxinit  +++|      MAT$SPACE[MAT$ENTRY"CAT$FET"] = RFETL;
00090  M00S00086.sxinit  +++|
00091  M00S00087.sxinit  +++|      MAT$COUNT[MAT$ENTRY"CAT$BUF"] = 1;
00092  M00S00088.sxinit  +++|      MAT$SPACE[MAT$ENTRY"CAT$BUF"] = FCTBL;
00093  M00S00089.sxinit  +++|
00094  M00S00090.sxinit  +++|      MAT$COUNT[MAT$ENTRY"MAP$FET"] = 1;
00095  M00S00091.sxinit  +++|      MAT$SPACE[MAT$ENTRY"MAP$FET"] = RFETL;
00096  M00S00092.sxinit  +++|
00097  M00S00093.sxinit  +++|      MAT$COUNT[MAT$ENTRY"MAP$BUF"] = 1;
00098  M00S00094.sxinit  +++|      MAT$SPACE[MAT$ENTRY"MAP$BUF"] = MAPBUFL;
00099  M00S00095.sxinit  +++|
00100  M00S00096.sxinit  +++|      MAT$COUNT[MAT$ENTRY"TEMP$FET"] = 1;
00101  M00S00097.sxinit  +++|      MAT$SPACE[MAT$ENTRY"TEMP$FET"] = RFETL * 2;
00102  M00S00098.sxinit  +++|
00103  M00S00099.sxinit  +++|      MAT$COUNT[MAT$ENTRY"TEMP$BUF"] = 1;
00104  M00S00100.sxinit  +++|      MAT$SPACE[MAT$ENTRY"TEMP$BUF"] = TBUFL;
00105  M00S00101.sxinit  +++|
00106  M00S00102.sxinit  +++|      MAT$COUNT[MAT$ENTRY"TEMP$WB"] = 1;
00107  M00S00103.sxinit  +++|      MAT$SPACE[MAT$ENTRY"TEMP$WB"] = WBUFL;
00108  M00S00104.sxinit  +++|
00109  M00S00105.sxinit  +++|      MAT$COUNT[MAT$ENTRY"AST$BUF"] = 1;
00110  M00S00106.sxinit  +++|      MAT$SPACE[MAT$ENTRY"AST$BUF"] = ABUFLEN;
00111  M00S00107.sxinit  +++|
00112  M00S00108.sxinit  +++|      MAT$COUNT[MAT$ENTRY"LABBUF"] = 1;
00113  M00S00109.sxinit  +++|      MAT$SPACE[MAT$ENTRY"LABBUF"] = LABLEN;
00114  M00S00110.sxinit  +++|
Line S00111 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00115  M01S00111.sxinit3 ---|      MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC;
00116  M01S00112.sxinit3 ---|      MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTN * CHANPC *
Line S00001 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00117  M01S00001.sxinit3 +++|      MAT$COUNT[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC;
00118  M01S00002.sxinit3 +++|      MAT$SPACE[MAT$ENTRY"MW$BUFS"] = MAXCTUNIT * CHANPC *
00119  M00S00113.sxinit  +++|                                      (MWBUFL + SFMWL + 1);
00120  M00S00114.sxinit  +++|                                     # READ BUFFER ADDRESS INCLUDED #
00121  M00S00115.sxinit  +++|
Line S00116 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00122  M01S00116.sxinit3 ---|      MAT$COUNT[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC;
00123  M01S00117.sxinit3 ---|      MAT$SPACE[MAT$ENTRY"MR$BUFS"] = MAXCTN * CHANPC * (MRBUFL+SFMRL);
Line S00003 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00118.sxinit  +++|
Line S00119 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00127  M01S00119.sxinit3 ---|      MAT$COUNT[MAT$ENTRY"SBT"] = MAXCTN + (2 * MAXSMUNIT) + 1;
00128  M01S00120.sxinit3 ---|      MAT$SPACE[MAT$ENTRY"SBT"] = (MAXCTN+(2*MAXSMUNIT)+1) * MSGLT;
Line S00005 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00121.sxinit  +++|
00132  M00S00122.sxinit  +++|      END  # CALCTS #
00133  M00S00123.sxinit  +++|
00134  M00S00124.sxinit  +++|    TERM
00135  M00S00125.sxinit  +++|PROC CRAST((FCTX),(QADDR),(ASTADDR));
00136  M00S00126.sxinit  +++|
00137  M00S00127.sxinit  +++|# TITLE CRAST - CREATE *AST* ENTRY.                                   #
00138  M00S00128.sxinit  +++|      BEGIN  # CRAST #
00139  M00S00129.sxinit  +++|
00140  M00S00130.sxinit  +++|#
00141  M00S00131.sxinit  +++|**    CRAST - CREATE *AST* ENTRY.
00142  M00S00132.sxinit  +++|*
00143  M00S00133.sxinit  +++|*     THIS PROCEDURE WILL SCAN THE *FCT* ENTRY AT ORDINAL *FCTX* TO
00144  M00S00134.sxinit  +++|*     CREATE THE CORRESPONDING TRIAL *AST* ENTRY TO BE
00145  M00S00135.sxinit  +++|*     CHECKED WITH THE EXISTING AST IN THE PROCEDURE OPENCAT.
00146  M00S00136.sxinit  +++|*
00147  M00S00137.sxinit  +++|*     PROC      CRAST((FCTX),(QADDR),(ASTADDR))
00148  M00S00138.sxinit  +++|*
00149  M00S00139.sxinit  +++|*     ENTRY     (FCTX)    = ORDINAL OF *FCT* ENTRY.
00150  M00S00140.sxinit  +++|*               (QADDR)   = ADDRESS OF *FCTQ* ENTRY.
00151  M00S00141.sxinit  +++|*               (ASTADDR) = ADDRESS OF *AST* BUFFER.
00152  M00S00142.sxinit  +++|*
00153  M00S00143.sxinit  +++|*     EXIT      *AST* ENTRY HAS BEEN CONSTRUCTED.
00154  M00S00144.sxinit  +++|#
00155  M00S00145.sxinit  +++|
00156  M00S00146.sxinit  +++|      ITEM FCTX       U;             # ORDINAL OF *FCT* ENTRY #
00157  M00S00147.sxinit  +++|      ITEM QADDR      U;             # ADDRESS OF *FCTQ* ENTRY #
00158  M00S00148.sxinit  +++|      ITEM ASTADDR    U;             # ADDRESS OF *AST* BUFFER #
00159  M00S00149.sxinit  +++|
00160  M00S00150.sxinit  +++|      DEF SPACES #" "#;              # SPACES #
00161  M00S00151.sxinit  +++|
00162  M00S00152.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00163  M00S00153.sxinit  +++|
00164  M00S00154.sxinit  +++|*CALL COMBFAS
00165  M00S00155.sxinit  +++|*CALL COMBMCT
00166  M00S00156.sxinit  +++|*CALL COMXCTF
00167  M00S00157.sxinit  +++|*CALL COMXFCQ
00168  M00S00158.sxinit  +++|*CALL COMXINT
00169  M00S00159.sxinit  +++|*CALL COMXMSC
00170  M00S00160.sxinit  +++|
00171  M00S00161.sxinit  +++|      ITEM ATBNDRY    B;             # TRUE IF AT *CDP* OR DONE #
00172  M00S00162.sxinit  +++|      ITEM DONE       B;             # TRUE IF AFTER LAST AU #
00173  M00S00163.sxinit  +++|      ITEM I          U;             # INDEX #
00174  M00S00164.sxinit  +++|      ITEM LASTBUSY   U;             # LAST PROTECTED AU #
00175  M00S00165.sxinit  +++|      ITEM NXTFREE    U;             # NEXT (EXPECTED) FREE VOLUME #
00176  M00S00166.sxinit  +++|      ITEM PREVVOL    U;             # AU OF PREVIOUS VOLUME #
00177  M00S00167.sxinit  +++|      ITEM TEMP       U;             # TEMPORARY #
00178  M00S00168.sxinit  +++|      ITEM THISAU     U;             # LOOP INDEX #
00179  M00S00169.sxinit  +++|      ITEM TOTAU      U;             # TOTAL AU AVAILABLE FOR
00180  M00S00170.sxinit  +++|                                       ALLOCATION #
00181  M00S00171.sxinit  +++|      ITEM VOLLN      U;             # NUMBER OF (EXPECTED)
00182  M00S00172.sxinit  +++|                                       CONTINUATION AU #
00183  M00S00173.sxinit  +++|
00184  M00S00174.sxinit  +++|
00185  M00S00175.sxinit  +++|                                               CONTROL EJECT;
00186  M00S00176.sxinit  +++|
00187  M00S00177.sxinit  +++|      P<FCT> = QADDR + FCTQHL;
00188  M00S00178.sxinit  +++|      P<AST> = ASTADDR;
00189  M00S00179.sxinit  +++|      IF AST$STAT[FCTX] NQ ASTENSTAT"ASS$CART"
00190  M00S00180.sxinit  +++|      THEN
00191  M00S00181.sxinit  +++|        BEGIN
00192  M00S00182.sxinit  +++|        RETURN;
00193  M00S00183.sxinit  +++|        END
00194  M00S00184.sxinit  +++|
00195  M00S00185.sxinit  +++|#
00196  M00S00186.sxinit  +++|*     DET OFF CARTRIDGE LINK AND ALLOCATION ALLOWED FLAGS IS AST.
00197  M00S00187.sxinit  +++|#
00198  M00S00188.sxinit  +++|
00199  M00S00189.sxinit  +++|      AST$NOCLF[FCTX] = FCT$OCLF[FCTX] EQ 7;
00200  M00S00190.sxinit  +++|      AST$AAF[FCTX] = NOT ( FCT$IAF[0] OR FCT$LCF[0] OR  ##
00201  M00S00191.sxinit  +++|        FCT$EEF[0] OR FCT$SEF[0] OR  ##
00202  M00S00192.sxinit  +++|        FCT$FCF[0]) OR (FCT$ORD[0] NQ FCTX);
00203  M00S00193.sxinit  +++|
00204  M00S00194.sxinit  +++|#
00205  M00S00195.sxinit  +++|*     THE OBJECTIVES OF THE FOLLOWING ANALYSIS OF THE *FCT* ENTRY
00206  M00S00196.sxinit  +++|*     ARE THREEFOLD:
00207  M00S00197.sxinit  +++|*
00208  M00S00198.sxinit  +++|*     1)  COUNT THE AU AVAILABLE FOR ALLOCATION.
00209  M00S00199.sxinit  +++|*
00210  M00S00200.sxinit  +++|*     2)  IDENTIFY THE FREE AU WHICH CAN SAFELY BE ALLOCATED
00211  M00S00201.sxinit  +++|*         FOR STORAGE OF FILE DATA, LEAVING ALONE THOSE AU
00212  M00S00202.sxinit  +++|*         WHICH ARE UNALLOCATED, BUT ARE FLAGGED, FLAWED OR
00213  M00S00203.sxinit  +++|*         INCLUDED WITHIN THE COUNT OF CONTINUATION AU OF
00214  M00S00204.sxinit  +++|*         AN AU OR VOLUME WHICH IS ALLOCATED.
00215  M00S00205.sxinit  +++|*
00216  M00S00206.sxinit  +++|*     3)  RE-ORGANIZE THESE USABLE AU INTO VOLUMES AND REBUILD
00217  M00S00207.sxinit  +++|*         THE CHAIN OF AVAILABLE VOLUMES FOR USE BY THE ALLOCATOR.
00218  M00S00208.sxinit  +++|*
00219  M00S00209.sxinit  +++|*     A LOOP EXAMINES EACH AU IN THE *FCT* ENTRY.  EACH AU IS
00220  M00S00210.sxinit  +++|*     REJECTED AS BEING AVAILABLE IF IT IS BUSY, FLAWED, OR HAS
00221  M00S00211.sxinit  +++|*     OTHER FLAGS SET.  AN AU WHICH IS EXPECTED TO BE A
00222  M00S00212.sxinit  +++|*     CONTINUATION AU FOR A VOLUME AVAILABLE FOR ALLOCATION IS
00223  M00S00213.sxinit  +++|*     ACCEPTED IN THE VOLUME IF IT IS NOT BUSY OR FLAGGED.
00224  M00S00214.sxinit  +++|*     ANY AU WHICH IS NOT BUSY, FLAGGED, OR PART OF A VOLUME IS
00225  M00S00215.sxinit  +++|*     TREATED AS THE START OF A NEW VOLUME, AND PROPERLY LINKED
00226  M00S00216.sxinit  +++|*     INTO THE CHAIN OF FREE VOLUMES.
00227  M00S00217.sxinit  +++|*
00228  M00S00218.sxinit  +++|*     THE FOLLOWING SEQUENCE OF STEPS IS TAKEN TO ACHIEVE THE ABOVE:
00229  M00S00219.sxinit  +++|*
00230  M00S00220.sxinit  +++|*     1)  DETERMINE IF THIS AU IS JUST AFTER A BOUNDARY POINT,
00231  M00S00221.sxinit  +++|*         I.E., IT IS JUST AFTER THE LAST AU FOR SHORT OR LONG FILES.
00232  M00S00222.sxinit  +++|*
00233  M00S00223.sxinit  +++|*     2)  IF A VOLUME OF FREE AU IS BEING ACCUMULATED, REDUCE THE
00234  M00S00224.sxinit  +++|*         VOLUME LENGTH IF IT WOULD OTHERWISE INCLUDE AN AU WHICH
00235  M00S00225.sxinit  +++|*         SHOULD NOT BE PART OF THE VOLUME.
00236  M00S00226.sxinit  +++|*
00237  M00S00227.sxinit  +++|*     3)  IF THIS AU IS JUST AFTER A BOUNDARY POINT (SEE STEP 1),
00238  M00S00228.sxinit  +++|*         - VERIFY THAT THE FREE VOLUME CHAIN IS TERMINATED WITH A
00239  M00S00229.sxinit  +++|*           LINK=0.
00240  M00S00230.sxinit  +++|*         - SAVE THE COUNT OF FREE AU IN THE *FCT* HEADER.
00241  M00S00231.sxinit  +++|*         - IF AT START OF AU FOR LONG FILES, RESET COUNTERS.
00242  M00S00232.sxinit  +++|*
00243  M00S00233.sxinit  +++|*     4)  IF THIS AU IS BUSY,
00244  M00S00234.sxinit  +++|*         - SET A VARIABLE SO THAT ANY AU WHICH ARE CLAIMED TO
00245  M00S00235.sxinit  +++|*           BE CONTINUATION AU ARE NOT TREATED AS AVAILABLE FOR
00246  M00S00236.sxinit  +++|*           ALLOCATION REGARDLESS OF THEIR *FCT* ENTRY.
00247  M00S00237.sxinit  +++|*         - LOOP TO EXAMINE THE NEXT AU.
00248  M00S00238.sxinit  +++|*
00249  M00S00239.sxinit  +++|*     5)  IF THE AU IS PROTECTED (SEE STEP 4) OR FLAGGED, LOOP TO
00250  M00S00240.sxinit  +++|*         EXAMINE THE NEXT AU.
00251  M00S00241.sxinit  +++|*
00252  M00S00242.sxinit  +++|*     6)  PROCESS THE AU WHICH IS REALLY AVAILABLE FOR ALLOCATION.
00253  M00S00243.sxinit  +++|*         - CLEAR CONTINUATION FLAG..FORCE A HEAD OF VOLUME STATUS.
00254  M00S00244.sxinit  +++|*         - ADJUST IF NECESSARY THE FREE VOLUME LINKAGE TO POINT
00255  M00S00245.sxinit  +++|*           TO THIS AU (VOLUME).
00256  M00S00246.sxinit  +++|*         - SAVE LENGTH FIELD AS THE COUNT OF NUMBER OF EXPECTED
00257  M00S00247.sxinit  +++|*           CONTINUATION AU.
00258  M00S00248.sxinit  +++|*         - SAVE LINK FIELD AS THE NEXT EXPECTED FREE VOLUME.
00259  M00S00249.sxinit  +++|*         - SAVE THE ID OF THIS VOLUME IN CASE ITS LENGTH HAS
00260  M00S00250.sxinit  +++|*           TO BE REDUCED (SEE STEP 2), OR ITS LINK HAS TO BE
00261  M00S00251.sxinit  +++|*           ADJUSTED (SEE ABOVE SUBSTEP).
00262  M00S00252.sxinit  +++|#
00263  M00S00253.sxinit  +++|
00264  M00S00254.sxinit  +++|      FCT$FLAWS[0] = 0;
00265  M00S00255.sxinit  +++|      PREVVOL = 0;
00266  M00S00256.sxinit  +++|      NXTFREE = FCT$FAUSF[0];
00267  M00S00257.sxinit  +++|      TOTAU = 0;
00268  M00S00258.sxinit  +++|      VOLLN = 0;
00269  M00S00259.sxinit  +++|      LASTBUSY = 0;
00270  M00S00260.sxinit  +++|      DONE = FALSE;
00271  M00S00261.sxinit  +++|
00272  M00S00262.sxinit  +++|      FOR THISAU = 1 STEP 1 WHILE NOT DONE
00273  M00S00263.sxinit  +++|      DO
00274  M00S00264.sxinit  +++|        BEGIN  # THISAU LOOP #
00275  M00S00265.sxinit  +++|
00276  M00S00266.sxinit  +++|#
00277  M00S00267.sxinit  +++|*     STEP 1 - DETERMINE IF AT A BOUNDARY POINT.
00278  M00S00268.sxinit  +++|#
00279  M00S00269.sxinit  +++|
00280  M00S00270.sxinit  +++|        SETFCTX(THISAU);
00281  M00S00271.sxinit  +++|        DONE = THISAU GR FCT$AVOT[0];
00282  M00S00272.sxinit  +++|        ATBNDRY = (THISAU EQ FCT$CDP[0]) OR DONE;
00283  M00S00273.sxinit  +++|
00284  M00S00274.sxinit  +++|#
00285  M00S00275.sxinit  +++|*     STEP 2 - IF IN A SEQUENCE OF CONTINUATION AU, VERIFY THAT
00286  M00S00276.sxinit  +++|*              THIS AU CAN BE INCLUDED.  IF NOT, CORRECT VOLUME LENGTH.
00287  M00S00277.sxinit  +++|#
00288  M00S00278.sxinit  +++|
00289  M00S00279.sxinit  +++|        IF VOLLN NQ 0
00290  M00S00280.sxinit  +++|        THEN
00291  M00S00281.sxinit  +++|          BEGIN  # STEP 2 #
00292  M00S00282.sxinit  +++|          FCT$CLFG(0,0) = FCT$CLFG(FWD,FPS);
00293  M00S00283.sxinit  +++|          FCT$CAUF(0,0) = 1-FCT$CAUF(0,0);
00294  M00S00284.sxinit  +++|
00295  M00S00285.sxinit  +++|          IF (FCT$FLGS1(0,0) EQ 0)   ##
00296  M00S00286.sxinit  +++|            AND NOT ATBNDRY
00297  M00S00287.sxinit  +++|          THEN                       # AU IS OK AS A CONTINUATION AU #
00298  M00S00288.sxinit  +++|            BEGIN
00299  M00S00289.sxinit  +++|            TOTAU = TOTAU + 1;
00300  M00S00290.sxinit  +++|            FCT$CLFG(FWD,FPS) = 0;
00301  M00S00291.sxinit  +++|            FCT$CAUF(FWD,FPS) = 1;
00302  M00S00292.sxinit  +++|            FCT$LEN(FWD,FPS) = VOLLN - 1;
00303  M00S00293.sxinit  +++|            FCT$LINK(FWD,FPS) = PREVVOL;
00304  M00S00294.sxinit  +++|            VOLLN = VOLLN - 1;
00305  M00S00295.sxinit  +++|            TEST THISAU;
00306  M00S00296.sxinit  +++|            END
00307  M00S00297.sxinit  +++|
00308  M00S00298.sxinit  +++|          ELSE                       # TERMINATE THIS VOLUME AND ADJUST
00309  M00S00299.sxinit  +++|                                       ITS LENGTH #
00310  M00S00300.sxinit  +++|            BEGIN
00311  M00S00301.sxinit  +++|            SETFCTX(PREVVOL);
00312  M00S00302.sxinit  +++|            FCT$LEN(FWD,FPS) = FCT$LEN(FWD,FPS) - VOLLN;
00313  M00S00303.sxinit  +++|            VOLLN = 0;
00314  M00S00304.sxinit  +++|            END
00315  M00S00305.sxinit  +++|
00316  M00S00306.sxinit  +++|          END  # STEP 2 #
00317  M00S00307.sxinit  +++|
00318  M00S00308.sxinit  +++|#
00319  M00S00309.sxinit  +++|*     STEP 3 - PROCESS BOUNDARY CONDITION.
00320  M00S00310.sxinit  +++|#
00321  M00S00311.sxinit  +++|
00322  M00S00312.sxinit  +++|        IF ATBNDRY
00323  M00S00313.sxinit  +++|        THEN
00324  M00S00314.sxinit  +++|          BEGIN  # STEP 3 #
00325  M00S00315.sxinit  +++|          SETFCTX(PREVVOL);
00326  M00S00316.sxinit  +++|          IF NXTFREE NQ 0
00327  M00S00317.sxinit  +++|          THEN                       # SET LINK TO ZERO #
00328  M00S00318.sxinit  +++|            BEGIN
00329  M00S00319.sxinit  +++|            FCT$LINK(FWD,FPS) = 0;
00330  M00S00320.sxinit  +++|            END
00331  M00S00321.sxinit  +++|
00332  M00S00322.sxinit  +++|          IF DONE
00333  M00S00323.sxinit  +++|          THEN                       # FINISHED AU FOR LONG FILES #
00334  M00S00324.sxinit  +++|            BEGIN
00335  M00S00325.sxinit  +++|            AST$AULF[FCTX] = TOTAU;
00336  M00S00326.sxinit  +++|            IF FCT$FAULF[0] EQ 0
00337  M00S00327.sxinit  +++|            THEN
00338  M00S00328.sxinit  +++|              BEGIN
00339  M00S00329.sxinit  +++|              AST$AULF[FCTX] = 0;
00340  M00S00330.sxinit  +++|              END
00341  M00S00331.sxinit  +++|
00342  M00S00332.sxinit  +++|            TEST THISAU;
00343  M00S00333.sxinit  +++|            END
00344  M00S00334.sxinit  +++|
00345  M00S00335.sxinit  +++|          ELSE                       # FINISHED AU FOR SHORT FILES #
00346  M00S00336.sxinit  +++|            BEGIN
00347  M00S00337.sxinit  +++|            AST$AUSF[FCTX] = TOTAU;
00348  M00S00338.sxinit  +++|            TOTAU = 0;
00349  M00S00339.sxinit  +++|            PREVVOL = 0;
00350  M00S00340.sxinit  +++|            NXTFREE = FCT$FAULF[0];
00351  M00S00341.sxinit  +++|            END
00352  M00S00342.sxinit  +++|
00353  M00S00343.sxinit  +++|          END  # STEP 3 #
00354  M00S00344.sxinit  +++|
00355  M00S00345.sxinit  +++|#
00356  M00S00346.sxinit  +++|*     STEP 4 - PROCESS AU BUSY.
00357  M00S00347.sxinit  +++|#
00358  M00S00348.sxinit  +++|
00359  M00S00349.sxinit  +++|        SETFCTX(THISAU);
00360  M00S00350.sxinit  +++|        IF FCT$FBF(FWD,FPS) EQ 1
00361  M00S00351.sxinit  +++|        THEN                         # AU IS BUSY, PROTECT ALL AU
00362  M00S00352.sxinit  +++|                                       COVERED BY LENGTH FIELD #
00363  M00S00353.sxinit  +++|          BEGIN
00364  M00S00354.sxinit  +++|          TEMP = THISAU + FCT$LEN(FWD,FPS);
00365  M00S00355.sxinit  +++|          IF TEMP GR LASTBUSY
00366  M00S00356.sxinit  +++|          THEN
00367  M00S00357.sxinit  +++|            BEGIN
00368  M00S00358.sxinit  +++|            LASTBUSY = TEMP;
00369  M00S00359.sxinit  +++|            END
00370  M00S00360.sxinit  +++|
00371  M00S00361.sxinit  +++|          TEST THISAU;
00372  M00S00362.sxinit  +++|          END
00373  M00S00363.sxinit  +++|
00374  M00S00364.sxinit  +++|#
00375  M00S00365.sxinit  +++|*     STEP 5 - SKIP ANY AU THAT ARE PROTECTED OR FLAGGED.
00376  M00S00366.sxinit  +++|#
00377  M00S00367.sxinit  +++|
00378  M00S00368.sxinit  +++|        FCT$CAUF(FWD,FPS) = 0;       # CLEAR CONTINUATION AU FLAG #
00379  M00S00369.sxinit  +++|
00380  M00S00370.sxinit  +++|        IF FCT$FAUF(FWD,FPS) NQ 0
00381  M00S00371.sxinit  +++|        THEN                         # COUNT FLAWED AU #
00382  M00S00372.sxinit  +++|          BEGIN
00383  M00S00373.sxinit  +++|          FCT$FLAWS[0] = FCT$FLAWS[0] + 1;
00384  M00S00374.sxinit  +++|          END
00385  M00S00375.sxinit  +++|
00386  M00S00376.sxinit  +++|        IF THISAU LQ LASTBUSY        ##
00387  M00S00377.sxinit  +++|          OR (FCT$FLGS1(FWD,FPS) NQ 0)
00388  M00S00378.sxinit  +++|        THEN
00389  M00S00379.sxinit  +++|          BEGIN
00390  M00S00380.sxinit  +++|          TEST THISAU;
00391  M00S00381.sxinit  +++|          END
00392  M00S00382.sxinit  +++|
00393  M00S00383.sxinit  +++|#
00394  M00S00384.sxinit  +++|*     STEP 6 - ENSURE THE VOLUME HEADED BY THIS AU IS IN THE
00395  M00S00385.sxinit  +++|*              FREE SPACE CHAIN.
00396  M00S00386.sxinit  +++|*              - IF THE NEXT EXPECTED FREE VOLUME (*NXTFREE*)
00397  M00S00387.sxinit  +++|*                IS BEYOND THIS AU, INSERT THIS AU IN THE MIDDLE
00398  M00S00388.sxinit  +++|*                OF THE CHAIN.
00399  M00S00389.sxinit  +++|*              - IF THE NEXT EXPECTED FREE VOLUME IS PRIOR TO THIS
00400  M00S00390.sxinit  +++|*                AU, CORRECT THE LINK FIELD OF THE PREVIOUS VOLUME
00401  M00S00391.sxinit  +++|*                BY LINKING TO THIS AU.
00402  M00S00392.sxinit  +++|*              - USE THE VOLUME LENGTH AND LINK FIELDS AS SPECIFIED
00403  M00S00393.sxinit  +++|*                BY THIS AU-S *FCT* ENTRY.  IF THEY ARE NOT CORRECT,
00404  M00S00394.sxinit  +++|*                STEP 2 WILL REDUCE THE LENGTH, AND STEP 3 OR THIS
00405  M00S00395.sxinit  +++|*                STEP WILL CORRECT THE LINK FIELD.
00406  M00S00396.sxinit  +++|#
00407  M00S00397.sxinit  +++|
00408  M00S00398.sxinit  +++|        IF THISAU NQ NXTFREE
00409  M00S00399.sxinit  +++|        THEN                         # NEED TO CORRECT LINKAGE #
00410  M00S00400.sxinit  +++|          BEGIN  # CORRECT LINKAGE #
00411  M00S00401.sxinit  +++|          IF THISAU LS NXTFREE
00412  M00S00402.sxinit  +++|          THEN                       # ADD THIS AU (VOLUME) TO CURRENT
00413  M00S00403.sxinit  +++|                                       CHAIN #
00414  M00S00404.sxinit  +++|            BEGIN
00415  M00S00405.sxinit  +++|            FCT$LINK(FWD,FPS) = NXTFREE;
00416  M00S00406.sxinit  +++|            END
00417  M00S00407.sxinit  +++|
00418  M00S00408.sxinit  +++|#
00419  M00S00409.sxinit  +++|*     ADJUST LINK FIELD OF PREVIOUS ENTRY TO POINT TO THIS VOLUME.
00420  M00S00410.sxinit  +++|#
00421  M00S00411.sxinit  +++|
00422  M00S00412.sxinit  +++|          IF PREVVOL EQ 0
00423  M00S00413.sxinit  +++|          THEN                       # UPDATE FREE SPACE POINTERS #
00424  M00S00414.sxinit  +++|            BEGIN
00425  M00S00415.sxinit  +++|            IF THISAU LS FCT$CDP[0]
00426  M00S00416.sxinit  +++|            THEN                     # UPDATE SHORT FILE POINTER #
00427  M00S00417.sxinit  +++|              BEGIN
00428  M00S00418.sxinit  +++|              FCT$FAUSF[0] = THISAU;
00429  M00S00419.sxinit  +++|              END
00430  M00S00420.sxinit  +++|
00431  M00S00421.sxinit  +++|            ELSE                     # UPDATE LONG FILE POINTER #
00432  M00S00422.sxinit  +++|              BEGIN
00433  M00S00423.sxinit  +++|              FCT$FAULF[0] = THISAU;
00434  M00S00424.sxinit  +++|              END
00435  M00S00425.sxinit  +++|
00436  M00S00426.sxinit  +++|            END
00437  M00S00427.sxinit  +++|
00438  M00S00428.sxinit  +++|          ELSE                       # UPDATE PREVIOUS LINK #
00439  M00S00429.sxinit  +++|            BEGIN
00440  M00S00430.sxinit  +++|            SETFCTX(PREVVOL);
00441  M00S00431.sxinit  +++|            FCT$LINK(FWD,FPS) = THISAU;
00442  M00S00432.sxinit  +++|            END
00443  M00S00433.sxinit  +++|
00444  M00S00434.sxinit  +++|          END  # CORRECT LINKAGE #
00445  M00S00435.sxinit  +++|
00446  M00S00436.sxinit  +++|        SETFCTX(THISAU);
00447  M00S00437.sxinit  +++|        TOTAU = TOTAU + 1;
00448  M00S00438.sxinit  +++|        PREVVOL = THISAU;
00449  M00S00439.sxinit  +++|        NXTFREE = FCT$LINK(FWD,FPS);
00450  M00S00440.sxinit  +++|        VOLLN = FCT$LEN(FWD,FPS);
00451  M00S00441.sxinit  +++|        TEST THISAU;
00452  M00S00442.sxinit  +++|        END  # THISAU LOOP #
00453  M00S00443.sxinit  +++|
00454  M00S00444.sxinit  +++|      FCT$CLFG(0,0) = 0;
00455  M00S00445.sxinit  +++|      RETURN;
00456  M00S00446.sxinit  +++|      END  # CRAST #
00457  M00S00447.sxinit  +++|
00458  M00S00448.sxinit  +++|    TERM
00459  M00S00449.sxinit  +++|PROC GETRTP;
00460  M00S00450.sxinit  +++|# TITLE GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS.              #
00461  M00S00451.sxinit  +++|
00462  M00S00452.sxinit  +++|      BEGIN  # GETRTP #
00463  M00S00453.sxinit  +++|
00464  M00S00454.sxinit  +++|#
00465  M00S00455.sxinit  +++|**    GETRTP - GETS AND PROCESSES RUN TIME PARAMETERS.
00466  M00S00456.sxinit  +++|*
00467  M00S00457.sxinit  +++|*     THIS ROUTINE WILL GET AND PROCESS THE TUNING PARAMETER
00468  M00S00458.sxinit  +++|*     AND THE TRACE MODE PARAMETER.
00469  M00S00459.sxinit  +++|*
00470  M00S00460.sxinit  +++|*     PROC      GETRTP
00471  M00S00461.sxinit  +++|*
00472  M00S00462.sxinit  +++|*     EXIT      THE RUN TIME PARAMETERS HAVE BEEN PROCESSED.
00473  M00S00463.sxinit  +++|*
00474  M00S00464.sxinit  +++|*     MESSAGE   1) EXEC ABORT - SYNTAX ERROR.
00475  M00S00465.sxinit  +++|*
00476  M00S00466.sxinit  +++|*               2) *Q* PARAMETER TOO LARGE -
00477  M00S00467.sxinit  +++|*                   MAXIMUM ALLOWABLE VALUE SUBSTITUTED.
00478  M00S00468.sxinit  +++|*
00479  M00S00469.sxinit  +++|*               3) *Q* PARAMETER TOO SMALL -
00480  M00S00470.sxinit  +++|*                   MINIMUM ALLOWABLE VALUE SUBSTITUTED.
00481  M00S00471.sxinit  +++|#
00482  M00S00472.sxinit  +++|
00483  M00S00473.sxinit  +++|#
00484  M00S00474.sxinit  +++|****  PROC GETRTP - XREF LIST BEGIN.
00485  M00S00475.sxinit  +++|#
00486  M00S00476.sxinit  +++|
00487  M00S00477.sxinit  +++|      XREF
00488  M00S00478.sxinit  +++|        BEGIN
00489  M00S00479.sxinit  +++|        PROC EXTAB;                  # SETS UP PARAMETER LIST #
00490  M00S00480.sxinit  +++|        PROC MESSAGE;                # ISSUES MESSAGE TO DAYFILE #
00491  M00S00481.sxinit  +++|        PROC XARG;                   # CRACK PARAMETER LIST #
00492  M00S00482.sxinit  +++|        PROC XDXB;                   # CONVERT DECIMAL TO BINARY #
00493  M00S00483.sxinit  +++|        END
00494  M00S00484.sxinit  +++|
00495  M00S00485.sxinit  +++|#
00496  M00S00486.sxinit  +++|****  PROC GETRTP - XREF LIST END.
00497  M00S00487.sxinit  +++|#
00498  M00S00488.sxinit  +++|
00499  M00S00489.sxinit  +++|
00500  M00S00490.sxinit  +++|
00501  M00S00491.sxinit  +++|      DEF DEC$TYPE   #1#;            # DECIMAL TYPE CONVERSION #
00502  M00S00492.sxinit  +++|      DEF QAVERAGE   #10#;           # AVERAGE TUNING PARAMETER VALUE #
00503  M00S00493.sxinit  +++|      DEF QMAXIMUM   #50#;           # MAXIMUM TUNING PARAMETER VALUE #
00504  M00S00494.sxinit  +++|      DEF QMINIMUM   #6#;            # MINIMUM TUNING PARAMETER VALUE #
00505  M00S00495.sxinit  +++|      DEF SYNTAXOK   #0#;            # NO SYNTAX ERRORS #
00506  M00S00496.sxinit  +++|
00507  M00S00497.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00508  M00S00498.sxinit  +++|*CALL COMBFAS
00509  M00S00499.sxinit  +++|*CALL COMXCTF
00510  M00S00500.sxinit  +++|*CALL COMXEXP
00511  M00S00501.sxinit  +++|*CALL COMXINT
00512  M00S00502.sxinit  +++|*CALL,COMXJCA
00513  M00S00503.sxinit  +++|
00514  M00S00504.sxinit  +++|      ITEM ARGLIST    U;             # ADDRESS OF ARGUMENT LIST #
00515  M00S00505.sxinit  +++|      ITEM ARG$Q      I;             # INTEGER TUNING PARAMETER #
00516  M00S00506.sxinit  +++|      ITEM DFLT       B;             # DEFAULT *Q* FLAG #
00517  M00S00507.sxinit  +++|      ITEM FLAG       U;             # STATUS FLAG FOR ASARG #
00518  M00S00508.sxinit  +++|      ITEM OPTION     U;             # OPTION TO SKIP PROGRAM NAME #
00519  M00S00509.sxinit  +++|
00520  M00S00510.sxinit  +++|#
00521  M00S00511.sxinit  +++|*     MESSAGE BUFFER.
00522  M00S00512.sxinit  +++|#
00523  M00S00513.sxinit  +++|
00524  M00S00514.sxinit  +++|      ARRAY MSGBUF[0:0] P(5);
00525  M00S00515.sxinit  +++|        BEGIN  # ARRAY MSGBUF #
00526  M00S00516.sxinit  +++|        ITEM MSG$LINE   C(00,00,40);  # MESSAGE LINE #
00527  M00S00517.sxinit  +++|        ITEM MSG$RZRO   C(04,00,12);  # ZERO BYE TERMINATOR #
00528  M00S00518.sxinit  +++|        END  # ARRAY MSGBUF #
00529  M00S00519.sxinit  +++|
00530  M00S00520.sxinit  +++|                                               CONTROL EJECT;
00531  M00S00521.sxinit  +++|
00532  M00S00522.sxinit  +++|#
00533  M00S00523.sxinit  +++|*     GET THE RUN TIME PARAMETERS.
00534  M00S00524.sxinit  +++|#
00535  M00S00525.sxinit  +++|
00536  M00S00526.sxinit  +++|      EXTAB(ARGLIST);                # SET UP ARGUMENT LIST #
00537  M00S00527.sxinit  +++|      OPTION = 0;                    # SKIP OVER PROGRAM NAME #
00538  M00S00528.sxinit  +++|      XARG(ARGLIST,OPTION,FLAG);     # GET PARAMETERS #
00539  M00S00529.sxinit  +++|
00540  M00S00530.sxinit  +++|      IF FLAG NQ SYNTAXOK
00541  M00S00531.sxinit  +++|      THEN
00542  M00S00532.sxinit  +++|        BEGIN  # IF SYNTAX ERRORS DETECTED BY ASARG #
00543  M00S00533.sxinit  +++|        MSG$LINE[0] = " EXEC ABORT - SYNTAX ERRORS. ";
00544  M00S00534.sxinit  +++|        MESSAGE(MSGBUF[0],UDFL1);    # ERROR MESSAGE TO DAYFILE #
00545  M00S00535.sxinit  +++|        FATALERR = TRUE;
00546  M00S00536.sxinit  +++|        RETURN;
00547  M00S00537.sxinit  +++|        END  # IF SYNTAX ERRORS DETECTED BY ASARG #
00548  M00S00538.sxinit  +++|
00549  M00S00539.sxinit  +++|#
00550  M00S00540.sxinit  +++|*     CHANGE DISPLAY CODE *S* PARAMETER TO DECIMAL INTEGER.  IF
00551  M00S00541.sxinit  +++|*     *S* PARAMETER IS NOT FOUND ON CONTROL COMMAND, *ARG$S*
00552  M00S00542.sxinit  +++|*     WILL BE SET TO -1.
00553  M00S00543.sxinit  +++|#
00554  M00S00544.sxinit  +++|
00555  M00S00545.sxinit  +++|      XDXB(ARG$SC[0],DEC$TYPE,ARG$S);
00556  M00S00546.sxinit  +++|
00557  M00S00547.sxinit  +++|#
00558  M00S00548.sxinit  +++|*     SET THE SMALLEST *HLRQ* COUNT.
00559  M00S00549.sxinit  +++|#
00560  M00S00550.sxinit  +++|
00561  M00S00551.sxinit  +++|      Q = MAXSMUNIT * 2;        # SET MAXIMUN AND DEFAULT *HLRQ* COUNT #
00562  M00S00552.sxinit  +++|      IF MIMHLRQ LS Q
00563  M00S00553.sxinit  +++|      THEN
00564  M00S00554.sxinit  +++|        BEGIN     # FORCE THE SMALLEST *HLRQ* COUNT #
00565  M00S00555.sxinit  +++|        Q = MIMHLRQ;
00566  M00S00556.sxinit  +++|        END
00567  M00S00557.sxinit  +++|
00568  M00S00558.sxinit  +++|
00569  M00S00559.sxinit  +++|#
00570  M00S00560.sxinit  +++|*     SET *RA$TRACE* TO *TRUE* IF *TM* PARAMETER SPECIFIED.
00571  M00S00561.sxinit  +++|#
00572  M00S00562.sxinit  +++|
00573  M00S00563.sxinit  +++|      RA$TRACE = (ARG$T NQ -1);
00574  M00S00564.sxinit  +++|
00575  M00S00565.sxinit  +++|      RETURN;
00576  M00S00566.sxinit  +++|      END  # GETRTP #
00577  M00S00567.sxinit  +++|
00578  M00S00568.sxinit  +++|    TERM
00579  M00S00569.sxinit  +++|PROC GETUDT;
00580  M00S00570.sxinit  +++|# TITLE GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION.      #
00581  M00S00571.sxinit  +++|
00582  M00S00572.sxinit  +++|      BEGIN  # GETUDT #
00583  M00S00573.sxinit  +++|
00584  M00S00574.sxinit  +++|#
00585  M00S00575.sxinit  +++|**    GETUDT - DETERMINES THE PROPERTIES OF THE CONFIGURATION.
00586  M00S00576.sxinit  +++|*
00587  M00S00577.sxinit  +++|*     THIS ROUTINE WILL INITIALIZE VARIABLES DEFINING THE
00588  M00S00578.sxinit  +++|*     CONFIGURATION OF THE CONTROLLERS AND STORAGE MODULES.
00589  M00S00579.sxinit  +++|*
00590  M00S00580.sxinit  +++|*     PROC      GETUDT.
00591  M00S00581.sxinit  +++|*
00592  M00S00582.sxinit  +++|*     ENTRY     M860 HARDWARE CONFIGURATION EXISTS.
00593  M00S00583.sxinit  +++|*
00594  M00S00584.sxinit  +++|*     EXIT      CONFIGURATION INFORMATION HAS BEEN PROCESSED.
00595  M00S00585.sxinit  +++|*
00596  M00S00586.sxinit  +++|*     MESSAGES  1) ATTACH ERROR - BUDT FILE BUSY.
00597  M00S00587.sxinit  +++|*
00598  M00S00588.sxinit  +++|*               2) ATTACH ERROR - BUDT FILE NOT FOUND.
00599  M00S00589.sxinit  +++|*
00600  M00S00590.sxinit  +++|*               3) BUDT CONTROLLER ENTRY COUNT EXCEEDED.
00601  M00S00591.sxinit  +++|*
00602  M00S00592.sxinit  +++|*               4) BUDT CONTROLLER TABLE READ ERROR.
00603  M00S00593.sxinit  +++|*
00604  M00S00594.sxinit  +++|*               5) BUDT READ ERROR.
00605  M00S00595.sxinit  +++|*
00606  M00S00596.sxinit  +++|*               6) BUDT SM ENTRY COUNT EXCEEDED.
00607  M00S00597.sxinit  +++|*
00608  M00S00598.sxinit  +++|*               7) BUDT SM TABLE READ ERROR.
00609  M00S00599.sxinit  +++|*
00610  M00S00600.sxinit  +++|*               8) EST ORDINAL XX - NO UDT ENTRY.
00611  M00S00601.sxinit  +++|*
00612  M00S00602.sxinit  +++|*               9) EST READ ERROR.
00613  M00S00603.sxinit  +++|*
00614  M00S00604.sxinit  +++|*               10) EST/UDT CHANNEL MISMATCH.
00615  M00S00605.sxinit  +++|*
00616  M00S00606.sxinit  +++|*               11) MORE CHANNELS THAN MSG FETS.
00617  M00S00607.sxinit  +++|*
00618  M00S00608.sxinit  +++|*               12) VERIFY ERROR ON EST ENTRY XX.
00619  M00S00609.sxinit  +++|*
00620  M00S00610.sxinit  +++|*     NOTES     *INITTAB* MUST BE CALLED BEFORE *GETUDT* SO THAT AN
00621  M00S00611.sxinit  +++|*               I/O BUFFER IS AVAILABLE TO READ THE BUDT INTO
00622  M00S00612.sxinit  +++|*               *SSEXEC*.
00623  M00S00613.sxinit  +++|*
00624  M00S00614.sxinit  +++|*               *KINIT* MUST BE CALLED BEFORE *GETUDT* SO THAT A
00625  M00S00615.sxinit  +++|*               K-DISPLAY MESSAGE CAN BE ISSUED ALLOWING THE OPERATOR
00626  M00S00616.sxinit  +++|*               TO RUN *SSALTER* TO MODIFY THE UDT.
00627  M00S00617.sxinit  +++|*
00628  M00S00618.sxinit  +++|*               THE *UCP* INTERFACE MUST BE INITIALIZED BEFORE
00629  M00S00619.sxinit  +++|*               *GETUDT* IS CALLED SO THAT *SSALTER* MAY BE RUN.
00630  M00S00620.sxinit  +++|#
00631  M00S00621.sxinit  +++|
00632  M00S00622.sxinit  +++|#
00633  M00S00623.sxinit  +++|****  PROC GETUDT - XREF LIST BEGIN.
00634  M00S00624.sxinit  +++|#
00635  M00S00625.sxinit  +++|
00636  M00S00626.sxinit  +++|      XREF
00637  M00S00627.sxinit  +++|        BEGIN
00638  M00S00628.sxinit  +++|        PROC ATTACH;                 # ATTACH FILE #
00639  M00S00629.sxinit  +++|        PROC BZFILL;                 # BLANK OR ZERO FILLS #
00640  M00S00630.sxinit  +++|        PROC PFD;                    # PFM ENTRY #
00641  M00S00631.sxinit  +++|        PROC SETPFP;                 # SETS USER INDEX AND FAMILY #
00642  M00S00632.sxinit  +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
00643  M00S00633.sxinit  +++|        PROC RDEST;                  # READ EST ENTRIES #
00644  M00S00634.sxinit  +++|        PROC READ;                   # READS FILE TO I/O BUFFER #
00645  M00S00635.sxinit  +++|        PROC READW;                  # READS FILE TO WORKING BUFFER #
00646  M00S00636.sxinit  +++|        PROC RETERN;                 # RETURNS FILE #
00647  M00S00637.sxinit  +++|        PROC RTIME;                  # GET REAL TIME #
00648  M00S00638.sxinit  +++|        FUNC XCOD C(10);             # CONVERT OCTAL TO DISPLAY #
00649  M00S00639.sxinit  +++|        PROC ZSETFET;                # SETS UP *FET* #
00650  M00S00640.sxinit  +++|        END
00651  M00S00641.sxinit  +++|
00652  M00S00642.sxinit  +++|#
00653  M00S00643.sxinit  +++|****  PROC GETUDT - XREF LIST END.
00654  M00S00644.sxinit  +++|#
00655  M00S00645.sxinit  +++|
00656  M00S00646.sxinit  +++|      DEF CNTYPE     #"SS"#;         # CONTROLLER TYPE #
Line S00001 Modification History
M01 (Added by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
00657  M01S00001.sxinit4 +++|      DEF DOWNSTATUS #3#;            # CONTROLLER EST *DOWN* STATUS #
00658  M00S00647.sxinit  +++|      DEF ESTCHAN(CUO,UCHO) #B<13+(UCHO*6),5>EST$WORD[0]#;
00659  M00S00648.sxinit  +++|                                     # EST CHANNEL #
Line S00649 Modification History
M01 (Removed by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00660  M01S00649.sxinit2 ---|      DEF ESTON(CUO,UCHO) #B<12+(UCHO*6),1>EST$WORD[0]#;
Line S00005 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00661  M01S00005.sxinit2 +++|      DEF ESTON(UCHO) # B<12+(UCHO*6),1>EST$WORD[0]#;
00662  M00S00650.sxinit  +++|                                     # EST CHANNEL STATUS #
00663  M00S00651.sxinit  +++|      DEF FILLSIZE   #7#;            # FILL SIZE FOR *BZFILL* #
00664  M00S00652.sxinit  +++|      DEF FIRSTCHAN  #1#;            # PRIMARY EST CHANNEL INDEX #
Line S00002 Modification History
M01 (Added by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00653.sxinit  +++|      DEF READMODE   #1#;            # READ MODE FOR ATTACH #
00669  M00S00654.sxinit  +++|      DEF UDTEX(CUO,CIFO) #B<CIFO,1>UD$CHEX[CUO]#;
00670  M00S00655.sxinit  +++|                                     # SET IF CHANNEL EXISTS #
00671  M00S00656.sxinit  +++|
00672  M00S00657.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00673  M00S00658.sxinit  +++|*CALL COMBFAS
00674  M00S00659.sxinit  +++|*CALL COMBBZF
00675  M00S00660.sxinit  +++|*CALL COMBCMD
00676  M00S00661.sxinit  +++|*CALL COMBCPR
00677  M00S00662.sxinit  +++|*CALL,COMBFET
00678  M00S00663.sxinit  +++|*CALL COMBKDD
00679  M00S00664.sxinit  +++|*CALL COMBMAT
00680  M00S00665.sxinit  +++|*CALL,COMBPFP
00681  M00S00666.sxinit  +++|*CALL COMBPFS
00682  M00S00667.sxinit  +++|*CALL COMBUCR
00683  M00S00668.sxinit  +++|*CALL COMBUDT
00684  M00S00669.sxinit  +++|*CALL COMSPFM
00685  M00S00670.sxinit  +++|*CALL COMXBST
00686  M00S00671.sxinit  +++|*CALL COMXCTF
00687  M00S00672.sxinit  +++|*CALL COMXINT
00688  M00S00673.sxinit  +++|*CALL COMXJCA
00689  M00S00674.sxinit  +++|
00690  M00S00675.sxinit  +++|
Line S00007 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00676.sxinit  +++|      ITEM BUFL       U;             # I/O BUFFER LENGTH #
00694  M01S00009.sxinit3 +++|      ITEM DESIREDORD I;             # EST ORD TO CHECK IN BIT MAP #
00695  M00S00677.sxinit  +++|      ITEM ESTNUM     U;             # COUNT OF EST ENTRIES READ #
00696  M00S00678.sxinit  +++|      ITEM ESTORD     C(10);         # DISPLAY CODE EST ORDINAL #
00697  M00S00679.sxinit  +++|        ITEM NUM        I;       # NUMBER OF EST ENTRIES #
00698  M00S00680.sxinit  +++|      ITEM FETL       U;             # TEMP BUFFER FET LENGTH #
00699  M00S00681.sxinit  +++|      ITEM FOUND      B;             # SET IF EST/UDT MATCH FOUND #
00700  M00S00682.sxinit  +++|      ITEM I          U;             # INDEX #
00701  M00S00683.sxinit  +++|      ITEM J          U;             # INDEX #
00702  M00S00684.sxinit  +++|      ITEM K          I;             # INDEX #
00703  M00S00685.sxinit  +++|      ITEM LFN        C(7);          # BUDT LOCAL FILENAME #
00704  M00S00686.sxinit  +++|      ITEM PASSWORD   C(7);          # BUDT FILE PASSWORD #
00705  M00S00687.sxinit  +++|      ITEM STAT       U;             # FUNCTION RETURN STATUS #
00706  M00S00688.sxinit  +++|      ITEM TMPCCNT    U;             # TEMP CHANNEL COUNT #
00707  M00S00689.sxinit  +++|
00708  M00S00690.sxinit  +++|#
00709  M00S00691.sxinit  +++|*     ARRAY TO MARK SS-TYPE EQUIPMENT.
00710  M00S00692.sxinit  +++|#
00711  M00S00693.sxinit  +++|
Line S00694 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00712  M01S00694.sxinit3 ---|      ARRAY EQBITS [0:0] S(9);
Line S00010 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00713  M01S00010.sxinit3 +++|      ARRAY EQBITS [0:8] S(9);
00714  M00S00695.sxinit  +++|        BEGIN
Line S00696 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00715  M01S00696.sxinit3 ---|        ITEM EQUSED  U;
Line S00011 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00716  M01S00011.sxinit3 +++|        ITEM EQUSED     U(00,00,60);  # BIT MAP WORD #
00717  M00S00697.sxinit  +++|        END
00718  M00S00698.sxinit  +++|
00719  M00S00699.sxinit  +++|
00720  M00S00700.sxinit  +++|#
00721  M00S00701.sxinit  +++|*     EST BUFFER.
00722  M00S00702.sxinit  +++|#
00723  M00S00703.sxinit  +++|
00724  M00S00704.sxinit  +++|      ARRAY ESTB [0:0] S(2);
00725  M00S00705.sxinit  +++|        BEGIN  # EST #
00726  M00S00706.sxinit  +++|        ITEM EST$WORD   U(00,00,60);  # EST WORD #
Line S00005 Modification History
M01 (Added by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
00727  M01S00005.sxinit4 +++|        ITEM EST$STAT   U(00,10,02);  # CONTROLLER STATUS #
00728  M00S00707.sxinit  +++|        ITEM EST$CHBDWN B(00,12,01);  # CHANNEL *B* DOWN #
00729  M00S00708.sxinit  +++|        ITEM EST$CHB    U(00,13,05);  # CHANNEL *B* #
00730  M00S00709.sxinit  +++|        ITEM EST$CHADWN B(00,18,01);  # CHANNEL *A* DOWN #
00731  M00S00710.sxinit  +++|        ITEM EST$CHA    U(00,19,05);  # CHANNEL *A* #
00732  M00S00711.sxinit  +++|        ITEM EST$CHDDWN B(00,24,01);  # CHANNEL *D* DOWN #
00733  M00S00712.sxinit  +++|        ITEM EST$CHD    U(00,25,05);  # CHANNEL *D* #
00734  M00S00713.sxinit  +++|        ITEM EST$CHCDWN B(00,30,01);  # CHANNEL *C* DOWN #
00735  M00S00714.sxinit  +++|        ITEM EST$CHC    U(00,31,05);  # CHANNEL *C* #
Line S00715 Modification History
M01 (Removed by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
00736  M01S00715.sxinit4 ---|        ITEM EST$OFF    B(00,36,01);  # CONTROLLER OFF #
00737  M00S00716.sxinit  ---|        ITEM EST$CONT   U(00,37,11);  # CONTROLLER TYPE #
00738  M00S00717.sxinit  ---|        ITEM EST$CNCT   U(00,48,03);  # CONNECT CODE #
00739  M00S00718.sxinit  ---|        END  # EST #
00740  M00S00719.sxinit  ---|
00741  M00S00720.sxinit  ---|
00742  M00S00721.sxinit  ---|#
00743  M00S00722.sxinit  ---|*     UDT CHANNEL ARRAY.
00744  M00S00723.sxinit  ---|#
00745  M00S00724.sxinit  ---|
00746  M00S00725.sxinit  ---|      ARRAY UDTCH [0:MAX$CH] S(1);
00747  M00S00726.sxinit  ---|        BEGIN
Line S00006 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00748  M01S00006.sxinit2 +++|        ITEM UDTCWORD   U(00,00,06);  # CHANNEL WORD #
00749  M00S00727.sxinit  +++|        ITEM UDTBSTAT   B(00,00,01); # CHANNEL STATUS (BOOLEAN) #
00750  M00S00728.sxinit  +++|        ITEM UDTSTAT    U(00,00,01); # CHANNEL STATUS #
00751  M00S00729.sxinit  +++|        ITEM UDTCHAN    U(00,01,05); # CHANNEL NUMBER #
00752  M00S00730.sxinit  +++|        END
00753  M00S00731.sxinit  +++|
00754  M00S00732.sxinit  +++|
00755  M00S00733.sxinit  +++|#
00756  M00S00734.sxinit  +++|*     *MISSING UDT ENTRY* ERROR MESSAGE BUFFER.
00757  M00S00735.sxinit  +++|#
00758  M00S00736.sxinit  +++|
00759  M00S00737.sxinit  +++|      ARRAY MISMB [0:0] S(4);
00760  M00S00738.sxinit  +++|        BEGIN  # MESSAGE BUFFER #
00761  M00S00739.sxinit  +++|        ITEM MIS$1      C(00,00,13) = [" EST ORDINAL "];
00762  M00S00740.sxinit  +++|        ITEM MIS$NUM    U(01,18,24); # EST ORDINAL #
00763  M00S00741.sxinit  +++|        ITEM MIS$2      C(01,42,16) = [" - NO UDT ENTRY."];
00764  M00S00742.sxinit  +++|        ITEM MIS$ZRO    U(03,18,42) = [0];  # ZERO-BYTE TERMINATOR #
00765  M00S00743.sxinit  +++|        END  # MESSAGE BUFFER #
00766  M00S00744.sxinit  +++|
00767  M00S00745.sxinit  +++|
00768  M00S00746.sxinit  +++|#
00769  M00S00747.sxinit  +++|*     GENERAL ERROR MESSAGE BUFFER.
00770  M00S00748.sxinit  +++|#
00771  M00S00749.sxinit  +++|
00772  M00S00750.sxinit  +++|      ARRAY MSGMB [0:0] S(5);
00773  M00S00751.sxinit  +++|        BEGIN  # MESSAGE BUFFER #
00774  M00S00752.sxinit  +++|        ITEM MSG$LINE   C(00,00,40);  # MESSAGE LINE #
00775  M00S00753.sxinit  +++|        ITEM MSG$ZRO    U(04,00,12) = [0];  # ZERO-BYTE TERMINATOR #
00776  M00S00754.sxinit  +++|        END  # MESSAGE BUFFER #
00777  M00S00755.sxinit  +++|
00778  M00S00756.sxinit  +++|
00779  M00S00757.sxinit  +++|#
00780  M00S00758.sxinit  +++|*     *VERIFY* ERROR MESSAGE BUFFER.
00781  M00S00759.sxinit  +++|#
00782  M00S00760.sxinit  +++|
00783  M00S00761.sxinit  +++|      ARRAY VERMB [0:0] S(4);
00784  M00S00762.sxinit  +++|        BEGIN  # MESSAGE BUFFER #
00785  M00S00763.sxinit  +++|        ITEM VER$1      C(00,00,27) = [" VERIFY ERROR ON EST ENTRY "];
00786  M00S00764.sxinit  +++|        ITEM VER$NUM    C(02,42,24); # EST ORDINAL #
00787  M00S00765.sxinit  +++|        ITEM VER$2      C(03,06,06) = ["."];
00788  M00S00766.sxinit  +++|        ITEM VER$ZRO    U(03,12,48) = [0];  # ZERO-BYTE TERMINATOR #
00789  M00S00767.sxinit  +++|        END  # MESSAGE BUFFER #
00790  M00S00768.sxinit  +++|
00791  M00S00769.sxinit  +++|
00792  M00S00770.sxinit  +++|                                               CONTROL EJECT;
00793  M00S00771.sxinit  +++|
00794  M00S00772.sxinit  +++|#
00795  M00S00773.sxinit  +++|*     READ BUDT INTO TEMPORARY BUFFER.
00796  M00S00774.sxinit  +++|#
00797  M00S00775.sxinit  +++|
00798  M00S00776.sxinit  +++|      LFN = BUDT;
00799  M00S00777.sxinit  +++|      PASSWORD = BUDTPW;
00800  M00S00778.sxinit  +++|      BZFILL(LFN,TYPFILL"ZFILL",FILLSIZE);  # CLEAR FILENAME #
00801  M00S00779.sxinit  +++|      BZFILL(PASSWORD,TYPFILL"ZFILL",FILLSIZE);  # CLEAR PASSWORD #
00802  M00S00780.sxinit  +++|      PFP$UI = DEF$UI;               # SET *SETPFP* PARAMETERS #
00803  M00S00781.sxinit  +++|      PFP$FAM = FAM$NAME[DEFAULTORD];
00804  M00S00782.sxinit  +++|      PFP$FG1 = TRUE;
00805  M00S00783.sxinit  +++|      PFP$FG4 = TRUE;
00806  M00S00784.sxinit  +++|      SETPFP(PFP[0]);         # SET USER INDEX AND FAMILY #
00807  M00S00785.sxinit  +++|
00808  M00S00786.sxinit  +++|#
00809  M00S00787.sxinit  +++|*     TRY ATTACHING BUDT FILE 10 TIMES BEFORE TERMINATING.
00810  M00S00788.sxinit  +++|#
00811  M00S00789.sxinit  +++|      SLOWFOR I = 0 STEP 1 UNTIL 10
00812  M00S00790.sxinit  +++|      DO
00813  M00S00791.sxinit  +++|        BEGIN
00814  M00S00792.sxinit  +++|        PFD("ATTACH",LFN,0,"PW",PASSWORD,"RC",PFSTAT,"NA",0,"UP",0,0);
00815  M00S00793.sxinit  +++|
00816  M00S00794.sxinit  +++|        IF PFSTAT EQ OK
00817  M00S00795.sxinit  +++|        THEN
00818  M00S00796.sxinit  +++|          BEGIN      # BUDT ATTACHED #
00819  M00S00797.sxinit  +++|          GOTO ENDCON;
00820  M00S00798.sxinit  +++|          END
00821  M00S00799.sxinit  +++|        END               # ATTACH BUDT LOOP #
00822  M00S00800.sxinit  +++|
00823  M00S00801.sxinit  +++|ENDCON:
00824  M00S00802.sxinit  +++|
00825  M00S00803.sxinit  +++|      IF PFSTAT NQ OK
00826  M00S00804.sxinit  +++|      THEN                           # PROCESS ATTACH ERROR #
00827  M00S00805.sxinit  +++|        BEGIN  # ABORT #
00828  M00S00806.sxinit  +++|        MSG$LINE[0] = " ATTACH ERROR - BUDT FILE BUSY.";
00829  M00S00807.sxinit  +++|        IF PFP$STAT[0] NQ FBS
00830  M00S00808.sxinit  +++|        THEN                         # BUDT FILE NOT FOUND #
00831  M00S00809.sxinit  +++|          BEGIN  # NOT FOUND #
00832  M00S00810.sxinit  +++|          MSG$LINE[0] = " ATTACH ERROR - BUDT FILE NOT FOUND.";
00833  M00S00811.sxinit  +++|          END  # NOT FOUND #
00834  M00S00812.sxinit  +++|
00835  M00S00813.sxinit  +++|        GOTO GETUDT1;
00836  M00S00814.sxinit  +++|        END  # ABORT #
00837  M00S00815.sxinit  +++|
00838  M00S00816.sxinit  +++|      BUFL = MAT$SPACE[MAT$ENTRY"TEMP$BUF"];
00839  M00S00817.sxinit  +++|      FETL = MAT$SPACE[MAT$ENTRY"TEMP$FET"];
00840  M00S00818.sxinit  +++|      ZSETFET(TFETADR,LFN,TBUFADR,BUFL,FETL);
00841  M00S00819.sxinit  +++|      READ(TFET,RCL);                # READ BUDT WITH AUTO-RECALL #
00842  M00S00820.sxinit  +++|
00843  M00S00821.sxinit  +++|#
00844  M00S00822.sxinit  +++|*     READ BUDT FROM TEMPORARY BUFFER INTO UDT SPACE.
00845  M00S00823.sxinit  +++|#
00846  M00S00824.sxinit  +++|
00847  M00S00825.sxinit  +++|      P<UDT$WORD> = UDTCADR;
00848  M00S00826.sxinit  +++|      READW(TFET,UDT$WORD,1,STAT);
00849  M00S00827.sxinit  +++|      IF STAT NQ OK
00850  M00S00828.sxinit  +++|      THEN                           # READ COMPLETED WITH ERRORS #
00851  M00S00829.sxinit  +++|        BEGIN  # ABORT #
00852  M00S00830.sxinit  +++|        MSG$LINE[0] = " BUDT READ ERROR.";
00853  M00S00831.sxinit  +++|        GOTO GETUDT1;
00854  M00S00832.sxinit  +++|        END  # ABORT #
00855  M00S00833.sxinit  +++|
00856  M00S00834.sxinit  +++|      IF UDT$LINE$CUN[0] GR MAXCTN
00857  M00S00835.sxinit  +++|      THEN                           # CONTROLLER TABLE TOO LARGE #
00858  M00S00836.sxinit  +++|        BEGIN  # ABORT #
00859  M00S00837.sxinit  +++|        MSG$LINE[0] = " BUDT CONTROLLER ENTRY COUNT EXCEEDED.";
00860  M00S00838.sxinit  +++|        GOTO GETUDT1;
00861  M00S00839.sxinit  +++|        END  # ABORT #
00862  M00S00840.sxinit  +++|
Line S00841 Modification History
M01 (Removed by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00863  M01S00841.sxinit2 ---|      IF UDT$LINE$SMN[0] GR MAXSMUNIT
Line S00007 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00864  M01S00007.sxinit2 +++|      IF UDT$LINE$SMN[0] GR MAXSM
00865  M00S00842.sxinit  +++|      THEN                           # SM TABLE TOO LARGE #
00866  M00S00843.sxinit  +++|        BEGIN  # ABORT #
00867  M00S00844.sxinit  +++|        MSG$LINE[0] = " BUDT SM ENTRY COUNT EXCEEDED.";
00868  M00S00845.sxinit  +++|        GOTO GETUDT1;
00869  M00S00846.sxinit  +++|        END  # ABORT #
00870  M00S00847.sxinit  +++|
00871  M00S00848.sxinit  +++|      UDT$WORDCNT[0] = MAT$SPACE[MAT$ENTRY"UDT$CONT"]
00872  M00S00849.sxinit  +++|                             + MAT$SPACE[MAT$ENTRY"UDT$SM"];
00873  M00S00850.sxinit  +++|
00874  M00S00851.sxinit  +++|      READW(TFET,UDT$CN,UDTCUL,STAT);   # STORE CU TABLE #
00875  M00S00852.sxinit  +++|      IF STAT NQ OK
00876  M00S00853.sxinit  +++|      THEN                           # READ COMPLETED WITH ERRORS #
00877  M00S00854.sxinit  +++|        BEGIN  # ABORT #
00878  M00S00855.sxinit  +++|        MSG$LINE[0] = " BUDT CONTROLLER TABLE READ ERROR.";
00879  M00S00856.sxinit  +++|        GOTO GETUDT1;
00880  M00S00857.sxinit  +++|        END  # ABORT #
00881  M00S00858.sxinit  +++|
00882  M00S00859.sxinit  +++|      READW(TFET,UDT$SMA,UDTSML,STAT);  # STORE *SM* TABLE #
00883  M00S00860.sxinit  +++|      IF STAT NQ OK
00884  M00S00861.sxinit  +++|      THEN                           # READ COMPLETED WITH ERRORS #
00885  M00S00862.sxinit  +++|        BEGIN  # ABORT #
00886  M00S00863.sxinit  +++|        MSG$LINE[0] = " BUDT SM TABLE READ ERROR.";
00887  M00S00864.sxinit  +++|        GOTO GETUDT1;
00888  M00S00865.sxinit  +++|        END  # ABORT #
00889  M00S00866.sxinit  +++|
00890  M00S00867.sxinit  +++|      RETERN(TFET,RCL);              # RETURN BUDT WITH AUTO-RECALL #
00891  M00S00868.sxinit  +++|      RETERN(TFET,RCL);
00892  M00S00869.sxinit  +++|
00893  M00S00870.sxinit  +++|#
00894  M00S00871.sxinit  +++|*     INITIALIZE UDT CONTROLLER AND SM ENTRIES.
00895  M00S00872.sxinit  +++|#
00896  M00S00873.sxinit  +++|
Line S00874 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00897  M01S00874.sxinit3 ---|      EQUSED = 0;
Line S00012 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00875.sxinit  +++|
00904  M00S00876.sxinit  +++|      MAX$ACHN = 0;                  # PRESET ACTIVE CHANNEL COUNT #
00905  M00S00877.sxinit  +++|      SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND I LQ MAXCTN
00906  M00S00878.sxinit  +++|      DO                             # PRESET CONTROLLER ENTRIES #
00907  M00S00879.sxinit  +++|        BEGIN  # PRESET #
00908  M00S00880.sxinit  +++|        NUM = 1;
00909  M00S00881.sxinit  +++|        ESTNUM = UD$ESTO[I];
00910  M00S00882.sxinit  +++|        RDEST(ESTB,NUM,ESTNUM);   # READ EST ENTRY #
00911  M00S00883.sxinit  +++|        IF NUM NQ 1
00912  M00S00884.sxinit  +++|        THEN                      # ABORT ON READ ERROR #
00913  M00S00885.sxinit  +++|          BEGIN
00914  M00S00886.sxinit  +++|          MSG$LINE[0] = "EST READ ERROR.";
00915  M00S00887.sxinit  +++|          GOTO GETUDT1;
00916  M00S00888.sxinit  +++|          END
00917  M00S00889.sxinit  +++|
00918  M00S00890.sxinit  +++|      IF EST$CONT[0] NQ CNTYPE    # CONTROLLER TYPE MISMATCH #
00919  M00S00891.sxinit  +++|        OR EST$CNCT[0] NQ UD$CUDA[I]  # CONNECT MISMATCH #
00920  M00S00892.sxinit  +++|        THEN                         # CONTROLLER ENTRY IS INCORRECT #
00921  M00S00893.sxinit  +++|          BEGIN  # ABORT #
00922  M00S00894.sxinit  +++|          ESTORD = XCOD(UD$ESTO[I]);  # SET EST ORDINAL IN MESSAGE #
00923  M00S00895.sxinit  +++|          VER$NUM[0] = C<6,4>ESTORD;
00924  M00S00896.sxinit  +++|          MESSAGE(VERMB,SYSUDF1);
00925  M00S00897.sxinit  +++|          FATALERR = TRUE;
00926  M00S00898.sxinit  +++|          RETURN;
00927  M00S00899.sxinit  +++|          END  # ABORT #
00928  M00S00900.sxinit  +++|
Line S00901 Modification History
M01 (Removed by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
00929  M01S00901.sxinit4 ---|      UD$CUON[I] = NOT EST$OFF[0];  # MOVE CU STATUS #
Line S00006 Modification History
M01 (Added by) sxinit4
Seq #  *Modification Id* Act 
----------------------------+
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 (Removed by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00932  M01S00902.sxinit2 ---|        UDTCHAN[0] = UD$CHANA[I];    # COPY UDT CHANNEL INFO #
00933  M01S00903.sxinit2 ---|        UDTCHAN[1] = UD$CHANB[I];
00934  M01S00904.sxinit2 ---|        UDTCHAN[2] = UD$CHANC[I];
00935  M01S00905.sxinit2 ---|        UDTCHAN[3] = UD$CHAND[I];
Line S00008 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00906.sxinit  +++|        TMPCCNT = 0;                 # PRESET TEMP CHANNEL COUNT #
00941  M00S00907.sxinit  +++|        SLOWFOR J = 0 STEP 1 UNTIL MAX$CH
00942  M00S00908.sxinit  +++|        DO                           # SCAN EST ENTRY FOR CHANNELS #
00943  M00S00909.sxinit  +++|          BEGIN  # SCAN EST #
00944  M00S00910.sxinit  +++|          IF J EQ FIRSTCHAN          # IN CASE CHANNEL 0 #
00945  M00S00911.sxinit  +++|            OR ESTCHAN(I,J) NQ 0
00946  M00S00912.sxinit  +++|          THEN                       # EST CHANNEL FOUND #
00947  M00S00913.sxinit  +++|            BEGIN  # FOUND #
00948  M00S00914.sxinit  +++|            FOUND = FALSE;
00949  M00S00915.sxinit  +++|            SLOWFOR K = 0 STEP 1 UNTIL MAX$CH
00950  M00S00916.sxinit  +++|            DO                       # SCAN ARRAY FOR CHANNEL MATCH #
00951  M00S00917.sxinit  +++|              BEGIN  # SCAN UDT #
00952  M00S00918.sxinit  +++|              IF UDTEX(I,K) NQ 0     # UDT CHANNEL FOUND #
00953  M00S00919.sxinit  +++|                AND ESTCHAN(I,J) EQ UDTCHAN[K]  # CHANNELS MATCH #
00954  M00S00920.sxinit  +++|              THEN                   # MOVE CHANNEL STATUS TO UDT #
00955  M00S00921.sxinit  +++|                BEGIN  # STATUS #
00956  M00S00922.sxinit  +++|                FOUND = TRUE;
Line S00923 Modification History
M01 (Removed by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
00957  M01S00923.sxinit2 ---|                UDTSTAT[K] = 1 - ESTON(I,J);  # TOGGLE SO ON IF SET #
00958  M00S00924.sxinit  ---|                MAX$ACHN = MAX$ACHN + UDTSTAT[K];  # COUNT CHANNELS #
00959  M00S00925.sxinit  ---|                TMPCCNT = TMPCCNT + 1;
Line S00012 Modification History
M01 (Added by) sxinit2
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00926.sxinit  +++|                END  # STATUS #
00967  M00S00927.sxinit  +++|
00968  M00S00928.sxinit  +++|              END  # SCAN UDT #
00969  M00S00929.sxinit  +++|
00970  M00S00930.sxinit  +++|            IF NOT FOUND
00971  M00S00931.sxinit  +++|            THEN                     # CHANNEL MISMATCH #
00972  M00S00932.sxinit  +++|              BEGIN  # ABORT #
00973  M00S00933.sxinit  +++|              GOTO GETUDT2;
00974  M00S00934.sxinit  +++|              END  # ABORT #
00975  M00S00935.sxinit  +++|
00976  M00S00936.sxinit  +++|            END  # FOUND #
00977  M00S00937.sxinit  +++|
00978  M00S00938.sxinit  +++|          END  # SCAN EST #
00979  M00S00939.sxinit  +++|
00980  M00S00940.sxinit  +++|        IF TMPCCNT NQ (UDTEX(I,0) + UDTEX(I,1) +
00981  M00S00941.sxinit  +++|                        UDTEX(I,2) + UDTEX(I,3))
00982  M00S00942.sxinit  +++|        THEN                         # CHANNEL MISMATCH #
00983  M00S00943.sxinit  +++|          BEGIN  # ABORT #
00984  M00S00944.sxinit  +++|          GOTO GETUDT2;
00985  M00S00945.sxinit  +++|          END  # ABORT #
00986  M00S00946.sxinit  +++|
00987  M00S00947.sxinit  +++|        UD$CHANA$O[I] = UDTBSTAT[0]; # COPY CHANNEL STATUSES TO UDT #
00988  M00S00948.sxinit  +++|        UD$CHANB$O[I] = UDTBSTAT[1];
00989  M00S00949.sxinit  +++|        UD$CHANC$O[I] = UDTBSTAT[2];
00990  M00S00950.sxinit  +++|        UD$CHAND$O[I] = UDTBSTAT[3];
00991  M00S00951.sxinit  +++|        P<UDT$MSG> = LOC(UD$MSG[I]);
00992  M00S00952.sxinit  +++|        MS$MSQN$CN[0] = I;           # STORE CONTROLLER ORDINAL #
Line S00953 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
00993  M01S00953.sxinit3 ---|        B<UD$ESTO[I],1>EQUSED = 1;
Line S00017 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00954.sxinit  +++|        END  # PRESET #
00998  M00S00955.sxinit  +++|
00999  M00S00956.sxinit  +++|      SLOWFOR I= 1 STEP 1 UNTIL MAX$ACHN
01000  M00S00957.sxinit  +++|      DO
01001  M00S00958.sxinit  +++|        BEGIN
01002  M00S00959.sxinit  +++|        BST$AUTH[I] = TRUE;
01003  M00S00960.sxinit  +++|        END
01004  M00S00961.sxinit  +++|
01005  M00S00962.sxinit  +++|
Line S00963 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01006  M01S00963.sxinit3 ---|      SLOWFOR I = 1 STEP 1 WHILE NUM EQ 1
Line S00020 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01007  M01S00020.sxinit3 +++|      SLOWFOR BITMAPWORD = 0 STEP 1 WHILE NUM EQ 1
01008  M00S00964.sxinit  +++|      DO                             # FIND UNUSED M860 EST ENTRIES #
01009  M00S00965.sxinit  +++|        BEGIN  # FIND #
Line S00966 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01010  M01S00966.sxinit3 ---|      NUM = 1;
01011  M01S00967.sxinit3 ---|      RDEST(ESTB,NUM,I);
Line S00021 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S00968.sxinit  +++|        IF EST$CONT[0] EQ CNTYPE
Line S00969 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01031  M01S00969.sxinit3 ---|          AND B<I,1>EQUSED EQ 0
Line S00039 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01032  M01S00039.sxinit3 +++|            AND B<BITMAPPOS,1>EQUSED[BITMAPWORD] EQ 0
01033  M00S00970.sxinit  +++|        THEN                         # UNPROCESSED ENTRY FOUND #
01034  M00S00971.sxinit  +++|          BEGIN  # MESSAGE #
Line S00972 Modification History
M01 (Removed by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01035  M01S00972.sxinit3 ---|          ESTORD = XCOD(I);          # SET EST ORDINAL IN MESSAGE #
Line S00040 Modification History
M01 (Added by) sxinit3
Seq #  *Modification Id* Act 
----------------------------+
01036  M01S00040.sxinit3 +++|            ESTORD = XCOD(DESIREDORD);  # SET EST ORDINAL IN MESSAGE #
01037  M00S00973.sxinit  +++|          MIS$NUM[0] = C<6,4>ESTORD;
01038  M00S00974.sxinit  +++|          MESSAGE(MISMB,SYSUDF1);
01039  M00S00975.sxinit  +++|          END  # MESSAGE #
01040  M00S00976.sxinit  +++|
01041  M01S00041.sxinit3 +++|          END  # WORD #
01042  M01S00042.sxinit3 +++|
01043  M00S00977.sxinit  +++|        END  # FIND #
01044  M00S00978.sxinit  +++|
01045  M00S00979.sxinit  +++|      SLOWFOR I = 1 STEP 1 WHILE SM$EXIST[I] AND I LQ MAXSMUNIT
01046  M00S00980.sxinit  +++|      DO                             # PRESET SM ENTRIES #
01047  M00S00981.sxinit  +++|        BEGIN  # PRESET #
01048  M00S00982.sxinit  +++|        P<UDT$MSG> = LOC(D0$MSG[I]);
01049  M00S00983.sxinit  +++|        MS$MSQN$CN[0] = I;           # STORE SM ORDINAL #
01050  M00S00984.sxinit  +++|        MS$MSQN$D0[0] = TRUE;        # SET DRD 0 FLAG #
01051  M00S00985.sxinit  +++|        P<UDT$MSG> = LOC(D1$MSG[I]);
01052  M00S00986.sxinit  +++|        MS$MSQN$CN[0] = I;           # STORE SM ORDINAL #
01053  M00S00987.sxinit  +++|        MS$MSQN$D1[0] = TRUE;        # SET DRD 1 FLAG #
01054  M00S00988.sxinit  +++|        END  # PRESET #
01055  M00S00989.sxinit  +++|
01056  M00S00990.sxinit  +++|#
01057  M00S00991.sxinit  +++|*     INITIALIZE MESSAGE READ AND WRITE BUFFER FETS.
01058  M00S00992.sxinit  +++|#
01059  M00S00993.sxinit  +++|
01060  M00S00994.sxinit  +++|      P<FETMWB> = MWRBADR + 1;       # ALLOW FOR READ BUFFER PTR #
01061  M00S00995.sxinit  +++|      P<FETMRB> = MRDBADR;
01062  M00S00996.sxinit  +++|      SLOWFOR I = 1 STEP 1 WHILE UD$EXIST[I] AND (I LQ MAXCTN)
01063  M00S00997.sxinit  +++|      DO                             # CHECK UDT CHANNELS #
01064  M00S00998.sxinit  +++|        BEGIN  # CHECK #
01065  M00S00999.sxinit  +++|        CHT$WORD[0] = UD$CHANA[I];   # PRESET TEMPORARY CHANNEL ARRAY #
01066  M00S01000.sxinit  +++|        CHT$WORD[1] = UD$CHANB[I];
01067  M00S01001.sxinit  +++|        CHT$WORD[2] = UD$CHANC[I];
01068  M00S01002.sxinit  +++|        CHT$WORD[3] = UD$CHAND[I];
01069  M00S01003.sxinit  +++|        SLOWFOR J = 0 STEP 1 WHILE J LQ MAX$CIF
01070  M00S01004.sxinit  +++|        DO                           # FIND ON CHANNELS #
01071  M00S01005.sxinit  +++|          BEGIN  # FIND #
01072  M00S01006.sxinit  +++|          IF CHT$ON[J]
01073  M00S01007.sxinit  +++|            AND (CHT$CHAN[J] NQ 0 OR J EQ 0)
01074  M00S01008.sxinit  +++|          THEN                       # INITIALIZE ASSOCIATED MSG FETS #
01075  M00S01009.sxinit  +++|            BEGIN  # INITIALIZE #
01076  M00S01010.sxinit  +++|            IF P<FETMWB> GQ (MWRBADR + MAT$SPACE[MAT$ENTRY"MW$BUFS"])
01077  M00S01011.sxinit  +++|            THEN                     # MORE CHANNELS THAN MSG FETS #
01078  M00S01012.sxinit  +++|              BEGIN  # ABORT #
01079  M00S01013.sxinit  +++|              MSG$LINE[0] = " MORE CHANNELS THAN MSG FETS.";
01080  M00S01014.sxinit  +++|              GOTO GETUDT1;
01081  M00S01015.sxinit  +++|              END  # ABORT #
01082  M00S01016.sxinit  +++|
01083  M00S01017.sxinit  +++|            P<FETMRA> = P<FETMWB> - 1;
01084  M00S01018.sxinit  +++|            FRA$MRBADR[0] = P<FETMRB>;  # MESSAGE READ BUFFER ADDRESS #
01085  M00S01019.sxinit  +++|
01086  M00S01020.sxinit  +++|            FMW$FIRST[0] = P<FETMWB> + SFMWL;  # PRESET WRITE BUFFER #
01087  M00S01021.sxinit  +++|            FMW$IN[0] = FMW$FIRST[0];
01088  M00S01022.sxinit  +++|            FMW$OUT[0] = FMW$FIRST[0];
01089  M00S01023.sxinit  +++|            FMW$CHAN[0] = CHT$CHAN[J];
01090  M00S01024.sxinit  +++|            FMW$CHON[0] = TRUE;
01091  M00S01025.sxinit  +++|            FMW$LIMIT[0] = FMW$FIRST[0] + MWBUFL;
01092  M00S01026.sxinit  +++|
01093  M00S01027.sxinit  +++|            FMR$CU[0] = I;           # PRESET READ BUFFER #
01094  M00S01028.sxinit  +++|            FMR$FIRST[0] = P<FETMRB> + SFMRL;
01095  M00S01029.sxinit  +++|            FMR$IN[0] = FMR$FIRST[0];
01096  M00S01030.sxinit  +++|            FMR$OUT[0] = FMR$FIRST[0];
01097  M00S01031.sxinit  +++|            FMR$CHAN[0] = CHT$CHAN[J];
01098  M00S01032.sxinit  +++|            FMR$CIF[0] = J;
01099  M00S01033.sxinit  +++|            FMR$LIMIT[0] = FMR$FIRST[0] + MRBUFL;
01100  M00S01034.sxinit  +++|            P<KWORD> = LOC(FMR$KWORDS[0]);  # PRESET K-DISPLAY WORDS #
01101  M00S01035.sxinit  +++|            KW$COMP[0] = TRUE;
01102  M00S01036.sxinit  +++|
01103  M00S01037.sxinit  +++|            P<MWBTMP> = LOC(UD$CAMF[I]);
01104  M00S01038.sxinit  +++|            MWB$ADDR[J] = P<FETMWB>; # SET FET ADDRESS IN CU ORDINAL #
01105  M00S01039.sxinit  +++|            P<FETMWB> = P<FETMWB> + SFMWL + MWBUFL + 1;  # NEXT FETS #
01106  M00S01040.sxinit  +++|            P<FETMRB> = P<FETMRB> + SFMRL + MRBUFL;
01107  M00S01041.sxinit  +++|            END  # INITIALIZE #
01108  M00S01042.sxinit  +++|
01109  M00S01043.sxinit  +++|          END  # FIND #
01110  M00S01044.sxinit  +++|
01111  M00S01045.sxinit  +++|        END  # CHECK #
01112  M00S01046.sxinit  +++|
01113  M00S01047.sxinit  +++|      RETURN;
01114  M00S01048.sxinit  +++|
01115  M00S01049.sxinit  +++|GETUDT2:
01116  M00S01050.sxinit  +++|      MSG$LINE[0] = " EST/UDT CHANNEL MISMATCH.";
01117  M00S01051.sxinit  +++|
01118  M00S01052.sxinit  +++|GETUDT1:
01119  M00S01053.sxinit  +++|      MESSAGE(MSGMB,SYSUDF1);        # ABORT PROCESSING #
01120  M00S01054.sxinit  +++|      FATALERR = TRUE;
01121  M00S01055.sxinit  +++|      RETURN;
01122  M00S01056.sxinit  +++|      END  # GETUDT #
01123  M00S01057.sxinit  +++|
01124  M00S01058.sxinit  +++|    TERM
01125  M00S01059.sxinit  +++|PROC INITDAM;
01126  M00S01060.sxinit  +++|# TITLE INITDAM - INITIALIZE *TDAM* INTERFACE.                        #
01127  M00S01061.sxinit  +++|      BEGIN  # INITDAM #
01128  M00S01062.sxinit  +++|
01129  M00S01063.sxinit  +++|#
01130  M00S01064.sxinit  +++|***   INITDAM - INITAILIZE *TDAM* INTERFACE.
01131  M00S01065.sxinit  +++|*
01132  M00S01066.sxinit  +++|*     THIS ROUTINE WILL INITIALIZE THE *TDAM* INTERFACE
01133  M00S01067.sxinit  +++|*     AND ISSUE AN EVENT TO SWAP IN THE JOBS WAITING FOR *MSAS*.
01134  M00S01068.sxinit  +++|
01135  M00S01069.sxinit  +++|*     PROC INITDAM.
01136  M00S01070.sxinit  +++|*
01137  M00S01071.sxinit  +++|*     ENTRY      *SSEXEC* HAS BEEN INITIALIZED AND READY TO BE
01138  M00S01072.sxinit  +++|*                CALLED BY WAITING JOBS.
01139  M00S01073.sxinit  +++|*
01140  M00S01074.sxinit  +++|*     EXIT       *TDAM* INTERFACE HAS BEEN INITIALIZED AND
01141  M00S01075.sxinit  +++|*                EVENT TO SWAP IN WAITING JOBS HAS BEEN ISSUED.
01142  M00S01076.sxinit  +++|#
01143  M00S01077.sxinit  +++|
01144  M00S01078.sxinit  +++|#
01145  M00S01079.sxinit  +++|****  PROC INITDAM - XREF LIST BEGIN.
01146  M00S01080.sxinit  +++|#
01147  M00S01081.sxinit  +++|
01148  M00S01082.sxinit  +++|      XREF
01149  M00S01083.sxinit  +++|        BEGIN
01150  M00S01084.sxinit  +++|        PROC EESET;                  # ENTERS EVENT IN EVENT TABLE #
01151  M00S01085.sxinit  +++|        PROC SYSTEM;                 # CALLS *SYSTEM* MACRO #
01152  M00S01086.sxinit  +++|        PROC ZFILL;                  # ZERO FILLS BUFFER #
01153  M00S01087.sxinit  +++|        END
01154  M00S01088.sxinit  +++|
01155  M00S01089.sxinit  +++|#
01156  M00S01090.sxinit  +++|****  PROC INITDAM - XREF LIST END.
01157  M00S01091.sxinit  +++|#
01158  M00S01092.sxinit  +++|
01159  M00S01093.sxinit  +++|      DEF NO$EQUIP   #0#;            # NO EQUIPMENT VALUE #
01160  M00S01094.sxinit  +++|
01161  M00S01095.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
01162  M00S01096.sxinit  +++|*CALL COMBFAS
01163  M00S01097.sxinit  +++|*CALL,COMBCDD
01164  M00S01098.sxinit  +++|*CALL COMBTDM
01165  M00S01099.sxinit  +++|*CALL COMBUDT
01166  M00S01100.sxinit  +++|*CALL COMXCTF
01167  M00S01101.sxinit  +++|*CALL COMXINT
01168  M00S01102.sxinit  +++|*CALL,COMXJCA
01169  M00S01103.sxinit  +++|
01170  M00S01104.sxinit  +++|      ITEM I          U;             # INDEX #
01171  M00S01105.sxinit  +++|
01172  M00S01106.sxinit  +++|
01173  M00S01107.sxinit  +++|
01174  M00S01108.sxinit  +++|
01175  M00S01109.sxinit  +++|
01176  M00S01110.sxinit  +++|#
01177  M00S01111.sxinit  +++|*     INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS
01178  M00S01112.sxinit  +++|*     WAITING FOR *MSAS*.
01179  M00S01113.sxinit  +++|#
01180  M00S01114.sxinit  +++|
01181  M00S01115.sxinit  +++|      P<TDAM> = LOC(RA$TDAM);
01182  M00S01116.sxinit  +++|      ZFILL(TDAM,TDAMLEN);
01183  M00S01117.sxinit  +++|
01184  M00S01118.sxinit  +++|      EESET$EQ[0] = NO$EQUIP;        # USE NO EQUIPMENT VALUE #
01185  M00S01119.sxinit  +++|      EESET(EVENT);                  # SET EVENT INTO EVENT TABLE #
01186  M00S01120.sxinit  +++|
01187  M00S01121.sxinit  +++|
01188  M00S01122.sxinit  +++|#
01189  M00S01123.sxinit  +++|*     PRESET ALL PP CALL BLOCK ENTRIES.
01190  M00S01124.sxinit  +++|#
01191  M00S01125.sxinit  +++|
01192  M00S01126.sxinit  +++|      SLOWFOR I = 1 STEP 1 UNTIL PPCBTSIZE
01193  M00S01127.sxinit  +++|      DO                           # SET PARAMETER WORD ADDRESS #
01194  M00S01128.sxinit  +++|        BEGIN    # SET ADDRESS #
01195  M00S01129.sxinit  +++|        PPU$1SS[I] = "1SS";
01196  M00S01130.sxinit  +++|        PPU$PADDR[I] = LOC(PPU$WORD1[I]);
01197  M00S01131.sxinit  +++|        PPU$DRCL[I] = LOC(DRVRRECALL);
01198  M00S01132.sxinit  +++|        END      # SET ADDRESS #
01199  M00S01133.sxinit  +++|
01200  M00S01134.sxinit  +++|      PPU$FC[1] = IRTDAM;
01201  M00S01135.sxinit  +++|      PPCBENCNT = PPCBENCNT+1;       # INCREMENT PPCALL COUNT #
01202  M00S01136.sxinit  +++|      SPC$SPC[0] = "SPC";
01203  M00S01137.sxinit  +++|      SPC$ADDR[0] = LOC(PPTMP);
01204  M00S01138.sxinit  +++|      PPT$WORD0[0] = PPU$WORD0[1];
01205  M00S01139.sxinit  +++|      SLOWFOR I = 0 WHILE PPT$WORD0[0] NQ 0
01206  M00S01140.sxinit  +++|      DO
01207  M00S01141.sxinit  +++|        BEGIN
01208  M00S01142.sxinit  +++|        SYSTEM(SPC,RCL);
01209  M00S01143.sxinit  +++|        END
01210  M00S01144.sxinit  +++|
01211  M00S01145.sxinit  +++|      END  # INITDAM #
01212  M00S01146.sxinit  +++|
01213  M00S01147.sxinit  +++|    TERM
01214  M00S01148.sxinit  +++|PROC INITFAM;
01215  M00S01149.sxinit  +++|# TITLE INITFAM - INITIALIZES SUBFAMILY PARAMETERS.                   #
01216  M00S01150.sxinit  +++|
01217  M00S01151.sxinit  +++|      BEGIN  # INITFAM #
01218  M00S01152.sxinit  +++|
01219  M00S01153.sxinit  +++|#
01220  M00S01154.sxinit  +++|**    INITFAM - INITIALIZES SUBFAMILY PARAMETERS.
01221  M00S01155.sxinit  +++|*
01222  M00S01156.sxinit  +++|*     PROC      INITFAM.
01223  M00S01157.sxinit  +++|#
01224  M00S01158.sxinit  +++|
01225  M00S01159.sxinit  +++|#
01226  M00S01160.sxinit  +++|****  PROC INITFAM - XREF LIST BEGIN.
01227  M00S01161.sxinit  +++|#
01228  M00S01162.sxinit  +++|
01229  M00S01163.sxinit  +++|      XREF
01230  M00S01164.sxinit  +++|        BEGIN
01231  M00S01165.sxinit  +++|        PROC ABORT;                  # CALLS *ABORT* MACRO #
01232  M00S01166.sxinit  +++|        PROC BZFILL;                 # BLANK OR ZERO FILLS #
01233  M00S01167.sxinit  +++|        PROC GETFAM;                 # GETS TABLE OF FAMILIES #
01234  M00S01168.sxinit  +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
01235  M00S01169.sxinit  +++|        PROC PFD;                    # PERMANENT FILE REQUEST DELAYS #
01236  M00S01170.sxinit  +++|        PROC RETERN;                 # RETURNS FILE #
01237  M00S01171.sxinit  +++|        PROC RMVBLNK;                # REMOVE MULTIPLE BLANKS #
01238  M00S01172.sxinit  +++|        PROC SETPFP;                 # SETS USER INDEX AND FAMILY #
01239  M00S01173.sxinit  +++|        FUNC XCOD I;                 # CHANGES INTEGER TO DISPLAY #
01240  M00S01174.sxinit  +++|        PROC XWOD;                   # CHANGES INTEGER TO OCTAL #
01241  M00S01175.sxinit  +++|        PROC ZSETFET;                # SETS UP *FET* #
01242  M00S01176.sxinit  +++|        END
01243  M00S01177.sxinit  +++|
01244  M00S01178.sxinit  +++|#
01245  M00S01179.sxinit  +++|****  PROC INITFAM - XREF LIST END.
01246  M00S01180.sxinit  +++|#
01247  M00S01181.sxinit  +++|
01248  M00S01182.sxinit  +++|      DEF FILLSIZE   #7#;            # FILL SIZE FOR *BZFILL* #
01249  M00S01183.sxinit  +++|      DEF NUM$MST    #4#;            # NUMBER OF *MSA-S* #
01250  M00S01184.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
01251  M00S01185.sxinit  +++|*CALL COMBFAS
01252  M00S01186.sxinit  +++|*CALL COMBBZF
01253  M00S01187.sxinit  +++|*CALL COMBPFP
01254  M00S01188.sxinit  +++|*CALL COMBPFS
01255  M00S01189.sxinit  +++|*CALL COMBUDT
01256  M00S01190.sxinit  +++|*CALL COMXCTF
01257  M00S01191.sxinit  +++|*CALL COMXINT
01258  M00S01192.sxinit  +++|*CALL COMXMSC
01259  M00S01193.sxinit  +++|*CALL COMSPFM
01260  M00S01194.sxinit  +++|
01261  M00S01195.sxinit  +++|
01262  M00S01196.sxinit  +++|      ITEM ATLEASTONE B;             # AT LEAST ONE FOUND FLAG #
01263  M00S01197.sxinit  +++|      ITEM BADNUM     U;             # BAD FILE INDEX #
01264  M00S01198.sxinit  +++|      ITEM BLKFILL    S:TYPFILL = S"BFILL";  # BLANK FILL #
01265  M00S01199.sxinit  +++|      ITEM BLKFOUND   B;             # BLANK FOUND FLAG #
01266  M00S01200.sxinit  +++|      ITEM FOUND      B;             # ITEM FOUND FLAG #
01267  M00S01201.sxinit  +++|      ITEM I          U;             # INDEX #
01268  M00S01202.sxinit  +++|      ITEM J          U;             # INDEX #
01269  M00S01203.sxinit  +++|      ITEM K          U;             # INDEX #
01270  M00S01204.sxinit  +++|      ITEM MSGTEMP    C(8);          # ITEM FOR *BZFILL* #
01271  M00S01205.sxinit  +++|      ITEM NUM$FAM    U;             # NUMBER OF *GETFAM* ENTRIES #
01272  M00S01206.sxinit  +++|      ITEM UI         U;             # USER INDEX #
01273  M00S01207.sxinit  +++|
01274  M00S01208.sxinit  +++|
01275  M00S01209.sxinit  +++|#
01276  M00S01210.sxinit  +++|*     ARRAY TO DISPLAY BAD FILE INFORMATION.
01277  M00S01211.sxinit  +++|#
01278  M00S01212.sxinit  +++|
01279  M00S01213.sxinit  +++|      ARRAY BADFILE[0:MAXSF] P(3);
01280  M00S01214.sxinit  +++|        BEGIN
01281  M00S01215.sxinit  +++|        ITEM BAD$PFN    C(00,00,07);  # FILE NAME #
01282  M00S01216.sxinit  +++|        ITEM BAD$FAM    C(00,42,08);  # FAMILY NAME #
01283  M00S01217.sxinit  +++|        ITEM BAD$INDEX  C(01,30,06);  # USER INDEX #
01284  M00S01218.sxinit  +++|        END
01285  M00S01219.sxinit  +++|
01286  M00S01220.sxinit  +++|#
01287  M00S01221.sxinit  +++|*     ARRAY TO USER INDEX DISPLAY CODE.
01288  M00S01222.sxinit  +++|#
01289  M00S01223.sxinit  +++|
01290  M00S01224.sxinit  +++|      ARRAY DIS[0:0] P(2);
01291  M00S01225.sxinit  +++|        BEGIN
01292  M00S01226.sxinit  +++|        ITEM DIS$UI     C(01,24,06);  # USER INDEX IN DISPLAY CODE #
01293  M00S01227.sxinit  +++|        END
01294  M00S01228.sxinit  +++|
01295  M00S01229.sxinit  +++|#
01296  M00S01230.sxinit  +++|*     ARRAY TO HOLD *SFMCAT* FILE NAME.
01297  M00S01231.sxinit  +++|#
01298  M00S01232.sxinit  +++|
01299  M00S01233.sxinit  +++|      ARRAY CAT[0:0];
01300  M00S01234.sxinit  +++|        BEGIN  # CAT #
01301  M00S01235.sxinit  +++|        ITEM CAT$PFN    C(00,00,07) = ["SFMCAT "];  # FILE NAME #
01302  M00S01236.sxinit  +++|        ITEM CAT$UNID   C(00,36,01);  # UNIQUE IDENTIFIER #
01303  M00S01237.sxinit  +++|        END  # CAT #
01304  M00S01238.sxinit  +++|
01305  M00S01239.sxinit  +++|
01306  M00S01240.sxinit  +++|#
01307  M00S01241.sxinit  +++|*     MESSAGE BUFFER.
01308  M00S01242.sxinit  +++|#
01309  M00S01243.sxinit  +++|
01310  M00S01244.sxinit  +++|      ARRAY MSGBUF[0:0] P(5);
01311  M00S01245.sxinit  +++|        BEGIN  # ARRAY MSGBUF #
01312  M00S01246.sxinit  +++|        ITEM MSG$LINE   C(00,00,40);  # MESSAGE LINE #
01313  M00S01247.sxinit  +++|        ITEM MSG$RZRO   C(04,00,12);  # ZERO BYE TERMINATOR #
01314  M00S01248.sxinit  +++|        END  # ARRAY MSGBUF #
01315  M00S01249.sxinit  +++|
01316  M00S01250.sxinit  +++|      ARRAY SC$FET [0:0] P(SFETL);
01317  M00S01251.sxinit  +++|      ;
01318  M00S01252.sxinit  +++|                                               CONTROL EJECT;
01319  M00S01253.sxinit  +++|
01320  M00S01254.sxinit  +++|#
01321  M00S01255.sxinit  +++|*     FUNCTION 2 - ANALYZE FAMILIES.
01322  M00S01256.sxinit  +++|*
01323  M00S01257.sxinit  +++|*       FIND NUMBER AND NAMES OF FAMILIES WITH ALL SUBFAMILY CATALOGS.
01324  M00S01258.sxinit  +++|#
01325  M00S01259.sxinit  +++|
01326  M00S01260.sxinit  +++|      NFAM = 1;
01327  M00S01261.sxinit  +++|
01328  M00S01262.sxinit  +++|      SSID = ATAS;
01329  M00S01263.sxinit  +++|      GETFAM(FAMT,NUM$FAM,LINK[0],DEFAULTORD,SSID);
01330  M00S01264.sxinit  +++|      DEF$FAM = FAM$NAME[DEFAULTORD];
01331  M00S01265.sxinit  +++|
01332  M00S01266.sxinit  +++|
01333  M00S01267.sxinit  +++|#
01334  M00S01268.sxinit  +++|*     ATTEMPT TO ATTACH EACH *SFMCAT* FILE FOR EACH FAMILY.
01335  M00S01269.sxinit  +++|*     THE FOLLOWING ACTIONS WILL BE TAKEN DEPENDING ON THE NUMBER
01336  M00S01270.sxinit  +++|*     OF FILES ATTACHED
01337  M00S01271.sxinit  +++|*
01338  M00S01272.sxinit  +++|*       1) IF NONE, DO NOTHING,
01339  M00S01273.sxinit  +++|*       2) IF EIGHT, SAVE THE FAMILY NAME,
01340  M00S01274.sxinit  +++|*       3) IF SOME BUT NOT EIGHT, ISSUE ERROR MESSAGE.
01341  M00S01275.sxinit  +++|#
01342  M00S01276.sxinit  +++|
01343  M00S01277.sxinit  +++|      SLOWFOR I = 1 STEP 1 UNTIL NUM$FAM
01344  M00S01278.sxinit  +++|      DO
01345  M00S01279.sxinit  +++|        BEGIN  # CHECK ALL FAMILIES FOR EIGHT CATALOGS #
01346  M00S01280.sxinit  +++|
01347  M00S01281.sxinit  +++|        ATLEASTONE = FALSE;          # AT LEAST ONE FOUND FLAG #
01348  M00S01282.sxinit  +++|        FOUND = TRUE;                # CATALOG FOUND FLAG #
01349  M00S01283.sxinit  +++|        BADNUM = 0;                  # BAD FILE INDEX #
01350  M00S01284.sxinit  +++|
01351  M00S01285.sxinit  +++|        SLOWFOR J = 0 STEP 1 UNTIL MAXSF
01352  M00S01286.sxinit  +++|        DO
01353  M00S01287.sxinit  +++|          BEGIN  # CHECK CATALOG FOR EACH SUBFAMILY #
01354  M00S01288.sxinit  +++|
01355  M00S01289.sxinit  +++|          PFP$UI = DEF$UI + J;       # SET USER INDEX FOR *SETPFP* #
01356  M00S01290.sxinit  +++|          PFP$FAM = FAM$NAME[I];     # SET FAMILY NAME FOR *SETPFP* #
01357  M00S01291.sxinit  +++|          PFP$FG1 = TRUE;            # SET FAMILY BIT FOR *SETPFP* #
01358  M00S01292.sxinit  +++|          PFP$FG4 = TRUE;            # SET INDEX BIT FOR *SETPFP* #
01359  M00S01293.sxinit  +++|          SETPFP(PFP);               # SET USER INDEX AND FAMILY #
01360  M00S01294.sxinit  +++|
01361  M00S01295.sxinit  +++|#
01362  M00S01296.sxinit  +++|*     IF UNABLE TO DO A *SETPFP* ON A FAMILY, IGNORE CATALOG VALIDATION
01363  M00S01297.sxinit  +++|*     AND CONTINUE WITH THE NEXT FAMILY.
01364  M00S01298.sxinit  +++|#
01365  M00S01299.sxinit  +++|
01366  M00S01300.sxinit  +++|          IF PFP$STAT NQ 0
01367  M00S01301.sxinit  +++|          THEN
01368  M00S01302.sxinit  +++|            BEGIN
01369  M00S01303.sxinit  +++|            TEST I;                  # NEXT FAMILY #
01370  M00S01304.sxinit  +++|            END
01371  M00S01305.sxinit  +++|
01372  M00S01306.sxinit  +++|          CAT$UNID[0] = XCOD(J);     # CHANGE INDEX TO DISPLAY CODE #
01373  M00S01307.sxinit  +++|          PFD("ATTACH",CAT$PFN,0,"RC",  ##
01374  M00S01308.sxinit  +++|            PFSTAT,"NA",0,"UP",0,0);
01375  M00S01309.sxinit  +++|          IF PFSTAT EQ 0 OR PFSTAT EQ FBS
01376  M00S01310.sxinit  +++|          THEN
01377  M00S01311.sxinit  +++|            BEGIN  # IF ATTACH SUCCESSFUL #
01378  M00S01312.sxinit  +++|            ATLEASTONE = TRUE;
01379  M00S01313.sxinit  +++|            END  # IF ATTACH SUCCESSFUL #
01380  M00S01314.sxinit  +++|
01381  M00S01315.sxinit  +++|          ELSE
01382  M00S01316.sxinit  +++|            BEGIN  # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE #
01383  M00S01317.sxinit  +++|            UI = DEF$UI + J;
01384  M00S01318.sxinit  +++|            XWOD(UI,DIS);
01385  M00S01319.sxinit  +++|
01386  M00S01320.sxinit  +++|            BAD$PFN[BADNUM] = CAT$PFN[0];  # SAVE FILE NAME #
01387  M00S01321.sxinit  +++|            MSGTEMP = FAM$NAME[I];
01388  M00S01322.sxinit  +++|            BZFILL(MSGTEMP,BLKFILL,FILLSIZE);
01389  M00S01323.sxinit  +++|            BAD$FAM[BADNUM] = MSGTEMP;  # SAVE FAMILY NAME #
01390  M00S01324.sxinit  +++|            BAD$INDEX[BADNUM] = DIS$UI;  # SAVE USER INDEX #
01391  M00S01325.sxinit  +++|
01392  M00S01326.sxinit  +++|            BADNUM = BADNUM + 1;     # INCREMENT COUNT #
01393  M00S01327.sxinit  +++|            FOUND = FALSE;           # CATALOG NOT ATTACHED #
01394  M00S01328.sxinit  +++|            END  # ERROR OTHER THAN FILE BUSY OR UTILITY ACTIVE #
01395  M00S01329.sxinit  +++|
01396  M00S01330.sxinit  +++|          ZSETFET(LOC(SC$FET[0]),CAT$PFN,0,0,SFETL);
01397  M00S01331.sxinit  +++|          RETERN(SC$FET[0],RCL);
01398  M00S01332.sxinit  +++|
01399  M00S01333.sxinit  +++|          END  # CHECK CATALOG FOR EACH SUBFAMILY #
01400  M00S01334.sxinit  +++|
01401  M00S01335.sxinit  +++|        IF FOUND
01402  M00S01336.sxinit  +++|        THEN
01403  M00S01337.sxinit  +++|          BEGIN  # IF EIGHT CATALOGS EXIST #
01404  M00S01338.sxinit  +++|          NAMEFAM[NFAM] = FAM$NAME[I];  # SAVE FAMILY NAME #
01405  M00S01339.sxinit  +++|          NFAM = NFAM + 1;           # INCREMENT FAMILY COUNT #
01406  M00S01340.sxinit  +++|          END  # IF EIGHT CATALOGS EXIST #
01407  M00S01341.sxinit  +++|
01408  M00S01342.sxinit  +++|        ELSE
01409  M00S01343.sxinit  +++|          BEGIN  # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH #
01410  M00S01344.sxinit  +++|          IF ATLEASTONE
01411  M00S01345.sxinit  +++|          THEN
01412  M00S01346.sxinit  +++|            BEGIN  # OUTPUT MESSAGE FOR EACH BAD FILE #
01413  M00S01347.sxinit  +++|            SLOWFOR J = 0 STEP 1 WHILE J LS BADNUM
01414  M00S01348.sxinit  +++|            DO
01415  M00S01349.sxinit  +++|              BEGIN  # FOR EACH BAD FILE #
01416  M00S01350.sxinit  +++|              MSG$LINE[0] = " ATTACH ERROR ON SFM SUBFAMILY CATALOG.";
01417  M00S01351.sxinit  +++|              MESSAGE(MSGBUF,UDFL1);
01418  M00S01352.sxinit  +++|
01419  M00S01353.sxinit  +++|              MSGPFN[0] = BAD$PFN[J];
01420  M00S01354.sxinit  +++|              MSGFAM[0] = BAD$FAM[J];
01421  M00S01355.sxinit  +++|              MSGUI[0] = BAD$INDEX[J];
01422  M00S01356.sxinit  +++|
01423  M00S01357.sxinit  +++|              MSG$LINE[0] = MSG$TEXT[0];
01424  M00S01358.sxinit  +++|              RMVBLNK(MSGBUF[0],40);
01425  M00S01359.sxinit  +++|              MESSAGE(MSGBUF,UDFL1);
01426  M00S01360.sxinit  +++|              END  # FOR EACH BAD FILE #
01427  M00S01361.sxinit  +++|
01428  M00S01362.sxinit  +++|            END  # OUTPUT MESSAGE FOR EACH BAD FILE #
01429  M00S01363.sxinit  +++|
01430  M00S01364.sxinit  +++|          END  # CHECK FOR AT LEAST ONE SUCCESSFUL ATTACH #
01431  M00S01365.sxinit  +++|
01432  M00S01366.sxinit  +++|        END  # CHECK ALL FAMILIES FOR EIGHT CATALOGS #
01433  M00S01367.sxinit  +++|
01434  M00S01368.sxinit  +++|      NFAM = NFAM - 1;               # SET FAMILY COUNT #
01435  M00S01369.sxinit  +++|
01436  M00S01370.sxinit  +++|#
01437  M00S01371.sxinit  +++|*     SET THE FATAL ERROR FLAG IF THERE ARE NO FAMILIES WITH
01438  M00S01372.sxinit  +++|*     EIGHT *SFM* CATALOGS.
01439  M00S01373.sxinit  +++|#
01440  M00S01374.sxinit  +++|
01441  M00S01375.sxinit  +++|      IF NFAM EQ 0
01442  M00S01376.sxinit  +++|      THEN
01443  M00S01377.sxinit  +++|        BEGIN  # NO FAMILY WITH 8 CATALOGS FOUND #
01444  M00S01378.sxinit  +++|        FATALERR = TRUE;
01445  M00S01379.sxinit  +++|
01446  M00S01380.sxinit  +++|        MSG$LINE[0] = " INITIALIZATION PROBLEMS -";
01447  M00S01381.sxinit  +++|        MESSAGE(MSGBUF[0],UDFL1);
01448  M00S01382.sxinit  +++|
01449  M00S01383.sxinit  +++|        MSG$LINE[0] = " NO FAMILY WITH 8 CATALOGS FOUND.";
01450  M00S01384.sxinit  +++|        MESSAGE(MSGBUF[0],UDFL1);
01451  M00S01385.sxinit  +++|        END  # NO FAMILY WITH 8 CATALOGS FOUND #
01452  M00S01386.sxinit  +++|
01453  M00S01387.sxinit  +++|      END  # INITFAM #
01454  M00S01388.sxinit  +++|
01455  M00S01389.sxinit  +++|    TERM
01456  M00S01390.sxinit  +++|PROC INITFLG;
01457  M00S01391.sxinit  +++|# TITLE INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS.            #
01458  M00S01392.sxinit  +++|
01459  M00S01393.sxinit  +++|      BEGIN  # INITFLG #
01460  M00S01394.sxinit  +++|
01461  M00S01395.sxinit  +++|#
01462  M00S01396.sxinit  +++|**    INITFLG - INITIALIZES ASSORTED FLAGS AND COUNTERS.
01463  M00S01397.sxinit  +++|*
01464  M00S01398.sxinit  +++|*     THIS PROCEDURE WILL INITIALIZE ASSORTED FLAGS AND COUNTERS.
01465  M00S01399.sxinit  +++|*
01466  M00S01400.sxinit  +++|*     PROC      INITFLG.
01467  M00S01401.sxinit  +++|*
01468  M00S01402.sxinit  +++|*     EXIT      FLAGS HAVE BEEN INITIALIZED.
01469  M00S01403.sxinit  +++|#
01470  M00S01404.sxinit  +++|
01471  M00S01405.sxinit  +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
01472  M00S01406.sxinit  +++|*CALL COMBFAS
01473  M00S01407.sxinit  +++|*CALL COMBCMD
01474  M00S01408.sxinit  +++|*CALL COMBLBL
01475  M00S01409.sxinit  +++|*CALL COMBMAT
01476  M00S01410.sxinit  +++|*CALL COMBUCR
01477  M00S01411.sxinit  +++|*CALL COMBUDT
01478  M00S01412.sxinit  +++|*CALL COMXBST
01479  M00S01413.sxinit  +++|*CALL COMXCTF
01480  M00S01414.sxinit  +++|*CALL COMXINT
01481  M00S01415.sxinit  +++|                                               CONTROL EJECT;
01482  M00S01416.sxinit  +++|
01483  M00S01417.sxinit  +++|#
01484  M00S01418.sxinit  +++|*     INITIALIZE FLAGS.
01485  M00S01419.sxinit  +++|#
01486  M00S01420.sxinit  +++|
01487  M00S01421.sxinit  +++|      CURESERVED = FALSE;            # CONTROLLER RESERVED FLAG #
01488  M00S01422.sxinit  +++|      DRVRRECALL = FALSE;            # DRIVER RECALL FLAG #
01489  M00S01423.sxinit  +++|      DRYUP = FALSE;                 # DRY-UP FLAG #
01490  M00S01424.sxinit  +++|      EXEC = TRUE;                   # MSAS EXECUTIVE FLAG #
01491  M00S01425.sxinit  +++|      GLBINTLK = FALSE;              # GLOBAL CATALOG INTERLOCK FLAG #
01492  M00S01426.sxinit  +++|      GLBSTFL = TRUE;                # GLOBAL STAGE FLAG #
01493  M00S01427.sxinit  +++|      GLBDSFL = TRUE;                # GLOBAL DESTAGE FLAG #
01494  M00S01428.sxinit  +++|      GLBUCPSW = FALSE;              # GLOBAL *UCP* SWAPPED FLAG #
01495  M00S01429.sxinit  +++|      LABELBUSY = FALSE;             # LABEL BUFFER BUSY FLAG #
01496  M00S01430.sxinit  +++|      TERMINATE = FALSE;             # TERMINATE FLAG #
01497  M00S01431.sxinit  +++|
01498  M00S01432.sxinit  +++|#
01499  M00S01433.sxinit  +++|*     INITIALIZE COUNTS.
01500  M00S01434.sxinit  +++|#
01501  M00S01435.sxinit  +++|
01502  M00S01436.sxinit  +++|      SMCNT = NSM;                   # NUMBER OF *SM-S* #
01503  M00S01437.sxinit  +++|      FAMCNT = NFAM;                 # NUMBER OF FAMILIES #
01504  M00S01438.sxinit  +++|      PPCBENCNT = 0;                 # CALL BLOCK ACTIVE ENTRY COUNT #
01505  M00S01439.sxinit  +++|
01506  M00S01440.sxinit  +++|#
01507  M00S01441.sxinit  +++|*     INITIALIZE THRESHOLDS.
01508  M00S01442.sxinit  +++|#
01509  M00S01443.sxinit  +++|
01510  M00S01444.sxinit  +++|
01511  M00S01445.sxinit  +++|#
01512  M00S01446.sxinit  +++|*     INITIALIZE DELAY EXPIRATION TIMES.
01513  M00S01447.sxinit  +++|#
01514  M00S01448.sxinit  +++|
01515  M00S01449.sxinit  +++|      ITLK$EXPIR = 0;                # RECLAIM CATALOG INTERLOCKS #
01516  M00S01450.sxinit  +++|      MINQ$EXPIR = 0;                # MINIMUM QUEUE DELAY EXPIRATION #
01517  M00S01451.sxinit  +++|      KDIS$EXPIR = 0;                # K-DISPLAY REFRESH #
01518  M00S01452.sxinit  +++|
01519  M00S01453.sxinit  +++|#
01520  M00S01454.sxinit  +++|*     INITIALIZE ASSORTED POINTERS.
01521  M00S01455.sxinit  +++|#
01522  M00S01456.sxinit  +++|
01523  M00S01457.sxinit  +++|      SFBLKPTR = LOC(SFPARMBLK);
01524  M00S01458.sxinit  +++|      END  # INITFLG #
01525  M00S01459.sxinit  +++|
01526  M00S01460.sxinit  +++|    TERM
01527  M00S01461.sxinit  +++|PROC INITLZR;
01528  M00S01462.sxinit  +++|# TITLE INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS.          #
01529  M00S01463.sxinit  +++|      BEGIN  # INITLZR #
01530  M00S01464.sxinit  +++|
01531  M00S01465.sxinit  +++|#
01532  M00S01466.sxinit  +++|***   INITLZR - SEQUENCES *SSEXEC-S* INITIALIZATION STEPS.
01533  M00S01467.sxinit  +++|*
01534  M00S01468.sxinit  +++|*     THIS ROUTINE WILL MAKE CALLS TO SUBROUTINES AND MACROES TO
01535  M00S01469.sxinit  +++|*     PERFORM ALL NON-HARDWARE INITIALIZATION STEPS FOR *SSEXEC*.
01536  M00S01470.sxinit  +++|*
01537  M00S01471.sxinit  +++|*     PROC      INITLZR.
01538  M00S01472.sxinit  +++|*
01539  M00S01473.sxinit  +++|*     ENTRY     CALLED FROM *SSEXEC*.
01540  M00S01474.sxinit  +++|*
01541  M00S01475.sxinit  +++|*     EXIT      PARAMETERS HAVE BEEN PROCESSED AND ALL NON-HARDWARE
01542  M00S01476.sxinit  +++|*               INITIALIZATION STEPS HAVE BEEN EXECUTED OR THE FATAL
01543  M00S01477.sxinit  +++|*               ERROR FLAG HAS BEEN SET.
01544  M00S01478.sxinit  +++|*
01545  M00S01479.sxinit  +++|*     NOTES     THIS INITIALIZATION ROUTINE MAKES PROCEDURE CALLS TO
01546  M00S01480.sxinit  +++|*               DO THE FOLLOWING:
01547  M00S01481.sxinit  +++|*
01548  M00S01482.sxinit  +++|*                 1) GET THE RUN TIME PARAMETERS,
01549  M00S01483.sxinit  +++|*                 2) INITIALIZE SUBFAMILY PARAMETERS,
01550  M00S01484.sxinit  +++|*                 3) INITIALIZE ASSORTED FLAGS,
01551  M00S01485.sxinit  +++|*                 4) INITIALIZE ASSORTED TABLES,
01552  M00S01486.sxinit  +++|*                 5) INITIALIZE FOR MULTI-MAINFRAMES,
01553  M00S01487.sxinit  +++|*                 6) ADVISE SYSTEM OF KEYBOARD BUFFER,
01554  M00S01488.sxinit  +++|*                 7) REQUEST ACTIVE SUBSYSTEM STATUS,
01555  M00S01489.sxinit  +++|*                 8) INITIALIZE UDT INTERFACE,
01556  M00S01490.sxinit  +++|*                 9) INITIALIZE *TDAM* INTERFACE.
01557  M00S01491.sxinit  +++|#
01558  M00S01492.sxinit  +++|
01559  M00S01493.sxinit  +++|#
01560  M00S01494.sxinit  +++|****  PROC INITLZR - XREF LIST BEGIN.
01561  M00S01495.sxinit  +++|#
01562  M00S01496.sxinit  +++|
01563  M00S01497.sxinit  +++|      XREF
01564  M00S01498.sxinit  +++|        BEGIN
01565  M00S01499.sxinit  +++|        PROC CALLSS;                 # ISSUES REQUEST TO SUBSYSTEM #
01566  M00S01500.sxinit  +++|        PROC GETMI;                  # GETS MACHINE INFORMATION #
01567  M00S01501.sxinit  +++|        PROC GETRTP;                 # GETS RUN TIME PARAMETERS #
01568  M00S01502.sxinit  +++|         PROC GETSPS;              # GET SYSTEM ORIGIN PRIVILEDGES #
01569  M00S01503.sxinit  +++|        PROC GETUDT;                 # GETS UNIT DEVICE TABLE #
01570  M00S01504.sxinit  +++|        PROC INITDAM;                # INITIALIZES *TDAM* INTERFACE #
01571  M00S01505.sxinit  +++|        PROC INITFAM;                # INITIALIZE SUBFAMILY PARAMETERS
01572  M00S01506.sxinit  +++|                                     #
01573  M00S01507.sxinit  +++|        PROC INITFLG;                # INITIALIZES FLAGS #
01574  M00S01508.sxinit  +++|      PROC OPENCAT;   # OPEN CATALOGS AND MAPS #
01575  M00S01509.sxinit  +++|        PROC INITSRP;                # INITIALIZES FOR *MMF* MODE #
01576  M00S01510.sxinit  +++|        PROC INITTAB;                # INITIALIZES ASSORTED TABLES #
01577  M00S01511.sxinit  +++|        PROC KINIT;                  # INITIALIZES *K* DISPLAY #
01578  M00S01512.sxinit  +++|        PROC RTIME;                  # INTERFACE TO *RTIME* MACRO #
01579  M00S01513.sxinit  +++|        END
01580  M00S01514.sxinit  +++|
01581  M00S01515.sxinit  +++|#
01582  M00S01516.sxinit  +++|****  PROC INITLZR - XREF LIST END.
01583  M00S01517.sxinit  +++|#
01584  M00S01518.sxinit  +++|
01585  M00S01519.sxinit  +++|      DEF NOPARAM    #-1#;           # NO PARAMETER SPECIFIED #
01586  M00S01520.sxinit  +++|      DEF SECOND     #1#;            # SWITCH FOR SECOND BUFFER #
01587  M00S01521.sxinit  +++|      DEF SS$SYS     #0#;            # REQUEST SUBSYSTEM STATUS CODE #
01588  M00S01522.sxinit  +++|      DEF RSLEN    #1#;              # RETURN USER STATUS #
01589  M00S01523.sxinit  +++|
01590  M00S01524.sxinit  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
01591  M00S01525.sxinit  +++|*CALL COMBFAS
01592  M00S01526.sxinit  +++|*CALL COMBCPR
01593  M00S01527.sxinit  +++|*CALL COMBUCR
01594  M00S01528.sxinit  +++|*CALL COMXCTF
01595  M00S01529.sxinit  +++|*CALL COMXEXP
01596  M00S01530.sxinit  +++|*CALL COMXINT
01597  M00S01531.sxinit  +++|*CALL,COMXJCA
01598  M00S01532.sxinit  +++|      ITEM FAMSRP     C(7);          # FAMILY FOR *INITSRP* #
01599  M00S01533.sxinit  +++|      ITEM MFINDEX    U;             # MACHINE INDEX FOR *INITSRP* #
01600  M00S01534.sxinit  +++|      ITEM PBLOCK     U = 0;         # PARAMETER BLOCK #
01601  M00S01535.sxinit  +++|      ITEM SS         U;             # SUBSYSTEM QUEUE PRIORITY #
01602  M00S01536.sxinit  +++|
01603  M00S01537.sxinit  +++|
01604  M00S01538.sxinit  +++|       ARRAY SPSSTAT  [0:0] S(RSLEN);
01605  M00S01539.sxinit  +++|        BEGIN
01606  M00S01540.sxinit  +++|        ITEM SPS$STATUS   U(00,48,12);   # RETURN STATUS #
01607  M00S01541.sxinit  +++|        END
01608  M00S01542.sxinit  +++|
01609  M00S01543.sxinit  +++|                                               CONTROL EJECT;
01610  M00S01544.sxinit  +++|
01611  M00S01545.sxinit  +++|#
01612  M00S01546.sxinit  +++|*     READ AND SAVE RTIME.
01613  M00S01547.sxinit  +++|#
01614  M00S01548.sxinit  +++|
01615  M00S01549.sxinit  +++|      RTIME(RTIMESTAT);
01616  M00S01550.sxinit  +++|      FIRSTRTIME = RTIMSECS[0];
01617  M00S01551.sxinit  +++|
01618  M00S01552.sxinit  +++|#
01619  M00S01553.sxinit  +++|*     CHECK SYSTEM ORIGIN PRIVILEDGES.
01620  M00S01554.sxinit  +++|#
01621  M00S01555.sxinit  +++|
01622  M00S01556.sxinit  +++|
01623  M00S01557.sxinit  +++|      GETSPS(SPSSTAT);
01624  M00S01558.sxinit  +++|      IF SPS$STATUS NQ 0
01625  M00S01559.sxinit  +++|      THEN
01626  M00S01560.sxinit  +++|        BEGIN
01627  M00S01561.sxinit  +++|        FATALERR = TRUE;
01628  M00S01562.sxinit  +++|        END
01629  M00S01563.sxinit  +++|
01630  M00S01564.sxinit  +++|#
01631  M00S01565.sxinit  +++|*     SET UP *RA* POINTER.
01632  M00S01566.sxinit  +++|#
01633  M00S01567.sxinit  +++|
01634  M00S01568.sxinit  +++|      P<RA$AREA> = 0;
01635  M00S01569.sxinit  +++|
01636  M00S01570.sxinit  +++|#
01637  M00S01571.sxinit  +++|*     CALL *GETRTP* TO PROCESS RUN TIME PARAMETERS.
01638  M00S01572.sxinit  +++|#
01639  M00S01573.sxinit  +++|
01640  M00S01574.sxinit  +++|      GETRTP;
01641  M00S01575.sxinit  +++|
01642  M00S01576.sxinit  +++|      IF FATALERR
01643  M00S01577.sxinit  +++|      THEN
01644  M00S01578.sxinit  +++|        BEGIN  # IF FATAL ERROR #
01645  M00S01579.sxinit  +++|        RETURN;
01646  M00S01580.sxinit  +++|        END  # IF FATAL ERROR #
01647  M00S01581.sxinit  +++|
01648  M00S01582.sxinit  +++|#
01649  M00S01583.sxinit  +++|*     CALL *INITFAM* TO INITIALIZE SUBFAMILY PARAMETERS.
01650  M00S01584.sxinit  +++|#
01651  M00S01585.sxinit  +++|
01652  M00S01586.sxinit  +++|      INITFAM;
01653  M00S01587.sxinit  +++|
01654  M00S01588.sxinit  +++|      IF FATALERR
01655  M00S01589.sxinit  +++|      THEN
01656  M00S01590.sxinit  +++|        BEGIN  # IF FATAL ERROR #
01657  M00S01591.sxinit  +++|        RETURN;
01658  M00S01592.sxinit  +++|        END  # IF FATAL ERROR #
01659  M00S01593.sxinit  +++|
01660  M00S01594.sxinit  +++|#
01661  M00S01595.sxinit  +++|*     CALL *INITFLG* TO INITIALIZE ASSORTED FLAGS.
01662  M00S01596.sxinit  +++|#
01663  M00S01597.sxinit  +++|
01664  M00S01598.sxinit  +++|      INITFLG;
01665  M00S01599.sxinit  +++|
01666  M00S01600.sxinit  +++|#
01667  M00S01601.sxinit  +++|*     CALL *INITTAB* TO INITIALIZE ASSORTED TABLES.
01668  M00S01602.sxinit  +++|#
01669  M00S01603.sxinit  +++|
01670  M00S01604.sxinit  +++|      INITTAB;
01671  M00S01605.sxinit  +++|
01672  M00S01606.sxinit  +++|      IF FATALERR
01673  M00S01607.sxinit  +++|      THEN
01674  M00S01608.sxinit  +++|        BEGIN
01675  M00S01609.sxinit  +++|        RETURN;
01676  M00S01610.sxinit  +++|        END
01677  M00S01611.sxinit  +++|
01678  M00S01612.sxinit  +++|#
01679  M00S01613.sxinit  +++|*     CALL *INITSRP* TO INITIALIZE FOR MULTI-MAINFRAMES.
01680  M00S01614.sxinit  +++|#
01681  M00S01615.sxinit  +++|
01682  M00S01616.sxinit  +++|      GETMI(CMRINFO,EVENT);
01683  M00S01617.sxinit  +++|
01684  M00S01618.sxinit  +++|      EESET$EVT = EESET$ASXE;            # MSAS SET UP #
01685  M00S01619.sxinit  +++|      EESET$ASXE = 0;
01686  M00S01620.sxinit  +++|
01687  M00S01621.sxinit  +++|      IF ARG$SC EQ NOPARAM
01688  M00S01622.sxinit  +++|      THEN
01689  M00S01623.sxinit  +++|        BEGIN  # *S* NOT SPECIFIED #
01690  M00S01624.sxinit  +++|        FAMSRP = FAM$NAME[LINK$ORD[0]];
01691  M00S01625.sxinit  +++|        MFINDEX = CMR$MFID[0];
01692  M00S01626.sxinit  +++|        END  # *S* NOT SPECIFIED #
01693  M00S01627.sxinit  +++|
01694  M00S01628.sxinit  +++|      ELSE
01695  M00S01629.sxinit  +++|        BEGIN  # *S* PARAMETER SPECIFIED #
01696  M00S01630.sxinit  +++|        FAMSRP = DEF$FAM;
01697  M00S01631.sxinit  +++|        MFINDEX = ARG$S;
01698  M00S01632.sxinit  +++|        END  # *S* PARAMTER SPECIFIED #
01699  M00S01633.sxinit  +++|
01700  M00S01634.sxinit  +++|      INITSRP(CMR$MID[0],MFINDEX,FAMSRP);
01701  M00S01635.sxinit  +++|
01702  M00S01636.sxinit  +++|#
01703  M00S01637.sxinit  +++|*     CALL *KINIT* TO INITIALIZE *K* DISPLAY.
01704  M00S01638.sxinit  +++|#
01705  M00S01639.sxinit  +++|
01706  M00S01640.sxinit  +++|      KINIT;
01707  M00S01641.sxinit  +++|
01708  M00S01642.sxinit  +++|#
01709  M00S01643.sxinit  +++|*     CALL *CALLSS* MACRO TO REQUEST ACTIVE SUBSYSTEM STATUS AND
01710  M00S01644.sxinit  +++|*     INITIALIZE RA.SSC AND *UCPPARMSW* FOR INCOMING *UCP* REQUESTS.
01711  M00S01645.sxinit  +++|*     *UPCPARMSW* INDICATES WHICH BUFFER THE NEXT *UCP* REQUEST
01712  M00S01646.sxinit  +++|*     WILL USE.
01713  M00S01647.sxinit  +++|#
01714  M00S01648.sxinit  +++|
01715  M00S01649.sxinit  +++|      SS = SS$SYS;                   # REQUEST ACTIVE STATUS CODE #
01716  M00S01650.sxinit  +++|      CALLSS(SS,PBLOCK,NRCL);        # REQUEST ACTIVE STATUS #
01717  M00S01651.sxinit  +++|
01718  M00S01652.sxinit  +++|      RA$SSWWRD[0] = 0;
01719  M00S01653.sxinit  +++|      RA$SSCINLK = FALSE;
01720  M00S01654.sxinit  +++|      RA$SSCPP = TRUE;
01721  M00S01655.sxinit  +++|      RA$SSCXP = 0;
01722  M00S01656.sxinit  +++|      RA$SSCVF = TRUE;
01723  M00S01657.sxinit  +++|      RA$SSCLP = CPRLEN + 2;
01724  M00S01658.sxinit  +++|      RA$SSCAP = LOC(PRAMUCP);       # SET *UCP* PARAMETER ADDRESS #
01725  M00S01659.sxinit  +++|      RA$SSPN = "SSEXEC";
01726  M00S01660.sxinit  +++|      RA$SSCODE = SSID;
01727  M00S01661.sxinit  +++|      UCPPARMSW = SECOND;            # SET NEXT BUFFER SWITCH #
01728  M00S01662.sxinit  +++|
01729  M00S01663.sxinit  +++|#
01730  M00S01664.sxinit  +++|*     CALL *GETUDT* TO INITIALIZE UDT INTERFACE.
01731  M00S01665.sxinit  +++|#
01732  M00S01666.sxinit  +++|
01733  M00S01667.sxinit  +++|      GETUDT;
01734  M00S01668.sxinit  +++|
01735  M00S01669.sxinit  +++|      IF FATALERR
01736  M00S01670.sxinit  +++|      THEN
01737  M00S01671.sxinit  +++|        BEGIN  # IF FATAL ERROR #
01738  M00S01672.sxinit  +++|        RETURN;
01739  M00S01673.sxinit  +++|        END  # IF FATAL ERROR #
01740  M00S01674.sxinit  +++|
01741  M00S01675.sxinit  +++|#
01742  M00S01676.sxinit  +++|*     CALL OPENCAT TO INITIALIZE THE OCT AND OMT TABLES AND
01743  M00S01677.sxinit  +++|*     TO FIND ANY DESCREPENCIES IN THE AST.
01744  M00S01678.sxinit  +++|#
01745  M00S01679.sxinit  +++|      OPENCAT;
01746  M00S01680.sxinit  +++|
01747  M00S01681.sxinit  +++|#
01748  M00S01682.sxinit  +++|*     INITIALIZE *TDAM* INTERFACE AND ISSUE EVENT TO SWAP IN JOBS
01749  M00S01683.sxinit  +++|*     WAITING FOR *MSAS*.
01750  M00S01684.sxinit  +++|#
01751  M00S01685.sxinit  +++|
01752  M00S01686.sxinit  +++|      INITDAM;
01753  M00S01687.sxinit  +++|
01754  M00S01688.sxinit  +++|      END  # INITLZR #
01755  M00S01689.sxinit  +++|
01756  M00S01690.sxinit  +++|    TERM
01757  M00S01691.sxinit  +++|PROC INITSRP((MID),(MIDX),(LINKFAM));
01758  M00S01692.sxinit  +++|# TITLE INITSRP - INITIALIZE SLAVE REQUEST PROCESSOR.                 #
01759  M00S01693.sxinit  +++|
01760  M00S01694.sxinit  +++|      BEGIN  # INITSRP #
01761  M00S01695.sxinit  +++|
01762  M00S01696.sxinit  +++|#
01763  M00S01697.sxinit  +++|**    INITSRP  - INITIALIZE THE SLAVE REQUEST PROCESSOR.
01764  M00S01698.sxinit  +++|*
01765  M00S01699.sxinit  +++|*     *INITSRP* INITIALIZES THE *SSEXEC* FOR MULTIMAINFRAME
01766  M00S01700.sxinit  +++|*     PROCESSING.  IT WILL INITIALIZE THE *MTOS* FILE WHICH IS USED TO
01767  M00S01701.sxinit  +++|*     COMMUNICATE WITH EACH *SLVEXEC*.  IT WILL ALSO ATTACH IN
01768  M00S01702.sxinit  +++|*     READ-ALLOW-MODIFY MODE THE *STOM* FILES FROM ALL POSSIBLE SLAVE
01769  M00S01703.sxinit  +++|*     MAINFRAMES SO STAGING REQUESTS FROM *SLVEXEC* PROGRAMS CAN BE
01770  M00S01704.sxinit  +++|*     ACCEPTED AND PROCESSED.
01771  M00S01705.sxinit  +++|*
01772  M00S01706.sxinit  +++|*     PROC INITSRP((MID),(MIDX),(LINKFAM))
01773  M00S01707.sxinit  +++|*
01774  M00S01708.sxinit  +++|*     ENTRY      (MID) =  2 CHARACTER ID OF THE MASTER MAINFRAME.
01775  M00S01709.sxinit  +++|*                (MIDX) = MACHINE INDEX (1-4) OF THE MASTER MAINFRAME.
01776  M00S01710.sxinit  +++|*                (LINKFAM) = NAME OF THE FAMILY ON WHICH THE
01777  M00S01711.sxinit  +++|*                            COMMUNICATION FILES RESIDE, OR ARE TO
01778  M00S01712.sxinit  +++|*                            RESIDE.
01779  M00S01713.sxinit  +++|*
01780  M00S01714.sxinit  +++|*     EXIT       THE VARIABLES *STOM$EXPIR* AND *MTOS$EXPIR* (IN
01781  M00S01715.sxinit  +++|*                *COMXCTF*) ARE INITIALIZED TO INDICATE THE TIMES WHEN
01782  M00S01716.sxinit  +++|*                THE *STOM* FILES SHOULD BE MONITORED AND THE *MTOS*
01783  M00S01717.sxinit  +++|*                FILE SHOULD BE UPDATED, RESPECTIVELY.  IF THE
01784  M00S01718.sxinit  +++|*                *SSEXEC* IS TO RUN IN SINGLE MAINFRAME MODE, THESE
01785  M00S01719.sxinit  +++|*                TIMES ARE SET TO THE LARGEST POSSIBLE VALUE.
01786  M00S01720.sxinit  +++|*
01787  M00S01721.sxinit  +++|*     NOTES      THE *SSEXEC* WILL RUN IN SINGLE MAINFRAME MODE IF ANY
01788  M00S01722.sxinit  +++|*                OF THE FOLLOWING CONDITIONS ARE MET.
01789  M00S01723.sxinit  +++|*                            1) THE MAINFRAME IS NOT IN MULTIMAINFRAME
01790  M00S01724.sxinit  +++|*                               MODE.
01791  M00S01725.sxinit  +++|*                            2) THE *SETPFP* REQUEST FAILS.
01792  M00S01726.sxinit  +++|*                            3) THE *MTOS* FILE EXISTS, BUT CANNOT BE
01793  M00S01727.sxinit  +++|*                               ATTACHED IN MODIFY MODE.
01794  M00S01728.sxinit  +++|*                            4) THE *MTOS* FILE DOES NOT EXIST, BUT
01795  M00S01729.sxinit  +++|*                               CANNOT BE DEFINED.
01796  M00S01730.sxinit  +++|*                            5) NO VALID SLAVE MAINFRAMES CAN BE
01797  M00S01731.sxinit  +++|*                               IDENTIFIED.
01798  M00S01732.sxinit  +++|*
01799  M00S01733.sxinit  +++|*                ANOTHER MAINFRAME WILL NOT BE RECOGNIZED AS A VALID
01800  M00S01734.sxinit  +++|*                SLAVE MAINFRAME IF ANY OF THE FOLLOWING IS TRUE.
01801  M00S01735.sxinit  +++|*                            1) THE *STOM* FILE CANNOT BE ATTACHED IN
01802  M00S01736.sxinit  +++|*                               READ-ALLOW-MODIFY MODE.
01803  M00S01737.sxinit  +++|*
01804  M00S01738.sxinit  +++|*                            2) THE LENGTH OF THE *STOM* FILE INDICATES
01805  M00S01739.sxinit  +++|*                               THAT THE *SLVEXEC* IS WORKING WITH A
01806  M00S01740.sxinit  +++|*                               DIFFERENT SET OF INSTALLATION
01807  M00S01741.sxinit  +++|*                               PARAMETERS.
01808  M00S01742.sxinit  +++|*
01809  M00S01743.sxinit  +++|*     MESSAGES
01810  M00S01744.sxinit  +++|*                * EXEC MMF INITIALIZATION OK.*
01811  M00S01745.sxinit  +++|*                      AN INFORMATIVE MESSAGE NOTING THAT *SSEXEC*
01812  M00S01746.sxinit  +++|*                      IS READY TO RUN IN MULTIMAINFRAME MODE.
01813  M00S01747.sxinit  +++|*
01814  M00S01748.sxinit  +++|*                * EXEC MMF INITIALIZATION FAILED -*
01815  M00S01749.sxinit  +++|*                *     - ALL SLAVES OMITTED.*      -OR-
01816  M00S01750.sxinit  +++|*                *     - ATTACH MTOS FAILED.*      -OR-
01817  M00S01751.sxinit  +++|*                *     - DEFINE MTOS FAILED.*      -OR-
01818  M00S01752.sxinit  +++|*                *     - MTOS FILE BUSY.*          -OR-
01819  M00S01753.sxinit  +++|*                *     - SETPFP PROBLEM.*
01820  M00S01754.sxinit  +++|*                      A MESSAGE INDICATING THAT THE *SSEXEC* PROGRAM
01821  M00S01755.sxinit  +++|*                      WILL NOT RUN IN MULTIFRAME MODE FOR THE REASON
01822  M00S01756.sxinit  +++|*                      NOTED ON THE SECOND LINE.
01823  M00S01757.sxinit  +++|*
01824  M00S01758.sxinit  +++|*                * EXEC IN SINGLE MAINFRAME MODE.*
01825  M00S01759.sxinit  +++|*                      AN INFORMATIVE MESSAGE INDICATING THAT THE
01826  M00S01760.sxinit  +++|*                      *SSEXEC* PROGRAM IS RUNNING IN A SINGLE
01827  M00S01761.sxinit  +++|*                      MAINFRAME CONFIGURATION.
01828  M00S01762.sxinit  +++|*
01829  M00S01763.sxinit  +++|*                * EXEC - SLAVE N XXXX.*
01830  M00S01764.sxinit  +++|*                                 XXXX = ACTIVE/IDLE.
01831  M00S01765.sxinit  +++|*                      AN INFORMATIVE MESSAGE INDICATING THAT *SSEXEC*
01832  M00S01766.sxinit  +++|*                      IS READY TO COMMUNICATE WITH THE *SSSLV*
01833  M00S01767.sxinit  +++|*                      PROGRAM WHICH IS RUNNING ON MAINFRAME *N*.
01834  M00S01768.sxinit  +++|*
01835  M00S01769.sxinit  +++|*                * EXEC - SLAVE N OMITTED -*
01836  M00S01770.sxinit  +++|*                *     - NO STOM FILE.*      -OR-
01837  M00S01771.sxinit  +++|*                *     - STOM FILE LENGTH PROBLEM.*
01838  M00S01772.sxinit  +++|*                      A MESSAGE INDICATING THAT *SSEXEC* WILL NOT
01839  M00S01773.sxinit  +++|*                      COMMUNICATE WITH AN *SSSLV* PROGRAM, IF ANY, ON
01840  M00S01774.sxinit  +++|*                      MAINFRAME *N* FOR THE REASON NOTED IN THE
01841  M00S01775.sxinit  +++|*                      SECOND LINE.
01842  M00S01776.sxinit  +++|*
01843  M00S01777.sxinit  +++|#
01844  M00S01778.sxinit  +++|
01845  M00S01779.sxinit  +++|
01846  M00S01780.sxinit  +++|      ITEM MID        C(2);          # MACHINE ID OF MASTER MF #
01847  M00S01781.sxinit  +++|      ITEM MIDX       U;             # INDEX (1-4) OF MASTER MF #
01848  M00S01782.sxinit  +++|      ITEM LINKFAM    C(7);          # NAME OF LINK FAMILY #
01849  M00S01783.sxinit  +++|
01850  M00S01784.sxinit  +++|#
01851  M00S01785.sxinit  +++|****  PROC INITSRP - XREF LIST BEGIN.
01852  M00S01786.sxinit  +++|#
01853  M00S01787.sxinit  +++|
01854  M00S01788.sxinit  +++|      XREF
01855  M00S01789.sxinit  +++|        BEGIN
01856  M00S01790.sxinit  +++|        PROC MESSAGE;                # ISSUES MESSAGE MACRO #
01857  M00S01791.sxinit  +++|        PROC PDATE;                  # ISSUE PDATE MACRO #
01858  M00S01792.sxinit  +++|        PROC PFD;                    # PERMANENT FILE REQUEST DELAYS #
01859  M00S01793.sxinit  +++|        PROC READ;                   # READ FILE #
01860  M00S01794.sxinit  +++|        PROC READW;                  # READ LINE #
01861  M00S01795.sxinit  +++|        PROC REWIND;                 # REWIND FILE #
01862  M00S01796.sxinit  +++|        PROC RETERN;                 # RETURN FILE #
01863  M00S01797.sxinit  +++|        PROC RTIME;                  # ISSUE RTIME MACRO #
01864  M00S01798.sxinit  +++|        PROC SETPFP;                 # ISSUE SETPFP MACRO #
01865  M00S01799.sxinit  +++|        PROC WRITER;                 # WRITE FILE #
01866  M00S01800.sxinit  +++|        FUNC XCOD C(10);             # INTEGER TO DISPLAY #
01867  M00S01801.sxinit  +++|        PROC ZFILL;                  # ZERO FILL AN ARRAY #
01868  M00S01802.sxinit  +++|        PROC ZSETFET;                # INITIALIZE *FET* #
01869  M00S01803.sxinit  +++|        END
01870  M00S01804.sxinit  +++|
01871  M00S01805.sxinit  +++|#
01872  M00S01806.sxinit  +++|****  PROC INITSRP - XREF LIST END.
01873  M00S01807.sxinit  +++|#
01874  M00S01808.sxinit  +++|
01875  M00S01809.sxinit  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
01876  M00S01810.sxinit  +++|
01877  M00S01811.sxinit  +++|
01878  M00S01812.sxinit  +++|*CALL,COMBFAS
01879  M00S01813.sxinit  +++|*CALL,COMBFET
01880  M00S01814.sxinit  +++|*CALL,COMBPFP
01881  M00S01815.sxinit  +++|*CALL COMBPFS
01882  M00S01816.sxinit  +++|*CALL,COMXCTF
01883  M00S01817.sxinit  +++|*CALL COMXINT
01884  M00S01818.sxinit  +++|*CALL,COMXIPR
01885  M00S01819.sxinit  +++|*CALL,COMXMMF
01886  M00S01820.sxinit  +++|*CALL,COMSPFM
01887  M00S01821.sxinit  +++|
01888  M00S01822.sxinit  +++|
01889  M00S01823.sxinit  +++|
01890  M00S01824.sxinit  +++|      ARRAY MMFSTAT [0:0] S(4);
01891  M00S01825.sxinit  +++|        BEGIN
01892  M00S01826.sxinit  +++|        ITEM MMF$TEXT   C(00,00,38)  # INITIALIZATION STATUS #
01893  M00S01827.sxinit  +++|          =[" EXEC MMF INITIALIZATION STATUS"];
01894  M00S01828.sxinit  +++|        ITEM MMF$STAT   C(02,30,09);  # OK/FAILED - #
01895  M00S01829.sxinit  +++|        ITEM MMF$END    U(03,48,12) =[0];  # END OF LINE #
01896  M00S01830.sxinit  +++|        END
01897  M00S01831.sxinit  +++|
01898  M00S01832.sxinit  +++|
01899  M00S01833.sxinit  +++|      ARRAY RBBUF [0:0] S(RBSIZE);;  # SCRATCH BUFFER #
01900  M00S01834.sxinit  +++|
01901  M00S01835.sxinit  +++|
01902  M00S01836.sxinit  +++|
01903  M00S01837.sxinit  +++|      ITEM PFNAME     C(7);          # PERMANENT FILE NAME #
01904  M00S01838.sxinit  +++|      ITEM RB         U;             # INDEX TO A REQUEST BLOCK #
01905  M00S01839.sxinit  +++|      ITEM STAT       U;             # SCRATCH STATUS WORD #
01906  M00S01840.sxinit  +++|      ITEM STATM      S:EXECSTAT;    # STATUS OF MMF INITIALIZATION #
01907  M00S01841.sxinit  +++|      ITEM STATS      S:EXECSTAT;    # STATUS OF A SLAVE #
01908  M00S01842.sxinit  +++|      ITEM THISSLV    U;             # SCRATCH WORD #
01909  M00S01843.sxinit  +++|
01910  M00S01844.sxinit  +++|                                               CONTROL EJECT;
01911  M00S01845.sxinit  +++|
01912  M00S01846.sxinit  +++|#
01913  M00S01847.sxinit  +++|*     INITIALIZE VARIOUS ITEMS AND POINTERS.
01914  M00S01848.sxinit  +++|#
01915  M00S01849.sxinit  +++|
01916  M00S01850.sxinit  +++|      STATM = S"INITPROB";
01917  M00S01851.sxinit  +++|      L$STOM = (NUMRB + 1) * RBSIZE;
01918  M00S01852.sxinit  +++|      L$MTOSH = (MAXSLV + 1) * 3;
01919  M00S01853.sxinit  +++|      L$MTOS = L$MTOSH + NUMRB * NUMSLV;
01920  M00S01854.sxinit  +++|      P<MTOSHEAD> = LOC(MTOS$BUF);
01921  M00S01855.sxinit  +++|      P<MTOSM> = LOC(MTOB$FET);
01922  M00S01856.sxinit  +++|      P<STOMMBUF> = LOC(STOM$BUF);
01923  M00S01857.sxinit  +++|      STOMBUFL = STOM$BFL;
01924  M00S01858.sxinit  +++|
01925  M00S01859.sxinit  +++|      ZSETFET(LOC(MTOSM),MTOSMLFN,LOC(MTOSHEAD),L$MTOS + 1,SFETL);
01926  M00S01860.sxinit  +++|
01927  M00S01861.sxinit  +++|      IF MIDX EQ 0
01928  M00S01862.sxinit  +++|      THEN                           # SINGLE MAINFRAME MODE #
01929  M00S01863.sxinit  +++|        BEGIN
01930  M00S01864.sxinit  +++|        STATM = S"SMF";
01931  M00S01865.sxinit  +++|        GOTO INITMASTER;
01932  M00S01866.sxinit  +++|        END
01933  M00S01867.sxinit  +++|
01934  M00S01868.sxinit  +++|#
01935  M00S01869.sxinit  +++|*     ISSUE A *SETPFP* SO THE COMMUNICATION FILES
01936  M00S01870.sxinit  +++|*     CAN BE ATTACHED.
01937  M00S01871.sxinit  +++|#
01938  M00S01872.sxinit  +++|
01939  M00S01873.sxinit  +++|      PFP$WRD0[0] = 0;
01940  M00S01874.sxinit  +++|      PFP$FAM[0] = LINKFAM;
01941  M00S01875.sxinit  +++|      PFP$FG1[0] = TRUE;             # CHANGE FAMILY #
01942  M00S01876.sxinit  +++|      PFP$FG4[0] = TRUE;             # CHANGE USER INDEX #
01943  M00S01877.sxinit  +++|      PFP$UI[0] = DEF$UI;
01944  M00S01878.sxinit  +++|      SETPFP(PFP);
01945  M00S01879.sxinit  +++|      IF PFP$STAT[0] NQ 0
01946  M00S01880.sxinit  +++|      THEN
01947  M00S01881.sxinit  +++|        BEGIN
01948  M00S01882.sxinit  +++|        MMFD$PROB[0] = "SETPFP PROBLEM.";
01949  M00S01883.sxinit  +++|        GOTO INITMASTER;
01950  M00S01884.sxinit  +++|        END
01951  M00S01885.sxinit  +++|
01952  M00S01886.sxinit  +++|#
01953  M00S01887.sxinit  +++|*     ATTACH THE *MTOS* FILE IN MODIFY MODE,
01954  M00S01888.sxinit  +++|*     AND READ IT TO THE *MTOS* BUFFER.
01955  M00S01889.sxinit  +++|*     USE THE *STOM* FILE BUFFER AND *FET* TO READ THE *MTOS* FILE.
01956  M00S01890.sxinit  +++|#
01957  M00S01891.sxinit  +++|
01958  M00S01892.sxinit  +++|      ZSETFET(LOC(STOMM),MTOSMLFN,LOC(STOMMBUF),STOMBUFL,SFETL);
01959  M00S01893.sxinit  +++|      PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW,
01960  M00S01894.sxinit  +++|         "M","M", "RC",PFSTAT,"NA",0,"UP",0,0);
01961  M00S01895.sxinit  +++|      IF PFSTAT EQ FBS
01962  M00S01896.sxinit  +++|      THEN                           # FILE BUSY #
01963  M00S01897.sxinit  +++|        BEGIN
01964  M00S01898.sxinit  +++|        MMFD$PROB[0] = "MTOS FILE BUSY.";
01965  M00S01899.sxinit  +++|        GOTO INITMASTER;
01966  M00S01900.sxinit  +++|        END
01967  M00S01901.sxinit  +++|
01968  M00S01902.sxinit  +++|
01969  M00S01903.sxinit  +++|      IF PFSTAT EQ OK
01970  M00S01904.sxinit  +++|      THEN                           # READ *MTOS* #
01971  M00S01905.sxinit  +++|        BEGIN
01972  M00S01906.sxinit  +++|        READ(STOMM,RCL);
01973  M00S01907.sxinit  +++|        READW(STOMM,MTOSHEAD,L$MTOS,STAT);
01974  M00S01908.sxinit  +++|        END
01975  M00S01909.sxinit  +++|
01976  M00S01910.sxinit  +++|
01977  M00S01911.sxinit  +++|
01978  M00S01912.sxinit  +++|      IF PFSTAT NQ OK                ##
01979  M00S01913.sxinit  +++|        OR MSH$NUMSLV[0] NQ NUMSLV   ##
01980  M00S01914.sxinit  +++|        OR MSH$NUMRB[0] NQ NUMRB
01981  M00S01915.sxinit  +++|      THEN                           # INITIALIZE THE *MTOS* FILE #
01982  M00S01916.sxinit  +++|        BEGIN
01983  M00S01917.sxinit  +++|        PFSTAT = 1;
01984  M00S01918.sxinit  +++|        MSH$NUMSLV[0] = NUMSLV;
01985  M00S01919.sxinit  +++|        MSH$NUMRB[0] = NUMRB;
01986  M00S01920.sxinit  +++|        STAT = 1;
01987  M00S01921.sxinit  +++|        END
01988  M00S01922.sxinit  +++|
01989  M00S01923.sxinit  +++|#
01990  M00S01924.sxinit  +++|*     INITIALIZE THE MASTER STATUS INFORMATION.
01991  M00S01925.sxinit  +++|#
01992  M00S01926.sxinit  +++|
01993  M00S01927.sxinit  +++|      MSH$PFNM[0] = MTBSPFN;
01994  M00S01928.sxinit  +++|      MSH$MIDM[0] = MID;
01995  M00S01929.sxinit  +++|      MSH$MIDX[0] = MIDX;
01996  M00S01930.sxinit  +++|
01997  M00S01931.sxinit  +++|
01998  M00S01932.sxinit  +++|      IF PFSTAT NQ OK
01999  M00S01933.sxinit  +++|      THEN
02000  M00S01934.sxinit  +++|        BEGIN  # CREATE *MTOS* #
02001  M00S01935.sxinit  +++|
02002  M00S01936.sxinit  +++|#
02003  M00S01937.sxinit  +++|*     CREATE A NEW *MTOS* PERMANENT FILE WHICH
02004  M00S01938.sxinit  +++|*     HAS THE MASTER HEADER INFORMATION.
02005  M00S01939.sxinit  +++|*     REATTACH THE *MTOS* FILE IN MODIFY MODE
02006  M00S01940.sxinit  +++|*     SO THE *SSSLV* PROGRAMS CAN READ IT.
02007  M00S01941.sxinit  +++|#
02008  M00S01942.sxinit  +++|
02009  M00S01943.sxinit  +++|        RETERN(STOMM,RCL);
02010  M00S01944.sxinit  +++|        PFD("PURGE",MTBSPFN,"PW",MTOSPW,"RC",PFSTAT,"UP",0,0);
02011  M00S01945.sxinit  +++|        PFD("DEFINE",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"BR","N", "R",
02012  M00S01946.sxinit  +++|          LINK$DT[0],"RC",PFSTAT,"UP",0,0);
02013  M00S01947.sxinit  +++|        IF PFSTAT NQ OK
02014  M00S01948.sxinit  +++|        THEN                         # CAN NOT DEFINE #
02015  M00S01949.sxinit  +++|          BEGIN
02016  M00S01950.sxinit  +++|          MMFD$PROB[0] = "DEFINE MTOS FAILED.";
02017  M00S01951.sxinit  +++|          GOTO INITMASTER;
02018  M00S01952.sxinit  +++|          END
02019  M00S01953.sxinit  +++|
02020  M00S01954.sxinit  +++|        P<FETSET> = LOC(MTOSM);
02021  M00S01955.sxinit  +++|        FET$IN[0] = FET$FRST[0] + L$MTOS;
02022  M00S01956.sxinit  +++|        WRITER(MTOSM,RCL);
02023  M00S01957.sxinit  +++|        PFD("ATTACH",MTOSMLFN,MTBSPFN,"PW",MTOSPW,"M","M", "RC",PFSTAT
02024  M00S01958.sxinit  +++|          ,"NA",0,"UP",0,0);
02025  M00S01959.sxinit  +++|        IF PFSTAT NQ OK
02026  M00S01960.sxinit  +++|        THEN                         # ABNORMAL ERROR #
02027  M00S01961.sxinit  +++|          BEGIN
02028  M00S01962.sxinit  +++|          MMFD$PROB[0] = "ATTACH MTOS FAILED.";
02029  M00S01963.sxinit  +++|          GOTO INITMASTER;
02030  M00S01964.sxinit  +++|          END
02031  M00S01965.sxinit  +++|
02032  M00S01966.sxinit  +++|        END  # CREATE *MTOS* #
02033  M00S01967.sxinit  +++|
02034  M00S01968.sxinit  +++|      STATM = S"ACTIVE";
02035  M00S01969.sxinit  +++|
02036  M00S01970.sxinit  +++|
02037  M00S01971.sxinit  +++|
02038  M00S01972.sxinit  +++|
02039  M00S01973.sxinit  +++|#
02040  M00S01974.sxinit  +++|*     ATTACH AND READ THE *STOM* COMMUNICATION FILE
02041  M00S01975.sxinit  +++|*     FROM EACH POSSIBLE SLAVE AND INITIALIZE THE
02042  M00S01976.sxinit  +++|*     HEADER AND EACH REPLY BLOCK STATUS FOR EACH SLAVE.
02043  M00S01977.sxinit  +++|#
02044  M00S01978.sxinit  +++|
02045  M00S01979.sxinit  +++|      SINDX = 1;
02046  M00S01980.sxinit  +++|      P<STOMFILE> = LOC(RBBUF);
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sxinit.txt ยท Last modified: (external edit)