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 
----------------------------+
02201  M00S02199.ssval   +++|        BEGIN
02202  M00S02200.ssval   +++|        B<Y,1>VLCM$Z[Z] = 1;
02203  M00S02201.ssval   +++|        END
02204  M00S02202.ssval   +++|
02205  M00S02203.ssval   +++|
02206  M00S02204.ssval   +++|      END  # VLCMAP #
02207  M00S02205.ssval   +++|
02208  M00S02206.ssval   +++|    TERM
02209  M00S02207.ssval   +++|PROC VLSMSC;
02210  M00S02208.ssval   +++|# TITLE VLSMSC - *SM* MAP SCAN.                                     #
02211  M00S02209.ssval   +++|
02212  M00S02210.ssval   +++|
02213  M00S02211.ssval   +++|      BEGIN  # VLSMSC #
02214  M00S02212.ssval   +++|
02215  M00S02213.ssval   +++|#
02216  M00S02214.ssval   +++|**    VLSMSC - SMMAP SCAN.
02217  M00S02215.ssval   +++|*
02218  M00S02216.ssval   +++|*     *VLSMSC* READS THE SMMAP FILE TO FIND ALL ENTRIES ASSIGNED
02219  M00S02217.ssval   +++|*     TO THE SPECIFIED SUBFAMILY WHICH HAVE NO CORRESPONDING
02220  M00S02218.ssval   +++|*     *FCT* ENTRY (THE BIT IN THE *VLCMAP* ARRAY IS OFF).
02221  M00S02219.ssval   +++|*
02222  M00S02220.ssval   +++|*     PROC VLSMSC
02223  M00S02221.ssval   +++|*
02224  M00S02222.ssval   +++|*     ENTRY     (SMINDX)      - *SM* INDEX.
02225  M00S02223.ssval   +++|*               (PAR$FM)       - FAMILY.
02226  M00S02224.ssval   +++|*               (SBINDX)       - SUBFAMILY INDEX.
02227  M00S02225.ssval   +++|*               (ARRAY VLCMAP) - BIT MAP FOR SMMAP ENTRIES THAT
02228  M00S02226.ssval   +++|*                                HAVE VALID *FCT* ENTRIES.
02229  M00S02227.ssval   +++|*
02230  M00S02228.ssval   +++|*     EXIT      IF AN ERROR IS DETECTED, THEN A PROBLEM FILE
02231  M00S02229.ssval   +++|*               RECORD (RT"SM") IS WRITTEN.
02232  M00S02230.ssval   +++|*
02233  M00S02231.ssval   +++|*     MESSAGES  * SMMAP READ ERROR.*
02234  M00S02232.ssval   +++|#
02235  M00S02233.ssval   +++|
02236  M00S02234.ssval   +++|#
02237  M00S02235.ssval   +++|****  PROC VLSMSC - XREF LIST BEGIN.
02238  M00S02236.ssval   +++|#
02239  M00S02237.ssval   +++|
02240  M00S02238.ssval   +++|      XREF
02241  M00S02239.ssval   +++|        BEGIN
02242  M00S02240.ssval   +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
02243  M00S02241.ssval   +++|                                       CALLER #
02244  M00S02242.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02245  M00S02243.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
02246  M00S02244.ssval   +++|        END
02247  M00S02245.ssval   +++|
02248  M00S02246.ssval   +++|#
02249  M00S02247.ssval   +++|****  PROC VLSMSC - XREF LIST END.
02250  M00S02248.ssval   +++|#
02251  M00S02249.ssval   +++|
02252  M00S02250.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02253  M00S02251.ssval   +++|
02254  M00S02252.ssval   +++|*CALL COMBFAS
02255  M00S02253.ssval   +++|*CALL COMBCMD
02256  M00S02254.ssval   +++|*CALL COMBCMS
02257  M00S02255.ssval   +++|*CALL COMBMAP
02258  M00S02256.ssval   +++|*CALL COMBMCT
02259  M00S02257.ssval   +++|*CALL COMTVLD
02260  M00S02258.ssval   +++|*CALL COMTVLF
02261  M00S02259.ssval   +++|*CALL COMTVLM
02262  M00S02260.ssval   +++|
02263  M00S02261.ssval   +++|
02264  M00S02262.ssval   +++|      ITEM ORD        I;             # ORDINAL #
02265  M00S02263.ssval   +++|
02266  M00S02264.ssval   +++|                                               CONTROL EJECT;
02267  M00S02265.ssval   +++|
02268  M00S02266.ssval   +++|#
02269  M00S02267.ssval   +++|*     READ THE ENTIRE SMMAP FILE.
02270  M00S02268.ssval   +++|#
02271  M00S02269.ssval   +++|
02272  M00S02270.ssval   +++|      SLOWFOR Z = 0 STEP 1 UNTIL MAX$Z
02273  M00S02271.ssval   +++|      DO
02274  M00S02272.ssval   +++|        BEGIN  # Z COORDINATE SCAN #
02275  M00S02273.ssval   +++|        SLOWFOR Y = 0 STEP 1 UNTIL MAX$Y
02276  M00S02274.ssval   +++|        DO
02277  M00S02275.ssval   +++|          BEGIN  # Y COORDINATE SCAN #
02278  M00S02276.ssval   +++|          ORD = MAXORD - Z - (Y * (MAX$Z+1));
02279  M00S02277.ssval   +++|          MGETENT(SMINDX,ORD,LOC(VLMAPAREA),STAT);  # READ ENTRY #
02280  M00S02278.ssval   +++|          IF STAT NQ CMASTAT"NOERR"
02281  M00S02279.ssval   +++|          THEN
02282  M00S02280.ssval   +++|            BEGIN
02283  M00S02281.ssval   +++|            VLERROR(VE"MAPR",ABRT);  # ABORT WITH MESSAGE #
02284  M00S02282.ssval   +++|            END
02285  M00S02283.ssval   +++|
02286  M00S02284.ssval   +++|          P<SMUMAP> = LOC(VLMAPAREA);
02287  M00S02285.ssval   +++|
02288  M00S02286.ssval   +++|#
02289  M00S02287.ssval   +++|*     IF THE SMMAP ENTRY IS ASSIGNED TO THE SUBFAMILY BUT THERE
02290  M00S02288.ssval   +++|*     WAS NO CORRESPONDING *FCT* ENTRY, WRITE AN ENTRY TO THE PROBLEM
02291  M00S02289.ssval   +++|*     FILE.
02292  M00S02290.ssval   +++|#
02293  M00S02291.ssval   +++|
02294  M00S02292.ssval   +++|          IF (CM$CODE[0] EQ CUBSTAT"SUBFAM")
02295  M00S02293.ssval   +++|            AND (CM$FMLYNM[0] EQ PAR$FM) AND (CM$SUB[0] EQ SBINDX)
02296  M00S02294.ssval   +++|              AND (B<Y,1>VLCM$Z[Z] EQ 0)
02297  M00S02295.ssval   +++|              AND CM$FCTORD[0] NQ 0
02298  M00S02296.ssval   +++|              AND CM$CSND[0] NQ " "
02299  M00S02297.ssval   +++|          THEN
02300  M00S02298.ssval   +++|            BEGIN
02301  M00S02299.ssval   +++|            CSN = CM$CSND[0];       # FIELDS FOR VLWPROB #
02302  M00S02300.ssval   +++|            FCTORD = CM$FCTORD[0];
02303  M00S02301.ssval   +++|            VLWPROB(REC"SM");       # WRITE PROBLEM FILE ENTRY #
02304  M00S02302.ssval   +++|            END
02305  M00S02303.ssval   +++|
02306  M00S02304.ssval   +++|          END  # Y COORDINATE SCAN #
02307  M00S02305.ssval   +++|
02308  M00S02306.ssval   +++|        END  # Z COORDINATE SCAN #
02309  M00S02307.ssval   +++|
02310  M00S02308.ssval   +++|      END  # VLSMSC #
02311  M00S02309.ssval   +++|
02312  M00S02310.ssval   +++|    TERM
02313  M00S02311.ssval   +++|PROC VLERROR((ERNUM),(ABTFLG));
02314  M00S02312.ssval   +++|# TITLE VLERROR - ISSUE ERROR MESSAGE.                                #
02315  M00S02313.ssval   +++|
02316  M00S02314.ssval   +++|
02317  M00S02315.ssval   +++|      BEGIN  # VLERROR #
02318  M00S02316.ssval   +++|
02319  M00S02317.ssval   +++|#
02320  M00S02318.ssval   +++|**    VLERROR - ISSUE ERROR MESSAGE.
02321  M00S02319.ssval   +++|*
02322  M00S02320.ssval   +++|*     THE ERROR MESSAGE SPECIFIED BY *ERNUM* IS ISSUED TO THE
02323  M00S02321.ssval   +++|*     DAYFILE AND REPORT FILE (IF OPENED).  IF SELECTED, PARAMETERS
02324  M00S02322.ssval   +++|*     FROM THE *MPARAM* ARRAY MAY BE INSERTED INTO THE MESSAGE TEXT
02325  M00S02323.ssval   +++|*     FIRST.  ALSO, A DETAIL STATUS FROM *STAT* WILL BE ISSUED IF
02326  M00S02324.ssval   +++|*     SPECIFIED.  THE OPTIONS FOR A SPECIFIC ERROR ARE DEFINED
02327  M00S02325.ssval   +++|*     WITH THE ERROR MESSAGE TEXT (IN COMTVLD) AND RESIDE IN A
02328  M00S02326.ssval   +++|*     LOCAL ARRAY.
02329  M00S02327.ssval   +++|*
02330  M00S02328.ssval   +++|*     PROC VLERROR(ERNUM,ABTFLG)
02331  M00S02329.ssval   +++|*
02332  M00S02330.ssval   +++|*     ENTRY     (ABTFLG)       - ABORT FLAG (PROGRAM ABORTED IF TRUE)
02333  M00S02331.ssval   +++|*               (ERNUM)        - ERROR NUMBER (FROM STATUS LIST *VE*
02334  M00S02332.ssval   +++|*                                IN COMTVLD).
02335  M00S02333.ssval   +++|*               (RPTFADR)      - REPORT FILE *FET* ADDRESS (ZERO IF
02336  M00S02334.ssval   +++|*                                NOT OPENED).
02337  M00S02335.ssval   +++|*               (STAT)         - DETAIL STATUS VALUE (OPTIONAL).
02338  M00S02336.ssval   +++|*               (ARRAY MPARAM) - CONTAINS PARAMETERS FOR ERROR MESSAGE
02339  M00S02337.ssval   +++|*                                TEXT (OPTIONAL).
02340  M00S02338.ssval   +++|*
02341  M00S02339.ssval   +++|*     EXIT      (CNTPROGERR) - COUNT OF ERRORS.
02342  M00S02340.ssval   +++|*
02343  M00S02341.ssval   +++|*               THE ERROR MESSAGE IS ISSUED TO THE REPORT FILE IF THE
02344  M00S02342.ssval   +++|*               FILE IS OPENED.
02345  M00S02343.ssval   +++|*
02346  M00S02344.ssval   +++|*     MESSAGES  *   ** ERROR MESSAGE TEXT   *
02347  M00S02345.ssval   +++|*               *      DETAIL STATUS = NNN  * (OPTIONAL)
02348  M00S02346.ssval   +++|*
02349  M00S02347.ssval   +++|#
02350  M00S02348.ssval   +++|
02351  M00S02349.ssval   +++|      ITEM ERNUM      I;             # ERROR NUMBER #
02352  M00S02350.ssval   +++|      ITEM ABTFLG     I;             # ABORT RUN FLAG #
02353  M00S02351.ssval   +++|
02354  M00S02352.ssval   +++|#
02355  M00S02353.ssval   +++|****  PROC VLERROR - XREF LIST BEGIN.
02356  M00S02354.ssval   +++|#
02357  M00S02355.ssval   +++|
02358  M00S02356.ssval   +++|      XREF
02359  M00S02357.ssval   +++|        BEGIN
02360  M00S02358.ssval   +++|        PROC MESSAGE;                # INTERFACE TO *MESSAGE* MACRO #
02361  M00S02359.ssval   +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02362  M00S02360.ssval   +++|                                       OR RETURN #
02363  M00S02361.ssval   +++|        PROC RPCLOSE;                # CLOSES A PRINT FILE #
02364  M00S02362.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
02365  M00S02363.ssval   +++|                                       LINE #
02366  M00S02364.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
02367  M00S02365.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
02368  M00S02366.ssval   +++|                                       CONVERSION #
02369  M00S02367.ssval   +++|        PROC VLPFILL;                # FILL PARAMETER IN MESSAGE
02370  M00S02368.ssval   +++|                                       TEXT #
02371  M00S02369.ssval   +++|        END
02372  M00S02370.ssval   +++|
02373  M00S02371.ssval   +++|#
02374  M00S02372.ssval   +++|****  PROC VLERROR - XREF LIST END.
02375  M00S02373.ssval   +++|#
02376  M00S02374.ssval   +++|
02377  M00S02375.ssval   +++|      DEF LISTCON #0#;
02378  M00S02376.ssval   +++|
02379  M00S02377.ssval   +++|*CALL COMBFAS
02380  M00S02378.ssval   +++|*CALL COMTVLD
02381  M00S02379.ssval   +++|*CALL COMTVLF
02382  M00S02380.ssval   +++|
02383  M00S02381.ssval   +++|      ITEM N          I;             # TEMPORARY VARIABLE #
02384  M00S02382.ssval   +++|      ITEM NP         I;             # TEMPORARY VARIABLE #
02385  M00S02383.ssval   +++|
02386  M00S02384.ssval   +++|      ARRAY TEXT [0:0] S(5);         # TO FORMAT ERROR MESSAGE #
02387  M00S02385.ssval   +++|        BEGIN
02388  M00S02386.ssval   +++|        ITEM TEX$MSG    C(00,00,40);  # MESSAGE TEXT #
02389  M00S02387.ssval   +++|        ITEM TEX$LEAD   C(00,00,03);  # LEADING CODES #
02390  M00S02388.ssval   +++|        ITEM TEX$ZERO   U(04,00,60) = [ 0 ];  # ZERO BYTE #
02391  M00S02389.ssval   +++|        END
02392  M00S02390.ssval   +++|
02393  M00S02391.ssval   +++|      ARRAY ERRCODES [0:0] S(1);     # ERROR OPTION CODES #
02394  M00S02392.ssval   +++|        BEGIN
02395  M00S02393.ssval   +++|        ITEM ERR$CODES  C(00,00,03);
02396  M00S02394.ssval   +++|        ITEM ERR$STAT   C(00,00,01);  # DETAIL STATUS FLAG #
02397  M00S02395.ssval   +++|        ITEM ERR$PARN   U(00,06,06);  # NUMBER OF PARAMETERS #
02398  M00S02396.ssval   +++|        END
02399  M00S02397.ssval   +++|
02400  M00S02398.ssval   +++|
02401  M00S02399.ssval   +++|      ARRAY DTLSTAT [0:0] S(5);      # DETAIL STATUS MESSAGE #
02402  M00S02400.ssval   +++|        BEGIN
02403  M00S02401.ssval   +++|        ITEM DTL$MSG    C(00,00,40) = ["   DETAIL STATUS = "];
02404  M00S02402.ssval   +++|        ITEM DTL$NUM    C(02,00,04);  # STATUS VALUE #
02405  M00S02403.ssval   +++|        ITEM DTL$ZERO   U(04,00,60) = [ 0 ];
02406  M00S02404.ssval   +++|        END
02407  M00S02405.ssval   +++|
02408  M00S02406.ssval   +++|#
02409  M00S02407.ssval   +++|*     ARRAY OF DEFINED ERROR MESSAGE TEXTS.  WARNING - THE ORDER
02410  M00S02408.ssval   +++|*     OF THIS LIST IS DEPENDENT ON THE STATUS LIST "VE".
02411  M00S02409.ssval   +++|*     THE TEXTS ARE DEFINED IN *COMTVLD*.
02412  M00S02410.ssval   +++|#
02413  M00S02411.ssval   +++|
02414  M00S02412.ssval   +++|      ARRAY ERRTEXT [0:VE"EREND"] S(4);  # ERROR MESSAGES ARRAY #
02415  M00S02413.ssval   +++|        BEGIN
02416  M00S02414.ssval   +++|        ITEM ERRMSG     C(00,00,40) = [ "   NO ERROR ",
02417  M00S02415.ssval   +++|        MSYNTAX,
02418  M00S02416.ssval   +++|        MSMPAR,
02419  M00S02417.ssval   +++|        MFXPAR,
02420  M00S02418.ssval   +++|        MSBPAR,
02421  M00S02419.ssval   +++|        MSTPAR,
02422  M00S02420.ssval   +++|        MLFRF,
02423  M00S02421.ssval   +++|        MRLNRF,
02424  M00S02422.ssval   +++|        MRFFM,
02425  M00S02423.ssval   +++|        MRFAM,
02426  M00S02424.ssval   +++|        MRDFH,
02427  M00S02425.ssval   +++|        MRDFL,
02428  M00S02426.ssval   +++|        MRDFU,
02429  M00S02427.ssval   +++|        MCATO,
02430  M00S02428.ssval   +++|        MCATR,
02431  M00S02429.ssval   +++|        MMAPO,
02432  M00S02430.ssval   +++|        MMAPR,
02433  M00S02431.ssval   +++|        MNOFL,
02434  M00S02432.ssval   +++|        MNCONN,
02435  M00S02433.ssval   +++|        MUCPERR,
02436  M00S02434.ssval   +++|        MNOFAM,
02437  M00S02435.ssval   +++|        MPFCER,
02438  M00S02436.ssval   +++|        MDUPSM,
02439  M00S02437.ssval   +++|        MDUPSB,
02440  M00S02438.ssval   +++|        MSYSERR,
02441  M00S02439.ssval   +++|        MABORT,
02442  M00S02440.ssval   +++|        "  " ];
02443  M00S02441.ssval   +++|        END
02444  M00S02442.ssval   +++|
02445  M00S02443.ssval   +++|                                               CONTROL EJECT;
02446  M00S02444.ssval   +++|      CNTPROGERR = CNTPROGERR + 1;
02447  M00S02445.ssval   +++|
02448  M00S02446.ssval   +++|#
02449  M00S02447.ssval   +++|*     SET UP THE MESSAGE TEXT BASED ON THE ERROR NUMBER.
02450  M00S02448.ssval   +++|#
02451  M00S02449.ssval   +++|
02452  M00S02450.ssval   +++|      TEX$MSG[0] = ERRMSG[ERNUM];
02453  M00S02451.ssval   +++|      ERR$CODES[0] = TEX$LEAD[0];
02454  M00S02452.ssval   +++|
02455  M00S02453.ssval   +++|#
02456  M00S02454.ssval   +++|*     INSERT PARAMETERS INTO TEXT IF SPECIFIED.
02457  M00S02455.ssval   +++|#
02458  M00S02456.ssval   +++|
02459  M00S02457.ssval   +++|      IF ERR$PARN[0] NQ " "
02460  M00S02458.ssval   +++|      THEN                           # PARAMETERS SPECIFIED #
02461  M00S02459.ssval   +++|        BEGIN
02462  M00S02460.ssval   +++|        NP = ERR$PARN[0] - "0";      # CALCULATE THE NUMBER OF
02463  M00S02461.ssval   +++|                                       PARAMETERS #
02464  M00S02462.ssval   +++|        SLOWFOR N = 1 STEP 1 UNTIL NP
02465  M00S02463.ssval   +++|        DO
02466  M00S02464.ssval   +++|          BEGIN  # N #
02467  M00S02465.ssval   +++|          VLPFILL(TEXT,MPARAM[N]);   # MOVE PARAMETER TO TEXT #
02468  M00S02466.ssval   +++|          END  # N #
02469  M00S02467.ssval   +++|
02470  M00S02468.ssval   +++|        END
02471  M00S02469.ssval   +++|
02472  M00S02470.ssval   +++|#
02473  M00S02471.ssval   +++|*     ISSUE ERROR TEXT TO DAYFILE.
02474  M00S02472.ssval   +++|#
02475  M00S02473.ssval   +++|
02476  M00S02474.ssval   +++|      TEX$LEAD[0] = " **";           # DAYFILE MSG MUST HAVE 1 BLANK #
02477  M00S02475.ssval   +++|      MESSAGE(TEXT,SYSUDF1);
02478  M00S02476.ssval   +++|
02479  M00S02477.ssval   +++|#
02480  M00S02478.ssval   +++|*     ISSUE ERROR TEXT TO REPORT FILE, IF IT IS OPEN.
02481  M00S02479.ssval   +++|#
02482  M00S02480.ssval   +++|
02483  M00S02481.ssval   +++|      IF RPTFADR NQ 0
02484  M00S02482.ssval   +++|      THEN
02485  M00S02483.ssval   +++|        BEGIN
02486  M00S02484.ssval   +++|        RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
02487  M00S02485.ssval   +++|        TEX$LEAD[0] = "***";         # ERROR FLAG #
02488  M00S02486.ssval   +++|        RPLINE(RPTFADR,TEXT,4,40,EOPL);  # ISSUE ERROR MESSAGE #
02489  M00S02487.ssval   +++|        END
02490  M00S02488.ssval   +++|
02491  M00S02489.ssval   +++|#
02492  M00S02490.ssval   +++|*     ISSUE DETAIL STATUS, IF SPECIFIED.
02493  M00S02491.ssval   +++|#
02494  M00S02492.ssval   +++|
02495  M00S02493.ssval   +++|      IF ERR$STAT[0] EQ "S"
02496  M00S02494.ssval   +++|      THEN
02497  M00S02495.ssval   +++|        BEGIN
02498  M00S02496.ssval   +++|        DTL$NUM[0] = VLNTC(STAT,"XCOD",4);  # SET NUMBER FROM *STAT* #
02499  M00S02497.ssval   +++|        MESSAGE(DTLSTAT,SYSUDF1);    # ISSUE DETAIL MESSAGE #
02500  M00S02498.ssval   +++|        IF RPTFADR NQ 0
02501  M00S02499.ssval   +++|        THEN
02502  M00S02500.ssval   +++|          BEGIN
02503  M00S02501.ssval   +++|          RPLINE(RPTFADR,DTLSTAT,4,40,EOPL);  # ISSUE TO REPORT FILE #
02504  M00S02502.ssval   +++|          END
02505  M00S02503.ssval   +++|
02506  M00S02504.ssval   +++|        END
02507  M00S02505.ssval   +++|
02508  M00S02506.ssval   +++|#
02509  M00S02507.ssval   +++|*     IF ABORT FLAG IS SET, ABORT.
02510  M00S02508.ssval   +++|#
02511  M00S02509.ssval   +++|
02512  M00S02510.ssval   +++|      IF (ABTFLG EQ ABRT)
02513  M00S02511.ssval   +++|      THEN
02514  M00S02512.ssval   +++|        BEGIN
02515  M00S02513.ssval   +++|        IF (RPTFADR NQ 0)            # CLOSE REPORT FILE IF IT IS
02516  M00S02514.ssval   +++|                                       OPENED #
02517  M00S02515.ssval   +++|        THEN
02518  M00S02516.ssval   +++|          BEGIN
02519  M00S02517.ssval   +++|          RPCLOSE(RPTFADR);
02520  M00S02518.ssval   +++|          END
02521  M00S02519.ssval   +++|
02522  M00S02520.ssval   +++|        VLMSG(VM"VLABT");            # ISSUE SSVAL ABORTED MESSAGE #
02523  M00S02521.ssval   +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
02524  M00S02522.ssval   +++|        END
02525  M00S02523.ssval   +++|
02526  M00S02524.ssval   +++|      RETURN;
02527  M00S02525.ssval   +++|
02528  M00S02526.ssval   +++|      END  # VLERROR #
02529  M00S02527.ssval   +++|
02530  M00S02528.ssval   +++|    TERM
02531  M00S02529.ssval   +++|PROC VLFIX;
02532  M00S02530.ssval   +++|# TITLE VLFIX - FIX CATALOGS.                                         #
02533  M00S02531.ssval   +++|
02534  M00S02532.ssval   +++|
02535  M00S02533.ssval   +++|      BEGIN  # VLFIX #
02536  M00S02534.ssval   +++|
02537  M00S02535.ssval   +++|#
02538  M00S02536.ssval   +++|**    VLFIX - FIX CATALOGS.
02539  M00S02537.ssval   +++|*
02540  M00S02538.ssval   +++|*     *VLFIX* READS THE FIXIT FILE AND MODIFIES THE CORRESPONDING
02541  M00S02539.ssval   +++|*     CATALOG ENTRIES DEPENDING UPON THE MODE SPECIFIED BY THE
02542  M00S02540.ssval   +++|*     CONTROL CARD PARAMETERS.
02543  M00S02541.ssval   +++|*
02544  M00S02542.ssval   +++|*     PROC VLFIX
02545  M00S02543.ssval   +++|*
02546  M00S02544.ssval   +++|*     ENTRY     (CNTORPHANS)    - COUNT OF TROUBLE-FREE ORPHANS.
02547  M00S02545.ssval   +++|*               (CONNECTED)     - CONNECTED TO *EXEC* FLAG.
02548  M00S02546.ssval   +++|*               (PAR$FX)        - FX CONTROL CARD PARAMETER.
02549  M00S02547.ssval   +++|*               (PAR$RF)        - RF CONTROL CARD PARAMETER.
02550  M00S02548.ssval   +++|*               (PAR$RL)        - RL CONTROL CARD PARAMETER.
02551  M00S02549.ssval   +++|*               (RDFDT)         - *RDF* FILE PACKED DATE AND TIME.
02552  M00S02550.ssval   +++|*               (RELEASABLE)    - COUNT OF RELEASABLE AU-S.
02553  M00S02551.ssval   +++|*               (TOTALERRS)     - TOTAL VALIDATION ERRORS.
02554  M00S02552.ssval   +++|*               (ARRAY FIXFILE) - FIXIT FILE *FET*.
02555  M00S02553.ssval   +++|*
02556  M00S02554.ssval   +++|*     EXIT      RELEASE PROCESSING OCCURRED IF MODE IS EQUAL TO
02557  M00S02555.ssval   +++|*               RELEASE.
02558  M00S02556.ssval   +++|*               REPAIR PROCESSING OCCURRED IF MODE IS EQUAL TO FIX.
02559  M00S02557.ssval   +++|*               INFORMATIONAL LINES WERE WRITTEN TO THE REPORT FILE.
02560  M00S02558.ssval   +++|*
02561  M00S02559.ssval   +++|*     MESSAGES  * TOTAL VALIDATION ERRORS = NNN *
02562  M00S02560.ssval   +++|*               * RELEASABLE M860 FILE = NNNN *
02563  M00S02561.ssval   +++|*               * RELEASABLE M860 AU-S = NNNN *
02564  M00S02562.ssval   +++|*               * CATALOGS NOT MODIFIED *
02565  M00S02563.ssval   +++|*               * CATALOGS MODIFIED *
02566  M00S02564.ssval   +++|*               * FREE FILES NOT RELEASED *
02567  M00S02565.ssval   +++|*               * FREE FILES RELEASED *
02568  M00S02566.ssval   +++|*
02569  M00S02567.ssval   +++|*     NOTES     THE MODES OF PROCESSING ARE -
02570  M00S02568.ssval   +++|*
02571  M00S02569.ssval   +++|*                 . RELEASE - RELEASE ORPHANS IN THE SFM CATALOG.
02572  M00S02570.ssval   +++|*                   THIS MODE IS SET IF -
02573  M00S02571.ssval   +++|*                     THE *RF* AND *RL* PARAMETERS WERE SPECIFIED AND
02574  M00S02572.ssval   +++|*                     THE *TOTALERRS* IS LESS THAN THE *FX* PARAMETER.
02575  M00S02573.ssval   +++|*
02576  M00S02574.ssval   +++|*                 . FIX - SET APPROPRIATE FLAGS IN THE CATALOGS FOR
02577  M00S02575.ssval   +++|*                   ERRORS DETECTED.
02578  M00S02576.ssval   +++|*                   THIS MODE IS SET IF -
02579  M00S02577.ssval   +++|*                     THE *FM* PARAMETER IS SET AND THE *TOTALERRS*
02580  M00S02578.ssval   +++|*                     IS LESS THAN THE *FX* PARAMETER.
02581  M00S02579.ssval   +++|*
02582  M00S02580.ssval   +++|*                 . NONE - NO CATALOG MODIFICATIONS.
02583  M00S02581.ssval   +++|*                   THIS MODE IS SET IF *SSVAL* IS NOT CONNECTED
02584  M00S02582.ssval   +++|*                   TO *EXEC* OR NOT IN FIX OR RELEASE MODE.
02585  M00S02583.ssval   +++|*
02586  M00S02584.ssval   +++|*               RELEASE OF FREE AU-S IN A SPECIFIC SUBCATALOG
02587  M00S02585.ssval   +++|*               OCCURS ONLY IF THE DATE AND TIME IN THE *RDF* FILE IS
02588  M00S02586.ssval   +++|*               MORE RECENT THAN THE LAST PURGE DATE AND TIME FOR THE
02589  M00S02587.ssval   +++|*               SUBCATALOG.
02590  M00S02588.ssval   +++|*
02591  M00S02589.ssval   +++|*               THE REPAIRS THAT *SSVAL* CAN PERFORM ARE DEFINED IN
02592  M00S02590.ssval   +++|*               THE ARRAY *FIXARRAY*.  THE REPAIRS TO BE TAKEN FOR
02593  M00S02591.ssval   +++|*               A SPECIFIC FIXIT FILE RECORD ARE DETERMINED BY THE
02594  M00S02592.ssval   +++|*               RECORD TYPE WHICH REFLECTS THE TYPE OF ERROR THAT
02595  M00S02593.ssval   +++|*               OCCURRED DURING VALIDATION.
02596  M00S02594.ssval   +++|*
02597  M00S02595.ssval   +++|#
02598  M00S02596.ssval   +++|
02599  M00S02597.ssval   +++|#
02600  M00S02598.ssval   +++|****  PROC VLFIX - XREF LIST BEGIN.
02601  M00S02599.ssval   +++|#
02602  M00S02600.ssval   +++|
02603  M00S02601.ssval   +++|      XREF
02604  M00S02602.ssval   +++|        BEGIN
02605  M00S02603.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
02606  M00S02604.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
Line S00001 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02607  M01S00001.ssval3  +++|        PROC RETERN;                   # RETURN LOCAL FILE #
02608  M00S02605.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
02609  M00S02606.ssval   +++|        PROC RPEJECT;                # STARTS A NEW REPORT PAGE #
02610  M00S02607.ssval   +++|        PROC VLFIXP;                 # CONNECTS *PF* AND SETS *ASA* #
02611  M00S02608.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02612  M00S02609.ssval   +++|        PROC VLLPDT;                 # GET LAST PURGE DATE AND TIME #
02613  M00S02610.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
02614  M00S02611.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
02615  M00S02612.ssval   +++|                                       CONVERSION #
02616  M00S02613.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
Line S00002 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02617  M01S00002.ssval3  +++|        PROC WRITEW;                   # WRITE TO WORKING BUFFER #
02618  M00S02614.ssval   +++|        PROC WRITEF;                 # INTERFACE TO *WRITEF* MACRO #
02619  M00S02615.ssval   +++|        END
02620  M00S02616.ssval   +++|
02621  M00S02617.ssval   +++|#
02622  M00S02618.ssval   +++|****  PROC VLFIX - XREF LIST END.
02623  M00S02619.ssval   +++|#
02624  M00S02620.ssval   +++|
02625  M00S02621.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02626  M00S02622.ssval   +++|
02627  M00S02623.ssval   +++|*CALL COMBFAS
02628  M00S02624.ssval   +++|*CALL COMBCPR
02629  M00S02625.ssval   +++|*CALL COMTVLD
02630  M00S02626.ssval   +++|*CALL COMTVLF
02631  M00S02627.ssval   +++|*CALL COMTVLV
02632  M00S02628.ssval   +++|
02633  M00S02629.ssval   +++|      STATUS PROCTYP                 # PROCESSING TYPE #
02634  M00S02630.ssval   +++|        NONE,
02635  M00S02631.ssval   +++|        FIX,                         # FIX CATALOGS #
02636  M00S02632.ssval   +++|        RELEASE,                     # RELEASE FILE SPACE #
02637  M00S02633.ssval   +++|        PTEND;
02638  M00S02634.ssval   +++|
02639  M00S02635.ssval   +++|      DEF FREE #0#;                  # SET FREE FLAG IN PFC #
02640  M00S02636.ssval   +++|      DEF ZERO #1#;                  # ZERO *PFC* ASA #
02641  M00S02637.ssval   +++|
02642  M00S02638.ssval   +++|      ITEM FREFL   B;                # FREE CARTRIDGE FLAG SET #
02643  M00S02639.ssval   +++|      ITEM MODE       S : PROCTYP = S"NONE";  # MODE FOR FIX PROCESS #
02644  M00S02640.ssval   +++|      ITEM LPDT       U;             # LAST PURGE DATE-TIME #
02645  M00S02641.ssval   +++|      ITEM FIXACTION  I;             # FIX ACTIONS FOR FIXIT RECORD #
02646  M00S02642.ssval   +++|      ITEM RDF$BEFORE B;             # RDF BEFORE PURGE DATE #
02647  M00S02643.ssval   +++|      ITEM RELEASED   B;             # FREE FILES RELEASED FLAG #
02648  M00S02644.ssval   +++|
02649  M00S02645.ssval   +++|#
02650  M00S02646.ssval   +++|*     ACTION FLAGS TO DEFINE THE CATALOG REPAIRS THAT *SSVAL* CAN
02651  M00S02647.ssval   +++|*     PERFORM.
02652  M00S02648.ssval   +++|#
02653  M00S02649.ssval   +++|
02654  M00S02650.ssval   +++|      DEF ACT$NONE   #O"000000"#;    # NO ACTION #
02655  M00S02651.ssval   +++|      DEF ACT$UMAP   #O"000001"#;    # UPDATE SMMAP #
02656  M00S02652.ssval   +++|      DEF ACT$UPFC   #O"000010"#;    # UPDATE *PFC* ENTRY #
02657  M00S02653.ssval   +++|      DEF ACT$USM    #O"000100"#;    # UPDATE *SM* FLAG IN SFM
02658  M00S02654.ssval   +++|                                       CATALOG #
02659  M00S02655.ssval   +++|      DEF ACT$UFROZ  #O"001000"#;    # UPDATE FROZEN AU FLAG #
02660  M00S02656.ssval   +++|      DEF ACT$USOF   #O"010000"#;    # UPDATE *SOF* AU FLAG #
02661  M00S02657.ssval   +++|      DEF ACT$INHIB  #O"100000"#;    # SET INHIBIT FLAG IN *FCT* #
02662  M00S02658.ssval   +++|      DEF ACT$P$F$S  #O"011010"#;
02663  M00S02659.ssval   +++|      DEF ACT$F$S    #O"011000"#;    # MULTIPLE ACTIONS #
02664  M00S02660.ssval   +++|      DEF ACT$UC$INH #O"100100"#;    # MULTIPLE ACTIONS #
02665  M00S02661.ssval   +++|      DEF ACT$UF$UI  #O"101000"#;    # MULTIPLE ACTIONS #
Line S00003 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02662.ssval   +++|
02674  M00S02663.ssval   +++|#
02675  M00S02664.ssval   +++|*     DEFINE ACTIONS TO TAKE FOR THE VARIOUS FIXIT FILE RECORD TYPES.
02676  M00S02665.ssval   +++|*     DURING THE VALIDATION PROCESS, RECORDS WERE WRITTEN TO THE FIXIT
02677  M00S02666.ssval   +++|*     FILE FOR PROBLEMS DETECTED.  THE RECORD TYPE REFLECTS THE TYPE OF
02678  M00S02667.ssval   +++|*     REPAIR PROCESSING TO BE DONE.
02679  M00S02668.ssval   +++|#
02680  M00S02669.ssval   +++|
02681  M00S02670.ssval   +++|      ARRAY FIXARRAY [0:REC"REND"] S(1);  # FIX ACTIONS FOR FIX
02682  M00S02671.ssval   +++|                                            RECORDS #
02683  M00S02672.ssval   +++|        BEGIN
02684  M00S02673.ssval   +++|        ITEM FIXA$WD    U(00,00,60);
02685  M00S02674.ssval   +++|        ITEM FIXA$TFO   U(REC"TFORPH",0,60) = [ACT$NONE];
02686  M00S02675.ssval   +++|        ITEM FIXA$FCT   U(REC"FCT",0,60) = [ACT$UC$INH];
02687  M00S02676.ssval   +++|        ITEM FIXA$SM    U(REC"SM",0,60) = [ACT$UMAP];
02688  M00S02677.ssval   +++|        ITEM FIXA$ASA   U(REC"ASA",0,60) = [ACT$UPFC];
02689  M00S02678.ssval   +++|        ITEM FIXA$PFC   U(REC"OTHR",0,60) = [ACT$P$F$S];
02690  M00S02679.ssval   +++|        ITEM FIXA$ORPH  U(REC"BADORPH",0,60) = [ACT$UFROZ];
02691  M00S02680.ssval   +++|        ITEM FIXA$FRAG  U(REC"FRAG",0,60) = [ACT$F$S];
02692  M00S02681.ssval   +++|      ITEM FIXA$HOLE  U(REC"BADHOLE",0,60) = [ACT$UF$UI];
02693  M00S02682.ssval   +++|        END
02694  M00S02683.ssval   +++|
02695  M00S02684.ssval   +++|                                               CONTROL EJECT;
02696  M00S02685.ssval   +++|
02697  M00S02686.ssval   +++|#
02698  M00S02687.ssval   +++|*     CLOSE THE FIXIT FILE.
02699  M00S02688.ssval   +++|#
02700  M00S02689.ssval   +++|
02701  M00S02690.ssval   +++|      FREFL = FALSE;
02702  M00S02691.ssval   +++|      WRITEF(FIXITFILE,RCL);
02703  M00S02692.ssval   +++|      REWIND(FIXITFILE,RCL);
02704  M00S02693.ssval   +++|
02705  M00S02694.ssval   +++|#
02706  M00S02695.ssval   +++|*     ISSUE COUNT OF ORPHANS.
02707  M00S02696.ssval   +++|#
02708  M00S02697.ssval   +++|
02709  M00S02698.ssval   +++|      MP$WD[1] = VLNTC(CNTORPHANS,"XCDD",5);
02710  M00S02699.ssval   +++|      VLMSG(VM"NTFO");
02711  M00S02700.ssval   +++|
02712  M00S02701.ssval   +++|#
02713  M00S02702.ssval   +++|*     ISSUE COUNT OF RELEASABLE AU-S.
02714  M00S02703.ssval   +++|#
02715  M00S02704.ssval   +++|
02716  M00S02705.ssval   +++|      MP$WD[1] = VLNTC(RELEASABLE,"XCDD",6);
02717  M00S02706.ssval   +++|      VLMSG(VM"RSPACE");
Line S00003 Modification History
M01 (Added by) msea011
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02707.ssval   +++|
02730  M00S02708.ssval   +++|#
02731  M00S02709.ssval   +++|*     ISSUE NUMBER OF VALIDATION ERRORS.
02732  M00S02710.ssval   +++|#
02733  M00S02711.ssval   +++|
02734  M00S02712.ssval   +++|      MP$WD[1] = VLNTC(TOTALERRS,"XCDD",4);
02735  M00S02713.ssval   +++|      VLMSG(VM"TOTERR");
02736  M00S02714.ssval   +++|
02737  M00S02715.ssval   +++|#
02738  M00S02716.ssval   +++|*     IF NOT CONNECTED TO EXEC, NO FIX/RELEASE PROCESSING CAN BE DONE.
02739  M00S02717.ssval   +++|#
02740  M00S02718.ssval   +++|
02741  M00S02719.ssval   +++|      IF NOT CONNECTED
02742  M00S02720.ssval   +++|      THEN
02743  M00S02721.ssval   +++|        BEGIN
02744  M00S02722.ssval   +++|        VLMSG(VM"NOFIX");            # ISSUE MESSAGE #
02745  M00S02723.ssval   +++|        RETURN;
02746  M00S02724.ssval   +++|        END
02747  M00S02725.ssval   +++|
02748  M00S02726.ssval   +++|#
02749  M00S02727.ssval   +++|*     DETERMINE MODE OF FIX PROCESSING BASED ON CONTROL CARD
02750  M00S02728.ssval   +++|*     PARAMETERS AND VALIDATION TOTAL ERRORS.
02751  M00S02729.ssval   +++|#
02752  M00S02730.ssval   +++|
02753  M00S02731.ssval   +++|      IF (PAR$RF EQ 0) AND (TOTALERRS LQ PAR$FX)
02754  M00S02732.ssval   +++|        AND (TOTALERRS NQ 0)
02755  M00S02733.ssval   +++|      THEN
02756  M00S02734.ssval   +++|        BEGIN
02757  M00S02735.ssval   +++|        VLMSG(VM"UPDED");            # ISSUE MESSAGE #
02758  M00S02736.ssval   +++|        MODE = S"FIX";               # FIX CATALOG MODE #
02759  M00S02737.ssval   +++|        END
02760  M00S02738.ssval   +++|
02761  M00S02739.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$RL NQ 0) AND (TOTALERRS LQ PAR$FX)
02762  M00S02740.ssval   +++|      THEN
02763  M00S02741.ssval   +++|        BEGIN
02764  M00S02742.ssval   +++|        RELEASED = FALSE;            # INITIALIZE FILES RELEASED FLAG #
02765  M00S02743.ssval   +++|        RDF$BEFORE = FALSE;          # INITIALIZE RDF FLAG #
02766  M00S02744.ssval   +++|        MODE = S"RELEASE";           # RELEASE ORPHANS MODE #
02767  M00S02745.ssval   +++|        END
02768  M00S02746.ssval   +++|
02769  M00S02747.ssval   +++|      IF MODE EQ S"NONE"
02770  M00S02748.ssval   +++|      THEN
02771  M00S02749.ssval   +++|        BEGIN
02772  M00S02750.ssval   +++|        VLMSG(VM"NOFIX");            # ISSUE MESSAGE #
02773  M00S02751.ssval   +++|        END
02774  M00S02752.ssval   +++|
02775  M00S02753.ssval   +++|
02776  M00S02754.ssval   +++|#
02777  M00S02755.ssval   +++|*     READ THE FIXIT FILE AND PERFORM FIX/RELEASE ACTIONS BASED ON
02778  M00S02756.ssval   +++|*     RECORD TYPE.
02779  M00S02757.ssval   +++|#
02780  M00S02758.ssval   +++|
02781  M00S02759.ssval   +++|      READ(FIXITFILE,NRCL);
02782  M00S02760.ssval   +++|      STAT = OK;
02783  M00S02761.ssval   +++|      REPEAT WHILE STAT EQ OK
02784  M00S02762.ssval   +++|      DO
02785  M00S02763.ssval   +++|        BEGIN  # PROCESS FIXIT FILE #
02786  M00S02764.ssval   +++|        READW(FIXITFILE,EXTRECORD,RLFIX,STAT);
02787  M00S02765.ssval   +++|        IF STAT NQ 0
02788  M00S02766.ssval   +++|        THEN
02789  M00S02767.ssval   +++|          BEGIN
02790  M00S02768.ssval   +++|          TEST DUMMY;                # EXIT, NO RECORD TO PROCESS #
02791  M00S02769.ssval   +++|          END
02792  M00S02770.ssval   +++|
02793  M00S02771.ssval   +++|        SMINDX = EXTR$SM[0];
02794  M00S02772.ssval   +++|        SBINDX  = EXTR$SB[0];
02795  M00S02773.ssval   +++|
02796  M00S02774.ssval   +++|#
02797  M00S02775.ssval   +++|*     FOR RELEASE MODE, PURGE TROUBLE-FREE ORPHANS.
02798  M00S02776.ssval   +++|#
02799  M00S02777.ssval   +++|
02800  M00S02778.ssval   +++|        IF (MODE EQ S"RELEASE") AND (FIX$RT[0] EQ REC"TFORPH")
02801  M00S02779.ssval   +++|        THEN
02802  M00S02780.ssval   +++|          BEGIN  # RELEASE ORPHANS #
02803  M00S02781.ssval   +++|          VLLPDT(EXTR$SB[0],EXTR$SM[0],LPDT);  # RETURNS LAST PURGE
02804  M00S02782.ssval   +++|                                                  DATE/TIME #
02805  M00S02783.ssval   +++|
02806  M00S02784.ssval   +++|#
02807  M00S02785.ssval   +++|*     RELEASE ONLY IF THE SUBCATALOG LAST PURGE DATE/TIME IS LESS THAN
02808  M00S02786.ssval   +++|*     THE RDF FILE DATE/TIME.
02809  M00S02787.ssval   +++|#
02810  M00S02788.ssval   +++|
02811  M00S02789.ssval   +++|          IF LPDT LS RDFDT
02812  M00S02790.ssval   +++|          THEN
02813  M00S02791.ssval   +++|            BEGIN
Line S02792 Modification History
M01 (Removed by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02814  M01S02792.ssval3  ---|            VLREQEX(TYP"TYP3",REQTYP3"PURG$ORPH");
Line S00010 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02793.ssval   +++|            RELEASED = TRUE;         # FREE FILES RELEASED #
02830  M00S02794.ssval   +++|            TEST DUMMY;
02831  M00S02795.ssval   +++|            END
02832  M00S02796.ssval   +++|
02833  M00S02797.ssval   +++|          ELSE
02834  M00S02798.ssval   +++|            BEGIN
02835  M00S02799.ssval   +++|            RDF$BEFORE = TRUE;
02836  M00S02800.ssval   +++|            END
02837  M00S02801.ssval   +++|
02838  M00S02802.ssval   +++|          END  # RELEASE ORPHANS #
02839  M00S02803.ssval   +++|
02840  M00S02804.ssval   +++|#
02841  M00S02805.ssval   +++|*     UPDATE *PFC* IF FILE IS TO BE REMOVED FROM CARTRIDGE.
02842  M00S02806.ssval   +++|#
02843  M00S02807.ssval   +++|
02844  M00S02808.ssval   +++|      IF FIX$RT[0] EQ REC"FCF"
02845  M00S02809.ssval   +++|        AND PAR$RF EQ 0
02846  M00S02810.ssval   +++|      THEN                   # SET FREE CARTRIDGE FLAGS #
02847  M00S02811.ssval   +++|        BEGIN
02848  M00S02812.ssval   +++|        VLFIXP(FREE);
02849  M00S02813.ssval   +++|        IF STAT EQ 0
02850  M00S02814.ssval   +++|        THEN
02851  M00S02815.ssval   +++|          BEGIN
02852  M00S02816.ssval   +++|          FREFL = TRUE;
02853  M00S02817.ssval   +++|          END
02854  M00S02818.ssval   +++|
02855  M00S02819.ssval   +++|        END
02856  M00S02820.ssval   +++|
02857  M00S02821.ssval   +++|
02858  M00S02822.ssval   +++|#
02859  M00S02823.ssval   +++|*     FOR FIX MODE, GET ACTIONS BASED ON THE FIXIT RECORD TYPE.
02860  M00S02824.ssval   +++|#
02861  M00S02825.ssval   +++|
02862  M00S02826.ssval   +++|        IF MODE NQ S"FIX"
02863  M00S02827.ssval   +++|        THEN
02864  M00S02828.ssval   +++|          BEGIN
02865  M00S02829.ssval   +++|          TEST DUMMY;                # SKIP IF NOT FIX MODE #
02866  M00S02830.ssval   +++|          END
02867  M00S02831.ssval   +++|
02868  M00S02832.ssval   +++|        FIXACTION = FIXA$WD[FIX$RT[0]];  # ACTIONS FOR THIS RECORD #
02869  M00S02833.ssval   +++|
02870  M00S02834.ssval   +++|#
02871  M00S02835.ssval   +++|*     UPDATE THE SMMAP ENTRY.
02872  M00S02836.ssval   +++|#
02873  M00S02837.ssval   +++|
02874  M00S02838.ssval   +++|        IF FIXACTION LAN ACT$UMAP NQ 0
02875  M00S02839.ssval   +++|        THEN
02876  M00S02840.ssval   +++|          BEGIN
02877  M00S02841.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$MAP");
02878  M00S02842.ssval   +++|          END
02879  M00S02843.ssval   +++|
02880  M00S02844.ssval   +++|#
02881  M00S02845.ssval   +++|*     UPDATE *PFC* ENTRY IF THE FILE HAS A DISK IMAGE.
02882  M00S02846.ssval   +++|#
02883  M00S02847.ssval   +++|
02884  M00S02848.ssval   +++|        IF FIXACTION LAN ACT$UPFC NQ 0 AND EXTR$D[0] NQ 0
02885  M00S02849.ssval   +++|        THEN
02886  M00S02850.ssval   +++|          BEGIN
02887  M00S02851.ssval   +++|          VLFIXP(ZERO);
02888  M00S02852.ssval   +++|          END
02889  M00S02853.ssval   +++|
02890  M00S02854.ssval   +++|#
02891  M00S02855.ssval   +++|*     UPDATE THE SFM CATALOG SMERR FLAG.
02892  M00S02856.ssval   +++|#
02893  M00S02857.ssval   +++|
02894  M00S02858.ssval   +++|        IF FIXACTION LAN ACT$USM NQ 0
02895  M00S02859.ssval   +++|        THEN
02896  M00S02860.ssval   +++|          BEGIN
02897  M00S02861.ssval   +++|          CFIELD = UCF"CMAP";        # CHANGE SMERR FLAG #
02898  M00S02862.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02899  M00S02863.ssval   +++|          END
02900  M00S02864.ssval   +++|
02901  M00S02865.ssval   +++|#
02902  M00S02866.ssval   +++|*     UPDATE INHIBIT FLAG IN FCT.
02903  M00S02867.ssval   +++|#
02904  M00S02868.ssval   +++|
02905  M00S02869.ssval   +++|        IF FIXACTION LAN ACT$INHIB NQ 0
02906  M00S02870.ssval   +++|          OR (FIXACTION LAN ACT$UFROZ NQ 0
02907  M00S02871.ssval   +++|          AND NOT VTEN$ALOC[0])
02908  M00S02872.ssval   +++|        THEN
02909  M00S02873.ssval   +++|          BEGIN
02910  M00S02874.ssval   +++|          CFIELD = UCF"INHIB";       # CHANGE INHIBIT FLAG #
02911  M00S02875.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02912  M00S02876.ssval   +++|          END
02913  M00S02877.ssval   +++|
02914  M00S02878.ssval   +++|#
02915  M00S02879.ssval   +++|*     UPDATE SFM CATALOG *FCT* AU FROZ FLAG.
02916  M00S02880.ssval   +++|#
02917  M00S02881.ssval   +++|
02918  M00S02882.ssval   +++|        IF FIXACTION LAN ACT$UFROZ NQ 0
02919  M00S02883.ssval   +++|        THEN
02920  M00S02884.ssval   +++|          BEGIN
02921  M00S02885.ssval   +++|          CFIELD = UCF"FROZ";        # CHANGE FROZ FLAG #
02922  M00S02886.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02923  M00S02887.ssval   +++|          END
02924  M00S02888.ssval   +++|
02925  M00S02889.ssval   +++|#
02926  M00S02890.ssval   +++|*     UPDATE SFM CATALOG *FCT* AU *SOF* FLAG IF THE ENTRY IS
02927  M00S02891.ssval   +++|*     A START OF FRAGMENT.
02928  M00S02892.ssval   +++|#
02929  M00S02893.ssval   +++|
02930  M00S02894.ssval   +++|        VTEN$WORD[0] = FIX$VT[0];    # GET *VT* ENTRY FROM RECORD #
02931  M00S02895.ssval   +++|        IF FIXACTION LAN ACT$USOF NQ 0 AND VTEN$SOF[0]
02932  M00S02896.ssval   +++|        THEN
02933  M00S02897.ssval   +++|          BEGIN
02934  M00S02898.ssval   +++|          CFIELD = UCF"SOF";         # CHANGE *SOF* FLAG #
02935  M00S02899.ssval   +++|          VLREQEX(TYP"TYP3",REQTYP3"UPD$CAT");
02936  M00S02900.ssval   +++|          END
02937  M00S02901.ssval   +++|
02938  M00S02902.ssval   +++|        END  # PROCESS FIXIT FILE #
02939  M00S02903.ssval   +++|
02940  M00S02904.ssval   +++|      IF RELEASED AND MODE EQ S"RELEASE"
02941  M00S02905.ssval   +++|      THEN
02942  M00S02906.ssval   +++|        BEGIN
Line S02907 Modification History
M01 (Removed by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
02943  M01S02907.ssval3  ---|        VLMSG(VM"FSREL");          # FREE FILES RELEASED MESSAGE #
Line S00024 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02908.ssval   +++|        END
02951  M00S02909.ssval   +++|
02952  M00S02910.ssval   +++|      IF NOT RELEASED AND MODE EQ S"RELEASE"
02953  M00S02911.ssval   +++|      THEN
02954  M00S02912.ssval   +++|        BEGIN
02955  M00S02913.ssval   +++|        VLMSG(VM"FSNREL");
02956  M00S02914.ssval   +++|        IF RDF$BEFORE
02957  M00S02915.ssval   +++|        THEN
02958  M00S02916.ssval   +++|          BEGIN
02959  M00S02917.ssval   +++|          VLMSG(VM"RDFBF");
02960  M00S02918.ssval   +++|          END
02961  M00S02919.ssval   +++|
02962  M00S02920.ssval   +++|        END
02963  M00S02921.ssval   +++|
02964  M00S02922.ssval   +++|      IF FREFL
02965  M00S02923.ssval   +++|      THEN                           # FREE CARTRIDGE FLAG SET #
02966  M00S02924.ssval   +++|        BEGIN
02967  M00S02925.ssval   +++|        VLMSG(VM"FFSET");
02968  M00S02926.ssval   +++|        END
02969  M00S02927.ssval   +++|
02970  M00S02928.ssval   +++|
02971  M00S02929.ssval   +++|      END  # VLFIX #
02972  M00S02930.ssval   +++|
02973  M00S02931.ssval   +++|    TERM
02974  M00S02932.ssval   +++|PROC VLFIXP(ACTION);
02975  M00S02933.ssval   +++|# TITLE VLFIXP - ATTACHES PERMANENT FILE AND RESETS THE ASA.          #
02976  M00S02934.ssval   +++|
02977  M00S02935.ssval   +++|      BEGIN  # VLFIXP #
02978  M00S02936.ssval   +++|
02979  M00S02937.ssval   +++|#
02980  M00S02938.ssval   +++|**    VLFIXP - RESETS THE *ASA*.
02981  M00S02939.ssval   +++|*
02982  M00S02940.ssval   +++|*     *VLFIXP* ATTACHES THE USER FILE SPECIFIED IN THE FIXIT
02983  M00S02941.ssval   +++|*     FILE ENTRY, VERIFIES THE *ASA* IS CORRECT, RESETS THE
02984  M00S02942.ssval   +++|*     *ASA*, THEN RETURNS THE FILE.
02985  M00S02943.ssval   +++|*
02986  M00S02944.ssval   +++|*     PROC VLFIXP
02987  M00S02945.ssval   +++|*
02988  M00S02946.ssval   +++|*     ENTRY     (PAR$FM)        - FAMILY.
02989  M00S02947.ssval   +++|*               (ACTION) IF ZERO THEN SET FREE FLAG IN *PFC*, ELSE
02990  M00S02948.ssval   +++|*                        ZERO *ASA* IN *PFC*.
02991  M00S02949.ssval   +++|*               ARRAY EXTRECORD - FIXIT FILE RECORD.
02992  M00S02950.ssval   +++|*
02993  M00S02951.ssval   +++|*     EXIT      THE *ASA* FOR THE FIXIT FILE ENTRY IS SET TO ZERO.
02994  M00S02952.ssval   +++|*               THE USER FILE IS RETURNED.
02995  M00S02953.ssval   +++|#
02996  M00S02954.ssval   +++|
02997  M00S02955.ssval   +++|#
02998  M00S02956.ssval   +++|****  PROC VLFIXP - XREF LIST BEGIN.
02999  M00S02957.ssval   +++|#
03000  M00S02958.ssval   +++|
03001  M00S02959.ssval   +++|      XREF
03002  M00S02960.ssval   +++|        BEGIN
03003  M00S02961.ssval   +++|        PROC BZFILL;                 # ZERO FILL STORAGE #
03004  M00S02962.ssval   +++|        PROC MESSAGE;                # SEND MESSAGE TO DAYFILE #
03005  M00S02963.ssval   +++|        PROC SETAF;                  # SET FLAG IN *PFC* #
03006  M00S02964.ssval   +++|        PROC RECALL;                 # INTERFACE TO RECALL #
03007  M00S02965.ssval   +++|        PROC RETERN;                 # RETURNS SPECIFIED FILE #
03008  M00S02966.ssval   +++|        PROC SETASA;                 # INTERFACE TO *SETASA* ROUTINE #
03009  M00S02967.ssval   +++|        PROC UATTACH;                # INTERFACE TO *UATTACH* MACRO #
03010  M00S02968.ssval   +++|        PROC UGET;                   # UTILITY GET #
03011  M00S02969.ssval   +++|        END
03012  M00S02970.ssval   +++|
03013  M00S02971.ssval   +++|#
03014  M00S02972.ssval   +++|****  PROC VLFIXP - XREF LIST END.
03015  M00S02973.ssval   +++|#
03016  M00S02974.ssval   +++|
03017  M00S02975.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
03018  M00S02976.ssval   +++|
03019  M00S02977.ssval   +++|*CALL COMBFAS
03020  M00S02978.ssval   +++|*CALL COMBBZF;
03021  M00S02979.ssval   +++|*CALL COMSPFM
03022  M00S02980.ssval   +++|*CALL COMTVLD
03023  M00S02981.ssval   +++|*CALL COMTVLF
03024  M00S02982.ssval   +++|
03025  M00S02983.ssval   +++|      DEF ACCMD      #1#;            # READ MODE #
03026  M00S02984.ssval   +++|      DEF RP  #4#;                   # FULL ERROR PROCESSING #
03027  M00S02985.ssval   +++|      DEF ZEROASA    #0#;            # ZERO THE *ASA* #
03028  M00S02986.ssval   +++|
03029  M00S02987.ssval   +++|      ITEM ACTION     U;             # ZERO OR SET FLAG #
03030  M00S02988.ssval   +++|      ITEM FAMILY     C(10);         # FAMILY NAME #
03031  M00S02989.ssval   +++|      ITEM I          U;             # INDUCTION VARIABLE #
03032  M00S02990.ssval   +++|      ITEM J          U;             # INDUCTION #
03033  M00S02991.ssval   +++|      ITEM LFN        C(10);         # LOCAL FILE NAME #
03034  M00S02992.ssval   +++|      ITEM PFNM       C(10);         # PERMANENT FILE NAME #
03035  M00S02993.ssval   +++|      ITEM UFLAG      U;             # STATUS FLAG #
03036  M00S02994.ssval   +++|
03037  M00S02995.ssval   +++|      ARRAY PFCCAT [0:0] S(16);      # TEMPORARY ARRAY FOR *PFC* #
03038  M00S02996.ssval   +++|        BEGIN
03039  M00S02997.ssval   +++|        ITEM NOITEM     U(00,00,60);  # DUMMY ITEM #
03040  M00S02998.ssval   +++|        END
03041  M00S02999.ssval   +++|
03042  M00S03000.ssval   +++|      ARRAY MSSGE[0:2];;             # ARRAY FOR MESSAGE #
03043  M00S03001.ssval   +++|
03044  M00S03002.ssval   +++|      ARRAY MSSG [0:0] P(2);
03045  M00S03003.ssval   +++|        BEGIN
03046  M00S03004.ssval   +++|        ITEM MSSG1 C(00,00,13);  # ARRAY FOR MESSAGE #
03047  M00S03005.ssval   +++|        END
03048  M00S03006.ssval   +++|
03049  M00S03007.ssval   +++|                                               CONTROL EJECT;
03050  M00S03008.ssval   +++|
03051  M00S03009.ssval   +++|#
03052  M00S03010.ssval   +++|*     SET ADDRESS FOR BASED ARRAY, *PFC*.
03053  M00S03011.ssval   +++|#
03054  M00S03012.ssval   +++|
03055  M00S03013.ssval   +++|      P<PFC> = LOC(PFCCAT);
03056  M00S03014.ssval   +++|
03057  M00S03015.ssval   +++|
03058  M00S03016.ssval   +++|#
03059  M00S03017.ssval   +++|*     ATTACH THE PERMANENT FILE.
03060  M00S03018.ssval   +++|#
03061  M00S03019.ssval   +++|
03062  M00S03020.ssval   +++|      LFN = UTTLFN;
03063  M00S03021.ssval   +++|      BZFILL(LFN,TYPFILL"ZFILL",10);
03064  M00S03022.ssval   +++|      PFNM= EXTR$PFNC[0];
03065  M00S03023.ssval   +++|      BZFILL(PFNM,TYPFILL"ZFILL",10);
03066  M00S03024.ssval   +++|      FAMILY = PAR$FM;
03067  M00S03025.ssval   +++|      BZFILL(FAMILY,TYPFILL"ZFILL",10);
03068  M00S03026.ssval   +++|
03069  M00S03027.ssval   +++|#
03070  M00S03028.ssval   +++|*     SET THE FREE FLAG IF ACTION = 0.
03071  M00S03029.ssval   +++|#
03072  M00S03030.ssval   +++|
03073  M00S03031.ssval   +++|      IF ACTION EQ 0
03074  M00S03032.ssval   +++|      THEN                        # SET *AFFRE* FLAG IN *PFC* #
03075  M00S03033.ssval   +++|        BEGIN
03076  M00S03034.ssval   +++|        SETAF(LFN,STAT,RP,EXTR$UI[0],FAMILY,EXTR$PFID[0],        ##
03077  M00S03035.ssval   +++|          EXTR$ATASA[0],EXTR$CREA[0],AFFRE,MSSGE[0]);
03078  M00S03036.ssval   +++|        RETURN;
03079  M00S03037.ssval   +++|        END
03080  M00S03038.ssval   +++|
03081  M00S03039.ssval   +++|#
03082  M00S03040.ssval   +++|*     MAKE FILE LOCAL BEFORE SETASA.
03083  M00S03041.ssval   +++|#
03084  M00S03042.ssval   +++|
03085  M00S03043.ssval   +++|      IF EXTR$DA[0]
03086  M00S03044.ssval   +++|      THEN                           # DIRECT ACCESS FILE #
03087  M00S03045.ssval   +++|        BEGIN
03088  M00S03046.ssval   +++|        UATTACH(LFN,STAT,RP,PFNM,ACCMD,EXTR$UI[0],FAMILY, ##
03089  M00S03047.ssval   +++|          EXTR$PFID[0],PFCCAT[0],EXTR$CREA[0],MSSGE[0]);
03090  M00S03048.ssval   +++|        END
03091  M00S03049.ssval   +++|
03092  M00S03050.ssval   +++|      ELSE                           # INDIRECT ACCESS FILE #
03093  M00S03051.ssval   +++|        BEGIN
03094  M00S03052.ssval   +++|        UFLAG = -1;
03095  M00S03053.ssval   +++|        SLOWFOR I = 0 WHILE UFLAG NQ 0
03096  M00S03054.ssval   +++|        DO
03097  M00S03055.ssval   +++|          BEGIN                      # WAIT FOR UGET RESPONSE #
03098  M00S03056.ssval   +++|          UFLAG = -1;
03099  M00S03057.ssval   +++|          UGET(LFN,UFLAG,6,PFNM,EXTR$UI[0],FAMILY,EXTR$PFID[0], ##
03100  M00S03058.ssval   +++|            PFCCAT[0],EXTR$CREA[0],MSSGE[0]);
03101  M00S03059.ssval   +++|
03102  M00S03060.ssval   +++|          IF UFLAG EQ PEA            # EXCESS ACTIVITY #
03103  M00S03061.ssval   +++|            OR UFLAG EQ INA          # NO INTERLOCK #
03104  M00S03062.ssval   +++|          THEN
03105  M00S03063.ssval   +++|            BEGIN
03106  M00S03064.ssval   +++|            TEST I;
03107  M00S03065.ssval   +++|            END
03108  M00S03066.ssval   +++|
03109  M00S03067.ssval   +++|          IF UFLAG NQ 0
03110  M00S03068.ssval   +++|          THEN
03111  M00S03069.ssval   +++|            BEGIN
03112  M00S03070.ssval   +++|            MSSG1 = " UGET FAILED.";
03113  M00S03071.ssval   +++|            MESSAGE(MSSG,UDFL1);
03114  M00S03072.ssval   +++|            UFLAG = 0;
03115  M00S03073.ssval   +++|            END
03116  M00S03074.ssval   +++|
03117  M00S03075.ssval   +++|          END                        # WAIT FOR UGET REQUEST #
03118  M00S03076.ssval   +++|
03119  M00S03077.ssval   +++|        END
03120  M00S03078.ssval   +++|
03121  M00S03079.ssval   +++|
03122  M00S03080.ssval   +++|#
03123  M00S03081.ssval   +++|*     IF THERE WAS NO ERROR, AND IF THE CATALOG MAP *ASA*
03124  M00S03082.ssval   +++|*     MATCHES THE EXTRACT FILE *ASA*,
03125  M00S03083.ssval   +++|*     THEN -
03126  M00S03084.ssval   +++|*     RESET THE *ASA* TO ZERO USING THE *SETASA* MACRO.
03127  M00S03085.ssval   +++|#
03128  M00S03086.ssval   +++|
03129  M00S03087.ssval   +++|      IF (STAT EQ 0) AND (PFC$AA[0] EQ EXTR$ASA[0])
03130  M00S03088.ssval   +++|        AND UFLAG EQ 0
03131  M00S03089.ssval   +++|        AND ACTION EQ 1
03132  M00S03090.ssval   +++|      THEN
03133  M00S03091.ssval   +++|        BEGIN
03134  M00S03092.ssval   +++|        SETASA(LFN,STAT,RP,EXTR$UI[0],FAMILY,EXTR$PFID[0]  ##
03135  M00S03093.ssval   +++|          ,ZEROASA,EXTR$CREA[0],MSSGE[0]);
03136  M00S03094.ssval   +++|        END
03137  M00S03095.ssval   +++|
03138  M00S03096.ssval   +++|      RETERN(UTTLFN,RCL);
03139  M00S03097.ssval   +++|      END  # VLFIXP #
03140  M00S03098.ssval   +++|
03141  M00S03099.ssval   +++|    TERM
03142  M00S03100.ssval   +++|PROC VLLPDT(SUBPAR,SMPAR,LPDT);
03143  M00S03101.ssval   +++|# TITLE VLLPDT - GET LAST PURGE DATE AND TIME.                        #
03144  M00S03102.ssval   +++|
03145  M00S03103.ssval   +++|
03146  M00S03104.ssval   +++|      BEGIN  # VLLPDT #
03147  M00S03105.ssval   +++|
03148  M00S03106.ssval   +++|#
03149  M00S03107.ssval   +++|**    VLLPDT - GET LAST PURGE DATE AND TIME.
03150  M00S03108.ssval   +++|*
03151  M00S03109.ssval   +++|*     *VLLPDT* ISSUES A REQUEST TO *EXEC* TO GET THE "LAST
03152  M00S03110.ssval   +++|*     PURGE DATE AND TIME" FOR THE SUBCATALOG FROM THE
03153  M00S03111.ssval   +++|*     PREAMBLE IN THE SFM CATALOG FOR THE SPECIFIED SUBFAMILY.
03154  M00S03112.ssval   +++|*
03155  M00S03113.ssval   +++|*     PROC VLLPDT(SUBPAR,SMPAR,LPDT)
03156  M00S03114.ssval   +++|*
03157  M00S03115.ssval   +++|*     ENTRY     (SUBPAR) - SUBFAMILY.
03158  M00S03116.ssval   +++|*               (SMPAR) - *SM* DESIGNATOR.
03159  M00S03117.ssval   +++|*
03160  M00S03118.ssval   +++|*     EXIT      (LPDT) - PACKED DATE AND TIME RETURNED FROM *EXEC*.
03161  M00S03119.ssval   +++|#
03162  M00S03120.ssval   +++|
03163  M00S03121.ssval   +++|      ITEM SUBPAR     I;             # SUBFAMILY #
03164  M00S03122.ssval   +++|      ITEM SMPAR      I;             # *SM* ID #
03165  M00S03123.ssval   +++|      ITEM LPDT       I;             # LAST PURGE DATE-TIME #
03166  M00S03124.ssval   +++|
03167  M00S03125.ssval   +++|#
03168  M00S03126.ssval   +++|****  PROC VLLPDT - XREF LIST BEGIN.
03169  M00S03127.ssval   +++|#
03170  M00S03128.ssval   +++|
03171  M00S03129.ssval   +++|      XREF
03172  M00S03130.ssval   +++|        BEGIN
03173  M00S03131.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
03174  M00S03132.ssval   +++|        END
03175  M00S03133.ssval   +++|
03176  M00S03134.ssval   +++|#
03177  M00S03135.ssval   +++|****  PROC VLLPDT - XREF LIST END.
03178  M00S03136.ssval   +++|#
03179  M00S03137.ssval   +++|
03180  M00S03138.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
03181  M00S03139.ssval   +++|
03182  M00S03140.ssval   +++|*CALL COMBFAS
03183  M00S03141.ssval   +++|*CALL COMBCPR
03184  M00S03142.ssval   +++|*CALL COMTVLD
03185  M00S03143.ssval   +++|*CALL COMTVLF
03186  M00S03144.ssval   +++|
03187  M00S03145.ssval   +++|      ITEM CURRSB     I = 0;         # CURRENT SUBFAMILY #
03188  M00S03146.ssval   +++|      ITEM CURRSM     I;             # CURRENT *SM* #
03189  M00S03147.ssval   +++|      ITEM CURRLPDT   I;             # CURRENT LPDT #
03190  M00S03148.ssval   +++|                                               CONTROL EJECT;
03191  M00S03149.ssval   +++|
03192  M00S03150.ssval   +++|#
03193  M00S03151.ssval   +++|*     CALL *EXEC* TO GET THE LAST PURGE DATE/TIME FOR THE SUBCATALOG,
03194  M00S03152.ssval   +++|*     IF IT IS NOT CURRENT.
03195  M00S03153.ssval   +++|#
03196  M00S03154.ssval   +++|
03197  M00S03155.ssval   +++|      IF (CURRSB NQ SUBPAR) OR (CURRSM NQ SMPAR)
03198  M00S03156.ssval   +++|      THEN
03199  M00S03157.ssval   +++|        BEGIN
03200  M00S03158.ssval   +++|        CURRSB = SUBPAR;             # SAVE CURRENT SUBFAMILY #
03201  M00S03159.ssval   +++|        CURRSM = SMPAR;            # SAVE CURRENT *SM* #
03202  M00S03160.ssval   +++|        VLREQEX(TYP"TYP3",REQTYP3"GT$PRGDATE");
03203  M00S03161.ssval   +++|        CURRLPDT = CPR$DATE[0];      # SAVE LAST PURGE DATE/TIME #
03204  M00S03162.ssval   +++|        END
03205  M00S03163.ssval   +++|
03206  M00S03164.ssval   +++|#
03207  M00S03165.ssval   +++|*     RETURN THE LAST PURGE DATE/TIME FOR THE SUBCATALOG.
03208  M00S03166.ssval   +++|#
03209  M00S03167.ssval   +++|
03210  M00S03168.ssval   +++|      LPDT = CURRLPDT;
03211  M00S03169.ssval   +++|
03212  M00S03170.ssval   +++|      END  # VLLPDT #
03213  M00S03171.ssval   +++|
03214  M00S03172.ssval   +++|    TERM
03215  M00S03173.ssval   +++|PROC VLMSG(MNUM);
03216  M00S03174.ssval   +++|# TITLE VLMSG - ISSUE INFORMATIONAL MESSAGE.                          #
03217  M00S03175.ssval   +++|
03218  M00S03176.ssval   +++|      BEGIN  # VLMSG #
03219  M00S03177.ssval   +++|
03220  M00S03178.ssval   +++|#
03221  M00S03179.ssval   +++|**    VLMSG - ISSUE INFORMATIONAL MESSAGE.
03222  M00S03180.ssval   +++|*
03223  M00S03181.ssval   +++|*     *VLMSG* ISSUES A SPECIFIED MESSAGE TO THE DAYFILE AND/OR
03224  M00S03182.ssval   +++|*     TO THE REPORT FILE.
03225  M00S03183.ssval   +++|*
03226  M00S03184.ssval   +++|*     PROC VLMSG(MNUM)
03227  M00S03185.ssval   +++|*
03228  M00S03186.ssval   +++|*     ENTRY     (MNUM)         - MESSAGE NUMBER FROM STATUS LIST *VM*.
03229  M00S03187.ssval   +++|*               (ARRAY MPARAM) - CONTAINS PARAMETER(S) TO INSERT IN
03230  M00S03188.ssval   +++|*                                THE MESSAGE TEXT.
03231  M00S03189.ssval   +++|*
03232  M00S03190.ssval   +++|*     EXIT      THE MESSAGE IS ISSUED.
03233  M00S03191.ssval   +++|*
03234  M00S03192.ssval   +++|*     NOTES     OPTIONS ARE SELECTED BY THE FIRST THREE
03235  M00S03193.ssval   +++|*               CHARACTERS OF THE MESSAGE TEXT.  OPTIONS ARE -
03236  M00S03194.ssval   +++|*               . MSG$SYS (B) -  ISSUES TO THE DAYFILE OR TO THE *B*
03237  M00S03195.ssval   +++|*                 DISPLAY LINE 2.
03238  M00S03196.ssval   +++|*               . MSG$RPT (Y) - ISSUES TO THE REPORT FILE.
03239  M00S03197.ssval   +++|*               . NUMBER OF PARAMETERS TO FILL IN THE MESSAGE TEXT
03240  M00S03198.ssval   +++|*                 FROM THE *MPARAM* ARRAY (NUMERIC, NOT A CHARACTER).
03241  M00S03199.ssval   +++|#
03242  M00S03200.ssval   +++|
03243  M00S03201.ssval   +++|      ITEM MNUM       I;
03244  M00S03202.ssval   +++|
03245  M00S03203.ssval   +++|#
03246  M00S03204.ssval   +++|****  PROC VLMSG - XREF LIST BEGIN.
03247  M00S03205.ssval   +++|#
03248  M00S03206.ssval   +++|
03249  M00S03207.ssval   +++|      XREF
03250  M00S03208.ssval   +++|        BEGIN
03251  M00S03209.ssval   +++|        PROC MESSAGE;                # INTERFACE TO *MESSAGE* MACRO #
03252  M00S03210.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
03253  M00S03211.ssval   +++|                                       LINE #
03254  M00S03212.ssval   +++|        PROC VLPFILL;                # FILL PARAMETER IN MESSAGE
03255  M00S03213.ssval   +++|                                       TEXT #
03256  M00S03214.ssval   +++|        END
03257  M00S03215.ssval   +++|
03258  M00S03216.ssval   +++|#
03259  M00S03217.ssval   +++|****  PROC VLMSG - XREF LIST END.
03260  M00S03218.ssval   +++|#
03261  M00S03219.ssval   +++|
03262  M00S03220.ssval   +++|      DEF LISTCON #0#;
03263  M00S03221.ssval   +++|
03264  M00S03222.ssval   +++|*CALL COMBFAS
03265  M00S03223.ssval   +++|*CALL COMTVLD
03266  M00S03224.ssval   +++|*CALL COMTVLF
03267  M00S03225.ssval   +++|
03268  M00S03226.ssval   +++|      ITEM NP         I;             # NUMBER OF PARAMETERS #
03269  M00S03227.ssval   +++|      ITEM N          I;             # TEMPORARY VARIABLE #
03270  M00S03228.ssval   +++|
03271  M00S03229.ssval   +++|#
03272  M00S03230.ssval   +++|*     ARRAY TO FORMAT THE MESSAGE TO ISSUE.
03273  M00S03231.ssval   +++|#
03274  M00S03232.ssval   +++|
03275  M00S03233.ssval   +++|      ARRAY VMTEXT [0:0] S(5);
03276  M00S03234.ssval   +++|        BEGIN
03277  M00S03235.ssval   +++|        ITEM VMT$LINE   C(00,00,40);
03278  M00S03236.ssval   +++|        ITEM VMT$LEAD   C(00,00,03);  # LEADING CODE CHARACTERS #
03279  M00S03237.ssval   +++|        ITEM VMT$TEXT   C(00,18,37);  # MESSAGE TEXT #
03280  M00S03238.ssval   +++|        ITEM VMT$ZERO   U(04,00,60);  # ZERO BYTE #
03281  M00S03239.ssval   +++|        END
03282  M00S03240.ssval   +++|
03283  M00S03241.ssval   +++|#
03284  M00S03242.ssval   +++|*     ANALYZES ACTIONS TO DO BASED ON THE MESSAGE.
03285  M00S03243.ssval   +++|#
03286  M00S03244.ssval   +++|
03287  M00S03245.ssval   +++|      ARRAY MSGCODES [0:0] S(1);     # MESSAGE CODES #
03288  M00S03246.ssval   +++|        BEGIN
03289  M00S03247.ssval   +++|        ITEM MSG$CODES  C(00,00,03);
03290  M00S03248.ssval   +++|        ITEM MSG$SYS    C(00,00,01);  # ISSUE TO SYSTEM MACRO #
03291  M00S03249.ssval   +++|        ITEM MSG$RPT    C(00,06,01);  # ISSUE TO REPORT FILE #
03292  M00S03250.ssval   +++|        ITEM MSG$PARN   U(00,12,06);  # NUMBER OF PARAMETERS TO INSERT
03293  M00S03251.ssval   +++|                                      #
03294  M00S03252.ssval   +++|        END
03295  M00S03253.ssval   +++|
03296  M00S03254.ssval   +++|                                               CONTROL EJECT;
03297  M00S03255.ssval   +++|
03298  M00S03256.ssval   +++|#
03299  M00S03257.ssval   +++|*     GET CODES FROM MESSAGE TEXT.
03300  M00S03258.ssval   +++|#
03301  M00S03259.ssval   +++|
03302  M00S03260.ssval   +++|      VMT$LINE[0] = VMESS$LINE[MNUM];  # GET MESSAGE TEXT REQUESTED #
03303  M00S03261.ssval   +++|      MSG$CODES[0] = VMT$LEAD[0];    # EXTRACT CODES FROM TEXT #
03304  M00S03262.ssval   +++|      VMT$LEAD[0] = "   ";           # CLEAR CODES FIELD IN TEXT #
03305  M00S03263.ssval   +++|
03306  M00S03264.ssval   +++|#
03307  M00S03265.ssval   +++|*     PUT PARAMETER(S) INTO MESSAGE IF THE NUMBER OF PARAMETERS IS
03308  M00S03266.ssval   +++|*     SPECIFIED IN CODES.
03309  M00S03267.ssval   +++|#
03310  M00S03268.ssval   +++|
03311  M00S03269.ssval   +++|      IF MSG$PARN[0] NQ " "
03312  M00S03270.ssval   +++|      THEN
03313  M00S03271.ssval   +++|        BEGIN
03314  M00S03272.ssval   +++|        NP = MSG$PARN[0] - "0";      # NUMBER CONVERTED TO BINARY #
03315  M00S03273.ssval   +++|        SLOWFOR N = 1 STEP 1 UNTIL NP
03316  M00S03274.ssval   +++|        DO
03317  M00S03275.ssval   +++|          BEGIN
03318  M00S03276.ssval   +++|          VLPFILL(VMTEXT,MPARAM[N]);  # MOVE PARAMETER INTO TEXT #
03319  M00S03277.ssval   +++|          END
03320  M00S03278.ssval   +++|
03321  M00S03279.ssval   +++|        END
03322  M00S03280.ssval   +++|
03323  M00S03281.ssval   +++|#
03324  M00S03282.ssval   +++|*     ISSUE MESSAGE REQUEST TO THE SYSTEM IF SPECIFIED.
03325  M00S03283.ssval   +++|#
03326  M00S03284.ssval   +++|
03327  M00S03285.ssval   +++|      IF MSG$SYS[0] NQ "N"
03328  M00S03286.ssval   +++|      THEN
03329  M00S03287.ssval   +++|        BEGIN  # ISSUE TO SYSTEM #
03330  M00S03288.ssval   +++|        IF MSG$SYS[0] EQ "B"
03331  M00S03289.ssval   +++|        THEN
03332  M00S03290.ssval   +++|          BEGIN
03333  M00S03291.ssval   +++|          MESSAGE(VMT$TEXT[0],LINE2);  # B ONLY #
03334  M00S03292.ssval   +++|          END
03335  M00S03293.ssval   +++|
03336  M00S03294.ssval   +++|        ELSE
03337  M00S03295.ssval   +++|          BEGIN
03338  M00S03296.ssval   +++|          IF MSG$SYS[0] EQ "S"
03339  M00S03297.ssval   +++|          THEN
03340  M00S03298.ssval   +++|            BEGIN
03341  M00S03299.ssval   +++|            MESSAGE(VMT$TEXT[0],SYSUDF1);
03342  M00S03300.ssval   +++|            END
03343  M00S03301.ssval   +++|
03344  M00S03302.ssval   +++|          ELSE
03345  M00S03303.ssval   +++|            BEGIN
03346  M00S03304.ssval   +++|            MESSAGE(VMT$TEXT[0],UDFL1);
03347  M00S03305.ssval   +++|            END
03348  M00S03306.ssval   +++|
03349  M00S03307.ssval   +++|          END
03350  M00S03308.ssval   +++|
03351  M00S03309.ssval   +++|        END  # ISSUE TO SYSTEM #
03352  M00S03310.ssval   +++|
03353  M00S03311.ssval   +++|#
03354  M00S03312.ssval   +++|*     ISSUE MESSAGE TO THE REPORT FILE IF REQUESTED.
03355  M00S03313.ssval   +++|#
03356  M00S03314.ssval   +++|
03357  M00S03315.ssval   +++|      IF MSG$RPT[0] NQ "N"
03358  M00S03316.ssval   +++|      THEN
03359  M00S03317.ssval   +++|        BEGIN
03360  M00S03318.ssval   +++|        RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
03361  M00S03319.ssval   +++|        RPLINE(RPTFADR,VMT$TEXT[0],3,37,EOPL);  # ISSUE TO REPORT #
03362  M00S03320.ssval   +++|        END
03363  M00S03321.ssval   +++|
03364  M00S03322.ssval   +++|      END  # VLMSG #
03365  M00S03323.ssval   +++|
03366  M00S03324.ssval   +++|    TERM
03367  M00S03325.ssval   +++|PROC VLNCS;
03368  M00S03326.ssval   +++|# TITLE VLNCS - NORMAL CHAIN SCAN.                                    #
03369  M00S03327.ssval   +++|
03370  M00S03328.ssval   +++|
03371  M00S03329.ssval   +++|      BEGIN  # VLNCS #
03372  M00S03330.ssval   +++|
03373  M00S03331.ssval   +++|#
03374  M00S03332.ssval   +++|**    VLNCS - NORMAL CHAIN SCAN.
03375  M00S03333.ssval   +++|*
03376  M00S03334.ssval   +++|*     *VLNCS* SCANS ALL ENTRIES IN THE *VT* TABLE LOCATING
03377  M00S03335.ssval   +++|*     AND MARKING NORMAL CHAINS.  THE CHAIN IS SEARCHED
03378  M00S03336.ssval   +++|*     BEGINNING WITH THE HEAD OF CHAIN ENTRY AND PROCEEDING
03379  M00S03337.ssval   +++|*     THROUGH THE LINKAGE UNTIL *EOC* OR AN ERROR IS DETECTED.
03380  M00S03338.ssval   +++|*     ALL ENTRIES ON A CHAIN ARE MARKED BY SETTING THE POINTER
03381  M00S03339.ssval   +++|*     FIELD TO THE INDEX OF THE HEAD OF CHAIN (*HOC*) ENTRY.
03382  M00S03340.ssval   +++|*     FLAGS ARE SET IN THE *VT* ENTRIES FOR ERRORS DETECTED.
03383  M00S03341.ssval   +++|*
03384  M00S03342.ssval   +++|*     PROC VLNCS
03385  M00S03343.ssval   +++|*
03386  M00S03344.ssval   +++|*     ENTRY     (PAR$ST)      - SCATTER FILE PARAMETER.
03387  M00S03345.ssval   +++|*               (VTFIRST)     - INDEX OF FIRST ENTRY IN *VT*.
03388  M00S03346.ssval   +++|*               (VTLAST)      - INDEX OF LAST ENTRY IN *VT*.
03389  M00S03347.ssval   +++|*               (ARRAY VTTAB) - VALIDATION TABLE.
03390  M00S03348.ssval   +++|*
03391  M00S03349.ssval   +++|*     EXIT      THE FOLLOWING FIELDS IN THE *VT* ENTRY MAY BE UPDATED.
03392  M00S03350.ssval   +++|*               (VTEN$POINT) - INDEX OF THE *HOC* ENTRY.
03393  M00S03351.ssval   +++|*               (VTEN$ILL)   - ILL-FORMED CHAIN.
03394  M00S03352.ssval   +++|*               (VTEN$INTC)  - INTERSECTING CHAIN.
03395  M00S03353.ssval   +++|*               (VTEN$INTS)  - INTERSECTING AU.
03396  M00S03354.ssval   +++|*               (VTEN$SCAT)  - SCATTERED FILE.
03397  M00S03355.ssval   +++|*
03398  M00S03356.ssval   +++|*               INTERSECTING CHAIN DETAIL LINES ARE ISSUED TO THE
03399  M00S03357.ssval   +++|*               REPORT FILE IF INTERSECTIONS ARE DETECTED.
03400  M00S03358.ssval   +++|*
03401  M00S03359.ssval   +++|*     NOTES     CHAINS ARE FOLLOWED UNTIL -
03402  M00S03360.ssval   +++|*               . AN END OF CHAIN ENTRY IS DETECTED.
03403  M00S03361.ssval   +++|*               . AN ILL-FORMED CHAIN IS DETECTED.
03404  M00S03362.ssval   +++|*               . AN INTERSECTING CHAIN IS DETECTED.
03405  M00S03363.ssval   +++|*
03406  M00S03364.ssval   +++|*               ILL-FORMED CHAINS ARE THOSE WHICH HAVE A MEMBER
03407  M00S03365.ssval   +++|*               THAT LINKS TO AN ENTRY ON THIS CHAIN (LOOPING)
03408  M00S03366.ssval   +++|*               OR THAT LINKS TO AN UNALLOCATED ENTRY OR HAS A
03409  M00S03367.ssval   +++|*               LINK THAT IS NOT ZERO WHEN THE *EOC* FLAG IS SET.
03410  M00S03368.ssval   +++|*
03411  M00S03369.ssval   +++|*               INTERSECTING CHAINS ARE THOSE THAT HAVE A MEMBER
03412  M00S03370.ssval   +++|*               THAT LINKS TO AN ENTRY ON A DIFFERENT CHAIN.
03413  M00S03371.ssval   +++|*
03414  M00S03372.ssval   +++|*               A SCATTERED FILE CHECK IS PERFORMED.  THE SCATTERED
03415  M00S03373.ssval   +++|*               FLAG IS SET IF THE NUMBER OF CARTRIDGES FOR THE
03416  M00S03374.ssval   +++|*               CHAIN IS GREATER THAN THE *ST* PARAMETER.
03417  M00S03375.ssval   +++|*
03418  M00S03376.ssval   +++|#
03419  M00S03377.ssval   +++|
03420  M00S03378.ssval   +++|#
03421  M00S03379.ssval   +++|****  PROC VLNCS - XREF LIST BEGIN.
03422  M00S03380.ssval   +++|#
03423  M00S03381.ssval   +++|
03424  M00S03382.ssval   +++|      XREF
03425  M00S03383.ssval   +++|        BEGIN
03426  M00S03384.ssval   +++|        PROC VLBICT;                 # INTERSECTING CHAIN REPORT #
03427  M00S03385.ssval   +++|        END
03428  M00S03386.ssval   +++|
03429  M00S03387.ssval   +++|#
03430  M00S03388.ssval   +++|****  PROC VLNCS - XREF LIST END.
03431  M00S03389.ssval   +++|#
03432  M00S03390.ssval   +++|
03433  M00S03391.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
03434  M00S03392.ssval   +++|
03435  M00S03393.ssval   +++|*CALL COMBFAS
03436  M00S03394.ssval   +++|*CALL COMTVLD
03437  M00S03395.ssval   +++|*CALL COMTVLV
03438  M00S03396.ssval   +++|
03439  M00S03397.ssval   +++|
03440  M00S03398.ssval   +++|      STATUS CHAIN                   # CHAIN STATUS #
03441  M00S03399.ssval   +++|        OK,                          # GOOD CHAIN #
03442  M00S03400.ssval   +++|        ILL,                         # ILL-FORMED CHAIN #
03443  M00S03401.ssval   +++|        INTC;                        # INTERSECTING CHAIN #
03444  M00S03402.ssval   +++|
03445  M00S03403.ssval   +++|      ITEM ENDCHAIN   B;             # END OF CHAIN FLAG #
03446  M00S03404.ssval   +++|      ITEM FREESTAT   B;             # FREE FLAG STATUS #
03447  M00S03405.ssval   +++|      ITEM HOCSTAT    S : CHAIN;     # HEAD-OF-CHAIN STATUS #
03448  M00S03406.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
03449  M00S03407.ssval   +++|      ITEM AUCNT      I;             # COUNT OF AU-S IN CHAIN #
03450  M00S03408.ssval   +++|      ITEM CARTCNT    I;             # COUNT OF CARTRIDGES IN CHAIN #
03451  M00S03409.ssval   +++|
03452  M00S03410.ssval   +++|                                               CONTROL EJECT;
03453  M00S03411.ssval   +++|
03454  M00S03412.ssval   +++|#
03455  M00S03413.ssval   +++|*     SCAN *VT* FOR *HOC* ENTRIES.
03456  M00S03414.ssval   +++|#
03457  M00S03415.ssval   +++|
03458  M00S03416.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
03459  M00S03417.ssval   +++|      DO
03460  M00S03418.ssval   +++|        BEGIN  # *VT* SCAN #
03461  M00S03419.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET ENTRY #
03462  M00S03420.ssval   +++|
03463  M00S03421.ssval   +++|        IF NOT VTEN$HOC[0]           # SKIP IF NOT HEAD OF CHAIN #
03464  M00S03422.ssval   +++|        THEN
03465  M00S03423.ssval   +++|          BEGIN
03466  M00S03424.ssval   +++|          TEST I;
03467  M00S03425.ssval   +++|          END
03468  M00S03426.ssval   +++|
03469  M00S03427.ssval   +++|
03470  M00S03428.ssval   +++|        VTPTR = I;                   # SET TO HEAD OF CHAIN #
03471  M00S03429.ssval   +++|
03472  M00S03430.ssval   +++|
03473  M00S03431.ssval   +++|#
03474  M00S03432.ssval   +++|*     INITIALIZE.
03475  M00S03433.ssval   +++|#
03476  M00S03434.ssval   +++|
03477  M00S03435.ssval   +++|        AUCNT = 0;
03478  M00S03436.ssval   +++|        CARTCNT = 1;
03479  M00S03437.ssval   +++|        ENDCHAIN = FALSE;
03480  M00S03438.ssval   +++|        FREESTAT = FALSE;
03481  M00S03439.ssval   +++|        HOCSTAT = S"OK";             # ASSUME GOOD #
03482  M00S03440.ssval   +++|
03483  M00S03441.ssval   +++|#
03484  M00S03442.ssval   +++|*     PROCESS EACH ENTRY IN THE CHAIN STARTING WITH HEAD OF CHAIN.
03485  M00S03443.ssval   +++|*     NOTE - ENTRIES ARE PLACED ON A CHAIN BY SETTING THE VTEN$POINT
03486  M00S03444.ssval   +++|*            FIELD EQUAL TO THE INDEX FOR THE HEAD OF CHAIN.
03487  M00S03445.ssval   +++|*            I = HEAD OF CHAIN INDEX.
03488  M00S03446.ssval   +++|#
03489  M00S03447.ssval   +++|
03490  M00S03448.ssval   +++|        REPEAT WHILE NOT ENDCHAIN
03491  M00S03449.ssval   +++|        DO                           # NORMAL CHAIN PROCESS #
03492  M00S03450.ssval   +++|          BEGIN  # NOT END OF CHAIN #
03493  M00S03451.ssval   +++|          IF VTEN$POINT[0] EQ 0
03494  M00S03452.ssval   +++|          THEN
03495  M00S03453.ssval   +++|
03496  M00S03454.ssval   +++|#
03497  M00S03455.ssval   +++|*     PUT ENTRY ON CHAIN.
03498  M00S03456.ssval   +++|#
03499  M00S03457.ssval   +++|
03500  M00S03458.ssval   +++|            BEGIN  # ADD TO CHAIN #
03501  M00S03459.ssval   +++|            VTEN$POINT[0] = I;       # MARK ENTRY ON CHAIN #
03502  M00S03460.ssval   +++|            IF NOT VTEN$ALOC[0]
03503  M00S03461.ssval   +++|            THEN
03504  M00S03462.ssval   +++|              BEGIN
03505  M00S03463.ssval   +++|              VTEN$SOF[0] = TRUE;
03506  M00S03464.ssval   +++|              END
03507  M00S03465.ssval   +++|
03508  M00S03466.ssval   +++|            IF NOT VTEN$ALOC[0] OR VTEN$EOC[0] AND VTEN$LINK[0] NQ 0
03509  M00S03467.ssval   +++|              THEN
03510  M00S03468.ssval   +++|              BEGIN
03511  M00S03469.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03512  M00S03470.ssval   +++|              END
03513  M00S03471.ssval   +++|
03514  M00S03472.ssval   +++|            AUCNT = AUCNT + 1;
03515  M00S03473.ssval   +++|            IF VTEN$OCL[0] NQ 0
03516  M00S03474.ssval   +++|            THEN                     # LINK IS OFF CARTRIDGE #
03517  M00S03475.ssval   +++|              BEGIN
03518  M00S03476.ssval   +++|              CARTCNT = CARTCNT + 1;
03519  M00S03477.ssval   +++|              END
03520  M00S03478.ssval   +++|
03521  M00S03479.ssval   +++|            IF VTEN$FCF[0]
03522  M00S03480.ssval   +++|            THEN                     # FREE CARTRIDGE FLAG SET #
03523  M00S03481.ssval   +++|              BEGIN
03524  M00S03482.ssval   +++|              FREESTAT = TRUE;
03525  M00S03483.ssval   +++|              END
03526  M00S03484.ssval   +++|
03527  M00S03485.ssval   +++|            END  # ADD TO CHAIN #
03528  M00S03486.ssval   +++|
03529  M00S03487.ssval   +++|          ELSE                       # VTEN$POINT[0] NOT EQUAL TO 0 #
03530  M00S03488.ssval   +++|
03531  M00S03489.ssval   +++|#
03532  M00S03490.ssval   +++|*     ENTRY ALREADY ASSIGNED TO A CHAIN.
03533  M00S03491.ssval   +++|#
03534  M00S03492.ssval   +++|
03535  M00S03493.ssval   +++|            BEGIN  # ENTRY ON A CHAIN #
03536  M00S03494.ssval   +++|            VTEN$INTS[0] = TRUE;
03537  M00S03495.ssval   +++|            IF VTEN$POINT[0] EQ I
03538  M00S03496.ssval   +++|            THEN
03539  M00S03497.ssval   +++|              BEGIN
03540  M00S03498.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03541  M00S03499.ssval   +++|              VTEN$LOOP[0] = TRUE;
03542  M00S03500.ssval   +++|              END
03543  M00S03501.ssval   +++|
03544  M00S03502.ssval   +++|            ELSE
03545  M00S03503.ssval   +++|              BEGIN
03546  M00S03504.ssval   +++|              HOCSTAT = S"INTC";     # INTERSECTING CHAIN #
03547  M00S03505.ssval   +++|              VLBICT(I,VTEN$POINT[0]);  # REPORT INTERSECTIONS #
03548  M00S03506.ssval   +++|              END
03549  M00S03507.ssval   +++|
03550  M00S03508.ssval   +++|            END  # ENTRY ON A CHAIN #
03551  M00S03509.ssval   +++|
03552  M00S03510.ssval   +++|#
03553  M00S03511.ssval   +++|*     UPDATE AU ENTRY.
03554  M00S03512.ssval   +++|#
03555  M00S03513.ssval   +++|
03556  M00S03514.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # STORE ENTRY TO *VT* #
03557  M00S03515.ssval   +++|
03558  M00S03516.ssval   +++|#
03559  M00S03517.ssval   +++|*     DETERMINE IF END-OF-CHAIN.  THE END IS WHEN THE END OF CHAIN
03560  M00S03518.ssval   +++|*     FLAG IS SET OR A CHAIN WITH LINKAGE PROBLEMS HAS BEEN DETECTED.
03561  M00S03519.ssval   +++|#
03562  M00S03520.ssval   +++|
03563  M00S03521.ssval   +++|          ENDCHAIN = VTEN$EOC[0] OR HOCSTAT NQ 0;
03564  M00S03522.ssval   +++|
03565  M00S03523.ssval   +++|#
03566  M00S03524.ssval   +++|*     GET LINK TO NEXT IF NOT AT END.
03567  M00S03525.ssval   +++|#
03568  M00S03526.ssval   +++|
03569  M00S03527.ssval   +++|          IF NOT ENDCHAIN
03570  M00S03528.ssval   +++|          THEN
03571  M00S03529.ssval   +++|            BEGIN  # LINK TO NEXT #
03572  M00S03530.ssval   +++|            VTPTR = VTEN$LINK[0];
03573  M00S03531.ssval   +++|            IF (VTPTR LS VTFIRST) OR (VTPTR GR VTLAST)
03574  M00S03532.ssval   +++|            THEN                     # BAD LINK #
03575  M00S03533.ssval   +++|              BEGIN
03576  M00S03534.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
03577  M00S03535.ssval   +++|              ENDCHAIN = TRUE;
03578  M00S03536.ssval   +++|              END
03579  M00S03537.ssval   +++|
03580  M00S03538.ssval   +++|            END  # LINK TO NEXT #
03581  M00S03539.ssval   +++|
03582  M00S03540.ssval   +++|
03583  M00S03541.ssval   +++|#
03584  M00S03542.ssval   +++|*     GET NEXT AU IN CHAIN.
03585  M00S03543.ssval   +++|#
03586  M00S03544.ssval   +++|
03587  M00S03545.ssval   +++|          IF NOT ENDCHAIN
03588  M00S03546.ssval   +++|          THEN
03589  M00S03547.ssval   +++|            BEGIN
03590  M00S03548.ssval   +++|            VTEN$WORD[0] = VT$ITEM[VTPTR];  # NEXT AU #
03591  M00S03549.ssval   +++|            END
03592  M00S03550.ssval   +++|
03593  M00S03551.ssval   +++|          END  # NOT END OF CHAIN #
03594  M00S03552.ssval   +++|
03595  M00S03553.ssval   +++|#
03596  M00S03554.ssval   +++|*     IF INTERSECTING CHAINS, UPDATE OTHER *HOC* ENTRY.
03597  M00S03555.ssval   +++|#
03598  M00S03556.ssval   +++|
03599  M00S03557.ssval   +++|        IF HOCSTAT EQ S"INTC"
03600  M00S03558.ssval   +++|        THEN
03601  M00S03559.ssval   +++|          BEGIN
03602  M00S03560.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
03603  M00S03561.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING #
03604  M00S03562.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # STORE *HOC* ENTRY #
03605  M00S03563.ssval   +++|          END
03606  M00S03564.ssval   +++|
03607  M00S03565.ssval   +++|#
03608  M00S03566.ssval   +++|*     UPDATE THE *HOC* ENTRY.
03609  M00S03567.ssval   +++|#
03610  M00S03568.ssval   +++|
03611  M00S03569.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *HOC* ENTRY #
03612  M00S03570.ssval   +++|        IF HOCSTAT EQ S"ILL"
03613  M00S03571.ssval   +++|        THEN
03614  M00S03572.ssval   +++|          BEGIN
03615  M00S03573.ssval   +++|          VTEN$ILL[0] = TRUE;        # SET ILL-FORMED BIT #
03616  M00S03574.ssval   +++|          END
03617  M00S03575.ssval   +++|
03618  M00S03576.ssval   +++|        IF HOCSTAT EQ S"INTC"
03619  M00S03577.ssval   +++|        THEN
03620  M00S03578.ssval   +++|          BEGIN
03621  M00S03579.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING BIT #
03622  M00S03580.ssval   +++|          END
03623  M00S03581.ssval   +++|
03624  M00S03582.ssval   +++|#
03625  M00S03583.ssval   +++|*     DO SCATTERED FILE CHECK.
03626  M00S03584.ssval   +++|#
03627  M00S03585.ssval   +++|
03628  M00S03586.ssval   +++|        IF CARTCNT GR PAR$ST
03629  M00S03587.ssval   +++|        THEN
03630  M00S03588.ssval   +++|          BEGIN
03631  M00S03589.ssval   +++|          VTEN$SCAT[0] = TRUE;       # SET SCATTERED BIT #
03632  M00S03590.ssval   +++|          END
03633  M00S03591.ssval   +++|
03634  M00S03592.ssval   +++|        IF FREESTAT
03635  M00S03593.ssval   +++|        THEN                         # FREE CARTRIDGE FLAG WAS SET #
03636  M00S03594.ssval   +++|          BEGIN
03637  M00S03595.ssval   +++|          VTEN$FCF[0] = TRUE;
03638  M00S03596.ssval   +++|          END
03639  M00S03597.ssval   +++|
03640  M00S03598.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *HOC* ENTRY #
03641  M00S03599.ssval   +++|
03642  M00S03600.ssval   +++|        END  # *VT* SCAN #
03643  M00S03601.ssval   +++|
03644  M00S03602.ssval   +++|      END  # VLNCS #
03645  M00S03603.ssval   +++|
03646  M00S03604.ssval   +++|    TERM
03647  M00S03605.ssval   +++|FUNC VLNTC((FLD),(CONVTYP),(SIZE)) C(10);
03648  M00S03606.ssval   +++|# TITLE VLNTC - NUMERIC TO CHARACTER CONVERSION.                      #
03649  M00S03607.ssval   +++|
03650  M00S03608.ssval   +++|      BEGIN  # VLNTC #
03651  M00S03609.ssval   +++|
03652  M00S03610.ssval   +++|#
03653  M00S03611.ssval   +++|**    VLNTC - NUMERIC TO CHARACTER CONVERSION.
03654  M00S03612.ssval   +++|*
03655  M00S03613.ssval   +++|*     *VLNTC* CONVERTS THE DECIMAL/OCTAL NUMERIC TYPE DATA FIELD
03656  M00S03614.ssval   +++|*     INTO A LEFT-JUSTIFIED CHARACTER TYPE FIELD.
03657  M00S03615.ssval   +++|*
03658  M00S03616.ssval   +++|*     THE DATA IN *FLD* IS CONVERTED AS SPECIFIED IN *CONVTYP*.
03659  M00S03617.ssval   +++|*     THEN THE NUMBER (*SIZE*) OF RIGHT-JUSTIFIED CONVERTED
03660  M00S03618.ssval   +++|*     CHARACTERS IS LEFT-JUSTIFIED INTO THE RESULT FIELD *VLNTC*.
03661  M00S03619.ssval   +++|*
03662  M00S03620.ssval   +++|*     FUNC VLNTC(FLD,CONVTYP,SIZE)
03663  M00S03621.ssval   +++|*
03664  M00S03622.ssval   +++|*     ENTRY     (FLD)     - DATA FIELD TO CONVERT (RIGHT JUSTIFIED).
03665  M00S03623.ssval   +++|*               (CONVTYP) - "XCDD" FOR DECIMAL DISPLAY CONVERSION.
03666  M00S03624.ssval   +++|*                           "XCOD" FOR OCTAL DISPLAY CONVERSION.
03667  M00S03625.ssval   +++|*                           ANYTHING ELSE IMPLIES NO CONVERSION.
03668  M00S03626.ssval   +++|*               (SIZE)    - NUMBER OF CHARACTERS IN CONVERTED RESULT
03669  M00S03627.ssval   +++|*                           TO RETURN.
03670  M00S03628.ssval   +++|*
03671  M00S03629.ssval   +++|*     EXIT      (VLNTC) - CONVERTED DATA, LEFT JUSTIFIED, BLANK
03672  M00S03630.ssval   +++|*                         FILLED.
03673  M00S03631.ssval   +++|*
03674  M00S03632.ssval   +++|#
03675  M00S03633.ssval   +++|
03676  M00S03634.ssval   +++|      ITEM FLD        I;             # FIELD TO CONVERT #
03677  M00S03635.ssval   +++|      ITEM CONVTYP    C(10);         # TYPE OF CONVERSION #
03678  M00S03636.ssval   +++|      ITEM SIZE       I;             # SIZE OF RESULT #
03679  M00S03637.ssval   +++|
03680  M00S03638.ssval   +++|#
03681  M00S03639.ssval   +++|****  FUNC VLNTC - XREF LIST BEGIN.
03682  M00S03640.ssval   +++|#
03683  M00S03641.ssval   +++|
03684  M00S03642.ssval   +++|      XREF
03685  M00S03643.ssval   +++|        BEGIN
03686  M00S03644.ssval   +++|        PROC VLBFILL;                # BLANK FILL #
03687  M00S03645.ssval   +++|        FUNC XCDD;                   # CONVERT INTEGER TO DECIMAL
03688  M00S03646.ssval   +++|                                       DISPLAY #
03689  M00S03647.ssval   +++|        FUNC XCOD;                   # CONVERT INTEGER TO OCTAL
03690  M00S03648.ssval   +++|                                       DISPLAY #
03691  M00S03649.ssval   +++|        END
03692  M00S03650.ssval   +++|
03693  M00S03651.ssval   +++|#
03694  M00S03652.ssval   +++|****  FUNC VLNTC - XREF LIST END.
03695  M00S03653.ssval   +++|#
03696  M00S03654.ssval   +++|
03697  M00S03655.ssval   +++|      ITEM NUMBER     I;             # TEMPORARY VARIABLE #
03698  M00S03656.ssval   +++|
03699  M00S03657.ssval   +++|                                               CONTROL EJECT;
03700  M00S03658.ssval   +++|
03701  M00S03659.ssval   +++|
03702  M00S03660.ssval   +++|      NUMBER = FLD;
03703  M00S03661.ssval   +++|
03704  M00S03662.ssval   +++|#
03705  M00S03663.ssval   +++|*     CONVERT FIELD AS SPECIFIED.
03706  M00S03664.ssval   +++|#
03707  M00S03665.ssval   +++|
03708  M00S03666.ssval   +++|      IF CONVTYP EQ "XCDD"           # INTEGER TO DECIMAL #
03709  M00S03667.ssval   +++|      THEN
03710  M00S03668.ssval   +++|        BEGIN
03711  M00S03669.ssval   +++|        NUMBER = XCDD(FLD);
03712  M00S03670.ssval   +++|        END
03713  M00S03671.ssval   +++|
03714  M00S03672.ssval   +++|      IF CONVTYP EQ "XCOD"           # INTEGER TO OCTAL #
03715  M00S03673.ssval   +++|      THEN
03716  M00S03674.ssval   +++|        BEGIN
03717  M00S03675.ssval   +++|        NUMBER = XCOD(FLD);
03718  M00S03676.ssval   +++|        END
03719  M00S03677.ssval   +++|
03720  M00S03678.ssval   +++|#
03721  M00S03679.ssval   +++|*     BLANK FILL.
03722  M00S03680.ssval   +++|#
03723  M00S03681.ssval   +++|
03724  M00S03682.ssval   +++|      VLBFILL(NUMBER,1);
03725  M00S03683.ssval   +++|
03726  M00S03684.ssval   +++|#
03727  M00S03685.ssval   +++|*     RETURN THE FIELD WITH THE NUMBER OF CHARACTERS SPECIFIED,
03728  M00S03686.ssval   +++|*     LEFT JUSTIFIED, BLANK FILLED.
03729  M00S03687.ssval   +++|#
03730  M00S03688.ssval   +++|
03731  M00S03689.ssval   +++|      VLNTC = C<10-SIZE,SIZE>NUMBER;
03732  M00S03690.ssval   +++|
03733  M00S03691.ssval   +++|      END  # VLNTC #
03734  M00S03692.ssval   +++|
03735  M00S03693.ssval   +++|    TERM
03736  M00S03694.ssval   +++|PROC VLPFC;
03737  M00S03695.ssval   +++|
03738  M00S03696.ssval   +++|# TITLE VLPFC - READ PFC.                                             #
03739  M00S03697.ssval   +++|
03740  M00S03698.ssval   +++|      BEGIN  # VLPFC #
03741  M00S03699.ssval   +++|
03742  M00S03700.ssval   +++|#
03743  M00S03701.ssval   +++|**    VLPFC - READ THE *PFC*.
03744  M00S03702.ssval   +++|*
03745  M00S03703.ssval   +++|*     *VLPFC* BUILDS THE *PFC* EXTRACT FILES FROM THE *PFC*
03746  M00S03704.ssval   +++|*     CATALOG ENTRIES FOR THE SELECTED SUBFAMILIES AND
03747  M00S03705.ssval   +++|*     SELECTED SM(S).
03748  M00S03706.ssval   +++|*
03749  M00S03707.ssval   +++|*     PROC VLPFC
03750  M00S03708.ssval   +++|*
03751  M00S03709.ssval   +++|*     ENTRY     (DEVMASK) - SELECTED SUBFAMILY(S) DEVICE MASK.
03752  M00S03710.ssval   +++|*               (PAR$CS)  - SELECTED *SM-S*.
03753  M00S03711.ssval   +++|*               (PAR$FM)  - FAMILY.
03754  M00S03712.ssval   +++|*               (PAR$SB)  - SELECTED SUBFAMILIES.
03755  M00S03713.ssval   +++|*               (RPTFADR) - REPORT FILE *FET* ADDRESS.
03756  M00S03714.ssval   +++|*
03757  M00S03715.ssval   +++|*     EXIT      THE *PFC* EXTRACT FILES ARE WRITTEN.
03758  M00S03716.ssval   +++|*
03759  M00S03717.ssval   +++|*               FOR ERRORS DETECTED -
03760  M00S03718.ssval   +++|*                1) (TOTALERRS) - TOTAL VALIDATION ERRORS INCREMENTED.
03761  M00S03719.ssval   +++|*                2)  ERROR DETAIL LINES WRITTEN TO THE REPORT FILE.
03762  M00S03720.ssval   +++|*
03763  M00S03721.ssval   +++|*     MESSAGES  * ERROR READING *PFC* *
03764  M00S03722.ssval   +++|*
03765  M00S03723.ssval   +++|*     NOTES     VALIDATION ERRORS DETECTED ARE -
03766  M00S03724.ssval   +++|*               . INVALID *SM* IN *ASA*.
03767  M00S03725.ssval   +++|*
03768  M00S03726.ssval   +++|#
03769  M00S03727.ssval   +++|
03770  M00S03728.ssval   +++|#
03771  M00S03729.ssval   +++|****  PROC VLPFC - XREF LIST BEGIN.
03772  M00S03730.ssval   +++|#
03773  M00S03731.ssval   +++|
03774  M00S03732.ssval   +++|      XREF
03775  M00S03733.ssval   +++|        BEGIN
03776  M00S03734.ssval   +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
03777  M00S03735.ssval   +++|        PROC RDPFC;                  # READ PERMANENT FILE CATALOG #
03778  M00S03736.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
03779  M00S03737.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
03780  M00S03738.ssval   +++|                                       LINE #
03781  M00S03739.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
03782  M00S03740.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
03783  M00S03741.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
03784  M00S03742.ssval   +++|                                       CONVERSION #
03785  M00S03743.ssval   +++|        PROC WRITEF;                 # INTERFACE TO *WRITEF* MACRO #
03786  M00S03744.ssval   +++|        PROC WRITEW;                 # INTERFACE TO *WRITEW* MACRO #
03787  M00S03745.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
03788  M00S03746.ssval   +++|        END
03789  M00S03747.ssval   +++|
03790  M00S03748.ssval   +++|#
03791  M00S03749.ssval   +++|****  PROC VLPFC - XREF LIST END.
03792  M00S03750.ssval   +++|#
03793  M00S03751.ssval   +++|
03794  M00S03752.ssval   +++|      DEF LISTCON #0#;               # TURN COMMON DECK LISTING OFF #
03795  M00S03753.ssval   +++|*CALL COMBFAS
03796  M00S03754.ssval   +++|*CALL COMSPFM
03797  M00S03755.ssval   +++|*CALL COMTCTW
03798  M00S03756.ssval   +++|*CALL COMTVLD
03799  M00S03757.ssval   +++|*CALL COMTVLF
03800  M00S03758.ssval   +++|*CALL COMTVLX
03801  M00S03759.ssval   +++|
03802  M00S03760.ssval   +++|      ITEM VPEO       I;             # *PFC* ENTRY ORDINAL #
03803  M00S03761.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
03804  M00S03762.ssval   +++|      ITEM IWC        I;             # INCREMENTED WORD COUNT #
03805  M00S03763.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
03806  M00S03764.ssval   +++|      ITEM WDCNT      I;             # WORD COUNT #
03807  M00S03765.ssval   +++|
03808  M00S03766.ssval   +++|#
03809  M00S03767.ssval   +++|*     BUFFER AREA FOR *PFC* ENTRY.
03810  M00S03768.ssval   +++|#
03811  M00S03769.ssval   +++|
03812  M00S03770.ssval   +++|      ARRAY VPFCBUFFER [0:O"101"] S(1);  # *PFC* BUFFER #
03813  M00S03771.ssval   +++|      ITEM VPFC$WD    U(00,00,60);
03814  M00S03772.ssval   +++|
03815  M00S03773.ssval   +++|#
03816  M00S03774.ssval   +++|*     ERROR LINES FOR REPORT FILE.
03817  M00S03775.ssval   +++|#
03818  M00S03776.ssval   +++|
03819  M00S03777.ssval   +++|      ARRAY BADSM [0:0] S(5);       # INVALID *SM* REPORT LINE #
03820  M00S03778.ssval   +++|        BEGIN
03821  M00S03779.ssval   +++|        ITEM BAD$DESC   C(00,00,50) = ["***PF = XXXXXXX "];
03822  M00S03780.ssval   +++|        ITEM BAD$PFN    C(00,48,07);
03823  M00S03781.ssval   +++|        ITEM BAD$ERR    C(02,00,20) = ["INVALID SM IN PFC "];
03824  M00S03782.ssval   +++|        END
03825  M00S03783.ssval   +++|
03826  M00S03784.ssval   +++|      ARRAY BADSM2 [0:0] S(5);      # INVALID *SM* REPORT LINE 2 #
03827  M00S03785.ssval   +++|        BEGIN
03828  M00S03786.ssval   +++|        ITEM BAD$DESC2  C(00,00,50) = ["   UI = NNNNNN "];
03829  M00S03787.ssval   +++|        ITEM BAD$UI     C(00,48,06);
03830  M00S03788.ssval   +++|        END
03831  M00S03789.ssval   +++|
03832  M00S03790.ssval   +++|                                               CONTROL EJECT;
03833  M00S03791.ssval   +++|
03834  M00S03792.ssval   +++|#
03835  M00S03793.ssval   +++|*     INITIALIZE FETS.
03836  M00S03794.ssval   +++|#
03837  M00S03795.ssval   +++|
03838  M00S03796.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXSF
03839  M00S03797.ssval   +++|      DO                             # *PFC* EXTRACT FILES #
03840  M00S03798.ssval   +++|        BEGIN
03841  M00S03799.ssval   +++|        PEXTFADR = LOC(PFCE$FET[I]);
03842  M00S03800.ssval   +++|        PEXTBADR = LOC(PFCE$BUF[I]);
03843  M00S03801.ssval   +++|        PFCE$LFN[0] = EXTLFN;        # *LFN* OF *PFC* EXTRACT FILES #
03844  M00S03802.ssval   +++|        PFCE$LFNX[0] = I + "0";      # APPEND SUBFAMILY TO *LFN* #
03845  M00S03803.ssval   +++|        ZSETFET(PEXTFADR,PFCENAME,PEXTBADR,LPFCEBUF,SFETL);
03846  M00S03804.ssval   +++|        LOFPROC(PFCENAME);           # ADD LFN TO LIST OF FILES #
03847  M00S03805.ssval   +++|        REWIND(PFCEXTN[I],RCL);
03848  M00S03806.ssval   +++|        END
03849  M00S03807.ssval   +++|
03850  M00S03808.ssval   +++|      LOFPROC("CATS");               # ADD LFN TO LIST OF FILES #
03851  M00S03809.ssval   +++|
03852  M00S03810.ssval   +++|#
03853  M00S03811.ssval   +++|*     READ THE *PFC* FOR THE SELECTED SUBFAMILIES (DEVMASK).
03854  M00S03812.ssval   +++|#
03855  M00S03813.ssval   +++|
03856  M00S03814.ssval   +++|      STAT = 0;
03857  M00S03815.ssval   +++|      SLOWFOR I = 0 STEP 1 WHILE STAT EQ 0
03858  M00S03816.ssval   +++|      DO
03859  M00S03817.ssval   +++|        BEGIN  # READ *PFC* ENTRIES #
03860  M00S03818.ssval   +++|
03861  M00S03819.ssval   +++|        RDPFC(PAR$FM,DEVMASK,VPFCBUFFER,WDCNT,STAT);
03862  M00S03820.ssval   +++|
03863  M00S03821.ssval   +++|#
03864  M00S03822.ssval   +++|*     EXIT IF NO SECTOR WAS RETURNED.
03865  M00S03823.ssval   +++|#
03866  M00S03824.ssval   +++|
03867  M00S03825.ssval   +++|        IF STAT NQ 0
03868  M00S03826.ssval   +++|        THEN
03869  M00S03827.ssval   +++|          BEGIN
03870  M00S03828.ssval   +++|          TEST I;
03871  M00S03829.ssval   +++|          END
03872  M00S03830.ssval   +++|
03873  M00S03831.ssval   +++|#
03874  M00S03832.ssval   +++|*     ELSE, PROCESS THE *PFC* SECTOR THAT WAS RETURNED.
03875  M00S03833.ssval   +++|#
03876  M00S03834.ssval   +++|
03877  M00S03835.ssval   +++|        P<CNTRWORD> = LOC(VPFCBUFFER) + WDCNT;  # RETURN CONTROL WORD #
03878  M00S03836.ssval   +++|        VPEO = -1;                   # INITIALIZE *PFC* ENTRY ORDINAL #
03879  M00S03837.ssval   +++|
03880  M00S03838.ssval   +++|        SLOWFOR IWC = 0 STEP PFCENTL WHILE (IWC LS WDCNT)
03881  M00S03839.ssval   +++|        DO
03882  M00S03840.ssval   +++|          BEGIN  # *PFC* SELECTION #
03883  M00S03841.ssval   +++|          VPEO = VPEO + 1;
03884  M00S03842.ssval   +++|          P<PFC> = LOC(VPFC$WD[IWC]);  # SET POINTER TO A *PFC* ENTRY #
03885  M00S03843.ssval   +++|
03886  M00S03844.ssval   +++|#
03887  M00S03845.ssval   +++|*     SKIP THE *PFC* ENTRY IF IT IS NOT ACTIVE.
03888  M00S03846.ssval   +++|#
03889  M00S03847.ssval   +++|
03890  M00S03848.ssval   +++|          IF PFC$UI[0] EQ 0
03891  M00S03849.ssval   +++|          THEN
03892  M00S03850.ssval   +++|            BEGIN
03893  M00S03851.ssval   +++|            TEST IWC;                # *PFC* ENTRY IS NOT ACTIVE #
03894  M00S03852.ssval   +++|            END
03895  M00S03853.ssval   +++|
03896  M00S03854.ssval   +++|#
03897  M00S03855.ssval   +++|*     PERMANENT FILE DOES EXIST.
03898  M00S03856.ssval   +++|#
03899  M00S03857.ssval   +++|
03900  M00S03858.ssval   +++|          SBINDX = PFC$SF[0];        # SUBFAMILY INDEX #
03901  M00S03859.ssval   +++|          P<ASA> = LOC(PFC$AA);      # ASA DEFINITIONS #
03902  M00S03860.ssval   +++|          SMINDX = ASASM[0];       # EXTRACT *SM* INDEX #
03903  M00S03861.ssval   +++|
03904  M00S03862.ssval   +++|
Line S00001 Modification History
M01 (Added by) ssval1
Seq #  *Modification Id* Act 
----------------------------+
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  M00S03863.ssval   +++|#
03917  M00S03864.ssval   +++|*     FOR INVALID *SM*, ISSUE DIAGNOSTIC.
03918  M00S03865.ssval   +++|#
03919  M00S03866.ssval   +++|
03920  M00S03867.ssval   +++|          IF (PFC$AA[0] NQ 0) AND ((SMINDX EQ 0) OR (SMINDX GR "H"))
03921  M00S03868.ssval   +++|            THEN
03922  M00S03869.ssval   +++|            BEGIN
03923  M00S03870.ssval   +++|            TOTALERRS = TOTALERRS + 1;
03924  M00S03871.ssval   +++|            RPLINE(RPTFADR," ",0,1,EOPL);  # BLANK LINE #
03925  M00S03872.ssval   +++|            BAD$PFN[0] = VLNTC(PFC$FN[0]," ",10);  # *PFN* IN ERROR #
03926  M00S03873.ssval   +++|            RPLINE(RPTFADR,BADSM,4,50,EOPL);  # ISSUE ERROR LINE #
03927  M00S03874.ssval   +++|            BAD$UI[0] = VLNTC(PFC$UI[0],"XCOD",6);  # SET UI IN ERROR
03928  M00S03875.ssval   +++|                                                      LINE #
03929  M00S03876.ssval   +++|            RPLINE(RPTFADR,BADSM2,4,50,EOPL);  # ISSUE ERROR LINE #
03930  M00S03877.ssval   +++|            TEST IWC;
03931  M00S03878.ssval   +++|            END
03932  M00S03879.ssval   +++|
03933  M00S03880.ssval   +++|#
03934  M00S03881.ssval   +++|*     SKIP *PFC* ENTRIES THAT DO NOT MATCH THE SELECTED SUBFAMILY
03935  M00S03882.ssval   +++|*     OR *SM*.
03936  M00S03883.ssval   +++|#
03937  M00S03884.ssval   +++|
03938  M00S03885.ssval   +++|          IF (B<SBINDX,1>PAR$SB EQ 0 )  ##
03939  M00S03886.ssval   +++|            OR (B<SMINDX,1>PAR$SM EQ 0)  ##
03940  M00S03887.ssval   +++|            OR (PFC$AT[0] NQ ATAS)
03941  M00S03888.ssval   +++|          THEN
03942  M00S03889.ssval   +++|            BEGIN
03943  M00S03890.ssval   +++|            TEST IWC;
03944  M00S03891.ssval   +++|            END
03945  M00S03892.ssval   +++|
03946  M00S03893.ssval   +++|#
03947  M00S03894.ssval   +++|*     BUILD THE EXTRACT RECORD.
03948  M00S03895.ssval   +++|#
03949  M00S03896.ssval   +++|
03950  M00S03897.ssval   +++|          EXTR$PEO[0] = VPEO;        # *PFC* ENTRY ORDINAL #
03951  M00S03898.ssval   +++|          EXTR$DN[0] = CNTR$DN[0];   # DEVICE NUMBER #
03952  M00S03899.ssval   +++|          EXTR$TRK[0] = CNTR$TRK[0];  # TRACK #
03953  M00S03900.ssval   +++|          EXTR$SEC[0] = CNTR$SEC[0];  # SECTOR #
03954  M00S03901.ssval   +++|          EXTR$DA[0] = PFC$DA[0];
03955  M00S03902.ssval   +++|          EXTR$FLG[0] = PFC$AF[0];   # *ASA* FLAGS #
03956  M00S03903.ssval   +++|          EXTR$D[0] = 0;             # INITIALIZE DISK IMAGE FLAG #
03957  M00S03904.ssval   +++|          IF PFC$BT[0] NQ 0
03958  M00S03905.ssval   +++|          THEN                       # *PFC* TRACK IS NOT ZERO #
03959  M00S03906.ssval   +++|            BEGIN
03960  M00S03907.ssval   +++|            EXTR$D[0] = 1;           # DISK IMAGE EXISTS #
03961  M00S03908.ssval   +++|            END
03962  M00S03909.ssval   +++|
03963  M00S03910.ssval   +++|          EXTR$ASA[0] = PFC$AA[0];   # SET THE *ASA* #
03964  M00S03911.ssval   +++|          EXTR$AT[0] = PFC$AT[0];
03965  M00S03912.ssval   +++|          EXTR$FCT[0] = EXTR$GP[0]*16 + EXTR$GPT[0];
03966  M00S03913.ssval   +++|          EXTR$PFN[0] = PFC$FN[0];   # SET THE *PFN* #
03967  M00S03914.ssval   +++|          EXTR$UI[0] = PFC$UI[0];    # SET THE *UI* #
03968  M00S03915.ssval   +++|          EXTR$BKDT[0] = PFC$UD[0];  # SET THE BACKUP DATE/TIME #
03969  M00S03916.ssval   +++|          EXTR$CREA[0] = PFC$CD[0];  # CREATION DATE/TIME #
03970  M00S03917.ssval   +++|
03971  M00S03918.ssval   +++|#
03972  M00S03919.ssval   +++|*     SET THE BACKUP DATE/TIME TO BE THE LATEST DATE/TIME FROM
03973  M00S03920.ssval   +++|*     THE UTILITY CONTROL AND CONTROL MODIFICATION DATE/TIME
03974  M00S03921.ssval   +++|*     FIELDS.
03975  M00S03922.ssval   +++|#
03976  M00S03923.ssval   +++|
03977  M00S03924.ssval   +++|          IF PFC$UD[0] LS PFC$KD[0]
03978  M00S03925.ssval   +++|          THEN                       # CONTROL IS NEWER THAN UTILITY #
03979  M00S03926.ssval   +++|            BEGIN
03980  M00S03927.ssval   +++|            EXTR$BKDT[0] = PFC$KD[0];  # BACKUP DATE/TIME #
03981  M00S03928.ssval   +++|            END
03982  M00S03929.ssval   +++|
03983  M00S03930.ssval   +++|          WRITEW(PFCEXTN[SBINDX],EXTRECORD,RLEXTR,K);
03984  M00S03931.ssval   +++|          END  # *PFC* SELECTION #
03985  M00S03932.ssval   +++|
03986  M00S03933.ssval   +++|        END  # READ *PFC* ENTRIES #
03987  M00S03934.ssval   +++|
03988  M00S03935.ssval   +++|#
03989  M00S03936.ssval   +++|*    IF ERROR READING PFC, ISSUE MESSAGE AND ABORT.
03990  M00S03937.ssval   +++|#
03991  M00S03938.ssval   +++|
03992  M00S03939.ssval   +++|      IF STAT NQ 1                   # IF NOT *EOI* #
03993  M00S03940.ssval   +++|      THEN                           # ERROR TYPE 2, 3, OR 4 #
03994  M00S03941.ssval   +++|        BEGIN
03995  M00S03942.ssval   +++|        VLERROR(VE"PFCERR",ABRT);    # ISSUE MESSAGE AND ABORT #
03996  M00S03943.ssval   +++|        END
03997  M00S03944.ssval   +++|
03998  M00S03945.ssval   +++|#
03999  M00S03946.ssval   +++|*     WRITE EOFS ON ALL FILES.
04000  M00S03947.ssval   +++|#
04001  M00S03948.ssval   +++|
04002  M00S03949.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL MAXSF
04003  M00S03950.ssval   +++|      DO
04004  M00S03951.ssval   +++|        BEGIN
04005  M00S03952.ssval   +++|        WRITEF(PFCEXTN[I],RCL);
04006  M00S03953.ssval   +++|        REWIND(PFCEXTN[I],RCL);
04007  M00S03954.ssval   +++|        END
04008  M00S03955.ssval   +++|
04009  M00S03956.ssval   +++|#
04010  M00S03957.ssval   +++|*     SET BITS TO INDICATE ALL SFM CATALOG FILES DO EXIST AND ARE
04011  M00S03958.ssval   +++|*     TO BE VALIDATED.
04012  M00S03959.ssval   +++|#
04013  M00S03960.ssval   +++|
04014  M00S03961.ssval   +++|      B<0,8>SFMCATDEF = O"777";      # TURN THE 8 SUBCATALOG FLAGS ON #
04015  M00S03962.ssval   +++|
04016  M00S03963.ssval   +++|      END  # VLPFC #
04017  M00S03964.ssval   +++|
04018  M00S03965.ssval   +++|    TERM
04019  M00S03966.ssval   +++|PROC VLPFILL(FLD,(PARAM));
04020  M00S03967.ssval   +++|# TITLE VLPFILL - FILL PARAMETER IN MESSAGE TEXT.                     #
04021  M00S03968.ssval   +++|
04022  M00S03969.ssval   +++|      BEGIN  # VLPFILL #
04023  M00S03970.ssval   +++|
04024  M00S03971.ssval   +++|#
04025  M00S03972.ssval   +++|**    VLPFILL - FILL PARAMETER INTO MESSAGE TEXT.
04026  M00S03973.ssval   +++|*
04027  M00S03974.ssval   +++|*     *VLPFILL* LOCATES THE PARAMETER PLACE-HOLDER IN THE
04028  M00S03975.ssval   +++|*     TEXT AND REPLACES IT WITH THE PARAMETER CHARACTERS
04029  M00S03976.ssval   +++|*     IN THE *PARAM* WORD.
04030  M00S03977.ssval   +++|*
04031  M00S03978.ssval   +++|*     A MAXIMUM OF 40 CHARACTERS IS SCANNED.
04032  M00S03979.ssval   +++|*
04033  M00S03980.ssval   +++|*     PROC VLPFILL(FLD,PARAM)
04034  M00S03981.ssval   +++|*
04035  M00S03982.ssval   +++|*     ENTRY     (FLD)   - TEXT TO SCAN.
04036  M00S03983.ssval   +++|*               (PARAM) - PARAMETER TO PLACE IN TEXT.
04037  M00S03984.ssval   +++|*
04038  M00S03985.ssval   +++|*     EXIT      (FLD) - TEXT WITH THE PARAMETER FROM *PARAM* INSERTED.
04039  M00S03986.ssval   +++|*
04040  M00S03987.ssval   +++|#
04041  M00S03988.ssval   +++|
04042  M00S03989.ssval   +++|
04043  M00S03990.ssval   +++|      ITEM FLD        I;             # TEXT TO SCAN #
04044  M00S03991.ssval   +++|      ITEM PARAM      C(10);         # PARAMETER TO INSERT #
04045  M00S03992.ssval   +++|
04046  M00S03993.ssval   +++|
04047  M00S03994.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
04048  M00S03995.ssval   +++|
04049  M00S03996.ssval   +++|*CALL COMBFAS
04050  M00S03997.ssval   +++|
04051  M00S03998.ssval   +++|
04052  M00S03999.ssval   +++|
04053  M00S04000.ssval   +++|      ITEM PCHAR      I;             # PARAMETER CHARACTER INDEX #
04054  M00S04001.ssval   +++|      ITEM QCHAR      I;             # Q CHARACTER INDEX #
04055  M00S04002.ssval   +++|      ITEM Q          I;             # Q CHARACTER TEMPORARY #
04056  M00S04003.ssval   +++|
04057  M00S04004.ssval   +++|      BASED
04058  M00S04005.ssval   +++|      ARRAY SCAN [0:0] S(4);         # TO SCAN TEXT FIELD #
04059  M00S04006.ssval   +++|      ITEM SCAN$WD    C(00,00,40);
04060  M00S04007.ssval   +++|                                               CONTROL EJECT;
04061  M00S04008.ssval   +++|
04062  M00S04009.ssval   +++|      P<SCAN> = LOC(FLD);
04063  M00S04010.ssval   +++|
04064  M00S04011.ssval   +++|
04065  M00S04012.ssval   +++|      Q = 0;
04066  M00S04013.ssval   +++|      QCHAR = -1;                    # INITIALIZE #
04067  M00S04014.ssval   +++|
04068  M00S04015.ssval   +++|#
04069  M00S04016.ssval   +++|*     SCAN THE TEXT LOOKING FOR A PARAMETER PLACE-HOLDER.
04070  M00S04017.ssval   +++|#
04071  M00S04018.ssval   +++|
04072  M00S04019.ssval   +++|      REPEAT WHILE QCHAR LQ 40 AND Q NQ "Q"
04073  M00S04020.ssval   +++|      DO
04074  M00S04021.ssval   +++|        BEGIN  # PLACE-HOLDER SEARCH #
04075  M00S04022.ssval   +++|        QCHAR = QCHAR + 1;
04076  M00S04023.ssval   +++|        Q = C<QCHAR,1>SCAN$WD[0];    # GET A CHARACTER #
04077  M00S04024.ssval   +++|        END  # PLACE-HOLDER SEARCH #
04078  M00S04025.ssval   +++|
04079  M00S04026.ssval   +++|#
04080  M00S04027.ssval   +++|*     MOVE PARAMETER INTO THE PLACE-HOLDER IF THERE WAS ONE.
04081  M00S04028.ssval   +++|#
04082  M00S04029.ssval   +++|
04083  M00S04030.ssval   +++|      SLOWFOR PCHAR = 0 STEP 1 WHILE Q EQ "Q"
04084  M00S04031.ssval   +++|      DO
04085  M00S04032.ssval   +++|        BEGIN  # PLACE-HOLDER INSERT #
04086  M00S04033.ssval   +++|        C<QCHAR,1>SCAN$WD[0] = C<PCHAR,1>PARAM;  # REPLACE Q
04087  M00S04034.ssval   +++|                                                   CHARACTER #
04088  M00S04035.ssval   +++|        QCHAR = QCHAR + 1;
04089  M00S04036.ssval   +++|        Q = C<QCHAR,1>SCAN$WD[0];    # GET NEXT CHARACTER #
04090  M00S04037.ssval   +++|        END  # PLACE-HOLDER INSERT #
04091  M00S04038.ssval   +++|
04092  M00S04039.ssval   +++|      RETURN;
04093  M00S04040.ssval   +++|      END  # VLPFILL #
04094  M00S04041.ssval   +++|
04095  M00S04042.ssval   +++|    TERM
04096  M00S04043.ssval   +++|PROC VLPRSET;
04097  M00S04044.ssval   +++|# TITLE VLPRSET - PRESET PARAMETERS AND FILES.                        #
04098  M00S04045.ssval   +++|
04099  M00S04046.ssval   +++|      BEGIN  # VLPRSET #
04100  M00S04047.ssval   +++|
04101  M00S04048.ssval   +++|#
04102  M00S04049.ssval   +++|**    VLPRSET - PRESET PARAMETERS AND FILES.
04103  M00S04050.ssval   +++|*
04104  M00S04051.ssval   +++|*     *VLPRSET* INITIALIZES ALL PARAMETERS AND PERFORMS
04105  M00S04052.ssval   +++|*     ALL PRESET FUNCTIONS.  THIS INCLUDES -
04106  M00S04053.ssval   +++|*      . GET DEFAULT FAMILY AND SUBSYSTEM ID.
04107  M00S04054.ssval   +++|*      . CRACK CONTROL CARD AND EDIT PARAMETERS.
04108  M00S04055.ssval   +++|*      . LIST THE CONTROL CARD PARAMETERS IN THE REPORT FILE.
04109  M00S04056.ssval   +++|*      . OPEN/INITIALIZE FILES.
04110  M00S04057.ssval   +++|*
04111  M00S04058.ssval   +++|*     PROC VLPRSET
04112  M00S04059.ssval   +++|*
04113  M00S04060.ssval   +++|*     ENTRY     THE CONTROL CARD IN *RA* + 70B.
04114  M00S04061.ssval   +++|*
04115  M00S04062.ssval   +++|*     EXIT      (DEF$FAM)         - DEFAULT FAMILY.
04116  M00S04063.ssval   +++|*               (DEVMASK)         - DEVICE MASK FOR SELECTED
04117  M00S04064.ssval   +++|*                                   SUBFAMILIES.
04118  M00S04065.ssval   +++|*               (PAR$XX)          - PARAMETER VALUES WHERE XX =
04119  M00S04066.ssval   +++|*                                   KEYWORD.
04120  M00S04067.ssval   +++|*               (RPTFILE)         - ADDRESS OF REPORT FILE *FET*.
04121  M00S04068.ssval   +++|*               (SSID$VL)         - SUBSYTEM IDENTIFICATION.
04122  M00S04069.ssval   +++|*               (ARRAY FIXITFILE) - FIXIT FILE *FET*.
04123  M00S04070.ssval   +++|*               (ARRAY PROBFILE)  - PROBLEM FILE *FET*.
04124  M00S04071.ssval   +++|*
04125  M00S04072.ssval   +++|*     MESSAGES  * INVALID SM PARAMETER.*
04126  M00S04073.ssval   +++|*               * INVALID FX PARAMETER.*
04127  M00S04074.ssval   +++|*               * ILLEGAL - L AND RF PARAMETERS.*
04128  M00S04075.ssval   +++|*               * ILLEGAL - RF AND AM PARAMETERS.*
04129  M00S04076.ssval   +++|*               * ILLEGAL - RF AND FM PARAMETERS.*
04130  M00S04077.ssval   +++|*               * ILLEGAL - RL AND NO RF PARAMETERS.*
04131  M00S04078.ssval   +++|*               * INVALID - SB PARAMETER.*
04132  M00S04079.ssval   +++|*               * INVALID - ST PARAMETER.*
04133  M00S04080.ssval   +++|*               * CONTROL CARD SYNTAX ERROR.*
04134  M00S04081.ssval   +++|*               * ABORT RUN DUE TO ERRORS.*
04135  M00S04082.ssval   +++|*
04136  M00S04083.ssval   +++|#
04137  M00S04084.ssval   +++|
04138  M00S04085.ssval   +++|
04139  M00S04086.ssval   +++|#
04140  M00S04087.ssval   +++|****  PROC VLPRSET - XREF LIST BEGIN.
04141  M00S04088.ssval   +++|#
04142  M00S04089.ssval   +++|
04143  M00S04090.ssval   +++|      XREF
04144  M00S04091.ssval   +++|        BEGIN
Line S00030 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
04145  M01S00030.ssval3  +++|        PROC BZFILL;                   # BLANK OR ZERO FILL #
04146  M00S04092.ssval   +++|        PROC GETFAM;                 # SET FAMILY TABLE #
04147  M00S04093.ssval   +++|        PROC LOFPROC;                # LIST OF FILES PROCESSOR #
Line S00031 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
04148  M01S00031.ssval3  +++|        PROC PFD;                      # PERMANENT FILE ACCESS #
04149  M01S00032.ssval3  +++|        PROC SETPFP;                   # SET FILE PARAMETERS#
04150  M00S04094.ssval   +++|        PROC RETERN;                 # RETURNS SPECIFIED FILE #
04151  M00S04095.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
04152  M00S04096.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
04153  M00S04097.ssval   +++|                                       LINE #
04154  M00S04098.ssval   +++|        PROC RPOPEN;                 # OPENS A PRINT FILE #
04155  M00S04099.ssval   +++|        PROC VLBFILL;                # BLANK FILL #
04156  M00S04100.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
04157  M00S04101.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
04158  M00S04102.ssval   +++|                                       CONVERSION #
04159  M00S04103.ssval   +++|        PROC VLPFC;                  # READ *PFC* #
04160  M00S04104.ssval   +++|        PROC VLRDF;                  # READ RDF FILE #
04161  M00S04105.ssval   +++|        PROC VLTAB;
04162  M00S04106.ssval   +++|        PROC VLTITLE;                # ISSUE REPORT TITLE #
04163  M00S04107.ssval   +++|        PROC XARG;                   # CRACK PARAMETER LIST #
04164  M00S04108.ssval   +++|        FUNC XDXB;                   # CONVERT DISPLAY CODE TO BINARY #
04165  M00S04109.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
04166  M00S04110.ssval   +++|        END
04167  M00S04111.ssval   +++|
04168  M00S04112.ssval   +++|#
04169  M00S04113.ssval   +++|****  PROC VLPRSET - XREF LIST END.
04170  M00S04114.ssval   +++|#
04171  M00S04115.ssval   +++|
04172  M00S04116.ssval   +++|
04173  M00S04117.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTINGS #
04174  M00S04118.ssval   +++|
04175  M00S04119.ssval   +++|*CALL COMBFAS
Line S00033 Modification History
M01 (Added by) ssval3
Seq #  *Modification Id* Act 
----------------------------+
04176  M01S00033.ssval3  +++|*CALL COMBBZF
04177  M01S00034.ssval3  +++|*CALL COMBPFP
04178  M00S04120.ssval   +++|*CALL COMSPFM
04179  M00S04121.ssval   +++|*CALL COMTVLD
04180  M00S04122.ssval   +++|*CALL COMTVLF
04181  M00S04123.ssval   +++|*CALL COMTVLP
04182  M00S04124.ssval   +++|*CALL COMTVLX
04183  M00S04125.ssval   +++|
04184  M00S04126.ssval   +++|
04185  M00S04127.ssval   +++|      ITEM ARGADDR    I;             # ARGUMENT TABLE ADDRESS #
04186  M00S04128.ssval   +++|      ITEM ARGERR     I;             # CTL CARD ARGUMENT ERROR #
04187  M00S04129.ssval   +++|      ITEM CHAR       I;             # SCRATCH FIELD #
04188  M00S04130.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
04189  M00S04131.ssval   +++|      ITEM J          I;             # TEMPORARY VARIABLE #
04190  M00S04132.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
04191  M00S04133.ssval   +++|      ITEM PAR        I;             # SCRATCH FIELD #
04192  M00S04134.ssval   +++|
04193  M00S04135.ssval   +++|
04194  M00S04136.ssval   +++|      BASED
04195  M00S04137.ssval   +++|      ARRAY ARGELEMENT [0:0] S(1);   # TO EXTRACT THE ARGUMENTS #
04196  M00S04138.ssval   +++|        BEGIN
04197  M00S04139.ssval   +++|        ITEM ARGITEM    U(00,00,60);
04198  M00S04140.ssval   +++|        ITEM ARGITEMC   C(00,00,10);
04199  M00S04141.ssval   +++|        ITEM ARGSCAN    C(00,00,20);  # FOR A 2 WORD PARAMETER #
04200  M00S04142.ssval   +++|        END
04201  M00S04143.ssval   +++|
04202  M00S04144.ssval   +++|
04203  M00S04145.ssval   +++|      ARRAY PARIDS [0:VARGL] S(1);   # PARAMETER IDS FOR REPORT #
04204  M00S04146.ssval   +++|        BEGIN
04205  M00S04147.ssval   +++|        ITEM PARNME     C(00,30,5);
04206  M00S04148.ssval   +++|        ITEM PARNME1    C(VLF,30,5) = [ "L  = " ];
04207  M00S04149.ssval   +++|        ITEM PARNME2    C(VRF,30,5) = [ "RF = " ];
04208  M00S04150.ssval   +++|        ITEM PARNME3    C(VAM,30,5) = [ "AM = " ];
04209  M00S04151.ssval   +++|        ITEM PARNME4    C(VSM,30,5) = [ "SM = " ];
04210  M00S04152.ssval   +++|        ITEM PARNME6    C(VFM,30,5) = [ "FM = " ];
04211  M00S04153.ssval   +++|        ITEM PARNME7    C(VFX,30,5) = [ "FX = " ];
04212  M00S04154.ssval   +++|        ITEM PARNME8    C(VRL,30,5) = [ "RL = " ];
04213  M00S04155.ssval   +++|        ITEM PARNME9    C(VSB,30,5) = [ "SB = " ];
04214  M00S04156.ssval   +++|        ITEM PARNME10   C(VST,30,5) = [ "ST = " ];
04215  M00S04157.ssval   +++|        END
04216  M00S04158.ssval   +++|
04217  M00S04159.ssval   +++|#
04218  M00S04160.ssval   +++|*     TO BUILD THE PARAMETER FOR THE REPORT FILE.
04219  M00S04161.ssval   +++|#
04220  M00S04162.ssval   +++|
04221  M00S04163.ssval   +++|      ARRAY PARVALUE [0:0] S(2);     # PARAMETER DISPLAY CD VALUE #
04222  M00S04164.ssval   +++|        BEGIN
04223  M00S04165.ssval   +++|        ITEM PAR$VALUE  C(00,00,20);  # PARAMETER #
04224  M00S04166.ssval   +++|        ITEM PAR$VALEND U(00,42,18);  # END OF FIRST PARAMETER #
04225  M00S04167.ssval   +++|        ITEM PAR$VAL2   C(01,00,10);  # SECOND WORD OF PARAMETER #
04226  M00S04168.ssval   +++|        END
04227  M00S04169.ssval   +++|                                               CONTROL EJECT;
04228  M00S04170.ssval   +++|
04229  M00S04171.ssval   +++|#
04230  M00S04172.ssval   +++|*     GET THE SYSTEM DEFAULT FAMILY AND THE SUBSYSTEM IDENTIFICATION.
04231  M00S04173.ssval   +++|#
04232  M00S04174.ssval   +++|
04233  M00S04175.ssval   +++|      SSID$VL = ATAS;
04234  M00S04176.ssval   +++|      GETFAM(FAMT,I,J,K,SSID$VL);
04235  M00S04177.ssval   +++|      DEF$FAM = FAM$NAME[K];
04236  M00S04178.ssval   +++|
04237  M00S04179.ssval   +++|#
04238  M00S04180.ssval   +++|*     CRACK THE CONTROL CARD.
04239  M00S04181.ssval   +++|#
04240  M00S04182.ssval   +++|
04241  M00S04183.ssval   +++|      VLTAB(ARGADDR);                # GET ADDR OF ARGUMENT TABLE #
04242  M00S04184.ssval   +++|      XARG(ARGADDR,0,ARGERR);        # CRACK PARAMETERS BASED ON
04243  M00S04185.ssval   +++|                                       TABLE #
04244  M00S04186.ssval   +++|
04245  M00S04187.ssval   +++|      IF ARGERR NQ 0
04246  M00S04188.ssval   +++|      THEN                           # SYNTAX ERROR #
04247  M00S04189.ssval   +++|        BEGIN
04248  M00S04190.ssval   +++|        VLERROR(VE"SYNTAX",ABRT);    # ABORT WITH MESSAGE #
04249  M00S04191.ssval   +++|        END
04250  M00S04192.ssval   +++|
04251  M00S04193.ssval   +++|      P<ARGELEMENT> = LOC(VARGUMENTS);
04252  M00S04194.ssval   +++|
04253  M00S04195.ssval   +++|#
04254  M00S04196.ssval   +++|*     MOVE CONTROL CARD ARGUMENTS TO PARAMETERS.  PARAMETERS ARE
04255  M00S04197.ssval   +++|*     STORED IN PAR$XX (WHERE XX IS THE KEYWORD) FOR SUBSEQUENT
04256  M00S04198.ssval   +++|*     PROGRAM ACCESS.
04257  M00S04199.ssval   +++|#
04258  M00S04200.ssval   +++|
04259  M00S04201.ssval   +++|      PAR$LF = VARG$LF[0];           # *L* PARAMETER VALUE #
04260  M00S04202.ssval   +++|      PAR$RF = VARG$RF[0];           # *RF* PARAMETER VALUE #
04261  M00S04203.ssval   +++|      PAR$AM = VARG$AM[0];           # *AM* PARAMETER VALUE #
04262  M00S04204.ssval   +++|
04263  M00S04205.ssval   +++|      SLOWFOR I = 0 STEP 1 UNTIL 7
04264  M00S04206.ssval   +++|      DO                             # *SM* PARAMETER #
04265  M00S04207.ssval   +++|        BEGIN  # MOVE ARGUMENTS #
04266  M00S04208.ssval   +++|        CHAR = C<I,1>ARGSCAN[VSM];  # A *SM* CHARACTER #
04267  M00S04209.ssval   +++|      IF CHAR EQ 0
04268  M00S04210.ssval   +++|        THEN                         # END OF *CS* PARAMETER #
04269  M00S04211.ssval   +++|          BEGIN
04270  M00S04212.ssval   +++|          TEST I;
04271  M00S04213.ssval   +++|          END
04272  M00S04214.ssval   +++|
04273  M00S04215.ssval   +++|        IF CHAR GR "H"
04274  M00S04216.ssval   +++|        THEN                         # ILLEGAL CHARACTER #
04275  M00S04217.ssval   +++|          BEGIN
04276  M00S04218.ssval   +++|          VLERROR(VE"SMPAR",NOABT); # ISSUE MESSAGE #
04277  M00S04219.ssval   +++|          END
04278  M00S04220.ssval   +++|
04279  M00S04221.ssval   +++|        ELSE
04280  M00S04222.ssval   +++|          BEGIN  # SET *SM* BIT #
04281  M00S04223.ssval   +++|          IF B<CHAR,1>PAR$SM EQ 1
04282  M00S04224.ssval   +++|          THEN
04283  M00S04225.ssval   +++|            BEGIN
04284  M00S04226.ssval   +++|            VLERROR(VE"DUPCS",NOABT);
04285  M00S04227.ssval   +++|            END
04286  M00S04228.ssval   +++|
04287  M00S04229.ssval   +++|          ELSE
04288  M00S04230.ssval   +++|            BEGIN
04289  M00S04231.ssval   +++|            B<CHAR,1>PAR$SM = 1;
04290  M00S04232.ssval   +++|            END
04291  M00S04233.ssval   +++|
04292  M00S04234.ssval   +++|          END  # SET *CS* BIT #
04293  M00S04235.ssval   +++|
04294  M00S04236.ssval   +++|
04295  M00S04237.ssval   +++|        END  # MOVE ARGUMENTS #
04296  M00S04238.ssval   +++|
04297  M00S04239.ssval   +++|      PAR$FM = VARG$FM[0];           # FM PARAMETER VALUE #
04298  M00S04240.ssval   +++|
04299  M00S04241.ssval   +++|      STAT = XDXB(VARG$FX[0],"D",PAR$FX);  # CONVERT FX VALUE #
04300  M00S04242.ssval   +++|      IF STAT NQ 0
04301  M00S04243.ssval   +++|      THEN                           # ILLEGAL FX VALUE #
04302  M00S04244.ssval   +++|        BEGIN
04303  M00S04245.ssval   +++|        VLERROR(VE"FXPAR",NOABT);    # ISSUE MESSAGE #
04304  M00S04246.ssval   +++|        END
04305  M00S04247.ssval   +++|
04306  M00S04248.ssval   +++|      PAR$RL = VARG$RL[0];           # RL PARAMETER VALUE #
04307  M00S04249.ssval   +++|
04308  M00S04250.ssval   +++|      SLOWFOR J = 0 STEP 1 UNTIL 9
04309  M00S04251.ssval   +++|      DO                             # SB PARAMETER #
04310  M00S04252.ssval   +++|        BEGIN  # SUBFAMILY ARGUMENTS #
04311  M00S04253.ssval   +++|        CHAR = C<J,1>ARGITEM[VSB];   # EXTRACT A SUBFAMILY NUMBER #
04312  M00S04254.ssval   +++|        IF CHAR EQ 0
04313  M00S04255.ssval   +++|        THEN                         # END OF SB VALUE #
04314  M00S04256.ssval   +++|          BEGIN
04315  M00S04257.ssval   +++|          TEST J;
04316  M00S04258.ssval   +++|          END
04317  M00S04259.ssval   +++|
04318  M00S04260.ssval   +++|        IF CHAR LS "0" OR CHAR GR "7"
04319  M00S04261.ssval   +++|        THEN                         # ILLEGAL SUBFAMILY #
04320  M00S04262.ssval   +++|          BEGIN
04321  M00S04263.ssval   +++|          VLERROR(VE"SBPAR",NOABT);  # ISSUE MESSAGE #
04322  M00S04264.ssval   +++|          END
04323  M00S04265.ssval   +++|
04324  M00S04266.ssval   +++|        ELSE
04325  M00S04267.ssval   +++|          BEGIN  # SET SUBFAMILY BIT #
04326  M00S04268.ssval   +++|          IF B<CHAR-"0",1>PAR$SB EQ 1
04327  M00S04269.ssval   +++|          THEN
04328  M00S04270.ssval   +++|            BEGIN
04329  M00S04271.ssval   +++|            VLERROR(VE"DUPSB",NOABT);
04330  M00S04272.ssval   +++|            END
04331  M00S04273.ssval   +++|
04332  M00S04274.ssval   +++|          ELSE
04333  M00S04275.ssval   +++|            BEGIN
04334  M00S04276.ssval   +++|            B<CHAR-"0",1>PAR$SB = 1;  # SET *SB* BIT #
04335  M00S04277.ssval   +++|            B<59-(CHAR-"0"),1>DEVMASK = 1;  # RIGHT JUSTIFIED MASK #
04336  M00S04278.ssval   +++|            END
04337  M00S04279.ssval   +++|
04338  M00S04280.ssval   +++|          END  # SET SUBFAMILY BIT #
04339  M00S04281.ssval   +++|
04340  M00S04282.ssval   +++|        END  # SUBFAMILY ARGUMENTS #
04341  M00S04283.ssval   +++|
04342  M00S04284.ssval   +++|      IF VARG$ST[0] EQ O"30555555555555555555"
04343  M00S04285.ssval   +++|      THEN                    # DEFAULT *ST* #
04344  M00S04286.ssval   +++|        BEGIN
04345  M00S04287.ssval   +++|        VARG$ST[0] = O"34555555555555555555";
04346  M00S04288.ssval   +++|        END
04347  M00S04289.ssval   +++|
04348  M00S04290.ssval   +++|      STAT = XDXB(VARG$ST[0],"D",PAR$ST);  # CONVERT ST PARAMETER #
04349  M00S04291.ssval   +++|      IF STAT NQ 0
04350  M00S04292.ssval   +++|      THEN                           # ILLEGAL ST VALUE #
04351  M00S04293.ssval   +++|        BEGIN
04352  M00S04294.ssval   +++|        VLERROR(VE"STPAR",NOABT);    # ISSUE MESSAGE #
04353  M00S04295.ssval   +++|        END
04354  M00S04296.ssval   +++|
04355  M00S04297.ssval   +++|#
04356  M00S04298.ssval   +++|*     VERIFY THAT THE PARAMETER COMBINATIONS ARE LEGAL.
04357  M00S04299.ssval   +++|*     ERRORS ARE -
04358  M00S04300.ssval   +++|*     . *RF* AND *AM* PARAMETER TOGETHER,
04359  M00S04301.ssval   +++|*     . *RF* AND *FM* PARAMETER TOGETHER,
04360  M00S04302.ssval   +++|*     . *RL* AND NO *RF* PARAMETER.
04361  M00S04303.ssval   +++|#
04362  M00S04304.ssval   +++|
04363  M00S04305.ssval   +++|#
04364  M00S04306.ssval   +++|*     L PARAMETER = RF PARAMETER.
04365  M00S04307.ssval   +++|#
04366  M00S04308.ssval   +++|
04367  M00S04309.ssval   +++|      IF (PAR$LF NQ 0) AND (PAR$LF EQ PAR$RF)
04368  M00S04310.ssval   +++|      THEN
04369  M00S04311.ssval   +++|        BEGIN
04370  M00S04312.ssval   +++|        VLERROR(VE"LFRF",NOABT);     # ISSUE MESSAGE #
04371  M00S04313.ssval   +++|        END
04372  M00S04314.ssval   +++|
04373  M00S04315.ssval   +++|#
04374  M00S04316.ssval   +++|*     RL PARAMETER BUT NO RF.
04375  M00S04317.ssval   +++|#
04376  M00S04318.ssval   +++|
04377  M00S04319.ssval   +++|      IF (PAR$RL NQ 0) AND (PAR$RF EQ 0)
04378  M00S04320.ssval   +++|      THEN
04379  M00S04321.ssval   +++|        BEGIN
04380  M00S04322.ssval   +++|        VLERROR(VE"RLNRF",NOABT);    # ISSUE MESSAGE #
04381  M00S04323.ssval   +++|        END
04382  M00S04324.ssval   +++|
04383  M00S04325.ssval   +++|#
04384  M00S04326.ssval   +++|*     RF AND FM SPECIFIED.
04385  M00S04327.ssval   +++|#
04386  M00S04328.ssval   +++|
04387  M00S04329.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$FM NQ 0)
04388  M00S04330.ssval   +++|      THEN
04389  M00S04331.ssval   +++|        BEGIN
04390  M00S04332.ssval   +++|        VLERROR(VE"RFFM",NOABT);     # ISSUE MESSAGE #
04391  M00S04333.ssval   +++|        END
04392  M00S04334.ssval   +++|
04393  M00S04335.ssval   +++|#
04394  M00S04336.ssval   +++|*     RF AND AM SPECIFIED.
04395  M00S04337.ssval   +++|#
04396  M00S04338.ssval   +++|
04397  M00S04339.ssval   +++|      IF (PAR$RF NQ 0) AND (PAR$AM NQ 0)
04398  M00S04340.ssval   +++|      THEN
04399  M00S04341.ssval   +++|        BEGIN
04400  M00S04342.ssval   +++|        VLERROR(VE"RFAM",NOABT);     # ISSUE MESSAGE #
04401  M00S04343.ssval   +++|        END
04402  M00S04344.ssval   +++|
04403  M00S04345.ssval   +++|#
04404  M00S04346.ssval   +++|*     IF ANY CONTROL CARD ERRORS, ABORT.
04405  M00S04347.ssval   +++|*     (ERRORS ARE COUNTED IN VLERROR).
04406  M00S04348.ssval   +++|#
04407  M00S04349.ssval   +++|
04408  M00S04350.ssval   +++|      IF CNTPROGERR NQ 0
04409  M00S04351.ssval   +++|      THEN                           # SOME ERRORS OCCURRED #
04410  M00S04352.ssval   +++|        BEGIN
04411  M00S04353.ssval   +++|        VLERROR(VE"ABORT",ABRT);     # ABORT WITH MESSAGE #
04412  M00S04354.ssval   +++|        END
04413  M00S04355.ssval   +++|
04414  M00S04356.ssval   +++|
04415  M00S04357.ssval   +++|#
04416  M00S04358.ssval   +++|*     SET THE FAMILY PARAMETER TO THE DEFAULT FAMILY IF THE
04417  M00S04359.ssval   +++|*     FM OPTION IS ACTIVE (NO RF PARAMETER) BUT THE FAMILY WAS
04418  M00S04360.ssval   +++|*     NOT SPECIFIED.
04419  M00S04361.ssval   +++|#
04420  M00S04362.ssval   +++|
04421  M00S04363.ssval   +++|      IF (PAR$RF EQ 0) AND ((VARG$IFM[0] EQ -1) OR (PAR$FM EQ 0))
04422  M00S04364.ssval   +++|        THEN
04423  M00S04365.ssval   +++|        BEGIN
04424  M00S04366.ssval   +++|        PAR$FM = DEF$FAM;
04425  M00S04367.ssval   +++|        VARG$FM[0] = PAR$FM;
04426  M00S04368.ssval   +++|        END
04427  M00S04369.ssval   +++|
04428  M00S04370.ssval   +++|#
04429  M00S04371.ssval   +++|*     OPEN REPORT FILE.
04430  M00S04372.ssval   +++|#
04431  M00S04373.ssval   +++|
04432  M00S04374.ssval   +++|      IF PAR$LF NQ 0
04433  M00S04375.ssval   +++|      THEN                           # L PARAMETER ACTIVE #
04434  M00S04376.ssval   +++|        BEGIN
04435  M00S04377.ssval   +++|        RPTFADR = LOC(RPTFILE);      # REPORT FILE FET ADDRESS #
04436  M00S04378.ssval   +++|        END
04437  M00S04379.ssval   +++|
04438  M00S04380.ssval   +++|      RPOPEN(PAR$LF,RPTFADR,VLTITLE);
04439  M00S04381.ssval   +++|
04440  M00S04382.ssval   +++|#
04441  M00S04383.ssval   +++|*     ISSUE REPORT OF SPECIFIED AND DEFAULTED PARAMETERS.
04442  M00S04384.ssval   +++|#
04443  M00S04385.ssval   +++|
04444  M00S04386.ssval   +++|#
04445  M00S04387.ssval   +++|*     PRINT THE CONTROL CARD AS IT IS IN THE RA(70) AREA.
04446  M00S04388.ssval   +++|#
04447  M00S04389.ssval   +++|
04448  M00S04390.ssval   +++|      P<RACOM> = 0;
04449  M00S04391.ssval   +++|
04450  M00S04392.ssval   +++|      VLBFILL(RACOM[CCADDR],8);      # BLANK FILL #
04451  M00S04393.ssval   +++|      RPLINE(RPTFADR," ",0,1,EOPL);  # A BLANK LINE #
04452  M00S04394.ssval   +++|      RPLINE(RPTFADR,RACOM[CCADDR],12,80,EOPL);  # CONTROL CARD #
04453  M00S04395.ssval   +++|      RPLINE(RPTFADR," ",0,1,EOPL);  # A BLANK LINE #
04454  M00S04396.ssval   +++|
04455  M00S04397.ssval   +++|#
04456  M00S04398.ssval   +++|*     LIST ALL PARAMETERS AND THEIR VALUES.
04457  M00S04399.ssval   +++|#
04458  M00S04400.ssval   +++|
04459  M00S04401.ssval   +++|      SLOWFOR PAR = 0 STEP 1 UNTIL VARGL - 1
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/ssval.001.txt ยท Last modified: (external edit)