Deck SSLABEL Part 001

1 Modification

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
02138  M00S02138.sslabel +++|
02139  M00S02139.sslabel +++|        IF LBARG$PT[0] EQ "P"
02140  M00S02140.sslabel +++|        THEN                         # ADD CARTRIDGE TO POOL #
02141  M00S02141.sslabel +++|          BEGIN  # POOL SEARCH #
02142  M00S02142.sslabel +++|          SERTYPE = S"ASSIGN";
02143  M00S02143.sslabel +++|          SP$FAM = " ";              # SEARCH FOR AN EMPTY CUBE #
02144  M00S02144.sslabel +++|          SP$SUB = 0;
02145  M00S02145.sslabel +++|          SP$VSN = " ";
02146  M00S02146.sslabel +++|          SP$CODE = CUBSTAT"SCRPOOL";
02147  M00S02147.sslabel +++|          SERCSU(SERTYPE,0,0,SP$CODE,SP$VSN,SP$FAM,SP$SUB,  ##
02148  M00S02148.sslabel +++|            PT$CSU$ENT[0],SERFLAG);
02149  M00S02149.sslabel +++|          IF SERFLAG
02150  M00S02150.sslabel +++|          THEN                       # NO EMPTY CUBE IN POOL #
02151  M00S02151.sslabel +++|            BEGIN
02152  M00S02152.sslabel +++|            NUMDONE = I - 1;
02153  M00S02153.sslabel +++|            ERRCODE = S"NO$EMPCBFP";
02154  M00S02154.sslabel +++|            LBERR(ERRCODE);          # DO ERROR PROCESSING #
02155  M00S02155.sslabel +++|            RETURN;
02156  M00S02156.sslabel +++|            END
02157  M00S02157.sslabel +++|
02158  M00S02158.sslabel +++|          END  # POOL SEARCH #
02159  M00S02159.sslabel +++|
02160  M00S02160.sslabel +++|#
02161  M00S02161.sslabel +++|*     SEARCH FOR CARTRIDGE TO BE ADDED.
02162  M00S02162.sslabel +++|#
02163  M00S02163.sslabel +++|
02164  M00S02164.sslabel +++|
02165  M00S02165.sslabel +++|        IF LBARG$PK[0] EQ "P" AND LBARG$C[0] EQ 0
02166  M00S02166.sslabel +++|        THEN
02167  M00S02167.sslabel +++|          BEGIN  # SEARCH POOL FOR ANY CARTRIDGE #
02168  M00S02168.sslabel +++|          SERTYPE = S"CART$POOL";
02169  M00S02169.sslabel +++|          SERCSU(SERTYPE,0,0,0,0,0,0,PK$CSU$ENT[0],SERFLAG);
02170  M00S02170.sslabel +++|          IF SERFLAG
02171  M00S02171.sslabel +++|          THEN                       # POOL EMPTY #
02172  M00S02172.sslabel +++|            BEGIN
02173  M00S02173.sslabel +++|            NUMDONE = I - 1;
02174  M00S02174.sslabel +++|            ERRCODE = S"NO$CR$PL";
02175  M00S02175.sslabel +++|            LBERR(ERRCODE);          # DO ERROR PROCESSING #
02176  M00S02176.sslabel +++|            RETURN;
02177  M00S02177.sslabel +++|            END
02178  M00S02178.sslabel +++|
02179  M00S02179.sslabel +++|          END  # SEARCH POOL FOR ANY CARTRIDGE #
02180  M00S02180.sslabel +++|
02181  M00S02181.sslabel +++|        IF LBARG$C[0] NQ 0
02182  M00S02182.sslabel +++|        THEN
02183  M00S02183.sslabel +++|          BEGIN  # SEARCH POOL FOR VSN #
02184  M00S02184.sslabel +++|          SERTYPE = S"CSN$MATCH";
02185  M00S02185.sslabel +++|          SERCSU(SERTYPE,0,0,0,LBARG$C[0],0,0,PK$CSU$ENT[0],SERFLAG);
02186  M00S02186.sslabel +++|          IF SERFLAG
02187  M00S02187.sslabel +++|          THEN                       # VSN NOT FOUND #
02188  M00S02188.sslabel +++|            BEGIN
02189  M00S02189.sslabel +++|            ERRCODE = S"CSN$NOTFND";
02190  M00S02190.sslabel +++|            LBERR(ERRCODE);          # DO ERROR PROCESSING #
02191  M00S02191.sslabel +++|            RETURN;
02192  M00S02192.sslabel +++|            END
02193  M00S02193.sslabel +++|
02194  M00S02194.sslabel +++|          ELSE                       # VSN FOUND #
02195  M00S02195.sslabel +++|            BEGIN
02196  M00S02196.sslabel +++|            P<SMUMAP> = LOC(PK$CSU$ENT[0]);
02197  M00S02197.sslabel +++|            IF CM$CODE[0] NQ CUBSTAT"SCRPOOL"
02198  M00S02198.sslabel +++|            THEN                     # CARTRIDGE NOT ASSIGNED TO POOL #
02199  M00S02199.sslabel +++|              BEGIN
02200  M00S02200.sslabel +++|              ERRCODE = S"UNX$CR$ASN";
02201  M00S02201.sslabel +++|              LBERR(ERRCODE);        # DO ERROR PROCESSING #
02202  M00S02202.sslabel +++|              RETURN;
02203  M00S02203.sslabel +++|              END
02204  M00S02204.sslabel +++|
02205  M00S02205.sslabel +++|            END
02206  M00S02206.sslabel +++|
02207  M00S02207.sslabel +++|          END  # SEARCH POOL FOR VSN #
02208  M00S02208.sslabel +++|
02209  M00S02209.sslabel +++|        IF LBARG$PK[0] EQ "D"
02210  M00S02210.sslabel +++|        THEN                         # SET COORDINATES TO CAS ENTRY #
02211  M00S02211.sslabel +++|          BEGIN
02212  M00S02212.sslabel +++|          PK$Y[0] = SM$ENT$TY;
02213  M00S02213.sslabel +++|          PK$Z[0] = 0;
02214  M00S02214.sslabel +++|          END
02215  M00S02215.sslabel +++|
02216  M00S02216.sslabel +++|
02217  M00S02217.sslabel +++|#
02218  M00S02218.sslabel +++|*     LOAD CARTRIDGE AND READ THE LABEL.
02219  M00S02219.sslabel +++|#
02220  M00S02220.sslabel +++|
02221  M00S02221.sslabel +++|        CALL4(REQTYP4"LOAD$CART",DRD$NUM,CART$CSN,PK$Y[0], PK$Z[0],
02222  M00S02222.sslabel +++|          FLAG);
02223  M00S02223.sslabel +++|      IF FLAG NQ RESPTYP4"OK4"  ##
02224  M00S02224.sslabel +++|          AND FLAG NQ RESPTYP4"UNK$CART"
02225  M00S02225.sslabel +++|        THEN
02226  M00S02226.sslabel +++|          BEGIN  # LOAD FAILS #
02227  M00S02227.sslabel +++|          P<SMUMAP> = LOC(PK$CSU$ENT[0]);
02228  M00S02228.sslabel +++|          IF FLAG EQ RESPTYP4"CELL$EMP"  ##
02229  M00S02229.sslabel +++|            AND CM$CODE[0] EQ CUBSTAT"SCRPOOL"
02230  M00S02230.sslabel +++|          THEN
02231  M00S02231.sslabel +++|            BEGIN  # SET ERROR FLAG IN SMMAP ENTRY #
02232  M00S02232.sslabel +++|            CM$FLAG1[0] = TRUE;
02233  M00S02233.sslabel +++|            CALL3(REQTYP3"UPD$MAP",PK$CSU$ENT[0],0,0,FLAG);
02234  M00S02234.sslabel +++|            NUMDONE = I - 1;
02235  M00S02235.sslabel +++|            ERRCODE = S"CR$NOTFND";  # CARTRIDGE NOT FOUND #
02236  M00S02236.sslabel +++|            LBERR(ERRCODE);
02237  M00S02237.sslabel +++|            IF FLAG NQ RESPTYP3"OK3"
02238  M00S02238.sslabel +++|            THEN
02239  M00S02239.sslabel +++|              BEGIN
02240  M00S02240.sslabel +++|              LBRESP(FLAG,TYP"TYP3");
02241  M00S02241.sslabel +++|              END
02242  M00S02242.sslabel +++|
02243  M00S02243.sslabel +++|            RETURN;
02244  M00S02244.sslabel +++|            END  # SET ERROR FLAG IN SMMAP ENTRY #
02245  M00S02245.sslabel +++|
02246  M00S02246.sslabel +++|            P<LABEL$CART> = OLDLABP;
02247  M00S02247.sslabel +++|            IF FLAG EQ RESPTYP4"UNK$CART"
02248  M00S02248.sslabel +++|              AND LAB$CARTTP[0] NQ 0
02249  M00S02249.sslabel +++|            THEN                     # *CSN* MISMATCH #
02250  M00S02250.sslabel +++|              BEGIN
02251  M00S02251.sslabel +++|              LBRESP(FLAG,TYP"TYP4");
02252  M00S02252.sslabel +++|              RETURN;
02253  M00S02253.sslabel +++|              END
02254  M00S02254.sslabel +++|
02255  M00S02255.sslabel +++|          ELSE                       # PROCESS THE RESPONSE CODE #
02256  M00S02256.sslabel +++|            BEGIN
02257  M00S02257.sslabel +++|            LBRESP(FLAG,TYP"TYP4");
02258  M00S02258.sslabel +++|            RETURN;
02259  M00S02259.sslabel +++|            END
02260  M00S02260.sslabel +++|
02261  M00S02261.sslabel +++|          END  # LOAD FAILS #
02262  M00S02262.sslabel +++|
02263  M00S02263.sslabel +++|
02264  M00S02264.sslabel +++|        CKLAB(FLAG);                 # CHECK LABEL TYPE #
02265  M00S02265.sslabel +++|        P<LABEL$CART> = OLDLABP;
02266  M00S02266.sslabel +++|        IF (FLAG NQ LABTYPE"MAN$LAB"  ##
02267  M00S02267.sslabel +++|          AND FLAG NQ LABTYPE"SCR$LAB")  ##
02268  M00S02268.sslabel +++|        THEN                         # UNKNOWN LABEL TYPE #
02269  M00S02269.sslabel +++|          BEGIN
02270  M00S02270.sslabel +++|          CALL4(REQTYP4"UNLD$CART",0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
02271  M00S02271.sslabel +++|          IF RESP$CODE NQ 0
02272  M00S02272.sslabel +++|          THEN
02273  M00S02273.sslabel +++|            BEGIN
02274  M00S02274.sslabel +++|            LBRESP(RESP$CODE,TYP"TYP4");
02275  M00S02275.sslabel +++|            RETURN;
02276  M00S02276.sslabel +++|            END
02277  M00S02277.sslabel +++|
02278  M00S02278.sslabel +++|          ERRCODE = S"UNKNWN$LAB";
02279  M00S02279.sslabel +++|          LBERR(ERRCODE);
02280  M00S02280.sslabel +++|          TEST I;
02281  M00S02281.sslabel +++|          END
02282  M00S02282.sslabel +++|
02283  M00S02283.sslabel +++|        LD$CNT = LAB$CRLD[0];        # USE OLD COUNTS #
02284  M00S02284.sslabel +++|        LD$ERR = LAB$LDER[0];
02285  M00S02285.sslabel +++|        SR$ERR = LAB$SRDE[0];
02286  M00S02286.sslabel +++|        SW$ERR = LAB$SWRE1[0];
02287  M00S02287.sslabel +++|        B<28,4>SW$ERR = LAB$SWRE;
02288  M00S02288.sslabel +++|        HR$ERR = LAB$HRDE[0];
02289  M00S02289.sslabel +++|        STR$RD = LAB$STRD[0];
02290  M00S02290.sslabel +++|        STR$WR = LAB$STWR1[0];
02291  M00S02291.sslabel +++|        B<36,24>STR$WR = LAB$STWR[0];
02292  M00S02292.sslabel +++|        STR$DM = LAB$STDM[0];
02293  M00S02293.sslabel +++|
02294  M00S02294.sslabel +++|        IF LBARG$PK[0] NQ "D"
02295  M00S02295.sslabel +++|        THEN
02296  M00S02296.sslabel +++|          BEGIN  # VERIFY VSN, Y, Z IN THE LABEL #
02297  M00S02297.sslabel +++|          P<LABEL$CART> = OLDLABP;
02298  M00S02298.sslabel +++|          P<SMUMAP> = LOC(PK$CSU$ENT[0]);
02299  M00S02299.sslabel +++|          IF LAB$CSND[0] NQ CM$CSND[0]  ##
02300  M00S02300.sslabel +++|            AND (LAB$Y[0] NQ PK$Y[0] OR LAB$Z[0] NQ PK$Z[0])
02301  M00S02301.sslabel +++|          THEN
02302  M00S02302.sslabel +++|            BEGIN  # TEST Y,Z #
02303  M00S02303.sslabel +++|            REQCODE = REQTYP4"UNLD$CART";
02304  M00S02304.sslabel +++|            CALL4(REQCODE,0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
02305  M00S02305.sslabel +++|            IF RESP$CODE NQ RESPTYP4"OK4"
02306  M00S02306.sslabel +++|            THEN
02307  M00S02307.sslabel +++|              BEGIN
02308  M00S02308.sslabel +++|              LBRESP(RESP$CODE,TYP"TYP4");
02309  M00S02309.sslabel +++|              RETURN;
02310  M00S02310.sslabel +++|              END
02311  M00S02311.sslabel +++|
02312  M00S02312.sslabel +++|            ERRCODE = S"M86$HARDWR";  # MSF HARDWARE PROBLEM #
02313  M00S02313.sslabel +++|            LBERR(ERRCODE);
02314  M00S02314.sslabel +++|            RETURN;
02315  M00S02315.sslabel +++|            END  # TEST Y,Z #
02316  M00S02316.sslabel +++|
02317  M00S02317.sslabel +++|          END  # VERIFY VSN, Y, Z IN THE LABEL #
02318  M00S02318.sslabel +++|
02319  M00S02319.sslabel +++|#
02320  M00S02320.sslabel +++|*     GENERATE NEW CARTRIDGE LABEL
02321  M00S02321.sslabel +++|#
02322  M00S02322.sslabel +++|
02323  M00S02323.sslabel +++|        IF LBARG$PT[0] EQ "P"
02324  M00S02324.sslabel +++|        THEN                         # SET UP SCRATCH LABEL #
02325  M00S02325.sslabel +++|          BEGIN
02326  M00S02326.sslabel +++|          GENLAB(LABTYPE"SCR$LAB",PT$CSU$ENT[0],LD$CNT,LD$ERR, SR$ERR,
02327  M00S02327.sslabel +++|            SW$ERR,HR$ERR,STR$RD,STR$WR,STR$DM);
02328  M00S02328.sslabel +++|          END
02329  M00S02329.sslabel +++|
02330  M00S02330.sslabel +++|        ELSE                         # SET UP FAMILY LABEL #
02331  M00S02331.sslabel +++|          BEGIN
02332  M00S02332.sslabel +++|          GENLAB(LABTYPE"FAM$LAB",PT$CSU$ENT[0],LD$CNT,LD$ERR, SR$ERR,
02333  M00S02333.sslabel +++|            SW$ERR,HR$ERR,STR$RD,STR$WR,STR$DM);
02334  M00S02334.sslabel +++|          END
02335  M00S02335.sslabel +++|
02336  M00S02336.sslabel +++|#
02337  M00S02337.sslabel +++|*     UPDATE THE CARTRIDGE LOAD AND PASS COUNTS IN THE
02338  M00S02338.sslabel +++|*     NEW LABEL.
02339  M00S02339.sslabel +++|#
02340  M00S02340.sslabel +++|
02341  M00S02341.sslabel +++|        P<LABEL$CART> = NEWLABP;
02342  M00S02342.sslabel +++|        LAB$CRLD[0] = LAB$CRLD[0] + 1;
02343  M00S02343.sslabel +++|        IF B<0,8>LAB$CSN[0] NQ X"C9"  ##
02344  M00S02344.sslabel +++|          OR B<8,8>LAB$CSN[0] NQ X"C2" OR B<16,8>LAB$CSN[0] NQ X"D4"
02345  M00S02345.sslabel +++|          THEN                       # CARTRIDGE NOT IBM #
02346  M00S02346.sslabel +++|          BEGIN
02347  M00S02347.sslabel +++|          LAB$CCOD[0] = OTHCART;
02348  M00S02348.sslabel +++|          END
02349  M00S02349.sslabel +++|
02350  M00S02350.sslabel +++|        ELSE
02351  M00S02351.sslabel +++|          BEGIN
02352  M00S02352.sslabel +++|          LAB$CCOD[0] = IBMCART;
02353  M00S02353.sslabel +++|          END
02354  M00S02354.sslabel +++|
02355  M00S02355.sslabel +++|
02356  M00S02356.sslabel +++|#
02357  M00S02357.sslabel +++|*     IF THE CARTRIDGE IS FROM THE INPUT DRAWER, ENSURE THAT
02358  M00S02358.sslabel +++|*     THE VSN IS NOT ALREADY IN THE SMUMAP.
02359  M00S02359.sslabel +++|#
02360  M00S02360.sslabel +++|
02361  M00S02361.sslabel +++|        IF LBARG$PK[0] EQ "D"
02362  M00S02362.sslabel +++|        THEN
02363  M00S02363.sslabel +++|          BEGIN  # CHECK FOR DUPLICATE VSN #
02364  M00S02364.sslabel +++|          SERTYPE = S"CSN$MATCH";
02365  M00S02365.sslabel +++|          SERCSU(SERTYPE,0,0,0,LAB$CSND[0],0,0, PK$CSU$ENT[0],SERFLAG)
02366  M00S02366.sslabel +++|            ;
02367  M00S02367.sslabel +++|          IF NOT SERFLAG
02368  M00S02368.sslabel +++|          THEN                       # VSN ALREADY IN SMMAP #
02369  M00S02369.sslabel +++|            BEGIN
02370  M00S02370.sslabel +++|            REQCODE = REQTYP4"UNLD$CART";
02371  M00S02371.sslabel +++|            CALL4(REQCODE,0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
02372  M00S02372.sslabel +++|            IF RESP$CODE NQ RESPTYP4"OK4"
02373  M00S02373.sslabel +++|            THEN
02374  M00S02374.sslabel +++|              BEGIN
02375  M00S02375.sslabel +++|              LBRESP(RESP$CODE,TYP"TYP4");
02376  M00S02376.sslabel +++|              RETURN;
02377  M00S02377.sslabel +++|              END
02378  M00S02378.sslabel +++|
02379  M00S02379.sslabel +++|            ERRCODE = S"DUPL$CSN";
02380  M00S02380.sslabel +++|            LBERR(ERRCODE);
02381  M00S02381.sslabel +++|            RETURN;
02382  M00S02382.sslabel +++|            END
02383  M00S02383.sslabel +++|
02384  M00S02384.sslabel +++|          END  # CHECK FOR DUPLICATE VSN #
02385  M00S02385.sslabel +++|
02386  M00S02386.sslabel +++|
02387  M00S02387.sslabel +++|#
02388  M00S02388.sslabel +++|*     IF CARTRIDGE PICKED FROM POOL, UPDATE SMMAP ENTRY AND AST FOR
02389  M00S02389.sslabel +++|*     NOW EMPTY CUBE IN POOL.
02390  M00S02390.sslabel +++|#
02391  M00S02391.sslabel +++|
02392  M00S02392.sslabel +++|        IF LBARG$PK[0] NQ "D"
02393  M00S02393.sslabel +++|        THEN                         # PICKED FROM POOL #
02394  M00S02394.sslabel +++|          BEGIN
02395  M00S02395.sslabel +++|          P<SMUMAP> = LOC(PK$CSU$ENT[0]);
02396  M00S02396.sslabel +++|        CM$CCOD[0] = " ";
02397  M00S02397.sslabel +++|          CM$CSND[0] = " ";          # CLEAR VSN FIELD #
02398  M00S02398.sslabel +++|          CALL3(REQTYP3"UPD$MAP",PK$CSU$ENT[0],0,0,FLAG);
02399  M00S02399.sslabel +++|          IF FLAG NQ RESPTYP3"OK3"
02400  M00S02400.sslabel +++|          THEN                       # MAP UPDATE FAILS #
02401  M00S02401.sslabel +++|            BEGIN
02402  M00S02402.sslabel +++|            REQCODE = REQTYP4"UNLD$CART";
02403  M00S02403.sslabel +++|            CALL4(REQCODE,0,0,PK$Y[0],PK$Z[0],RESP$CODE);
02404  M00S02404.sslabel +++|            IF RESP$CODE NQ RESPTYP4"OK4"
02405  M00S02405.sslabel +++|            THEN
02406  M00S02406.sslabel +++|              BEGIN
02407  M00S02407.sslabel +++|              LBRESP(RESP$CODE,TYP"TYP4");
02408  M00S02408.sslabel +++|              RETURN;
02409  M00S02409.sslabel +++|              END
02410  M00S02410.sslabel +++|
02411  M00S02411.sslabel +++|            LBRESP(FLAG,TYP"TYP3");  # PROCESS ERROR CODE #
02412  M00S02412.sslabel +++|            RETURN;
02413  M00S02413.sslabel +++|            END
02414  M00S02414.sslabel +++|
02415  M00S02415.sslabel +++|          END
02416  M00S02416.sslabel +++|
02417  M00S02417.sslabel +++|#
02418  M00S02418.sslabel +++|*     WRITE NEW LABEL.
02419  M00S02419.sslabel +++|#
02420  M00S02420.sslabel +++|
02421  M00S02421.sslabel +++|        CALL4(REQTYP4"WRT$LAB",DRD$NUM,CART$CSN,PT$Y[0],PT$Z[0], FLAG)
02422  M00S02422.sslabel +++|          ;
02423  M00S02423.sslabel +++|        IF FLAG NQ RESPTYP4"OK4"
02424  M00S02424.sslabel +++|        THEN                         # WRITE FAILS #
02425  M00S02425.sslabel +++|          BEGIN
02426  M00S02426.sslabel +++|          LBRESP(FLAG,TYP"TYP4");    # PROCESS THE RESPONSE CODE #
02427  M00S02427.sslabel +++|          RETURN;
02428  M00S02428.sslabel +++|          END
02429  M00S02429.sslabel +++|
02430  M00S02430.sslabel +++|#
02431  M00S02431.sslabel +++|*     UPDATE SMMAP ENTRY FOR NEW LOCATION OF CARTRIDGE.
02432  M00S02432.sslabel +++|#
02433  M00S02433.sslabel +++|
02434  M00S02434.sslabel +++|        P<SMUMAP> = LOC(PT$CSU$ENT[0]);
02435  M00S02435.sslabel +++|        IF LBARG$PT[0] EQ "P"
02436  M00S02436.sslabel +++|        THEN                         # ADD CARTRIDGE TO POOL #
02437  M00S02437.sslabel +++|          BEGIN
02438  M00S02438.sslabel +++|          P<LABEL$CART> = NEWLABP;
02439  M00S02439.sslabel +++|          CM$CCOD[0] = LAB$CCOD[0];
02440  M00S02440.sslabel +++|          CM$CSND[0] = LAB$CSND[0];  # UPDATE VSN IN MAP ENTRY #
02441  M00S02441.sslabel +++|          CALL3(REQTYP3"UPD$MAP",PT$CSU$ENT[0],0,0,FLAG);
02442  M00S02442.sslabel +++|          END
02443  M00S02443.sslabel +++|
02444  M00S02444.sslabel +++|        IF LBARG$PT[0] EQ "F"
02445  M00S02445.sslabel +++|        THEN                         # ADD CARTRIDGE TO FAMILY #
02446  M00S02446.sslabel +++|          BEGIN
02447  M00S02447.sslabel +++|          CALL3(REQTYP3"ADD$CART",PT$CSU$ENT[0],0,0,FLAG);
02448  M00S02448.sslabel +++|          END
02449  M00S02449.sslabel +++|
02450  M00S02450.sslabel +++|        IF FLAG NQ RESPTYP3"OK3"
02451  M00S02451.sslabel +++|        THEN                         # ADD TO FAMILY FAILS #
02452  M00S02452.sslabel +++|          BEGIN
02453  M00S02453.sslabel +++|          LBRESP(FLAG,TYP"TYP3");    # PROCESS THE RESPONSE CODE #
02454  M00S02454.sslabel +++|          RETURN;
02455  M00S02455.sslabel +++|          END
02456  M00S02456.sslabel +++|
02457  M00S02457.sslabel +++|
02458  M00S02458.sslabel +++|
02459  M00S02459.sslabel +++|        MFLUSH;                      # FLUSH MAP BUFFER #
02460  M00S02460.sslabel +++|        END  # LBADMSC PROCESSING #
02461  M00S02461.sslabel +++|
02462  M00S02462.sslabel +++|      RETURN;
02463  M00S02463.sslabel +++|
02464  M00S02464.sslabel +++|      END  # LBADMSC #
02465  M00S02465.sslabel +++|
02466  M00S02466.sslabel +++|    TERM
02467  M00S02467.sslabel +++|PROC LBCONV(FLAG);
02468  M00S02468.sslabel +++|# TITLE LBCONV - CONVERT CRACKED PARAMETERS TO INTEGERS.              #
02469  M00S02469.sslabel +++|
02470  M00S02470.sslabel +++|      BEGIN  # LBCONV #
02471  M00S02471.sslabel +++|
02472  M00S02472.sslabel +++|#
02473  M00S02473.sslabel +++|**    LBCONV - CONVERT CRACKED PARAMETERS TO INTEGERS.
02474  M00S02474.sslabel +++|*
02475  M00S02475.sslabel +++|*     THIS PROCEDURE CALLS *XDXB* TO CONVERT THE PARAMETERS
02476  M00S02476.sslabel +++|*     IN DISPLAY CODE TO INTEGER VALUES.
02477  M00S02477.sslabel +++|*
02478  M00S02478.sslabel +++|*     PROC LBCONV(FLAG)
02479  M00S02479.sslabel +++|*
02480  M00S02480.sslabel +++|*     ENTRY  DIRECTIVE PARAMETERS CRACKED AND
02481  M00S02481.sslabel +++|*            PLACED IN COMMON AREA *ULBPCOM*.
02482  M00S02482.sslabel +++|*
02483  M00S02483.sslabel +++|*     EXIT   ALL THE PARAMETERS CONVERTED AND PLACED
02484  M00S02484.sslabel +++|*            BACK IN *ULBPCOM*.
02485  M00S02485.sslabel +++|*            FLAG, AN ITEM CONTAINING THE ERROR STATUS.
02486  M00S02486.sslabel +++|*               0, NO ERROR
02487  M00S02487.sslabel +++|*               1, CONVERSION ERROR
02488  M00S02488.sslabel +++|*
02489  M00S02489.sslabel +++|*     NOTES  PROC *LBCONV* CONVERTS EACH CRACKED
02490  M00S02490.sslabel +++|*            PARAMETER FROM DISPLAY CODE TO INTEGER
02491  M00S02491.sslabel +++|*            VALUE AND REPLACES IT BACK IN ITS
02492  M00S02492.sslabel +++|*            ORIGINAL LOCATION.  ANY PARAMETER NOT
02493  M00S02493.sslabel +++|*            SPECIFIED IS SUBSTITUTED WITH ITS
02494  M00S02494.sslabel +++|*            DEFAULT VALUE.
02495  M00S02495.sslabel +++|#
02496  M00S02496.sslabel +++|
02497  M00S02497.sslabel +++|      ITEM FLAG       I;             # ERROR STATUS #
02498  M00S02498.sslabel +++|
02499  M00S02499.sslabel +++|#
02500  M00S02500.sslabel +++|****  PROC LBCONV - XREF LIST BEGIN.
02501  M00S02501.sslabel +++|#
02502  M00S02502.sslabel +++|
02503  M00S02503.sslabel +++|      XREF
02504  M00S02504.sslabel +++|        BEGIN
02505  M00S02505.sslabel +++|        FUNC XDXB   I;               # CONVERT DISPLAY TO INTEGER #
02506  M00S02506.sslabel +++|        END
02507  M00S02507.sslabel +++|
02508  M00S02508.sslabel +++|#
02509  M00S02509.sslabel +++|****  PROC LBCONV - XREF LIST END.
02510  M00S02510.sslabel +++|#
02511  M00S02511.sslabel +++|
02512  M00S02512.sslabel +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
02513  M00S02513.sslabel +++|*CALL COMBFAS
02514  M00S02514.sslabel +++|*CALL COMTLAB
02515  M00S02515.sslabel +++|*CALL COMTLBP
02516  M00S02516.sslabel +++|
02517  M00S02517.sslabel +++|      ITEM TEMPR      I;             # TEMP ITEM #
02518  M00S02518.sslabel +++|      ITEM TYPE       I;             # TYPE OF CONVERSION #
02519  M00S02519.sslabel +++|
02520  M00S02520.sslabel +++|                                               CONTROL EJECT;
02521  M00S02521.sslabel +++|
02522  M00S02522.sslabel +++|      TYPE = 1;                      # CONVERT FROM DISPLAY CODE TO
02523  M00S02523.sslabel +++|                                       INTEGER VALUE #
02524  M00S02524.sslabel +++|
02525  M00S02525.sslabel +++|#
02526  M00S02526.sslabel +++|*     CHECK THE VALUE OF *N*.
02527  M00S02527.sslabel +++|#
02528  M00S02528.sslabel +++|
02529  M00S02529.sslabel +++|      IF LBARG$N[0] EQ 0
02530  M00S02530.sslabel +++|      THEN                           # N OMITTED #
02531  M00S02531.sslabel +++|        BEGIN
02532  M00S02532.sslabel +++|        LBARG$N[0] = 1;              # SET DEFAULT VALUE #
02533  M00S02533.sslabel +++|        END
02534  M00S02534.sslabel +++|
02535  M00S02535.sslabel +++|      IF LBARG$N[0] NQ 1
02536  M00S02536.sslabel +++|      THEN                           # N SPECIFIED #
02537  M00S02537.sslabel +++|        BEGIN
02538  M00S02538.sslabel +++|        FLAG = XDXB(LBARG$N[0],TYPE,TEMPR);
02539  M00S02539.sslabel +++|        IF FLAG NQ 0
02540  M00S02540.sslabel +++|        THEN                         # CONVERSION ERROR #
02541  M00S02541.sslabel +++|          BEGIN
02542  M00S02542.sslabel +++|          RETURN;
02543  M00S02543.sslabel +++|          END
02544  M00S02544.sslabel +++|
02545  M00S02545.sslabel +++|        LBARG$N[0] = TEMPR;          # RESET N #
02546  M00S02546.sslabel +++|        END
02547  M00S02547.sslabel +++|
02548  M00S02548.sslabel +++|#
02549  M00S02549.sslabel +++|*     CHECK THE VALUE OF *B*.
02550  M00S02550.sslabel +++|#
02551  M00S02551.sslabel +++|
02552  M00S02552.sslabel +++|      IF LBARG$B[0] EQ 0
02553  M00S02553.sslabel +++|      THEN                           # SET DEFAULT #
02554  M00S02554.sslabel +++|        BEGIN
02555  M00S02555.sslabel +++|        LBARG$B[0] = 600;
02556  M00S02556.sslabel +++|        END
02557  M00S02557.sslabel +++|
02558  M00S02558.sslabel +++|      IF LBARG$B[0] NQ 600
02559  M00S02559.sslabel +++|      THEN                           # *B* IS SPECIFIED #
02560  M00S02560.sslabel +++|        BEGIN
02561  M00S02561.sslabel +++|        FLAG = XDXB(LBARG$B[0],TYPE,TEMPR);
02562  M00S02562.sslabel +++|        IF FLAG NQ 0
02563  M00S02563.sslabel +++|        THEN                         # CONVERSION ERROR #
02564  M00S02564.sslabel +++|          BEGIN
02565  M00S02565.sslabel +++|          RETURN;
02566  M00S02566.sslabel +++|          END
02567  M00S02567.sslabel +++|
02568  M00S02568.sslabel +++|        LBARG$B[0] = TEMPR;          # RESET *B* #
02569  M00S02569.sslabel +++|        END
02570  M00S02570.sslabel +++|
02571  M00S02571.sslabel +++|#
02572  M00S02572.sslabel +++|*     SET THE VALUE OF *CC*.
02573  M00S02573.sslabel +++|#
02574  M00S02574.sslabel +++|
02575  M00S02575.sslabel +++|      IF LBARG$CC[0] NQ 0
02576  M00S02576.sslabel +++|      THEN
02577  M00S02577.sslabel +++|        BEGIN
02578  M00S02578.sslabel +++|        IF C<0,1>LBARG$CC[0] EQ "A"
02579  M00S02579.sslabel +++|        THEN
02580  M00S02580.sslabel +++|          BEGIN
02581  M00S02581.sslabel +++|          LBARG$CC[0] = 0;
02582  M00S02582.sslabel +++|          END
02583  M00S02583.sslabel +++|
02584  M00S02584.sslabel +++|        IF C<0,1>LBARG$CC[0] EQ "B"
02585  M00S02585.sslabel +++|        THEN
02586  M00S02586.sslabel +++|          BEGIN
02587  M00S02587.sslabel +++|          LBARG$CC[0] = 15;
02588  M00S02588.sslabel +++|          END
02589  M00S02589.sslabel +++|
02590  M00S02590.sslabel +++|
02591  M00S02591.sslabel +++|        END
02592  M00S02592.sslabel +++|
02593  M00S02593.sslabel +++|      ELSE
02594  M00S02594.sslabel +++|        BEGIN
02595  M00S02595.sslabel +++|        LBARG$CC[0] = -1;
02596  M00S02596.sslabel +++|        END
02597  M00S02597.sslabel +++|
02598  M00S02598.sslabel +++|
02599  M00S02599.sslabel +++|
02600  M00S02600.sslabel +++|#
02601  M00S02601.sslabel +++|*     CHECK THE VALUE OF *CC*.
02602  M00S02602.sslabel +++|#
02603  M00S02603.sslabel +++|
02604  M00S02604.sslabel +++|      IF LBARG$CM[0] EQ 0
02605  M00S02605.sslabel +++|      THEN
02606  M00S02606.sslabel +++|        BEGIN
02607  M00S02607.sslabel +++|        LBARG$CM[0] = IBMCART;
02608  M00S02608.sslabel +++|        END
02609  M00S02609.sslabel +++|
02610  M00S02610.sslabel +++|      ELSE
02611  M00S02611.sslabel +++|        BEGIN
02612  M00S02612.sslabel +++|        B<6,6>LBARG$CM[0] = "-";
02613  M00S02613.sslabel +++|        END
02614  M00S02614.sslabel +++|
02615  M00S02615.sslabel +++|
02616  M00S02616.sslabel +++|
02617  M00S02617.sslabel +++|#
02618  M00S02618.sslabel +++|*     CHECK THE VALUE OF *GR*.
02619  M00S02619.sslabel +++|#
02620  M00S02620.sslabel +++|
02621  M00S02621.sslabel +++|      IF LBARG$GR[0] NQ 7777
02622  M00S02622.sslabel +++|      THEN                           # VALUE IS SPECIFIED #
02623  M00S02623.sslabel +++|        BEGIN
02624  M00S02624.sslabel +++|        FLAG = XDXB(LBARG$GR[0],TYPE,TEMPR);
02625  M00S02625.sslabel +++|        IF FLAG NQ 0
02626  M00S02626.sslabel +++|        THEN                         # CONVERSION ERROR #
02627  M00S02627.sslabel +++|          BEGIN
02628  M00S02628.sslabel +++|          RETURN;
02629  M00S02629.sslabel +++|          END
02630  M00S02630.sslabel +++|
02631  M00S02631.sslabel +++|        LBARG$GR[0] = TEMPR;         # RESET *GR* #
02632  M00S02632.sslabel +++|        END
02633  M00S02633.sslabel +++|
02634  M00S02634.sslabel +++|      ELSE                           # *GR* NOT SPECIFIED #
02635  M00S02635.sslabel +++|        BEGIN
02636  M00S02636.sslabel +++|        LBARG$GR[0] = -1;
02637  M00S02637.sslabel +++|        END
02638  M00S02638.sslabel +++|
02639  M00S02639.sslabel +++|
02640  M00S02640.sslabel +++|#
02641  M00S02641.sslabel +++|*      CHECK THE VALUE OF *YI*.
02642  M00S02642.sslabel +++|#
02643  M00S02643.sslabel +++|
02644  M00S02644.sslabel +++|      IF LBARG$YI[0] NQ 0 AND LBARG$YI[0] NQ O"7777"
02645  M00S02645.sslabel +++|      THEN
02646  M00S02646.sslabel +++|        BEGIN
02647  M00S02647.sslabel +++|        FLAG = XDXB(LBARG$YI[0],TYPE,TEMPR);
02648  M00S02648.sslabel +++|        IF FLAG NQ 0
02649  M00S02649.sslabel +++|        THEN                         # CONVERSION ERROR #
02650  M00S02650.sslabel +++|          BEGIN
02651  M00S02651.sslabel +++|          RETURN;
02652  M00S02652.sslabel +++|          END
02653  M00S02653.sslabel +++|
02654  M00S02654.sslabel +++|        LBARG$YI[0] = TEMPR;         # RESET *YI* #
02655  M00S02655.sslabel +++|        END
02656  M00S02656.sslabel +++|
02657  M00S02657.sslabel +++|      ELSE
02658  M00S02658.sslabel +++|        BEGIN
02659  M00S02659.sslabel +++|        IF LBARG$YI[0] EQ 0
02660  M00S02660.sslabel +++|        THEN                         # *YI* OMITTED #
02661  M00S02661.sslabel +++|          BEGIN
02662  M00S02662.sslabel +++|          LBARG$YI[0] = -1;          # SET DEFAULT VALUE #
02663  M00S02663.sslabel +++|          END
02664  M00S02664.sslabel +++|
02665  M00S02665.sslabel +++|        END
02666  M00S02666.sslabel +++|
02667  M00S02667.sslabel +++|#
02668  M00S02668.sslabel +++|*     CHECK THE VALUE OF *YF*.
02669  M00S02669.sslabel +++|#
02670  M00S02670.sslabel +++|
02671  M00S02671.sslabel +++|      IF LBARG$YF[0] NQ 0            ##
02672  M00S02672.sslabel +++|        AND LBARG$YF[0] NQ O"7777"
02673  M00S02673.sslabel +++|      THEN
02674  M00S02674.sslabel +++|        BEGIN
02675  M00S02675.sslabel +++|        FLAG = XDXB(LBARG$YF[0],TYPE,TEMPR);
02676  M00S02676.sslabel +++|        IF FLAG NQ 0
02677  M00S02677.sslabel +++|        THEN                         # CONVERSION ERROR #
02678  M00S02678.sslabel +++|          BEGIN
02679  M00S02679.sslabel +++|          RETURN;
02680  M00S02680.sslabel +++|          END
02681  M00S02681.sslabel +++|
02682  M00S02682.sslabel +++|        LBARG$YF[0] = TEMPR;         # RESET *YF* #
02683  M00S02683.sslabel +++|        END
02684  M00S02684.sslabel +++|
02685  M00S02685.sslabel +++|      ELSE
02686  M00S02686.sslabel +++|        BEGIN
02687  M00S02687.sslabel +++|        IF LBARG$YF[0] EQ 0
02688  M00S02688.sslabel +++|        THEN                         # *YF* OMITTED #
02689  M00S02689.sslabel +++|          BEGIN
02690  M00S02690.sslabel +++|          LBARG$YF[0] = -1;          # SET DEFAULT VALUE #
02691  M00S02691.sslabel +++|          END
02692  M00S02692.sslabel +++|
02693  M00S02693.sslabel +++|        END
02694  M00S02694.sslabel +++|
02695  M00S02695.sslabel +++|#
02696  M00S02696.sslabel +++|*     CHECK THE VALUE OF *ZI*.
02697  M00S02697.sslabel +++|#
02698  M00S02698.sslabel +++|
02699  M00S02699.sslabel +++|      IF LBARG$ZI[0] NQ 0 AND LBARG$ZI[0] NQ O"7777"
02700  M00S02700.sslabel +++|      THEN
02701  M00S02701.sslabel +++|        BEGIN
02702  M00S02702.sslabel +++|        FLAG = XDXB(LBARG$ZI[0],TYPE,TEMPR);
02703  M00S02703.sslabel +++|        IF FLAG NQ 0
02704  M00S02704.sslabel +++|        THEN                         # CONVERSION ERROR #
02705  M00S02705.sslabel +++|          BEGIN
02706  M00S02706.sslabel +++|          RETURN;
02707  M00S02707.sslabel +++|          END
02708  M00S02708.sslabel +++|
02709  M00S02709.sslabel +++|        LBARG$ZI[0] = TEMPR;         # RESET *ZI* #
02710  M00S02710.sslabel +++|        END
02711  M00S02711.sslabel +++|
02712  M00S02712.sslabel +++|      ELSE
02713  M00S02713.sslabel +++|        BEGIN
02714  M00S02714.sslabel +++|        IF LBARG$ZI[0] EQ 0
02715  M00S02715.sslabel +++|        THEN                         # *ZI* OMITTED #
02716  M00S02716.sslabel +++|          BEGIN
02717  M00S02717.sslabel +++|          LBARG$ZI[0] = -1;          # SET DEFAULT VALUE #
02718  M00S02718.sslabel +++|          END
02719  M00S02719.sslabel +++|
02720  M00S02720.sslabel +++|        END
02721  M00S02721.sslabel +++|
02722  M00S02722.sslabel +++|#
02723  M00S02723.sslabel +++|*     CHECK THE VALUE OF *ZF*.
02724  M00S02724.sslabel +++|#
02725  M00S02725.sslabel +++|
02726  M00S02726.sslabel +++|      IF LBARG$ZF[0] NQ 0 AND LBARG$ZF[0] NQ O"7777"
02727  M00S02727.sslabel +++|      THEN
02728  M00S02728.sslabel +++|        BEGIN
02729  M00S02729.sslabel +++|        FLAG = XDXB(LBARG$ZF[0],TYPE,TEMPR);
02730  M00S02730.sslabel +++|        IF FLAG NQ 0
02731  M00S02731.sslabel +++|        THEN                         # CONVERSION ERROR #
02732  M00S02732.sslabel +++|          BEGIN
02733  M00S02733.sslabel +++|          RETURN;
02734  M00S02734.sslabel +++|          END
02735  M00S02735.sslabel +++|
02736  M00S02736.sslabel +++|        LBARG$ZF[0] = TEMPR;         # RESET *ZF* #
02737  M00S02737.sslabel +++|        END
02738  M00S02738.sslabel +++|
02739  M00S02739.sslabel +++|      ELSE
02740  M00S02740.sslabel +++|        BEGIN
02741  M00S02741.sslabel +++|        IF LBARG$ZF[0] EQ 0
02742  M00S02742.sslabel +++|        THEN                         # *ZF* OMITTED #
02743  M00S02743.sslabel +++|          BEGIN
02744  M00S02744.sslabel +++|          LBARG$ZF[0] = -1;          # SET DEFAULT VALUE #
02745  M00S02745.sslabel +++|          END
02746  M00S02746.sslabel +++|
02747  M00S02747.sslabel +++|        END
02748  M00S02748.sslabel +++|
02749  M00S02749.sslabel +++|#
02750  M00S02750.sslabel +++|*     CHECK THE VALUE OF *SB*.
02751  M00S02751.sslabel +++|#
02752  M00S02752.sslabel +++|
02753  M00S02753.sslabel +++|      IF LBARG$SB[0] NQ 0
02754  M00S02754.sslabel +++|      THEN
02755  M00S02755.sslabel +++|        BEGIN
02756  M00S02756.sslabel +++|        FLAG = XDXB(LBARG$SB[0],TYPE,TEMPR);
02757  M00S02757.sslabel +++|        IF FLAG NQ 0
02758  M00S02758.sslabel +++|        THEN                         # CONVERSION ERROR #
02759  M00S02759.sslabel +++|          BEGIN
02760  M00S02760.sslabel +++|          RETURN;
02761  M00S02761.sslabel +++|          END
02762  M00S02762.sslabel +++|
02763  M00S02763.sslabel +++|        LBARG$SB[0] = TEMPR;         # RESET *SB* #
02764  M00S02764.sslabel +++|        END
02765  M00S02765.sslabel +++|
02766  M00S02766.sslabel +++|#
02767  M00S02767.sslabel +++|*     CHECK *CN* AND *PK*.
02768  M00S02768.sslabel +++|#
02769  M00S02769.sslabel +++|
02770  M00S02770.sslabel +++|      IF LBARG$C[0] EQ 0 AND LBARG$PK[0] EQ 0
02771  M00S02771.sslabel +++|      THEN
02772  M00S02772.sslabel +++|        BEGIN
02773  M00S02773.sslabel +++|        LBARG$PK[0] = "P";
02774  M00S02774.sslabel +++|        END
02775  M00S02775.sslabel +++|
02776  M00S02776.sslabel +++|#
02777  M00S02777.sslabel +++|*     CHECK *PT*.
02778  M00S02778.sslabel +++|#
02779  M00S02779.sslabel +++|
02780  M00S02780.sslabel +++|      IF LBARG$PT[0] EQ 0
02781  M00S02781.sslabel +++|      THEN
02782  M00S02782.sslabel +++|        BEGIN
02783  M00S02783.sslabel +++|        LBARG$PT[0] = "P";
02784  M00S02784.sslabel +++|        END
02785  M00S02785.sslabel +++|
02786  M00S02786.sslabel +++|#
02787  M00S02787.sslabel +++|*     CHECK *SM*.
02788  M00S02788.sslabel +++|#
02789  M00S02789.sslabel +++|
02790  M00S02790.sslabel +++|      IF LBARG$SM[0] EQ 0
02791  M00S02791.sslabel +++|      THEN
02792  M00S02792.sslabel +++|        BEGIN
02793  M00S02793.sslabel +++|        LBARG$SM[0] = "A";
02794  M00S02794.sslabel +++|        END
02795  M00S02795.sslabel +++|
02796  M00S02796.sslabel +++|      RETURN;
02797  M00S02797.sslabel +++|
02798  M00S02798.sslabel +++|      END  # LBCONV #
02799  M00S02799.sslabel +++|
02800  M00S02800.sslabel +++|    TERM
02801  M00S02801.sslabel +++|PROC LBERR((ERR$CODE));
02802  M00S02802.sslabel +++|# TITLE LBERR - *SSLABEL* ERROR PROCESSOR.                            #
02803  M00S02803.sslabel +++|
02804  M00S02804.sslabel +++|      BEGIN  # LBERR #
02805  M00S02805.sslabel +++|
02806  M00S02806.sslabel +++|#
02807  M00S02807.sslabel +++|**    LBERR - *SSLABEL* ERROR PROCESSOR.
02808  M00S02808.sslabel +++|*
02809  M00S02809.sslabel +++|*     THIS PROCEDURE DOES ERROR PROCESSING FOR *SSLABEL* IN
02810  M00S02810.sslabel +++|*     ACCORDANCE WITH THE VALUE OF THE ERROR CODE.
02811  M00S02811.sslabel +++|*
02812  M00S02812.sslabel +++|*     PROC LBERR((ERR$CODE))
02813  M00S02813.sslabel +++|*
02814  M00S02814.sslabel +++|*     ENTRY   ERR$CODE = STATUS ITEM INDICATING THE ERROR CODE.
02815  M00S02815.sslabel +++|*
02816  M00S02816.sslabel +++|*     EXIT    ERROR PROCESSING IS COMPLETED.  DEPENDING ON ERROR
02817  M00S02817.sslabel +++|*             TYPE, EITHER A RETURN OR AN ABORT OCCURS.
02818  M00S02818.sslabel +++|*
02819  M00S02819.sslabel +++|*     MESSAGES  SEE ARRAY *ERRMSG* FOR THE
02820  M00S02820.sslabel +++|*               DAYFILE MESSAGES.
02821  M00S02821.sslabel +++|*
02822  M00S02822.sslabel +++|*     NOTES   PROC *LBERR* IS A TABLE DRIVEN
02823  M00S02823.sslabel +++|*             ERROR PROCESSOR.  A TABLE HAS BEEN
02824  M00S02824.sslabel +++|*             PRESET WITH THE ERROR MESSAGES FOR THE
02825  M00S02825.sslabel +++|*             DIFFERENT ERROR CODES.  THE ERROR CODE
02826  M00S02826.sslabel +++|*             CORRESPONDS TO THE ORDINAL OF THE CORRE-
02827  M00S02827.sslabel +++|*             SPONDING ENTRY IN THE TABLE.  THE ACTION
02828  M00S02828.sslabel +++|*             TO BE TAKEN ON EACH ERROR CONDITION IS
02829  M00S02829.sslabel +++|*             PRESET AS STATUS VALUES INTO EACH ENTRY.
02830  M00S02830.sslabel +++|*             USING THE ERROR CODE THE CORRESPONDING
02831  M00S02831.sslabel +++|*             ENTRY IN THE TABLE IS FOUND AND THE ERROR
02832  M00S02832.sslabel +++|*             CONDITION IS PROCESSED BY USING A STATUS
02833  M00S02833.sslabel +++|*             SWITCH THAT CORRESPONDS TO THE STATUS
02834  M00S02834.sslabel +++|*             VALUES PRESET IN THE ENTRY.  THE MESSAGES
02835  M00S02835.sslabel +++|*             ARE PRINTED OUT IN THE DAYFILE AND ALSO
02836  M00S02836.sslabel +++|*             ON THE REPORT FILE IF ONE IS SPECIFIED.
02837  M00S02837.sslabel +++|#
02838  M00S02838.sslabel +++|
02839  M00S02839.sslabel +++|      ITEM ERR$CODE   U;             # ERROR CODE #
02840  M00S02840.sslabel +++|
02841  M00S02841.sslabel +++|#
02842  M00S02842.sslabel +++|****  PROC LBERR - XREF LIST BEGIN.
02843  M00S02843.sslabel +++|#
02844  M00S02844.sslabel +++|
02845  M00S02845.sslabel +++|      XREF
02846  M00S02846.sslabel +++|        BEGIN
02847  M00S02847.sslabel +++|        PROC MESSAGE;                # WRITES USER DAYFILE MESSAGE #
02848  M00S02848.sslabel +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02849  M00S02849.sslabel +++|                                       OR RETURN #
02850  M00S02850.sslabel +++|        PROC RPCLOSE;                # CLOSES OUTPUT PRINT FILE #
02851  M00S02851.sslabel +++|        PROC RPLINE;                 # WRITES PRINT LINE FOR REPORT #
02852  M00S02852.sslabel +++|        PROC RPSPACE;                # WRITES BLANK LINE ON REPORT #
02853  M00S02853.sslabel +++|        FUNC XCDD  C(10);            # CONVERT ITEMS TO DISPLAY CODE #
02854  M00S02854.sslabel +++|        END
02855  M00S02855.sslabel +++|
02856  M00S02856.sslabel +++|#
02857  M00S02857.sslabel +++|****  PROC LBERR - XREF LIST END.
02858  M00S02858.sslabel +++|#
02859  M00S02859.sslabel +++|
02860  M00S02860.sslabel +++|      DEF PROCNAME #"LBERR."#;       # PROC NAME #
02861  M00S02861.sslabel +++|
02862  M00S02862.sslabel +++|      STATUS ACTION                  # ERROR PROCESSING TO BE DONE #
02863  M00S02863.sslabel +++|        MSG,                         # DISPLAY ERROR MESSAGE #
02864  M00S02864.sslabel +++|        MSGDETL,                     # DISPLAY DETAIL ERROR MESSAGE #
02865  M00S02865.sslabel +++|        RETRN,                       # RETURN TO MAIN LOOP #
02866  M00S02866.sslabel +++|        ABRT,                        # ABORT SSLABEL #
02867  M00S02867.sslabel +++|        LSTACT;                      # END OF STATUS LIST #
02868  M00S02868.sslabel +++|
02869  M00S02869.sslabel +++|      DEF LISTCON    #0#;            # DO NOT LIST THE COMDECKS #
02870  M00S02870.sslabel +++|*CALL COMBFAS
02871  M00S02871.sslabel +++|*CALL COMTERR
02872  M00S02872.sslabel +++|*CALL COMTLAB
02873  M00S02873.sslabel +++|*CALL COMTLBP
02874  M00S02874.sslabel +++|*CALL COMTOUT
02875  M00S02875.sslabel +++|
02876  M00S02876.sslabel +++|      ITEM DIS$ASN    C(20);         # CUBES ASSIGNED (DISPLAY CODE) #
02877  M00S02877.sslabel +++|      ITEM DIS$ERR    C(20);         # ERROR CODE (DISPLAY CODE) #
02878  M00S02878.sslabel +++|      ITEM I          I;             # LOOP VARIABLE #
02879  M00S02879.sslabel +++|      ITEM STAT       U;             # ERROR TABLE ENTRY STATUS #
02880  M00S02880.sslabel +++|
02881  M00S02881.sslabel +++|#
02882  M00S02882.sslabel +++|*     THIS ARRAY IS FOR DISPLAYING DETAILED MESSAGES.
02883  M00S02883.sslabel +++|#
02884  M00S02884.sslabel +++|
02885  M00S02885.sslabel +++|      ARRAY DETAIL [0:0] P(5);       # FOR MESSAGES WITH DETAIL NO. #
02886  M00S02886.sslabel +++|        BEGIN
02887  M00S02887.sslabel +++|        ITEM DET$MSG1   C(00,00,40);  # ERROR MESSAGE #
02888  M00S02888.sslabel +++|        ITEM DET$NO     C(02,00,05);  # DETAIL NUMBER #
02889  M00S02889.sslabel +++|        ITEM DET$PRD    C(02,30,01);  # PERIOD AT END OF MESSAGE #
02890  M00S02890.sslabel +++|        ITEM DET$BLNK   C(02,36,14);  # BLANK FILL #
02891  M00S02891.sslabel +++|        ITEM DET$ZRO    U(04,00,60) = [0];  # ZERO BYTE TERMINATOR #
02892  M00S02892.sslabel +++|        END
02893  M00S02893.sslabel +++|
02894  M00S02894.sslabel +++|#
02895  M00S02895.sslabel +++|*     THIS ARRAY IS FOR DISPLAYING DIRECTIVE NUMBERS.
02896  M00S02896.sslabel +++|#
02897  M00S02897.sslabel +++|
02898  M00S02898.sslabel +++|      ARRAY DIRECTV [0:0] P(2);
02899  M00S02899.sslabel +++|        BEGIN
02900  M00S02900.sslabel +++|        ITEM DIR$MSG    C(00,00,11) = [" DIRECTIVE "];
02901  M00S02901.sslabel +++|        ITEM DIR$NO     C(01,06,03);  # DIRECTIVE NUMBER #
02902  M00S02902.sslabel +++|        ITEM DIR$PRD    C(01,24,01);  # ENDING PERIOD #
02903  M00S02903.sslabel +++|        ITEM DIRZRO     U(01,30,30) = [0];  # ZERO BYTE #
02904  M00S02904.sslabel +++|        END
02905  M00S02905.sslabel +++|
02906  M00S02906.sslabel +++|#
02907  M00S02907.sslabel +++|*     ARRAY ERRMSG IS AN ERROR TABLE IN WHICH THE ORDINAL OF EACH
02908  M00S02908.sslabel +++|*     ENTRY IS EQUAL TO THE ERROR CODE IT REPRESENTS.  EACH ENTRY
02909  M00S02909.sslabel +++|*     CONTAINS THE APPROPRIATE ERROR MESSAGE AND THE STATUS VALUES
02910  M00S02910.sslabel +++|*     WHICH CONTROL ERROR PROCESSING.
02911  M00S02911.sslabel +++|#
02912  M00S02912.sslabel +++|
02913  M00S02913.sslabel +++|      ARRAY ERRMSG [0:CODEMAX] S(6);
02914  M00S02914.sslabel +++|        BEGIN
02915  M00S02915.sslabel +++|        ITEM ERRMSSG    C(00,00,40) = [  # MESSAGE ENTRY TO BE
02916  M00S02916.sslabel +++|                                           DISPLAYED #
02917  M00S02917.sslabel +++|        " CATALOG/MAP ATTACH PROBLEM.",
02918  M00S02918.sslabel +++|        " SYNTAX ERROR IN DIRECTIVE.",
02919  M00S02919.sslabel +++|        " SYNTAX ERROR - SSLABEL ABORT.",
02920  M00S02920.sslabel +++|        " CSN NOT FOUND IN SMMAP.",
02921  M00S02921.sslabel +++|        " NO EMPTY CUBE IN FAMILY/POOL.",
02922  M00S02922.sslabel +++|        " NO CARTRIDGE AVAILABLE IN POOL.",
02923  M00S02923.sslabel +++|        " NO EMPTY CARTRIDGES AVAILABLE IN FAMILY.",
02924  M00S02924.sslabel +++|        " NO MANUFACTURER OR SCRATCH LABEL.",
02925  M00S02925.sslabel +++|        " UNEXPECTED SM, Y, Z, FAMILY OR SUBFAM.",
02926  M00S02926.sslabel +++|        " CANNOT FIX CSN FOR GOOD LABEL.",
02927  M00S02927.sslabel +++|        " UNRECOVERABLE READ ERROR.",
02928  M00S02928.sslabel +++|        " UNRECOVERABLE WRITE ERROR.",
02929  M00S02929.sslabel +++|        " EXCESSIVE PARITY ERRORS.",
02930  M00S02930.sslabel +++|        " CSN ALREADY IN SMMAP.",
02931  M00S02931.sslabel +++|        " CARTRIDGE ALREADY IN CUBE.",
02932  M00S02932.sslabel +++|        " CARTRIDGE LABEL ERROR.",
02933  M00S02933.sslabel +++|        " CARTRIDGE ALREADY IN USE.",
02934  M00S02934.sslabel +++|        " STORAGE MODULE IS TURNED OFF.",
02935  M00S02935.sslabel +++|        " CARTRIDGE NOT FOUND.",
02936  M00S02936.sslabel +++|        " CARTRIDGE NOT EMPTY.",
02937  M00S02937.sslabel +++|        " M860 HARDWARE PROBLEM.",
02938  M00S02938.sslabel +++|        " CATALOG/MAP FILE INTERLOCKED.",
02939  M00S02939.sslabel +++|        " NO SUCH SMMAP OR SUBCATALOG.",
02940  M00S02940.sslabel +++|        " CATALOG/MAP NOT OPEN.",
02941  M00S02941.sslabel +++|        " CATALOG LOST BIT MUST BE SET.",
02942  M00S02942.sslabel +++|        " CARTRIDGE PRESENT--LOST BIT SET.",
02943  M00S02943.sslabel +++|        " SUB ALREADY DEFINED.",
02944  M00S02944.sslabel +++|        " CUBES ASSIGNED TO SUB-FAMILY.",
02945  M00S02945.sslabel +++|        " INSUFFICIENT CUBES.",
02946  M00S02946.sslabel +++|        " SELECTED CUBE NOT UNASSIGNED.",
02947  M00S02947.sslabel +++|        " NO EMPTY CUBES.",
02948  M00S02948.sslabel +++|        " SELECTED CUBE NOT EMPTY.",
02949  M00S02949.sslabel +++|        " SELECTED CUBE NOT ASSIGNED AS EXPECTED.",
02950  M00S02950.sslabel +++|        " CARTRIDGE NOT ASSIGNED AS EXPECTED.",
02951  M00S02951.sslabel +++|        " UNRECOGNIZABLE LABEL.",
02952  M00S02952.sslabel +++|        " NO MATCH ON FAMILY/SUBFAMILY.",
02953  M00S02953.sslabel +++|        " INCORRECT CSN.",
02954  M00S02954.sslabel +++|        " ADDCUBE - ONLY 100 LOCATIONS PROCESSED.",
02955  M00S02955.sslabel +++|        " INCORRECT N.",
02956  M00S02956.sslabel +++|        " CSN OPTION VIOLATED.",
02957  M00S02957.sslabel +++|        " PK,PT OPTION VIOLATED.",
02958  M00S02958.sslabel +++|        " LT OPTION NOT SPECIFIED CORRECTLY.",
02959  M00S02959.sslabel +++|        " INCORRECT SM NUMBER.",
02960  M00S02960.sslabel +++|        " Y,Z OPTION VIOLATED.",
02961  M00S02961.sslabel +++|        " INCORRECT SUBFAMILY.",
02962  M00S02962.sslabel +++|        " ON,OF NOT SPECIFIED CORRECTLY.",
02963  M00S02963.sslabel +++|        " INCORRECT DIRECTIVE.",
02964  M00S02964.sslabel +++|        " GR PARAMETER USED INCORRECTLY.",
02965  M00S02965.sslabel +++|        " GR PARAMETER OUT OF RANGE.",
02966  M00S02966.sslabel +++|        " B PARAMETER USED INCORRECTLY.",
02967  M00S02967.sslabel +++|        " B PARAMETER OUT OF RANGE.",
02968  M00S02968.sslabel +++|        " NO EMPTY CARTRIDGES IN GROUP." ];
02969  M00S02969.sslabel +++|        ITEM ERRZERO    U(04,00,60) = [0,
02970  M00S02970.sslabel +++|        CODEMAX(0)];
02971  M00S02971.sslabel +++|        ITEM ERRSTATW   U(05,00,60);  # PROCESSING TO BE DONE #
02972  M00S02972.sslabel +++|
02973  M00S02973.sslabel +++|#
02974  M00S02974.sslabel +++|*     TYPE OF MESSAGE TO BE PRINTED.
02975  M00S02975.sslabel +++|#
02976  M00S02976.sslabel +++|
02977  M00S02977.sslabel +++|        ITEM ERRSTAT1   S:ACTION (05,00,06) = [  4(S"MSG"),
02978  M00S02978.sslabel +++|        3(S"MSGDETL"),
02979  M00S02979.sslabel +++|        11(S"MSG"),
02980  M00S02980.sslabel +++|        1(S"MSGDETL"),
02981  M00S02981.sslabel +++|        9(S"MSG"),
02982  M00S02982.sslabel +++|        5(S"MSGDETL"),
02983  M00S02983.sslabel +++|        15(S"MSG"),
02984  M00S02984.sslabel +++|        5(S"MSGDETL") ];
02985  M00S02985.sslabel +++|
02986  M00S02986.sslabel +++|#
02987  M00S02987.sslabel +++|*     ACTION TO BE TAKEN AFTER PRINTING MESSAGE.
02988  M00S02988.sslabel +++|#
02989  M00S02989.sslabel +++|
02990  M00S02990.sslabel +++|        ITEM ERRSTAT2   S:ACTION (05,06,06) = [   S"ABRT",
02991  M00S02991.sslabel +++|        S"RETRN",
02992  M00S02992.sslabel +++|        35(S"ABRT"),
02993  M00S02993.sslabel +++|        15(S"RETRN"),
02994  M00S02994.sslabel +++|        1(S"ABRT") ];
02995  M00S02995.sslabel +++|        END
02996  M00S02996.sslabel +++|
02997  M00S02997.sslabel +++|#
02998  M00S02998.sslabel +++|*     ARRAY TO PRINT DAYFILE MESSAGE.
02999  M00S02999.sslabel +++|#
03000  M00S03000.sslabel +++|
03001  M00S03001.sslabel +++|      ARRAY MSGBUF [0:0] P(3);
03002  M00S03002.sslabel +++|        BEGIN
03003  M00S03003.sslabel +++|        ITEM MSG$ID     C(00,00,15) = [" SSLABEL ERROR "];
03004  M00S03004.sslabel +++|        ITEM MSG$NO     C(01,30,03);  # ERROR NUMBER DISPLAYED #
03005  M00S03005.sslabel +++|        ITEM MSGPRD     C(01,48,01) = ["."];
03006  M00S03006.sslabel +++|        ITEM MSGZERO    U(02,48,12) = [0];  # ZERO BYTE TERMINATOR #
03007  M00S03007.sslabel +++|        END
03008  M00S03008.sslabel +++|
03009  M00S03009.sslabel +++|      SWITCH ACT: ACTION             # TYPE OF ERROR PROCESSING #
03010  M00S03010.sslabel +++|          REPORT: MSG,               # DISPLAY ERROR MESSAGE #
03011  M00S03011.sslabel +++|        DETL$RPT: MSGDETL,           # DISPLAY DETAIL ERROR MESSAGE #
03012  M00S03012.sslabel +++|           RTURN: RETRN,             # RETURN TO MAIN LOOP #
03013  M00S03013.sslabel +++|             ABT: ABRT;              # ABORT *SSLABEL* #
03014  M00S03014.sslabel +++|
03015  M00S03015.sslabel +++|                                               CONTROL EJECT;
03016  M00S03016.sslabel +++|
03017  M00S03017.sslabel +++|#
03018  M00S03018.sslabel +++|*     CHECK FOR LEGAL ERROR CODE.
03019  M00S03019.sslabel +++|#
03020  M00S03020.sslabel +++|
03021  M00S03021.sslabel +++|      IF ERR$CODE LS 0 OR ERR$CODE GR CODEMAX
03022  M00S03022.sslabel +++|      THEN                           # ERROR CODE OUT OF RANGE #
03023  M00S03023.sslabel +++|        BEGIN
03024  M00S03024.sslabel +++|        LBMSG$PROC[0] = PROCNAME;
03025  M00S03025.sslabel +++|        MESSAGE(LBMSG[0],SYSUDF1);
03026  M00S03026.sslabel +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
03027  M00S03027.sslabel +++|        END
03028  M00S03028.sslabel +++|
03029  M00S03029.sslabel +++|      DIR$NO[0] = LBARG$DIRN[0];
03030  M00S03030.sslabel +++|      DIR$PRD = ".";
03031  M00S03031.sslabel +++|      DIS$ERR = XCDD(ERR$CODE);
03032  M00S03032.sslabel +++|      MSG$NO[0] = C<7,3>DIS$ERR;
03033  M00S03033.sslabel +++|
03034  M00S03034.sslabel +++|#
03035  M00S03035.sslabel +++|*     BEAD OUT STATUS VALUES FROM ERROR CODE ENTRY, AND DO
03036  M00S03036.sslabel +++|*     CORRESPONDING PROCESSING.
03037  M00S03037.sslabel +++|#
03038  M00S03038.sslabel +++|
03039  M00S03039.sslabel +++|      SLOWFOR I = 0 STEP 6 UNTIL 12
03040  M00S03040.sslabel +++|      DO
03041  M00S03041.sslabel +++|        BEGIN
03042  M00S03042.sslabel +++|        STAT = B<I,6>ERRSTATW[ERR$CODE];
03043  M00S03043.sslabel +++|        GOTO ACT[STAT];
03044  M00S03044.sslabel +++|
03045  M00S03045.sslabel +++|REPORT:                              # REPORT THE ERROR #
03046  M00S03046.sslabel +++|        MESSAGE(ERRMSG[ERR$CODE],SYSUDF1);
03047  M00S03047.sslabel +++|        IF ERR$CODE NQ ERRLIST"SYNTX$ABRT"
03048  M00S03048.sslabel +++|        THEN
03049  M00S03049.sslabel +++|          BEGIN
03050  M00S03050.sslabel +++|          MESSAGE(MSGBUF[0],UDFL1);
03051  M00S03051.sslabel +++|          MESSAGE(DIRECTV[0],UDFL1);
03052  M00S03052.sslabel +++|          RPLINE(OUT$FETP,"*** ERROR",2,9,1);
03053  M00S03053.sslabel +++|          RPLINE(OUT$FETP,MSG$NO[0],12,3,1);
03054  M00S03054.sslabel +++|          RPLINE(OUT$FETP,"DIRECTIVE",19,9,1);
03055  M00S03055.sslabel +++|          RPLINE(OUT$FETP,DIR$NO[0],29,3,0);
03056  M00S03056.sslabel +++|          RPLINE(OUT$FETP,ERRMSSG[ERR$CODE],18,40,1);
03057  M00S03057.sslabel +++|          RPLINE(OUT$FETP,"***",58,3,0);
03058  M00S03058.sslabel +++|          RPSPACE(OUT$FETP,SP"SPACE",1);
03059  M00S03059.sslabel +++|          END
03060  M00S03060.sslabel +++|
03061  M00S03061.sslabel +++|        TEST I;
03062  M00S03062.sslabel +++|
03063  M00S03063.sslabel +++|DETL$RPT:                            # REPORT THE ERROR IN DETAIL #
03064  M00S03064.sslabel +++|        DIS$ASN = XCDD(NUMDONE);
03065  M00S03065.sslabel +++|        DET$MSG1[0] = ERRMSSG[ERR$CODE];
03066  M00S03066.sslabel +++|        MESSAGE(MSGBUF[0],UDFL1);
03067  M00S03067.sslabel +++|        MESSAGE(DIRECTV[0],UDFL1);
03068  M00S03068.sslabel +++|        MESSAGE(DETAIL[0],SYSUDF1);
03069  M00S03069.sslabel +++|        DET$MSG1[0] = " NUMBER PROCESSED = ";
03070  M00S03070.sslabel +++|        DET$BLNK[0] = " ";
03071  M00S03071.sslabel +++|        DET$NO[0] = C<5,5>DIS$ASN;
03072  M00S03072.sslabel +++|        DET$PRD[0] = ".";            # ADD PERIOD TO END OF MESSAGE #
03073  M00S03073.sslabel +++|        MESSAGE(DETAIL,SYSUDF1);
03074  M00S03074.sslabel +++|        RPLINE(OUT$FETP,"*** ERROR",2,9,1);
03075  M00S03075.sslabel +++|        RPLINE(OUT$FETP,MSG$NO[0],12,3,1);
03076  M00S03076.sslabel +++|        RPLINE(OUT$FETP,"DIRECTIVE",19,9,1);
03077  M00S03077.sslabel +++|        RPLINE(OUT$FETP,DIR$NO[0],29,3,0);
03078  M00S03078.sslabel +++|        RPLINE(OUT$FETP,ERRMSSG[ERR$CODE],18,40,0);
03079  M00S03079.sslabel +++|        RPLINE(OUT$FETP,"NUMBER PROCESSED = ",19,19,1);
03080  M00S03080.sslabel +++|        RPLINE(OUT$FETP,DET$NO[0],38,5,1);
03081  M00S03081.sslabel +++|        RPLINE(OUT$FETP,"***",45,3,0);
03082  M00S03082.sslabel +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
03083  M00S03083.sslabel +++|        TEST I;
03084  M00S03084.sslabel +++|
03085  M00S03085.sslabel +++|RTURN:                               # RETURN TO CALLING PROC #
03086  M00S03086.sslabel +++|        RETURN;
03087  M00S03087.sslabel +++|
03088  M00S03088.sslabel +++|ABT:                                 # ABORT PROCESSING #
03089  M00S03089.sslabel +++|        RPCLOSE(OUT$FETP);
03090  M00S03090.sslabel +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
03091  M00S03091.sslabel +++|        END
03092  M00S03092.sslabel +++|
03093  M00S03093.sslabel +++|      END  # LBERR #
03094  M00S03094.sslabel +++|
03095  M00S03095.sslabel +++|    TERM
03096  M00S03096.sslabel +++|PROC LBFLMSC;
03097  M00S03097.sslabel +++|# TITLE LBFLMSC - MODIFIES THE *INHIBIT* FLAG IN THE FCT.             #
03098  M00S03098.sslabel +++|
03099  M00S03099.sslabel +++|      BEGIN  # LBFLMSC #
03100  M00S03100.sslabel +++|
03101  M00S03101.sslabel +++|#
03102  M00S03102.sslabel +++|**    LBFLMSC - MODIFIES THE *INHIBIT* FLAG IN THE FCT.
03103  M00S03103.sslabel +++|*
03104  M00S03104.sslabel +++|*     THIS PROC UPDATES THE *INHIBIT* FLAG IN THE FCT ENTRY
03105  M00S03105.sslabel +++|*     CORRESPONDING TO THE CSN SPECIFIED.
03106  M00S03106.sslabel +++|*
03107  M00S03107.sslabel +++|*     PROC LBFLMSC.
03108  M00S03108.sslabel +++|*
03109  M00S03109.sslabel +++|*     ENTRY      CRACKED AND SYNTAX CHECKED DIRECTIVE
03110  M00S03110.sslabel +++|*                PARAMETERS SET UP IN COMMON AREA DEFINED
03111  M00S03111.sslabel +++|*                IN *COMTLBP*.
03112  M00S03112.sslabel +++|*
03113  M00S03113.sslabel +++|*     EXIT       *INHIBIT* FLAG UPDATED OR ERROR CONDITION.
03114  M00S03114.sslabel +++|*
03115  M00S03115.sslabel +++|*     NOTES      PROC *LBFLMSC* SEARCHES THE SMMAP FOR AN ENTRY
03116  M00S03116.sslabel +++|*                WITH A CSN MATCHING THAT SPECIFIED.  IF THIS IS
03117  M00S03117.sslabel +++|*                FOUND AND IT IS ASSIGNED TO A FAMILY, THEN THE
03118  M00S03118.sslabel +++|*                *INHIBIT* FLAG IN THE CORRESPONDING *FCT* ENTRY
03119  M00S03119.sslabel +++|*                OR THE FREE CARTRIDGE FLAG IN THE *FCT* IS
03120  M00S03120.sslabel +++|*                MODIFIED.  IF *ON* IS SPECIFIED THE FLAG IS SET,
03121  M00S03121.sslabel +++|*                AND IF *OFF* IS SPECIFIED THE FLAG IS CLEARED.
03122  M00S03122.sslabel +++|#
03123  M00S03123.sslabel +++|
03124  M00S03124.sslabel +++|#
03125  M00S03125.sslabel +++|****  PROC LBFLMSC - XREF LIST BEGIN.
03126  M00S03126.sslabel +++|#
03127  M00S03127.sslabel +++|
03128  M00S03128.sslabel +++|      XREF
03129  M00S03129.sslabel +++|        BEGIN
03130  M00S03130.sslabel +++|        PROC CALL3;                  # ISSUES TYPE 3 CALLSS TO EXEC #
03131  M00S03131.sslabel +++|        PROC LBERR;                  # *SSLABEL* ERROR PROCESSOR #
03132  M00S03132.sslabel +++|        PROC LBRESP;                 # RESPONSE CODE PROCESSOR #
03133  M00S03133.sslabel +++|        PROC SERCSU;                 # SEARCHES THE SMMAP #
03134  M00S03134.sslabel +++|        END
03135  M00S03135.sslabel +++|
03136  M00S03136.sslabel +++|#
03137  M00S03137.sslabel +++|****  PROC LBFLMSC - XREF LIST END.
03138  M00S03138.sslabel +++|#
03139  M00S03139.sslabel +++|
03140  M00S03140.sslabel +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
03141  M00S03141.sslabel +++|*CALL COMBFAS
03142  M00S03142.sslabel +++|*CALL COMBCPR
03143  M00S03143.sslabel +++|*CALL COMBMAP
03144  M00S03144.sslabel +++|*CALL COMTERR
03145  M00S03145.sslabel +++|*CALL COMTLAB
03146  M00S03146.sslabel +++|*CALL COMTLBP
03147  M00S03147.sslabel +++|
03148  M00S03148.sslabel +++|      ITEM CATFLD     U;             # CATALOG FIELD #
03149  M00S03149.sslabel +++|      ITEM CATVALUE   I;             # CATALOG VALUE #
03150  M00S03150.sslabel +++|      ITEM FLAG       I;             # ERROR FLAG #
03151  M00S03151.sslabel +++|      ITEM REQCODE    U;             # REQUEST CODE #
03152  M00S03152.sslabel +++|      ITEM RESP$CODE  U;             # RESPONSE CODE FROM EXEC #
03153  M00S03153.sslabel +++|      ITEM SERTYPE    S:SERCH$TYPE;  # SEARCH TYPE #
03154  M00S03154.sslabel +++|      ITEM SP$VSN     C(12);         # SPECIFIED CSN #
03155  M00S03155.sslabel +++|
03156  M00S03156.sslabel +++|
03157  M00S03157.sslabel +++|      ARRAY PT$CSU$ENT [0:0] P(5);   # *PUT* SMMAP ENTRY #
03158  M00S03158.sslabel +++|        BEGIN
03159  M00S03159.sslabel +++|        ITEM PT$MAPENT  C(00,00,30);  # THREE WORD MAP ENTRY #
03160  M00S03160.sslabel +++|        ITEM PT$Y       U(03,00,30);  # Y COORDINATE #
03161  M00S03161.sslabel +++|        ITEM PT$Z       U(03,30,30);  # Z COORDINATE #
03162  M00S03162.sslabel +++|        ITEM PT$GR      U(04,00,07);  # GROUP #
03163  M00S03163.sslabel +++|        ITEM PT$GRT     U(04,07,04);  # GROUP ORDINAL #
03164  M00S03164.sslabel +++|        END
03165  M00S03165.sslabel +++|
03166  M00S03166.sslabel +++|
03167  M00S03167.sslabel +++|                                               CONTROL EJECT;
03168  M00S03168.sslabel +++|
03169  M00S03169.sslabel +++|      SERTYPE = S"CSN$MATCH";
03170  M00S03170.sslabel +++|      SP$VSN = LBARG$C[0];
03171  M00S03171.sslabel +++|
03172  M00S03172.sslabel +++|#
03173  M00S03173.sslabel +++|*     SEARCH FOR MATCHING VSN.
03174  M00S03174.sslabel +++|#
03175  M00S03175.sslabel +++|
03176  M00S03176.sslabel +++|      SERCSU(SERTYPE,0,0,0,SP$VSN,0,0,PT$CSU$ENT[0],FLAG);
03177  M00S03177.sslabel +++|      IF FLAG NQ 0
03178  M00S03178.sslabel +++|      THEN                           # VSN NOT FOUND #
03179  M00S03179.sslabel +++|        BEGIN
03180  M00S03180.sslabel +++|        ERRCODE = S"CSN$NOTFND";
03181  M00S03181.sslabel +++|        LBERR(ERRCODE);              # DO ERROR PROCESSING #
03182  M00S03182.sslabel +++|        RETURN;
03183  M00S03183.sslabel +++|        END
03184  M00S03184.sslabel +++|
03185  M00S03185.sslabel +++|#
03186  M00S03186.sslabel +++|*     CHECK CARTRIDGE ASSIGNMENT.
03187  M00S03187.sslabel +++|#
03188  M00S03188.sslabel +++|
03189  M00S03189.sslabel +++|      P<SMUMAP> = LOC(PT$CSU$ENT[0]);
03190  M00S03190.sslabel +++|      IF CM$CODE NQ CUBSTAT"SUBFAM"
03191  M00S03191.sslabel +++|      THEN                           # NOT ASSIGNED TO FAMILY #
03192  M00S03192.sslabel +++|        BEGIN
03193  M00S03193.sslabel +++|        ERRCODE = S"UNX$CR$ASN";
03194  M00S03194.sslabel +++|        LBERR(ERRCODE);              # DO ERROR PROCESSING #
03195  M00S03195.sslabel +++|        RETURN;
03196  M00S03196.sslabel +++|        END
03197  M00S03197.sslabel +++|
03198  M00S03198.sslabel +++|#
03199  M00S03199.sslabel +++|*     ISSUE A REQUEST TO EXEC TO UPDATE THE CATALOG *INHIBIT* FLAG.
03200  M00S03200.sslabel +++|#
03201  M00S03201.sslabel +++|
03202  M00S03202.sslabel +++|      IF LBARG$ON[0] NQ 0
03203  M00S03203.sslabel +++|      THEN                           # *ON* SPECIFIED #
03204  M00S03204.sslabel +++|        BEGIN
03205  M00S03205.sslabel +++|        CATVALUE = 1;
03206  M00S03206.sslabel +++|        END
03207  M00S03207.sslabel +++|
03208  M00S03208.sslabel +++|      ELSE
03209  M00S03209.sslabel +++|        BEGIN
03210  M00S03210.sslabel +++|        IF LBARG$OF[0] NQ 0
03211  M00S03211.sslabel +++|        THEN                         # *OFF* SPECIFIED #
03212  M00S03212.sslabel +++|          BEGIN
03213  M00S03213.sslabel +++|          CATVALUE = 0;
03214  M00S03214.sslabel +++|          END
03215  M00S03215.sslabel +++|
03216  M00S03216.sslabel +++|        END
03217  M00S03217.sslabel +++|
03218  M00S03218.sslabel +++|      REQCODE = REQTYP3"UPD$CAT";
03219  M00S03219.sslabel +++|      IF LBARG$OP[0] EQ "FC"
03220  M00S03220.sslabel +++|      THEN                           # FREE CARTRIDGE #
03221  M00S03221.sslabel +++|        BEGIN
03222  M00S03222.sslabel +++|        CATFLD = UCF"FREEFL";
03223  M00S03223.sslabel +++|        END
03224  M00S03224.sslabel +++|
03225  M00S03225.sslabel +++|      ELSE                           # INHIBIT ALLOCATION #
03226  M00S03226.sslabel +++|        BEGIN
03227  M00S03227.sslabel +++|        CATFLD = UCF"INHIB";
03228  M00S03228.sslabel +++|        END
03229  M00S03229.sslabel +++|
03230  M00S03230.sslabel +++|
03231  M00S03231.sslabel +++|#
03232  M00S03232.sslabel +++|*     UPDATE CATALOG.
03233  M00S03233.sslabel +++|#
03234  M00S03234.sslabel +++|
03235  M00S03235.sslabel +++|      CALL3(REQCODE,PT$CSU$ENT[0],CATFLD,CATVALUE,RESP$CODE);
03236  M00S03236.sslabel +++|      IF RESP$CODE NQ RESPTYP3"OK3"
03237  M00S03237.sslabel +++|      THEN                           # UPDATE UNSUCCESSFUL #
03238  M00S03238.sslabel +++|        BEGIN
03239  M00S03239.sslabel +++|        LBRESP(RESP$CODE,TYP"TYP3");
03240  M00S03240.sslabel +++|        END
03241  M00S03241.sslabel +++|
03242  M00S03242.sslabel +++|      RETURN;
03243  M00S03243.sslabel +++|
03244  M00S03244.sslabel +++|      END  # LBFLMSC #
03245  M00S03245.sslabel +++|
03246  M00S03246.sslabel +++|    TERM
03247  M00S03247.sslabel +++|PROC LBFXVSN;
03248  M00S03248.sslabel +++|# TITLE LBFXVSN - REPLACES LABEL WITH SCRATCH LABEL.                  #
03249  M00S03249.sslabel +++|
03250  M00S03250.sslabel +++|      BEGIN  # LBFXVSN #
03251  M00S03251.sslabel +++|
03252  M00S03252.sslabel +++|#
03253  M00S03253.sslabel +++|**    LBFXVSN - REPLACES LABEL WITH A SCRATCH LABEL.
03254  M00S03254.sslabel +++|*
03255  M00S03255.sslabel +++|*     THIS PROC GETS A CARTRIDGE FROM THE INPUT DRAWER, WRITES A
03256  M00S03256.sslabel +++|*     SCRATCH LABEL ON IT, AND ADDS IT TO THE POOL.
03257  M00S03257.sslabel +++|*
03258  M00S03258.sslabel +++|*     PROC LBFXVSN.
03259  M00S03259.sslabel +++|*
03260  M00S03260.sslabel +++|*     ENTRY     CRACKED AND SYNTAX CHECKED DIRECTIVE
03261  M00S03261.sslabel +++|*               PARAMETERS SET UP IN COMMON AREA DEFINED
03262  M00S03262.sslabel +++|*               IN *COMTLBP*.
03263  M00S03263.sslabel +++|*
03264  M00S03264.sslabel +++|*     EXIT      CARTRIDGE IN SCRATCH POOL OR ERROR CONDITION.
03265  M00S03265.sslabel +++|*
03266  M00S03266.sslabel +++|*     NOTES     PROC *LBFXVSN* VERIFIES THE PRESENCE OF A CARTRIDGE
03267  M00S03267.sslabel +++|*               IN THE INPUT DRAWER, AND SEARCHES FOR AN
03268  M00S03268.sslabel +++|*               EMPTY CUBE IN THE POOL.  EXEC IS CALLED TO BRING
03269  M00S03269.sslabel +++|*               THE CARTRIDGE TO A DRIVE AND READ ITS LABEL.  IF
03270  M00S03270.sslabel +++|*               THE LABEL TYPE AGREES WITH THAT SPECIFIED, A NEW
03271  M00S03271.sslabel +++|*               SCRATCH LABEL IS WRITTEN AND THE CARTRIDGE IS ADDED
03272  M00S03272.sslabel +++|*               TO THE POOL.
03273  M00S03273.sslabel +++|#
03274  M00S03274.sslabel +++|
03275  M00S03275.sslabel +++|#
03276  M00S03276.sslabel +++|****  PROC LBFXVSN - XREF LIST BEGIN.
03277  M00S03277.sslabel +++|#
03278  M00S03278.sslabel +++|
03279  M00S03279.sslabel +++|      XREF
03280  M00S03280.sslabel +++|        BEGIN
03281  M00S03281.sslabel +++|        PROC CALL3;                  # ISSUES TYPE 3 CALLSS TO EXEC #
03282  M00S03282.sslabel +++|        PROC CALL4;                  # ISSUES TYPE 4 CALLSS TO EXEC #
03283  M00S03283.sslabel +++|        PROC CKLAB;                  # CHECKS CARTRIDGE LABEL TYPE #
03284  M00S03284.sslabel +++|        PROC CONVSN;                 # CONVERTS VSN FROM EBCDIC TO
03285  M00S03285.sslabel +++|                                       DISPLAY CODE #
03286  M00S03286.sslabel +++|        PROC DCEBC;                  # CONVERTS DISPLAY TO EBCDIC #
03287  M00S03287.sslabel +++|        PROC DLABFLD;                # DISPLAY LABEL FIELDS #
03288  M00S03288.sslabel +++|        PROC GENLAB;                 # GENERATES A NEW LABEL #
03289  M00S03289.sslabel +++|        PROC LBERR;                  # *SSLABEL* ERROR PROCESSOR #
03290  M00S03290.sslabel +++|        PROC LBRESP;                 # RESPONSE CODE PROCESSOR #
03291  M00S03291.sslabel +++|        PROC SERCSU;                 # SEARCHES THE SMMAP #
03292  M00S03292.sslabel +++|        END
03293  M00S03293.sslabel +++|
03294  M00S03294.sslabel +++|#
03295  M00S03295.sslabel +++|****  PROC LBFXVSN - XREF LIST END.
03296  M00S03296.sslabel +++|#
03297  M00S03297.sslabel +++|
03298  M00S03298.sslabel +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
03299  M00S03299.sslabel +++|*CALL COMBFAS
03300  M00S03300.sslabel +++|*CALL COMBCPR
03301  M00S03301.sslabel +++|*CALL COMBLBL
03302  M00S03302.sslabel +++|*CALL COMBMAP
03303  M00S03303.sslabel +++|*CALL COMTERR
03304  M00S03304.sslabel +++|*CALL COMTLAB
03305  M00S03305.sslabel +++|*CALL COMTLBP
03306  M00S03306.sslabel +++|
03307  M00S03307.sslabel +++|      ITEM CART$CSN   C(20);         # CARTRIDGE SERIAL NUMBER #
03308  M00S03308.sslabel +++|      ITEM CONFLAG    B;             # CONVERSION FLAG #
03309  M00S03309.sslabel +++|      ITEM DC$VSN     C(8);          # *CSN* IN DISPLAY CODE #
03310  M00S03310.sslabel +++|      ITEM ERR$CNT    I;             # ERROR COUNT #
03311  M00S03311.sslabel +++|      ITEM FLAG       I;             # ERROR FLAG #
03312  M00S03312.sslabel +++|      ITEM HR$ERR     I;             # HARD READ ERRORS #
03313  M00S03313.sslabel +++|      ITEM I          I;             # LOOP VARIABLE #
03314  M00S03314.sslabel +++|      ITEM LAB$TYPE   S:LABTYPE;     # LABEL TYPE #
03315  M00S03315.sslabel +++|      ITEM LD$CNT     I;             # LOAD COUNT #
03316  M00S03316.sslabel +++|      ITEM LD$ERR     I;             # LOAD ERRORS #
03317  M00S03317.sslabel +++|      ITEM PS$CNT     I;             # PASS COUNT #
03318  M00S03318.sslabel +++|      ITEM REQCODE    I;             # REQUEST CODE #
03319  M00S03319.sslabel +++|      ITEM RESP$CODE  I;             # RESPONSE CODE #
03320  M00S03320.sslabel +++|      ITEM SERTYPE    S:SERCH$TYPE;  # SEARCH TYPE #
03321  M00S03321.sslabel +++|      ITEM SP$CODE    I;             # SPECIFIED CODE #
03322  M00S03322.sslabel +++|      ITEM SP$FAM     C(7);          # SPECIFIED FAMILY #
03323  M00S03323.sslabel +++|      ITEM SP$SUB     I;             # SUBFAMILY #
03324  M00S03324.sslabel +++|      ITEM SP$VSN     C(8);          # SPECIFIED CARTRIDGE *CSND* #
03325  M00S03325.sslabel +++|      ITEM SP$Y       I;             # SPECIFIED Y COORDINATE #
03326  M00S03326.sslabel +++|      ITEM SP$Z       I;             # SPECIFIED Z COORDINATE #
03327  M00S03327.sslabel +++|      ITEM SR$ERR     I;             # SOFT READ ERRORS #
03328  M00S03328.sslabel +++|      ITEM STR$RD     I;             # STRIPES READ #
03329  M00S03329.sslabel +++|      ITEM STR$WR     I;             # STRIPES WRITTEN #
03330  M00S03330.sslabel +++|      ITEM STR$DM     I;             # STRIPES DEMARKED #
03331  M00S03331.sslabel +++|      ITEM SW$ERR     I;             # SOFT WRITE ERRORS #
03332  M00S03332.sslabel +++|      ITEM TEMP$VSN C(8);               # TEMPORARY *CSN* #
03333  M00S03333.sslabel +++|
03334  M00S03334.sslabel +++|
03335  M00S03335.sslabel +++|      ARRAY PT$CSU$ENT [0:0] P(5);   # *PUT* SMMAP ENTRY #
03336  M00S03336.sslabel +++|        BEGIN
03337  M00S03337.sslabel +++|        ITEM PT$MAPENT  C(00,00,30);  # THREE WORD MAP ENTRY #
03338  M00S03338.sslabel +++|        ITEM PT$Y       U(03,00,30);  # Y COORDINATE #
03339  M00S03339.sslabel +++|        ITEM PT$Z       U(03,30,30);  # Z COORDINATE #
03340  M00S03340.sslabel +++|        ITEM PT$GR      U(04,00,07);  # GROUP #
03341  M00S03341.sslabel +++|        ITEM PT$GRT     U(04,07,04);  # GROUP ORDINAL #
03342  M00S03342.sslabel +++|        END
03343  M00S03343.sslabel +++|
03344  M00S03344.sslabel +++|
03345  M00S03345.sslabel +++|                                               CONTROL EJECT;
03346  M00S03346.sslabel +++|
03347  M00S03347.sslabel +++|#
03348  M00S03348.sslabel +++|*     CHECK IF SPECIFIED *CSN* IS ALREADY IN MAP.
03349  M00S03349.sslabel +++|#
03350  M00S03350.sslabel +++|
03351  M00S03351.sslabel +++|      SERTYPE = S"CSN$MATCH";        # SEARCH FOR *CSN* #
03352  M00S03352.sslabel +++|      SERCSU(SERTYPE,0,0,0,LBARG$C[0],0,0,PT$CSU$ENT[0],FLAG);
03353  M00S03353.sslabel +++|      IF FLAG EQ 0                   # *CSN* ALREADY IN MAP #
03354  M00S03354.sslabel +++|      THEN
03355  M00S03355.sslabel +++|        BEGIN
03356  M00S03356.sslabel +++|        ERRCODE = S"DUPL$CSN";
03357  M00S03357.sslabel +++|        LBERR(ERRCODE);
03358  M00S03358.sslabel +++|        RETURN;
03359  M00S03359.sslabel +++|        END
03360  M00S03360.sslabel +++|
03361  M00S03361.sslabel +++|
03362  M00S03362.sslabel +++|#
03363  M00S03363.sslabel +++|*     CHECK THAT CARTRIDGE IS PRESENT IN INPUT DRAWER AND SEARCH
03364  M00S03364.sslabel +++|*     SMMAP FOR EMPTY CUBE IN THE POOL.
03365  M00S03365.sslabel +++|#
03366  M00S03366.sslabel +++|
03367  M00S03367.sslabel +++|      SERTYPE = S"ASSIGN";
03368  M00S03368.sslabel +++|      SP$CODE = CUBSTAT"SCRPOOL";
03369  M00S03369.sslabel +++|      SP$FAM = " ";
03370  M00S03370.sslabel +++|      SP$SUB = 0;
03371  M00S03371.sslabel +++|      SP$VSN = " ";
03372  M00S03372.sslabel +++|      SERCSU(SERTYPE,0,0,SP$CODE,SP$VSN,SP$FAM,SP$SUB,PT$CSU$ENT[0],
03373  M00S03373.sslabel +++|        FLAG);
03374  M00S03374.sslabel +++|      IF FLAG NQ 0
03375  M00S03375.sslabel +++|      THEN                           # NO EMPTY CUBE IN POOL #
03376  M00S03376.sslabel +++|        BEGIN
03377  M00S03377.sslabel +++|        ERRCODE = S"NO$EMPCBFP";
03378  M00S03378.sslabel +++|        LBERR(ERRCODE);              # DO ERROR PROCESSING #
03379  M00S03379.sslabel +++|        RETURN;
03380  M00S03380.sslabel +++|        END
03381  M00S03381.sslabel +++|
03382  M00S03382.sslabel +++|#
03383  M00S03383.sslabel +++|*     LOAD CARTRIDGE FROM INPUT DRAWER.
03384  M00S03384.sslabel +++|#
03385  M00S03385.sslabel +++|
03386  M00S03386.sslabel +++|      SP$Y = 14;
03387  M00S03387.sslabel +++|      SP$Z = 0;
03388  M00S03388.sslabel +++|      REQCODE = REQTYP4"LOAD$CART";
03389  M00S03389.sslabel +++|      CALL4(REQCODE,DRD$NUM,0,SP$Y,SP$Z,RESP$CODE);
03390  M00S03390.sslabel +++|      IF RESP$CODE NQ 0
03391  M00S03391.sslabel +++|      THEN                           # *LOAD* FAILS #
03392  M00S03392.sslabel +++|        BEGIN
03393  M00S03393.sslabel +++|        LBRESP(RESP$CODE,TYP"TYP4");
03394  M00S03394.sslabel +++|        RETURN;
03395  M00S03395.sslabel +++|        END
03396  M00S03396.sslabel +++|
03397  M00S03397.sslabel +++|      DRD$NUM = CPR$DRD[0];          # TRANSPORT ID #
03398  M00S03398.sslabel +++|
03399  M00S03399.sslabel +++|
03400  M00S03400.sslabel +++|      P<LABEL$CART> = OLDLABP;
03401  M00S03401.sslabel +++|      CKLAB(LAB$TYPE);               # CHECK LABEL TYPE #
03402  M00S03402.sslabel +++|      IF LAB$TYPE EQ S"UNR$LAB"
03403  M00S03403.sslabel +++|      THEN
03404  M00S03404.sslabel +++|        BEGIN  # UNRECOGNIZABLE LABEL #
03405  M00S03405.sslabel +++|        IF LBARG$ZFM[0] EQ 0
03406  M00S03406.sslabel +++|        THEN                         # FAMILY NOT SPECIFIED #
03407  M00S03407.sslabel +++|          BEGIN
03408  M00S03408.sslabel +++|          LD$CNT = 0;
03409  M00S03409.sslabel +++|          SW$ERR = 0;
03410  M00S03410.sslabel +++|          SR$ERR = 0;
03411  M00S03411.sslabel +++|          HR$ERR = 0;
03412  M00S03412.sslabel +++|          STR$RD = 0;
03413  M00S03413.sslabel +++|          STR$WR = 0;
03414  M00S03414.sslabel +++|          STR$DM = 0;
03415  M00S03415.sslabel +++|          END
03416  M00S03416.sslabel +++|
03417  M00S03417.sslabel +++|        ELSE                         # FAMILY SPECIFIED #
03418  M00S03418.sslabel +++|          BEGIN
03419  M00S03419.sslabel +++|          REQCODE = REQTYP4"UNLD$CART";
03420  M00S03420.sslabel +++|          CALL4(REQCODE,0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
03421  M00S03421.sslabel +++|          IF RESP$CODE NQ RESPTYP4"OK4"
03422  M00S03422.sslabel +++|          THEN
03423  M00S03423.sslabel +++|            BEGIN
03424  M00S03424.sslabel +++|            LBRESP(RESP$CODE,TYP"TYP4");
03425  M00S03425.sslabel +++|            RETURN;
03426  M00S03426.sslabel +++|            END
03427  M00S03427.sslabel +++|
03428  M00S03428.sslabel +++|          ERRCODE = S"UNREC$LAB";
03429  M00S03429.sslabel +++|          LBERR(ERRCODE);
03430  M00S03430.sslabel +++|          RETURN;
03431  M00S03431.sslabel +++|          END
03432  M00S03432.sslabel +++|
03433  M00S03433.sslabel +++|        END  # UNRECOGNIZABLE LABEL #
03434  M00S03434.sslabel +++|
03435  M00S03435.sslabel +++|      ELSE
03436  M00S03436.sslabel +++|        BEGIN  # RECOGNIZABLE LABEL #
03437  M00S03437.sslabel +++|        IF LBARG$ZFM[0] NQ 0
03438  M00S03438.sslabel +++|        THEN
03439  M00S03439.sslabel +++|          BEGIN  # FAMILY SPECIFIED #
03440  M00S03440.sslabel +++|          IF LAB$TYPE EQ S"FAM$LAB" AND LAB$FMLY[0] EQ LBARG$FM[0] AND
03441  M00S03441.sslabel +++|            LAB$SF[0] EQ LBARG$SB[0]
03442  M00S03442.sslabel +++|          THEN                       # MATCHING FAMILY LABEL #
03443  M00S03443.sslabel +++|            BEGIN
03444  M00S03444.sslabel +++|            LD$CNT = LAB$CRLD[0];
03445  M00S03445.sslabel +++|            LD$ERR = LAB$LDER[0];
03446  M00S03446.sslabel +++|            SR$ERR = LAB$SRDE[0];
03447  M00S03447.sslabel +++|            SW$ERR = LAB$SWRE1[0];
03448  M00S03448.sslabel +++|            B<28,4>SW$ERR = LAB$SWRE[0];
03449  M00S03449.sslabel +++|            HR$ERR = LAB$HRDE[0];
03450  M00S03450.sslabel +++|            STR$RD = LAB$STRD[0];
03451  M00S03451.sslabel +++|            STR$WR = LAB$STWR1[0];
03452  M00S03452.sslabel +++|            B<36,24>STR$WR = LAB$STWR[0];
03453  M00S03453.sslabel +++|            STR$DM = LAB$STDM[0];
03454  M00S03454.sslabel +++|            END
03455  M00S03455.sslabel +++|
03456  M00S03456.sslabel +++|          ELSE                       # NO MATCHING FAMILY LABEL #
03457  M00S03457.sslabel +++|            BEGIN
03458  M00S03458.sslabel +++|            DLABFLD;                 # DISPLAY LABEL FIELDS #
03459  M00S03459.sslabel +++|            REQCODE = REQTYP4"UNLD$CART";
03460  M00S03460.sslabel +++|            CALL4(REQCODE,0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
03461  M00S03461.sslabel +++|            IF RESP$CODE NQ RESPTYP4"OK4"
03462  M00S03462.sslabel +++|            THEN
03463  M00S03463.sslabel +++|              BEGIN
03464  M00S03464.sslabel +++|              LBRESP(RESP$CODE,TYP"TYP4");
03465  M00S03465.sslabel +++|              RETURN;
03466  M00S03466.sslabel +++|              END
03467  M00S03467.sslabel +++|
03468  M00S03468.sslabel +++|            ERRCODE = S"NO$FAMLAB";
03469  M00S03469.sslabel +++|            LBERR(ERRCODE);
03470  M00S03470.sslabel +++|            RETURN;
03471  M00S03471.sslabel +++|            END
03472  M00S03472.sslabel +++|
03473  M00S03473.sslabel +++|          END  # FAMILY SPECIFIED #
03474  M00S03474.sslabel +++|
03475  M00S03475.sslabel +++|        ELSE
03476  M00S03476.sslabel +++|          BEGIN  # FAMILY NOT SPECIFIED #
03477  M00S03477.sslabel +++|          IF LAB$TYPE EQ S"SCR$LAB"
03478  M00S03478.sslabel +++|          THEN                       # SCRATCH LABEL #
03479  M00S03479.sslabel +++|            BEGIN
03480  M00S03480.sslabel +++|            LD$CNT = LAB$CRLD[0];
03481  M00S03481.sslabel +++|            LD$ERR = LAB$LDER[0];
03482  M00S03482.sslabel +++|            SR$ERR = LAB$SRDE[0];
03483  M00S03483.sslabel +++|            SW$ERR = LAB$SWRE1[0];
03484  M00S03484.sslabel +++|            B<28,4>SW$ERR = LAB$SWRE[0];
03485  M00S03485.sslabel +++|            HR$ERR = LAB$HRDE[0];
03486  M00S03486.sslabel +++|            STR$RD = LAB$STRD[0];
03487  M00S03487.sslabel +++|            STR$WR = LAB$STWR1[0];
03488  M00S03488.sslabel +++|            B<36,24>STR$WR = LAB$STWR[0];
03489  M00S03489.sslabel +++|            STR$DM = LAB$STDM[0];
03490  M00S03490.sslabel +++|            END
03491  M00S03491.sslabel +++|
03492  M00S03492.sslabel +++|          ELSE                       # FAMILY LABEL #
03493  M00S03493.sslabel +++|            BEGIN
03494  M00S03494.sslabel +++|            REQCODE = REQTYP4"UNLD$CART";
03495  M00S03495.sslabel +++|            CALL4(REQCODE,0,0,SM$EXIT$TY,SM$TY$Z,RESP$CODE);
03496  M00S03496.sslabel +++|            IF RESP$CODE NQ RESPTYP4"OK4"
03497  M00S03497.sslabel +++|            THEN
03498  M00S03498.sslabel +++|              BEGIN
03499  M00S03499.sslabel +++|              LBRESP(RESP$CODE,TYP"TYP4");
03500  M00S03500.sslabel +++|              RETURN;
03501  M00S03501.sslabel +++|              END
03502  M00S03502.sslabel +++|
03503  M00S03503.sslabel +++|            DLABFLD;
03504  M00S03504.sslabel +++|            ERRCODE = S"GOOD$LAB";
03505  M00S03505.sslabel +++|            LBERR(ERRCODE);
03506  M00S03506.sslabel +++|            RETURN;
03507  M00S03507.sslabel +++|            END
03508  M00S03508.sslabel +++|
03509  M00S03509.sslabel +++|          END  # FAMILY NOT SPECIFIED #
03510  M00S03510.sslabel +++|
03511  M00S03511.sslabel +++|        END  # RECOGNIZABLE LABEL #
03512  M00S03512.sslabel +++|
03513  M00S03513.sslabel +++|      LAB$TYPE = S"FAM$LAB";
03514  M00S03514.sslabel +++|
03515  M00S03515.sslabel +++|
03516  M00S03516.sslabel +++|#
03517  M00S03517.sslabel +++|*     CHECK *CSN* PARAMETER FOR MATCH.
03518  M00S03518.sslabel +++|#
03519  M00S03519.sslabel +++|
03520  M00S03520.sslabel +++|      CONVSN(TEMP$VSN,1,CONFLAG);
03521  M00S03521.sslabel +++|      IF LBARG$C[0] NQ TEMP$VSN
03522  M00S03522.sslabel +++|      THEN                  # NO MATCH OF *CSN* #
03523  M00S03523.sslabel +++|        BEGIN
03524  M00S03524.sslabel +++|        ERRCODE = S"ILLEG$C";
03525  M00S03525.sslabel +++|        LBERR(ERRCODE);
03526  M00S03526.sslabel +++|        RETURN;
03527  M00S03527.sslabel +++|        END
03528  M00S03528.sslabel +++|
03529  M00S03529.sslabel +++|#
03530  M00S03530.sslabel +++|*     CONVERT VSN FROM DISPLAY CODE TO EBCDIC.
03531  M00S03531.sslabel +++|#
03532  M00S03532.sslabel +++|
03533  M00S03533.sslabel +++|      DC$VSN = LBARG$C[0];
03534  M00S03534.sslabel +++|      CONVSN(DC$VSN,0,CONFLAG);
03535  M00S03535.sslabel +++|      IF CONFLAG
03536  M00S03536.sslabel +++|      THEN                           # ILLEGAL CDC CHARACTER #
03537  M00S03537.sslabel +++|        BEGIN
03538  M00S03538.sslabel +++|        ERRCODE = S"ILLEG$C";
03539  M00S03539.sslabel +++|        LBERR(ERRCODE);
03540  M00S03540.sslabel +++|        RETURN;
03541  M00S03541.sslabel +++|        END
03542  M00S03542.sslabel +++|
03543  M00S03543.sslabel +++|#
03544  M00S03544.sslabel +++|*     GENERATE NEW LABEL.
03545  M00S03545.sslabel +++|#
03546  M00S03546.sslabel +++|
03547  M00S03547.sslabel +++|      LAB$TYPE = S"SCR$LAB";
03548  M00S03548.sslabel +++|      GENLAB(LAB$TYPE,PT$CSU$ENT[0],LD$CNT,LD$ERR, SR$ERR,SW$ERR,
03549  M00S03549.sslabel +++|        HR$ERR);
03550  M00S03550.sslabel +++|      IF LBARG$CM[0] NQ IBMCART
03551  M00S03551.sslabel +++|      THEN                           # CARTRIDGE NOT IBM #
03552  M00S03552.sslabel +++|        BEGIN
03553  M00S03553.sslabel +++|        LAB$CCOD[0] = OTHCART;
03554  M00S03554.sslabel +++|        END
03555  M00S03555.sslabel +++|
03556  M00S03556.sslabel +++|      ELSE
03557  M00S03557.sslabel +++|        BEGIN
03558  M00S03558.sslabel +++|        LAB$CCOD[0] = IBMCART;
03559  M00S03559.sslabel +++|        END
03560  M00S03560.sslabel +++|
03561  M00S03561.sslabel +++|      IF LBARG$CM[0] EQ IBMCART
03562  M00S03562.sslabel +++|      THEN                           # WRITE IBM ON CARTRIDGE #
03563  M00S03563.sslabel +++|        BEGIN
03564  M00S03564.sslabel +++|        B<0,32>LAB$CSN[0] = O"31160552100";
03565  M00S03565.sslabel +++|        END
03566  M00S03566.sslabel +++|
03567  M00S03567.sslabel +++|                                     # NOTE: IF CM EQ B- THEN DO
03568  M00S03568.sslabel +++|                                       CONVERSION #
03569  M00S03569.sslabel +++|      REQCODE = REQTYP4"WRT$LAB";
03570  M00S03570.sslabel +++|      CALL4(REQCODE,DRD$NUM,CART$CSN,PT$Y[0],PT$Z[0],RESP$CODE);
03571  M00S03571.sslabel +++|      IF RESP$CODE NQ RESPTYP4"OK4"
03572  M00S03572.sslabel +++|      THEN                           # WRITE FAILS #
03573  M00S03573.sslabel +++|        BEGIN
03574  M00S03574.sslabel +++|        LBRESP(RESP$CODE,TYP"TYP4");
03575  M00S03575.sslabel +++|        RETURN;
03576  M00S03576.sslabel +++|        END
03577  M00S03577.sslabel +++|
03578  M00S03578.sslabel +++|#
03579  M00S03579.sslabel +++|*     UPDATE SMMAP TO ADD CARTRIDGE TO POOL.
03580  M00S03580.sslabel +++|#
03581  M00S03581.sslabel +++|
03582  M00S03582.sslabel +++|      REQCODE = REQTYP3"UPD$MAP";
03583  M00S03583.sslabel +++|      P<SMUMAP> = LOC(PT$CSU$ENT[0]);
03584  M00S03584.sslabel +++|      CM$CSND[0] = LBARG$C[0];
03585  M00S03585.sslabel +++|      CM$CCOD[0] = LAB$CCOD;
03586  M00S03586.sslabel +++|      CALL3(REQCODE,PT$CSU$ENT[0],0,0,RESP$CODE);
03587  M00S03587.sslabel +++|      IF RESP$CODE NQ RESPTYP3"OK3"
03588  M00S03588.sslabel +++|      THEN                           # UPDATE FAILS #
03589  M00S03589.sslabel +++|        BEGIN
03590  M00S03590.sslabel +++|        LBRESP(RESP$CODE,TYP"TYP3");
03591  M00S03591.sslabel +++|        RETURN;
03592  M00S03592.sslabel +++|        END
03593  M00S03593.sslabel +++|
03594  M00S03594.sslabel +++|                                     # WHICH ERROR CODE #
03595  M00S03595.sslabel +++|      IF RESP$CODE NQ RESPTYP4"OK4"
03596  M00S03596.sslabel +++|      THEN                           # PUT FAILS #
03597  M00S03597.sslabel +++|        BEGIN
03598  M00S03598.sslabel +++|        LBRESP(RESP$CODE,TYP"TYP4");
03599  M00S03599.sslabel +++|        END
03600  M00S03600.sslabel +++|
03601  M00S03601.sslabel +++|      RETURN;
03602  M00S03602.sslabel +++|
03603  M00S03603.sslabel +++|      END  # LBFXVSN #
03604  M00S03604.sslabel +++|
03605  M00S03605.sslabel +++|    TERM
03606  M00S03606.sslabel +++|PROC LBHEAD((FETP));
03607  M00S03607.sslabel +++|# TITLE LBHEAD - WRITES HEADER LINE ON OUTPUT FILE.                   #
03608  M00S03608.sslabel +++|
03609  M00S03609.sslabel +++|      BEGIN  # LBHEAD #
03610  M00S03610.sslabel +++|
03611  M00S03611.sslabel +++|#
03612  M00S03612.sslabel +++|**    LBHEAD - WRITES HEADER LINE ON OUTPUT FILE.
03613  M00S03613.sslabel +++|*
03614  M00S03614.sslabel +++|*     PROC LBHEAD((FETP))
03615  M00S03615.sslabel +++|*
03616  M00S03616.sslabel +++|*     ENTRY    FETP, AN ITEM CONTAINING THE FWA OF THE FET.
03617  M00S03617.sslabel +++|*
03618  M00S03618.sslabel +++|*     EXIT     HEADER WRITTEN ON OUTPUT FILE.
03619  M00S03619.sslabel +++|*
03620  M00S03620.sslabel +++|*     NOTES    THE REPORT FORMATTER IS USED TO
03621  M00S03621.sslabel +++|*              PRINT THE HEADER LINES.
03622  M00S03622.sslabel +++|#
03623  M00S03623.sslabel +++|
03624  M00S03624.sslabel +++|      ITEM FETP       I;             # FWA OF THE FET #
03625  M00S03625.sslabel +++|
03626  M00S03626.sslabel +++|#
03627  M00S03627.sslabel +++|****  PROC LBHEAD - XREF LIST BEGIN.
03628  M00S03628.sslabel +++|#
03629  M00S03629.sslabel +++|
03630  M00S03630.sslabel +++|      XREF
03631  M00S03631.sslabel +++|        BEGIN
03632  M00S03632.sslabel +++|        PROC RPLINEX;                # PRINTS A REPORT LINE #
03633  M00S03633.sslabel +++|        END
03634  M00S03634.sslabel +++|
03635  M00S03635.sslabel +++|#
03636  M00S03636.sslabel +++|****  PROC LBHEAD - XREF LIST END.
03637  M00S03637.sslabel +++|#
03638  M00S03638.sslabel +++|
03639  M00S03639.sslabel +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
03640  M00S03640.sslabel +++|*CALL COMBFAS
03641  M00S03641.sslabel +++|*CALL COMTOUT
03642  M00S03642.sslabel +++|
03643  M00S03643.sslabel +++|                                               CONTROL EJECT;
03644  M00S03644.sslabel +++|
03645  M00S03645.sslabel +++|#
03646  M00S03646.sslabel +++|*     PRINT HEADER LINE.
03647  M00S03647.sslabel +++|#
03648  M00S03648.sslabel +++|
03649  M00S03649.sslabel +++|      RPLINEX(FETP,"SSLABEL REPORT FILE",2,19,0);
03650  M00S03650.sslabel +++|      RPLINEX(FETP," ",1,1,0);       # WRITE A BLANK LINE #
03651  M00S03651.sslabel +++|      RETURN;
03652  M00S03652.sslabel +++|
03653  M00S03653.sslabel +++|      END  # LBHEAD #
03654  M00S03654.sslabel +++|
03655  M00S03655.sslabel +++|    TERM
03656  M00S03656.sslabel +++|PROC LBLOOP((ARGLIST),ERRFLAG);
03657  M00S03657.sslabel +++|# TITLE LBLOOP - CRACK AND SYNTAX CHECK *SSLABEL* DIRECTIVES.         #
03658  M00S03658.sslabel +++|
03659  M00S03659.sslabel +++|      BEGIN  # LBLOOP #
03660  M00S03660.sslabel +++|
03661  M00S03661.sslabel +++|#
03662  M00S03662.sslabel +++|**    LBLOOP - CRACK AND SYNTAX CHECK *SSLABEL* DIRECTIVES.
03663  M00S03663.sslabel +++|*
03664  M00S03664.sslabel +++|*     THIS PROCEDURE CRACKS AND SYNTAX CHECKS THE
03665  M00S03665.sslabel +++|*     PARAMETERS SPECIFIED ON *SSLABEL* DIRECTIVE
03666  M00S03666.sslabel +++|*     CALL.
03667  M00S03667.sslabel +++|*
03668  M00S03668.sslabel +++|*     PROC LBLOOP((ARGLIST),ERRFLAG)
03669  M00S03669.sslabel +++|*
03670  M00S03670.sslabel +++|*     ENTRY     ARGLIST, AN ITEM CONTAINING THE ADDRESS
03671  M00S03671.sslabel +++|*                        OF THE ARGUMENT LIST FOR *SSLABEL*.
03672  M00S03672.sslabel +++|*
03673  M00S03673.sslabel +++|*     EXIT      ALL THE DIRECTIVES CRACKED, SYNTAX CHECKED
03674  M00S03674.sslabel +++|*               AND WRITTEN ON A TEMPORARY FILE.
03675  M00S03675.sslabel +++|*               ERRFLAG, AN ITEM CONTAINING THE ERROR STATUS.
03676  M00S03676.sslabel +++|*                        FALSE, NO ERROR.
03677  M00S03677.sslabel +++|*                        TRUE, SYNTAX ERROR IN ONE OR MORE DIRECTIVES.
03678  M00S03678.sslabel +++|*
03679  M00S03679.sslabel +++|*     MESSAGES  SSLABEL - NO DIRECTIVES.
03680  M00S03680.sslabel +++|*
03681  M00S03681.sslabel +++|*     NOTES     PROC *LBLOOP* SETS UP A LOOP TO READ IN EACH
03682  M00S03682.sslabel +++|*               DIRECTIVE, CRACK THE DIRECTIVE, CONVERT THE CRACKED
03683  M00S03683.sslabel +++|*               PARAMETERS FROM DISPLAY CODE TO INTEGER VALUE
03684  M00S03684.sslabel +++|*               AND TO CHECK FOR THE VALID OPTIONS ON THE
03685  M00S03685.sslabel +++|*               DIRECTIVE CALL.  THE CRACKED PARAMETERS ARE
03686  M00S03686.sslabel +++|*               RETURNED IN THE COMMON AREA *ULBPCOM* AND
03687  M00S03687.sslabel +++|*               AFTER CONVERSION ARE PLACED BACK IN THE
03688  M00S03688.sslabel +++|*               SAME LOCATIONS.  IF AN ERROR IS ENCOUNTERED
03689  M00S03689.sslabel +++|*               WITH THE DIRECTIVE, A DIRECTIVE ERROR FLAG
03690  M00S03690.sslabel +++|*               IS SET UP.  THE DIRECTIVE ALONG WITH THE
03691  M00S03691.sslabel +++|*               CRACKED AND CONVERTED PARAMETERS, DIRECTIVE
03692  M00S03692.sslabel +++|*               NUMBER AND THE DIRECTIVE ERROR STATUS FLAG
03693  M00S03693.sslabel +++|*               IS WRITTEN TO A TEMPORARY FILE.  THE TEMPORARY
03694  M00S03694.sslabel +++|*               FILE HAS THE FOLLOWING FORMAT.
03695  M00S03695.sslabel +++|*               EACH DIRECTIVE HAS ITS IMAGE, NUMBER AND
03696  M00S03696.sslabel +++|*               ERROR STATUS AND THE CRACKED PARAMETERS
03697  M00S03697.sslabel +++|*               WRITTEN ON TO IT.  IT CONSISTS OF
03698  M00S03698.sslabel +++|*               ONE LOGICAL RECORD FOLLOWED BY AN EOR.
03699  M00S03699.sslabel +++|*               A SYNTAX ERROR IS RETURNED TO THE CALLING
03700  M00S03700.sslabel +++|*               PROCEDURE IF AN ERROR IS ENCOUNTERED WITH
03701  M00S03701.sslabel +++|*               ANY DIRECTIVE.
03702  M00S03702.sslabel +++|#
03703  M00S03703.sslabel +++|
03704  M00S03704.sslabel +++|      ITEM ARGLIST    I;             # ADDRESS OF ARGUMENT LIST #
03705  M00S03705.sslabel +++|      ITEM ERRFLAG    B;             # ERROR FLAG #
03706  M00S03706.sslabel +++|
03707  M00S03707.sslabel +++|#
03708  M00S03708.sslabel +++|****  PROC LBLOOP - XREF LIST BEGIN.
03709  M00S03709.sslabel +++|#
03710  M00S03710.sslabel +++|
03711  M00S03711.sslabel +++|      XREF
03712  M00S03712.sslabel +++|        BEGIN
03713  M00S03713.sslabel +++|        PROC BZFILL;                 # BLANK OR ZERO FILLS A BUFFER #
03714  M00S03714.sslabel +++|        PROC LBCONV;                 # CONVERT PARAMETERS TO INTEGERS #
03715  M00S03715.sslabel +++|        PROC LBERR;                  # *SSLABEL* ERROR PROCESSOR #
03716  M00S03716.sslabel +++|        PROC LBOPT;                  # CHECKS FOR VALID OPTIONS #
03717  M00S03717.sslabel +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
03718  M00S03718.sslabel +++|        PROC MESSAGE;                # DISPLAYS MESSAGES #
03719  M00S03719.sslabel +++|        PROC READC;                  # READS IN A CODED LINE #
03720  M00S03720.sslabel +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
03721  M00S03721.sslabel +++|                                       OR RETURN #
03722  M00S03722.sslabel +++|        PROC RETERN;                 # RETURNS A FILE #
03723  M00S03723.sslabel +++|        PROC REWIND;                 # REWINDS A FILE #
03724  M00S03724.sslabel +++|        PROC RPLINE;                 # PRINTS A REPORT LINE #
03725  M00S03725.sslabel +++|        PROC RPSPACE;                # PRINTS A BLANK LINE #
03726  M00S03726.sslabel +++|        PROC WRITER;                 # WRITES EOR ON A FILE #
03727  M00S03727.sslabel +++|        PROC WRITEW;                 # DATA TRANSFER ROUTINE #
03728  M00S03728.sslabel +++|        PROC XARG;                   # CRACK PARAMETER LIST #
03729  M00S03729.sslabel +++|        FUNC XCDD C(10);             # CONVERT INTEGERS TO DISPLAY #
03730  M00S03730.sslabel +++|        PROC ZFILL;                  # ZERO FILLS A BUFFER #
03731  M00S03731.sslabel +++|        PROC ZSETFET;                # SETS UP A CIO FET #
03732  M00S03732.sslabel +++|        END
03733  M00S03733.sslabel +++|
03734  M00S03734.sslabel +++|#
03735  M00S03735.sslabel +++|****  PROC LBLOOP - XREF LIST END.
03736  M00S03736.sslabel +++|#
03737  M00S03737.sslabel +++|
03738  M00S03738.sslabel +++|      DEF WBUFL #8#;                 # LENGTH OF WORKING BUFFER #
03739  M00S03739.sslabel +++|
03740  M00S03740.sslabel +++|      DEF LISTCON    #0#;            # DO NOT LIST THE COMDECKS #
03741  M00S03741.sslabel +++|*CALL COMBFAS
03742  M00S03742.sslabel +++|*CALL COMBBZF
03743  M00S03743.sslabel +++|*CALL COMTERR
03744  M00S03744.sslabel +++|*CALL COMTLAB
03745  M00S03745.sslabel +++|*CALL COMTLBP
03746  M00S03746.sslabel +++|*CALL COMTOUT
03747  M00S03747.sslabel +++|
03748  M00S03748.sslabel +++|      ITEM BUFP       I;             # FIRST WORD ADDRESS OF BUFFER #
03749  M00S03749.sslabel +++|      ITEM COMMENT    B = FALSE;     # INDICATES A COMMENT #
03750  M00S03750.sslabel +++|      ITEM DIRNUM     I;             # DIRECTIVE NUMBER #
03751  M00S03751.sslabel +++|      ITEM EOR        B = FALSE;     # EOR STATUS ON A FILE #
03752  M00S03752.sslabel +++|      ITEM FETP       I;             # FIRST WORD ADDRESS OF FET #
03753  M00S03753.sslabel +++|      ITEM FLAG       I;             # ERROR FLAG #
03754  M00S03754.sslabel +++|      ITEM TEMP       C(10);         # TEMPORARY ITEM #
03755  M00S03755.sslabel +++|
03756  M00S03756.sslabel +++|      ARRAY LBIN$WBUF [0:0] S(WBUFL);  # WORKING BUFFER #
03757  M00S03757.sslabel +++|        BEGIN
03758  M00S03758.sslabel +++|        ITEM LBINW$DIR  C(00,00,80);  # *SSLABEL* DIRECTIVE IMAGE #
03759  M00S03759.sslabel +++|        END
03760  M00S03760.sslabel +++|
03761  M00S03761.sslabel +++|                                               CONTROL EJECT;
03762  M00S03762.sslabel +++|
03763  M00S03763.sslabel +++|      DIRNUM = 0;                    # INITIALIZE DIRECTIVE NUMBER #
03764  M00S03764.sslabel +++|
03765  M00S03765.sslabel +++|#
03766  M00S03766.sslabel +++|*     SET UP FET FOR TEMPORARY FILE.
03767  M00S03767.sslabel +++|#
03768  M00S03768.sslabel +++|
03769  M00S03769.sslabel +++|      FETP = LOC(SCR$FET[0]);
03770  M00S03770.sslabel +++|      BUFP = LOC(SCR$BUF[0]);
03771  M00S03771.sslabel +++|      ZSETFET(FETP,SCR,BUFP,BUFL,SFETL);
03772  M00S03772.sslabel +++|      LOFPROC(SCR);                  # ADD LFN TO LIST OF FILES #
03773  M00S03773.sslabel +++|
03774  M00S03774.sslabel +++|#
03775  M00S03775.sslabel +++|*     SET UP A LOOP TO
03776  M00S03776.sslabel +++|*     1. READ A DIRECTIVE.
03777  M00S03777.sslabel +++|*     2. CRACK THE DIRECTIVE.
03778  M00S03778.sslabel +++|*     3. CONVERT PARAMETERS.
03779  M00S03779.sslabel +++|*     4. CHECK FOR VALID OPTIONS.
03780  M00S03780.sslabel +++|*     5. WRITE THE DIRECTIVE TO A TEMPORARY FILE.
03781  M00S03781.sslabel +++|#
03782  M00S03782.sslabel +++|
03783  M00S03783.sslabel +++|      RETERN(SCR$FET[0],RCL);        # RETURN THE TEMPORARY FILE #
03784  M00S03784.sslabel +++|
03785  M00S03785.sslabel +++|      FASTFOR DUMMY = 0 STEP 1 WHILE NOT EOR
03786  M00S03786.sslabel +++|      DO
03787  M00S03787.sslabel +++|        BEGIN  # CRACK AND SYNTAX CHECK DIRECTIVES #
03788  M00S03788.sslabel +++|        ZFILL(LBIN$WBUF[0],WBUFL);   # ZERO FILL WORKING BUFFER #
03789  M00S03789.sslabel +++|        READC(LBIN$FET[0],LBIN$WBUF[0],WBUFL,FLAG);
03790  M00S03790.sslabel +++|        IF FLAG NQ 0
03791  M00S03791.sslabel +++|        THEN                         # NO MORE DIRECTIVES #
03792  M00S03792.sslabel +++|          BEGIN
03793  M00S03793.sslabel +++|          EOR = TRUE;
03794  M00S03794.sslabel +++|          TEST DUMMY;
03795  M00S03795.sslabel +++|          END
03796  M00S03796.sslabel +++|
03797  M00S03797.sslabel +++|#
03798  M00S03798.sslabel +++|*     CHECK FOR A COMMENT.
03799  M00S03799.sslabel +++|#
03800  M00S03800.sslabel +++|
03801  M00S03801.sslabel +++|        IF C<0,1>LBINW$DIR[0] EQ "*"
03802  M00S03802.sslabel +++|        THEN                         # A COMMENT #
03803  M00S03803.sslabel +++|          BEGIN
03804  M00S03804.sslabel +++|          COMMENT = TRUE;
03805  M00S03805.sslabel +++|          TEMP = " ";
03806  M00S03806.sslabel +++|          END
03807  M00S03807.sslabel +++|
03808  M00S03808.sslabel +++|        ELSE                         # A DIRECTIVE #
03809  M00S03809.sslabel +++|          BEGIN
03810  M00S03810.sslabel +++|          COMMENT = FALSE;
03811  M00S03811.sslabel +++|          DIRNUM = DIRNUM + 1;
03812  M00S03812.sslabel +++|          TEMP = XCDD(DIRNUM);       # WRITE DIRECTIVE NUMBER #
03813  M00S03813.sslabel +++|          TEMP = C<7,3>TEMP;
03814  M00S03814.sslabel +++|          END
03815  M00S03815.sslabel +++|
03816  M00S03816.sslabel +++|#
03817  M00S03817.sslabel +++|*     WRITE THE DIRECTIVE NUMBER AND THE DIRECTIVE
03818  M00S03818.sslabel +++|*     IMAGE TO THE OUTPUT FILE.
03819  M00S03819.sslabel +++|#
03820  M00S03820.sslabel +++|
03821  M00S03821.sslabel +++|        BZFILL(LBIN$WBUF[0],TYPFILL"BFILL",80);
03822  M00S03822.sslabel +++|        RPLINE(OUT$FETP,TEMP,2,5,1);
03823  M00S03823.sslabel +++|        RPLINE(OUT$FETP,LBINW$DIR[0],8,80,0);
03824  M00S03824.sslabel +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
03825  M00S03825.sslabel +++|
03826  M00S03826.sslabel +++|        IF COMMENT
03827  M00S03827.sslabel +++|        THEN
03828  M00S03828.sslabel +++|          BEGIN
03829  M00S03829.sslabel +++|          TEST DUMMY;                # READ THE NEXT DIRECTIVE #
03830  M00S03830.sslabel +++|          END
03831  M00S03831.sslabel +++|
03832  M00S03832.sslabel +++|#
03833  M00S03833.sslabel +++|*     ZERO FILL THE AREA TO HOLD THE DIRECTIVE
03834  M00S03834.sslabel +++|*     IMAGE AND THE CRACKED PARAMETERS.
03835  M00S03835.sslabel +++|#
03836  M00S03836.sslabel +++|
03837  M00S03837.sslabel +++|        ZFILL(LBARG[0],DIRPRML);
03838  M00S03838.sslabel +++|
03839  M00S03839.sslabel +++|#
03840  M00S03840.sslabel +++|*     SET UP THE DIRECTIVE IMAGE AND THE DIRECTIVE
03841  M00S03841.sslabel +++|*     NUMBER IN THE AREA TO BE WRITTEN TO THE
03842  M00S03842.sslabel +++|*     TEMPORARY FILE.
03843  M00S03843.sslabel +++|#
03844  M00S03844.sslabel +++|
03845  M00S03845.sslabel +++|        LBARG$DIRN[0] = TEMP;
03846  M00S03846.sslabel +++|        LBARG$DIRI[0] = LBINW$DIR[0];  # DIRECTIVE IMAGE #
03847  M00S03847.sslabel +++|
03848  M00S03848.sslabel +++|#
03849  M00S03849.sslabel +++|*     CRACK THE DIRECTIVE.
03850  M00S03850.sslabel +++|#
03851  M00S03851.sslabel +++|
03852  M00S03852.sslabel +++|      LBARG$GR[0] = 7777;
03853  M00S03853.sslabel +++|        XARG(ARGLIST,LBIN$WBUF[0],FLAG);  # OPTION IS *DO NOT SKIP OVER
03854  M00S03854.sslabel +++|                                            PROGRAM NAME* #
03855  M00S03855.sslabel +++|        IF FLAG NQ 0
03856  M00S03856.sslabel +++|        THEN                         # SYNTAX ERROR #
03857  M00S03857.sslabel +++|          BEGIN
03858  M00S03858.sslabel +++|          LBARG$DIRF[0] = TRUE;      # SET UP ERROR FLAGS #
03859  M00S03859.sslabel +++|          ERRFLAG = TRUE;
03860  M00S03860.sslabel +++|          END
03861  M00S03861.sslabel +++|
03862  M00S03862.sslabel +++|#
03863  M00S03863.sslabel +++|*     IF NO SYNTAX ERROR IN THE DIRECTIVE THEN CONVERT
03864  M00S03864.sslabel +++|*     THE PARAMETERS FROM DISPLAY CODE TO INTEGER VALUE.
03865  M00S03865.sslabel +++|#
03866  M00S03866.sslabel +++|
03867  M00S03867.sslabel +++|        IF NOT LBARG$DIRF[0]
03868  M00S03868.sslabel +++|        THEN                         # NO ERROR IN DIRECTIVE #
03869  M00S03869.sslabel +++|          BEGIN
03870  M00S03870.sslabel +++|          LBCONV(FLAG);              # CONVERT PARAMETERS #
03871  M00S03871.sslabel +++|          IF FLAG NQ 0
03872  M00S03872.sslabel +++|          THEN                       # CONVERSION ERROR #
03873  M00S03873.sslabel +++|            BEGIN
03874  M00S03874.sslabel +++|            LBARG$DIRF[0] = TRUE;    # SET UP ERROR FLAGS #
03875  M00S03875.sslabel +++|            ERRFLAG = TRUE;
03876  M00S03876.sslabel +++|            END
03877  M00S03877.sslabel +++|
03878  M00S03878.sslabel +++|          END
03879  M00S03879.sslabel +++|
03880  M00S03880.sslabel +++|#
03881  M00S03881.sslabel +++|*     IF AN ERROR IS FOUND IN THE DIRECTIVE, REPORT
03882  M00S03882.sslabel +++|*     IT ON THE OUTPUT FILE.
03883  M00S03883.sslabel +++|#
03884  M00S03884.sslabel +++|
03885  M00S03885.sslabel +++|        IF LBARG$DIRF[0]
03886  M00S03886.sslabel +++|        THEN                         # ERROR IN THE DIRECTIVE #
03887  M00S03887.sslabel +++|          BEGIN
03888  M00S03888.sslabel +++|          ERRCODE = S"SYNTX$DIR";
03889  M00S03889.sslabel +++|          LBERR(ERRCODE);            # PROCESS THE ERROR #
03890  M00S03890.sslabel +++|          END
03891  M00S03891.sslabel +++|
03892  M00S03892.sslabel +++|#
03893  M00S03893.sslabel +++|*     IF THERE IS NO ERROR IN THE DIRECTIVE, CHECK
03894  M00S03894.sslabel +++|*     FOR ALL THE VALID OPTIONS ON THE DIRECTIVE
03895  M00S03895.sslabel +++|*     CALL.
03896  M00S03896.sslabel +++|#
03897  M00S03897.sslabel +++|
03898  M00S03898.sslabel +++|        IF NOT LBARG$DIRF[0]
03899  M00S03899.sslabel +++|        THEN                         # CHECK FOR VALID OPTIONS #
03900  M00S03900.sslabel +++|          BEGIN
03901  M00S03901.sslabel +++|          LBOPT(FLAG);
03902  M00S03902.sslabel +++|          IF FLAG NQ 0
03903  M00S03903.sslabel +++|          THEN                       # VALID OPTIONS VIOLATED #
03904  M00S03904.sslabel +++|            BEGIN
03905  M00S03905.sslabel +++|            LBARG$DIRF[0] = TRUE;    # SET UP ERROR FLAGS #
03906  M00S03906.sslabel +++|            ERRFLAG = TRUE;
03907  M00S03907.sslabel +++|            END
03908  M00S03908.sslabel +++|
03909  M00S03909.sslabel +++|          END
03910  M00S03910.sslabel +++|
03911  M00S03911.sslabel +++|#
03912  M00S03912.sslabel +++|*     WRITE THE DIRECTIVE IMAGE ALONG WITH THE DIRECTIVE
03913  M00S03913.sslabel +++|*     NUMBER, DIRECTIVE FLAG AND THE CRACKED PARAMETERS
03914  M00S03914.sslabel +++|*     ON THE TEMPORARY FILE.
03915  M00S03915.sslabel +++|#
03916  M00S03916.sslabel +++|
03917  M00S03917.sslabel +++|        WRITEW(SCR$FET[0],LBARG[0],DIRPRML,FLAG);
03918  M00S03918.sslabel +++|        END  # CRACK AND SYNTAX CHECK DIRECTIVES #
03919  M00S03919.sslabel +++|
03920  M00S03920.sslabel +++|      IF DIRNUM EQ 0
03921  M00S03921.sslabel +++|      THEN                           # NO DIRECTIVES #
03922  M00S03922.sslabel +++|        BEGIN
03923  M00S03923.sslabel +++|        LBMSG$LINE[0] = " SSLABEL - NO DIRECTIVES.";
03924  M00S03924.sslabel +++|        MESSAGE(LBMSG$BUF[0],SYSUDF1);
03925  M00S03925.sslabel +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
03926  M00S03926.sslabel +++|        END
03927  M00S03927.sslabel +++|
03928  M00S03928.sslabel +++|      WRITER(SCR$FET[0],NRCL);
03929  M00S03929.sslabel +++|      REWIND(SCR$FET[0],NRCL);
03930  M00S03930.sslabel +++|      RETURN;                        # ALL DIRECTIVES CRACKED #
03931  M00S03931.sslabel +++|
03932  M00S03932.sslabel +++|      END  # LBLOOP #
03933  M00S03933.sslabel +++|
03934  M00S03934.sslabel +++|    TERM
03935  M00S03935.sslabel +++|PROC LBMAIN;
03936  M00S03936.sslabel +++|# TITLE LBMAIN - PROCESSES *SSLABEL* DIRECTIVES.                      #
03937  M00S03937.sslabel +++|
03938  M00S03938.sslabel +++|      BEGIN  # LBMAIN #
03939  M00S03939.sslabel +++|
03940  M00S03940.sslabel +++|#
03941  M00S03941.sslabel +++|**    LBMAIN - PROCESSES *SSLABEL* DIRECTIVES.
03942  M00S03942.sslabel +++|*
03943  M00S03943.sslabel +++|*     THIS PROCEDURE PROCESSES DIRECTIVES BY CALLING
03944  M00S03944.sslabel +++|*     THE APPROPRIATE DIRECTIVE ROUTINES.
03945  M00S03945.sslabel +++|*
03946  M00S03946.sslabel +++|*     PROC LBMAIN.
03947  M00S03947.sslabel +++|*
03948  M00S03948.sslabel +++|*     ENTRY     THE TEMPORARY FILE SET UP WITH
03949  M00S03949.sslabel +++|*               THE DIRECTIVE IMAGES ALONG WITH THE
03950  M00S03950.sslabel +++|*               CRACKED PARAMETERS.
03951  M00S03951.sslabel +++|*
03952  M00S03952.sslabel +++|*     EXIT      ALL DIRECTIVES HAVE BEEN PROCESSED.
03953  M00S03953.sslabel +++|*
03954  M00S03954.sslabel +++|*     MESSAGES  FAMILY NOT FOUND.
03955  M00S03955.sslabel +++|*
03956  M00S03956.sslabel +++|*     NOTES     THE CRACKED PARAMETER FILE IS READ (UNTIL EOI)
03957  M00S03957.sslabel +++|*               INTO WORKING STORAGE.  FOR EACH DIRECTIVE, THE
03958  M00S03958.sslabel +++|*               DIRECTIVE IMAGE IS WRITTEN ON THE OUTPUT FILE
03959  M00S03959.sslabel +++|*               AND THE SMMAP IS OPENED.  IF THIS OPEN FAILS,
03960  M00S03960.sslabel +++|*               OR IF THE SYNTAX ERROR FLAG IS SET FOR THIS
03961  M00S03961.sslabel +++|*               DIRECTIVE, THEN THE ERROR PROCESSOR IS CALLED.
03962  M00S03962.sslabel +++|*               OTHERWISE THE CORRESPONDING DIRECTIVE ROUTINE
03963  M00S03963.sslabel +++|*               IS CALLED.
03964  M00S03964.sslabel +++|#
03965  M00S03965.sslabel +++|
03966  M00S03966.sslabel +++|#
03967  M00S03967.sslabel +++|****  PROC LBMAIN - XREF LIST BEGIN.
03968  M00S03968.sslabel +++|#
03969  M00S03969.sslabel +++|
03970  M00S03970.sslabel +++|      XREF
03971  M00S03971.sslabel +++|        BEGIN
03972  M00S03972.sslabel +++|        PROC SSINIT;                # SET UP TABLES AND POINTERS #
03973  M00S03973.sslabel +++|        PROC LBADCSU;                # ADD *SM* DIRECTIVE (AC) #
03974  M00S03974.sslabel +++|        PROC LBADCUB;                # ADD CUBE (AB) #
03975  M00S03975.sslabel +++|        PROC LBADMSC;                # ADD CARTRIDGE (AM) #
03976  M00S03976.sslabel +++|        PROC LBERR;                  # *SSLABEL* ERROR PROCESSOR #
03977  M00S03977.sslabel +++|        PROC LBFLMSC;                # SET/CLEAR FCT INHIB FLAG (IB) #
03978  M00S03978.sslabel +++|        PROC LBFXVSN;                # REPAIR LABEL (FX) #
03979  M00S03979.sslabel +++|        PROC LBRESP;                 # RESPONSE CODE PROCESSOR #
03980  M00S03980.sslabel +++|        PROC LBRMCSU;                # REMOVE *SM* DIRECTIVE (RC) #
03981  M00S03981.sslabel +++|        PROC LBRMCUB;                # REMOVE CUBE DIRECTIVE (RB) #
03982  M00S03982.sslabel +++|        PROC LBRMMSC;                # REMOVE CARTRIDGE (RM) #
03983  M00S03983.sslabel +++|        PROC LBRSMSC;                # RESTORE A CARTRIDGE (RS) #
03984  M00S03984.sslabel +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
03985  M00S03985.sslabel +++|        PROC MESSAGE;                # DISPLAYS MESSAGES #
03986  M00S03986.sslabel +++|        PROC MOPEN;                  # OPEN SMMAP #
03987  M00S03987.sslabel +++|        PROC READ;                   # CIO READ MACRO #
03988  M00S03988.sslabel +++|        PROC READW;                  # CIO READW MACRO #
03989  M00S03989.sslabel +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
03990  M00S03990.sslabel +++|                                       OR RETURN #
03991  M00S03991.sslabel +++|        PROC RETERN;                 # RETURN MACRO #
03992  M00S03992.sslabel +++|        PROC RPLINE;                 # PRINT FORMATTER ROUTINE #
03993  M00S03993.sslabel +++|        PROC RPSPACE;                # PRINTS BLANK LINES #
03994  M00S03994.sslabel +++|        PROC SETPFP;                 # SET FAMILY AND USER INDEX #
03995  M00S03995.sslabel +++|        END
03996  M00S03996.sslabel +++|
03997  M00S03997.sslabel +++|#
03998  M00S03998.sslabel +++|****  PROC LBMAIN - XREF LIST END.
03999  M00S03999.sslabel +++|#
04000  M00S04000.sslabel +++|
04001  M00S04001.sslabel +++|      DEF MSG1 #" FAMILY NOT FOUND."#;
04002  M00S04002.sslabel +++|
04003  M00S04003.sslabel +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
04004  M00S04004.sslabel +++|*CALL COMBFAS
04005  M00S04005.sslabel +++|*CALL COMBCMD
04006  M00S04006.sslabel +++|*CALL COMBCMS
04007  M00S04007.sslabel +++|*CALL COMBCPR
04008  M00S04008.sslabel +++|*CALL COMBLBL
04009  M00S04009.sslabel +++|*CALL COMBPFP
04010  M00S04010.sslabel +++|*CALL COMBSNS
04011  M00S04011.sslabel +++|*CALL COMSPFM
04012  M00S04012.sslabel +++|*CALL COMTERR
04013  M00S04013.sslabel +++|*CALL COMTLAB
04014  M00S04014.sslabel +++|*CALL COMTLBP
04015  M00S04015.sslabel +++|*CALL COMTOUT
04016  M00S04016.sslabel +++|
04017  M00S04017.sslabel +++|      ITEM J          I;             # LOOP VARIABLE #
04018  M00S04018.sslabel +++|      ITEM MSTAT      S:CMASTAT;     # ERROR STATUS #
04019  M00S04019.sslabel +++|      ITEM RDWSTAT    I = 0;         # ERROR STATUS #
04020  M00S04020.sslabel +++|
04021  M00S04021.sslabel +++|      ARRAY CMAP$NM [0:0] P(1);      # BUILD SMMAP FILE NAME #
04022  M00S04022.sslabel +++|        BEGIN
04023  M00S04023.sslabel +++|        ITEM CMAP$NAME  C(00,00,07);  # SMMAP FILE NAME #
04024  M00S04024.sslabel +++|        ITEM CMAP$IN    C(00,00,05);  # FIRST 5 CHARACTERS #
04025  M00S04025.sslabel +++|        ITEM CMAP$ID    C(00,30,01);  # CSU-ID #
04026  M00S04026.sslabel +++|        ITEM CMAP$Z     U(00,36,24) = [0];  # ZERO FILL FILE NAME #
04027  M00S04027.sslabel +++|        END
04028  M00S04028.sslabel +++|
04029  M00S04029.sslabel +++|      ARRAY DRW$STAT [0:0] S(SNSLEN);;  # DRAWER STATUS TABLE #
04030  M00S04030.sslabel +++|
04031  M00S04031.sslabel +++|#
04032  M00S04032.sslabel +++|*     BUFFERS TO HOLD THE OLD CARTRIDGE LABEL
04033  M00S04033.sslabel +++|*     AND THE NEW CARTRIDGE LABEL.
04034  M00S04034.sslabel +++|#
04035  M00S04035.sslabel +++|
04036  M00S04036.sslabel +++|      ARRAY OLDLABEL [0:0] S(LABLEN);;
04037  M00S04037.sslabel +++|      ARRAY NEWLABEL [0:0] S(LABLEN);;
04038  M00S04038.sslabel +++|
04039  M00S04039.sslabel +++|#
04040  M00S04040.sslabel +++|*     SWITCH TO PROCESS ALL THE *SSLABEL*
04041  M00S04041.sslabel +++|*     DIRECTIVES.  THE ORDER OF THE SWITCH
04042  M00S04042.sslabel +++|*     LABELS IS THE SAME AS THE DIRECTIVE
04043  M00S04043.sslabel +++|*     NAMES SET UP IN ARRAY *DIR$NAME*
04044  M00S04044.sslabel +++|*     DEFINED IN *COMTLAB*.
04045  M00S04045.sslabel +++|#
04046  M00S04046.sslabel +++|
04047  M00S04047.sslabel +++|      SWITCH DIR$ACT                 # SWITCH TO PROCESS DIRECTIVES #
04048  M00S04048.sslabel +++|        ADDCUBE,                     # ADD CUBES TO A FAMILY OR POOL #
04049  M00S04049.sslabel +++|      ADDCSU,                        # ADD A *SM* TO FAMILY CATALOG #
04050  M00S04050.sslabel +++|      ADDMSC,                        # ADD CARTRIDGES TO FAMILY OR POOL
04051  M00S04051.sslabel +++|                                     #
04052  M00S04052.sslabel +++|      FIXVSN,                        # FIX A CARTRIDGE VSN #
04053  M00S04053.sslabel +++|      FLAGFRE,                       # TURN FREE FLAG ON OR OFF #
04054  M00S04054.sslabel +++|      FLAGMSC,                       # TURN A FLAG ON OR OFF #
04055  M00S04055.sslabel +++|      RMVCSU,                        # REMOVE A *SM* FROM FAMILY CATALOG
04056  M00S04056.sslabel +++|                                     #
04057  M00S04057.sslabel +++|      RMVCUBE,                       # REMOVE A CUBE FROM A FAMILY OR
04058  M00S04058.sslabel +++|                                       POOL #
04059  M00S04059.sslabel +++|      RMVMSC,                        # REMOVE CARTRIDGES FROM FAMILY OR
04060  M00S04060.sslabel +++|                                       POOL #
04061  M00S04061.sslabel +++|      RSTRMSC;                       # RESTORE A LOST CARTRIDGE #
04062  M00S04062.sslabel +++|
04063  M00S04063.sslabel +++|                                               CONTROL EJECT;
04064  M00S04064.sslabel +++|
04065  M00S04065.sslabel +++|#
04066  M00S04066.sslabel +++|*     SET UP THE POINTERS OF THE BASED ARRAYS AND
04067  M00S04067.sslabel +++|*     THE ADDRESSES OF THE BUFFERS.
04068  M00S04068.sslabel +++|#
04069  M00S04069.sslabel +++|
04070  M00S04070.sslabel +++|                                     # DRAWER RELATED #
04071  M00S04071.sslabel +++|      OLDLABP = LOC(OLDLABEL[0]);
04072  M00S04072.sslabel +++|      NEWLABP = LOC(NEWLABEL[0]);
04073  M00S04073.sslabel +++|      CMAP$IN[0] = SMMAP;
04074  M00S04074.sslabel +++|
04075  M00S04075.sslabel +++|#
04076  M00S04076.sslabel +++|*     INITIALIZE THE FETS, BUFFERS ,TABLES AND
04077  M00S04077.sslabel +++|*     THE POINTERS FOR THE CATALOG AND THE MAP
04078  M00S04078.sslabel +++|*     ACCESS ROUTINES.
04079  M00S04079.sslabel +++|#
04080  M00S04080.sslabel +++|
04081  M00S04081.sslabel +++|      SSINIT;
04082  M00S04082.sslabel +++|      READ(SCR$FET[0],NRCL);
04083  M00S04083.sslabel +++|
04084  M00S04084.sslabel +++|#
04085  M00S04085.sslabel +++|*     READ EACH DIRECTIVE AREA FROM THE SCRATCH FILE.
04086  M00S04086.sslabel +++|#
04087  M00S04087.sslabel +++|
04088  M00S04088.sslabel +++|      REPEAT WHILE RDWSTAT EQ 0
04089  M00S04089.sslabel +++|      DO
04090  M00S04090.sslabel +++|        BEGIN  # PROCESS DIRECTIVES #
04091  M00S04091.sslabel +++|        READW(SCR$FET[0],LBARG[0],DIRPRML,RDWSTAT);
04092  M00S04092.sslabel +++|        IF RDWSTAT NQ 0
04093  M00S04093.sslabel +++|        THEN                         # EOI REACHED #
04094  M00S04094.sslabel +++|          BEGIN
04095  M00S04095.sslabel +++|          TEST DUMMY;
04096  M00S04096.sslabel +++|          END
04097  M00S04097.sslabel +++|
04098  M00S04098.sslabel +++|#
04099  M00S04099.sslabel +++|*     WRITE DIRECTIVE NUMBER AND IMAGE TO OUTPUT FILE.
04100  M00S04100.sslabel +++|#
04101  M00S04101.sslabel +++|
04102  M00S04102.sslabel +++|        RPLINE(OUT$FETP,LBARG$DIRN[0],2,5,1);
04103  M00S04103.sslabel +++|        RPLINE(OUT$FETP,LBARG$DIRI[0],8,80,0);
04104  M00S04104.sslabel +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
04105  M00S04105.sslabel +++|        IF LBARG$DIRF[0]
04106  M00S04106.sslabel +++|        THEN                         # CHECK SYNTAX ERROR FLAG #
04107  M00S04107.sslabel +++|          BEGIN
04108  M00S04108.sslabel +++|          RPLINE(OUT$FETP,"*** SYNTAX ERROR",2,16,0);
04109  M00S04109.sslabel +++|          TEST DUMMY;
04110  M00S04110.sslabel +++|          END
04111  M00S04111.sslabel +++|
04112  M00S04112.sslabel +++|#
04113  M00S04113.sslabel +++|*     IF *FM* IS NOT SPECIFIED, USE THE DEFAULT FAMILY.
04114  M00S04114.sslabel +++|#
04115  M00S04115.sslabel +++|
04116  M00S04116.sslabel +++|        IF (LBARG$ZFM[0] EQ 0 AND LBARG$OP[0] NQ "FX")  ##
04117  M00S04117.sslabel +++|          OR LBARG$ZFM[0] EQ -1
04118  M00S04118.sslabel +++|        THEN
04119  M00S04119.sslabel +++|          BEGIN
04120  M00S04120.sslabel +++|          LBARG$FM[0] = DEF$FAM;
04121  M00S04121.sslabel +++|          END
04122  M00S04122.sslabel +++|
04123  M00S04123.sslabel +++|        PFP$WRD0[0] = 0;             # SET FAMILY AND USER INDEX #
04124  M00S04124.sslabel +++|        PFP$FAM[0] = DEF$FAM;
04125  M00S04125.sslabel +++|        PFP$UI[0] = DEF$UI;
04126  M00S04126.sslabel +++|        PFP$FG1[0] = TRUE;
04127  M00S04127.sslabel +++|        PFP$FG4[0] = TRUE;
04128  M00S04128.sslabel +++|        SETPFP(PFP);
04129  M00S04129.sslabel +++|        IF PFP$STAT[0] NQ 0
04130  M00S04130.sslabel +++|        THEN                         # FAMILY NOT FOUND #
04131  M00S04131.sslabel +++|          BEGIN
04132  M00S04132.sslabel +++|          LBMSG$LN[0] = MSG1;
04133  M00S04133.sslabel +++|          MESSAGE(LBMSG[0],SYSUDF1);
04134  M00S04134.sslabel +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
04135  M00S04135.sslabel +++|          END
04136  M00S04136.sslabel +++|
04137  M00S04137.sslabel +++|#
04138  M00S04138.sslabel +++|*     OPEN SMUMAP.
04139  M00S04139.sslabel +++|#
04140  M00S04140.sslabel +++|
04141  M00S04141.sslabel +++|        CMAP$ID[0] = LBARG$SM[0];    # SET UP THE *SM* ID #
04142  M00S04142.sslabel +++|        MOPEN(LBARG$SMID[0],CMAP$NAME[0],"RM",MSTAT);
04143  M00S04143.sslabel +++|        IF MSTAT EQ S"NOERR"
04144  M00S04144.sslabel +++|        THEN
04145  M00S04145.sslabel +++|          BEGIN
04146  M00S04146.sslabel +++|          LOFPROC(CMAP$NAME[0]);     # ADD LFN TO LIST OF FILES #
04147  M00S04147.sslabel +++|          END
04148  M00S04148.sslabel +++|
04149  M00S04149.sslabel +++|        PFP$UI[0] = DEF$UI + LBARG$SB[0];
04150  M00S04150.sslabel +++|        PFP$FAM[0] = LBARG$FM[0];
04151  M00S04151.sslabel +++|        SETPFP(PFP);
04152  M00S04152.sslabel +++|        IF PFP$STAT[0] NQ 0
04153  M00S04153.sslabel +++|          AND LBARG$OP[0] NQ "FX"
04154  M00S04154.sslabel +++|        THEN                         # FAMILY NOT FOUND #
04155  M00S04155.sslabel +++|          BEGIN
04156  M00S04156.sslabel +++|          LBMSG$LN[0] = MSG1;
04157  M00S04157.sslabel +++|          MESSAGE(LBMSG[0],SYSUDF1);
04158  M00S04158.sslabel +++|          RESTPFP(PFP$ABORT);        # RESTORE PFP #
04159  M00S04159.sslabel +++|          END
04160  M00S04160.sslabel +++|
04161  M00S04161.sslabel +++|#
04162  M00S04162.sslabel +++|*     IF THERE IS ANY ERROR OTHER THAN
04163  M00S04163.sslabel +++|*     *FILE ALREADY OPEN*, PROCESS THE
04164  M00S04164.sslabel +++|*     ERROR STATUS.
04165  M00S04165.sslabel +++|#
04166  M00S04166.sslabel +++|
04167  M00S04167.sslabel +++|        IF MSTAT NQ S"NOERR" AND MSTAT NQ S"FOPEN"
04168  M00S04168.sslabel +++|        THEN
04169  M00S04169.sslabel +++|          BEGIN
04170  M00S04170.sslabel +++|          LBRESP(MSTAT,0);
04171  M00S04171.sslabel +++|          TEST DUMMY;
04172  M00S04172.sslabel +++|          END
04173  M00S04173.sslabel +++|
04174  M00S04174.sslabel +++|#
04175  M00S04175.sslabel +++|*     PROCESS THE DIRECTIVE.
04176  M00S04176.sslabel +++|#
04177  M00S04177.sslabel +++|
04178  M00S04178.sslabel +++|        SLOWFOR J = 0 STEP 1 UNTIL 9
04179  M00S04179.sslabel +++|        DO
04180  M00S04180.sslabel +++|          BEGIN
04181  M00S04181.sslabel +++|          IF DIR$NM[J] EQ LBARG$OP[0]
04182  M00S04182.sslabel +++|          THEN                       # FIND MATCHING DIRECTIVE #
04183  M00S04183.sslabel +++|            BEGIN
04184  M00S04184.sslabel +++|            GOTO DIR$ACT[J];
04185  M00S04185.sslabel +++|            END
04186  M00S04186.sslabel +++|
04187  M00S04187.sslabel +++|          END
04188  M00S04188.sslabel +++|
04189  M00S04189.sslabel +++|ADDCUBE:
04190  M00S04190.sslabel +++|        LBADCUB;
04191  M00S04191.sslabel +++|        TEST DUMMY;
04192  M00S04192.sslabel +++|
04193  M00S04193.sslabel +++|ADDCSU:                              # ADD *SM* TO FAMILY CATALOG #
04194  M00S04194.sslabel +++|        LBADCSU;
04195  M00S04195.sslabel +++|        TEST DUMMY;
04196  M00S04196.sslabel +++|
04197  M00S04197.sslabel +++|ADDMSC:                              # ADD CARTRIDGES TO FAMILY/POOL #
04198  M00S04198.sslabel +++|        LBADMSC;
04199  M00S04199.sslabel +++|        TEST DUMMY;
04200  M00S04200.sslabel +++|
04201  M00S04201.sslabel +++|FIXVSN:                              # FIX CARTRIDGE VSN #
04202  M00S04202.sslabel +++|        LBFXVSN;
04203  M00S04203.sslabel +++|        TEST DUMMY;
04204  M00S04204.sslabel +++|
04205  M00S04205.sslabel +++|FLAGFRE:                             # TURN FREE FLAG ON OR OFF #
04206  M00S04206.sslabel +++|
04207  M00S04207.sslabel +++|FLAGMSC:                             # TURN A FLAG ON OR OFF #
04208  M00S04208.sslabel +++|        LBFLMSC;
04209  M00S04209.sslabel +++|        TEST DUMMY;
04210  M00S04210.sslabel +++|
04211  M00S04211.sslabel +++|RMVCSU:                              # REMOVE *SM* FROM FAMILY CATALOG #
04212  M00S04212.sslabel +++|        LBRMCSU;
04213  M00S04213.sslabel +++|        TEST DUMMY;
04214  M00S04214.sslabel +++|
04215  M00S04215.sslabel +++|RMVCUBE:                             # REMOVE CUBE FROM FAMILY/POOL #
04216  M00S04216.sslabel +++|        LBRMCUB;
04217  M00S04217.sslabel +++|        TEST DUMMY;
04218  M00S04218.sslabel +++|
04219  M00S04219.sslabel +++|RMVMSC:                              # REMOVE FAMILY/POOL CARTRIDGES #
04220  M00S04220.sslabel +++|        LBRMMSC;
04221  M00S04221.sslabel +++|        TEST DUMMY;
04222  M00S04222.sslabel +++|
04223  M00S04223.sslabel +++|RSTRMSC:                             # RESTORE A LOST CARTRIDGE #
04224  M00S04224.sslabel +++|        LBRSMSC;
04225  M00S04225.sslabel +++|        TEST DUMMY;
04226  M00S04226.sslabel +++|
04227  M00S04227.sslabel +++|        END  # PROCESS DIRECTIVES #
04228  M00S04228.sslabel +++|
04229  M00S04229.sslabel +++|      RETURN;
04230  M00S04230.sslabel +++|
04231  M00S04231.sslabel +++|      END  # LBMAIN #
04232  M00S04232.sslabel +++|
04233  M00S04233.sslabel +++|    TERM
04234  M00S04234.sslabel +++|PROC LBOPT(ERRFLAG);
04235  M00S04235.sslabel +++|# TITLE LBOPT - TESTS FOR VALID *SSLABEL* DIRECTIVES.                 #
04236  M00S04236.sslabel +++|
04237  M00S04237.sslabel +++|      BEGIN  # LBOPT #
04238  M00S04238.sslabel +++|
04239  M00S04239.sslabel +++|#
04240  M00S04240.sslabel +++|**    LBOPT - TESTS FOR VALID *SSLABEL* DIRECTIVE OPTIONS.
04241  M00S04241.sslabel +++|*
04242  M00S04242.sslabel +++|*     THIS PROCEDURE CHECKS THE *SSLABEL* DIRECTIVE OPTIONS
04243  M00S04243.sslabel +++|*     SPECIFIED, AND IF AN INVALID OPTION IS FOUND THE
04244  M00S04244.sslabel +++|*     ERROR PROCESSOR IS CALLED WITH THE APPROPRIATE
04245  M00S04245.sslabel +++|*     ERROR CODE.
04246  M00S04246.sslabel +++|*
04247  M00S04247.sslabel +++|*     PROC LBOPT(ERRFLAG)
04248  M00S04248.sslabel +++|*
04249  M00S04249.sslabel +++|*     EXIT     ALL THE VALID OPTIONS CHECKED OR A VALID
04250  M00S04250.sslabel +++|*              OPTION VIOLATED.
04251  M00S04251.sslabel +++|*              ERRFLAG, AN ITEM CONTAINING THE ERROR STATUS.
04252  M00S04252.sslabel +++|*                  0, NO ERROR.
04253  M00S04253.sslabel +++|*                  1, VALID OPTION VIOLATED.
04254  M00S04254.sslabel +++|*
04255  M00S04255.sslabel +++|*     NOTES    ALL DIRECTIVE OPTIONS ARE TESTED FOR INVALID VALUES.
04256  M00S04256.sslabel +++|*              THE VALID OPTIONS ON *SSLABEL* DIRECTIVE CALLS ARE
04257  M00S04257.sslabel +++|*                  1.  *OP* MUST BE A LEGAL DIRECTIVE NAME.
04258  M00S04258.sslabel +++|*                  2.  *N* MUST BE 1 IF *CN* IS SPECIFIED.
04259  M00S04259.sslabel +++|*                  3.  *CN* MUST BE SPECIFIED WITH *RMVMSC* LOST
04260  M00S04260.sslabel +++|*                      OPTION.
04261  M00S04261.sslabel +++|*                  4.  *CN* MAY NOT BE SPECIFIED WHEN ANY *PK*
04262  M00S04262.sslabel +++|*                      OPTION IS USED.
04263  M00S04263.sslabel +++|*                  5.  *CN* MAY NOT BE SPECIFIED WITH *ADDCSU*,
04264  M00S04264.sslabel +++|*                      *RMVCSU*, *ADDCUBE* AND *RMVCUBE* DIRECTIVES.
04265  M00S04265.sslabel +++|*                  6.  VALID USES OF *PK* ARE
04266  M00S04266.sslabel +++|*                         OP=AM - PK=D OR PK=P
04267  M00S04267.sslabel +++|*                         OP=RM - PK=P OR PK=F
04268  M00S04268.sslabel +++|*                         OP=RB - PK=P OR PK=F OR PK=R
04269  M00S04269.sslabel +++|*                         PK=P MAY NOT BE SPECIFIED IF PT=P.
04270  M00S04270.sslabel +++|*                  7.  PT=P CANNOT BE SPECIFIED WHEN OP=AM AND
04271  M00S04271.sslabel +++|*                      *V* IS SPECIFIED.
04272  M00S04272.sslabel +++|*                  8.  VALID USES OF *PT* ARE
04273  M00S04273.sslabel +++|*                         OP=AM - PT=P OR PT=F
04274  M00S04274.sslabel +++|*                         OP=RM - PT=D OR PT=P
04275  M00S04275.sslabel +++|*                         OP=AB - PT=P OR PT=F OR PT=R
04276  M00S04276.sslabel +++|*                  9.  VALID USES OF *D* ARE FOR PK=D, OP=RS OR
04277  M00S04277.sslabel +++|*                      OP=FX.
04278  M00S04278.sslabel +++|*                  10. *GR* MUST BE BETWEEN 1 AND 20 AND IS
04279  M00S04279.sslabel +++|*                      VALID ONLY WITH OP=AM AND OP=RM.
04280  M00S04280.sslabel +++|*                 11.  *LS* IS VALID ONLY WITH OP=RM.
04281  M00S04281.sslabel +++|*                 12.  *SM* MUST BE IN A TO M RANGE.
04282  M00S04282.sslabel +++|*                 13.  *ON* OR *OF* CAN BE SPECIFIED ONLY FOR OP=IB.
04283  M00S04283.sslabel +++|*                 14.  *YF* AND *ZF* MUST BOTH BE SPECIFIED IF
04284  M00S04284.sslabel +++|*                      EITHER IS SPECIFIED.
04285  M00S04285.sslabel +++|*                 15.  *YF* AND *ZF* CAN BE SPECIFIED ONLY IF BOTH
04286  M00S04286.sslabel +++|*                      *YI* AND *ZI* ARE SPECIFIED.
04287  M00S04287.sslabel +++|*                 16.  *YI* AND *YF* MUST BE BETWEEN 0 TO 21.
04288  M00S04288.sslabel +++|*                 17.  *ZI* AND *ZF* MUST BE BETWEEN 0 TO 15.
04289  M00S04289.sslabel +++|*                 18.  *YF* MUST BE GREATER THAN OR EQUAL TO
04290  M00S04290.sslabel +++|*                      *YI* IF BOTH ARE SPECIFIED.
04291  M00S04291.sslabel +++|*                 19.  *ZF* MUST BE GREATER THAN OR EQUAL TO
04292  M00S04292.sslabel +++|*                      *ZI* IF BOTH ARE SPECIFIED.
04293  M00S04293.sslabel +++|*                 20.  *SB* MUST BE FROM 0 TO 7.
04294  M00S04294.sslabel +++|*                 21.  *B* IS VALID ONLY WITH OP=AB. IT MUST
04295  M00S04295.sslabel +++|*                  22.  *CC* PARAMETER IS VALID ONLY WITH *AM*, MAY
04296  M00S04296.sslabel +++|*                       NOT BE USED WITH ANY OTHER OPTIONS, AND CAN
04297  M00S04297.sslabel +++|*                       ONLY BE EQUAL TO 0 OR 15.
04298  M00S04298.sslabel +++|*                      BE BETWEEN 0 AND 1931.
04299  M00S04299.sslabel +++|*               ANY VIOLATION OF THE VALID OPTIONS CAUSES A
04300  M00S04300.sslabel +++|*               MESSAGE TO BE PRINTED ON THE REPORT FILE AND
04301  M00S04301.sslabel +++|*               IN THE DAYFILE AND AN ERROR STATUS IS RETURNED
04302  M00S04302.sslabel +++|*               TO THE CALLING PROCEDURE.  PROC *LBERR* DOES
04303  M00S04303.sslabel +++|*               ALL THE ERROR PROCESSING.
04304  M00S04304.sslabel +++|#
04305  M00S04305.sslabel +++|
04306  M00S04306.sslabel +++|      ITEM ERRFLAG    I;             # ERROR STATUS #
04307  M00S04307.sslabel +++|
04308  M00S04308.sslabel +++|#
04309  M00S04309.sslabel +++|****  PROC LBOPT - XREF LIST BEGIN.
04310  M00S04310.sslabel +++|#
04311  M00S04311.sslabel +++|
04312  M00S04312.sslabel +++|      XREF
04313  M00S04313.sslabel +++|        BEGIN
04314  M00S04314.sslabel +++|        PROC LBERR;                  # SSLABEL ERROR PROCESSOR #
04315  M00S04315.sslabel +++|        END
04316  M00S04316.sslabel +++|
04317  M00S04317.sslabel +++|#
04318  M00S04318.sslabel +++|****  PROC LBOPT - XREF LIST END.
04319  M00S04319.sslabel +++|#
04320  M00S04320.sslabel +++|
04321  M00S04321.sslabel +++|      DEF LISTCON #0#;               # DO NOT LIST COMDECKS #
04322  M00S04322.sslabel +++|*CALL COMBFAS
04323  M00S04323.sslabel +++|*CALL COMTERR
04324  M00S04324.sslabel +++|*CALL COMTLAB
04325  M00S04325.sslabel +++|*CALL COMTLBP
04326  M00S04326.sslabel +++|
04327  M00S04327.sslabel +++|      ITEM FOUND      B;             # SEARCH FLAG #
04328  M00S04328.sslabel +++|      ITEM I          I;             # LOOP VARIABLE #
04329  M00S04329.sslabel +++|
04330  M00S04330.sslabel +++|                                               CONTROL EJECT;
04331  M00S04331.sslabel +++|
04332  M00S04332.sslabel +++|      ERRFLAG = 0;
04333  M00S04333.sslabel +++|
04334  M00S04334.sslabel +++|#
04335  M00S04335.sslabel +++|*     TEST SSLABEL DIRECTIVE OPTIONS AND CALL LBERR WITH APPROPRIATE
04336  M00S04336.sslabel +++|*     ERROR CODE IF ERRORS ARE FOUND.
04337  M00S04337.sslabel +++|*     CHECK FOR A LEGAL DIRECTIVE NAME.
04338  M00S04338.sslabel +++|#
04339  M00S04339.sslabel +++|
04340  M00S04340.sslabel +++|      FOUND = FALSE;
04341  M00S04341.sslabel +++|      SLOWFOR I = 0 STEP 1 UNTIL 9
04342  M00S04342.sslabel +++|      DO
04343  M00S04343.sslabel +++|        BEGIN
04344  M00S04344.sslabel +++|        IF LBARG$OP[0] EQ DIR$NM[I]
04345  M00S04345.sslabel +++|        THEN
04346  M00S04346.sslabel +++|          BEGIN
04347  M00S04347.sslabel +++|          FOUND = TRUE;              # LEGAL DIRECTIVE NAME #
04348  M00S04348.sslabel +++|          END
04349  M00S04349.sslabel +++|
04350  M00S04350.sslabel +++|        END
04351  M00S04351.sslabel +++|
04352  M00S04352.sslabel +++|      IF NOT FOUND
04353  M00S04353.sslabel +++|      THEN
04354  M00S04354.sslabel +++|        BEGIN
04355  M00S04355.sslabel +++|        ERRCODE = S"ILL$DIRCTV";     # "ILLEGAL DIRECTIVE" #
04356  M00S04356.sslabel +++|        LBERR(ERRCODE);
04357  M00S04357.sslabel +++|        ERRFLAG = 1;
04358  M00S04358.sslabel +++|        RETURN;
04359  M00S04359.sslabel +++|        END
04360  M00S04360.sslabel +++|
04361  M00S04361.sslabel +++|#
04362  M00S04362.sslabel +++|*     CHECK IF *N* HAS A LEGAL VALUE.
04363  M00S04363.sslabel +++|#
04364  M00S04364.sslabel +++|
04365  M00S04365.sslabel +++|      IF LBARG$N[0] LS 1 OR LBARG$N[0] GR 100
04366  M00S04366.sslabel +++|      THEN
04367  M00S04367.sslabel +++|        BEGIN
04368  M00S04368.sslabel +++|        ERRCODE = S"ILL$N";          # "ILLEGAL N" #
04369  M00S04369.sslabel +++|        LBERR(ERRCODE);
04370  M00S04370.sslabel +++|        ERRFLAG = 1;
04371  M00S04371.sslabel +++|        RETURN;
04372  M00S04372.sslabel +++|        END
04373  M00S04373.sslabel +++|
04374  M00S04374.sslabel +++|#
04375  M00S04375.sslabel +++|*     CHECK FOR A LEGAL VALUE OF *PK*.
04376  M00S04376.sslabel +++|#
04377  M00S04377.sslabel +++|
04378  M00S04378.sslabel +++|      IF LBARG$PK[0] NQ "P"          ##
04379  M00S04379.sslabel +++|        AND LBARG$PK[0] NQ "D"       ##
04380  M00S04380.sslabel +++|        AND LBARG$PK[0] NQ "F"       ##
04381  M00S04381.sslabel +++|        AND LBARG$PK[0] NQ "R"       ##
04382  M00S04382.sslabel +++|        AND LBARG$PK[0] NQ 0
04383  M00S04383.sslabel +++|      THEN
04384  M00S04384.sslabel +++|        BEGIN
Proceed to Part 2