User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:ssval.001

Deck SSVAL Part 001

4 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
02211  M01S02209.ssval   +++|
02212  M01S02210.ssval   +++|
02213  M01S02211.ssval   +++|      BEGIN  # VLSMSC #
02214  M01S02212.ssval   +++|
02215  M01S02213.ssval   +++|#
02216  M01S02214.ssval   +++|**    VLSMSC - SMMAP SCAN.
02217  M01S02215.ssval   +++|*
02218  M01S02216.ssval   +++|*     *VLSMSC* READS THE SMMAP FILE TO FIND ALL ENTRIES ASSIGNED
02219  M01S02217.ssval   +++|*     TO THE SPECIFIED SUBFAMILY WHICH HAVE NO CORRESPONDING
02220  M01S02218.ssval   +++|*     *FCT* ENTRY (THE BIT IN THE *VLCMAP* ARRAY IS OFF).
02221  M01S02219.ssval   +++|*
02222  M01S02220.ssval   +++|*     PROC VLSMSC
02223  M01S02221.ssval   +++|*
02224  M01S02222.ssval   +++|*     ENTRY     (SMINDX)      - *SM* INDEX.
02225  M01S02223.ssval   +++|*               (PAR$FM)       - FAMILY.
02226  M01S02224.ssval   +++|*               (SBINDX)       - SUBFAMILY INDEX.
02227  M01S02225.ssval   +++|*               (ARRAY VLCMAP) - BIT MAP FOR SMMAP ENTRIES THAT
02228  M01S02226.ssval   +++|*                                HAVE VALID *FCT* ENTRIES.
02229  M01S02227.ssval   +++|*
02230  M01S02228.ssval   +++|*     EXIT      IF AN ERROR IS DETECTED, THEN A PROBLEM FILE
02231  M01S02229.ssval   +++|*               RECORD (RT"SM") IS WRITTEN.
02232  M01S02230.ssval   +++|*
02233  M01S02231.ssval   +++|*     MESSAGES  * SMMAP READ ERROR.*
02234  M01S02232.ssval   +++|#
02235  M01S02233.ssval   +++|
02236  M01S02234.ssval   +++|#
02237  M01S02235.ssval   +++|****  PROC VLSMSC - XREF LIST BEGIN.
02238  M01S02236.ssval   +++|#
02239  M01S02237.ssval   +++|
02240  M01S02238.ssval   +++|      XREF
02241  M01S02239.ssval   +++|        BEGIN
02242  M01S02240.ssval   +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
02243  M01S02241.ssval   +++|                                       CALLER #
02244  M01S02242.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02245  M01S02243.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
02246  M01S02244.ssval   +++|        END
02247  M01S02245.ssval   +++|
02248  M01S02246.ssval   +++|#
02249  M01S02247.ssval   +++|****  PROC VLSMSC - XREF LIST END.
02250  M01S02248.ssval   +++|#
02251  M01S02249.ssval   +++|
02252  M01S02250.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02253  M01S02251.ssval   +++|
02254  M01S02252.ssval   +++|*CALL COMBFAS
02255  M01S02253.ssval   +++|*CALL COMBCMD
02256  M01S02254.ssval   +++|*CALL COMBCMS
02257  M01S02255.ssval   +++|*CALL COMBMAP
02258  M01S02256.ssval   +++|*CALL COMBMCT
02259  M01S02257.ssval   +++|*CALL COMTVLD
02260  M01S02258.ssval   +++|*CALL COMTVLF
02261  M01S02259.ssval   +++|*CALL COMTVLM
02262  M01S02260.ssval   +++|
02263  M01S02261.ssval   +++|
02264  M01S02262.ssval   +++|      ITEM ORD        I;             # ORDINAL #
02265  M01S02263.ssval   +++|
02266  M01S02264.ssval   +++|                                               CONTROL EJECT;
02267  M01S02265.ssval   +++|
02268  M01S02266.ssval   +++|#
02269  M01S02267.ssval   +++|*     READ THE ENTIRE SMMAP FILE.
02270  M01S02268.ssval   +++|#
02271  M01S02269.ssval   +++|
02272  M01S02270.ssval   +++|      SLOWFOR Z = 0 STEP 1 UNTIL MAX$Z
02273  M01S02271.ssval   +++|      DO
02274  M01S02272.ssval   +++|        BEGIN  # Z COORDINATE SCAN #
02275  M01S02273.ssval   +++|        SLOWFOR Y = 0 STEP 1 UNTIL MAX$Y
02276  M01S02274.ssval   +++|        DO
02277  M01S02275.ssval   +++|          BEGIN  # Y COORDINATE SCAN #
02278  M01S02276.ssval   +++|          ORD = MAXORD - Z - (Y * (MAX$Z+1));
02279  M01S02277.ssval   +++|          MGETENT(SMINDX,ORD,LOC(VLMAPAREA),STAT);  # READ ENTRY #
02280  M01S02278.ssval   +++|          IF STAT NQ CMASTAT"NOERR"
02281  M01S02279.ssval   +++|          THEN
02282  M01S02280.ssval   +++|            BEGIN
02283  M01S02281.ssval   +++|            VLERROR(VE"MAPR",ABRT);  # ABORT WITH MESSAGE #
02284  M01S02282.ssval   +++|            END
02285  M01S02283.ssval   +++|
02286  M01S02284.ssval   +++|          P<SMUMAP> = LOC(VLMAPAREA);
02287  M01S02285.ssval   +++|
02288  M01S02286.ssval   +++|#
02289  M01S02287.ssval   +++|*     IF THE SMMAP ENTRY IS ASSIGNED TO THE SUBFAMILY BUT THERE
02290  M01S02288.ssval   +++|*     WAS NO CORRESPONDING *FCT* ENTRY, WRITE AN ENTRY TO THE PROBLEM
02291  M01S02289.ssval   +++|*     FILE.
02292  M01S02290.ssval   +++|#
02293  M01S02291.ssval   +++|
02294  M01S02292.ssval   +++|          IF (CM$CODE[0] EQ CUBSTAT"SUBFAM")
02295  M01S02293.ssval   +++|            AND (CM$FMLYNM[0] EQ PAR$FM) AND (CM$SUB[0] EQ SBINDX)
02296  M01S02294.ssval   +++|              AND (B<Y,1>VLCM$Z[Z] EQ 0)
02297  M01S02295.ssval   +++|              AND CM$FCTORD[0] NQ 0
02298  M01S02296.ssval   +++|              AND CM$CSND[0] NQ " "
02299  M01S02297.ssval   +++|          THEN
02300  M01S02298.ssval   +++|            BEGIN
02301  M01S02299.ssval   +++|            CSN = CM$CSND[0];       # FIELDS FOR VLWPROB #
02302  M01S02300.ssval   +++|            FCTORD = CM$FCTORD[0];
02303  M01S02301.ssval   +++|            VLWPROB(REC"SM");       # WRITE PROBLEM FILE ENTRY #
02304  M01S02302.ssval   +++|            END
02305  M01S02303.ssval   +++|
02306  M01S02304.ssval   +++|          END  # Y COORDINATE SCAN #
02307  M01S02305.ssval   +++|
02308  M01S02306.ssval   +++|        END  # Z COORDINATE SCAN #
02309  M01S02307.ssval   +++|
02310  M01S02308.ssval   +++|      END  # VLSMSC #
02311  M01S02309.ssval   +++|
02312  M01S02310.ssval   +++|    TERM
02313  M01S02311.ssval   +++|PROC VLERROR((ERNUM),(ABTFLG));
02314  M01S02312.ssval   +++|# TITLE VLERROR - ISSUE ERROR MESSAGE.                                #
02315  M01S02313.ssval   +++|
02316  M01S02314.ssval   +++|
02317  M01S02315.ssval   +++|      BEGIN  # VLERROR #
02318  M01S02316.ssval   +++|
02319  M01S02317.ssval   +++|#
02320  M01S02318.ssval   +++|**    VLERROR - ISSUE ERROR MESSAGE.
02321  M01S02319.ssval   +++|*
02322  M01S02320.ssval   +++|*     THE ERROR MESSAGE SPECIFIED BY *ERNUM* IS ISSUED TO THE
02323  M01S02321.ssval   +++|*     DAYFILE AND REPORT FILE (IF OPENED).  IF SELECTED, PARAMETERS
02324  M01S02322.ssval   +++|*     FROM THE *MPARAM* ARRAY MAY BE INSERTED INTO THE MESSAGE TEXT
02325  M01S02323.ssval   +++|*     FIRST.  ALSO, A DETAIL STATUS FROM *STAT* WILL BE ISSUED IF
02326  M01S02324.ssval   +++|*     SPECIFIED.  THE OPTIONS FOR A SPECIFIC ERROR ARE DEFINED
02327  M01S02325.ssval   +++|*     WITH THE ERROR MESSAGE TEXT (IN COMTVLD) AND RESIDE IN A
02328  M01S02326.ssval   +++|*     LOCAL ARRAY.
02329  M01S02327.ssval   +++|*
02330  M01S02328.ssval   +++|*     PROC VLERROR(ERNUM,ABTFLG)
02331  M01S02329.ssval   +++|*
02332  M01S02330.ssval   +++|*     ENTRY     (ABTFLG)       - ABORT FLAG (PROGRAM ABORTED IF TRUE)
02333  M01S02331.ssval   +++|*               (ERNUM)        - ERROR NUMBER (FROM STATUS LIST *VE*
02334  M01S02332.ssval   +++|*                                IN COMTVLD).
02335  M01S02333.ssval   +++|*               (RPTFADR)      - REPORT FILE *FET* ADDRESS (ZERO IF
02336  M01S02334.ssval   +++|*                                NOT OPENED).
02337  M01S02335.ssval   +++|*               (STAT)         - DETAIL STATUS VALUE (OPTIONAL).
02338  M01S02336.ssval   +++|*               (ARRAY MPARAM) - CONTAINS PARAMETERS FOR ERROR MESSAGE
02339  M01S02337.ssval   +++|*                                TEXT (OPTIONAL).
02340  M01S02338.ssval   +++|*
02341  M01S02339.ssval   +++|*     EXIT      (CNTPROGERR) - COUNT OF ERRORS.
02342  M01S02340.ssval   +++|*
02343  M01S02341.ssval   +++|*               THE ERROR MESSAGE IS ISSUED TO THE REPORT FILE IF THE
02344  M01S02342.ssval   +++|*               FILE IS OPENED.
02345  M01S02343.ssval   +++|*
02346  M01S02344.ssval   +++|*     MESSAGES  *   ** ERROR MESSAGE TEXT   *
02347  M01S02345.ssval   +++|*               *      DETAIL STATUS = NNN  * (OPTIONAL)
02348  M01S02346.ssval   +++|*
02349  M01S02347.ssval   +++|#
02350  M01S02348.ssval   +++|
02351  M01S02349.ssval   +++|      ITEM ERNUM      I;             # ERROR NUMBER #
02352  M01S02350.ssval   +++|      ITEM ABTFLG     I;             # ABORT RUN FLAG #
02353  M01S02351.ssval   +++|
02354  M01S02352.ssval   +++|#
02355  M01S02353.ssval   +++|****  PROC VLERROR - XREF LIST BEGIN.
02356  M01S02354.ssval   +++|#
02357  M01S02355.ssval   +++|
02358  M01S02356.ssval   +++|      XREF
02359  M01S02357.ssval   +++|        BEGIN
02360  M01S02358.ssval   +++|        PROC MESSAGE;                # INTERFACE TO *MESSAGE* MACRO #
02361  M01S02359.ssval   +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02362  M01S02360.ssval   +++|                                       OR RETURN #
02363  M01S02361.ssval   +++|        PROC RPCLOSE;                # CLOSES A PRINT FILE #
02364  M01S02362.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
02365  M01S02363.ssval   +++|                                       LINE #
02366  M01S02364.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
02367  M01S02365.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
02368  M01S02366.ssval   +++|                                       CONVERSION #
02369  M01S02367.ssval   +++|        PROC VLPFILL;                # FILL PARAMETER IN MESSAGE
02370  M01S02368.ssval   +++|                                       TEXT #
02371  M01S02369.ssval   +++|        END
02372  M01S02370.ssval   +++|
02373  M01S02371.ssval   +++|#
02374  M01S02372.ssval   +++|****  PROC VLERROR - XREF LIST END.
02375  M01S02373.ssval   +++|#
02376  M01S02374.ssval   +++|
02377  M01S02375.ssval   +++|      DEF LISTCON #0#;
02378  M01S02376.ssval   +++|
02379  M01S02377.ssval   +++|*CALL COMBFAS
02380  M01S02378.ssval   +++|*CALL COMTVLD
02381  M01S02379.ssval   +++|*CALL COMTVLF
02382  M01S02380.ssval   +++|
02383  M01S02381.ssval   +++|      ITEM N          I;             # TEMPORARY VARIABLE #
02384  M01S02382.ssval   +++|      ITEM NP         I;             # TEMPORARY VARIABLE #
02385  M01S02383.ssval   +++|
02386  M01S02384.ssval   +++|      ARRAY TEXT [0:0] S(5);         # TO FORMAT ERROR MESSAGE #
02387  M01S02385.ssval   +++|        BEGIN
02388  M01S02386.ssval   +++|        ITEM TEX$MSG    C(00,00,40);  # MESSAGE TEXT #
02389  M01S02387.ssval   +++|        ITEM TEX$LEAD   C(00,00,03);  # LEADING CODES #
02390  M01S02388.ssval   +++|        ITEM TEX$ZERO   U(04,00,60) = [ 0 ];  # ZERO BYTE #
02391  M01S02389.ssval   +++|        END
02392  M01S02390.ssval   +++|
02393  M01S02391.ssval   +++|      ARRAY ERRCODES [0:0] S(1);     # ERROR OPTION CODES #
02394  M01S02392.ssval   +++|        BEGIN
02395  M01S02393.ssval   +++|        ITEM ERR$CODES  C(00,00,03);
02396  M01S02394.ssval   +++|        ITEM ERR$STAT   C(00,00,01);  # DETAIL STATUS FLAG #
02397  M01S02395.ssval   +++|        ITEM ERR$PARN   U(00,06,06);  # NUMBER OF PARAMETERS #
02398  M01S02396.ssval   +++|        END
02399  M01S02397.ssval   +++|
02400  M01S02398.ssval   +++|
02401  M01S02399.ssval   +++|      ARRAY DTLSTAT [0:0] S(5);      # DETAIL STATUS MESSAGE #
02402  M01S02400.ssval   +++|        BEGIN
02403  M01S02401.ssval   +++|        ITEM DTL$MSG    C(00,00,40) = ["   DETAIL STATUS = "];
02404  M01S02402.ssval   +++|        ITEM DTL$NUM    C(02,00,04);  # STATUS VALUE #
02405  M01S02403.ssval   +++|        ITEM DTL$ZERO   U(04,00,60) = [ 0 ];
02406  M01S02404.ssval   +++|        END
02407  M01S02405.ssval   +++|
02408  M01S02406.ssval   +++|#
02409  M01S02407.ssval   +++|*     ARRAY OF DEFINED ERROR MESSAGE TEXTS.  WARNING - THE ORDER
02410  M01S02408.ssval   +++|*     OF THIS LIST IS DEPENDENT ON THE STATUS LIST "VE".
02411  M01S02409.ssval   +++|*     THE TEXTS ARE DEFINED IN *COMTVLD*.
02412  M01S02410.ssval   +++|#
02413  M01S02411.ssval   +++|
02414  M01S02412.ssval   +++|      ARRAY ERRTEXT [0:VE"EREND"] S(4);  # ERROR MESSAGES ARRAY #
02415  M01S02413.ssval   +++|        BEGIN
02416  M01S02414.ssval   +++|        ITEM ERRMSG     C(00,00,40) = [ "   NO ERROR ",
02417  M01S02415.ssval   +++|        MSYNTAX,
02418  M01S02416.ssval   +++|        MSMPAR,
02419  M01S02417.ssval   +++|        MFXPAR,
02420  M01S02418.ssval   +++|        MSBPAR,
02421  M01S02419.ssval   +++|        MSTPAR,
02422  M01S02420.ssval   +++|        MLFRF,
02423  M01S02421.ssval   +++|        MRLNRF,
02424  M01S02422.ssval   +++|        MRFFM,
02425  M01S02423.ssval   +++|        MRFAM,
02426  M01S02424.ssval   +++|        MRDFH,
02427  M01S02425.ssval   +++|        MRDFL,
02428  M01S02426.ssval   +++|        MRDFU,
02429  M01S02427.ssval   +++|        MCATO,
02430  M01S02428.ssval   +++|        MCATR,
02431  M01S02429.ssval   +++|        MMAPO,
02432  M01S02430.ssval   +++|        MMAPR,
02433  M01S02431.ssval   +++|        MNOFL,
02434  M01S02432.ssval   +++|        MNCONN,
02435  M01S02433.ssval   +++|        MUCPERR,
02436  M01S02434.ssval   +++|        MNOFAM,
02437  M01S02435.ssval   +++|        MPFCER,
02438  M01S02436.ssval   +++|        MDUPSM,
02439  M01S02437.ssval   +++|        MDUPSB,
02440  M01S02438.ssval   +++|        MSYSERR,
02441  M01S02439.ssval   +++|        MABORT,
02442  M01S02440.ssval   +++|        "  " ];
02443  M01S02441.ssval   +++|        END
02444  M01S02442.ssval   +++|
02445  M01S02443.ssval   +++|                                               CONTROL EJECT;
02446  M01S02444.ssval   +++|      CNTPROGERR = CNTPROGERR + 1;
02447  M01S02445.ssval   +++|
02448  M01S02446.ssval   +++|#
02449  M01S02447.ssval   +++|*     SET UP THE MESSAGE TEXT BASED ON THE ERROR NUMBER.
02450  M01S02448.ssval   +++|#
02451  M01S02449.ssval   +++|
02452  M01S02450.ssval   +++|      TEX$MSG[0] = ERRMSG[ERNUM];
02453  M01S02451.ssval   +++|      ERR$CODES[0] = TEX$LEAD[0];
02454  M01S02452.ssval   +++|
02455  M01S02453.ssval   +++|#
02456  M01S02454.ssval   +++|*     INSERT PARAMETERS INTO TEXT IF SPECIFIED.
02457  M01S02455.ssval   +++|#
02458  M01S02456.ssval   +++|
02459  M01S02457.ssval   +++|      IF ERR$PARN[0] NQ " "
02460  M01S02458.ssval   +++|      THEN                           # PARAMETERS SPECIFIED #
02461  M01S02459.ssval   +++|        BEGIN
02462  M01S02460.ssval   +++|        NP = ERR$PARN[0] - "0";      # CALCULATE THE NUMBER OF
02463  M01S02461.ssval   +++|                                       PARAMETERS #
02464  M01S02462.ssval   +++|        SLOWFOR N = 1 STEP 1 UNTIL NP
02465  M01S02463.ssval   +++|        DO
02466  M01S02464.ssval   +++|          BEGIN  # N #
02467  M01S02465.ssval   +++|          VLPFILL(TEXT,MPARAM[N]);   # MOVE PARAMETER TO TEXT #
02468  M01S02466.ssval   +++|          END  # N #
02469  M01S02467.ssval   +++|
02470  M01S02468.ssval   +++|        END
02471  M01S02469.ssval   +++|
02472  M01S02470.ssval   +++|#
02473  M01S02471.ssval   +++|*     ISSUE ERROR TEXT TO DAYFILE.
02474  M01S02472.ssval   +++|#
02475  M01S02473.ssval   +++|
02476  M01S02474.ssval   +++|      TEX$LEAD[0] = " **";           # DAYFILE MSG MUST HAVE 1 BLANK #
02477  M01S02475.ssval   +++|      MESSAGE(TEXT,SYSUDF1);
02478  M01S02476.ssval   +++|
02479  M01S02477.ssval   +++|#
02480  M01S02478.ssval   +++|*     ISSUE ERROR TEXT TO REPORT FILE, IF IT IS OPEN.
02481  M01S02479.ssval   +++|#
02482  M01S02480.ssval   +++|
02483  M01S02481.ssval   +++|      IF RPTFADR NQ 0
02484  M01S02482.ssval   +++|      THEN
02485  M01S02483.ssval   +++|        BEGIN
02486  M01S02484.ssval   +++|        RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
02487  M01S02485.ssval   +++|        TEX$LEAD[0] = "***";         # ERROR FLAG #
02488  M01S02486.ssval   +++|        RPLINE(RPTFADR,TEXT,4,40,EOPL);  # ISSUE ERROR MESSAGE #
02489  M01S02487.ssval   +++|        END
02490  M01S02488.ssval   +++|
02491  M01S02489.ssval   +++|#
02492  M01S02490.ssval   +++|*     ISSUE DETAIL STATUS, IF SPECIFIED.
02493  M01S02491.ssval   +++|#
02494  M01S02492.ssval   +++|
02495  M01S02493.ssval   +++|      IF ERR$STAT[0] EQ "S"
02496  M01S02494.ssval   +++|      THEN
02497  M01S02495.ssval   +++|        BEGIN
02498  M01S02496.ssval   +++|        DTL$NUM[0] = VLNTC(STAT,"XCOD",4);  # SET NUMBER FROM *STAT* #
02499  M01S02497.ssval   +++|        MESSAGE(DTLSTAT,SYSUDF1);    # ISSUE DETAIL MESSAGE #
02500  M01S02498.ssval   +++|        IF RPTFADR NQ 0
02501  M01S02499.ssval   +++|        THEN
02502  M01S02500.ssval   +++|          BEGIN
02503  M01S02501.ssval   +++|          RPLINE(RPTFADR,DTLSTAT,4,40,EOPL);  # ISSUE TO REPORT FILE #
02504  M01S02502.ssval   +++|          END
02505  M01S02503.ssval   +++|
02506  M01S02504.ssval   +++|        END
02507  M01S02505.ssval   +++|
02508  M01S02506.ssval   +++|#
02509  M01S02507.ssval   +++|*     IF ABORT FLAG IS SET, ABORT.
02510  M01S02508.ssval   +++|#
02511  M01S02509.ssval   +++|
02512  M01S02510.ssval   +++|      IF (ABTFLG EQ ABRT)
02513  M01S02511.ssval   +++|      THEN
02514  M01S02512.ssval   +++|        BEGIN
02515  M01S02513.ssval   +++|        IF (RPTFADR NQ 0)            # CLOSE REPORT FILE IF IT IS
02516  M01S02514.ssval   +++|                                       OPENED #
02517  M01S02515.ssval   +++|        THEN
02518  M01S02516.ssval   +++|          BEGIN
02519  M01S02517.ssval   +++|          RPCLOSE(RPTFADR);
02520  M01S02518.ssval   +++|          END
02521  M01S02519.ssval   +++|
02522  M01S02520.ssval   +++|        VLMSG(VM"VLABT");            # ISSUE SSVAL ABORTED MESSAGE #
02523  M01S02521.ssval   +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
02524  M01S02522.ssval   +++|        END
02525  M01S02523.ssval   +++|
02526  M01S02524.ssval   +++|      RETURN;
02527  M01S02525.ssval   +++|
02528  M01S02526.ssval   +++|      END  # VLERROR #
02529  M01S02527.ssval   +++|
02530  M01S02528.ssval   +++|    TERM
02531  M01S02529.ssval   +++|PROC VLFIX;
02532  M01S02530.ssval   +++|# TITLE VLFIX - FIX CATALOGS.                                         #
02533  M01S02531.ssval   +++|
02534  M01S02532.ssval   +++|
02535  M01S02533.ssval   +++|      BEGIN  # VLFIX #
02536  M01S02534.ssval   +++|
02537  M01S02535.ssval   +++|#
02538  M01S02536.ssval   +++|**    VLFIX - FIX CATALOGS.
02539  M01S02537.ssval   +++|*
02540  M01S02538.ssval   +++|*     *VLFIX* READS THE FIXIT FILE AND MODIFIES THE CORRESPONDING
02541  M01S02539.ssval   +++|*     CATALOG ENTRIES DEPENDING UPON THE MODE SPECIFIED BY THE
02542  M01S02540.ssval   +++|*     CONTROL CARD PARAMETERS.
02543  M01S02541.ssval   +++|*
02544  M01S02542.ssval   +++|*     PROC VLFIX
02545  M01S02543.ssval   +++|*
02546  M01S02544.ssval   +++|*     ENTRY     (CNTORPHANS)    - COUNT OF TROUBLE-FREE ORPHANS.
02547  M01S02545.ssval   +++|*               (CONNECTED)     - CONNECTED TO *EXEC* FLAG.
02548  M01S02546.ssval   +++|*               (PAR$FX)        - FX CONTROL CARD PARAMETER.
02549  M01S02547.ssval   +++|*               (PAR$RF)        - RF CONTROL CARD PARAMETER.
02550  M01S02548.ssval   +++|*               (PAR$RL)        - RL CONTROL CARD PARAMETER.
02551  M01S02549.ssval   +++|*               (RDFDT)         - *RDF* FILE PACKED DATE AND TIME.
02552  M01S02550.ssval   +++|*               (RELEASABLE)    - COUNT OF RELEASABLE AU-S.
02553  M01S02551.ssval   +++|*               (TOTALERRS)     - TOTAL VALIDATION ERRORS.
02554  M01S02552.ssval   +++|*               (ARRAY FIXFILE) - FIXIT FILE *FET*.
02555  M01S02553.ssval   +++|*
02556  M01S02554.ssval   +++|*     EXIT      RELEASE PROCESSING OCCURRED IF MODE IS EQUAL TO
02557  M01S02555.ssval   +++|*               RELEASE.
02558  M01S02556.ssval   +++|*               REPAIR PROCESSING OCCURRED IF MODE IS EQUAL TO FIX.
02559  M01S02557.ssval   +++|*               INFORMATIONAL LINES WERE WRITTEN TO THE REPORT FILE.
02560  M01S02558.ssval   +++|*
02561  M01S02559.ssval   +++|*     MESSAGES  * TOTAL VALIDATION ERRORS = NNN *
02562  M01S02560.ssval   +++|*               * RELEASABLE M860 FILE = NNNN *
02563  M01S02561.ssval   +++|*               * RELEASABLE M860 AU-S = NNNN *
02564  M01S02562.ssval   +++|*               * CATALOGS NOT MODIFIED *
02565  M01S02563.ssval   +++|*               * CATALOGS MODIFIED *
02566  M01S02564.ssval   +++|*               * FREE FILES NOT RELEASED *
02567  M01S02565.ssval   +++|*               * FREE FILES RELEASED *
02568  M01S02566.ssval   +++|*
02569  M01S02567.ssval   +++|*     NOTES     THE MODES OF PROCESSING ARE -
02570  M01S02568.ssval   +++|*
02571  M01S02569.ssval   +++|*                 . RELEASE - RELEASE ORPHANS IN THE SFM CATALOG.
02572  M01S02570.ssval   +++|*                   THIS MODE IS SET IF -
02573  M01S02571.ssval   +++|*                     THE *RF* AND *RL* PARAMETERS WERE SPECIFIED AND
02574  M01S02572.ssval   +++|*                     THE *TOTALERRS* IS LESS THAN THE *FX* PARAMETER.
02575  M01S02573.ssval   +++|*
02576  M01S02574.ssval   +++|*                 . FIX - SET APPROPRIATE FLAGS IN THE CATALOGS FOR
02577  M01S02575.ssval   +++|*                   ERRORS DETECTED.
02578  M01S02576.ssval   +++|*                   THIS MODE IS SET IF -
02579  M01S02577.ssval   +++|*                     THE *FM* PARAMETER IS SET AND THE *TOTALERRS*
02580  M01S02578.ssval   +++|*                     IS LESS THAN THE *FX* PARAMETER.
02581  M01S02579.ssval   +++|*
02582  M01S02580.ssval   +++|*                 . NONE - NO CATALOG MODIFICATIONS.
02583  M01S02581.ssval   +++|*                   THIS MODE IS SET IF *SSVAL* IS NOT CONNECTED
02584  M01S02582.ssval   +++|*                   TO *EXEC* OR NOT IN FIX OR RELEASE MODE.
02585  M01S02583.ssval   +++|*
02586  M01S02584.ssval   +++|*               RELEASE OF FREE AU-S IN A SPECIFIC SUBCATALOG
02587  M01S02585.ssval   +++|*               OCCURS ONLY IF THE DATE AND TIME IN THE *RDF* FILE IS
02588  M01S02586.ssval   +++|*               MORE RECENT THAN THE LAST PURGE DATE AND TIME FOR THE
02589  M01S02587.ssval   +++|*               SUBCATALOG.
02590  M01S02588.ssval   +++|*
02591  M01S02589.ssval   +++|*               THE REPAIRS THAT *SSVAL* CAN PERFORM ARE DEFINED IN
02592  M01S02590.ssval   +++|*               THE ARRAY *FIXARRAY*.  THE REPAIRS TO BE TAKEN FOR
02593  M01S02591.ssval   +++|*               A SPECIFIC FIXIT FILE RECORD ARE DETERMINED BY THE
02594  M01S02592.ssval   +++|*               RECORD TYPE WHICH REFLECTS THE TYPE OF ERROR THAT
02595  M01S02593.ssval   +++|*               OCCURRED DURING VALIDATION.
02596  M01S02594.ssval   +++|*
02597  M01S02595.ssval   +++|#
02598  M01S02596.ssval   +++|
02599  M01S02597.ssval   +++|#
02600  M01S02598.ssval   +++|****  PROC VLFIX - XREF LIST BEGIN.
02601  M01S02599.ssval   +++|#
02602  M01S02600.ssval   +++|
02603  M01S02601.ssval   +++|      XREF
02604  M01S02602.ssval   +++|        BEGIN
02605  M01S02603.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
02606  M01S02604.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
02607  M01S00001.ssval3  +++|        PROC RETERN;                   # RETURN LOCAL FILE #
02608  M01S02605.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
02609  M01S02606.ssval   +++|        PROC RPEJECT;                # STARTS A NEW REPORT PAGE #
02610  M01S02607.ssval   +++|        PROC VLFIXP;                 # CONNECTS *PF* AND SETS *ASA* #
02611  M01S02608.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02612  M01S02609.ssval   +++|        PROC VLLPDT;                 # GET LAST PURGE DATE AND TIME #
02613  M01S02610.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
02614  M01S02611.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
02615  M01S02612.ssval   +++|                                       CONVERSION #
02616  M01S02613.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
02617  M01S00002.ssval3  +++|        PROC WRITEW;                   # WRITE TO WORKING BUFFER #
02618  M01S02614.ssval   +++|        PROC WRITEF;                 # INTERFACE TO *WRITEF* MACRO #
02619  M01S02615.ssval   +++|        END
02620  M01S02616.ssval   +++|
02621  M01S02617.ssval   +++|#
02622  M01S02618.ssval   +++|****  PROC VLFIX - XREF LIST END.
02623  M01S02619.ssval   +++|#
02624  M01S02620.ssval   +++|
02625  M01S02621.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02626  M01S02622.ssval   +++|
02627  M01S02623.ssval   +++|*CALL COMBFAS
02628  M01S02624.ssval   +++|*CALL COMBCPR
02629  M01S02625.ssval   +++|*CALL COMTVLD
02630  M01S02626.ssval   +++|*CALL COMTVLF
02631  M01S02627.ssval   +++|*CALL COMTVLV
02632  M01S02628.ssval   +++|
02633  M01S02629.ssval   +++|      STATUS PROCTYP                 # PROCESSING TYPE #
02634  M01S02630.ssval   +++|        NONE,
02635  M01S02631.ssval   +++|        FIX,                         # FIX CATALOGS #
02636  M01S02632.ssval   +++|        RELEASE,                     # RELEASE FILE SPACE #
02637  M01S02633.ssval   +++|        PTEND;
02638  M01S02634.ssval   +++|
02639  M01S02635.ssval   +++|      DEF FREE #0#;                  # SET FREE FLAG IN PFC #
02640  M01S02636.ssval   +++|      DEF ZERO #1#;                  # ZERO *PFC* ASA #
02641  M01S02637.ssval   +++|
02642  M01S02638.ssval   +++|      ITEM FREFL   B;                # FREE CARTRIDGE FLAG SET #
02643  M01S02639.ssval   +++|      ITEM MODE       S : PROCTYP = S"NONE";  # MODE FOR FIX PROCESS #
02644  M01S02640.ssval   +++|      ITEM LPDT       U;             # LAST PURGE DATE-TIME #
02645  M01S02641.ssval   +++|      ITEM FIXACTION  I;             # FIX ACTIONS FOR FIXIT RECORD #
02646  M01S02642.ssval   +++|      ITEM RDF$BEFORE B;             # RDF BEFORE PURGE DATE #
02647  M01S02643.ssval   +++|      ITEM RELEASED   B;             # FREE FILES RELEASED FLAG #
02648  M01S02644.ssval   +++|
02649  M01S02645.ssval   +++|#
02650  M01S02646.ssval   +++|*     ACTION FLAGS TO DEFINE THE CATALOG REPAIRS THAT *SSVAL* CAN
02651  M01S02647.ssval   +++|*     PERFORM.
02652  M01S02648.ssval   +++|#
02653  M01S02649.ssval   +++|
02654  M01S02650.ssval   +++|      DEF ACT$NONE   #O"000000"#;    # NO ACTION #
02655  M01S02651.ssval   +++|      DEF ACT$UMAP   #O"000001"#;    # UPDATE SMMAP #
02656  M01S02652.ssval   +++|      DEF ACT$UPFC   #O"000010"#;    # UPDATE *PFC* ENTRY #
02657  M01S02653.ssval   +++|      DEF ACT$USM    #O"000100"#;    # UPDATE *SM* FLAG IN SFM
02658  M01S02654.ssval   +++|                                       CATALOG #
02659  M01S02655.ssval   +++|      DEF ACT$UFROZ  #O"001000"#;    # UPDATE FROZEN AU FLAG #
02660  M01S02656.ssval   +++|      DEF ACT$USOF   #O"010000"#;    # UPDATE *SOF* AU FLAG #
02661  M01S02657.ssval   +++|      DEF ACT$INHIB  #O"100000"#;    # SET INHIBIT FLAG IN *FCT* #
02662  M01S02658.ssval   +++|      DEF ACT$P$F$S  #O"011010"#;
02663  M01S02659.ssval   +++|      DEF ACT$F$S    #O"011000"#;    # MULTIPLE ACTIONS #
02664  M01S02660.ssval   +++|      DEF ACT$UC$INH #O"100100"#;    # MULTIPLE ACTIONS #
02665  M01S02661.ssval   +++|      DEF ACT$UF$UI  #O"101000"#;    # MULTIPLE ACTIONS #
02666  M01S00003.ssval3  +++|
02667  M01S00004.ssval3  +++|#
02668  M01S00005.ssval3  +++|*      *CPR* WORKING BUFFER.
02669  M01S00006.ssval3  +++|#
02670  M01S00007.ssval3  +++|
02671  M01S00008.ssval3  +++|      ARRAY CPRARRAY [0:0] S(CPRLEN);;
02672  M01S00009.ssval3  +++|
02673  M01S02662.ssval   +++|
02674  M01S02663.ssval   +++|#
02675  M01S02664.ssval   +++|*     DEFINE ACTIONS TO TAKE FOR THE VARIOUS FIXIT FILE RECORD TYPES.
02676  M01S02665.ssval   +++|*     DURING THE VALIDATION PROCESS, RECORDS WERE WRITTEN TO THE FIXIT
02677  M01S02666.ssval   +++|*     FILE FOR PROBLEMS DETECTED.  THE RECORD TYPE REFLECTS THE TYPE OF
02678  M01S02667.ssval   +++|*     REPAIR PROCESSING TO BE DONE.
02679  M01S02668.ssval   +++|#
02680  M01S02669.ssval   +++|
02681  M01S02670.ssval   +++|      ARRAY FIXARRAY [0:REC"REND"] S(1);  # FIX ACTIONS FOR FIX
02682  M01S02671.ssval   +++|                                            RECORDS #
02683  M01S02672.ssval   +++|        BEGIN
02684  M01S02673.ssval   +++|        ITEM FIXA$WD    U(00,00,60);
02685  M01S02674.ssval   +++|        ITEM FIXA$TFO   U(REC"TFORPH",0,60) = [ACT$NONE];
02686  M01S02675.ssval   +++|        ITEM FIXA$FCT   U(REC"FCT",0,60) = [ACT$UC$INH];
02687  M01S02676.ssval   +++|        ITEM FIXA$SM    U(REC"SM",0,60) = [ACT$UMAP];
02688  M01S02677.ssval   +++|        ITEM FIXA$ASA   U(REC"ASA",0,60) = [ACT$UPFC];
02689  M01S02678.ssval   +++|        ITEM FIXA$PFC   U(REC"OTHR",0,60) = [ACT$P$F$S];
02690  M01S02679.ssval   +++|        ITEM FIXA$ORPH  U(REC"BADORPH",0,60) = [ACT$UFROZ];
02691  M01S02680.ssval   +++|        ITEM FIXA$FRAG  U(REC"FRAG",0,60) = [ACT$F$S];
02692  M01S02681.ssval   +++|      ITEM FIXA$HOLE  U(REC"BADHOLE",0,60) = [ACT$UF$UI];
02693  M01S02682.ssval   +++|        END
02694  M01S02683.ssval   +++|
02695  M01S02684.ssval   +++|                                               CONTROL EJECT;
02696  M01S02685.ssval   +++|
02697  M01S02686.ssval   +++|#
02698  M01S02687.ssval   +++|*     CLOSE THE FIXIT FILE.
02699  M01S02688.ssval   +++|#
02700  M01S02689.ssval   +++|
02701  M01S02690.ssval   +++|      FREFL = FALSE;
02702  M01S02691.ssval   +++|      WRITEF(FIXITFILE,RCL);
02703  M01S02692.ssval   +++|      REWIND(FIXITFILE,RCL);
02704  M01S02693.ssval   +++|
02705  M01S02694.ssval   +++|#
02706  M01S02695.ssval   +++|*     ISSUE COUNT OF ORPHANS.
02707  M01S02696.ssval   +++|#
02708  M01S02697.ssval   +++|
02709  M01S02698.ssval   +++|      MP$WD[1] = VLNTC(CNTORPHANS,"XCDD",5);
02710  M01S02699.ssval   +++|      VLMSG(VM"NTFO");
02711  M01S02700.ssval   +++|
02712  M01S02701.ssval   +++|#
02713  M01S02702.ssval   +++|*     ISSUE COUNT OF RELEASABLE AU-S.
02714  M01S02703.ssval   +++|#
02715  M01S02704.ssval   +++|
02716  M01S02705.ssval   +++|      MP$WD[1] = VLNTC(RELEASABLE,"XCDD",6);
02717  M01S02706.ssval   +++|      VLMSG(VM"RSPACE");
02718  M01S00003.msea011 +++|
02719  M01S00004.msea011 +++|#
02720  M01S00005.msea011 +++|*     ISSUE NUMBER OF PFC SYSTEM AND DATA ERRORS.
02721  M01S00006.msea011 +++|#
02722  M01S00007.msea011 +++|
02723  M01S00008.msea011 +++|      IF TPFCERRS NQ 0
02724  M01S00009.msea011 +++|      THEN
02725  M01S00010.msea011 +++|        BEGIN
02726  M01S00011.msea011 +++|        MP$WD[1] = VLNTC(TPFCERRS,"XCDD",4);
02727  M01S00012.msea011 +++|        VLMSG(VM"TPFCER");
02728  M01S00013.msea011 +++|      END
02729  M01S02707.ssval   +++|
02730  M01S02708.ssval   +++|#
02731  M01S02709.ssval   +++|*     ISSUE NUMBER OF VALIDATION ERRORS.
02732  M01S02710.ssval   +++|#
02733  M01S02711.ssval   +++|
02734  M01S02712.ssval   +++|      MP$WD[1] = VLNTC(TOTALERRS,"XCDD",4);
02735  M01S02713.ssval   +++|      VLMSG(VM"TOTERR");
02736  M01S02714.ssval   +++|
02737  M01S02715.ssval   +++|#
02738  M01S02716.ssval   +++|*     IF NOT CONNECTED TO EXEC, NO FIX/RELEASE PROCESSING CAN BE DONE.
02739  M01S02717.ssval   +++|#
02740  M01S02718.ssval   +++|
02741  M01S02719.ssval   +++|      IF NOT CONNECTED
02742  M01S02720.ssval   +++|      THEN
02743  M01S02721.ssval   +++|        BEGIN
02744  M01S02722.ssval   +++|        VLMSG(VM"NOFIX");            # ISSUE MESSAGE #
02745  M01S02723.ssval   +++|        RETURN;
02746  M01S02724.ssval   +++|        END
02747  M01S02725.ssval   +++|
02748  M01S02726.ssval   +++|#
02749  M01S02727.ssval   +++|*     DETERMINE MODE OF FIX PROCESSING BASED ON CONTROL CARD
02750  M01S02728.ssval   +++|*     PARAMETERS AND VALIDATION TOTAL ERRORS.
02751  M01S02729.ssval   +++|#
02752  M01S02730.ssval   +++|
02753  M01S02731.ssval   +++|      IF (PAR$RF EQ 0) AND (TOTALERRS LQ PAR$FX)
02754  M01S02732.ssval   +++|        AND (TOTALERRS NQ 0)
02755  M01S02733.ssval   +++|      THEN
02756  M01S02734.ssval   +++|        BEGIN
02757  M01S02735.ssval   +++|        VLMSG(VM"UPDED");            # ISSUE MESSAGE #
02758  M01S02736.ssval   +++|        MODE = S"FIX";               # FIX CATALOG MODE #
02759  M01S02737.ssval   +++|        END
02760  M01S02738.ssval   +++|
02761  M01S02739.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$RL NQ 0) AND (TOTALERRS LQ PAR$FX)
02762  M01S02740.ssval   +++|      THEN
02763  M01S02741.ssval   +++|        BEGIN
02764  M01S02742.ssval   +++|        RELEASED = FALSE;            # INITIALIZE FILES RELEASED FLAG #
02765  M01S02743.ssval   +++|        RDF$BEFORE = FALSE;          # INITIALIZE RDF FLAG #
02766  M01S02744.ssval   +++|        MODE = S"RELEASE";           # RELEASE ORPHANS MODE #
02767  M01S02745.ssval   +++|        END
02768  M01S02746.ssval   +++|
02769  M01S02747.ssval   +++|      IF MODE EQ S"NONE"
02770  M01S02748.ssval   +++|      THEN
02771  M01S02749.ssval   +++|        BEGIN
02772  M01S02750.ssval   +++|        VLMSG(VM"NOFIX");            # ISSUE MESSAGE #
02773  M01S02751.ssval   +++|        END
02774  M01S02752.ssval   +++|
02775  M01S02753.ssval   +++|
02776  M01S02754.ssval   +++|#
02777  M01S02755.ssval   +++|*     READ THE FIXIT FILE AND PERFORM FIX/RELEASE ACTIONS BASED ON
02778  M01S02756.ssval   +++|*     RECORD TYPE.
02779  M01S02757.ssval   +++|#
02780  M01S02758.ssval   +++|
02781  M01S02759.ssval   +++|      READ(FIXITFILE,NRCL);
02782  M01S02760.ssval   +++|      STAT = OK;
02783  M01S02761.ssval   +++|      REPEAT WHILE STAT EQ OK
02784  M01S02762.ssval   +++|      DO
02785  M01S02763.ssval   +++|        BEGIN  # PROCESS FIXIT FILE #
02786  M01S02764.ssval   +++|        READW(FIXITFILE,EXTRECORD,RLFIX,STAT);
02787  M01S02765.ssval   +++|        IF STAT NQ 0
02788  M01S02766.ssval   +++|        THEN
02789  M01S02767.ssval   +++|          BEGIN
02790  M01S02768.ssval   +++|          TEST DUMMY;                # EXIT, NO RECORD TO PROCESS #
02791  M01S02769.ssval   +++|          END
02792  M01S02770.ssval   +++|
02793  M01S02771.ssval   +++|        SMINDX = EXTR$SM[0];
02794  M01S02772.ssval   +++|        SBINDX  = EXTR$SB[0];
02795  M01S02773.ssval   +++|
02796  M01S02774.ssval   +++|#
02797  M01S02775.ssval   +++|*     FOR RELEASE MODE, PURGE TROUBLE-FREE ORPHANS.
02798  M01S02776.ssval   +++|#
02799  M01S02777.ssval   +++|
02800  M01S02778.ssval   +++|        IF (MODE EQ S"RELEASE") AND (FIX$RT[0] EQ REC"TFORPH")
02801  M01S02779.ssval   +++|        THEN
02802  M01S02780.ssval   +++|          BEGIN  # RELEASE ORPHANS #
02803  M01S02781.ssval   +++|          VLLPDT(EXTR$SB[0],EXTR$SM[0],LPDT);  # RETURNS LAST PURGE
02804  M01S02782.ssval   +++|                                                  DATE/TIME #
02805  M01S02783.ssval   +++|
02806  M01S02784.ssval   +++|#
02807  M01S02785.ssval   +++|*     RELEASE ONLY IF THE SUBCATALOG LAST PURGE DATE/TIME IS LESS THAN
02808  M01S02786.ssval   +++|*     THE RDF FILE DATE/TIME.
02809  M01S02787.ssval   +++|#
02810  M01S02788.ssval   +++|
02811  M01S02789.ssval   +++|          IF LPDT LS RDFDT
02812  M01S02790.ssval   +++|          THEN
02813  M01S02791.ssval   +++|            BEGIN
Line S02792 Modification History
M01 (Added by) ssval
M02 (Updated by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02814  M02S02792.ssval3  ---|            VLREQEX(TYP"TYP3",REQTYP3"PURG$ORPH");
02815  M01S00010.ssval3  +++|#
02816  M01S00011.ssval3  +++|*     CONVERT TO *CPR* FORMAT.
02817  M01S00012.ssval3  +++|#
02818  M01S00013.ssval3  +++|
02819  M01S00014.ssval3  +++|            P<CPR> = LOC(CPRARRAY);
02820  M01S00015.ssval3  +++|            CPR$C[0] = FALSE;
02821  M01S00016.ssval3  +++|            CPR$CSU[0] = EXTR$SM[0];
02822  M01S00017.ssval3  +++|            CPR$SUB[0] = EXTR$SB[0];
02823  M01S00018.ssval3  +++|            CPR$FAM[0] = PAR$FM;
02824  M01S00019.ssval3  +++|            CPR$FCT[0] = EXTR$FCT[0];
02825  M01S00020.ssval3  +++|            CPR$AU[0] = EXTR$AU[0];
02826  M01S00021.ssval3  +++|            CPR$RQT[0] = TYP"TYP3";
02827  M01S00022.ssval3  +++|            CPR$RQC[0] = REQTYP3"REL$SETUP";
02828  M01S00023.ssval3  +++|            WRITEW(RELCFILE,CPRARRAY,CPRLEN,STAT);
02829  M01S02793.ssval   +++|            RELEASED = TRUE;         # FREE FILES RELEASED #
02830  M01S02794.ssval   +++|            TEST DUMMY;
02831  M01S02795.ssval   +++|            END
02832  M01S02796.ssval   +++|
02833  M01S02797.ssval   +++|          ELSE
02834  M01S02798.ssval   +++|            BEGIN
02835  M01S02799.ssval   +++|            RDF$BEFORE = TRUE;
02836  M01S02800.ssval   +++|            END
02837  M01S02801.ssval   +++|
02838  M01S02802.ssval   +++|          END  # RELEASE ORPHANS #
02839  M01S02803.ssval   +++|
02840  M01S02804.ssval   +++|#
02841  M01S02805.ssval   +++|*     UPDATE *PFC* IF FILE IS TO BE REMOVED FROM CARTRIDGE.
02842  M01S02806.ssval   +++|#
02843  M01S02807.ssval   +++|
02844  M01S02808.ssval   +++|      IF FIX$RT[0] EQ REC"FCF"
02845  M01S02809.ssval   +++|        AND PAR$RF EQ 0
02846  M01S02810.ssval   +++|      THEN                   # SET FREE CARTRIDGE FLAGS #
02847  M01S02811.ssval   +++|        BEGIN
02848  M01S02812.ssval   +++|        VLFIXP(FREE);
02849  M01S02813.ssval   +++|        IF STAT EQ 0
02850  M01S02814.ssval   +++|        THEN
02851  M01S02815.ssval   +++|          BEGIN
02852  M01S02816.ssval   +++|          FREFL = TRUE;
02853  M01S02817.ssval   +++|          END
02854  M01S02818.ssval   +++|
02855  M01S02819.ssval   +++|        END
02856  M01S02820.ssval   +++|
02857  M01S02821.ssval   +++|
02858  M01S02822.ssval   +++|#
02859  M01S02823.ssval   +++|*     FOR FIX MODE, GET ACTIONS BASED ON THE FIXIT RECORD TYPE.
02860  M01S02824.ssval   +++|#
02861  M01S02825.ssval   +++|
02862  M01S02826.ssval   +++|        IF MODE NQ S"FIX"
02863  M01S02827.ssval   +++|        THEN
02864  M01S02828.ssval   +++|          BEGIN
02865  M01S02829.ssval   +++|          TEST DUMMY;                # SKIP IF NOT FIX MODE #
02866  M01S02830.ssval   +++|          END
02867  M01S02831.ssval   +++|
02868  M01S02832.ssval   +++|        FIXACTION = FIXA$WD[FIX$RT[0]];  # ACTIONS FOR THIS RECORD #
02869  M01S02833.ssval   +++|
02870  M01S02834.ssval   +++|#
02871  M01S02835.ssval   +++|*     UPDATE THE SMMAP ENTRY.
02872  M01S02836.ssval   +++|#
02873  M01S02837.ssval   +++|
02874  M01S02838.ssval   +++|        IF FIXACTION LAN ACT$UMAP NQ 0
02875  M01S02839.ssval   +++|        THEN
02876  M01S02840.ssval   +++|          BEGIN
02877  M01S02841.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$MAP");
02878  M01S02842.ssval   +++|          END
02879  M01S02843.ssval   +++|
02880  M01S02844.ssval   +++|#
02881  M01S02845.ssval   +++|*     UPDATE *PFC* ENTRY IF THE FILE HAS A DISK IMAGE.
02882  M01S02846.ssval   +++|#
02883  M01S02847.ssval   +++|
02884  M01S02848.ssval   +++|        IF FIXACTION LAN ACT$UPFC NQ 0 AND EXTR$D[0] NQ 0
02885  M01S02849.ssval   +++|        THEN
02886  M01S02850.ssval   +++|          BEGIN
02887  M01S02851.ssval   +++|          VLFIXP(ZERO);
02888  M01S02852.ssval   +++|          END
02889  M01S02853.ssval   +++|
02890  M01S02854.ssval   +++|#
02891  M01S02855.ssval   +++|*     UPDATE THE SFM CATALOG SMERR FLAG.
02892  M01S02856.ssval   +++|#
02893  M01S02857.ssval   +++|
02894  M01S02858.ssval   +++|        IF FIXACTION LAN ACT$USM NQ 0
02895  M01S02859.ssval   +++|        THEN
02896  M01S02860.ssval   +++|          BEGIN
02897  M01S02861.ssval   +++|          CFIELD = UCF"CMAP";        # CHANGE SMERR FLAG #
02898  M01S02862.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02899  M01S02863.ssval   +++|          END
02900  M01S02864.ssval   +++|
02901  M01S02865.ssval   +++|#
02902  M01S02866.ssval   +++|*     UPDATE INHIBIT FLAG IN FCT.
02903  M01S02867.ssval   +++|#
02904  M01S02868.ssval   +++|
02905  M01S02869.ssval   +++|        IF FIXACTION LAN ACT$INHIB NQ 0
02906  M01S02870.ssval   +++|          OR (FIXACTION LAN ACT$UFROZ NQ 0
02907  M01S02871.ssval   +++|          AND NOT VTEN$ALOC[0])
02908  M01S02872.ssval   +++|        THEN
02909  M01S02873.ssval   +++|          BEGIN
02910  M01S02874.ssval   +++|          CFIELD = UCF"INHIB";       # CHANGE INHIBIT FLAG #
02911  M01S02875.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02912  M01S02876.ssval   +++|          END
02913  M01S02877.ssval   +++|
02914  M01S02878.ssval   +++|#
02915  M01S02879.ssval   +++|*     UPDATE SFM CATALOG *FCT* AU FROZ FLAG.
02916  M01S02880.ssval   +++|#
02917  M01S02881.ssval   +++|
02918  M01S02882.ssval   +++|        IF FIXACTION LAN ACT$UFROZ NQ 0
02919  M01S02883.ssval   +++|        THEN
02920  M01S02884.ssval   +++|          BEGIN
02921  M01S02885.ssval   +++|          CFIELD = UCF"FROZ";        # CHANGE FROZ FLAG #
02922  M01S02886.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02923  M01S02887.ssval   +++|          END
02924  M01S02888.ssval   +++|
02925  M01S02889.ssval   +++|#
02926  M01S02890.ssval   +++|*     UPDATE SFM CATALOG *FCT* AU *SOF* FLAG IF THE ENTRY IS
02927  M01S02891.ssval   +++|*     A START OF FRAGMENT.
02928  M01S02892.ssval   +++|#
02929  M01S02893.ssval   +++|
02930  M01S02894.ssval   +++|        VTEN$WORD[0] = FIX$VT[0];    # GET *VT* ENTRY FROM RECORD #
02931  M01S02895.ssval   +++|        IF FIXACTION LAN ACT$USOF NQ 0 AND VTEN$SOF[0]
02932  M01S02896.ssval   +++|        THEN
02933  M01S02897.ssval   +++|          BEGIN
02934  M01S02898.ssval   +++|          CFIELD = UCF"SOF";         # CHANGE *SOF* FLAG #
02935  M01S02899.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02936  M01S02900.ssval   +++|          END
02937  M01S02901.ssval   +++|
02938  M01S02902.ssval   +++|        END  # PROCESS FIXIT FILE #
02939  M01S02903.ssval   +++|
02940  M01S02904.ssval   +++|      IF RELEASED AND MODE EQ S"RELEASE"
02941  M01S02905.ssval   +++|      THEN
02942  M01S02906.ssval   +++|        BEGIN
Line S02907 Modification History
M01 (Added by) ssval
M02 (Updated by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02943  M02S02907.ssval3  ---|        VLMSG(VM"FSREL");          # FREE FILES RELEASED MESSAGE #
02944  M01S00024.ssval3  +++|        WRITEF(RELCFILE,RCL);
02945  M01S00025.ssval3  +++|        RETERN(RELCFILE,RCL);
02946  M01S00026.ssval3  +++|        VLMSG(VM"REL");
02947  M01S00027.ssval3  +++|        VLREQEX(TYP"TYP3",REQTYP3"REL$SETUP");
02948  M01S00028.ssval3  +++|        MP$WD[1] = VLNTC(NFILER,"XCDD",5);
02949  M01S00029.ssval3  +++|        VLMSG(VM"FCREL");
02950  M01S02908.ssval   +++|        END
02951  M01S02909.ssval   +++|
02952  M01S02910.ssval   +++|      IF NOT RELEASED AND MODE EQ S"RELEASE"
02953  M01S02911.ssval   +++|      THEN
02954  M01S02912.ssval   +++|        BEGIN
02955  M01S02913.ssval   +++|        VLMSG(VM"FSNREL");
02956  M01S02914.ssval   +++|        IF RDF$BEFORE
02957  M01S02915.ssval   +++|        THEN
02958  M01S02916.ssval   +++|          BEGIN
02959  M01S02917.ssval   +++|          VLMSG(VM"RDFBF");
02960  M01S02918.ssval   +++|          END
02961  M01S02919.ssval   +++|
02962  M01S02920.ssval   +++|        END
02963  M01S02921.ssval   +++|
02964  M01S02922.ssval   +++|      IF FREFL
02965  M01S02923.ssval   +++|      THEN                           # FREE CARTRIDGE FLAG SET #
02966  M01S02924.ssval   +++|        BEGIN
02967  M01S02925.ssval   +++|        VLMSG(VM"FFSET");
02968  M01S02926.ssval   +++|        END
02969  M01S02927.ssval   +++|
02970  M01S02928.ssval   +++|
02971  M01S02929.ssval   +++|      END  # VLFIX #
02972  M01S02930.ssval   +++|
02973  M01S02931.ssval   +++|    TERM
02974  M01S02932.ssval   +++|PROC VLFIXP(ACTION);
02975  M01S02933.ssval   +++|# TITLE VLFIXP - ATTACHES PERMANENT FILE AND RESETS THE ASA.          #
02976  M01S02934.ssval   +++|
02977  M01S02935.ssval   +++|      BEGIN  # VLFIXP #
02978  M01S02936.ssval   +++|
02979  M01S02937.ssval   +++|#
02980  M01S02938.ssval   +++|**    VLFIXP - RESETS THE *ASA*.
02981  M01S02939.ssval   +++|*
02982  M01S02940.ssval   +++|*     *VLFIXP* ATTACHES THE USER FILE SPECIFIED IN THE FIXIT
02983  M01S02941.ssval   +++|*     FILE ENTRY, VERIFIES THE *ASA* IS CORRECT, RESETS THE
02984  M01S02942.ssval   +++|*     *ASA*, THEN RETURNS THE FILE.
02985  M01S02943.ssval   +++|*
02986  M01S02944.ssval   +++|*     PROC VLFIXP
02987  M01S02945.ssval   +++|*
02988  M01S02946.ssval   +++|*     ENTRY     (PAR$FM)        - FAMILY.
02989  M01S02947.ssval   +++|*               (ACTION) IF ZERO THEN SET FREE FLAG IN *PFC*, ELSE
02990  M01S02948.ssval   +++|*                        ZERO *ASA* IN *PFC*.
02991  M01S02949.ssval   +++|*               ARRAY EXTRECORD - FIXIT FILE RECORD.
02992  M01S02950.ssval   +++|*
02993  M01S02951.ssval   +++|*     EXIT      THE *ASA* FOR THE FIXIT FILE ENTRY IS SET TO ZERO.
02994  M01S02952.ssval   +++|*               THE USER FILE IS RETURNED.
02995  M01S02953.ssval   +++|#
02996  M01S02954.ssval   +++|
02997  M01S02955.ssval   +++|#
02998  M01S02956.ssval   +++|****  PROC VLFIXP - XREF LIST BEGIN.
02999  M01S02957.ssval   +++|#
03000  M01S02958.ssval   +++|
03001  M01S02959.ssval   +++|      XREF
03002  M01S02960.ssval   +++|        BEGIN
03003  M01S02961.ssval   +++|        PROC BZFILL;                 # ZERO FILL STORAGE #
03004  M01S02962.ssval   +++|        PROC MESSAGE;                # SEND MESSAGE TO DAYFILE #
03005  M01S02963.ssval   +++|        PROC SETAF;                  # SET FLAG IN *PFC* #
03006  M01S02964.ssval   +++|        PROC RECALL;                 # INTERFACE TO RECALL #
03007  M01S02965.ssval   +++|        PROC RETERN;                 # RETURNS SPECIFIED FILE #
03008  M01S02966.ssval   +++|        PROC SETASA;                 # INTERFACE TO *SETASA* ROUTINE #
03009  M01S02967.ssval   +++|        PROC UATTACH;                # INTERFACE TO *UATTACH* MACRO #
03010  M01S02968.ssval   +++|        PROC UGET;                   # UTILITY GET #
03011  M01S02969.ssval   +++|        END
03012  M01S02970.ssval   +++|
03013  M01S02971.ssval   +++|#
03014  M01S02972.ssval   +++|****  PROC VLFIXP - XREF LIST END.
03015  M01S02973.ssval   +++|#
03016  M01S02974.ssval   +++|
03017  M01S02975.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
03018  M01S02976.ssval   +++|
03019  M01S02977.ssval   +++|*CALL COMBFAS
03020  M01S02978.ssval   +++|*CALL COMBBZF;
03021  M01S02979.ssval   +++|*CALL COMSPFM
03022  M01S02980.ssval   +++|*CALL COMTVLD
03023  M01S02981.ssval   +++|*CALL COMTVLF
03024  M01S02982.ssval   +++|
03025  M01S02983.ssval   +++|      DEF ACCMD      #1#;            # READ MODE #
03026  M01S02984.ssval   +++|      DEF RP  #4#;                   # FULL ERROR PROCESSING #
03027  M01S02985.ssval   +++|      DEF ZEROASA    #0#;            # ZERO THE *ASA* #
03028  M01S02986.ssval   +++|
03029  M01S02987.ssval   +++|      ITEM ACTION     U;             # ZERO OR SET FLAG #
03030  M01S02988.ssval   +++|      ITEM FAMILY     C(10);         # FAMILY NAME #
03031  M01S02989.ssval   +++|      ITEM I          U;             # INDUCTION VARIABLE #
03032  M01S02990.ssval   +++|      ITEM J          U;             # INDUCTION #
03033  M01S02991.ssval   +++|      ITEM LFN        C(10);         # LOCAL FILE NAME #
03034  M01S02992.ssval   +++|      ITEM PFNM       C(10);         # PERMANENT FILE NAME #
03035  M01S02993.ssval   +++|      ITEM UFLAG      U;             # STATUS FLAG #
03036  M01S02994.ssval   +++|
03037  M01S02995.ssval   +++|      ARRAY PFCCAT [0:0] S(16);      # TEMPORARY ARRAY FOR *PFC* #
03038  M01S02996.ssval   +++|        BEGIN
03039  M01S02997.ssval   +++|        ITEM NOITEM     U(00,00,60);  # DUMMY ITEM #
03040  M01S02998.ssval   +++|        END
03041  M01S02999.ssval   +++|
03042  M01S03000.ssval   +++|      ARRAY MSSGE[0:2];;             # ARRAY FOR MESSAGE #
03043  M01S03001.ssval   +++|
03044  M01S03002.ssval   +++|      ARRAY MSSG [0:0] P(2);
03045  M01S03003.ssval   +++|        BEGIN
03046  M01S03004.ssval   +++|        ITEM MSSG1 C(00,00,13);  # ARRAY FOR MESSAGE #
03047  M01S03005.ssval   +++|        END
03048  M01S03006.ssval   +++|
03049  M01S03007.ssval   +++|                                               CONTROL EJECT;
03050  M01S03008.ssval   +++|
03051  M01S03009.ssval   +++|#
03052  M01S03010.ssval   +++|*     SET ADDRESS FOR BASED ARRAY, *PFC*.
03053  M01S03011.ssval   +++|#
03054  M01S03012.ssval   +++|
03055  M01S03013.ssval   +++|      P<PFC> = LOC(PFCCAT);
03056  M01S03014.ssval   +++|
03057  M01S03015.ssval   +++|
03058  M01S03016.ssval   +++|#
03059  M01S03017.ssval   +++|*     ATTACH THE PERMANENT FILE.
03060  M01S03018.ssval   +++|#
03061  M01S03019.ssval   +++|
03062  M01S03020.ssval   +++|      LFN = UTTLFN;
03063  M01S03021.ssval   +++|      BZFILL(LFN,TYPFILL"ZFILL",10);
03064  M01S03022.ssval   +++|      PFNM= EXTR$PFNC[0];
03065  M01S03023.ssval   +++|      BZFILL(PFNM,TYPFILL"ZFILL",10);
03066  M01S03024.ssval   +++|      FAMILY = PAR$FM;
03067  M01S03025.ssval   +++|      BZFILL(FAMILY,TYPFILL"ZFILL",10);
03068  M01S03026.ssval   +++|
03069  M01S03027.ssval   +++|#
03070  M01S03028.ssval   +++|*     SET THE FREE FLAG IF ACTION = 0.
03071  M01S03029.ssval   +++|#
03072  M01S03030.ssval   +++|
03073  M01S03031.ssval   +++|      IF ACTION EQ 0
03074  M01S03032.ssval   +++|      THEN                        # SET *AFFRE* FLAG IN *PFC* #
03075  M01S03033.ssval   +++|        BEGIN
03076  M01S03034.ssval   +++|        SETAF(LFN,STAT,RP,EXTR$UI[0],FAMILY,EXTR$PFID[0],        ##
03077  M01S03035.ssval   +++|          EXTR$ATASA[0],EXTR$CREA[0],AFFRE,MSSGE[0]);
03078  M01S03036.ssval   +++|        RETURN;
03079  M01S03037.ssval   +++|        END
03080  M01S03038.ssval   +++|
03081  M01S03039.ssval   +++|#
03082  M01S03040.ssval   +++|*     MAKE FILE LOCAL BEFORE SETASA.
03083  M01S03041.ssval   +++|#
03084  M01S03042.ssval   +++|
03085  M01S03043.ssval   +++|      IF EXTR$DA[0]
03086  M01S03044.ssval   +++|      THEN                           # DIRECT ACCESS FILE #
03087  M01S03045.ssval   +++|        BEGIN
03088  M01S03046.ssval   +++|        UATTACH(LFN,STAT,RP,PFNM,ACCMD,EXTR$UI[0],FAMILY, ##
03089  M01S03047.ssval   +++|          EXTR$PFID[0],PFCCAT[0],EXTR$CREA[0],MSSGE[0]);
03090  M01S03048.ssval   +++|        END
03091  M01S03049.ssval   +++|
03092  M01S03050.ssval   +++|      ELSE                           # INDIRECT ACCESS FILE #
03093  M01S03051.ssval   +++|        BEGIN
03094  M01S03052.ssval   +++|        UFLAG = -1;
03095  M01S03053.ssval   +++|        SLOWFOR I = 0 WHILE UFLAG NQ 0
03096  M01S03054.ssval   +++|        DO
03097  M01S03055.ssval   +++|          BEGIN                      # WAIT FOR UGET RESPONSE #
03098  M01S03056.ssval   +++|          UFLAG = -1;
03099  M01S03057.ssval   +++|          UGET(LFN,UFLAG,6,PFNM,EXTR$UI[0],FAMILY,EXTR$PFID[0], ##
03100  M01S03058.ssval   +++|            PFCCAT[0],EXTR$CREA[0],MSSGE[0]);
03101  M01S03059.ssval   +++|
03102  M01S03060.ssval   +++|          IF UFLAG EQ PEA            # EXCESS ACTIVITY #
03103  M01S03061.ssval   +++|            OR UFLAG EQ INA          # NO INTERLOCK #
03104  M01S03062.ssval   +++|          THEN
03105  M01S03063.ssval   +++|            BEGIN
03106  M01S03064.ssval   +++|            TEST I;
03107  M01S03065.ssval   +++|            END
03108  M01S03066.ssval   +++|
03109  M01S03067.ssval   +++|          IF UFLAG NQ 0
03110  M01S03068.ssval   +++|          THEN
03111  M01S03069.ssval   +++|            BEGIN
03112  M01S03070.ssval   +++|            MSSG1 = " UGET FAILED.";
03113  M01S03071.ssval   +++|            MESSAGE(MSSG,UDFL1);
03114  M01S03072.ssval   +++|            UFLAG = 0;
03115  M01S03073.ssval   +++|            END
03116  M01S03074.ssval   +++|
03117  M01S03075.ssval   +++|          END                        # WAIT FOR UGET REQUEST #
03118  M01S03076.ssval   +++|
03119  M01S03077.ssval   +++|        END
03120  M01S03078.ssval   +++|
03121  M01S03079.ssval   +++|
03122  M01S03080.ssval   +++|#
03123  M01S03081.ssval   +++|*     IF THERE WAS NO ERROR, AND IF THE CATALOG MAP *ASA*
03124  M01S03082.ssval   +++|*     MATCHES THE EXTRACT FILE *ASA*,
03125  M01S03083.ssval   +++|*     THEN -
03126  M01S03084.ssval   +++|*     RESET THE *ASA* TO ZERO USING THE *SETASA* MACRO.
03127  M01S03085.ssval   +++|#
03128  M01S03086.ssval   +++|
03129  M01S03087.ssval   +++|      IF (STAT EQ 0) AND (PFC$AA[0] EQ EXTR$ASA[0])
03130  M01S03088.ssval   +++|        AND UFLAG EQ 0
03131  M01S03089.ssval   +++|        AND ACTION EQ 1
03132  M01S03090.ssval   +++|      THEN
03133  M01S03091.ssval   +++|        BEGIN
03134  M01S03092.ssval   +++|        SETASA(LFN,STAT,RP,EXTR$UI[0],FAMILY,EXTR$PFID[0]  ##
03135  M01S03093.ssval   +++|          ,ZEROASA,EXTR$CREA[0],MSSGE[0]);
03136  M01S03094.ssval   +++|        END
03137  M01S03095.ssval   +++|
03138  M01S03096.ssval   +++|      RETERN(UTTLFN,RCL);
03139  M01S03097.ssval   +++|      END  # VLFIXP #
03140  M01S03098.ssval   +++|
03141  M01S03099.ssval   +++|    TERM
03142  M01S03100.ssval   +++|PROC VLLPDT(SUBPAR,SMPAR,LPDT);
03143  M01S03101.ssval   +++|# TITLE VLLPDT - GET LAST PURGE DATE AND TIME.                        #
03144  M01S03102.ssval   +++|
03145  M01S03103.ssval   +++|
03146  M01S03104.ssval   +++|      BEGIN  # VLLPDT #
03147  M01S03105.ssval   +++|
03148  M01S03106.ssval   +++|#
03149  M01S03107.ssval   +++|**    VLLPDT - GET LAST PURGE DATE AND TIME.
03150  M01S03108.ssval   +++|*
03151  M01S03109.ssval   +++|*     *VLLPDT* ISSUES A REQUEST TO *EXEC* TO GET THE "LAST
03152  M01S03110.ssval   +++|*     PURGE DATE AND TIME" FOR THE SUBCATALOG FROM THE
03153  M01S03111.ssval   +++|*     PREAMBLE IN THE SFM CATALOG FOR THE SPECIFIED SUBFAMILY.
03154  M01S03112.ssval   +++|*
03155  M01S03113.ssval   +++|*     PROC VLLPDT(SUBPAR,SMPAR,LPDT)
03156  M01S03114.ssval   +++|*
03157  M01S03115.ssval   +++|*     ENTRY     (SUBPAR) - SUBFAMILY.
03158  M01S03116.ssval   +++|*               (SMPAR) - *SM* DESIGNATOR.
03159  M01S03117.ssval   +++|*
03160  M01S03118.ssval   +++|*     EXIT      (LPDT) - PACKED DATE AND TIME RETURNED FROM *EXEC*.
03161  M01S03119.ssval   +++|#
03162  M01S03120.ssval   +++|
03163  M01S03121.ssval   +++|      ITEM SUBPAR     I;             # SUBFAMILY #
03164  M01S03122.ssval   +++|      ITEM SMPAR      I;             # *SM* ID #
03165  M01S03123.ssval   +++|      ITEM LPDT       I;             # LAST PURGE DATE-TIME #
03166  M01S03124.ssval   +++|
03167  M01S03125.ssval   +++|#
03168  M01S03126.ssval   +++|****  PROC VLLPDT - XREF LIST BEGIN.
03169  M01S03127.ssval   +++|#
03170  M01S03128.ssval   +++|
03171  M01S03129.ssval   +++|      XREF
03172  M01S03130.ssval   +++|        BEGIN
03173  M01S03131.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
03174  M01S03132.ssval   +++|        END
03175  M01S03133.ssval   +++|
03176  M01S03134.ssval   +++|#
03177  M01S03135.ssval   +++|****  PROC VLLPDT - XREF LIST END.
03178  M01S03136.ssval   +++|#
03179  M01S03137.ssval   +++|
03180  M01S03138.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
03181  M01S03139.ssval   +++|
03182  M01S03140.ssval   +++|*CALL COMBFAS
03183  M01S03141.ssval   +++|*CALL COMBCPR
03184  M01S03142.ssval   +++|*CALL COMTVLD
03185  M01S03143.ssval   +++|*CALL COMTVLF
03186  M01S03144.ssval   +++|
03187  M01S03145.ssval   +++|      ITEM CURRSB     I = 0;         # CURRENT SUBFAMILY #
03188  M01S03146.ssval   +++|      ITEM CURRSM     I;             # CURRENT *SM* #
03189  M01S03147.ssval   +++|      ITEM CURRLPDT   I;             # CURRENT LPDT #
03190  M01S03148.ssval   +++|                                               CONTROL EJECT;
03191  M01S03149.ssval   +++|
03192  M01S03150.ssval   +++|#
03193  M01S03151.ssval   +++|*     CALL *EXEC* TO GET THE LAST PURGE DATE/TIME FOR THE SUBCATALOG,
03194  M01S03152.ssval   +++|*     IF IT IS NOT CURRENT.
03195  M01S03153.ssval   +++|#
03196  M01S03154.ssval   +++|
03197  M01S03155.ssval   +++|      IF (CURRSB NQ SUBPAR) OR (CURRSM NQ SMPAR)
03198  M01S03156.ssval   +++|      THEN
03199  M01S03157.ssval   +++|        BEGIN
03200  M01S03158.ssval   +++|        CURRSB = SUBPAR;             # SAVE CURRENT SUBFAMILY #
03201  M01S03159.ssval   +++|        CURRSM = SMPAR;            # SAVE CURRENT *SM* #
03202  M01S03160.ssval   +++|        VLREQEX(TYP"TYP3",REQTYP3"GT$PRGDATE");
03203  M01S03161.ssval   +++|        CURRLPDT = CPR$DATE[0];      # SAVE LAST PURGE DATE/TIME #
03204  M01S03162.ssval   +++|        END
03205  M01S03163.ssval   +++|
03206  M01S03164.ssval   +++|#
03207  M01S03165.ssval   +++|*     RETURN THE LAST PURGE DATE/TIME FOR THE SUBCATALOG.
03208  M01S03166.ssval   +++|#
03209  M01S03167.ssval   +++|
03210  M01S03168.ssval   +++|      LPDT = CURRLPDT;
03211  M01S03169.ssval   +++|
03212  M01S03170.ssval   +++|      END  # VLLPDT #
03213  M01S03171.ssval   +++|
03214  M01S03172.ssval   +++|    TERM
03215  M01S03173.ssval   +++|PROC VLMSG(MNUM);
03216  M01S03174.ssval   +++|# TITLE VLMSG - ISSUE INFORMATIONAL MESSAGE.                          #
03217  M01S03175.ssval   +++|
03218  M01S03176.ssval   +++|      BEGIN  # VLMSG #
03219  M01S03177.ssval   +++|
03220  M01S03178.ssval   +++|#
03221  M01S03179.ssval   +++|**    VLMSG - ISSUE INFORMATIONAL MESSAGE.
03222  M01S03180.ssval   +++|*
03223  M01S03181.ssval   +++|*     *VLMSG* ISSUES A SPECIFIED MESSAGE TO THE DAYFILE AND/OR
03224  M01S03182.ssval   +++|*     TO THE REPORT FILE.
03225  M01S03183.ssval   +++|*
03226  M01S03184.ssval   +++|*     PROC VLMSG(MNUM)
03227  M01S03185.ssval   +++|*
03228  M01S03186.ssval   +++|*     ENTRY     (MNUM)         - MESSAGE NUMBER FROM STATUS LIST *VM*.
03229  M01S03187.ssval   +++|*               (ARRAY MPARAM) - CONTAINS PARAMETER(S) TO INSERT IN
03230  M01S03188.ssval   +++|*                                THE MESSAGE TEXT.
03231  M01S03189.ssval   +++|*
03232  M01S03190.ssval   +++|*     EXIT      THE MESSAGE IS ISSUED.
03233  M01S03191.ssval   +++|*
03234  M01S03192.ssval   +++|*     NOTES     OPTIONS ARE SELECTED BY THE FIRST THREE
03235  M01S03193.ssval   +++|*               CHARACTERS OF THE MESSAGE TEXT.  OPTIONS ARE -
03236  M01S03194.ssval   +++|*               . MSG$SYS (B) -  ISSUES TO THE DAYFILE OR TO THE *B*
03237  M01S03195.ssval   +++|*                 DISPLAY LINE 2.
03238  M01S03196.ssval   +++|*               . MSG$RPT (Y) - ISSUES TO THE REPORT FILE.
03239  M01S03197.ssval   +++|*               . NUMBER OF PARAMETERS TO FILL IN THE MESSAGE TEXT
03240  M01S03198.ssval   +++|*                 FROM THE *MPARAM* ARRAY (NUMERIC, NOT A CHARACTER).
03241  M01S03199.ssval   +++|#
03242  M01S03200.ssval   +++|
03243  M01S03201.ssval   +++|      ITEM MNUM       I;
03244  M01S03202.ssval   +++|
03245  M01S03203.ssval   +++|#
03246  M01S03204.ssval   +++|****  PROC VLMSG - XREF LIST BEGIN.
03247  M01S03205.ssval   +++|#
03248  M01S03206.ssval   +++|
03249  M01S03207.ssval   +++|      XREF
03250  M01S03208.ssval   +++|        BEGIN
03251  M01S03209.ssval   +++|        PROC MESSAGE;                # INTERFACE TO *MESSAGE* MACRO #
03252  M01S03210.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
03253  M01S03211.ssval   +++|                                       LINE #
03254  M01S03212.ssval   +++|        PROC VLPFILL;                # FILL PARAMETER IN MESSAGE
03255  M01S03213.ssval   +++|                                       TEXT #
03256  M01S03214.ssval   +++|        END
03257  M01S03215.ssval   +++|
03258  M01S03216.ssval   +++|#
03259  M01S03217.ssval   +++|****  PROC VLMSG - XREF LIST END.
03260  M01S03218.ssval   +++|#
03261  M01S03219.ssval   +++|
03262  M01S03220.ssval   +++|      DEF LISTCON #0#;
03263  M01S03221.ssval   +++|
03264  M01S03222.ssval   +++|*CALL COMBFAS
03265  M01S03223.ssval   +++|*CALL COMTVLD
03266  M01S03224.ssval   +++|*CALL COMTVLF
03267  M01S03225.ssval   +++|
03268  M01S03226.ssval   +++|      ITEM NP         I;             # NUMBER OF PARAMETERS #
03269  M01S03227.ssval   +++|      ITEM N          I;             # TEMPORARY VARIABLE #
03270  M01S03228.ssval   +++|
03271  M01S03229.ssval   +++|#
03272  M01S03230.ssval   +++|*     ARRAY TO FORMAT THE MESSAGE TO ISSUE.
03273  M01S03231.ssval   +++|#
03274  M01S03232.ssval   +++|
03275  M01S03233.ssval   +++|      ARRAY VMTEXT [0:0] S(5);
03276  M01S03234.ssval   +++|        BEGIN
03277  M01S03235.ssval   +++|        ITEM VMT$LINE   C(00,00,40);
03278  M01S03236.ssval   +++|        ITEM VMT$LEAD   C(00,00,03);  # LEADING CODE CHARACTERS #
03279  M01S03237.ssval   +++|        ITEM VMT$TEXT   C(00,18,37);  # MESSAGE TEXT #
03280  M01S03238.ssval   +++|        ITEM VMT$ZERO   U(04,00,60);  # ZERO BYTE #
03281  M01S03239.ssval   +++|        END
03282  M01S03240.ssval   +++|
03283  M01S03241.ssval   +++|#
03284  M01S03242.ssval   +++|*     ANALYZES ACTIONS TO DO BASED ON THE MESSAGE.
03285  M01S03243.ssval   +++|#
03286  M01S03244.ssval   +++|
03287  M01S03245.ssval   +++|      ARRAY MSGCODES [0:0] S(1);     # MESSAGE CODES #
03288  M01S03246.ssval   +++|        BEGIN
03289  M01S03247.ssval   +++|        ITEM MSG$CODES  C(00,00,03);
03290  M01S03248.ssval   +++|        ITEM MSG$SYS    C(00,00,01);  # ISSUE TO SYSTEM MACRO #
03291  M01S03249.ssval   +++|        ITEM MSG$RPT    C(00,06,01);  # ISSUE TO REPORT FILE #
03292  M01S03250.ssval   +++|        ITEM MSG$PARN   U(00,12,06);  # NUMBER OF PARAMETERS TO INSERT
03293  M01S03251.ssval   +++|                                      #
03294  M01S03252.ssval   +++|        END
03295  M01S03253.ssval   +++|
03296  M01S03254.ssval   +++|                                               CONTROL EJECT;
03297  M01S03255.ssval   +++|
03298  M01S03256.ssval   +++|#
03299  M01S03257.ssval   +++|*     GET CODES FROM MESSAGE TEXT.
03300  M01S03258.ssval   +++|#
03301  M01S03259.ssval   +++|
03302  M01S03260.ssval   +++|      VMT$LINE[0] = VMESS$LINE[MNUM];  # GET MESSAGE TEXT REQUESTED #
03303  M01S03261.ssval   +++|      MSG$CODES[0] = VMT$LEAD[0];    # EXTRACT CODES FROM TEXT #
03304  M01S03262.ssval   +++|      VMT$LEAD[0] = "   ";           # CLEAR CODES FIELD IN TEXT #
03305  M01S03263.ssval   +++|
03306  M01S03264.ssval   +++|#
03307  M01S03265.ssval   +++|*     PUT PARAMETER(S) INTO MESSAGE IF THE NUMBER OF PARAMETERS IS
03308  M01S03266.ssval   +++|*     SPECIFIED IN CODES.
03309  M01S03267.ssval   +++|#
03310  M01S03268.ssval   +++|
03311  M01S03269.ssval   +++|      IF MSG$PARN[0] NQ " "
03312  M01S03270.ssval   +++|      THEN
03313  M01S03271.ssval   +++|        BEGIN
03314  M01S03272.ssval   +++|        NP = MSG$PARN[0] - "0";      # NUMBER CONVERTED TO BINARY #
03315  M01S03273.ssval   +++|        SLOWFOR N = 1 STEP 1 UNTIL NP
03316  M01S03274.ssval   +++|        DO
03317  M01S03275.ssval   +++|          BEGIN
03318  M01S03276.ssval   +++|          VLPFILL(VMTEXT,MPARAM[N]);  # MOVE PARAMETER INTO TEXT #
03319  M01S03277.ssval   +++|          END
03320  M01S03278.ssval   +++|
03321  M01S03279.ssval   +++|        END
03322  M01S03280.ssval   +++|
03323  M01S03281.ssval   +++|#
03324  M01S03282.ssval   +++|*     ISSUE MESSAGE REQUEST TO THE SYSTEM IF SPECIFIED.
03325  M01S03283.ssval   +++|#
03326  M01S03284.ssval   +++|
03327  M01S03285.ssval   +++|      IF MSG$SYS[0] NQ "N"
03328  M01S03286.ssval   +++|      THEN
03329  M01S03287.ssval   +++|        BEGIN  # ISSUE TO SYSTEM #
03330  M01S03288.ssval   +++|        IF MSG$SYS[0] EQ "B"
03331  M01S03289.ssval   +++|        THEN
03332  M01S03290.ssval   +++|          BEGIN
03333  M01S03291.ssval   +++|          MESSAGE(VMT$TEXT[0],LINE2);  # B ONLY #
03334  M01S03292.ssval   +++|          END
03335  M01S03293.ssval   +++|
03336  M01S03294.ssval   +++|        ELSE
03337  M01S03295.ssval   +++|          BEGIN
03338  M01S03296.ssval   +++|          IF MSG$SYS[0] EQ "S"
03339  M01S03297.ssval   +++|          THEN
03340  M01S03298.ssval   +++|            BEGIN
03341  M01S03299.ssval   +++|            MESSAGE(VMT$TEXT[0],SYSUDF1);
03342  M01S03300.ssval   +++|            END
03343  M01S03301.ssval   +++|
03344  M01S03302.ssval   +++|          ELSE
03345  M01S03303.ssval   +++|            BEGIN
03346  M01S03304.ssval   +++|            MESSAGE(VMT$TEXT[0],UDFL1);
03347  M01S03305.ssval   +++|            END
03348  M01S03306.ssval   +++|
03349  M01S03307.ssval   +++|          END
03350  M01S03308.ssval   +++|
03351  M01S03309.ssval   +++|        END  # ISSUE TO SYSTEM #
03352  M01S03310.ssval   +++|
03353  M01S03311.ssval   +++|#
03354  M01S03312.ssval   +++|*     ISSUE MESSAGE TO THE REPORT FILE IF REQUESTED.
03355  M01S03313.ssval   +++|#
03356  M01S03314.ssval   +++|
03357  M01S03315.ssval   +++|      IF MSG$RPT[0] NQ "N"
03358  M01S03316.ssval   +++|      THEN
03359  M01S03317.ssval   +++|        BEGIN
03360  M01S03318.ssval   +++|        RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
03361  M01S03319.ssval   +++|        RPLINE(RPTFADR,VMT$TEXT[0],3,37,EOPL);  # ISSUE TO REPORT #
03362  M01S03320.ssval   +++|        END
03363  M01S03321.ssval   +++|
03364  M01S03322.ssval   +++|      END  # VLMSG #
03365  M01S03323.ssval   +++|
03366  M01S03324.ssval   +++|    TERM
03367  M01S03325.ssval   +++|PROC VLNCS;
03368  M01S03326.ssval   +++|# TITLE VLNCS - NORMAL CHAIN SCAN.                                    #
03369  M01S03327.ssval   +++|
03370  M01S03328.ssval   +++|
03371  M01S03329.ssval   +++|      BEGIN  # VLNCS #
03372  M01S03330.ssval   +++|
03373  M01S03331.ssval   +++|#
03374  M01S03332.ssval   +++|**    VLNCS - NORMAL CHAIN SCAN.
03375  M01S03333.ssval   +++|*
03376  M01S03334.ssval   +++|*     *VLNCS* SCANS ALL ENTRIES IN THE *VT* TABLE LOCATING
03377  M01S03335.ssval   +++|*     AND MARKING NORMAL CHAINS.  THE CHAIN IS SEARCHED
03378  M01S03336.ssval   +++|*     BEGINNING WITH THE HEAD OF CHAIN ENTRY AND PROCEEDING
03379  M01S03337.ssval   +++|*     THROUGH THE LINKAGE UNTIL *EOC* OR AN ERROR IS DETECTED.
03380  M01S03338.ssval   +++|*     ALL ENTRIES ON A CHAIN ARE MARKED BY SETTING THE POINTER
03381  M01S03339.ssval   +++|*     FIELD TO THE INDEX OF THE HEAD OF CHAIN (*HOC*) ENTRY.
03382  M01S03340.ssval   +++|*     FLAGS ARE SET IN THE *VT* ENTRIES FOR ERRORS DETECTED.
03383  M01S03341.ssval   +++|*
03384  M01S03342.ssval   +++|*     PROC VLNCS
03385  M01S03343.ssval   +++|*
03386  M01S03344.ssval   +++|*     ENTRY     (PAR$ST)      - SCATTER FILE PARAMETER.
03387  M01S03345.ssval   +++|*               (VTFIRST)     - INDEX OF FIRST ENTRY IN *VT*.
03388  M01S03346.ssval   +++|*               (VTLAST)      - INDEX OF LAST ENTRY IN *VT*.
03389  M01S03347.ssval   +++|*               (ARRAY VTTAB) - VALIDATION TABLE.
03390  M01S03348.ssval   +++|*
03391  M01S03349.ssval   +++|*     EXIT      THE FOLLOWING FIELDS IN THE *VT* ENTRY MAY BE UPDATED.
03392  M01S03350.ssval   +++|*               (VTEN$POINT) - INDEX OF THE *HOC* ENTRY.
03393  M01S03351.ssval   +++|*               (VTEN$ILL)   - ILL-FORMED CHAIN.
03394  M01S03352.ssval   +++|*               (VTEN$INTC)  - INTERSECTING CHAIN.
03395  M01S03353.ssval   +++|*               (VTEN$INTS)  - INTERSECTING AU.
03396  M01S03354.ssval   +++|*               (VTEN$SCAT)  - SCATTERED FILE.
03397  M01S03355.ssval   +++|*
03398  M01S03356.ssval   +++|*               INTERSECTING CHAIN DETAIL LINES ARE ISSUED TO THE
03399  M01S03357.ssval   +++|*               REPORT FILE IF INTERSECTIONS ARE DETECTED.
03400  M01S03358.ssval   +++|*
03401  M01S03359.ssval   +++|*     NOTES     CHAINS ARE FOLLOWED UNTIL -
03402  M01S03360.ssval   +++|*               . AN END OF CHAIN ENTRY IS DETECTED.
03403  M01S03361.ssval   +++|*               . AN ILL-FORMED CHAIN IS DETECTED.
03404  M01S03362.ssval   +++|*               . AN INTERSECTING CHAIN IS DETECTED.
03405  M01S03363.ssval   +++|*
03406  M01S03364.ssval   +++|*               ILL-FORMED CHAINS ARE THOSE WHICH HAVE A MEMBER
03407  M01S03365.ssval   +++|*               THAT LINKS TO AN ENTRY ON THIS CHAIN (LOOPING)
03408  M01S03366.ssval   +++|*               OR THAT LINKS TO AN UNALLOCATED ENTRY OR HAS A
03409  M01S03367.ssval   +++|*               LINK THAT IS NOT ZERO WHEN THE *EOC* FLAG IS SET.
03410  M01S03368.ssval   +++|*
03411  M01S03369.ssval   +++|*               INTERSECTING CHAINS ARE THOSE THAT HAVE A MEMBER
03412  M01S03370.ssval   +++|*               THAT LINKS TO AN ENTRY ON A DIFFERENT CHAIN.
03413  M01S03371.ssval   +++|*
03414  M01S03372.ssval   +++|*               A SCATTERED FILE CHECK IS PERFORMED.  THE SCATTERED
03415  M01S03373.ssval   +++|*               FLAG IS SET IF THE NUMBER OF CARTRIDGES FOR THE
03416  M01S03374.ssval   +++|*               CHAIN IS GREATER THAN THE *ST* PARAMETER.
03417  M01S03375.ssval   +++|*
03418  M01S03376.ssval   +++|#
03419  M01S03377.ssval   +++|
03420  M01S03378.ssval   +++|#
03421  M01S03379.ssval   +++|****  PROC VLNCS - XREF LIST BEGIN.
03422  M01S03380.ssval   +++|#
03423  M01S03381.ssval   +++|
03424  M01S03382.ssval   +++|      XREF
03425  M01S03383.ssval   +++|        BEGIN
03426  M01S03384.ssval   +++|        PROC VLBICT;                 # INTERSECTING CHAIN REPORT #
03427  M01S03385.ssval   +++|        END
03428  M01S03386.ssval   +++|
03429  M01S03387.ssval   +++|#
03430  M01S03388.ssval   +++|****  PROC VLNCS - XREF LIST END.
03431  M01S03389.ssval   +++|#
03432  M01S03390.ssval   +++|
03433  M01S03391.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
03434  M01S03392.ssval   +++|
03435  M01S03393.ssval   +++|*CALL COMBFAS
03436  M01S03394.ssval   +++|*CALL COMTVLD
03437  M01S03395.ssval   +++|*CALL COMTVLV
03438  M01S03396.ssval   +++|
03439  M01S03397.ssval   +++|
03440  M01S03398.ssval   +++|      STATUS CHAIN                   # CHAIN STATUS #
03441  M01S03399.ssval   +++|        OK,                          # GOOD CHAIN #
03442  M01S03400.ssval   +++|        ILL,                         # ILL-FORMED CHAIN #
03443  M01S03401.ssval   +++|        INTC;                        # INTERSECTING CHAIN #
03444  M01S03402.ssval   +++|
03445  M01S03403.ssval   +++|      ITEM ENDCHAIN   B;             # END OF CHAIN FLAG #
03446  M01S03404.ssval   +++|      ITEM FREESTAT   B;             # FREE FLAG STATUS #
03447  M01S03405.ssval   +++|      ITEM HOCSTAT    S : CHAIN;     # HEAD-OF-CHAIN STATUS #
03448  M01S03406.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
03449  M01S03407.ssval   +++|      ITEM AUCNT      I;             # COUNT OF AU-S IN CHAIN #
03450  M01S03408.ssval   +++|      ITEM CARTCNT    I;             # COUNT OF CARTRIDGES IN CHAIN #
03451  M01S03409.ssval   +++|
03452  M01S03410.ssval   +++|                                               CONTROL EJECT;
03453  M01S03411.ssval   +++|
03454  M01S03412.ssval   +++|#
03455  M01S03413.ssval   +++|*     SCAN *VT* FOR *HOC* ENTRIES.
03456  M01S03414.ssval   +++|#
03457  M01S03415.ssval   +++|
03458  M01S03416.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
03459  M01S03417.ssval   +++|      DO
03460  M01S03418.ssval   +++|        BEGIN  # *VT* SCAN #
03461  M01S03419.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET ENTRY #
03462  M01S03420.ssval   +++|
03463  M01S03421.ssval   +++|        IF NOT VTEN$HOC[0]           # SKIP IF NOT HEAD OF CHAIN #
03464  M01S03422.ssval   +++|        THEN
03465  M01S03423.ssval   +++|          BEGIN
03466  M01S03424.ssval   +++|          TEST I;
03467  M01S03425.ssval   +++|          END
03468  M01S03426.ssval   +++|
03469  M01S03427.ssval   +++|
03470  M01S03428.ssval   +++|        VTPTR = I;                   # SET TO HEAD OF CHAIN #
03471  M01S03429.ssval   +++|
03472  M01S03430.ssval   +++|
03473  M01S03431.ssval   +++|#
03474  M01S03432.ssval   +++|*     INITIALIZE.
03475  M01S03433.ssval   +++|#
03476  M01S03434.ssval   +++|
03477  M01S03435.ssval   +++|        AUCNT = 0;
03478  M01S03436.ssval   +++|        CARTCNT = 1;
03479  M01S03437.ssval   +++|        ENDCHAIN = FALSE;
03480  M01S03438.ssval   +++|        FREESTAT = FALSE;
03481  M01S03439.ssval   +++|        HOCSTAT = S"OK";             # ASSUME GOOD #
03482  M01S03440.ssval   +++|
03483  M01S03441.ssval   +++|#
03484  M01S03442.ssval   +++|*     PROCESS EACH ENTRY IN THE CHAIN STARTING WITH HEAD OF CHAIN.
03485  M01S03443.ssval   +++|*     NOTE - ENTRIES ARE PLACED ON A CHAIN BY SETTING THE VTEN$POINT
03486  M01S03444.ssval   +++|*            FIELD EQUAL TO THE INDEX FOR THE HEAD OF CHAIN.
03487  M01S03445.ssval   +++|*            I = HEAD OF CHAIN INDEX.
03488  M01S03446.ssval   +++|#
03489  M01S03447.ssval   +++|
03490  M01S03448.ssval   +++|        REPEAT WHILE NOT ENDCHAIN
03491  M01S03449.ssval   +++|        DO                           # NORMAL CHAIN PROCESS #
03492  M01S03450.ssval   +++|          BEGIN  # NOT END OF CHAIN #
03493  M01S03451.ssval   +++|          IF VTEN$POINT[0] EQ 0
03494  M01S03452.ssval   +++|          THEN
03495  M01S03453.ssval   +++|
03496  M01S03454.ssval   +++|#
03497  M01S03455.ssval   +++|*     PUT ENTRY ON CHAIN.
03498  M01S03456.ssval   +++|#
03499  M01S03457.ssval   +++|
03500  M01S03458.ssval   +++|            BEGIN  # ADD TO CHAIN #
03501  M01S03459.ssval   +++|            VTEN$POINT[0] = I;       # MARK ENTRY ON CHAIN #
03502  M01S03460.ssval   +++|            IF NOT VTEN$ALOC[0]
03503  M01S03461.ssval   +++|            THEN
03504  M01S03462.ssval   +++|              BEGIN
03505  M01S03463.ssval   +++|              VTEN$SOF[0] = TRUE;
03506  M01S03464.ssval   +++|              END
03507  M01S03465.ssval   +++|
03508  M01S03466.ssval   +++|            IF NOT VTEN$ALOC[0] OR VTEN$EOC[0] AND VTEN$LINK[0] NQ 0
03509  M01S03467.ssval   +++|              THEN
03510  M01S03468.ssval   +++|              BEGIN
03511  M01S03469.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03512  M01S03470.ssval   +++|              END
03513  M01S03471.ssval   +++|
03514  M01S03472.ssval   +++|            AUCNT = AUCNT + 1;
03515  M01S03473.ssval   +++|            IF VTEN$OCL[0] NQ 0
03516  M01S03474.ssval   +++|            THEN                     # LINK IS OFF CARTRIDGE #
03517  M01S03475.ssval   +++|              BEGIN
03518  M01S03476.ssval   +++|              CARTCNT = CARTCNT + 1;
03519  M01S03477.ssval   +++|              END
03520  M01S03478.ssval   +++|
03521  M01S03479.ssval   +++|            IF VTEN$FCF[0]
03522  M01S03480.ssval   +++|            THEN                     # FREE CARTRIDGE FLAG SET #
03523  M01S03481.ssval   +++|              BEGIN
03524  M01S03482.ssval   +++|              FREESTAT = TRUE;
03525  M01S03483.ssval   +++|              END
03526  M01S03484.ssval   +++|
03527  M01S03485.ssval   +++|            END  # ADD TO CHAIN #
03528  M01S03486.ssval   +++|
03529  M01S03487.ssval   +++|          ELSE                       # VTEN$POINT[0] NOT EQUAL TO 0 #
03530  M01S03488.ssval   +++|
03531  M01S03489.ssval   +++|#
03532  M01S03490.ssval   +++|*     ENTRY ALREADY ASSIGNED TO A CHAIN.
03533  M01S03491.ssval   +++|#
03534  M01S03492.ssval   +++|
03535  M01S03493.ssval   +++|            BEGIN  # ENTRY ON A CHAIN #
03536  M01S03494.ssval   +++|            VTEN$INTS[0] = TRUE;
03537  M01S03495.ssval   +++|            IF VTEN$POINT[0] EQ I
03538  M01S03496.ssval   +++|            THEN
03539  M01S03497.ssval   +++|              BEGIN
03540  M01S03498.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03541  M01S03499.ssval   +++|              VTEN$LOOP[0] = TRUE;
03542  M01S03500.ssval   +++|              END
03543  M01S03501.ssval   +++|
03544  M01S03502.ssval   +++|            ELSE
03545  M01S03503.ssval   +++|              BEGIN
03546  M01S03504.ssval   +++|              HOCSTAT = S"INTC";     # INTERSECTING CHAIN #
03547  M01S03505.ssval   +++|              VLBICT(I,VTEN$POINT[0]);  # REPORT INTERSECTIONS #
03548  M01S03506.ssval   +++|              END
03549  M01S03507.ssval   +++|
03550  M01S03508.ssval   +++|            END  # ENTRY ON A CHAIN #
03551  M01S03509.ssval   +++|
03552  M01S03510.ssval   +++|#
03553  M01S03511.ssval   +++|*     UPDATE AU ENTRY.
03554  M01S03512.ssval   +++|#
03555  M01S03513.ssval   +++|
03556  M01S03514.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # STORE ENTRY TO *VT* #
03557  M01S03515.ssval   +++|
03558  M01S03516.ssval   +++|#
03559  M01S03517.ssval   +++|*     DETERMINE IF END-OF-CHAIN.  THE END IS WHEN THE END OF CHAIN
03560  M01S03518.ssval   +++|*     FLAG IS SET OR A CHAIN WITH LINKAGE PROBLEMS HAS BEEN DETECTED.
03561  M01S03519.ssval   +++|#
03562  M01S03520.ssval   +++|
03563  M01S03521.ssval   +++|          ENDCHAIN = VTEN$EOC[0] OR HOCSTAT NQ 0;
03564  M01S03522.ssval   +++|
03565  M01S03523.ssval   +++|#
03566  M01S03524.ssval   +++|*     GET LINK TO NEXT IF NOT AT END.
03567  M01S03525.ssval   +++|#
03568  M01S03526.ssval   +++|
03569  M01S03527.ssval   +++|          IF NOT ENDCHAIN
03570  M01S03528.ssval   +++|          THEN
03571  M01S03529.ssval   +++|            BEGIN  # LINK TO NEXT #
03572  M01S03530.ssval   +++|            VTPTR = VTEN$LINK[0];
03573  M01S03531.ssval   +++|            IF (VTPTR LS VTFIRST) OR (VTPTR GR VTLAST)
03574  M01S03532.ssval   +++|            THEN                     # BAD LINK #
03575  M01S03533.ssval   +++|              BEGIN
03576  M01S03534.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03577  M01S03535.ssval   +++|              ENDCHAIN = TRUE;
03578  M01S03536.ssval   +++|              END
03579  M01S03537.ssval   +++|
03580  M01S03538.ssval   +++|            END  # LINK TO NEXT #
03581  M01S03539.ssval   +++|
03582  M01S03540.ssval   +++|
03583  M01S03541.ssval   +++|#
03584  M01S03542.ssval   +++|*     GET NEXT AU IN CHAIN.
03585  M01S03543.ssval   +++|#
03586  M01S03544.ssval   +++|
03587  M01S03545.ssval   +++|          IF NOT ENDCHAIN
03588  M01S03546.ssval   +++|          THEN
03589  M01S03547.ssval   +++|            BEGIN
03590  M01S03548.ssval   +++|            VTEN$WORD[0] = VT$ITEM[VTPTR];  # NEXT AU #
03591  M01S03549.ssval   +++|            END
03592  M01S03550.ssval   +++|
03593  M01S03551.ssval   +++|          END  # NOT END OF CHAIN #
03594  M01S03552.ssval   +++|
03595  M01S03553.ssval   +++|#
03596  M01S03554.ssval   +++|*     IF INTERSECTING CHAINS, UPDATE OTHER *HOC* ENTRY.
03597  M01S03555.ssval   +++|#
03598  M01S03556.ssval   +++|
03599  M01S03557.ssval   +++|        IF HOCSTAT EQ S"INTC"
03600  M01S03558.ssval   +++|        THEN
03601  M01S03559.ssval   +++|          BEGIN
03602  M01S03560.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
03603  M01S03561.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING #
03604  M01S03562.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # STORE *HOC* ENTRY #
03605  M01S03563.ssval   +++|          END
03606  M01S03564.ssval   +++|
03607  M01S03565.ssval   +++|#
03608  M01S03566.ssval   +++|*     UPDATE THE *HOC* ENTRY.
03609  M01S03567.ssval   +++|#
03610  M01S03568.ssval   +++|
03611  M01S03569.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *HOC* ENTRY #
03612  M01S03570.ssval   +++|        IF HOCSTAT EQ S"ILL"
03613  M01S03571.ssval   +++|        THEN
03614  M01S03572.ssval   +++|          BEGIN
03615  M01S03573.ssval   +++|          VTEN$ILL[0] = TRUE;        # SET ILL-FORMED BIT #
03616  M01S03574.ssval   +++|          END
03617  M01S03575.ssval   +++|
03618  M01S03576.ssval   +++|        IF HOCSTAT EQ S"INTC"
03619  M01S03577.ssval   +++|        THEN
03620  M01S03578.ssval   +++|          BEGIN
03621  M01S03579.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING BIT #
03622  M01S03580.ssval   +++|          END
03623  M01S03581.ssval   +++|
03624  M01S03582.ssval   +++|#
03625  M01S03583.ssval   +++|*     DO SCATTERED FILE CHECK.
03626  M01S03584.ssval   +++|#
03627  M01S03585.ssval   +++|
03628  M01S03586.ssval   +++|        IF CARTCNT GR PAR$ST
03629  M01S03587.ssval   +++|        THEN
03630  M01S03588.ssval   +++|          BEGIN
03631  M01S03589.ssval   +++|          VTEN$SCAT[0] = TRUE;       # SET SCATTERED BIT #
03632  M01S03590.ssval   +++|          END
03633  M01S03591.ssval   +++|
03634  M01S03592.ssval   +++|        IF FREESTAT
03635  M01S03593.ssval   +++|        THEN                         # FREE CARTRIDGE FLAG WAS SET #
03636  M01S03594.ssval   +++|          BEGIN
03637  M01S03595.ssval   +++|          VTEN$FCF[0] = TRUE;
03638  M01S03596.ssval   +++|          END
03639  M01S03597.ssval   +++|
03640  M01S03598.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *HOC* ENTRY #
03641  M01S03599.ssval   +++|
03642  M01S03600.ssval   +++|        END  # *VT* SCAN #
03643  M01S03601.ssval   +++|
03644  M01S03602.ssval   +++|      END  # VLNCS #
03645  M01S03603.ssval   +++|
03646  M01S03604.ssval   +++|    TERM
03647  M01S03605.ssval   +++|FUNC VLNTC((FLD),(CONVTYP),(SIZE)) C(10);
03648  M01S03606.ssval   +++|# TITLE VLNTC - NUMERIC TO CHARACTER CONVERSION.                      #
03649  M01S03607.ssval   +++|
03650  M01S03608.ssval   +++|      BEGIN  # VLNTC #
03651  M01S03609.ssval   +++|
03652  M01S03610.ssval   +++|#
03653  M01S03611.ssval   +++|**    VLNTC - NUMERIC TO CHARACTER CONVERSION.
03654  M01S03612.ssval   +++|*
03655  M01S03613.ssval   +++|*     *VLNTC* CONVERTS THE DECIMAL/OCTAL NUMERIC TYPE DATA FIELD
03656  M01S03614.ssval   +++|*     INTO A LEFT-JUSTIFIED CHARACTER TYPE FIELD.
03657  M01S03615.ssval   +++|*
03658  M01S03616.ssval   +++|*     THE DATA IN *FLD* IS CONVERTED AS SPECIFIED IN *CONVTYP*.
03659  M01S03617.ssval   +++|*     THEN THE NUMBER (*SIZE*) OF RIGHT-JUSTIFIED CONVERTED
03660  M01S03618.ssval   +++|*     CHARACTERS IS LEFT-JUSTIFIED INTO THE RESULT FIELD *VLNTC*.
03661  M01S03619.ssval   +++|*
03662  M01S03620.ssval   +++|*     FUNC VLNTC(FLD,CONVTYP,SIZE)
03663  M01S03621.ssval   +++|*
03664  M01S03622.ssval   +++|*     ENTRY     (FLD)     - DATA FIELD TO CONVERT (RIGHT JUSTIFIED).
03665  M01S03623.ssval   +++|*               (CONVTYP) - "XCDD" FOR DECIMAL DISPLAY CONVERSION.
03666  M01S03624.ssval   +++|*                           "XCOD" FOR OCTAL DISPLAY CONVERSION.
03667  M01S03625.ssval   +++|*                           ANYTHING ELSE IMPLIES NO CONVERSION.
03668  M01S03626.ssval   +++|*               (SIZE)    - NUMBER OF CHARACTERS IN CONVERTED RESULT
03669  M01S03627.ssval   +++|*                           TO RETURN.
03670  M01S03628.ssval   +++|*
03671  M01S03629.ssval   +++|*     EXIT      (VLNTC) - CONVERTED DATA, LEFT JUSTIFIED, BLANK
03672  M01S03630.ssval   +++|*                         FILLED.
03673  M01S03631.ssval   +++|*
03674  M01S03632.ssval   +++|#
03675  M01S03633.ssval   +++|
03676  M01S03634.ssval   +++|      ITEM FLD        I;             # FIELD TO CONVERT #
03677  M01S03635.ssval   +++|      ITEM CONVTYP    C(10);         # TYPE OF CONVERSION #
03678  M01S03636.ssval   +++|      ITEM SIZE       I;             # SIZE OF RESULT #
03679  M01S03637.ssval   +++|
03680  M01S03638.ssval   +++|#
03681  M01S03639.ssval   +++|****  FUNC VLNTC - XREF LIST BEGIN.
03682  M01S03640.ssval   +++|#
03683  M01S03641.ssval   +++|
03684  M01S03642.ssval   +++|      XREF
03685  M01S03643.ssval   +++|        BEGIN
03686  M01S03644.ssval   +++|        PROC VLBFILL;                # BLANK FILL #
03687  M01S03645.ssval   +++|        FUNC XCDD;                   # CONVERT INTEGER TO DECIMAL
03688  M01S03646.ssval   +++|                                       DISPLAY #
03689  M01S03647.ssval   +++|        FUNC XCOD;                   # CONVERT INTEGER TO OCTAL
03690  M01S03648.ssval   +++|                                       DISPLAY #
03691  M01S03649.ssval   +++|        END
03692  M01S03650.ssval   +++|
03693  M01S03651.ssval   +++|#
03694  M01S03652.ssval   +++|****  FUNC VLNTC - XREF LIST END.
03695  M01S03653.ssval   +++|#
03696  M01S03654.ssval   +++|
03697  M01S03655.ssval   +++|      ITEM NUMBER     I;             # TEMPORARY VARIABLE #
03698  M01S03656.ssval   +++|
03699  M01S03657.ssval   +++|                                               CONTROL EJECT;
03700  M01S03658.ssval   +++|
03701  M01S03659.ssval   +++|
03702  M01S03660.ssval   +++|      NUMBER = FLD;
03703  M01S03661.ssval   +++|
03704  M01S03662.ssval   +++|#
03705  M01S03663.ssval   +++|*     CONVERT FIELD AS SPECIFIED.
03706  M01S03664.ssval   +++|#
03707  M01S03665.ssval   +++|
03708  M01S03666.ssval   +++|      IF CONVTYP EQ "XCDD"           # INTEGER TO DECIMAL #
03709  M01S03667.ssval   +++|      THEN
03710  M01S03668.ssval   +++|        BEGIN
03711  M01S03669.ssval   +++|        NUMBER = XCDD(FLD);
03712  M01S03670.ssval   +++|        END
03713  M01S03671.ssval   +++|
03714  M01S03672.ssval   +++|      IF CONVTYP EQ "XCOD"           # INTEGER TO OCTAL #
03715  M01S03673.ssval   +++|      THEN
03716  M01S03674.ssval   +++|        BEGIN
03717  M01S03675.ssval   +++|        NUMBER = XCOD(FLD);
03718  M01S03676.ssval   +++|        END
03719  M01S03677.ssval   +++|
03720  M01S03678.ssval   +++|#
03721  M01S03679.ssval   +++|*     BLANK FILL.
03722  M01S03680.ssval   +++|#
03723  M01S03681.ssval   +++|
03724  M01S03682.ssval   +++|      VLBFILL(NUMBER,1);
03725  M01S03683.ssval   +++|
03726  M01S03684.ssval   +++|#
03727  M01S03685.ssval   +++|*     RETURN THE FIELD WITH THE NUMBER OF CHARACTERS SPECIFIED,
03728  M01S03686.ssval   +++|*     LEFT JUSTIFIED, BLANK FILLED.
03729  M01S03687.ssval   +++|#
03730  M01S03688.ssval   +++|
03731  M01S03689.ssval   +++|      VLNTC = C<10-SIZE,SIZE>NUMBER;
03732  M01S03690.ssval   +++|
03733  M01S03691.ssval   +++|      END  # VLNTC #
03734  M01S03692.ssval   +++|
03735  M01S03693.ssval   +++|    TERM
03736  M01S03694.ssval   +++|PROC VLPFC;
03737  M01S03695.ssval   +++|
03738  M01S03696.ssval   +++|# TITLE VLPFC - READ PFC.                                             #
03739  M01S03697.ssval   +++|
03740  M01S03698.ssval   +++|      BEGIN  # VLPFC #
03741  M01S03699.ssval   +++|
03742  M01S03700.ssval   +++|#
03743  M01S03701.ssval   +++|**    VLPFC - READ THE *PFC*.
03744  M01S03702.ssval   +++|*
03745  M01S03703.ssval   +++|*     *VLPFC* BUILDS THE *PFC* EXTRACT FILES FROM THE *PFC*
03746  M01S03704.ssval   +++|*     CATALOG ENTRIES FOR THE SELECTED SUBFAMILIES AND
03747  M01S03705.ssval   +++|*     SELECTED SM(S).
03748  M01S03706.ssval   +++|*
03749  M01S03707.ssval   +++|*     PROC VLPFC
03750  M01S03708.ssval   +++|*
03751  M01S03709.ssval   +++|*     ENTRY     (DEVMASK) - SELECTED SUBFAMILY(S) DEVICE MASK.
03752  M01S03710.ssval   +++|*               (PAR$CS)  - SELECTED *SM-S*.
03753  M01S03711.ssval   +++|*               (PAR$FM)  - FAMILY.
03754  M01S03712.ssval   +++|*               (PAR$SB)  - SELECTED SUBFAMILIES.
03755  M01S03713.ssval   +++|*               (RPTFADR) - REPORT FILE *FET* ADDRESS.
03756  M01S03714.ssval   +++|*
03757  M01S03715.ssval   +++|*     EXIT      THE *PFC* EXTRACT FILES ARE WRITTEN.
03758  M01S03716.ssval   +++|*
03759  M01S03717.ssval   +++|*               FOR ERRORS DETECTED -
03760  M01S03718.ssval   +++|*                1) (TOTALERRS) - TOTAL VALIDATION ERRORS INCREMENTED.
03761  M01S03719.ssval   +++|*                2)  ERROR DETAIL LINES WRITTEN TO THE REPORT FILE.
03762  M01S03720.ssval   +++|*
03763  M01S03721.ssval   +++|*     MESSAGES  * ERROR READING *PFC* *
03764  M01S03722.ssval   +++|*
03765  M01S03723.ssval   +++|*     NOTES     VALIDATION ERRORS DETECTED ARE -
03766  M01S03724.ssval   +++|*               . INVALID *SM* IN *ASA*.
03767  M01S03725.ssval   +++|*
03768  M01S03726.ssval   +++|#
03769  M01S03727.ssval   +++|
03770  M01S03728.ssval   +++|#
03771  M01S03729.ssval   +++|****  PROC VLPFC - XREF LIST BEGIN.
03772  M01S03730.ssval   +++|#
03773  M01S03731.ssval   +++|
03774  M01S03732.ssval   +++|      XREF
03775  M01S03733.ssval   +++|        BEGIN
03776  M01S03734.ssval   +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
03777  M01S03735.ssval   +++|        PROC RDPFC;                  # READ PERMANENT FILE CATALOG #
03778  M01S03736.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
03779  M01S03737.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
03780  M01S03738.ssval   +++|                                       LINE #
03781  M01S03739.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
03782  M01S03740.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
03783  M01S03741.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
03784  M01S03742.ssval   +++|                                       CONVERSION #
03785  M01S03743.ssval   +++|        PROC WRITEF;                 # INTERFACE TO *WRITEF* MACRO #
03786  M01S03744.ssval   +++|        PROC WRITEW;                 # INTERFACE TO *WRITEW* MACRO #
03787  M01S03745.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
03788  M01S03746.ssval   +++|        END
03789  M01S03747.ssval   +++|
03790  M01S03748.ssval   +++|#
03791  M01S03749.ssval   +++|****  PROC VLPFC - XREF LIST END.
03792  M01S03750.ssval   +++|#
03793  M01S03751.ssval   +++|
03794  M01S03752.ssval   +++|      DEF LISTCON #0#;               # TURN COMMON DECK LISTING OFF #
03795  M01S03753.ssval   +++|*CALL COMBFAS
03796  M01S03754.ssval   +++|*CALL COMSPFM
03797  M01S03755.ssval   +++|*CALL COMTCTW
03798  M01S03756.ssval   +++|*CALL COMTVLD
03799  M01S03757.ssval   +++|*CALL COMTVLF
03800  M01S03758.ssval   +++|*CALL COMTVLX
03801  M01S03759.ssval   +++|
03802  M01S03760.ssval   +++|      ITEM VPEO       I;             # *PFC* ENTRY ORDINAL #
03803  M01S03761.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
03804  M01S03762.ssval   +++|      ITEM IWC        I;             # INCREMENTED WORD COUNT #
03805  M01S03763.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
03806  M01S03764.ssval   +++|      ITEM WDCNT      I;             # WORD COUNT #
03807  M01S03765.ssval   +++|
03808  M01S03766.ssval   +++|#
03809  M01S03767.ssval   +++|*     BUFFER AREA FOR *PFC* ENTRY.
03810  M01S03768.ssval   +++|#
03811  M01S03769.ssval   +++|
03812  M01S03770.ssval   +++|      ARRAY VPFCBUFFER [0:O"101"] S(1);  # *PFC* BUFFER #
03813  M01S03771.ssval   +++|      ITEM VPFC$WD    U(00,00,60);
03814  M01S03772.ssval   +++|
03815  M01S03773.ssval   +++|#
03816  M01S03774.ssval   +++|*     ERROR LINES FOR REPORT FILE.
03817  M01S03775.ssval   +++|#
03818  M01S03776.ssval   +++|
03819  M01S03777.ssval   +++|      ARRAY BADSM [0:0] S(5);       # INVALID *SM* REPORT LINE #
03820  M01S03778.ssval   +++|        BEGIN
03821  M01S03779.ssval   +++|        ITEM BAD$DESC   C(00,00,50) = ["***PF = XXXXXXX "];
03822  M01S03780.ssval   +++|        ITEM BAD$PFN    C(00,48,07);
03823  M01S03781.ssval   +++|        ITEM BAD$ERR    C(02,00,20) = ["INVALID SM IN PFC "];
03824  M01S03782.ssval   +++|        END
03825  M01S03783.ssval   +++|
03826  M01S03784.ssval   +++|      ARRAY BADSM2 [0:0] S(5);      # INVALID *SM* REPORT LINE 2 #
03827  M01S03785.ssval   +++|        BEGIN
03828  M01S03786.ssval   +++|        ITEM BAD$DESC2  C(00,00,50) = ["   UI = NNNNNN "];
03829  M01S03787.ssval   +++|        ITEM BAD$UI     C(00,48,06);
03830  M01S03788.ssval   +++|        END
03831  M01S03789.ssval   +++|
03832  M01S03790.ssval   +++|                                               CONTROL EJECT;
03833  M01S03791.ssval   +++|
03834  M01S03792.ssval   +++|#
03835  M01S03793.ssval   +++|*     INITIALIZE FETS.
03836  M01S03794.ssval   +++|#
03837  M01S03795.ssval   +++|
03838  M01S03796.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXSF
03839  M01S03797.ssval   +++|      DO                             # *PFC* EXTRACT FILES #
03840  M01S03798.ssval   +++|        BEGIN
03841  M01S03799.ssval   +++|        PEXTFADR = LOC(PFCE$FET[I]);
03842  M01S03800.ssval   +++|        PEXTBADR = LOC(PFCE$BUF[I]);
03843  M01S03801.ssval   +++|        PFCE$LFN[0] = EXTLFN;        # *LFN* OF *PFC* EXTRACT FILES #
03844  M01S03802.ssval   +++|        PFCE$LFNX[0] = I + "0";      # APPEND SUBFAMILY TO *LFN* #
03845  M01S03803.ssval   +++|        ZSETFET(PEXTFADR,PFCENAME,PEXTBADR,LPFCEBUF,SFETL);
03846  M01S03804.ssval   +++|        LOFPROC(PFCENAME);           # ADD LFN TO LIST OF FILES #
03847  M01S03805.ssval   +++|        REWIND(PFCEXTN[I],RCL);
03848  M01S03806.ssval   +++|        END
03849  M01S03807.ssval   +++|
03850  M01S03808.ssval   +++|      LOFPROC("CATS");               # ADD LFN TO LIST OF FILES #
03851  M01S03809.ssval   +++|
03852  M01S03810.ssval   +++|#
03853  M01S03811.ssval   +++|*     READ THE *PFC* FOR THE SELECTED SUBFAMILIES (DEVMASK).
03854  M01S03812.ssval   +++|#
03855  M01S03813.ssval   +++|
03856  M01S03814.ssval   +++|      STAT = 0;
03857  M01S03815.ssval   +++|      SLOWFOR I = 0 STEP 1 WHILE STAT EQ 0
03858  M01S03816.ssval   +++|      DO
03859  M01S03817.ssval   +++|        BEGIN  # READ *PFC* ENTRIES #
03860  M01S03818.ssval   +++|
03861  M01S03819.ssval   +++|        RDPFC(PAR$FM,DEVMASK,VPFCBUFFER,WDCNT,STAT);
03862  M01S03820.ssval   +++|
03863  M01S03821.ssval   +++|#
03864  M01S03822.ssval   +++|*     EXIT IF NO SECTOR WAS RETURNED.
03865  M01S03823.ssval   +++|#
03866  M01S03824.ssval   +++|
03867  M01S03825.ssval   +++|        IF STAT NQ 0
03868  M01S03826.ssval   +++|        THEN
03869  M01S03827.ssval   +++|          BEGIN
03870  M01S03828.ssval   +++|          TEST I;
03871  M01S03829.ssval   +++|          END
03872  M01S03830.ssval   +++|
03873  M01S03831.ssval   +++|#
03874  M01S03832.ssval   +++|*     ELSE, PROCESS THE *PFC* SECTOR THAT WAS RETURNED.
03875  M01S03833.ssval   +++|#
03876  M01S03834.ssval   +++|
03877  M01S03835.ssval   +++|        P<CNTRWORD> = LOC(VPFCBUFFER) + WDCNT;  # RETURN CONTROL WORD #
03878  M01S03836.ssval   +++|        VPEO = -1;                   # INITIALIZE *PFC* ENTRY ORDINAL #
03879  M01S03837.ssval   +++|
03880  M01S03838.ssval   +++|        SLOWFOR IWC = 0 STEP PFCENTL WHILE (IWC LS WDCNT)
03881  M01S03839.ssval   +++|        DO
03882  M01S03840.ssval   +++|          BEGIN  # *PFC* SELECTION #
03883  M01S03841.ssval   +++|          VPEO = VPEO + 1;
03884  M01S03842.ssval   +++|          P<PFC> = LOC(VPFC$WD[IWC]);  # SET POINTER TO A *PFC* ENTRY #
03885  M01S03843.ssval   +++|
03886  M01S03844.ssval   +++|#
03887  M01S03845.ssval   +++|*     SKIP THE *PFC* ENTRY IF IT IS NOT ACTIVE.
03888  M01S03846.ssval   +++|#
03889  M01S03847.ssval   +++|
03890  M01S03848.ssval   +++|          IF PFC$UI[0] EQ 0
03891  M01S03849.ssval   +++|          THEN
03892  M01S03850.ssval   +++|            BEGIN
03893  M01S03851.ssval   +++|            TEST IWC;                # *PFC* ENTRY IS NOT ACTIVE #
03894  M01S03852.ssval   +++|            END
03895  M01S03853.ssval   +++|
03896  M01S03854.ssval   +++|#
03897  M01S03855.ssval   +++|*     PERMANENT FILE DOES EXIST.
03898  M01S03856.ssval   +++|#
03899  M01S03857.ssval   +++|
03900  M01S03858.ssval   +++|          SBINDX = PFC$SF[0];        # SUBFAMILY INDEX #
03901  M01S03859.ssval   +++|          P<ASA> = LOC(PFC$AA);      # ASA DEFINITIONS #
03902  M01S03860.ssval   +++|          SMINDX = ASASM[0];       # EXTRACT *SM* INDEX #
03903  M01S03861.ssval   +++|
03904  M01S03862.ssval   +++|
03905  M01S00001.ssval1  +++|#
03906  M01S00002.ssval1  +++|*     IF NOT *MAS* *PFC*.
03907  M01S00003.ssval1  +++|#
03908  M01S00004.ssval1  +++|
03909  M01S00005.ssval1  +++|          IF PFC$AT NQ ATAS
03910  M01S00006.ssval1  +++|          THEN
03911  M01S00007.ssval1  +++|            BEGIN
03912  M01S00008.ssval1  +++|            TEST IWC;
03913  M01S00009.ssval1  +++|            END
03914  M01S00010.ssval1  +++|
03915  M01S00011.ssval1  +++|
03916  M01S03863.ssval   +++|#
03917  M01S03864.ssval   +++|*     FOR INVALID *SM*, ISSUE DIAGNOSTIC.
03918  M01S03865.ssval   +++|#
03919  M01S03866.ssval   +++|
03920  M01S03867.ssval   +++|          IF (PFC$AA[0] NQ 0) AND ((SMINDX EQ 0) OR (SMINDX GR "H"))
03921  M01S03868.ssval   +++|            THEN
03922  M01S03869.ssval   +++|            BEGIN
03923  M01S03870.ssval   +++|            TOTALERRS = TOTALERRS + 1;
03924  M01S03871.ssval   +++|            RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
03925  M01S03872.ssval   +++|            BAD$PFN[0] = VLNTC(PFC$FN[0]," ",10);  # *PFN* IN ERROR #
03926  M01S03873.ssval   +++|            RPLINE(RPTFADR,BADSM,4,50,EOPL);  # ISSUE ERROR LINE #
03927  M01S03874.ssval   +++|            BAD$UI[0] = VLNTC(PFC$UI[0],"XCOD",6);  # SET UI IN ERROR
03928  M01S03875.ssval   +++|                                                      LINE #
03929  M01S03876.ssval   +++|            RPLINE(RPTFADR,BADSM2,4,50,EOPL);  # ISSUE ERROR LINE #
03930  M01S03877.ssval   +++|            TEST IWC;
03931  M01S03878.ssval   +++|            END
03932  M01S03879.ssval   +++|
03933  M01S03880.ssval   +++|#
03934  M01S03881.ssval   +++|*     SKIP *PFC* ENTRIES THAT DO NOT MATCH THE SELECTED SUBFAMILY
03935  M01S03882.ssval   +++|*     OR *SM*.
03936  M01S03883.ssval   +++|#
03937  M01S03884.ssval   +++|
03938  M01S03885.ssval   +++|          IF (B<SBINDX,1>PAR$SB EQ 0 )  ##
03939  M01S03886.ssval   +++|            OR (B<SMINDX,1>PAR$SM EQ 0)  ##
03940  M01S03887.ssval   +++|            OR (PFC$AT[0] NQ ATAS)
03941  M01S03888.ssval   +++|          THEN
03942  M01S03889.ssval   +++|            BEGIN
03943  M01S03890.ssval   +++|            TEST IWC;
03944  M01S03891.ssval   +++|            END
03945  M01S03892.ssval   +++|
03946  M01S03893.ssval   +++|#
03947  M01S03894.ssval   +++|*     BUILD THE EXTRACT RECORD.
03948  M01S03895.ssval   +++|#
03949  M01S03896.ssval   +++|
03950  M01S03897.ssval   +++|          EXTR$PEO[0] = VPEO;        # *PFC* ENTRY ORDINAL #
03951  M01S03898.ssval   +++|          EXTR$DN[0] = CNTR$DN[0];   # DEVICE NUMBER #
03952  M01S03899.ssval   +++|          EXTR$TRK[0] = CNTR$TRK[0];  # TRACK #
03953  M01S03900.ssval   +++|          EXTR$SEC[0] = CNTR$SEC[0];  # SECTOR #
03954  M01S03901.ssval   +++|          EXTR$DA[0] = PFC$DA[0];
03955  M01S03902.ssval   +++|          EXTR$FLG[0] = PFC$AF[0];   # *ASA* FLAGS #
03956  M01S03903.ssval   +++|          EXTR$D[0] = 0;             # INITIALIZE DISK IMAGE FLAG #
03957  M01S03904.ssval   +++|          IF PFC$BT[0] NQ 0
03958  M01S03905.ssval   +++|          THEN                       # *PFC* TRACK IS NOT ZERO #
03959  M01S03906.ssval   +++|            BEGIN
03960  M01S03907.ssval   +++|            EXTR$D[0] = 1;           # DISK IMAGE EXISTS #
03961  M01S03908.ssval   +++|            END
03962  M01S03909.ssval   +++|
03963  M01S03910.ssval   +++|          EXTR$ASA[0] = PFC$AA[0];   # SET THE *ASA* #
03964  M01S03911.ssval   +++|          EXTR$AT[0] = PFC$AT[0];
03965  M01S03912.ssval   +++|          EXTR$FCT[0] = EXTR$GP[0]*16 + EXTR$GPT[0];
03966  M01S03913.ssval   +++|          EXTR$PFN[0] = PFC$FN[0];   # SET THE *PFN* #
03967  M01S03914.ssval   +++|          EXTR$UI[0] = PFC$UI[0];    # SET THE *UI* #
03968  M01S03915.ssval   +++|          EXTR$BKDT[0] = PFC$UD[0];  # SET THE BACKUP DATE/TIME #
03969  M01S03916.ssval   +++|          EXTR$CREA[0] = PFC$CD[0];  # CREATION DATE/TIME #
03970  M01S03917.ssval   +++|
03971  M01S03918.ssval   +++|#
03972  M01S03919.ssval   +++|*     SET THE BACKUP DATE/TIME TO BE THE LATEST DATE/TIME FROM
03973  M01S03920.ssval   +++|*     THE UTILITY CONTROL AND CONTROL MODIFICATION DATE/TIME
03974  M01S03921.ssval   +++|*     FIELDS.
03975  M01S03922.ssval   +++|#
03976  M01S03923.ssval   +++|
03977  M01S03924.ssval   +++|          IF PFC$UD[0] LS PFC$KD[0]
03978  M01S03925.ssval   +++|          THEN                       # CONTROL IS NEWER THAN UTILITY #
03979  M01S03926.ssval   +++|            BEGIN
03980  M01S03927.ssval   +++|            EXTR$BKDT[0] = PFC$KD[0];  # BACKUP DATE/TIME #
03981  M01S03928.ssval   +++|            END
03982  M01S03929.ssval   +++|
03983  M01S03930.ssval   +++|          WRITEW(PFCEXTN[SBINDX],EXTRECORD,RLEXTR,K);
03984  M01S03931.ssval   +++|          END  # *PFC* SELECTION #
03985  M01S03932.ssval   +++|
03986  M01S03933.ssval   +++|        END  # READ *PFC* ENTRIES #
03987  M01S03934.ssval   +++|
03988  M01S03935.ssval   +++|#
03989  M01S03936.ssval   +++|*    IF ERROR READING PFC, ISSUE MESSAGE AND ABORT.
03990  M01S03937.ssval   +++|#
03991  M01S03938.ssval   +++|
03992  M01S03939.ssval   +++|      IF STAT NQ 1                   # IF NOT *EOI* #
03993  M01S03940.ssval   +++|      THEN                           # ERROR TYPE 2, 3, OR 4 #
03994  M01S03941.ssval   +++|        BEGIN
03995  M01S03942.ssval   +++|        VLERROR(VE"PFCERR",ABRT);    # ISSUE MESSAGE AND ABORT #
03996  M01S03943.ssval   +++|        END
03997  M01S03944.ssval   +++|
03998  M01S03945.ssval   +++|#
03999  M01S03946.ssval   +++|*     WRITE EOFS ON ALL FILES.
04000  M01S03947.ssval   +++|#
04001  M01S03948.ssval   +++|
04002  M01S03949.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXSF
04003  M01S03950.ssval   +++|      DO
04004  M01S03951.ssval   +++|        BEGIN
04005  M01S03952.ssval   +++|        WRITEF(PFCEXTN[I],RCL);
04006  M01S03953.ssval   +++|        REWIND(PFCEXTN[I],RCL);
04007  M01S03954.ssval   +++|        END
04008  M01S03955.ssval   +++|
04009  M01S03956.ssval   +++|#
04010  M01S03957.ssval   +++|*     SET BITS TO INDICATE ALL SFM CATALOG FILES DO EXIST AND ARE
04011  M01S03958.ssval   +++|*     TO BE VALIDATED.
04012  M01S03959.ssval   +++|#
04013  M01S03960.ssval   +++|
04014  M01S03961.ssval   +++|      B<0,8>SFMCATDEF = O"777";      # TURN THE 8 SUBCATALOG FLAGS ON #
04015  M01S03962.ssval   +++|
04016  M01S03963.ssval   +++|      END  # VLPFC #
04017  M01S03964.ssval   +++|
04018  M01S03965.ssval   +++|    TERM
04019  M01S03966.ssval   +++|PROC VLPFILL(FLD,(PARAM));
04020  M01S03967.ssval   +++|# TITLE VLPFILL - FILL PARAMETER IN MESSAGE TEXT.                     #
04021  M01S03968.ssval   +++|
04022  M01S03969.ssval   +++|      BEGIN  # VLPFILL #
04023  M01S03970.ssval   +++|
04024  M01S03971.ssval   +++|#
04025  M01S03972.ssval   +++|**    VLPFILL - FILL PARAMETER INTO MESSAGE TEXT.
04026  M01S03973.ssval   +++|*
04027  M01S03974.ssval   +++|*     *VLPFILL* LOCATES THE PARAMETER PLACE-HOLDER IN THE
04028  M01S03975.ssval   +++|*     TEXT AND REPLACES IT WITH THE PARAMETER CHARACTERS
04029  M01S03976.ssval   +++|*     IN THE *PARAM* WORD.
04030  M01S03977.ssval   +++|*
04031  M01S03978.ssval   +++|*     A MAXIMUM OF 40 CHARACTERS IS SCANNED.
04032  M01S03979.ssval   +++|*
04033  M01S03980.ssval   +++|*     PROC VLPFILL(FLD,PARAM)
04034  M01S03981.ssval   +++|*
04035  M01S03982.ssval   +++|*     ENTRY     (FLD)   - TEXT TO SCAN.
04036  M01S03983.ssval   +++|*               (PARAM) - PARAMETER TO PLACE IN TEXT.
04037  M01S03984.ssval   +++|*
04038  M01S03985.ssval   +++|*     EXIT      (FLD) - TEXT WITH THE PARAMETER FROM *PARAM* INSERTED.
04039  M01S03986.ssval   +++|*
04040  M01S03987.ssval   +++|#
04041  M01S03988.ssval   +++|
04042  M01S03989.ssval   +++|
04043  M01S03990.ssval   +++|      ITEM FLD        I;             # TEXT TO SCAN #
04044  M01S03991.ssval   +++|      ITEM PARAM      C(10);         # PARAMETER TO INSERT #
04045  M01S03992.ssval   +++|
04046  M01S03993.ssval   +++|
04047  M01S03994.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
04048  M01S03995.ssval   +++|
04049  M01S03996.ssval   +++|*CALL COMBFAS
04050  M01S03997.ssval   +++|
04051  M01S03998.ssval   +++|
04052  M01S03999.ssval   +++|
04053  M01S04000.ssval   +++|      ITEM PCHAR      I;             # PARAMETER CHARACTER INDEX #
04054  M01S04001.ssval   +++|      ITEM QCHAR      I;             # Q CHARACTER INDEX #
04055  M01S04002.ssval   +++|      ITEM Q          I;             # Q CHARACTER TEMPORARY #
04056  M01S04003.ssval   +++|
04057  M01S04004.ssval   +++|      BASED
04058  M01S04005.ssval   +++|      ARRAY SCAN [0:0] S(4);         # TO SCAN TEXT FIELD #
04059  M01S04006.ssval   +++|      ITEM SCAN$WD    C(00,00,40);
04060  M01S04007.ssval   +++|                                               CONTROL EJECT;
04061  M01S04008.ssval   +++|
04062  M01S04009.ssval   +++|      P<SCAN> = LOC(FLD);
04063  M01S04010.ssval   +++|
04064  M01S04011.ssval   +++|
04065  M01S04012.ssval   +++|      Q = 0;
04066  M01S04013.ssval   +++|      QCHAR = -1;                    # INITIALIZE #
04067  M01S04014.ssval   +++|
04068  M01S04015.ssval   +++|#
04069  M01S04016.ssval   +++|*     SCAN THE TEXT LOOKING FOR A PARAMETER PLACE-HOLDER.
04070  M01S04017.ssval   +++|#
04071  M01S04018.ssval   +++|
04072  M01S04019.ssval   +++|      REPEAT WHILE QCHAR LQ 40 AND Q NQ "Q"
04073  M01S04020.ssval   +++|      DO
04074  M01S04021.ssval   +++|        BEGIN  # PLACE-HOLDER SEARCH #
04075  M01S04022.ssval   +++|        QCHAR = QCHAR + 1;
04076  M01S04023.ssval   +++|        Q = C<QCHAR,1>SCAN$WD[0];    # GET A CHARACTER #
04077  M01S04024.ssval   +++|        END  # PLACE-HOLDER SEARCH #
04078  M01S04025.ssval   +++|
04079  M01S04026.ssval   +++|#
04080  M01S04027.ssval   +++|*     MOVE PARAMETER INTO THE PLACE-HOLDER IF THERE WAS ONE.
04081  M01S04028.ssval   +++|#
04082  M01S04029.ssval   +++|
04083  M01S04030.ssval   +++|      SLOWFOR PCHAR = 0 STEP 1 WHILE Q EQ "Q"
04084  M01S04031.ssval   +++|      DO
04085  M01S04032.ssval   +++|        BEGIN  # PLACE-HOLDER INSERT #
04086  M01S04033.ssval   +++|        C<QCHAR,1>SCAN$WD[0] = C<PCHAR,1>PARAM;  # REPLACE Q
04087  M01S04034.ssval   +++|                                                   CHARACTER #
04088  M01S04035.ssval   +++|        QCHAR = QCHAR + 1;
04089  M01S04036.ssval   +++|        Q = C<QCHAR,1>SCAN$WD[0];    # GET NEXT CHARACTER #
04090  M01S04037.ssval   +++|        END  # PLACE-HOLDER INSERT #
04091  M01S04038.ssval   +++|
04092  M01S04039.ssval   +++|      RETURN;
04093  M01S04040.ssval   +++|      END  # VLPFILL #
04094  M01S04041.ssval   +++|
04095  M01S04042.ssval   +++|    TERM
04096  M01S04043.ssval   +++|PROC VLPRSET;
04097  M01S04044.ssval   +++|# TITLE VLPRSET - PRESET PARAMETERS AND FILES.                        #
04098  M01S04045.ssval   +++|
04099  M01S04046.ssval   +++|      BEGIN  # VLPRSET #
04100  M01S04047.ssval   +++|
04101  M01S04048.ssval   +++|#
04102  M01S04049.ssval   +++|**    VLPRSET - PRESET PARAMETERS AND FILES.
04103  M01S04050.ssval   +++|*
04104  M01S04051.ssval   +++|*     *VLPRSET* INITIALIZES ALL PARAMETERS AND PERFORMS
04105  M01S04052.ssval   +++|*     ALL PRESET FUNCTIONS.  THIS INCLUDES -
04106  M01S04053.ssval   +++|*      . GET DEFAULT FAMILY AND SUBSYSTEM ID.
04107  M01S04054.ssval   +++|*      . CRACK CONTROL CARD AND EDIT PARAMETERS.
04108  M01S04055.ssval   +++|*      . LIST THE CONTROL CARD PARAMETERS IN THE REPORT FILE.
04109  M01S04056.ssval   +++|*      . OPEN/INITIALIZE FILES.
04110  M01S04057.ssval   +++|*
04111  M01S04058.ssval   +++|*     PROC VLPRSET
04112  M01S04059.ssval   +++|*
04113  M01S04060.ssval   +++|*     ENTRY     THE CONTROL CARD IN *RA* + 70B.
04114  M01S04061.ssval   +++|*
04115  M01S04062.ssval   +++|*     EXIT      (DEF$FAM)         - DEFAULT FAMILY.
04116  M01S04063.ssval   +++|*               (DEVMASK)         - DEVICE MASK FOR SELECTED
04117  M01S04064.ssval   +++|*                                   SUBFAMILIES.
04118  M01S04065.ssval   +++|*               (PAR$XX)          - PARAMETER VALUES WHERE XX =
04119  M01S04066.ssval   +++|*                                   KEYWORD.
04120  M01S04067.ssval   +++|*               (RPTFILE)         - ADDRESS OF REPORT FILE *FET*.
04121  M01S04068.ssval   +++|*               (SSID$VL)         - SUBSYTEM IDENTIFICATION.
04122  M01S04069.ssval   +++|*               (ARRAY FIXITFILE) - FIXIT FILE *FET*.
04123  M01S04070.ssval   +++|*               (ARRAY PROBFILE)  - PROBLEM FILE *FET*.
04124  M01S04071.ssval   +++|*
04125  M01S04072.ssval   +++|*     MESSAGES  * INVALID SM PARAMETER.*
04126  M01S04073.ssval   +++|*               * INVALID FX PARAMETER.*
04127  M01S04074.ssval   +++|*               * ILLEGAL - L AND RF PARAMETERS.*
04128  M01S04075.ssval   +++|*               * ILLEGAL - RF AND AM PARAMETERS.*
04129  M01S04076.ssval   +++|*               * ILLEGAL - RF AND FM PARAMETERS.*
04130  M01S04077.ssval   +++|*               * ILLEGAL - RL AND NO RF PARAMETERS.*
04131  M01S04078.ssval   +++|*               * INVALID - SB PARAMETER.*
04132  M01S04079.ssval   +++|*               * INVALID - ST PARAMETER.*
04133  M01S04080.ssval   +++|*               * CONTROL CARD SYNTAX ERROR.*
04134  M01S04081.ssval   +++|*               * ABORT RUN DUE TO ERRORS.*
04135  M01S04082.ssval   +++|*
04136  M01S04083.ssval   +++|#
04137  M01S04084.ssval   +++|
04138  M01S04085.ssval   +++|
04139  M01S04086.ssval   +++|#
04140  M01S04087.ssval   +++|****  PROC VLPRSET - XREF LIST BEGIN.
04141  M01S04088.ssval   +++|#
04142  M01S04089.ssval   +++|
04143  M01S04090.ssval   +++|      XREF
04144  M01S04091.ssval   +++|        BEGIN
04145  M01S00030.ssval3  +++|        PROC BZFILL;                   # BLANK OR ZERO FILL #
04146  M01S04092.ssval   +++|        PROC GETFAM;                 # SET FAMILY TABLE #
04147  M01S04093.ssval   +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
04148  M01S00031.ssval3  +++|        PROC PFD;                      # PERMANENT FILE ACCESS #
04149  M01S00032.ssval3  +++|        PROC SETPFP;                   # SET FILE PARAMETERS#
04150  M01S04094.ssval   +++|        PROC RETERN;                 # RETURNS SPECIFIED FILE #
04151  M01S04095.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
04152  M01S04096.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
04153  M01S04097.ssval   +++|                                       LINE #
04154  M01S04098.ssval   +++|        PROC RPOPEN;                 # OPENS A PRINT FILE #
04155  M01S04099.ssval   +++|        PROC VLBFILL;                # BLANK FILL #
04156  M01S04100.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
04157  M01S04101.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
04158  M01S04102.ssval   +++|                                       CONVERSION #
04159  M01S04103.ssval   +++|        PROC VLPFC;                  # READ *PFC* #
04160  M01S04104.ssval   +++|        PROC VLRDF;                  # READ RDF FILE #
04161  M01S04105.ssval   +++|        PROC VLTAB;
04162  M01S04106.ssval   +++|        PROC VLTITLE;                # ISSUE REPORT TITLE #
04163  M01S04107.ssval   +++|        PROC XARG;                   # CRACK PARAMETER LIST #
04164  M01S04108.ssval   +++|        FUNC XDXB;                   # CONVERT DISPLAY CODE TO BINARY #
04165  M01S04109.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
04166  M01S04110.ssval   +++|        END
04167  M01S04111.ssval   +++|
04168  M01S04112.ssval   +++|#
04169  M01S04113.ssval   +++|****  PROC VLPRSET - XREF LIST END.
04170  M01S04114.ssval   +++|#
04171  M01S04115.ssval   +++|
04172  M01S04116.ssval   +++|
04173  M01S04117.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTINGS #
04174  M01S04118.ssval   +++|
04175  M01S04119.ssval   +++|*CALL COMBFAS
04176  M01S00033.ssval3  +++|*CALL COMBBZF
04177  M01S00034.ssval3  +++|*CALL COMBPFP
04178  M01S04120.ssval   +++|*CALL COMSPFM
04179  M01S04121.ssval   +++|*CALL COMTVLD
04180  M01S04122.ssval   +++|*CALL COMTVLF
04181  M01S04123.ssval   +++|*CALL COMTVLP
04182  M01S04124.ssval   +++|*CALL COMTVLX
04183  M01S04125.ssval   +++|
04184  M01S04126.ssval   +++|
04185  M01S04127.ssval   +++|      ITEM ARGADDR    I;             # ARGUMENT TABLE ADDRESS #
04186  M01S04128.ssval   +++|      ITEM ARGERR     I;             # CTL CARD ARGUMENT ERROR #
04187  M01S04129.ssval   +++|      ITEM CHAR       I;             # SCRATCH FIELD #
04188  M01S04130.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
04189  M01S04131.ssval   +++|      ITEM J          I;             # TEMPORARY VARIABLE #
04190  M01S04132.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
04191  M01S04133.ssval   +++|      ITEM PAR        I;             # SCRATCH FIELD #
04192  M01S04134.ssval   +++|
04193  M01S04135.ssval   +++|
04194  M01S04136.ssval   +++|      BASED
04195  M01S04137.ssval   +++|      ARRAY ARGELEMENT [0:0] S(1);   # TO EXTRACT THE ARGUMENTS #
04196  M01S04138.ssval   +++|        BEGIN
04197  M01S04139.ssval   +++|        ITEM ARGITEM    U(00,00,60);
04198  M01S04140.ssval   +++|        ITEM ARGITEMC   C(00,00,10);
04199  M01S04141.ssval   +++|        ITEM ARGSCAN    C(00,00,20);  # FOR A 2 WORD PARAMETER #
04200  M01S04142.ssval   +++|        END
04201  M01S04143.ssval   +++|
04202  M01S04144.ssval   +++|
04203  M01S04145.ssval   +++|      ARRAY PARIDS [0:VARGL] S(1);   # PARAMETER IDS FOR REPORT #
04204  M01S04146.ssval   +++|        BEGIN
04205  M01S04147.ssval   +++|        ITEM PARNME     C(00,30,5);
04206  M01S04148.ssval   +++|        ITEM PARNME1    C(VLF,30,5) = [ "L  = " ];
04207  M01S04149.ssval   +++|        ITEM PARNME2    C(VRF,30,5) = [ "RF = " ];
04208  M01S04150.ssval   +++|        ITEM PARNME3    C(VAM,30,5) = [ "AM = " ];
04209  M01S04151.ssval   +++|        ITEM PARNME4    C(VSM,30,5) = [ "SM = " ];
04210  M01S04152.ssval   +++|        ITEM PARNME6    C(VFM,30,5) = [ "FM = " ];
04211  M01S04153.ssval   +++|        ITEM PARNME7    C(VFX,30,5) = [ "FX = " ];
04212  M01S04154.ssval   +++|        ITEM PARNME8    C(VRL,30,5) = [ "RL = " ];
04213  M01S04155.ssval   +++|        ITEM PARNME9    C(VSB,30,5) = [ "SB = " ];
04214  M01S04156.ssval   +++|        ITEM PARNME10   C(VST,30,5) = [ "ST = " ];
04215  M01S04157.ssval   +++|        END
04216  M01S04158.ssval   +++|
04217  M01S04159.ssval   +++|#
04218  M01S04160.ssval   +++|*     TO BUILD THE PARAMETER FOR THE REPORT FILE.
04219  M01S04161.ssval   +++|#
04220  M01S04162.ssval   +++|
04221  M01S04163.ssval   +++|      ARRAY PARVALUE [0:0] S(2);     # PARAMETER DISPLAY CD VALUE #
04222  M01S04164.ssval   +++|        BEGIN
04223  M01S04165.ssval   +++|        ITEM PAR$VALUE  C(00,00,20);  # PARAMETER #
04224  M01S04166.ssval   +++|        ITEM PAR$VALEND U(00,42,18);  # END OF FIRST PARAMETER #
04225  M01S04167.ssval   +++|        ITEM PAR$VAL2   C(01,00,10);  # SECOND WORD OF PARAMETER #
04226  M01S04168.ssval   +++|        END
04227  M01S04169.ssval   +++|                                               CONTROL EJECT;
04228  M01S04170.ssval   +++|
04229  M01S04171.ssval   +++|#
04230  M01S04172.ssval   +++|*     GET THE SYSTEM DEFAULT FAMILY AND THE SUBSYSTEM IDENTIFICATION.
04231  M01S04173.ssval   +++|#
04232  M01S04174.ssval   +++|
04233  M01S04175.ssval   +++|      SSID$VL = ATAS;
04234  M01S04176.ssval   +++|      GETFAM(FAMT,I,J,K,SSID$VL);
04235  M01S04177.ssval   +++|      DEF$FAM = FAM$NAME[K];
04236  M01S04178.ssval   +++|
04237  M01S04179.ssval   +++|#
04238  M01S04180.ssval   +++|*     CRACK THE CONTROL CARD.
04239  M01S04181.ssval   +++|#
04240  M01S04182.ssval   +++|
04241  M01S04183.ssval   +++|      VLTAB(ARGADDR);                # GET ADDR OF ARGUMENT TABLE #
04242  M01S04184.ssval   +++|      XARG(ARGADDR,0,ARGERR);        # CRACK PARAMETERS BASED ON
04243  M01S04185.ssval   +++|                                       TABLE #
04244  M01S04186.ssval   +++|
04245  M01S04187.ssval   +++|      IF ARGERR NQ 0
04246  M01S04188.ssval   +++|      THEN                           # SYNTAX ERROR #
04247  M01S04189.ssval   +++|        BEGIN
04248  M01S04190.ssval   +++|        VLERROR(VE"SYNTAX",ABRT);    # ABORT WITH MESSAGE #
04249  M01S04191.ssval   +++|        END
04250  M01S04192.ssval   +++|
04251  M01S04193.ssval   +++|      P<ARGELEMENT> = LOC(VARGUMENTS);
04252  M01S04194.ssval   +++|
04253  M01S04195.ssval   +++|#
04254  M01S04196.ssval   +++|*     MOVE CONTROL CARD ARGUMENTS TO PARAMETERS.  PARAMETERS ARE
04255  M01S04197.ssval   +++|*     STORED IN PAR$XX (WHERE XX IS THE KEYWORD) FOR SUBSEQUENT
04256  M01S04198.ssval   +++|*     PROGRAM ACCESS.
04257  M01S04199.ssval   +++|#
04258  M01S04200.ssval   +++|
04259  M01S04201.ssval   +++|      PAR$LF = VARG$LF[0];           # *L* PARAMETER VALUE #
04260  M01S04202.ssval   +++|      PAR$RF = VARG$RF[0];           # *RF* PARAMETER VALUE #
04261  M01S04203.ssval   +++|      PAR$AM = VARG$AM[0];           # *AM* PARAMETER VALUE #
04262  M01S04204.ssval   +++|
04263  M01S04205.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL 7
04264  M01S04206.ssval   +++|      DO                             # *SM* PARAMETER #
04265  M01S04207.ssval   +++|        BEGIN  # MOVE ARGUMENTS #
04266  M01S04208.ssval   +++|        CHAR = C<I,1>ARGSCAN[VSM];  # A *SM* CHARACTER #
04267  M01S04209.ssval   +++|      IF CHAR EQ 0
04268  M01S04210.ssval   +++|        THEN                         # END OF *CS* PARAMETER #
04269  M01S04211.ssval   +++|          BEGIN
04270  M01S04212.ssval   +++|          TEST I;
04271  M01S04213.ssval   +++|          END
04272  M01S04214.ssval   +++|
04273  M01S04215.ssval   +++|        IF CHAR GR "H"
04274  M01S04216.ssval   +++|        THEN                         # ILLEGAL CHARACTER #
04275  M01S04217.ssval   +++|          BEGIN
04276  M01S04218.ssval   +++|          VLERROR(VE"SMPAR",NOABT); # ISSUE MESSAGE #
04277  M01S04219.ssval   +++|          END
04278  M01S04220.ssval   +++|
04279  M01S04221.ssval   +++|        ELSE
04280  M01S04222.ssval   +++|          BEGIN  # SET *SM* BIT #
04281  M01S04223.ssval   +++|          IF B<CHAR,1>PAR$SM EQ 1
04282  M01S04224.ssval   +++|          THEN
04283  M01S04225.ssval   +++|            BEGIN
04284  M01S04226.ssval   +++|            VLERROR(VE"DUPCS",NOABT);
04285  M01S04227.ssval   +++|            END
04286  M01S04228.ssval   +++|
04287  M01S04229.ssval   +++|          ELSE
04288  M01S04230.ssval   +++|            BEGIN
04289  M01S04231.ssval   +++|            B<CHAR,1>PAR$SM = 1;
04290  M01S04232.ssval   +++|            END
04291  M01S04233.ssval   +++|
04292  M01S04234.ssval   +++|          END  # SET *CS* BIT #
04293  M01S04235.ssval   +++|
04294  M01S04236.ssval   +++|
04295  M01S04237.ssval   +++|        END  # MOVE ARGUMENTS #
04296  M01S04238.ssval   +++|
04297  M01S04239.ssval   +++|      PAR$FM = VARG$FM[0];           # FM PARAMETER VALUE #
04298  M01S04240.ssval   +++|
04299  M01S04241.ssval   +++|      STAT = XDXB(VARG$FX[0],"D",PAR$FX);  # CONVERT FX VALUE #
04300  M01S04242.ssval   +++|      IF STAT NQ 0
04301  M01S04243.ssval   +++|      THEN                           # ILLEGAL FX VALUE #
04302  M01S04244.ssval   +++|        BEGIN
04303  M01S04245.ssval   +++|        VLERROR(VE"FXPAR",NOABT);    # ISSUE MESSAGE #
04304  M01S04246.ssval   +++|        END
04305  M01S04247.ssval   +++|
04306  M01S04248.ssval   +++|      PAR$RL = VARG$RL[0];           # RL PARAMETER VALUE #
04307  M01S04249.ssval   +++|
04308  M01S04250.ssval   +++|      SLOWFOR J = 0 STEP 1 UNTIL 9
04309  M01S04251.ssval   +++|      DO                             # SB PARAMETER #
04310  M01S04252.ssval   +++|        BEGIN  # SUBFAMILY ARGUMENTS #
04311  M01S04253.ssval   +++|        CHAR = C<J,1>ARGITEM[VSB];   # EXTRACT A SUBFAMILY NUMBER #
04312  M01S04254.ssval   +++|        IF CHAR EQ 0
04313  M01S04255.ssval   +++|        THEN                         # END OF SB VALUE #
04314  M01S04256.ssval   +++|          BEGIN
04315  M01S04257.ssval   +++|          TEST J;
04316  M01S04258.ssval   +++|          END
04317  M01S04259.ssval   +++|
04318  M01S04260.ssval   +++|        IF CHAR LS "0" OR CHAR GR "7"
04319  M01S04261.ssval   +++|        THEN                         # ILLEGAL SUBFAMILY #
04320  M01S04262.ssval   +++|          BEGIN
04321  M01S04263.ssval   +++|          VLERROR(VE"SBPAR",NOABT);  # ISSUE MESSAGE #
04322  M01S04264.ssval   +++|          END
04323  M01S04265.ssval   +++|
04324  M01S04266.ssval   +++|        ELSE
04325  M01S04267.ssval   +++|          BEGIN  # SET SUBFAMILY BIT #
04326  M01S04268.ssval   +++|          IF B<CHAR-"0",1>PAR$SB EQ 1
04327  M01S04269.ssval   +++|          THEN
04328  M01S04270.ssval   +++|            BEGIN
04329  M01S04271.ssval   +++|            VLERROR(VE"DUPSB",NOABT);
04330  M01S04272.ssval   +++|            END
04331  M01S04273.ssval   +++|
04332  M01S04274.ssval   +++|          ELSE
04333  M01S04275.ssval   +++|            BEGIN
04334  M01S04276.ssval   +++|            B<CHAR-"0",1>PAR$SB = 1;  # SET *SB* BIT #
04335  M01S04277.ssval   +++|            B<59-(CHAR-"0"),1>DEVMASK = 1;  # RIGHT JUSTIFIED MASK #
04336  M01S04278.ssval   +++|            END
04337  M01S04279.ssval   +++|
04338  M01S04280.ssval   +++|          END  # SET SUBFAMILY BIT #
04339  M01S04281.ssval   +++|
04340  M01S04282.ssval   +++|        END  # SUBFAMILY ARGUMENTS #
04341  M01S04283.ssval   +++|
04342  M01S04284.ssval   +++|      IF VARG$ST[0] EQ O"30555555555555555555"
04343  M01S04285.ssval   +++|      THEN                    # DEFAULT *ST* #
04344  M01S04286.ssval   +++|        BEGIN
04345  M01S04287.ssval   +++|        VARG$ST[0] = O"34555555555555555555";
04346  M01S04288.ssval   +++|        END
04347  M01S04289.ssval   +++|
04348  M01S04290.ssval   +++|      STAT = XDXB(VARG$ST[0],"D",PAR$ST);  # CONVERT ST PARAMETER #
04349  M01S04291.ssval   +++|      IF STAT NQ 0
04350  M01S04292.ssval   +++|      THEN                           # ILLEGAL ST VALUE #
04351  M01S04293.ssval   +++|        BEGIN
04352  M01S04294.ssval   +++|        VLERROR(VE"STPAR",NOABT);    # ISSUE MESSAGE #
04353  M01S04295.ssval   +++|        END
04354  M01S04296.ssval   +++|
04355  M01S04297.ssval   +++|#
04356  M01S04298.ssval   +++|*     VERIFY THAT THE PARAMETER COMBINATIONS ARE LEGAL.
04357  M01S04299.ssval   +++|*     ERRORS ARE -
04358  M01S04300.ssval   +++|*     . *RF* AND *AM* PARAMETER TOGETHER,
04359  M01S04301.ssval   +++|*     . *RF* AND *FM* PARAMETER TOGETHER,
04360  M01S04302.ssval   +++|*     . *RL* AND NO *RF* PARAMETER.
04361  M01S04303.ssval   +++|#
04362  M01S04304.ssval   +++|
04363  M01S04305.ssval   +++|#
04364  M01S04306.ssval   +++|*     L PARAMETER = RF PARAMETER.
04365  M01S04307.ssval   +++|#
04366  M01S04308.ssval   +++|
04367  M01S04309.ssval   +++|      IF (PAR$LF NQ 0) AND (PAR$LF EQ PAR$RF)
04368  M01S04310.ssval   +++|      THEN
04369  M01S04311.ssval   +++|        BEGIN
04370  M01S04312.ssval   +++|        VLERROR(VE"LFRF",NOABT);     # ISSUE MESSAGE #
04371  M01S04313.ssval   +++|        END
04372  M01S04314.ssval   +++|
04373  M01S04315.ssval   +++|#
04374  M01S04316.ssval   +++|*     RL PARAMETER BUT NO RF.
04375  M01S04317.ssval   +++|#
04376  M01S04318.ssval   +++|
04377  M01S04319.ssval   +++|      IF (PAR$RL NQ 0) AND (PAR$RF EQ 0)
04378  M01S04320.ssval   +++|      THEN
04379  M01S04321.ssval   +++|        BEGIN
04380  M01S04322.ssval   +++|        VLERROR(VE"RLNRF",NOABT);    # ISSUE MESSAGE #
04381  M01S04323.ssval   +++|        END
04382  M01S04324.ssval   +++|
04383  M01S04325.ssval   +++|#
04384  M01S04326.ssval   +++|*     RF AND FM SPECIFIED.
04385  M01S04327.ssval   +++|#
04386  M01S04328.ssval   +++|
04387  M01S04329.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$FM NQ 0)
04388  M01S04330.ssval   +++|      THEN
04389  M01S04331.ssval   +++|        BEGIN
04390  M01S04332.ssval   +++|        VLERROR(VE"RFFM",NOABT);     # ISSUE MESSAGE #
04391  M01S04333.ssval   +++|        END
04392  M01S04334.ssval   +++|
04393  M01S04335.ssval   +++|#
04394  M01S04336.ssval   +++|*     RF AND AM SPECIFIED.
04395  M01S04337.ssval   +++|#
04396  M01S04338.ssval   +++|
04397  M01S04339.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$AM NQ 0)
04398  M01S04340.ssval   +++|      THEN
04399  M01S04341.ssval   +++|        BEGIN
04400  M01S04342.ssval   +++|        VLERROR(VE"RFAM",NOABT);     # ISSUE MESSAGE #
04401  M01S04343.ssval   +++|        END
04402  M01S04344.ssval   +++|
04403  M01S04345.ssval   +++|#
04404  M01S04346.ssval   +++|*     IF ANY CONTROL CARD ERRORS, ABORT.
04405  M01S04347.ssval   +++|*     (ERRORS ARE COUNTED IN VLERROR).
04406  M01S04348.ssval   +++|#
04407  M01S04349.ssval   +++|
04408  M01S04350.ssval   +++|      IF CNTPROGERR NQ 0
04409  M01S04351.ssval   +++|      THEN                           # SOME ERRORS OCCURRED #
04410  M01S04352.ssval   +++|        BEGIN
04411  M01S04353.ssval   +++|        VLERROR(VE"ABORT",ABRT);     # ABORT WITH MESSAGE #
04412  M01S04354.ssval   +++|        END
04413  M01S04355.ssval   +++|
04414  M01S04356.ssval   +++|
04415  M01S04357.ssval   +++|#
04416  M01S04358.ssval   +++|*     SET THE FAMILY PARAMETER TO THE DEFAULT FAMILY IF THE
04417  M01S04359.ssval   +++|*     FM OPTION IS ACTIVE (NO RF PARAMETER) BUT THE FAMILY WAS
04418  M01S04360.ssval   +++|*     NOT SPECIFIED.
04419  M01S04361.ssval   +++|#
04420  M01S04362.ssval   +++|
04421  M01S04363.ssval   +++|      IF (PAR$RF EQ 0) AND ((VARG$IFM[0] EQ -1) OR (PAR$FM EQ 0))
04422  M01S04364.ssval   +++|        THEN
04423  M01S04365.ssval   +++|        BEGIN
04424  M01S04366.ssval   +++|        PAR$FM = DEF$FAM;
04425  M01S04367.ssval   +++|        VARG$FM[0] = PAR$FM;
04426  M01S04368.ssval   +++|        END
04427  M01S04369.ssval   +++|
04428  M01S04370.ssval   +++|#
04429  M01S04371.ssval   +++|*     OPEN REPORT FILE.
04430  M01S04372.ssval   +++|#
04431  M01S04373.ssval   +++|
04432  M01S04374.ssval   +++|      IF PAR$LF NQ 0
04433  M01S04375.ssval   +++|      THEN                           # L PARAMETER ACTIVE #
04434  M01S04376.ssval   +++|        BEGIN
04435  M01S04377.ssval   +++|        RPTFADR = LOC(RPTFILE);      # REPORT FILE FET ADDRESS #
04436  M01S04378.ssval   +++|        END
04437  M01S04379.ssval   +++|
04438  M01S04380.ssval   +++|      RPOPEN(PAR$LF,RPTFADR,VLTITLE);
04439  M01S04381.ssval   +++|
04440  M01S04382.ssval   +++|#
04441  M01S04383.ssval   +++|*     ISSUE REPORT OF SPECIFIED AND DEFAULTED PARAMETERS.
04442  M01S04384.ssval   +++|#
04443  M01S04385.ssval   +++|
04444  M01S04386.ssval   +++|#
04445  M01S04387.ssval   +++|*     PRINT THE CONTROL CARD AS IT IS IN THE RA(70) AREA.
04446  M01S04388.ssval   +++|#
04447  M01S04389.ssval   +++|
04448  M01S04390.ssval   +++|      P<RACOM> = 0;
04449  M01S04391.ssval   +++|
04450  M01S04392.ssval   +++|      VLBFILL(RACOM[CCADDR],8);      # BLANK FILL #
04451  M01S04393.ssval   +++|      RPLINE(RPTFADR," ",0,1,EOPL);  # A BLANK LINE #
04452  M01S04394.ssval   +++|      RPLINE(RPTFADR,RACOM[CCADDR],12,80,EOPL);  # CONTROL CARD #
04453  M01S04395.ssval   +++|      RPLINE(RPTFADR," ",0,1,EOPL);  # A BLANK LINE #
04454  M01S04396.ssval   +++|
04455  M01S04397.ssval   +++|#
04456  M01S04398.ssval   +++|*     LIST ALL PARAMETERS AND THEIR VALUES.
04457  M01S04399.ssval   +++|#
04458  M01S04400.ssval   +++|
04459  M01S04401.ssval   +++|      SLOWFOR PAR = 0 STEP 1 UNTIL VARGL - 1
04460  M01S04402.ssval   +++|      DO
04461  M01S04403.ssval   +++|        BEGIN  # PARAMETER LISTING #
04462  M01S04404.ssval   +++|        IF PAR EQ VSM+1              # 2ND WORD OF *SM* PARAMETER #
04463  M01S04405.ssval   +++|        THEN
04464  M01S04406.ssval   +++|          BEGIN
04465  M01S04407.ssval   +++|          TEST PAR;
04466  M01S04408.ssval   +++|          END
04467  M01S04409.ssval   +++|
04468  M01S04410.ssval   +++|        RPLINE(RPTFADR,PARNME[PAR],25,5,COPL);  # KEYWORD #
04469  M01S04411.ssval   +++|        IF ARGITEM[PAR] EQ -1
04470  M01S04412.ssval   +++|        THEN
04471  M01S04413.ssval   +++|          BEGIN
04472  M01S04414.ssval   +++|          ARGITEMC[PAR] = "Y";
04473  M01S04415.ssval   +++|          END
04474  M01S04416.ssval   +++|
04475  M01S04417.ssval   +++|        IF ARGITEM[PAR] EQ 0
04476  M01S04418.ssval   +++|        THEN                         # PARAMETER NOT SPECIFIED #
04477  M01S04419.ssval   +++|          BEGIN
04478  M01S04420.ssval   +++|          ARGITEMC[PAR] = "0";       # USE A CODED ZERO #
04479  M01S04421.ssval   +++|          END
04480  M01S04422.ssval   +++|
04481  M01S04423.ssval   +++|        PAR$VALUE = ARGITEMC[PAR];   # GET PARAMETER VALUE #
04482  M01S04424.ssval   +++|        IF PAR EQ VSM
04483  M01S04425.ssval   +++|        THEN                         # INDEX AT CS PARAMETER #
04484  M01S04426.ssval   +++|          BEGIN
04485  M01S04427.ssval   +++|          PAR$VAL2[0] = ARGITEMC[PAR+1];  # GET 2ND WORD #
04486  M01S04428.ssval   +++|          END
04487  M01S04429.ssval   +++|
04488  M01S04430.ssval   +++|        IF PAR EQ VFM
04489  M01S04431.ssval   +++|        THEN
04490  M01S04432.ssval   +++|          BEGIN
04491  M01S04433.ssval   +++|          PAR$VALEND[0] = 0;
04492  M01S04434.ssval   +++|          END
04493  M01S04435.ssval   +++|
04494  M01S04436.ssval   +++|        VLBFILL(PARVALUE,2);
04495  M01S04437.ssval   +++|        RPLINE(RPTFADR,PARVALUE[0],30,20,EOPL);  # PARAMETER VALUE #
04496  M01S04438.ssval   +++|
04497  M01S04439.ssval   +++|        END  # PARAMETER LISTING #
04498  M01S04440.ssval   +++|
04499  M01S04441.ssval   +++|      RPLINE(RPTFADR,"0",0,1,EOPL);  # 2 BLANK LINES #
04500  M01S04442.ssval   +++|
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/ssval.001.txt ยท Last modified: by 127.0.0.1