User Tools

Site Tools


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

Deck SXMAIN

5 Modifications

Listing Sections

Source

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