User Tools

Site Tools


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

Deck SSVAL

4 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.ssval   +++|PRGM SSVAL;
00002  M01S00002.ssval   +++|
00003  M01S00003.ssval   +++|# TITLE SSVAL - SFM VALIDATE PROGRAM.                                 #
00004  M01S00004.ssval   +++|
00005  M01S00005.ssval   +++|      BEGIN  # SSVAL #
00006  M01S00006.ssval   +++|
00007  M01S00007.ssval   +++|#
00008  M01S00008.ssval   +++|***** SSVAL - M860 CATALOG VALIDATION UTILITY.
00009  M01S00009.ssval   +++|*
00010  M01S00010.ssval   +++|*     THE FUNCTION OF *SSVAL* IS TO EXAMINE THE SFM CATALOG AND
00011  M01S00011.ssval   +++|*     THE PERMANENT FILE CATALOG FOR THE SPECIFIED FAMILY, OPTIONALLY
00012  M01S00012.ssval   +++|*     EXAMINE SPECIFIED SMMAP FILES, AND ISSUE A REPORT DETAILING
00013  M01S00013.ssval   +++|*     ANY IRREGULARITIES OR DISCREPANCIES FOUND.  A COUNT OF THE
00014  M01S00014.ssval   +++|*     NUMBER OF VALIDATION ERRORS DETECTED, IF ANY, IS PLACED IN
00015  M01S00015.ssval   +++|*     THE DAYFILE.  IF SELECTED, *SSVAL* WILL RELEASE SFM SPACE
00016  M01S00016.ssval   +++|*     FOR PURGED FILES.  WHEN ERROR CONDITIONS ARE FOUND, *SSVAL*
00017  M01S00017.ssval   +++|*     WILL OPTIONALLY SET FLAGS IN AFFECTED ENTRIES OF THESE FILES
00018  M01S00018.ssval   +++|*     TO PROTECT A PERMANENT FILE FROM BEING SUBJECT TO BEING
00019  M01S00019.ssval   +++|*     LOST AND TO PERMIT THE SITE TO RECOVER FROM THE ERROR VIA
00020  M01S00020.ssval   +++|*     THE *SSDEBUG* UTILITY.
00021  M01S00021.ssval   +++|*
00022  M01S00022.ssval   +++|*     RUN TIME PARAMETERS ALLOW SELECTED SUBFAMILIES OR ALL
00023  M01S00023.ssval   +++|*     SUBFAMILIES AND SELECTED SUBCATALOGS OR ALL SUBCATALOGS
00024  M01S00024.ssval   +++|*     TO BE ANALYZED.
00025  M01S00025.ssval   +++|*
00026  M01S00026.ssval   +++|*     THERE ARE TWO TYPES OF VALIDATION RUNS.  THEY ARE -
00027  M01S00027.ssval   +++|*      1) TO VALIDATE THE "LIVE" CATALOGS TO DETECT ERRORS AND
00028  M01S00028.ssval   +++|          ALLOW REPAIR OF THE CATALOGS.  REPAIR REFERS TO THE
00029  M01S00029.ssval   +++|          PROCESS OF SETTING FLAGS WHICH, DEPENDING ON THE FLAG SET
00030  M01S00030.ssval   +++|          MAY OR MAY NOT CORRECT THE PROBLEM.
00031  M01S00031.ssval   +++|*      2) TO VALIDATE THE COPIES OF THE CATALOGS FROM THE RELEASE
00032  M01S00032.ssval   +++|*         DATA FILE TO ALLOW RELEASE OF THE "FREE SPACE" IN THE
00033  M01S00033.ssval   +++|*         SFM CATALOG FOR FILES THAT WERE PURGED BY THE USER.
00034  M01S00034.ssval   +++|*
00035  M01S00035.ssval   +++|*     THE REQUIREMENTS AND RESULTS OF THESE RUNS ARE -
00036  M01S00036.ssval   +++|*
00037  M01S00037.ssval   +++|*       FOR TYPE 1 -
00038  M01S00038.ssval   +++|*         . THE SFM CATALOG PERMANENT FILE MUST BE ATTACHABLE.
00039  M01S00039.ssval   +++|*         . THE PERMANENT FILE CATALOG MUST BE ACCESSIBLE.
00040  M01S00040.ssval   +++|*         . THE SMMAP FILE MUST BE ATTACHABLE ( IF SELECTED ).
00041  M01S00041.ssval   +++|*         . THE CATALOGS ARE EXAMINED FOR VALIDATION ERRORS.
00042  M01S00042.ssval   +++|*         . THE VALIDATION REPORT IS ISSUED.
00043  M01S00043.ssval   +++|*         . THE CATALOGS ARE REPAIRED FOR ERRORS DETECTED TO
00044  M01S00044.ssval   +++|*           ALLOW CORRECTIVE ACTION.
00045  M01S00045.ssval   +++|*
00046  M01S00046.ssval   +++|*       FOR TYPE 2 -
00047  M01S00047.ssval   +++|*         . NO LIVE CATALOGS ARE USED.
00048  M01S00048.ssval   +++|*         . NO VALIDATION OF THE SMMAP FILE OCCURS.
00049  M01S00049.ssval   +++|*         . COPIES OF THE SFM CATALOG AND THE *PFC* ARE
00050  M01S00050.ssval   +++|*            EXAMINED FOR VALIDATION ERRORS.
00051  M01S00051.ssval   +++|*         . THE VALIDATION REPORT IS ISSUED.
00052  M01S00052.ssval   +++|*         . THE "FREE SPACE" IN THE SFM CATALOG IS RELEASED.  THIS
00053  M01S00053.ssval   +++|            CONSEQUENTLY RELEASES SPACE IN THE APPROPRIATE
00054  M01S00054.ssval   +++|            CARTRIDGE(S).
00055  M01S00055.ssval   +++|*
00056  M01S00056.ssval   +++|*     THE REPAIR/RELEASE FUNCTION OF *SSVAL* CANNOT OCCUR IF THE
00057  M01S00057.ssval   +++|*     M860 *EXEC* SUBSYSTEM IS NOT RUNNING.
00058  M01S00058.ssval   +++|*
00059  M01S00059.ssval   +++|
00060  M01S00060.ssval   +++|
00061  M01S00061.ssval   +++|
00062  M01S00062.ssval   +++|
00063  M01S00063.ssval   +++|***   *SSVAL* IS THE M860 UTILITY THAT VALIDATES THE SFM CATALOG,
00064  M01S00064.ssval   +++|*     PERMANENT FILE CATALOG (*PFC*) AND THE SMMAP FILE, REPAIRS
00065  M01S00065.ssval   +++|*     THE CATALOGS AND RELEASES SPACE IN THE SFM CATALOG FOR PURGED
00066  M01S00066.ssval   +++|*     USER FILES.
00067  M01S00067.ssval   +++|*
00068  M01S00068.ssval   +++|
00069  M01S00069.ssval   +++|***   INPUT DATA IS FROM THE SFM CATALOG FILE AND THE PERMANENT
00070  M01S00070.ssval   +++|*     FILE CATALOG FOR A SINGLE FAMILY.  THESE TWO INPUT FILES MAY
00071  M01S00071.ssval   +++|*     EITHER BE FROM THEIR PERMANENT LOCATION ON THE FAMILY
00072  M01S00072.ssval   +++|*     PACKS ("LIVE") OR FROM THE RELEASE DATA FILE (*RDF*)
00073  M01S00073.ssval   +++|*     PRODUCED BY THE *PFDUMP* UTILITY.  *SSVAL* WILL PRODUCE A *PFC
00074  M01S00074.ssval   +++|*     EXTRACT FILE* FROM EITHER OF THE ABOVE SOURCES.
00075  M01S00075.ssval   +++|*
00076  M01S00076.ssval   +++|*     THE SMMAP FILE IS AN INPUT IF SPECIFIED BY AN OPTION ON
00077  M01S00077.ssval   +++|*     THE CONTROL CARD.  IT IS ACCESSED ONLY FROM ITS PERMANENT
00078  M01S00078.ssval   +++|*     LOCATION ON THE SYSTEM DEFAULT FAMILY.
00079  M01S00079.ssval   +++|*
00080  M01S00080.ssval   +++|*     SFM CATALOG FILE - CONTAINS THE CONTROL INFORMATION ABOUT
00081  M01S00081.ssval   +++|*         THE FILES ON THE MSF.  THE FILE AND CARTRIDGE TABLE (*FCT*)
00082  M01S00082.ssval   +++|*         PORTION OF THE CATALOG CONTAINS THE ALLOCATION AND STATUS
00083  M01S00083.ssval   +++|*         INFORMATION FOR EACH CARTRIDGE.  THE *FCT*
00084  M01S00084.ssval   +++|*         IS EXAMINED FOR IRREGULARITIES AND ERRORS.
00085  M01S00085.ssval   +++|*
00086  M01S00086.ssval   +++|*     PERMANENT FILE CATALOG - CONTAINS CONTROL INFORMATION ABOUT
00087  M01S00087.ssval   +++|*         USER PERMANENT FILES RESIDING ON THE MSF.  THE ALTERNATE
00088  M01S00088.ssval   +++|*         STORAGE ALLOCATION FIELD (*ASA*) CONTAINS THE POINTER
00089  M01S00089.ssval   +++|*         SPECIFIYING THE *SM* INDEX, *FCT* ORDINAL.
00090  M01S00090.ssval   +++|*
00091  M01S00091.ssval   +++|*     SMMAP FILE - CONTAINS CONTROL INFORMATION ABOUT ALL CUBES
00092  M01S00092.ssval   +++|*         AND CARTRIDGES IN A GIVEN SM.
00093  M01S00093.ssval   +++|*
00094  M01S00094.ssval   +++|*     RDF FILE - (RELEASE DATA FILE) CONTAINS A HEADER, *PFC* EXTRACT
00095  M01S00095.ssval   +++|*         RECORDS, AND COPIES OF SFM CATALOGS.  IT IS PRODUCED BY
00096  M01S00096.ssval   +++|*         *PFDUMP*.  THE DATE AND TIME WHEN THE FILE WAS CREATED IS
00097  M01S00097.ssval   +++|*         RECORDED IN THE HEADER.  THE RDF FILE IS USED FOR BACKUP
00098  M01S00098.ssval   +++|*         PURPOSES ONLY.  A DESCRIPTION OF THE FIELDS IN THE RDF FILE
00099  M01S00099.ssval   +++|*         MAY BE FOUND IN *COMSPFM*.
00100  M01S00100.ssval   +++|*
00101  M01S00101.ssval   +++|*
00102  M01S00102.ssval   +++|
00103  M01S00103.ssval   +++|***   CONTROL CARD CALL.
00104  M01S00104.ssval   +++|*
00105  M01S00105.ssval   +++|*     SSVAL(P1,P2,...,PN)
00106  M01S00106.ssval   +++|*
00107  M01S00107.ssval   +++|*       PARAMETER                DESCRIPTION
00108  M01S00108.ssval   +++|*       ---------                -----------
00109  M01S00109.ssval   +++|*
00110  M01S00110.ssval   +++|*       L                  LISTABLE OUTPUT ON FILE *OUTPUT*.
00111  M01S00111.ssval   +++|*       L = *LFN*          LISTABLE OUTPUT ON FILE *LFN*.
00112  M01S00112.ssval   +++|*       L = 0              NO OUTPUT FILE GENERATED.
00113  M01S00113.ssval   +++|*       L OMITTED          SAME AS L.
00114  M01S00114.ssval   +++|*
00115  M01S00115.ssval   +++|*       RF                 RELEASE DATA FILE ON LOCAL FILE *ZZZZRDF*.
00116  M01S00116.ssval   +++|*       RF = *LFN*         RELEASE DATA FILE ON FILE *LFN*.
00117  M01S00117.ssval   +++|*       RF OMITTED         USE THE CURRENT VERSION OF THE SFM CATALOGS
00118  M01S00118.ssval   +++|*                          FOR ANALYSIS.
00119  M01S00119.ssval   +++|*
00120  M01S00120.ssval   +++|*       FM                 USE DEFAULT FAMILY.  NOT PERMITTED IF *RF*
00121  M01S00121.ssval   +++|*                          IS SPECIFIED.
00122  M01S00122.ssval   +++|*       FM=FAMILY          FAMILY TO BE ANALYZED.  NOT PERMITTED IF
00123  M01S00123.ssval   +++|*                          *RF* IS SPECIFIED.
00124  M01S00124.ssval   +++|*       FM OMITTED         SAME AS *FM* IF *RF* IS NOT SPECIFIED.  USE
00125  M01S00125.ssval   +++|*                          THE FAMILY ON THE RELEASE DATA FILE IF *RF*
00126  M01S00126.ssval   +++|*                          IS SPECIFIED.
00127  M01S00127.ssval   +++|*
00128  M01S00128.ssval   +++|*       SB                 ALL SUBFAMILIES ARE TO BE PROCESSED.
00129  M01S00129.ssval   +++|*       SB = CHARS         SELECT UP TO EIGHT SUBFAMILIES.  THERE
00130  M01S00130.ssval   +++|*                          ARE EIGHT POSSIBLE SUBFAMILIES NUMBERED FROM
00131  M01S00131.ssval   +++|*                          0 THROUGH 7 (E.G. SB=723 SELECTS SUBFAMILIES
00132  M01S00132.ssval   +++|*                          2,3,AND 7).
00133  M01S00133.ssval   +++|*       SB OMITTED         SAME AS *SB*.
00134  M01S00134.ssval   +++|*
00135  M01S00135.ssval   +++|*       SM                 ALL *SM-S* PROCESSED.
00136  M01S00136.ssval   +++|*       SM = CHARS         SELECT UP TO EIGHT *SM*-S INDICATED
00137  M01S00137.ssval   +++|*                          BY THE LETTERS A-H (E.G. SM=ACHG SELECTS
00138  M01S00138.ssval   +++|*                          *SM-S* A, C, AND H).
00139  M01S00139.ssval   +++|*       SM OMITTED         SAME AS *SM*.
00140  M01S00140.ssval   +++|*
00141  M01S00141.ssval   +++|*       AM                 ANALYZE THE SFM SMMAP.  THIS OPTION MAY
00142  M01S00142.ssval   +++|*                          ONLY BE USED IF *RF* IS NOT SPECIFIED.
00143  M01S00143.ssval   +++|*                          *SSVAL* WILL ONLY EXAMINE A PARTICULAR
00144  M01S00144.ssval   +++|*                          SMMAP IF THE SFM CATALOG HAS A SUBCATALOG
00145  M01S00145.ssval   +++|*                          FOR THE CORRESPONDING *SM* AND IS THAT
00146  M01S00146.ssval   +++|*                          *SM* WAS SELECTED BY THE *CS* PARAMETER.
00147  M01S00147.ssval   +++|*       AM OMITTED         DO NOT ANALYZE THE SFM SMMAP.
00148  M01S00148.ssval   +++|*
00149  M01S00149.ssval   +++|*       FX                 *PFC* AND SFM CATALOGS WILL NOT BE
00150  M01S00150.ssval   +++|*                          AUTOMATICALLY FLAGGED OR FIXED AND RELEASE
00151  M01S00151.ssval   +++|*                          PROCESSING WILL NOT BE PERFORMED IF THERE
00152  M01S00152.ssval   +++|*                          ARE ANY ERRORS (SAME AS FX=0).
00153  M01S00153.ssval   +++|*       FX = N             *PFC* AND SFM CATALOGS WILL ONLY BE
00154  M01S00154.ssval   +++|*                          AUTOMATICALLY FIXED OR RELEASE PROCESSING
00155  M01S00155.ssval   +++|*                          WILL BE PERFORMED ONLY IF THE TOTAL ERROR
00156  M01S00156.ssval   +++|*                          COUNT IS LESS THAN OR EQUAL TO N.
00157  M01S00157.ssval   +++|*       FX OMITTED         SAME AS *FX*.
00158  M01S00158.ssval   +++|*
00159  M01S00159.ssval   +++|*       RL                 RELEASE PROCESSING IS TO BE PERFORMED.
00160  M01S00160.ssval   +++|*                          THIS OPTION MAY ONLY BE USED IF *RF*
00161  M01S00161.ssval   +++|*                          IS ALSO SELECTED.
00162  M01S00162.ssval   +++|*       RL OMITTED         NO RELEASE PROCESSING WILL BE PERFORMED.
00163  M01S00163.ssval   +++|*
00164  M01S00164.ssval   +++|*       ST                 FILES ARE INDICATED AS SCATTERED IF THEY
00165  M01S00165.ssval   +++|*                          SPREAD ACROSS MORE THAN THE MINIMUM NUMBER
00166  M01S00166.ssval   +++|*                          OF CARTRIDGES NEEDED TO CONTAIN THEM.
00167  M01S00167.ssval   +++|*       ST = N             FILES ARE INDICATED AS SCATTERED IF THEY
00168  M01S00168.ssval   +++|*                          SPREAD ACROSS N MORE CARTRIDGES THAN THE
00169  M01S00169.ssval   +++|*                          MINIMUM NUMBER NEEDED TO CONTAIN THEM.
00170  M01S00170.ssval   +++|*       ST OMITTED         SAME AS *ST*.
00171  M01S00171.ssval   +++|*
00172  M01S00172.ssval   +++|*
00173  M01S00173.ssval   +++|
00174  M01S00174.ssval   +++|
00175  M01S00175.ssval   +++|
00176  M01S00176.ssval   +++|***   THE VALIDATION PROCESS EXAMINES THE ALTERNATE STORAGE AND
00177  M01S00177.ssval   +++|*     PERMANENT FILE CATALOGS AND REPORTS VALIDATION ERRORS DETECTED.
00178  M01S00178.ssval   +++|*
00179  M01S00179.ssval   +++|*     THE CATALOG ENTRIES ARE VALIDATED AS FOLLOWS.
00180  M01S00180.ssval   +++|*       . ALL *PFC* ENTRIES FOR USER FILES THAT RESIDE ON MSF.
00181  M01S00181.ssval   +++|*         - THE *ASA* FIELD.
00182  M01S00182.ssval   +++|*           * ASA NOT HEAD OF CHAIN.
00183  M01S00183.ssval   +++|*           * ASA OUT OF RANGE.
00184  M01S00184.ssval   +++|*           * INVALID *SM* IN ASA.
00185  M01S00185.ssval   +++|*           * MULTIPLE *PFC* ENTRIES OWN THE SFM FILE.
00186  M01S00186.ssval   +++|*         - THE READ DATA ERROR FLAG.
00187  M01S00187.ssval   +++|*           * READ ERROR FLAG SET IN *PFC* ENTRY.
00188  M01S00188.ssval   +++|*       . ALL *FCT* ENTRIES IN THE SFM CATALOG.
00189  M01S00189.ssval   +++|*         - THE CARTRIDGE STATUS (INHIBIT, LOST, EXCESSIVE
00190  M01S00190.ssval   +++|*           WRITE PARITY ERROR, START OF FRAGMENT, CONFLICT, SMMAP
00191  M01S00191.ssval   +++|*           ERROR,CSN AND Y AND Z COORDINATES).
00192  M01S00192.ssval   +++|*           * *FCT* ENTRIES CONTAIN THE FOLLOWING PROBLEMS -
00193  M01S00193.ssval   +++|*             - INHIBIT ALLOCATION FLAG SET.
00194  M01S00194.ssval   +++|*             - FROZEN CHAIN FLAG SET.
00195  M01S00195.ssval   +++|*             - EXCESSIVE WRITE PARITY ERRORS FLAG SET.
00196  M01S00196.ssval   +++|*             - START OF FRAGMENT FLAG SET.
00197  M01S00197.ssval   +++|*             - AU CONFLICT FLAG SET.
00198  M01S00198.ssval   +++|*             - LOST CARTRIDGE FLAG SET.
00199  M01S00199.ssval   +++|*         - THE AU CHAIN INFORMATION (CHAIN CONTROL, OFF CARTRIDGE
00200  M01S00200.ssval   +++|*           LINK FLAG, OFF CARTRIDGE LINKS).
00201  M01S00201.ssval   +++|*           * CHAINS INTERSECT OR ARE ILL-FORMED.
00202  M01S00202.ssval   +++|*           * FRAGMENTS DETECTED.
00203  M01S00203.ssval   +++|*           * SCATTERED FILE DETECTED.
00204  M01S00204.ssval   +++|*           * NO VALID SMMAP ENTRY FOR THE FCT.
00205  M01S00205.ssval   +++|*
00206  M01S00206.ssval   +++|*       . ALL SMMAP ENTRIES ASSIGNED TO THE SUBFAMILY.
00207  M01S00207.ssval   +++|*         - THE VSN, FAMILY, SUBFAMILY, *FCT* ORDINAL FIELDS.
00208  M01S00208.ssval   +++|*       . SMMAP ENTRY ALLOCATED TO THE SUBFAMILY THAT HAS NO
00209  M01S00209.ssval   +++|*         VALID *FCT* ENTRY IN THE SFM CATALOG.
00210  M01S00210.ssval   +++|*
00211  M01S00211.ssval   +++|
00212  M01S00212.ssval   +++|***   THE RESULTS OF RUNNING *SSVAL* ARE:
00213  M01S00213.ssval   +++|*     - THE VALIDATION REPORT.
00214  M01S00214.ssval   +++|*     - THE RELEASE OF FREE SFM SPACE IN THE SFM CATALOG.
00215  M01S00215.ssval   +++|*     - THE REPAIRS OF THE CATALOGS FOR VALIDATION ERRORS DETECTED.
00216  M01S00216.ssval   +++|*
00217  M01S00217.ssval   +++|*     FREE SPACE IN THE SFM CATALOG IS RELEASED IF THE RF AND
00218  M01S00218.ssval   +++|*     RL CONTROL CARD PARAMETERS WERE SPECIFIED AND IF THE
00219  M01S00219.ssval   +++|*     TOTAL VALIDATION ERRORS DETECTED WERE LESS THAT THE
00220  M01S00220.ssval   +++|*     THRESHOLD SET BY THE FX CONTROL CARD PARAMETER.  IN ADDITION,
00221  M01S00221.ssval   +++|*     THE RELEASE FOR A SPECIFIC SUBFAMILY AND *SM* OCCURS ONLY
00222  M01S00222.ssval   +++|*     IF THE RDF FILE DATE AND TIME IS MORE RECENT THAN THE
00223  M01S00223.ssval   +++|*     LAST PURGE DATE AND TIME RECORDED IN THE PREAMBLE OF THE
00224  M01S00224.ssval   +++|*     SFM CATALOG.
00225  M01S00225.ssval   +++|*
00226  M01S00226.ssval   +++|*     REPAIRS TO THE CATALOGS OCCUR ONLY IF THE FM CONTROL CARD
00227  M01S00227.ssval   +++|*     PARAMETER IS ACTIVE AND THE TOTAL VALIDATION ERRORS ARE
00228  M01S00228.ssval   +++|*     LESS THAN THE THRESHOLD SET BY THE FX CONTROL CARD PARAMETER.
00229  M01S00229.ssval   +++|*
00230  M01S00230.ssval   +++|*     *PFC* ENTRIES CAN ONLY BE REPAIRED IF THE FILE IS DISK RESIDENT.
00231  M01S00231.ssval   +++|*       - THE *ASA* IS CLEARED IN THE *PFC* ENTRY TO PREVENT THE
00232  M01S00232.ssval   +++|*         RELEASE OF THE DISK SPACE.
00233  M01S00233.ssval   +++|*     REPAIRS TO THE SFM CATALOG OCCUR IF ERRORS ARE DETECTED IN
00234  M01S00234.ssval   +++|*     *FCT* ENTRIES.
00235  M01S00235.ssval   +++|*       - THE FOLLOWING FLAGS ARE SET IN THE SFM CATALOG *FCT* ENTRY.
00236  M01S00236.ssval   +++|*         . THE FROZEN FLAG IS SET TO PREVENT AUTOMATIC RELEASE OF THE
00237  M01S00237.ssval   +++|*           SFM FILE SPACE AND ALLOW INSPECTION OF THE SFM DATA.
00238  M01S00238.ssval   +++|*         . THE START OF FRAGMENT FLAG IS SET IF A FRAGMENT WAS
00239  M01S00239.ssval   +++|*           DETECTED.
00240  M01S00240.ssval   +++|*         . THE SMMAP ERROR FLAG IS SET IF THE *FCT* HAS NO SMMAP
00241  M01S00241.ssval   +++|*           ENTRY.
00242  M01S00242.ssval   +++|*         . THE INHIBIT FLAG IS SET IF THE SMMAP ERROR OCCURRED.
00243  M01S00243.ssval   +++|*     REPAIR TO THE SMMAP FILE OCCURS FOR ERRORS DETECTED IN THE
00244  M01S00244.ssval   +++|*     SMMAP-*FCT* LINKAGE.
00245  M01S00245.ssval   +++|*         . THE ERROR FLAG IN THE SMMAP ENTRY IS SET.
00246  M01S00246.ssval   +++|*
00247  M01S00247.ssval   +++|*     THE VALIDATION REPORT CONTAINS INFORMATIONAL AND ERROR LINES
00248  M01S00248.ssval   +++|*     DESCRIBING WHAT WAS VALIDATED AND WHAT WAS FOUND TO BE IN ERROR.
00249  M01S00249.ssval   +++|*
00250  M01S00250.ssval   +++|*     COLUMN 0 IS RESERVED FOR THE CARRIAGE CONTROL CHARACTER.
00251  M01S00251.ssval   +++|*
00252  M01S00252.ssval   +++|*     THE TITLE, INFORMATIONAL AND HEADING LINES START IN COLUMN  4.
00253  M01S00253.ssval   +++|*
00254  M01S00254.ssval   +++|*     THE DETAIL LINES START IN COLUMN 7 OR BEYOND.
00255  M01S00255.ssval   +++|*
00256  M01S00256.ssval   +++|*       LINE           -             GENERAL
00257  M01S00257.ssval   +++|*       TYPE           -             FORMAT
00258  M01S00258.ssval   +++|*       ----           -             ------
00259  M01S00259.ssval   +++|*
00260  M01S00260.ssval   +++|*     TITLE            -    SSVAL - VALIDATION REPORT     ...VER 1.0
00261  M01S00261.ssval   +++|*     SUB-TITLE        -            FAMILY = NAME
00262  M01S00262.ssval   +++|*
00263  M01S00263.ssval   +++|*     PRESET           -                (CONTROL CARD IMAGE)
00264  M01S00264.ssval   +++|*       DETAIL         -                (LIST OF) KEYWORD = VALUE.
00265  M01S00265.ssval   +++|*
00266  M01S00266.ssval   +++|*     RDF DETAIL       -    RDF FILE FAMILY = NAME
00267  M01S00267.ssval   +++|*                      -    RDF FILE BUDT   = DATE-TIME
00268  M01S00268.ssval   +++|*
00269  M01S00269.ssval   +++|*     PRESET           -    *** PF = NAME          INVALID SM IN PFC
00270  M01S00270.ssval   +++|*       ERRORS         -        UI = VALUE
00271  M01S00271.ssval   +++|*
00272  M01S00272.ssval   +++|*     SUBCATALOG       -    SUBFAMILY = N  *SM* = X    "GOOD"
00273  M01S00273.ssval   +++|*       HEADINGS       -                              "INTERSECTIONS"
00274  M01S00274.ssval   +++|*                      -                              "PROBLEMS"
00275  M01S00275.ssval   +++|*
00276  M01S00276.ssval   +++|*     SUB-HEADING      -                    -HEAD OF CHAINS-
00277  M01S00277.ssval   +++|*       INTERSECTIONS  -                 FCTORD-STRM   FCTORD-STRM
00278  M01S00278.ssval   +++|*
00279  M01S00279.ssval   +++|*     INTERSECTIONS    -                 (CHAIN-ID)     (CHAIN-ID)
00280  M01S00280.ssval   +++|*       DETAIL         -
00281  M01S00281.ssval   +++|*
00282  M01S00282.ssval   +++|*     SUB-HEADING      -     ERR   IDENTIFICATION     -CHAIN-    ERROR
00283  M01S00283.ssval   +++|*       PROBLEMS       -     TYP                  FCT-STM-A/U-H-E
00284  M01S00284.ssval   +++|*
00285  M01S00285.ssval   +++|*     PROBLEM          -      4    PF=NAME
00286  M01S00286.ssval   +++|*       DETAIL         -           UI=VALUE
00287  M01S00287.ssval   +++|*                      -           BU=DATE-TIME
00288  M01S00288.ssval   +++|*                      -           DI=N/Y           (CHAIN-ID)   TEXT
00289  M01S00289.ssval   +++|*                                                   (CHAIN-ID)  (TEXT)
00290  M01S00290.ssval   +++|*                                                                TEXT
00291  M01S00291.ssval   +++|*
00292  M01S00292.ssval   +++|*     SUMMARY          -    FREE M860 FILE    = NNN
00293  M01S00293.ssval   +++|*                      -    FREE M860 AU-S = NNNN
00294  M01S00294.ssval   +++|*                      -    TOTAL VALIDATION ERRORS = NNN
00295  M01S00295.ssval   +++|*
00296  M01S00296.ssval   +++|*     MISCELLANEOUS    -    ***CONNECT TO EXEC FAILED
00297  M01S00297.ssval   +++|*                      -    CATALOGS NOT MODIFIED
00298  M01S00298.ssval   +++|*                      -    CATALOGS MODIFIED
00299  M01S00299.ssval   +++|*                      -    FREE FILES RELEASED
00300  M01S00300.ssval   +++|*
00301  M01S00301.ssval   +++|*
00302  M01S00302.ssval   +++|*     THE INTERSECTIONS REPORT SECTION IS ISSUED FOR THE SUBCATALOG
00303  M01S00303.ssval   +++|*     WHEN INTERSECTIONS ARE DETECTED.
00304  M01S00304.ssval   +++|*
00305  M01S00305.ssval   +++|*     THE PROBLEM REPORT SECTION IS ISSUED AT THE END OF EACH
00306  M01S00306.ssval   +++|*     SUBCATALOG-S VALIDATION.
00307  M01S00307.ssval   +++|*
00308  M01S00308.ssval   +++|*     ENOUGH IDENTIFICATION IS GIVEN TO ALLOW THE ANALYST TO LOCATE THE
00309  M01S00309.ssval   +++|*     ENTRY(S) RELATING TO THE PROBLEM IN THE CATALOGS: SFM CATALOG,
00310  M01S00310.ssval   +++|*     *PFC* OR SMMAP.
00311  M01S00311.ssval   +++|*
00312  M01S00312.ssval   +++|*     ERROR TYPE VALUES IN THE PROBLEM REPORT SECTION ARE -
00313  M01S00313.ssval   +++|*         1 - *FCT* ENTRY WITH NO VALID SMMAP ENTRY.
00314  M01S00314.ssval   +++|*         2 - SMMAP ENTRY WITH NO VALID *FCT* ENTRY.
00315  M01S00315.ssval   +++|*         3 - *PFC* ENTRY WITH INVALID ASA.
00316  M01S00316.ssval   +++|*         4 - *PFC* ENTRY WITH PROBLEMS.
00317  M01S00317.ssval   +++|*         5 - ORPHANS WITH PROBLEMS.
00318  M01S00318.ssval   +++|*         6 - CHAIN FRAGMENTS.
00319  M01S00319.ssval   +++|*         7 - UNALLOCATED SFM ENTRIES WITH PROBLEMS.
00320  M01S00320.ssval   +++|*
00321  M01S00321.ssval   +++|
00322  M01S00322.ssval   +++|
00323  M01S00323.ssval   +++|***   DAYFILE MESSAGES.
00324  M01S00324.ssval   +++|*
00325  M01S00325.ssval   +++|*      * SSVAL COMPLETED.*
00326  M01S00326.ssval   +++|*      * SSVAL ABORTED.*
00327  M01S00327.ssval   +++|*      * FREE FILES RELEASED.*
00328  M01S00328.ssval   +++|*      * CATALOGS MODIFIED.*
00329  M01S00329.ssval   +++|*      * CATALOGS NOT MODIFIED.*
00330  M01S00330.ssval   +++|*      * TOTAL VALIDATION ERRORS = NN.*
00331  M01S00331.ssval   +++|*      * VALIDATING SB=N SM=X.*
00332  M01S00332.ssval   +++|*      * CONTROL CARD SYNTAX ERROR.*
00333  M01S00333.ssval   +++|*      * INVALID CS PARAMETER.*
00334  M01S00334.ssval   +++|*      * INVALID FX PARAMETER.*
00335  M01S00335.ssval   +++|*      * INVALID SB PARAMETER.*
00336  M01S00336.ssval   +++|*      * INVALID ST PARAMETER.*
00337  M01S00337.ssval   +++|*      * ILLEGAL - L AND RF PARAMETER.*
00338  M01S00338.ssval   +++|*      * ILLEGAL - RL AND NO RF PARAMETER.*
00339  M01S00339.ssval   +++|*      * ILLEGAL - RF AND FM PARAMETER.*
00340  M01S00340.ssval   +++|*      * ILLEGAL - RF AND AM PARAMETER.*
00341  M01S00341.ssval   +++|*      * SSVAL - MUST BE SYSTEM ORIGIN.*
00342  M01S00342.ssval   +++|*      * RDF FILE ERROR - MISSING HEADER.*
00343  M01S00343.ssval   +++|*      * RDF FILE ERROR - BAD RECORD LENGTH.*
00344  M01S00344.ssval   +++|*      * RDF FILE ERROR - UNIDENTIFIED DATA.*
00345  M01S00345.ssval   +++|*      * SFM CATALOG OPEN ERROR.*
00346  M01S00346.ssval   +++|*      * SFM CATALOG READ ERROR.*
00347  M01S00347.ssval   +++|*      * SMMAP OPEN ERROR.*
00348  M01S00348.ssval   +++|*      * SMMAP READ ERROR.*
00349  M01S00349.ssval   +++|*      * REQUIRED FL EXCEEDS JOB MAX.*
00350  M01S00350.ssval   +++|*      * CONNECT TO EXEC FAILED.*
00351  M01S00351.ssval   +++|*      * UCP CALL ERROR.*
00352  M01S00352.ssval   +++|*      * FAMILY NOT FOUND IN SYSTEM.*
00353  M01S00353.ssval   +++|*      * ERROR READING *PFC*.*
00354  M01S00354.ssval   +++|*      * SSVAL ABNORMAL* NAME.*
00355  M01S00355.ssval   +++|*
00356  M01S00356.ssval   +++|
00357  M01S00357.ssval   +++|
00358  M01S00358.ssval   +++|***   OPERATOR MESSAGES.
00359  M01S00359.ssval   +++|*
00360  M01S00360.ssval   +++|*      * WAITING FOR FILE FILENAME.*
00361  M01S00361.ssval   +++|*      * WAITING FOR EXEC.*
00362  M01S00362.ssval   +++|*      * VALIDATING SB=N SM=X.*
00363  M01S00363.ssval   +++|*
00364  M01S00364.ssval   +++|
00365  M01S00365.ssval   +++|***   SSVAL.
00366  M01S00366.ssval   +++|*
00367  M01S00367.ssval   +++|*     *SSVAL* IS THE M860 UTILITY PROGRAM THAT VALIDATES DATA IN THE
00368  M01S00368.ssval   +++|*     SFM CATALOG, THE PERMANENT FILE CATALOG (PFC) AND THE SMMAP
00369  M01S00369.ssval   +++|*     FILE.  IT CAN ALSO REPAIR THE CATALOGS FOR VALIDATION
00370  M01S00370.ssval   +++|*     ERRORS DETECTED AND RELEASE FREE SPACE IN THE SFM CATALOG FOR
00371  M01S00371.ssval   +++|*     PURGED USER FILES.
00372  M01S00372.ssval   +++|*
00373  M01S00373.ssval   +++|*     SSVAL(P1,P2,...,PN)
00374  M01S00374.ssval   +++|*
00375  M01S00375.ssval   +++|*     PRGM SSVAL
00376  M01S00376.ssval   +++|*
00377  M01S00377.ssval   +++|*     MESSAGES  * CONNECT TO EXEC FAILED.*
00378  M01S00378.ssval   +++|*               * SSVAL COMPLETED.*
00379  M01S00379.ssval   +++|*
00380  M01S00380.ssval   +++|*     NOTES    *SSVAL* -
00381  M01S00381.ssval   +++|*              . CALLS VLPRSET TO INITIALIZE FILES AND PARAMETERS.
00382  M01S00382.ssval   +++|*              . CONNECTS TO M860 *EXEC*.
00383  M01S00383.ssval   +++|*              . CALLS VLSUBFM FOR EACH SUBFAMILY TO VALIDATE.
00384  M01S00384.ssval   +++|*              . CALLS VLFIX TO PERFORM REPAIR/RELEASE PROCESSING
00385  M01S00385.ssval   +++|*                ON THE CATALOGS.
00386  M01S00386.ssval   +++|*              . DISCONNECTS AND CLOSES.
00387  M01S00387.ssval   +++|*
00388  M01S00388.ssval   +++|
00389  M01S00389.ssval   +++|**********
00390  M01S00390.ssval   +++|
00391  M01S00391.ssval   +++|**    METHOD.  OR  METHODS....
00392  M01S00392.ssval   +++|*
00393  M01S00393.ssval   +++|*     A NUMBER OF LOCAL FILES ARE USED TO RETAIN INFORMATION
00394  M01S00394.ssval   +++|*     THROUGHOUT THE VALIDATION PROCESS -
00395  M01S00395.ssval   +++|*
00396  M01S00396.ssval   +++|*      . *PFC* EXTRACT FILES - CONTAIN EXTRACTS FROM THE LIVE
00397  M01S00397.ssval   +++|*            *PFC* OR FROM THE RDF FILE.  THERE IS A SEPARATE
00398  M01S00398.ssval   +++|*            FILE FOR EACH SUBFAMILY.
00399  M01S00399.ssval   +++|*
00400  M01S00400.ssval   +++|*      . PROBLEM FILE - CONTAINS ENTRIES FOR VALIDATION
00401  M01S00401.ssval   +++|*            ERRORS DETECTED.
00402  M01S00402.ssval   +++|*
00403  M01S00403.ssval   +++|*      . FIXIT FILE - CONTAINS ENTRIES FOR ALL REPAIRS AND
00404  M01S00404.ssval   +++|*            RELEASES THAT MAY BE PERFORMED.
00405  M01S00405.ssval   +++|*
00406  M01S00406.ssval   +++|*      . ZZZVALX FILES - CONTAIN COPIES OF THE SFM CATALOGS,
00407  M01S00407.ssval   +++|*            FROM THE RDF FILE.  THERE IS A SEPARATE FILE
00408  M01S00408.ssval   +++|*            FOR EACH SUBFAMILY.
00409  M01S00409.ssval   +++|*
00410  M01S00410.ssval   +++|*     A VALIDATION TABLE (*VT*) IS USED TO CONTAIN AND EXAMINE
00411  M01S00411.ssval   +++|*     THE *FCT* DATA FOR A SUBCATALOG IN THE SFM CATALOG.  THE
00412  M01S00412.ssval   +++|*     *VT* HAS A 1 WORD ENTRY.
00413  M01S00413.ssval   +++|*
00414  M01S00414.ssval   +++|*     EACH WORD (REPRESENTING ONE AU IN THE *FCT*) CONTAINS
00415  M01S00415.ssval   +++|*     STATUS AND LINKAGE INFORMATION ABOUT THE AU -
00416  M01S00416.ssval   +++|*         . ALLOCATED OR NOT.
00417  M01S00417.ssval   +++|*         . HEAD OF CHAIN AND/OR END OF CHAIN
00418  M01S00418.ssval   +++|*         . *PFC* OWNER FLAG
00419  M01S00419.ssval   +++|*         . VALIDATION ERROR FLAGS.
00420  M01S00420.ssval   +++|*         . A LINK TO THE NEXT AU IN THE CHAIN.
00421  M01S00421.ssval   +++|*
00422  M01S00422.ssval   +++|*     VALIDATION ERROR FLAGS ARE ASSIGNED PROBLEM TYPES (1,2, OR 4)
00423  M01S00423.ssval   +++|*     THAT REFLECT THE SUBSEQUENT REPORT AND REPAIR PROCESSING
00424  M01S00424.ssval   +++|*     THAT SHOULD OCCUR -
00425  M01S00425.ssval   +++|*         TYPE 1 - REPORT THE PROBLEM AND DO NOT REPAIR.
00426  M01S00426.ssval   +++|*         TYPE 2 - REPORT THE PROBLEM.  REPAIR ONLY IF THERE
00427  M01S00427.ssval   +++|*                  IS AN ASSOCIATED *PFC* ENTRY.
00428  M01S00428.ssval   +++|*         TYPE 4 - REPORT THE PROBLEM AND REPAIR THE CATALOG(S).
00429  M01S00429.ssval   +++|*
00430  M01S00430.ssval   +++|*     THE *VT* IS USED AS A FAST METHOD TO FOLLOW CHAINS TO
00431  M01S00431.ssval   +++|*     ENSURE THAT THEY ARE VALID.  ERRORS ARE-
00432  M01S00432.ssval   +++|*         . INTERSECTING CHAINS.
00433  M01S00433.ssval   +++|*         . ILL-FORMED CHAINS.
00434  M01S00434.ssval   +++|*
00435  M01S00435.ssval   +++|*     AS THE CHAIN IS FOLLOWED, EACH ENTRY IS MARKED BY SETTING
00436  M01S00436.ssval   +++|*     THE POINTER FIELD TO THE HEAD OF CHAIN ENTRY.
00437  M01S00437.ssval   +++|*
00438  M01S00438.ssval   +++|**    GENERAL RULES.
00439  M01S00439.ssval   +++|*
00440  M01S00440.ssval   +++|*     *SSVAL* ALWAYS ISSUES A SUBSYSTEM REQUEST USING THE
00441  M01S00441.ssval   +++|*     SUBSYSTEM ID FOR THE M860 EXEC AND PARAMETERS FOR A
00442  M01S00442.ssval   +++|*     "CONNECT".  IF THE M860 EXEC IS NOT PRESENT OR IF THE
00443  M01S00443.ssval   +++|*     M860 EXEC RETURNS AN ERROR STATUS, *SSVAL* ISSUES A
00444  M01S00444.ssval   +++|*     MESSAGE "CONNECT TO EXEC FAILED" AND CONTINUES.  BUT
00445  M01S00445.ssval   +++|*     NO FURTHER SUBSYSTEM REQUESTS ARE MADE.  THEREFORE, NO
00446  M01S00446.ssval   +++|*     REPAIR/RELEASE PROCESSING CAN OCCUR.  SSVAL CONTINUES
00447  M01S00447.ssval   +++|*     IN THIS "LIMITED" MODE TO PRODUCE THE VALIDATION REPORT.
00448  M01S00448.ssval   +++|*
00449  M01S00449.ssval   +++|*     THE CATALOGS ARE ATTACHED IN READ MODE.  THIS PROVIDES AN
00450  M01S00450.ssval   +++|*     INTERLOCK TO ENSURE THAT NO ONE IS MODIFIYING THE DATA
00451  M01S00451.ssval   +++|*     DURING VALIDATION.
00452  M01S00452.ssval   +++|*
00453  M01S00453.ssval   +++|*     I/O ERRORS WILL BE DETECTED AND PROCESSED BY *CIO*.
00454  M01S00454.ssval   +++|*
00455  M01S00455.ssval   +++|**    HEIRARCHY.
00456  M01S00456.ssval   +++|*
00457  M01S00457.ssval   +++|*     3 MAJOR STEPS -
00458  M01S00458.ssval   +++|*
00459  M01S00459.ssval   +++|*      . PRESET - PROCESS THE CONTROL CARD PARAMETERS INTO
00460  M01S00460.ssval   +++|*                 RUN TIME PARAMETERS.
00461  M01S00461.ssval   +++|*               - PROCESS INPUT FILES TO GENERATE WORKING FILES.
00462  M01S00462.ssval   +++|*
00463  M01S00463.ssval   +++|*      . VALIDATE (THIS STEP REPEATS FOR ALL SELECTED
00464  M01S00464.ssval   +++|*              SUBCATALOGS WITHIN SELECTED SUBFAMILIES).
00465  M01S00465.ssval   +++|*               - ANALYZES ALL CATALOG DATA AND GENERATES THE
00466  M01S00466.ssval   +++|*                 PROBLEM FILE.
00467  M01S00467.ssval   +++|*               - EXAMINES ALL PROBLEM FILE ENTRIES AND GENERATES
00468  M01S00468.ssval   +++|*                 THE VALIDATION REPORT AND THE FIXIT FILE.
00469  M01S00469.ssval   +++|*
00470  M01S00470.ssval   +++|*      . FIX    - EXAMINES THE FIXIT FILE ENTRIES AND RELEASES FREE
00471  M01S00471.ssval   +++|*                 SPACE IF THIS MODE IS SELECTED.
00472  M01S00472.ssval   +++|*               - EXAMINES THE FIXIT FILE ENTRIES AND REPAIRS CATALOG
00473  M01S00473.ssval   +++|*                 ENTRIES IF THIS OPTION IS SELECTED.
00474  M01S00474.ssval   +++|*
00475  M01S00475.ssval   +++|*
00476  M01S00476.ssval   +++|*     *SSVAL* MAJOR ROUTINES.
00477  M01S00477.ssval   +++|*       1.0  VLPRSET - PRESET PARAMETERS AND FILES.
00478  M01S00478.ssval   +++|*            1.1 VLTAB -
00479  M01S00479.ssval   +++|*            1.2 VLPFC - READ THE PFC.
00480  M01S00480.ssval   +++|*            1.3 VLRDF - READ THE RDF FILE.
00481  M01S00481.ssval   +++|*                1.3.1 VLRDF2 - PROCESS THE RDF RECORD.
00482  M01S00482.ssval   +++|*
00483  M01S00483.ssval   +++|*       2.0  VLSUBFM - SUBFAMILY VALIDATION.
00484  M01S00484.ssval   +++|*            2.1 VLBLDVT - BUILD VALIDATION TABLE.
00485  M01S00485.ssval   +++|*                2.1.1 VLCMAP - SMMAP LOOKUP.
00486  M01S00486.ssval   +++|*            2.2 VLASFM - ANALYZE THE SFM CATALOG.
00487  M01S00487.ssval   +++|*                2.2.1 VLNCS - NORMAL CHAIN SCAN.
00488  M01S00488.ssval   +++|*                2.2.2 VLCFS - CHAIN FRAGMENT SCAN.
00489  M01S00489.ssval   +++|*                2.2.3 VLSMSC - SMMAP SCAN.
00490  M01S00490.ssval   +++|*            2.3 VLAPFC - ANALYZE THE *PFC* CATALOG.
00491  M01S00491.ssval   +++|*                2.3.1 VLAPFC2 - ANALYZE *PFC* PASS 2.
00492  M01S00492.ssval   +++|*            2.4 VLRPT - VALIDATION REPORT.
00493  M01S00493.ssval   +++|*                2.4.1 VLRPTL - ISSUE REPORT LINE.
00494  M01S00494.ssval   +++|*                2.4.2 VLSCH - SCAN CHAIN FOR REPORT.
00495  M01S00495.ssval   +++|*
00496  M01S00496.ssval   +++|*       3.0  VLFIX - FIX CATALOGS.
00497  M01S00497.ssval   +++|*            3.1 VLFIXP - FIX PFC.
00498  M01S00498.ssval   +++|*
00499  M01S00499.ssval   +++|
00500  M01S00500.ssval   +++|**    EXTERNAL INTERFACE ROUTINES.
00501  M01S00501.ssval   +++|*
00502  M01S00502.ssval   +++|*     CATALOG/MAP ACCESS ROUTINES.
00503  M01S00503.ssval   +++|*     M860 REPORT FORMATTER.
00504  M01S00504.ssval   +++|*     NOS MACROS USING THE SYMPL INTERFACES ON MAC1.
00505  M01S00505.ssval   +++|*     SPECIAL ROUTINES ON MAC2.
00506  M01S00506.ssval   +++|*      - XARG
00507  M01S00507.ssval   +++|*      - CALLSS
00508  M01S00508.ssval   +++|*      - CINTLK
00509  M01S00509.ssval   +++|*      - GETFAM
00510  M01S00510.ssval   +++|*      - RDPFC
00511  M01S00511.ssval   +++|*      - SETASA
00512  M01S00512.ssval   +++|*      - SETPFP
00513  M01S00513.ssval   +++|*      - UATTACH
00514  M01S00514.ssval   +++|#
00515  M01S00515.ssval   +++|
00516  M01S00516.ssval   +++|                                               CONTROL PRESET;
00517  M01S00517.ssval   +++|
00518  M01S00518.ssval   +++|#
00519  M01S00519.ssval   +++|****  PROC SSVAL - XREF LIST BEGIN.
00520  M01S00520.ssval   +++|#
00521  M01S00521.ssval   +++|
00522  M01S00522.ssval   +++|      XREF
00523  M01S00523.ssval   +++|        BEGIN
00524  M01S00524.ssval   +++|        PROC ABORT;                  # CALLS *ABORT* MACRO #
00525  M01S00525.ssval   +++|        PROC GETPFP;                 # GET USER INDEX AND FAMILY #
00526  M01S00526.ssval   +++|        PROC GETSPS;                 # GET SYSTEM ORIGIN STATUS #
00527  M01S00527.ssval   +++|        PROC MEMORY;                 # INTERFACE TO *MEMORY* MACRO #
00528  M01S00528.ssval   +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
00529  M01S00529.ssval   +++|                                       OR RETURN #
00530  M01S00530.ssval   +++|        PROC RPCLOSE;                # CLOSES A PRINT FILE #
00531  M01S00531.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
00532  M01S00532.ssval   +++|        PROC VLFIX;                  # FIX CATALOGS #
00533  M01S00533.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
00534  M01S00534.ssval   +++|        PROC VLPRSET;                # PRESET PARAMETERS AND FILES #
00535  M01S00535.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
00536  M01S00536.ssval   +++|        PROC VLSUBFM;                # SUBFAMILY VALIDATION #
00537  M01S00537.ssval   +++|        END
00538  M01S00538.ssval   +++|
00539  M01S00539.ssval   +++|#
00540  M01S00540.ssval   +++|****  PROC SSVAL - XREF LIST END.
00541  M01S00541.ssval   +++|#
00542  M01S00542.ssval   +++|
00543  M01S00543.ssval   +++|      DEF RSLEN      #1#;            # RETURN STATUS WORD LENGTH #
00544  M01S00544.ssval   +++|      DEF LISTCON    #0#;            # TURN OFF COMMON DECK LISTINGS #
00545  M01S00545.ssval   +++|
00546  M01S00546.ssval   +++|*CALL COMBFAS
00547  M01S00547.ssval   +++|*CALL COMBCMD
00548  M01S00548.ssval   +++|*CALL COMBCPR
00549  M01S00549.ssval   +++|*CALL COMBMAP
00550  M01S00550.ssval   +++|*CALL COMBMCT
00551  M01S00551.ssval   +++|*CALL COMBPFP
00552  M01S00552.ssval   +++|*CALL COMTFMT
00553  M01S00553.ssval   +++|*CALL COMTVLD
00554  M01S00554.ssval   +++|*CALL COMTVLF
00555  M01S00555.ssval   +++|*CALL COMTVLM
00556  M01S00556.ssval   +++|*CALL COMTVLV
00557  M01S00557.ssval   +++|*CALL COMTVLX
00558  M01S00558.ssval   +++|
00559  M01S00559.ssval   +++|
00560  M01S00560.ssval   +++|      ARRAY SCR$FET [0:0] S(SFETL);;  # SCRATCH FET #
00561  M01S00561.ssval   +++|      ARRAY SPSSTAT [0:0] S(RSLEN);
00562  M01S00562.ssval   +++|        BEGIN
00563  M01S00563.ssval   +++|        ITEM SPS$STATUS U(00,48,12);  # RETURN STATUS #
00564  M01S00564.ssval   +++|        END
00565  M01S00565.ssval   +++|                                               CONTROL EJECT;
00566  M01S00566.ssval   +++|
00567  M01S00567.ssval   +++|      GETSPS(SPSSTAT);               # GET SYSTEM ORIGIN STATUS #
00568  M01S00568.ssval   +++|      IF SPS$STATUS NQ 0
00569  M01S00569.ssval   +++|      THEN
00570  M01S00570.ssval   +++|        BEGIN
00571  M01S00571.ssval   +++|        VLMSG(VM"NEEDSYOT");         # MUST HAVE SYSTEM PRIVILEGES #
00572  M01S00572.ssval   +++|        ABORT;
00573  M01S00573.ssval   +++|        END
00574  M01S00574.ssval   +++|
00575  M01S00575.ssval   +++|#
00576  M01S00576.ssval   +++|*     SAVE THE USER-S CURRENT FAMILY AND USER INDEX IN COMMON.
00577  M01S00577.ssval   +++|#
00578  M01S00578.ssval   +++|
00579  M01S00579.ssval   +++|      GETPFP(PFP[0]);
00580  M01S00580.ssval   +++|      USER$FAM[0] = PFP$FAM[0];
00581  M01S00581.ssval   +++|      USER$UI[0] = PFP$UI[0];
00582  M01S00582.ssval   +++|
00583  M01S00583.ssval   +++|#
00584  M01S00584.ssval   +++|*     GET CURRENT JOB FIELD LENGTH.
00585  M01S00585.ssval   +++|#
00586  M01S00586.ssval   +++|
00587  M01S00587.ssval   +++|      MEM$MIN = O"50000";            # SAVE PROGRAM SIZE #
00588  M01S00588.ssval   +++|      MEM$WDS[0] = MEM$MIN;
00589  M01S00589.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);   # SET MEMORY #
00590  M01S00590.ssval   +++|
00591  M01S00591.ssval   +++|#
00592  M01S00592.ssval   +++|*     GET MAXIMUM JOB FIELD LENGTH.
00593  M01S00593.ssval   +++|#
00594  M01S00594.ssval   +++|
00595  M01S00595.ssval   +++|      MEM$WDS[0] = REQMAXFL;
00596  M01S00596.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);
00597  M01S00597.ssval   +++|      MEM$MAX = MEM$WDS[0];          # SAVE MAXIMUM MEMORY ALLOWED #
00598  M01S00598.ssval   +++|
00599  M01S00599.ssval   +++|#
00600  M01S00600.ssval   +++|*     PRESET - PROCESS CONTROL CARD AND INITIALIZE FILES.
00601  M01S00601.ssval   +++|#
00602  M01S00602.ssval   +++|
00603  M01S00603.ssval   +++|      VLPRSET;
00604  M01S00604.ssval   +++|
00605  M01S00605.ssval   +++|#
00606  M01S00606.ssval   +++|*     CONNECT TO SUBSYSTEM.
00607  M01S00607.ssval   +++|#
00608  M01S00608.ssval   +++|
00609  M01S00609.ssval   +++|      CONNECTED = TRUE;              # INITIALIZE FOR VLREQEX CALL #
00610  M01S00610.ssval   +++|      VLREQEX(TYP"TYP1",REQTYP1"CONNECT");
00611  M01S00611.ssval   +++|      IF STAT NQ 0
00612  M01S00612.ssval   +++|      THEN                           # CONNECT REQUEST FAILED #
00613  M01S00613.ssval   +++|        BEGIN
00614  M01S00614.ssval   +++|        VLERROR(VE"NCONNECT",NOABT);  # ISSUE ERROR MESSAGE #
00615  M01S00615.ssval   +++|        CONNECTED = FALSE;           # NOT CONNECTED #
00616  M01S00616.ssval   +++|        END
00617  M01S00617.ssval   +++|
00618  M01S00618.ssval   +++|#
00619  M01S00619.ssval   +++|*     VALIDATE ALL SELECTED SUBFAMILIES.  ONLY THOSE SUBFAMILIES
00620  M01S00620.ssval   +++|*     SELECTED BY THE CONTROL CARD AND WHO HAVE THE SFM CATALOG FILE
00621  M01S00621.ssval   +++|*     AVAILABLE IN THIS RUN ARE VALIDATED.
00622  M01S00622.ssval   +++|#
00623  M01S00623.ssval   +++|
00624  M01S00624.ssval   +++|      SLOWFOR SBINDX = 0 STEP 1 UNTIL MAXSF
00625  M01S00625.ssval   +++|      DO
00626  M01S00626.ssval   +++|        BEGIN
00627  M01S00627.ssval   +++|        IF (B<SBINDX,1>PAR$SB EQ 1) AND (B<SBINDX,1>SFMCATDEF EQ 1)
00628  M01S00628.ssval   +++|          THEN
00629  M01S00629.ssval   +++|          BEGIN
00630  M01S00630.ssval   +++|          VLSUBFM;                   # VALIDATE SUBFAMILY #
00631  M01S00631.ssval   +++|          END
00632  M01S00632.ssval   +++|
00633  M01S00633.ssval   +++|        END
00634  M01S00634.ssval   +++|
00635  M01S00635.ssval   +++|#
00636  M01S00636.ssval   +++|*     RETURN MEMORY USED IN VALIDATION.
00637  M01S00637.ssval   +++|#
00638  M01S00638.ssval   +++|
00639  M01S00639.ssval   +++|      MEM$WDS[0] = MEM$MIN;
00640  M01S00640.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);   # REDUCE FL #
00641  M01S00641.ssval   +++|
00642  M01S00642.ssval   +++|
00643  M01S00643.ssval   +++|
00644  M01S00644.ssval   +++|#
00645  M01S00645.ssval   +++|*     FIX CATALOGS PROCESSING.
00646  M01S00646.ssval   +++|#
00647  M01S00647.ssval   +++|
00648  M01S00648.ssval   +++|      VLFIX;
00649  M01S00649.ssval   +++|
00650  M01S00650.ssval   +++|#
00651  M01S00651.ssval   +++|*     CLOSE THE REPORT FILE AND DISCONNECT.
00652  M01S00652.ssval   +++|#
00653  M01S00653.ssval   +++|
00654  M01S00654.ssval   +++|      RPCLOSE(RPTFADR);
00655  M01S00655.ssval   +++|
00656  M01S00656.ssval   +++|      VLREQEX(TYP"TYP1",REQTYP1"DISCONNECT");  # DISCONNECT FROM EXEC #
00657  M01S00657.ssval   +++|
00658  M01S00658.ssval   +++|      VLMSG(VM"VLDONE");             # SSVAL COMPLETED #
00659  M01S00659.ssval   +++|      IF TOTALERRS - PAR$FX LQ 0
00660  M01S00660.ssval   +++|      THEN
00661  M01S00661.ssval   +++|        BEGIN
00662  M01S00662.ssval   +++|        RESTPFP(PFP$END);
00663  M01S00663.ssval   +++|        END
00664  M01S00664.ssval   +++|
00665  M01S00665.ssval   +++|      ELSE
00666  M01S00666.ssval   +++|        BEGIN
00667  M01S00667.ssval   +++|        RESTPFP(PFP$ABORT);
00668  M01S00668.ssval   +++|        END
00669  M01S00669.ssval   +++|
00670  M01S00670.ssval   +++|
00671  M01S00671.ssval   +++|      STOP;
00672  M01S00672.ssval   +++|
00673  M01S00673.ssval   +++|      END  # SSVAL #
00674  M01S00674.ssval   +++|
00675  M01S00675.ssval   +++|    TERM
00676  M01S00676.ssval   +++|PROC VLAMSF;
00677  M01S00677.ssval   +++|# TITLE VLASFM - ANALYZE THE SFM CATALOG.                             #
00678  M01S00678.ssval   +++|
00679  M01S00679.ssval   +++|
00680  M01S00680.ssval   +++|      BEGIN  # VLASFM #
00681  M01S00681.ssval   +++|
00682  M01S00682.ssval   +++|#
00683  M01S00683.ssval   +++|**    VLASFM - ANALYZE THE SFM CATALOG.
00684  M01S00684.ssval   +++|*
00685  M01S00685.ssval   +++|*     *VLAMSF* CONTROLS THE VALIDATION PROCESS THAT EXAMINES
00686  M01S00686.ssval   +++|*     THE SFM CATALOG DATA IN THE *VT* TABLE.
00687  M01S00687.ssval   +++|*
00688  M01S00688.ssval   +++|*     PROC VLASFM
00689  M01S00689.ssval   +++|*
00690  M01S00690.ssval   +++|*     ENTRY     (PAR$AM)        - AM CONTROL CARD PARAMETER.
00691  M01S00691.ssval   +++|*               (ARRAY VTTABLE) - VALIDATION TABLE ENTRIES.
00692  M01S00692.ssval   +++|*
00693  M01S00693.ssval   +++|*     EXIT      (VTEN$PROB) - THIS FIELD IN EACH VALIDATION TABLE ENTRY
00694  M01S00694.ssval   +++|*                             IS UPDATED TO REFLECT THE TYPE OF
00695  M01S00695.ssval   +++|*                             VALIDATION PROBLEMS ENCOUNTERED SO FAR.
00696  M01S00696.ssval   +++|*
00697  M01S00697.ssval   +++|*     NOTES     *VLAMSF* PROCESSES BY -
00698  M01S00698.ssval   +++|*               . CALLING *VLNCS* TO PERFORM THE NORMAL CHAIN SCAN.
00699  M01S00699.ssval   +++|*               . CALLING *VLCFS* TO PERFORM THE CHAIN FRAGMENT SCAN.
00700  M01S00700.ssval   +++|*               . CALLING *VLSMSC* TO SCAN THE SMMAP.
00701  M01S00701.ssval   +++|*               . SCANNING ALL ENTRIES IN THE *VT* TABLE TO UPDATE THE
00702  M01S00702.ssval   +++|*                 PROBLEM FIELD IN THE ENTRY AND IN ITS ASSOCIATED HEAD
00703  M01S00703.ssval   +++|*                 OF CHAIN ENTRY.
00704  M01S00704.ssval   +++|#
00705  M01S00705.ssval   +++|
00706  M01S00706.ssval   +++|#
00707  M01S00707.ssval   +++|****  PROC VLASFM - XREF LIST BEGIN.
00708  M01S00708.ssval   +++|#
00709  M01S00709.ssval   +++|
00710  M01S00710.ssval   +++|      XREF
00711  M01S00711.ssval   +++|        BEGIN
00712  M01S00712.ssval   +++|        PROC VLCFS;                  # CHAIN FRAGMENT SCAN #
00713  M01S00713.ssval   +++|        PROC VLSMSC;                # *SM* MAP SCAN #
00714  M01S00714.ssval   +++|        PROC VLNCS;                  # NORMAL CHAIN SCAN #
00715  M01S00715.ssval   +++|        END
00716  M01S00716.ssval   +++|
00717  M01S00717.ssval   +++|#
00718  M01S00718.ssval   +++|****  PROC VLASFM - XREF LIST END.
00719  M01S00719.ssval   +++|#
00720  M01S00720.ssval   +++|
00721  M01S00721.ssval   +++|      DEF LISTCON    #0#;            # TURN OFF COMMON DECK LISTING #
00722  M01S00722.ssval   +++|
00723  M01S00723.ssval   +++|*CALL COMBFAS
00724  M01S00724.ssval   +++|*CALL COMTVLD
00725  M01S00725.ssval   +++|*CALL COMTVLV
00726  M01S00726.ssval   +++|
00727  M01S00727.ssval   +++|
00728  M01S00728.ssval   +++|
00729  M01S00729.ssval   +++|
00730  M01S00730.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
00731  M01S00731.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
00732  M01S00732.ssval   +++|      ITEM PT         U;             # PROBLEM TYPE #
00733  M01S00733.ssval   +++|
00734  M01S00734.ssval   +++|                                               CONTROL EJECT;
00735  M01S00735.ssval   +++|
00736  M01S00736.ssval   +++|#
00737  M01S00737.ssval   +++|*     PERFORM NORMAL CHAIN SCAN.
00738  M01S00738.ssval   +++|#
00739  M01S00739.ssval   +++|
00740  M01S00740.ssval   +++|      VLNCS;
00741  M01S00741.ssval   +++|
00742  M01S00742.ssval   +++|#
00743  M01S00743.ssval   +++|*     PERFORM CHAIN FRAGMENT SCAN.
00744  M01S00744.ssval   +++|#
00745  M01S00745.ssval   +++|
00746  M01S00746.ssval   +++|      VLCFS;
00747  M01S00747.ssval   +++|
00748  M01S00748.ssval   +++|#
00749  M01S00749.ssval   +++|*     PERFORM SMMAP SCAN IF THE *AM* PARAMETER WAS SPECIFIED.
00750  M01S00750.ssval   +++|#
00751  M01S00751.ssval   +++|
00752  M01S00752.ssval   +++|
00753  M01S00753.ssval   +++|#
00754  M01S00754.ssval   +++|*     SCAN ALL *VT* ENTRIES TO UPDATE THE *VT* PROBLEM FIELD IN THE
00755  M01S00755.ssval   +++|*     ENTRY AND IN THE CORRESPONDING HEAD OF CHAIN ENTRY.  THE PROBLEM
00756  M01S00756.ssval   +++|*     FIELD IS DEFINED TO BE THE LOGICAL SUM OF ALL THE PROBLEM TYPES
00757  M01S00757.ssval   +++|*     FOR ALL THE VALIDATION ERRORS DETECTED FOR THAT ENTRY.  PROBLEM
00758  M01S00758.ssval   +++|*     TYPES FOR EACH VALIDATION ERROR ARE DEFINED IN THE *VTPTYPES*
00759  M01S00759.ssval   +++|*     ARRAY IN COMTVLV.
00760  M01S00760.ssval   +++|#
00761  M01S00761.ssval   +++|
00762  M01S00762.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
00763  M01S00763.ssval   +++|      DO
00764  M01S00764.ssval   +++|        BEGIN  # SCAN OF *VT* ENTRIES #
00765  M01S00765.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *VT* ENTRY #
00766  M01S00766.ssval   +++|
00767  M01S00767.ssval   +++|#
00768  M01S00768.ssval   +++|*     SCAN THE ERROR FLAGS IN THE *VT* ENTRY (BITS *VPS* THRU *VPX*).
00769  M01S00769.ssval   +++|*     ADD THE PROBLEM TYPE FOR EVERY ACTIVE ERROR FLAG TO THE LOGICAL
00770  M01S00770.ssval   +++|*     SUM.
00771  M01S00771.ssval   +++|#
00772  M01S00772.ssval   +++|
00773  M01S00773.ssval   +++|        PT = 0;
00774  M01S00774.ssval   +++|        SLOWFOR K = VPS STEP 1 UNTIL VPX
00775  M01S00775.ssval   +++|        DO
00776  M01S00776.ssval   +++|          BEGIN
00777  M01S00777.ssval   +++|          IF B<K,1>VTEN$WORD[0] EQ 1
00778  M01S00778.ssval   +++|          THEN
00779  M01S00779.ssval   +++|            BEGIN
00780  M01S00780.ssval   +++|            PT = PT LOR VTP$TYP[K];  # OR LOGICAL SUM TOGETHER #
00781  M01S00781.ssval   +++|            END
00782  M01S00782.ssval   +++|
00783  M01S00783.ssval   +++|          END
00784  M01S00784.ssval   +++|
00785  M01S00785.ssval   +++|#
00786  M01S00786.ssval   +++|*     LOGICALLY ADD THE COMPUTED PROBLEM TYPES TO THE PROBLEM FIELD IN
00787  M01S00787.ssval   +++|*     IN THE *VT* ENTRY.
00788  M01S00788.ssval   +++|#
00789  M01S00789.ssval   +++|
00790  M01S00790.ssval   +++|        VTEN$PROB[0] = VTEN$PROB[0] LOR PT;
00791  M01S00791.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *VT* ENTRY #
00792  M01S00792.ssval   +++|
00793  M01S00793.ssval   +++|#
00794  M01S00794.ssval   +++|*     UPDATE *HOC* ENTRY PROBLEM FIELD ( LOGICAL SUM OF MEMBERS ).
00795  M01S00795.ssval   +++|#
00796  M01S00796.ssval   +++|
00797  M01S00797.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
00798  M01S00798.ssval   +++|        VTEN$PROB[0] = VTEN$PROB[0] LOR PT;  # ADD VALUE OF MEMBER #
00799  M01S00799.ssval   +++|        VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # UPDATE *HOC* ENTRY #
00800  M01S00800.ssval   +++|        END  # SCAN OF *VT* ENTRIES #
00801  M01S00801.ssval   +++|
00802  M01S00802.ssval   +++|      END  # VLASFM #
00803  M01S00803.ssval   +++|
00804  M01S00804.ssval   +++|    TERM
00805  M01S00805.ssval   +++|PROC VLAPFC(GROUP);
00806  M01S00806.ssval   +++|# TITLE VLAPFC - ANALYZE THE *PFC* CATALOG.                           #
00807  M01S00807.ssval   +++|
00808  M01S00808.ssval   +++|
00809  M01S00809.ssval   +++|      BEGIN  # VLAPFC #
00810  M01S00810.ssval   +++|
00811  M01S00811.ssval   +++|#
00812  M01S00812.ssval   +++|**    VLAPFC - ANALYZE THE *PFC* CATALOG DATA.
00813  M01S00813.ssval   +++|*
00814  M01S00814.ssval   +++|*     *VLAPFC* READ THE *PFC* EXTRACT FILE FOR THE SUBFAMILY
00815  M01S00815.ssval   +++|*     AND VALIDATES EACH *PFC* ENTRY FOR THE SELECTED *SM*.
00816  M01S00816.ssval   +++|*
00817  M01S00817.ssval   +++|*     PROC VLAPFC
00818  M01S00818.ssval   +++|*
00819  M01S00819.ssval   +++|*     ENTRY     (SMINDX)        - *SM* NUMBER.
00820  M01S00820.ssval   +++|*               (PRM$ENTRC)     - COUNT OF *FCT* ENTRIES IN PREAMBLE.
00821  M01S00821.ssval   +++|*               (SBINDX)        - SUBFAMILY NUMBER.
00822  M01S00822.ssval   +++|*               (ARRAY VTTABLE) - VALIDATION TABLE ENTRIES.
00823  M01S00823.ssval   +++|*
00824  M01S00824.ssval   +++|*     EXIT      FOR DETECTED ERRORS -
00825  M01S00825.ssval   +++|*               . SET *VT* ENTRY ERROR FLAGS AND UPDATE THE
00826  M01S00826.ssval   +++|*                 *VTEN$PROB* FIELD.
00827  M01S00827.ssval   +++|*               . A PROBLEM FILE RECORD IS WRITTEN (RECORD TYPE
00828  M01S00828.ssval   +++|*                 REC"ASA" OR REC"OTHR").
00829  M01S00829.ssval   +++|*
00830  M01S00830.ssval   +++|*     MESSAGES  * SSVAL ABNORMAL, VLAPFC.*.
00831  M01S00831.ssval   +++|*
00832  M01S00832.ssval   +++|*     NOTES     *VLAPFC* WILL DETECT THE FOLLOWING ERRORS -
00833  M01S00833.ssval   +++|*               . ILLEGAL *ASA* IN THE *PFC* (NO SFM CATALOG ENTRY
00834  M01S00834.ssval   +++|*                 FOR THE *ASA* IN THE *VT*).
00835  M01S00835.ssval   +++|*               . MULTIPLE OWNERS.
00836  M01S00836.ssval   +++|*               . NOT HEAD OF CHAIN.
00837  M01S00837.ssval   +++|*               . DATA ERROR FLAG ON IN THE *PFC*.
00838  M01S00838.ssval   +++|*               . *PFC* POINTS TO A CHAIN WITH PROBLEMS.
00839  M01S00839.ssval   +++|*
00840  M01S00840.ssval   +++|*               IF THE MULTIPLE OWNERS COUNTER IS NOT ZERO, *VLAPFC2*
00841  M01S00841.ssval   +++|*               IS CALLED TO FIND THE FIRST OWNER.
00842  M01S00842.ssval   +++|#
00843  M01S00843.ssval   +++|
00844  M01S00844.ssval   +++|#
00845  M01S00845.ssval   +++|****  PROC VLAPFC - XREF LIST BEGIN.
00846  M01S00846.ssval   +++|#
00847  M01S00847.ssval   +++|
00848  M01S00848.ssval   +++|      XREF
00849  M01S00849.ssval   +++|        BEGIN
00850  M01S00850.ssval   +++|        PROC MESSAGE;                # MESSAGE TO DAYFILE #
00851  M01S00851.ssval   +++|        PROC VLWFIX;                 # WRITE FIXIT FILE RECORD #
00852  M01S00852.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
00853  M01S00853.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
00854  M01S00854.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
00855  M01S00855.ssval   +++|        PROC VLAPFC2;                # ANALYZE *PFC* PASS 2 #
00856  M01S00856.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
00857  M01S00857.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
00858  M01S00858.ssval   +++|        FUNC XCOD C(10);             # BINARY TO DISPLAY #
00859  M01S00859.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
00860  M01S00860.ssval   +++|        END
00861  M01S00861.ssval   +++|
00862  M01S00862.ssval   +++|#
00863  M01S00863.ssval   +++|****  PROC VLAPFC - XREF LIST END.
00864  M01S00864.ssval   +++|#
00865  M01S00865.ssval   +++|
00866  M01S00866.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
00867  M01S00867.ssval   +++|*CALL COMBFAS
00868  M01S00868.ssval   +++|*CALL COMBCMD
00869  M01S00869.ssval   +++|*CALL COMBMCT
00870  M01S00870.ssval   +++|*CALL COMTVLD
00871  M01S00871.ssval   +++|*CALL COMTVLF
00872  M01S00872.ssval   +++|*CALL COMTVLV
00873  M01S00873.ssval   +++|
00874  M01S00874.ssval   +++|
00875  M01S00875.ssval   +++|      ITEM GROUP      I;             # GROUP BEING PROCESSED #
00876  M01S00876.ssval   +++|      ITEM GMO        I;             # GLOBAL MULTIPLE OWNERS #
00877  M01S00877.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
00878  M01S00878.ssval   +++|
00879  M01S00879.ssval   +++|      ARRAY BLDLFN [0:0] S(1);       # BUILD *LFN* #
00880  M01S00880.ssval   +++|        BEGIN
00881  M01S00881.ssval   +++|        ITEM BLDNAME    C(00,00,07) = [ EXTLFN ];  # NAME OF FILE #
00882  M01S00882.ssval   +++|        ITEM BLDLFNX    U(00,36,06);  # SUBFAMILY NUMBER #
00883  M01S00883.ssval   +++|        END
00884  M01S00884.ssval   +++|
00885  M01S00885.ssval   +++|#
00886  M01S00886.ssval   +++|*     THIS ARRAY FOR LINK MESSAGE.
00887  M01S00887.ssval   +++|#
00888  M01S00888.ssval   +++|
00889  M01S00889.ssval   +++|      ARRAY LINK [0:0] P(3);
00890  M01S00890.ssval   +++|        BEGIN                        # LINK MESSAGE #
00891  M01S00891.ssval   +++|        ITEM LINK$MG  C(00,00,10) = ["   UI =   "];
00892  M01S00892.ssval   +++|        ITEM LINK$NO  C(01,00,10);
00893  M01S00893.ssval   +++|        ITEM LINK$Z   U(02,00,60) = [0]; # ZERO BYTE #
00894  M01S00894.ssval   +++|        END
00895  M01S00895.ssval   +++|
00896  M01S00896.ssval   +++|
00897  M01S00897.ssval   +++|                                               CONTROL EJECT;
00898  M01S00898.ssval   +++|
00899  M01S00899.ssval   +++|      P<PREAMBLE> = PRMBADR;
00900  M01S00900.ssval   +++|
00901  M01S00901.ssval   +++|      GMO = 0;                       # INITIALIZE MULTIPLE OWNERS
00902  M01S00902.ssval   +++|                                       COUNTER #
00903  M01S00903.ssval   +++|
00904  M01S00904.ssval   +++|#
00905  M01S00905.ssval   +++|*     INITIALIZE THE *PFC* EXTRACT FILE FOR READING.
00906  M01S00906.ssval   +++|#
00907  M01S00907.ssval   +++|
00908  M01S00908.ssval   +++|      EXTFADR = LOC(EXTRACTFIL);     # FET ADDRESS #
00909  M01S00909.ssval   +++|      EXTBADR = LOC(EXTRACBUF);      # BUFFER ADDRESS #
00910  M01S00910.ssval   +++|      BLDLFNX = SBINDX + "0";        # APPEND SUBFAMILY TO *LFN* #
00911  M01S00911.ssval   +++|      ZSETFET(EXTFADR,BLDLFN,EXTBADR,LEXTBUF,SFETL);
00912  M01S00912.ssval   +++|
00913  M01S00913.ssval   +++|      REWIND(EXTRACTFIL,RCL);
00914  M01S00914.ssval   +++|      READ(EXTRACTFIL,NRCL);
00915  M01S00915.ssval   +++|
00916  M01S00916.ssval   +++|#
00917  M01S00917.ssval   +++|*     PROCESS EACH RECORD IN THE *PFC* EXTRACT FILE FOR THE SUBFAMILY.
00918  M01S00918.ssval   +++|#
00919  M01S00919.ssval   +++|
00920  M01S00920.ssval   +++|      STAT = OK;
00921  M01S00921.ssval   +++|      REPEAT WHILE STAT EQ OK
00922  M01S00922.ssval   +++|      DO
00923  M01S00923.ssval   +++|        BEGIN  # SCAN SUBFAMILY *PFC* ENTRIES #
00924  M01S00924.ssval   +++|        READW(EXTRACTFIL,EXTRECORD,RLEXTR,STAT);
00925  M01S00925.ssval   +++|
00926  M01S00926.ssval   +++|        IF STAT NQ OK
00927  M01S00927.ssval   +++|        THEN                         # DETECTED EOR, EOF, EOI OR
00928  M01S00928.ssval   +++|                                       ERROR #
00929  M01S00929.ssval   +++|          BEGIN
00930  M01S00930.ssval   +++|          TEST DUMMY;                # SKIP, NO RECORD READ #
00931  M01S00931.ssval   +++|          END
00932  M01S00932.ssval   +++|
00933  M01S00933.ssval   +++|
00934  M01S00934.ssval   +++|#
00935  M01S00935.ssval   +++|*     SKIP THIS RECORD IF THE *SM* IN THE *PFC* IS NOT THE ONE BEING
00936  M01S00936.ssval   +++|*     PROCESSED.
00937  M01S00937.ssval   +++|#
00938  M01S00938.ssval   +++|
00939  M01S00939.ssval   +++|        IF EXTR$SM[0] NQ SMINDX
00940  M01S00940.ssval   +++|        THEN
00941  M01S00941.ssval   +++|          BEGIN
00942  M01S00942.ssval   +++|          TEST DUMMY;
00943  M01S00943.ssval   +++|          END
00944  M01S00944.ssval   +++|#
00945  M01S00945.ssval   +++|*     SKIP THIS RECORD IF THE GROUP IN THE *PFC* IS NOT THE ONE
00946  M01S00946.ssval   +++|*     BEING PROCESSED.
00947  M01S00947.ssval   +++|#
00948  M01S00948.ssval   +++|
00949  M01S00949.ssval   +++|      IF EXTR$GP[0] NQ GROUP
00950  M01S00950.ssval   +++|      THEN
00951  M01S00951.ssval   +++|        BEGIN
00952  M01S00952.ssval   +++|        TEST DUMMY;
00953  M01S00953.ssval   +++|        END
00954  M01S00954.ssval   +++|
00955  M01S00955.ssval   +++|
00956  M01S00956.ssval   +++|#
00957  M01S00957.ssval   +++|*     CHECK FOR VALID *ASA* IN THE *PFC*.
00958  M01S00958.ssval   +++|#
00959  M01S00959.ssval   +++|
00960  M01S00960.ssval   +++|        IF EXTR$GP[0] GR MAXGP
00961  M01S00961.ssval   +++|          OR EXTR$GPT[0] GR MAXGRT
00962  M01S00962.ssval   +++|          OR EXTR$AU[0] GR INAVOT
00963  M01S00963.ssval   +++|        THEN                         # *ASA* OUT OF RANGE #
00964  M01S00964.ssval   +++|          BEGIN
00965  M01S00965.ssval   +++|          VLWPROB(REC"ASA");         # BUILD PROBLEM ENTRY #
00966  M01S00966.ssval   +++|          TEST DUMMY;
00967  M01S00967.ssval   +++|          END
00968  M01S00968.ssval   +++|
00969  M01S00969.ssval   +++|#
00970  M01S00970.ssval   +++|*     DO NOT CHECK THE PFC AGAINST THE SFM CATALOG
00971  M01S00971.ssval   +++|*     IF THE CATALOG IS EMPTY.
00972  M01S00972.ssval   +++|#
00973  M01S00973.ssval   +++|
00974  M01S00974.ssval   +++|      IF VTLAST LS VTFIRST
00975  M01S00975.ssval   +++|      THEN
00976  M01S00976.ssval   +++|        BEGIN
00977  M01S00977.ssval   +++|        TEST DUMMY;
00978  M01S00978.ssval   +++|        END
00979  M01S00979.ssval   +++|
00980  M01S00980.ssval   +++|#
00981  M01S00981.ssval   +++|*     USING THE *ASA*, LOCATE AND EDIT THE *VT* ENTRY FOR THIS RECORD.
00982  M01S00982.ssval   +++|#
00983  M01S00983.ssval   +++|
00984  M01S00984.ssval   +++|        P<VTLINK> = LOC(VTPTR);      # BUILD LINK TO *VT* ENTRY #
00985  M01S00985.ssval   +++|        VTL$GRT[0] = EXTR$GPT[0];
00986  M01S00986.ssval   +++|        VTL$AU[0] = EXTR$AU[0];
00987  M01S00987.ssval   +++|        IF (VTL$WORD[0] LS VTFIRST) OR (VTL$WORD[0] GR VTLAST)
00988  M01S00988.ssval   +++|        THEN                         # INVALID LINK #
00989  M01S00989.ssval   +++|          BEGIN
00990  M01S00990.ssval   +++|          LINK$NO = XCOD(EXTR$UI[0]);
00991  M01S00991.ssval   +++|          MESSAGE(LINK,SYSUDF1);
00992  M01S00992.ssval   +++|          MP$WD[1] = " VLAPFC INVALID LINK ";
00993  M01S00993.ssval   +++|          VLERROR(VE"SYSERR",ABRT);  # ABORT WITH MESSAGE #
00994  M01S00994.ssval   +++|          END
00995  M01S00995.ssval   +++|
00996  M01S00996.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTPTR];  # GET ENTRY #
00997  M01S00997.ssval   +++|
00998  M01S00998.ssval   +++|#
00999  M01S00999.ssval   +++|*     IF *VT* ENTRY IS ALREADY OWNED AND THE MULTIPLE OWNER FLAG
01000  M01S01000.ssval   +++|*     IS NOT SET, 1) SET IT, 2) UPDATE THE PROBLEM TYPE FIELD,
01001  M01S01001.ssval   +++|*     AND 3) INCREMENT THE MULTIPLE OWNERS COUNTER.  THIS COUNTER
01002  M01S01002.ssval   +++|*     WILL BE USED IN VLAPFC2 TO LOCATE THE FIRST OWNER(S).
01003  M01S01003.ssval   +++|#
01004  M01S01004.ssval   +++|
01005  M01S01005.ssval   +++|        IF VTEN$OWN AND NOT VTEN$MULT
01006  M01S01006.ssval   +++|        THEN                         # MULTIPLE OWNER DETECTED #
01007  M01S01007.ssval   +++|          BEGIN
01008  M01S01008.ssval   +++|          VTEN$MULT = TRUE;          # SET MULTIPLE OWNER FLAG #
01009  M01S01009.ssval   +++|          VTEN$PROB = VTEN$PROB LOR VTP$TYP[BMUL];  # SET PROBLEM
01010  M01S01010.ssval   +++|                                                      TYPE #
01011  M01S01011.ssval   +++|          GMO = GMO + 1;             # INCREMENT OWNERS #
01012  M01S01012.ssval   +++|          END
01013  M01S01013.ssval   +++|
01014  M01S01014.ssval   +++|        VTEN$OWN = TRUE;             # SET OWNER FLAG #
01015  M01S01015.ssval   +++|
01016  M01S01016.ssval   +++|#
01017  M01S01017.ssval   +++|*     IF THE DATA ERROR FLAG IS SET IN THE *PFC*, SET THE ERROR FLAG
01018  M01S01018.ssval   +++|*     IN THE *VT* AND UPDATE THE PROBLEM FIELD.
01019  M01S01019.ssval   +++|#
01020  M01S01020.ssval   +++|
01021  M01S01021.ssval   +++|        IF EXTR$DERR[0]
01022  M01S01022.ssval   +++|        THEN
01023  M01S01023.ssval   +++|          BEGIN
01024  M01S01024.ssval   +++|          VTEN$RERR[0] = TRUE;
01025  M01S01025.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BRER];
01026  M01S00001.msea011 +++|          TPFCERRS = TPFCERRS + 1;
01027  M01S01026.ssval   +++|          END
01028  M01S01027.ssval   +++|
01029  M01S01028.ssval   +++|#
01030  M01S01029.ssval   +++|*     IF THE SYSTEM ERROR FLAG IS SET IN THE *PFC*, SET THE ERROR FLAG
01031  M01S01030.ssval   +++|*     IN THE *VT* AND UPDATE THE PROBLEM FIELD.
01032  M01S01031.ssval   +++|#
01033  M01S01032.ssval   +++|
01034  M01S01033.ssval   +++|        IF EXTR$SYS[0]
01035  M01S01034.ssval   +++|        THEN
01036  M01S01035.ssval   +++|          BEGIN
01037  M01S01036.ssval   +++|          VTEN$SYS[0] = TRUE;
01038  M01S01037.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BSYS];
01039  M01S00002.msea011 +++|          TPFCERRS = TPFCERRS + 1;
01040  M01S01038.ssval   +++|          END
01041  M01S01039.ssval   +++|
01042  M01S01040.ssval   +++|#
01043  M01S01041.ssval   +++|*     IF THE *PFC* DOES NOT POINT TO THE HEAD OF CHAIN, SET THE ERROR
01044  M01S01042.ssval   +++|*     FLAG AND UPDATE THE PROBLEM TYPE FIELD.
01045  M01S01043.ssval   +++|#
01046  M01S01044.ssval   +++|
01047  M01S01045.ssval   +++|        IF NOT VTEN$HOC[0]
01048  M01S01046.ssval   +++|        THEN
01049  M01S01047.ssval   +++|          BEGIN
01050  M01S01048.ssval   +++|          VTEN$MSH[0] = TRUE;
01051  M01S01049.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BMSH];
01052  M01S01050.ssval   +++|          END
01053  M01S01051.ssval   +++|
01054  M01S01052.ssval   +++|#
01055  M01S01053.ssval   +++|*     IF THE FREE CARTRIDGE FLAG IS SET ON CARTRIDE THEN ADD
01056  M01S01054.ssval   +++|*     A RECORD TO THE FIXIT FILE.
01057  M01S01055.ssval   +++|#
01058  M01S01056.ssval   +++|
01059  M01S01057.ssval   +++|        IF VTEN$FCF[0] AND NOT EXTR$FF[0]
01060  M01S01058.ssval   +++|        THEN                        # BUILD FICIT FILE ENTRY #
01061  M01S01059.ssval   +++|          BEGIN
01062  M01S01060.ssval   +++|          VLWFIX(REC"FCF");
01063  M01S01061.ssval   +++|          END
01064  M01S01062.ssval   +++|
01065  M01S01063.ssval   +++|#
01066  M01S01064.ssval   +++|*     IF THE *PFC* POINTS TO A CHAIN WITH PROBLEMS, ADD THIS
01067  M01S01065.ssval   +++|*     ENTRY TO THE PROBLEM FILE.
01068  M01S01066.ssval   +++|#
01069  M01S01067.ssval   +++|
01070  M01S01068.ssval   +++|        IF VTEN$PROB[0] NQ 0
01071  M01S01069.ssval   +++|        THEN
01072  M01S01070.ssval   +++|          BEGIN
01073  M01S01071.ssval   +++|          VLWPROB(REC"OTHR");        # BUILD PROBLEM ENTRY #
01074  M01S01072.ssval   +++|          END
01075  M01S01073.ssval   +++|
01076  M01S01074.ssval   +++|        VT$ITEM[VTPTR] = VTEN$WORD[0];  # STORE THE *VT* ENTRY #
01077  M01S01075.ssval   +++|
01078  M01S01076.ssval   +++|#
01079  M01S01077.ssval   +++|*     IF THE *VT* ENTRY WAS NOT THE HEAD OF CHAIN, UPDATE THE *HOC*.
01080  M01S01078.ssval   +++|#
01081  M01S01079.ssval   +++|
01082  M01S01080.ssval   +++|        IF VTEN$POINT[0] NQ VTPTR
01083  M01S01081.ssval   +++|        THEN
01084  M01S01082.ssval   +++|          BEGIN  # UPDATE *HOC* ENTRY #
01085  M01S01083.ssval   +++|          I = VTEN$PROB[0];          # SAVE PROBLEM OF MEMBER #
01086  M01S01084.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
01087  M01S01085.ssval   +++|          IF VTEN$OWN[0]
01088  M01S01086.ssval   +++|          THEN
01089  M01S01087.ssval   +++|            BEGIN
01090  M01S01088.ssval   +++|            VTEN$MULT[0] = TRUE;
01091  M01S01089.ssval   +++|            VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BMUL];
01092  M01S01090.ssval   +++|            GMO = GMO + 1;
01093  M01S01091.ssval   +++|            END
01094  M01S01092.ssval   +++|
01095  M01S01093.ssval   +++|          VTEN$OWN[0] = TRUE;
01096  M01S01094.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR I;  # PROBLEM OF MEMBER #
01097  M01S01095.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];
01098  M01S01096.ssval   +++|          END  # UPDATE *HOC* ENTRY #
01099  M01S01097.ssval   +++|
01100  M01S01098.ssval   +++|        END  # SCAN SUBFAMILY *PFC* ENTRIES #
01101  M01S01099.ssval   +++|
01102  M01S01100.ssval   +++|#
01103  M01S01101.ssval   +++|*     IF AN UNEXPECTED *CIO* ERROR OCCURRED, ABORT.
01104  M01S01102.ssval   +++|#
01105  M01S01103.ssval   +++|
01106  M01S01104.ssval   +++|      IF STAT EQ CIOERR
01107  M01S01105.ssval   +++|      THEN
01108  M01S01106.ssval   +++|        BEGIN
01109  M01S01107.ssval   +++|        MP$WD[1] = "VLAPFC";         # NAME FOR MESSAGE #
01110  M01S01108.ssval   +++|        VLERROR(VE"SYSERR",ABRT);    # ABORT WITH MESSAGE #
01111  M01S01109.ssval   +++|        END
01112  M01S01110.ssval   +++|
01113  M01S01111.ssval   +++|#
01114  M01S01112.ssval   +++|*     IF THERE ARE GLOBAL MULTIPLE OWNERS, PERFORM VLAPFC2 TO FIND
01115  M01S01113.ssval   +++|*     THE FIRST OWNER OF THE FILE.
01116  M01S01114.ssval   +++|#
01117  M01S01115.ssval   +++|
01118  M01S01116.ssval   +++|      IF GMO GR 0
01119  M01S01117.ssval   +++|      THEN
01120  M01S01118.ssval   +++|        BEGIN
01121  M01S01119.ssval   +++|        VLAPFC2(GMO,GROUP);
01122  M01S01120.ssval   +++|        END
01123  M01S01121.ssval   +++|
01124  M01S01122.ssval   +++|      END  # VLAPFC #
01125  M01S01123.ssval   +++|
01126  M01S01124.ssval   +++|    TERM
01127  M01S01125.ssval   +++|PROC VLAPFC2(CNT,GROUP);
01128  M01S01126.ssval   +++|# TITLE VLAPFC2 - ANALYZE *PFC* PASS 2.                               #
01129  M01S01127.ssval   +++|
01130  M01S01128.ssval   +++|
01131  M01S01129.ssval   +++|      BEGIN  # VLAPFC2 #
01132  M01S01130.ssval   +++|
01133  M01S01131.ssval   +++|#
01134  M01S01132.ssval   +++|**    VLAPFC2 - ANALYZE THE *PFC* PASS 2.
01135  M01S01133.ssval   +++|*
01136  M01S01134.ssval   +++|*     *VLAPFC2* READS THE *PFC* EXTRACT FILE TO FIND THE FIRST OWNER
01137  M01S01135.ssval   +++|*     SINCE MULTIPLE OWNERS WERE FOUND IN *VLAPFC*.  ALL OTHER
01138  M01S01136.ssval   +++|*     INTERSECTIONS WITH THIS PARTICULAR CHAIN ARE MARKED IN *VLAPFC*.
01139  M01S01137.ssval   +++|*
01140  M01S01138.ssval   +++|*     PROC VLAPFC2(CNT)
01141  M01S01139.ssval   +++|*
01142  M01S01140.ssval   +++|*     ENTRY     (CNT)            - COUNT OF MULTIPLE OWNERS.
01143  M01S01141.ssval   +++|*               (SMINDX)        - *SM* NUMBER BEING PROCESSED.
01144  M01S01142.ssval   +++|*               ARRAY VTTABLE    - VALIDATION TABLE ENTRIES.
01145  M01S01143.ssval   +++|*               ARRAY EXTRACTFIL - *PFC* EXTRACT FILE *FET*.
01146  M01S01144.ssval   +++|*
01147  M01S01145.ssval   +++|*     EXIT      FOR THE *PFC* ENTRY THAT IS THE "FIRST" OWNER -
01148  M01S01146.ssval   +++|*               . *VT* ENTRY *VTEN$1ST* FLAG IS SET.
01149  M01S01147.ssval   +++|*               . A PROBLEM FILE RECORD IS WRITTEN AS "OTHR" RECORD
01150  M01S01148.ssval   +++|*                 TYPE.
01151  M01S01149.ssval   +++|#
01152  M01S01150.ssval   +++|
01153  M01S01151.ssval   +++|      ITEM GROUP      I;             # GROUP BEING PROCESSED #
01154  M01S01152.ssval   +++|      ITEM CNT        I;             # COUNT OF MULTIPLE *PFC* OWNERS #
01155  M01S01153.ssval   +++|
01156  M01S01154.ssval   +++|#
01157  M01S01155.ssval   +++|****  PROC VLAPFC2 - XREF LIST BEGIN.
01158  M01S01156.ssval   +++|#
01159  M01S01157.ssval   +++|
01160  M01S01158.ssval   +++|      XREF
01161  M01S01159.ssval   +++|        BEGIN
01162  M01S01160.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
01163  M01S01161.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
01164  M01S01162.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
01165  M01S01163.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
01166  M01S01164.ssval   +++|        END
01167  M01S01165.ssval   +++|
01168  M01S01166.ssval   +++|#
01169  M01S01167.ssval   +++|****  PROC VLAPFC2 - XREF LIST END.
01170  M01S01168.ssval   +++|#
01171  M01S01169.ssval   +++|
01172  M01S01170.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
01173  M01S01171.ssval   +++|
01174  M01S01172.ssval   +++|*CALL COMBFAS
01175  M01S01173.ssval   +++|*CALL COMTVLD
01176  M01S01174.ssval   +++|*CALL COMTVLF
01177  M01S01175.ssval   +++|*CALL COMTVLV
01178  M01S01176.ssval   +++|
01179  M01S01177.ssval   +++|                                               CONTROL EJECT;
01180  M01S01178.ssval   +++|
01181  M01S01179.ssval   +++|#
01182  M01S01180.ssval   +++|*     READ THE *PFC* EXTRACT FILE.
01183  M01S01181.ssval   +++|#
01184  M01S01182.ssval   +++|
01185  M01S01183.ssval   +++|      REWIND(EXTRACTFIL,RCL);
01186  M01S01184.ssval   +++|      READ(EXTRACTFIL,NRCL);
01187  M01S01185.ssval   +++|
01188  M01S01186.ssval   +++|#
01189  M01S01187.ssval   +++|*     READ THE EXTRACT FILE UNTIL, 1) THE FILE STATUS IS NOT OK,
01190  M01S01188.ssval   +++|*     OR 2) THERE ARE NO MORE MULTIPLE OWNERS.
01191  M01S01189.ssval   +++|#
01192  M01S01190.ssval   +++|
01193  M01S01191.ssval   +++|      STAT = 0;
01194  M01S01192.ssval   +++|      REPEAT WHILE STAT EQ OK AND (CNT GR 0)
01195  M01S01193.ssval   +++|      DO                             # PROCESS THE EXTRACT RECORD #
01196  M01S01194.ssval   +++|        BEGIN  # READING EXTRACT FILE #
01197  M01S01195.ssval   +++|        READW(EXTRACTFIL,EXTRECORD,RLEXTR,STAT);  # GET THE EXTRACT
01198  M01S01196.ssval   +++|                                                    RECORD #
01199  M01S01197.ssval   +++|        IF STAT NQ OK
01200  M01S01198.ssval   +++|        THEN
01201  M01S01199.ssval   +++|          BEGIN
01202  M01S01200.ssval   +++|          TEST DUMMY;                # DETECTED EOR, EOF, EOI OR ERROR
01203  M01S01201.ssval   +++|                                     #
01204  M01S01202.ssval   +++|          END
01205  M01S01203.ssval   +++|
01206  M01S01204.ssval   +++|
01207  M01S01205.ssval   +++|#
01208  M01S01206.ssval   +++|*     PROCESS ONLY THE RECORDS FOR THE GIVEN SM.
01209  M01S01207.ssval   +++|#
01210  M01S01208.ssval   +++|
01211  M01S01209.ssval   +++|        IF EXTR$SM[0] NQ SMINDX
01212  M01S01210.ssval   +++|        THEN                         # NOT SELECTED #
01213  M01S01211.ssval   +++|          BEGIN
01214  M01S01212.ssval   +++|          TEST DUMMY;
01215  M01S01213.ssval   +++|          END
01216  M01S01214.ssval   +++|
01217  M01S01215.ssval   +++|        IF EXTR$GP[0] NQ GROUP
01218  M01S01216.ssval   +++|        THEN
01219  M01S01217.ssval   +++|          BEGIN
01220  M01S01218.ssval   +++|          TEST DUMMY;
01221  M01S01219.ssval   +++|          END
01222  M01S01220.ssval   +++|
01223  M01S01221.ssval   +++|#
01224  M01S01222.ssval   +++|*     USING THE *ASA* IN THE EXTRACT RECORD, DEVELOP THE INDEX TO
01225  M01S01223.ssval   +++|*     THE *VT* ARRAY FOR THIS RECORD.
01226  M01S01224.ssval   +++|#
01227  M01S01225.ssval   +++|
01228  M01S01226.ssval   +++|        P<VTLINK> = LOC(VTPTR);      # BUILD LINK TO *VT* ENTRY #
01229  M01S01227.ssval   +++|        VTL$GRT[0] = EXTR$GPT[0];
01230  M01S01228.ssval   +++|        VTL$AU[0] = EXTR$AU[0];
01231  M01S01229.ssval   +++|
01232  M01S01230.ssval   +++|        IF (VTL$WORD[0] LS VTFIRST) OR (VTL$WORD[0] GR VTLAST)
01233  M01S01231.ssval   +++|        THEN
01234  M01S01232.ssval   +++|          BEGIN
01235  M01S01233.ssval   +++|          TEST DUMMY;                # SKIP IF THE INDEX IS BAD #
01236  M01S01234.ssval   +++|          END
01237  M01S01235.ssval   +++|
01238  M01S01236.ssval   +++|#
01239  M01S01237.ssval   +++|*     GET THE *VT* ENTRY FOR THIS *PFC* EXTRACT RECORD.
01240  M01S01238.ssval   +++|#
01241  M01S01239.ssval   +++|
01242  M01S01240.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTPTR];  # GET *VT* ENTRY #
01243  M01S01241.ssval   +++|
01244  M01S01242.ssval   +++|#
01245  M01S01243.ssval   +++|*     DETERMINE IF THIS IS THE 1ST OWNER OF MULTIPLY-OWNED FILE.
01246  M01S01244.ssval   +++|#
01247  M01S01245.ssval   +++|
01248  M01S01246.ssval   +++|        IF VTEN$MULT[0] AND (NOT VTEN$1ST[0])
01249  M01S01247.ssval   +++|        THEN
01250  M01S01248.ssval   +++|          BEGIN
01251  M01S01249.ssval   +++|          VTEN$1ST[0] = TRUE;
01252  M01S01250.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # UPDATE ENTRY #
01253  M01S01251.ssval   +++|          VLWPROB(REC"OTHR");        # BUILD PROBLEM ENTRY #
01254  M01S01252.ssval   +++|          CNT = CNT - 1;
01255  M01S01253.ssval   +++|          END
01256  M01S01254.ssval   +++|
01257  M01S01255.ssval   +++|        END  # READING EXTRACT FILE #
01258  M01S01256.ssval   +++|
01259  M01S01257.ssval   +++|      END  # VLAPFC2 #
01260  M01S01258.ssval   +++|
01261  M01S01259.ssval   +++|    TERM
01262  M01S01260.ssval   +++|PROC VLBFILL(FLD,NWDS);
01263  M01S01261.ssval   +++|# TITLE VLBFILL - BLANK FILL.                                         #
01264  M01S01262.ssval   +++|
01265  M01S01263.ssval   +++|      BEGIN  # VLBFILL #
01266  M01S01264.ssval   +++|
01267  M01S01265.ssval   +++|#
01268  M01S01266.ssval   +++|**    VLBFILL - BLANK FILL.
01269  M01S01267.ssval   +++|*
01270  M01S01268.ssval   +++|*     *VLBFILL* CHANGES ALL BINARY ZERO CHARACTERS STARTING IN *FLD*
01271  M01S01269.ssval   +++|*     TO DISPLAY CODE BLANKS FOR A LENGTH OF *NWDS*.
01272  M01S01270.ssval   +++|*
01273  M01S01271.ssval   +++|*     PROC VLBFILL
01274  M01S01272.ssval   +++|*
01275  M01S01273.ssval   +++|*     ENTRY     (FLD) - THE FIELD TO SCAN.
01276  M01S01274.ssval   +++|*               (WDS) - NUMBER OF WORDS TO SCAN.
01277  M01S01275.ssval   +++|*
01278  M01S01276.ssval   +++|*     EXIT      (FLD) - CONTAINS THE BLANK FILLED FIELD.
01279  M01S01277.ssval   +++|#
01280  M01S01278.ssval   +++|
01281  M01S01279.ssval   +++|      ITEM FLD        I;             # FIELD TO SCAN #
01282  M01S01280.ssval   +++|      ITEM NWDS       I;             # NUMBER OF WORDS TO SCAN #
01283  M01S01281.ssval   +++|
01284  M01S01282.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
01285  M01S01283.ssval   +++|
01286  M01S01284.ssval   +++|*CALL COMBFAS
01287  M01S01285.ssval   +++|
01288  M01S01286.ssval   +++|      ITEM CHARINDX   I;             # INDEX FOR CHARACTERS SCANNED #
01289  M01S01287.ssval   +++|      ITEM NCHAR      I;             # NUMBER OF CHARACTERS TO SCAN #
01290  M01S01288.ssval   +++|
01291  M01S01289.ssval   +++|      BASED
01292  M01S01290.ssval   +++|      ARRAY SCAN [0:0] S(200);       # TO SCAN FIELD #
01293  M01S01291.ssval   +++|      ITEM SCAN$WD    C(00,00,200);
01294  M01S01292.ssval   +++|
01295  M01S01293.ssval   +++|                                               CONTROL EJECT;
01296  M01S01294.ssval   +++|
01297  M01S01295.ssval   +++|#
01298  M01S01296.ssval   +++|*     LOOK FOR A BINARY ZERO CHARACTER IN THE SPECIFIED FIELD AND
01299  M01S01297.ssval   +++|*     CHANGE IT TO A BLANK.
01300  M01S01298.ssval   +++|#
01301  M01S01299.ssval   +++|
01302  M01S01300.ssval   +++|
01303  M01S01301.ssval   +++|      P<SCAN> = LOC(FLD);
01304  M01S01302.ssval   +++|
01305  M01S01303.ssval   +++|      NCHAR = NWDS * 10;             # NUMBER OF CHARACTERS TO SCAN #
01306  M01S01304.ssval   +++|      SLOWFOR CHARINDX = 0 STEP 1 UNTIL NCHAR - 1
01307  M01S01305.ssval   +++|      DO
01308  M01S01306.ssval   +++|        BEGIN  # CHARINDX #
01309  M01S01307.ssval   +++|        IF C<CHARINDX,1>SCAN$WD[0] EQ 00
01310  M01S01308.ssval   +++|        THEN                         # FOUND A BINARY ZERO #
01311  M01S01309.ssval   +++|          BEGIN
01312  M01S01310.ssval   +++|          C<CHARINDX,1>SCAN$WD[0] = " ";  # REPLACE WITH A BLANK #
01313  M01S01311.ssval   +++|          END
01314  M01S01312.ssval   +++|
01315  M01S01313.ssval   +++|        END  # CHARINDX #
01316  M01S01314.ssval   +++|
01317  M01S01315.ssval   +++|      END  # VLBFILL #
01318  M01S01316.ssval   +++|
01319  M01S01317.ssval   +++|    TERM
01320  M01S01318.ssval   +++|PROC VLBICT(E1,E2);
01321  M01S01319.ssval   +++|# TITLE VLBICT - INTERSECTING CHAIN REPORT.                           #
01322  M01S01320.ssval   +++|
01323  M01S01321.ssval   +++|#
01324  M01S01322.ssval   +++|***
01325  M01S01323.ssval   +++|#
01326  M01S01324.ssval   +++|
01327  M01S01325.ssval   +++|      BEGIN  # VLBICT #
01328  M01S01326.ssval   +++|
01329  M01S01327.ssval   +++|#
01330  M01S01328.ssval   +++|**    VLBICT - INTERSECTING CHAIN REPORT.
01331  M01S01329.ssval   +++|*
01332  M01S01330.ssval   +++|*     *VLBICT* ISSUES THE INTERSECTING CHAIN DETAIL LINE TO THE
01333  M01S01331.ssval   +++|*     REPORT FILE AND ALSO ISSUES THE SUBCATALOG HEADING LINE
01334  M01S01332.ssval   +++|*     WHEN CALLED THE FIRST TIME FOR THE SUBCATALOG.
01335  M01S01333.ssval   +++|*
01336  M01S01334.ssval   +++|*     PROC VLBICT(E1,E2)
01337  M01S01335.ssval   +++|*
01338  M01S01336.ssval   +++|*     ENTRY     (E1)      - *VT* ENTRY INDEX (*FCT* ORDINAL, AU)
01339  M01S01337.ssval   +++|*                           FOR ENTRY 1.
01340  M01S01338.ssval   +++|*               (E2)      - *VT* ENTRY INDEX (*FCT* ORDINAL, AU)
01341  M01S01339.ssval   +++|*                           FOR ENTRY 2.
01342  M01S01340.ssval   +++|*               (RPTFADR) - ADDRESS OF THE REPORT FILE *FET*.
01343  M01S01341.ssval   +++|*               (SCDTLH)  - SUBCATALOG DETAIL HEADING FLAG.
01344  M01S01342.ssval   +++|*
01345  M01S01343.ssval   +++|*     EXIT      INTERSECTING CHAIN DETAIL LINE WRITTEN TO THE REPORT
01346  M01S01344.ssval   +++|*               FILE.
01347  M01S01345.ssval   +++|*               (SCRPTED) - SUBCATALOG REPORTED FLAG.
01348  M01S01346.ssval   +++|*               (SCDTLH)  - SUBCATALOG DETAIL HEADING FLAG.
01349  M01S01347.ssval   +++|*
01350  M01S01348.ssval   +++|*     NOTES     TO FORCE LEADING ZEROS ON THE *FCT* NUMBER AND
01351  M01S01349.ssval   +++|*               THE AU NUMBER THE *ZFD* VALUE IS ADDED BEFORE
01352  M01S01350.ssval   +++|*               CONVERSION.
01353  M01S01351.ssval   +++|*
01354  M01S01352.ssval   +++|#
01355  M01S01353.ssval   +++|
01356  M01S01354.ssval   +++|      ITEM E1         I;             # CHAIN ENTRY 1 #
01357  M01S01355.ssval   +++|      ITEM E2         I;             # CHAIN ENTRY 2 #
01358  M01S01356.ssval   +++|
01359  M01S01357.ssval   +++|#
01360  M01S01358.ssval   +++|****  PROC VLBICT - XREF LIST BEGIN.
01361  M01S01359.ssval   +++|#
01362  M01S01360.ssval   +++|
01363  M01S01361.ssval   +++|      XREF
01364  M01S01362.ssval   +++|        BEGIN
01365  M01S01363.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
01366  M01S01364.ssval   +++|                                       LINE #
01367  M01S01365.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
01368  M01S01366.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
01369  M01S01367.ssval   +++|                                       CONVERSION #
01370  M01S01368.ssval   +++|        PROC VLSUBHD;                # ISSUE REPORT SUBHEADING #
01371  M01S01369.ssval   +++|        END
01372  M01S01370.ssval   +++|
01373  M01S01371.ssval   +++|#
01374  M01S01372.ssval   +++|****  PROC VLBICT - XREF LIST END.
01375  M01S01373.ssval   +++|#
01376  M01S01374.ssval   +++|
01377  M01S01375.ssval   +++|
01378  M01S01376.ssval   +++|
01379  M01S01377.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
01380  M01S01378.ssval   +++|
01381  M01S01379.ssval   +++|*CALL COMBFAS
01382  M01S01380.ssval   +++|*CALL COMTVLD
01383  M01S01381.ssval   +++|*CALL COMTVLF
01384  M01S01382.ssval   +++|*CALL COMTVLV
01385  M01S01383.ssval   +++|
01386  M01S01384.ssval   +++|#
01387  M01S01385.ssval   +++|*     INTERSECTING CHAIN DETAIL LINE FOR THE REPORT FILE.
01388  M01S01386.ssval   +++|#
01389  M01S01387.ssval   +++|
01390  M01S01388.ssval   +++|      ARRAY ICLINE [0:0] S(3);       # INTERSECTING CHAIN REPORT LINE
01391  M01S01389.ssval   +++|                                     #
01392  M01S01390.ssval   +++|        BEGIN
01393  M01S01391.ssval   +++|        ITEM ICL$DEF    C(00,00,30) = ["000-0000       000-0000"];
01394  M01S01392.ssval   +++|        ITEM ICL$FCT1   C(00,00,03);  # *FCT* OF ENTRY ONE #
01395  M01S01393.ssval   +++|        ITEM ICL$AU1    C(00,24,04);  # *AU* OF ENTRY ONE #
01396  M01S01394.ssval   +++|        ITEM ICL$FCT2   C(01,30,03);  # *FCT* OF ENTRY TWO #
01397  M01S01395.ssval   +++|        ITEM ICL$AU2    C(01,54,04);  # *AU* OF ENTRY TWO #
01398  M01S01396.ssval   +++|        END
01399  M01S01397.ssval   +++|
01400  M01S01398.ssval   +++|                                               CONTROL EJECT;
01401  M01S01399.ssval   +++|
01402  M01S01400.ssval   +++|#
01403  M01S01401.ssval   +++|*     IF THE DETAIL HEADING HAS NOT BEEN PRINTED, PRINT IT.
01404  M01S01402.ssval   +++|#
01405  M01S01403.ssval   +++|
01406  M01S01404.ssval   +++|
01407  M01S01405.ssval   +++|      IF NOT SCDTLH
01408  M01S01406.ssval   +++|      THEN
01409  M01S01407.ssval   +++|        BEGIN
01410  M01S01408.ssval   +++|        VLSUBHD(SHTYP"ICT");         # PRINT DETAIL HEADING #
01411  M01S01409.ssval   +++|        SCRPTED = TRUE;              # SUBCATALOG REPORTED FLAG #
01412  M01S01410.ssval   +++|        SCDTLH = TRUE;               # SET SUBCATALOG DETAIL HEADING
01413  M01S01411.ssval   +++|                                       FLAG #
01414  M01S01412.ssval   +++|        END
01415  M01S01413.ssval   +++|
01416  M01S01414.ssval   +++|#
01417  M01S01415.ssval   +++|*     FORMAT AND PRINT THE INTERSECTING REPORT LINE.
01418  M01S01416.ssval   +++|#
01419  M01S01417.ssval   +++|
01420  M01S01418.ssval   +++|      P<VTLINK> = LOC(E1);             # *VT* LINK FOR ENTRY 1 #
01421  M01S01419.ssval   +++|      ICL$FCT1[0] = VLNTC(GROUPX*16+VTL$GRT[0]
01422  M01S01420.ssval   +++|        +ZFD,"XCDD",3);
01423  M01S01421.ssval   +++|      ICL$AU1[0] = VLNTC(VTL$AU[0]    # GET AU #
01424  M01S01422.ssval   +++|                    +ZFD,"XCDD",4);
01425  M01S01423.ssval   +++|      P<VTLINK> = LOC(E2);             # *VT* LINK FOR ENTRY 2 #
01426  M01S01424.ssval   +++|      ICL$FCT2[0] = VLNTC(GROUPX*16+VTL$GRT[0]
01427  M01S01425.ssval   +++|                    +ZFD,"XCDD",3);
01428  M01S01426.ssval   +++|      ICL$AU2[0] = VLNTC(VTL$AU[0]    # GET AU #
01429  M01S01427.ssval   +++|                    +ZFD,"XCDD",4);
01430  M01S01428.ssval   +++|
01431  M01S01429.ssval   +++|      RPLINE(RPTFADR,ICLINE,24,30,EOPL);  # ISSUE LINE TO REPORT #
01432  M01S01430.ssval   +++|
01433  M01S01431.ssval   +++|
01434  M01S01432.ssval   +++|      RETURN;
01435  M01S01433.ssval   +++|      END  # VLBICT #
01436  M01S01434.ssval   +++|
01437  M01S01435.ssval   +++|    TERM
01438  M01S01436.ssval   +++|PROC VLBLDVT(GROUP);
01439  M01S01437.ssval   +++|
01440  M01S01438.ssval   +++|# TITLE VLBLDVT - BUILD VALIDATION TABLE.                             #
01441  M01S01439.ssval   +++|
01442  M01S01440.ssval   +++|      BEGIN  # VLBLDVT #
01443  M01S01441.ssval   +++|
01444  M01S01442.ssval   +++|#
01445  M01S01443.ssval   +++|**    VLBLDVT - BUILD THE VALIDATION TABLE.
01446  M01S01444.ssval   +++|*
01447  M01S01445.ssval   +++|*     *VLBLDVT* READS THE *FCT* IN THE SELECTED SUBCATALOG (SM)
01448  M01S01446.ssval   +++|*     OF THE SFM CATALOG BEING PROCESSED AND BUILDS A *VT*
01449  M01S01447.ssval   +++|*     TABLE ENTRY FOR EACH AU OF EACH *FCT* ENTRY.
01450  M01S01448.ssval   +++|*
01451  M01S01449.ssval   +++|*     PROC VLBLDVT
01452  M01S01450.ssval   +++|*
01453  M01S01451.ssval   +++|*     ENTRY     (SMINDX)  - *SM* INDEX CURRENTLY PROCESSING.
01454  M01S01452.ssval   +++|*               (PAR$AM)   - AM PARAMETER FROM CONTROL CARD.
01455  M01S01453.ssval   +++|*               (PAR$FM)   - FM PARAMETER FROM CONTROL CARD.
01456  M01S01454.ssval   +++|*               (SBINDX)   - SUBFAMILY CURRENTLY PROCESSING.
01457  M01S01455.ssval   +++|*               P<VTTABLE> - START OF *VT* TABLE IN MEMORY.
01458  M01S01456.ssval   +++|*               (GROUP) - GROUP THAT WILL BE PROCESSED.
01459  M01S01457.ssval   +++|*
01460  M01S01458.ssval   +++|*     EXIT      (VTFIRST)       - INDEX OF FIRST ENTRY IN THE TABLE.
01461  M01S01459.ssval   +++|*               (VTLAST)        - INDEX OF LAST ENTRY IN THE TABLE.
01462  M01S01460.ssval   +++|*               (ARRAY VTTABLE) - CONTAINS ENTRIES FOR EACH AU IN
01463  M01S01461.ssval   +++|*                                 THE SUBCATALOG.
01464  M01S01462.ssval   +++|*
01465  M01S01463.ssval   +++|*     MESSAGES  *SFM CATALOG READ ERROR.*
01466  M01S01464.ssval   +++|*
01467  M01S01465.ssval   +++|*     NOTES     IF THE AM PARAMETER WAS SELECTED, THE *VLCMAP*
01468  M01S01466.ssval   +++|*               ROUTINE IS CALLED TO CHECK THE SMMAP ENTRY FOR EACH
01469  M01S01467.ssval   +++|*               *FCT* READ.
01470  M01S01468.ssval   +++|*
01471  M01S01469.ssval   +++|*               THESE *VT* ENTRY FIELDS ARE SET DEPENDING ON THE
01472  M01S01470.ssval   +++|*               *FCT* ENTRY -
01473  M01S01471.ssval   +++|*               . VTEN$NONE - NO CARTRIDGE ( *VSN* = BLANKS ).
01474  M01S01472.ssval   +++|*               . VTEN$SM  - SMMAP ENTRY ERROR.
01475  M01S01473.ssval   +++|*               . VTEN$INHB - INHIBIT FLAG SET.
01476  M01S01474.ssval   +++|*               . VTEN$LOST - LOST CARTRIDGE FLAG SET.
01477  M01S01475.ssval   +++|*               . VTEN$EWPE - EXCESSIVE WRITE PARITY ERRORS.
01478  M01S01476.ssval   +++|*               . VTEN$CONF - AU CONFLICT FLAG SET.
01479  M01S01477.ssval   +++|*               . VTEN$FROZ - FROZEN FLAG SET.
01480  M01S01478.ssval   +++|*               . VTEN$SOF  - START OF FRAGMENT SET.
01481  M01S01479.ssval   +++|*               . VTEN$ALOC - AU ALLOCATED.
01482  M01S01480.ssval   +++|*               . VTEN$HOC  - AU IS HEAD OF CHAIN.
01483  M01S01481.ssval   +++|*               . VTEN$EOC  - AU IS END OF CHAIN.
01484  M01S01482.ssval   +++|*               . VTEN$LINK - INDEX TO NEXT AU IN CHAIN.
01485  M01S01483.ssval   +++|*
01486  M01S01484.ssval   +++|#
01487  M01S01485.ssval   +++|
01488  M01S01486.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTINGS #
01489  M01S01487.ssval   +++|
01490  M01S01488.ssval   +++|#
01491  M01S01489.ssval   +++|****  PROC VLBLDVT - XREF LIST BEGIN.
01492  M01S01490.ssval   +++|#
01493  M01S01491.ssval   +++|
01494  M01S01492.ssval   +++|      XREF
01495  M01S01493.ssval   +++|        BEGIN
01496  M01S01494.ssval   +++|        PROC CGETFCT;                # GET AN *FCT* ENTRY #
01497  M01S01495.ssval   +++|        PROC VLCMAP;                 # *SM* MAP LOOKUP #
01498  M01S01496.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
01499  M01S01497.ssval   +++|        END
01500  M01S01498.ssval   +++|
01501  M01S01499.ssval   +++|#
01502  M01S01500.ssval   +++|****  PROC VLBLDVT - XREF LIST END.
01503  M01S01501.ssval   +++|#
01504  M01S01502.ssval   +++|
01505  M01S01503.ssval   +++|
01506  M01S01504.ssval   +++|
01507  M01S01505.ssval   +++|
01508  M01S01506.ssval   +++|*CALL COMBFAS
01509  M01S01507.ssval   +++|*CALL COMBCMD
01510  M01S01508.ssval   +++|*CALL COMBCMS
01511  M01S01509.ssval   +++|*CALL COMBMAP
01512  M01S01510.ssval   +++|*CALL COMBMCT
01513  M01S01511.ssval   +++|*CALL COMTVLD
01514  M01S01512.ssval   +++|*CALL COMTVLM
01515  M01S01513.ssval   +++|*CALL COMTVLV
01516  M01S01514.ssval   +++|
01517  M01S01515.ssval   +++|      ITEM EOCS     B;               # SAVE END OF CHAIN BIT #
01518  M01S01516.ssval   +++|      ITEM GROUP    U;               # GROUP TO BE PROCESSED #
01519  M01S01517.ssval   +++|      ITEM LINKHS   I;               # SAVE LINK POINTER HEADER #
01520  M01S01518.ssval   +++|      ITEM NEXT     I;               # INDEX TO *FCT* ORD TABLE #
01521  M01S01519.ssval   +++|      ITEM SMERR    B;               # FLAG RESULTS OF VLCMAP PROCESS #
01522  M01S01520.ssval   +++|      ITEM SW       U;               # AU WORD OFFSET #
01523  M01S01521.ssval   +++|      ITEM SP       U;               # AU POSITION IN WORD #
01524  M01S01522.ssval   +++|      ITEM START    I;               # START OF PROCESSING #
01525  M01S01523.ssval   +++|      ITEM TERMX    I;               # TERMINATION ORDINAL #
01526  M01S01524.ssval   +++|      ITEM ITEMP    I;               # TEMPORARY #
01527  M01S01525.ssval   +++|      ITEM I        I;               # INDUCTION VARIABLE #
01528  M01S01526.ssval   +++|      ITEM VPOINT   U;               # VOLUME HEAD POINTER #
01529  M01S01527.ssval   +++|
01530  M01S01528.ssval   +++|                                               CONTROL EJECT;
01531  M01S01529.ssval   +++|
01532  M01S01530.ssval   +++|#
01533  M01S01531.ssval   +++|*     INITIALIZE *VT* POINTERS.
01534  M01S01532.ssval   +++|#
01535  M01S01533.ssval   +++|
01536  M01S01534.ssval   +++|      P<VTLINK> = LOC(VTFIRST);      # BUILD STARTING LINK ADDRESS #
01537  M01S01535.ssval   +++|      VTL$GRT[0] = 0;
01538  M01S01536.ssval   +++|      VTL$AU[0] = 1;
01539  M01S01537.ssval   +++|      VTPTR = VTL$WORD[0] - 1;       # INITIALIZE ENTRY POINTER #
01540  M01S01538.ssval   +++|      GRTX = -1;
01541  M01S01539.ssval   +++|      EOCS = FALSE;
01542  M01S01540.ssval   +++|
01543  M01S01541.ssval   +++|#
01544  M01S01542.ssval   +++|*     PROCESS FOR EACH *FCT* RECORD.
01545  M01S01543.ssval   +++|#
01546  M01S01544.ssval   +++|
01547  M01S01545.ssval   +++|      START = GROUP * 16;
01548  M01S01546.ssval   +++|      TERMX = START + 15;
01549  M01S01547.ssval   +++|      SLOWFOR FCTORD = START STEP 1
01550  M01S01548.ssval   +++|        WHILE FCTORD LQ TERMX
01551  M01S01549.ssval   +++|        AND FCTORD LQ (PRM$ENTRC[SMINDX] + 15)
01552  M01S01550.ssval   +++|      DO
01553  M01S01551.ssval   +++|        BEGIN  # *FCT* PROCESSING #
01554  M01S01552.ssval   +++|        GRTX = GRTX + 1;
01555  M01S01553.ssval   +++|
01556  M01S01554.ssval   +++|#
01557  M01S01555.ssval   +++|*     READ THE *FCT* RECORD.
01558  M01S01556.ssval   +++|#
01559  M01S01557.ssval   +++|
01560  M01S01558.ssval   +++|      STAT = 0;
01561  M01S01559.ssval   +++|      FB$CWRD[0] = 0;
01562  M01S01560.ssval   +++|        CGETFCT(PAR$FM,SBINDX,SMINDX,FCTORD,LOC(VLFCTAREA),0,STAT);
01563  M01S01561.ssval   +++|        IF STAT NQ CMASTAT"NOERR"
01564  M01S01562.ssval   +++|        THEN
01565  M01S01563.ssval   +++|          BEGIN
01566  M01S01564.ssval   +++|          VLERROR(VE"CATR",ABRT);    # ABORT WITH MESSAGE #
01567  M01S01565.ssval   +++|          END
01568  M01S01566.ssval   +++|
01569  M01S01567.ssval   +++|        P<FCT> = LOC(VLFCTAREA);
01570  M01S01568.ssval   +++|        SMERR = FALSE;              # INITIALIZE TO NO *SM* ERROR #
01571  M01S01569.ssval   +++|
01572  M01S01570.ssval   +++|#
01573  M01S01571.ssval   +++|*     IF THE *AM* OPTION WAS SELECTED, PERFORM A SMMAP CHECK.
01574  M01S01572.ssval   +++|#
01575  M01S01573.ssval   +++|
01576  M01S01574.ssval   +++|        IF PAR$AM NQ 0
01577  M01S01575.ssval   +++|        THEN
01578  M01S01576.ssval   +++|          BEGIN
01579  M01S01577.ssval   +++|          VLCMAP(SMERR);
01580  M01S01578.ssval   +++|          END
01581  M01S01579.ssval   +++|
01582  M01S01580.ssval   +++|#
01583  M01S01581.ssval   +++|*     PROCESS FOR EACH AU OF THE *FCT* RECORD.
01584  M01S01582.ssval   +++|#
01585  M01S01583.ssval   +++|
01586  M01S01584.ssval   +++|        SLOWFOR AUINDX = 1 STEP 1 UNTIL INAVOT
01587  M01S01585.ssval   +++|        DO
01588  M01S01586.ssval   +++|          BEGIN  # AU PROCESSING #
01589  M01S01587.ssval   +++|
01590  M01S01588.ssval   +++|#
01591  M01S01589.ssval   +++|*     CALCULATE AU WORD AND OFFSET INTO *FCT* AREA.
01592  M01S01590.ssval   +++|#
01593  M01S01591.ssval   +++|
01594  M01S01592.ssval   +++|          SW = FCT$WD(AUINDX);
01595  M01S01593.ssval   +++|          SP = FCT$WP(AUINDX);
01596  M01S01594.ssval   +++|
01597  M01S01595.ssval   +++|          IF FCT$CAUF(SW,SP) EQ 0
01598  M01S01596.ssval   +++|          THEN                  # SAVE POINTER AT VOLUME START #
01599  M01S01597.ssval   +++|            BEGIN
01600  M01S01598.ssval   +++|            VPOINT = FCT$LINK(SW,SP);
01601  M01S01599.ssval   +++|            END
01602  M01S01600.ssval   +++|
01603  M01S01601.ssval   +++|#
01604  M01S01602.ssval   +++|*     BUILD *VT* ENTRY FOR THE AU.
01605  M01S01603.ssval   +++|#
01606  M01S01604.ssval   +++|
01607  M01S01605.ssval   +++|          VTEN$WORD[0] = 0;
01608  M01S01606.ssval   +++|          IF FCT$CSND[0] EQ "        "
01609  M01S01607.ssval   +++|            OR FCT$1ST[0] EQ 0
01610  M01S01608.ssval   +++|          THEN
01611  M01S01609.ssval   +++|
01612  M01S01610.ssval   +++|#
01613  M01S01611.ssval   +++|*     BUILD *VT* ENTRY WHEN NO CARTRIDGE.
01614  M01S01612.ssval   +++|#
01615  M01S01613.ssval   +++|
01616  M01S01614.ssval   +++|            BEGIN
01617  M01S01615.ssval   +++|            VTEN$NONE[0] = TRUE;
01618  M01S01616.ssval   +++|            EOCS = FALSE;
01619  M01S01617.ssval   +++|            VPOINT = 0;
01620  M01S01618.ssval   +++|            END
01621  M01S01619.ssval   +++|
01622  M01S01620.ssval   +++|          ELSE
01623  M01S01621.ssval   +++|
01624  M01S01622.ssval   +++|#
01625  M01S01623.ssval   +++|*     BUILD *VT* ENTRY WHEN CARTRIDGE EXISTS.
01626  M01S01624.ssval   +++|#
01627  M01S01625.ssval   +++|
01628  M01S01626.ssval   +++|            BEGIN  # CARTRIDGE EXISTS #
01629  M01S01627.ssval   +++|            VTEN$SME[0] = SMERR;
01630  M01S01628.ssval   +++|            VTEN$INHB[0] = FCT$IAF[0];
01631  M01S01629.ssval   +++|            VTEN$LOST[0] = FCT$LCF[0];
01632  M01S01630.ssval   +++|            VTEN$EWPE[0] = FCT$EEF[0];
01633  M01S01631.ssval   +++|            VTEN$CONR[0] = FCT$AUCF(SW,SP);
01634  M01S01632.ssval   +++|            VTEN$FROZR[0] = FCT$FRCF(SW,SP);
01635  M01S01633.ssval   +++|            VTEN$SOFR[0] = FCT$SFF(SW,SP);
01636  M01S01634.ssval   +++|            VTEN$ALOCR[0] = FCT$FBF(SW,SP);
01637  M01S01635.ssval   +++|            VTEN$FCF[0] = FCT$FCF[0];
01638  M01S01636.ssval   +++|
01639  M01S01637.ssval   +++|#
01640  M01S01638.ssval   +++|*     PROCESS AN ALLOCATED HEAD OF VOLUME *AU*.
01641  M01S01639.ssval   +++|#
01642  M01S01640.ssval   +++|
01643  M01S01641.ssval   +++|            IF VTEN$ALOC[0] AND FCT$CAUF(SW,SP) EQ 0
01644  M01S01642.ssval   +++|            THEN
01645  M01S01643.ssval   +++|              BEGIN  # AU ALLOCATED #
01646  M01S01644.ssval   +++|              ITEMP = FCT$CC(SW,SP);
01647  M01S01645.ssval   +++|              IF ITEMP EQ CHAINCON"FIRST"
01648  M01S01646.ssval   +++|              THEN
01649  M01S01647.ssval   +++|                BEGIN
01650  M01S01648.ssval   +++|                VTEN$HOC[0] = TRUE;  # HEAD OF CHAIN #
01651  M01S01649.ssval   +++|                END
01652  M01S01650.ssval   +++|
01653  M01S01651.ssval   +++|              IF ITEMP EQ CHAINCON"LAST"
01654  M01S01652.ssval   +++|              THEN
01655  M01S01653.ssval   +++|                BEGIN
01656  M01S01654.ssval   +++|                EOCS = TRUE;
01657  M01S01655.ssval   +++|                END
01658  M01S01656.ssval   +++|
01659  M01S01657.ssval   +++|              IF ITEMP EQ CHAINCON"ONLY"
01660  M01S01658.ssval   +++|              THEN
01661  M01S01659.ssval   +++|                BEGIN
01662  M01S01660.ssval   +++|                VTEN$HOC[0] = TRUE;  # SET BOTH HEAD AND #
01663  M01S01661.ssval   +++|                EOCS = TRUE;
01664  M01S01662.ssval   +++|                END
01665  M01S01663.ssval   +++|
01666  M01S01664.ssval   +++|#
01667  M01S01665.ssval   +++|*     IF NOT THE END OF THE CHAIN, SET LINK TO NEXT IN CHAIN.
01668  M01S01666.ssval   +++|#
01669  M01S01667.ssval   +++|
01670  M01S01668.ssval   +++|              IF NOT EOCS
01671  M01S01669.ssval   +++|              THEN
01672  M01S01670.ssval   +++|                BEGIN  # LINK TO THE NEXT AU #
01673  M01S01671.ssval   +++|                ITEMP = FCT$CLKOCL(SW,SP);
01674  M01S01672.ssval   +++|                LINKHS = GRTX;
01675  M01S01673.ssval   +++|                IF ITEMP NQ 0
01676  M01S01674.ssval   +++|                THEN
01677  M01S01675.ssval   +++|                  BEGIN
01678  M01S01676.ssval   +++|                  VTEN$OCL[0] = ITEMP;
01679  M01S01677.ssval   +++|                  LINKHS = FCT$OCL[0];
01680  M01S01678.ssval   +++|                  IF ITEMP EQ 2
01681  M01S01679.ssval   +++|                  THEN
01682  M01S01680.ssval   +++|                    BEGIN
01683  M01S01681.ssval   +++|                    LINKHS = FCT$OCL1[0];
01684  M01S01682.ssval   +++|                    END
01685  M01S01683.ssval   +++|
01686  M01S01684.ssval   +++|                  ELSE
01687  M01S01685.ssval   +++|                    BEGIN
01688  M01S01686.ssval   +++|                    IF ITEMP EQ 3
01689  M01S01687.ssval   +++|                    THEN
01690  M01S01688.ssval   +++|                      BEGIN
01691  M01S01689.ssval   +++|                      LINKHS = FCT$OCL2[0];
01692  M01S01690.ssval   +++|                      END
01693  M01S01691.ssval   +++|
01694  M01S01692.ssval   +++|                    END
01695  M01S01693.ssval   +++|
01696  M01S01694.ssval   +++|                  END
01697  M01S01695.ssval   +++|
01698  M01S01696.ssval   +++|                END  # LINK TO THE NEXT AU #
01699  M01S01697.ssval   +++|
01700  M01S01698.ssval   +++|              END  # AU ALLOCATED #
01701  M01S01699.ssval   +++|
01702  M01S01700.ssval   +++|            IF VTEN$ALOC[0] AND FCT$LEN(SW,SP) NQ 0
01703  M01S01701.ssval   +++|            THEN            # *AU*-S REMAIN IN VOLUME #
01704  M01S01702.ssval   +++|              BEGIN
01705  M01S01703.ssval   +++|              VTEN$LINKL[0] = AUINDX + 1;
01706  M01S01704.ssval   +++|              VTEN$LINKH[0] = GRTX;
01707  M01S01705.ssval   +++|              END
01708  M01S01706.ssval   +++|
01709  M01S01707.ssval   +++|            IF VTEN$ALOC[0] AND FCT$LEN(SW,SP) EQ 0
01710  M01S01708.ssval   +++|            THEN
01711  M01S01709.ssval   +++|              BEGIN
01712  M01S01710.ssval   +++|              VTEN$LINKL[0] = VPOINT;
01713  M01S01711.ssval   +++|              VTEN$LINKH[0] = GRTX;
01714  M01S01712.ssval   +++|              VTEN$EOC[0] = EOCS;
01715  M01S01713.ssval   +++|              IF EOCS
01716  M01S01714.ssval   +++|              THEN
01717  M01S01715.ssval   +++|                BEGIN
01718  M01S01716.ssval   +++|                VTEN$LINKH[0] = 0;
01719  M01S01717.ssval   +++|                END
01720  M01S01718.ssval   +++|
01721  M01S01719.ssval   +++|              IF NOT EOCS
01722  M01S01720.ssval   +++|              THEN
01723  M01S01721.ssval   +++|                BEGIN
01724  M01S01722.ssval   +++|                VTEN$LINKH[0] = LINKHS;
01725  M01S01723.ssval   +++|                END
01726  M01S01724.ssval   +++|
01727  M01S01725.ssval   +++|              EOCS = FALSE;
01728  M01S01726.ssval   +++|              END
01729  M01S01727.ssval   +++|
01730  M01S01728.ssval   +++|            END  # CARTRIDGE EXISTS #
01731  M01S01729.ssval   +++|
01732  M01S01730.ssval   +++|#
01733  M01S01731.ssval   +++|*     PUT *VT* ENTRY INTO TABLE IN MEMORY.
01734  M01S01732.ssval   +++|#
01735  M01S01733.ssval   +++|
01736  M01S01734.ssval   +++|          VTPTR = VTPTR + 1;         # ADDRESS FOR NEXT ENTRY #
01737  M01S01735.ssval   +++|
01738  M01S01736.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # PUT ENTRY IN TABLE #
01739  M01S01737.ssval   +++|
01740  M01S01738.ssval   +++|          END  # AU PROCESSING #
01741  M01S01739.ssval   +++|
01742  M01S01740.ssval   +++|        VTPTR = VTPTR + 2048 - INAVOT;
01743  M01S01741.ssval   +++|        END  # *FCT* PROCESSING #
01744  M01S01742.ssval   +++|
01745  M01S01743.ssval   +++|#
01746  M01S01744.ssval   +++|*     MARK END OF ENTRIES IN *VT* TABLE.
01747  M01S01745.ssval   +++|#
01748  M01S01746.ssval   +++|
01749  M01S01747.ssval   +++|      VTLAST = VTPTR;                # SAVE END OF *VT* TABLE #
01750  M01S01748.ssval   +++|
01751  M01S01749.ssval   +++|      RETURN;
01752  M01S01750.ssval   +++|
01753  M01S01751.ssval   +++|      END  # VLBLDVT #
01754  M01S01752.ssval   +++|
01755  M01S01753.ssval   +++|    TERM
01756  M01S01754.ssval   +++|PROC VLCFS;
01757  M01S01755.ssval   +++|# TITLE VLCFS - CHAIN FRAGMENT SCAN.                                  #
01758  M01S01756.ssval   +++|
01759  M01S01757.ssval   +++|
01760  M01S01758.ssval   +++|      BEGIN  # VLCFS #
01761  M01S01759.ssval   +++|
01762  M01S01760.ssval   +++|#
01763  M01S01761.ssval   +++|**    VLCFS - CHAIN FRAGMENT SCAN.
01764  M01S01762.ssval   +++|*
01765  M01S01763.ssval   +++|*     *VLCFS* SCANS ALL ENTRIES IN THE *VT* TABLE TO DETECT CHAIN
01766  M01S01764.ssval   +++|*     FRAGMENTS.  CHAIN FRAGMENTS ARE *VT* ENTRIES THAT ARE ALLOCATED
01767  M01S01765.ssval   +++|*     BUT ARE NOT MARKED AS MEMBERS OF NORMAL CHAINS (SEE *VLNCS*).
01768  M01S01766.ssval   +++|*
01769  M01S01767.ssval   +++|*     PROC VLCFS
01770  M01S01768.ssval   +++|*
01771  M01S01769.ssval   +++|*     ENTRY     (VTFIRST)     - INDEX TO FIRST ENTRY IN *VT*.
01772  M01S01770.ssval   +++|*               (VTLAST)      - INDEX TO LAST ENTRY IN *VT*.
01773  M01S01771.ssval   +++|*               ARRAY VTTABLE - VALIDATION TABLE ENTRIES.
01774  M01S01772.ssval   +++|*
01775  M01S01773.ssval   +++|*     EXIT      THE FOLLOWING FIELDS IN THE *VT* ENTRIES MAY BE
01776  M01S01774.ssval   +++|*               UPDATED IF FRAGMENTS ARE DETECTED.
01777  M01S01775.ssval   +++|*               . VTEN$POINT - INDEX TO HEAD OF CHAIN.
01778  M01S01776.ssval   +++|*               . VTEN$SOF   - START OF FRAGMENT FLAG SET.
01779  M01S01777.ssval   +++|*               . VTEN$ILL   - SET IF CHAIN IS ILL-FORMED.
01780  M01S01778.ssval   +++|*               . VTEN$INTC  - SET IF CHAIN IS INTERSECTING.
01781  M01S01779.ssval   +++|*
01782  M01S01780.ssval   +++|*               THE INTERSECTING CHAIN DETAIL LINES ARE ISSUED
01783  M01S01781.ssval   +++|*               TO THE REPORT FILE IF INTERSECTIONS ARE DETECTED.
01784  M01S01782.ssval   +++|*
01785  M01S01783.ssval   +++|*     NOTES     AN ENTRY IS MARKED AS BEING ON A CHAIN BY
01786  M01S01784.ssval   +++|*               SETTING THE VTEN$POINT FIELD EQUAL TO *HOC* INDEX.
01787  M01S01785.ssval   +++|*
01788  M01S01786.ssval   +++|*               THE CHAIN IS FOLLOWED UNTIL -
01789  M01S01787.ssval   +++|*                . AN END-OF-CHAIN ENTRY IS DETECTED.
01790  M01S01788.ssval   +++|*                . AN ILL-FORMED CHAIN IS DETECTED.
01791  M01S01789.ssval   +++|*                . AN INTERSECTING CHAIN IS DETECTED.
01792  M01S01790.ssval   +++|*
01793  M01S01791.ssval   +++|*               AN ILL-FORMED CHAIN HAS AN ENTRY THAT LINKS TO ANOTHER
01794  M01S01792.ssval   +++|*               ENTRY ALREADY ON THE CHAIN OR LINKS TO AN ENTRY
01795  M01S01793.ssval   +++|*               THAT IS NOT ALLOCATED OR HAS A LINK THAT IS NOT ZERO
01796  M01S01794.ssval   +++|*               WHEN THE *EOC* IS SET.
01797  M01S01795.ssval   +++|*
01798  M01S01796.ssval   +++|*               AN INTERSECTING CHAIN IS ONE WHOSE ENTRY LINKS TO AN
01799  M01S01797.ssval   +++|*               ENTRY ALREADY ON A DIFFERENT CHAIN.
01800  M01S01798.ssval   +++|*
01801  M01S01799.ssval   +++|*               IF A FRAGMENT CHAIN RUNS INTO ANOTHER FRAGMENT CHAIN,
01802  M01S01800.ssval   +++|*               THE SECOND FRAGMENT IS CONSIDERED A TAIL OF THE
01803  M01S01801.ssval   +++|*               FIRST.  IT IS FOLLOWED AND RE-MARKED SO THAT ITS
01804  M01S01802.ssval   +++|*               POINTER FIELD *VTEN$POINT* CONTAINS THE INDEX OF THE
01805  M01S01803.ssval   +++|*               FIRST START OF FRAGMENT ENTRY.
01806  M01S01804.ssval   +++|*
01807  M01S01805.ssval   +++|#
01808  M01S01806.ssval   +++|
01809  M01S01807.ssval   +++|#
01810  M01S01808.ssval   +++|****  PROC VLCFS - XREF LIST BEGIN.
01811  M01S01809.ssval   +++|#
01812  M01S01810.ssval   +++|
01813  M01S01811.ssval   +++|      XREF
01814  M01S01812.ssval   +++|        BEGIN
01815  M01S01813.ssval   +++|        PROC VLBICT;                 # INTERSECTING CHAIN REPORT #
01816  M01S01814.ssval   +++|        END
01817  M01S01815.ssval   +++|
01818  M01S01816.ssval   +++|#
01819  M01S01817.ssval   +++|****  PROC VLCFS - XREF LIST END.
01820  M01S01818.ssval   +++|#
01821  M01S01819.ssval   +++|
01822  M01S01820.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
01823  M01S01821.ssval   +++|
01824  M01S01822.ssval   +++|*CALL COMBFAS
01825  M01S01823.ssval   +++|*CALL COMTVLD
01826  M01S01824.ssval   +++|*CALL COMTVLV
01827  M01S01825.ssval   +++|
01828  M01S01826.ssval   +++|
01829  M01S01827.ssval   +++|      STATUS CHAIN                   # CHAIN STATUS #
01830  M01S01828.ssval   +++|        OK,                          # GOOD CHAIN #
01831  M01S01829.ssval   +++|        ILL,                         # ILL-FORMED CHAIN #
01832  M01S01830.ssval   +++|        INTC;                        # INTERSECTING CHAIN #
01833  M01S01831.ssval   +++|
01834  M01S01832.ssval   +++|      ITEM ENDCHAIN   B;             # END OF CHAIN FLAG #
01835  M01S01833.ssval   +++|      ITEM HOCSTAT    S : CHAIN;     # CHAIN STATUS #
01836  M01S01834.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
01837  M01S01835.ssval   +++|      ITEM TAIL       B;             # TAIL FLAG #
01838  M01S01836.ssval   +++|      ITEM TAILPTR    I;             # *VT* INDEX OF A TAIL #
01839  M01S01837.ssval   +++|
01840  M01S01838.ssval   +++|                                               CONTROL EJECT;
01841  M01S01839.ssval   +++|
01842  M01S01840.ssval   +++|#
01843  M01S01841.ssval   +++|*     SCAN *VT* FOR ALLOCATED ENTRIES NOT ON CHAINS.  THIS VALIDATION
01844  M01S01842.ssval   +++|*     STEP IS TO IDENTIFY PROBLEMS WITH AU-S THAT ARE NOT ON VALID
01845  M01S01843.ssval   +++|*     CHAINS.
01846  M01S01844.ssval   +++|#
01847  M01S01845.ssval   +++|
01848  M01S01846.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
01849  M01S01847.ssval   +++|      DO
01850  M01S01848.ssval   +++|        BEGIN  # *VT* ENTRY #
01851  M01S01849.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *VT* ENTRY #
01852  M01S01850.ssval   +++|
01853  M01S01851.ssval   +++|#
01854  M01S01852.ssval   +++|*     FIND AN ALLOCATED AU THAT IS NOT ON A CHAIN.
01855  M01S01853.ssval   +++|*     IT IS DEFINED AS A FRAGMENT CHAIN.  IF THE ENTRY IS ALREADY
01856  M01S01854.ssval   +++|*     ASSIGNED TO A CHAIN, THE VTEN$POINT IS SET.
01857  M01S01855.ssval   +++|#
01858  M01S01856.ssval   +++|
01859  M01S01857.ssval   +++|        IF NOT VTEN$ALOC[0] OR VTEN$POINT[0] NQ 0
01860  M01S01858.ssval   +++|        THEN
01861  M01S01859.ssval   +++|          BEGIN
01862  M01S01860.ssval   +++|          TEST I;                    # SKIP, NOT A FRAGMENT #
01863  M01S01861.ssval   +++|          END
01864  M01S01862.ssval   +++|
01865  M01S01863.ssval   +++|
01866  M01S01864.ssval   +++|        VTEN$SOF[0] = TRUE;          # SET START OF FRAGMENT FLAG #
01867  M01S01865.ssval   +++|
01868  M01S01866.ssval   +++|#
01869  M01S01867.ssval   +++|*     INITIALIZE FIELDS USED TO FOLLOW THE FRAGMENT CHAIN.
01870  M01S01868.ssval   +++|*     THE VARIABLE I = INDEX OF FRAGMENT *HOC*.
01871  M01S01869.ssval   +++|#
01872  M01S01870.ssval   +++|
01873  M01S01871.ssval   +++|        VTPTR = I;                   # START AT THIS *HOC* #
01874  M01S01872.ssval   +++|        ENDCHAIN = FALSE;
01875  M01S01873.ssval   +++|        HOCSTAT = S"OK";
01876  M01S01874.ssval   +++|        TAIL = FALSE;
01877  M01S01875.ssval   +++|        TAILPTR = 0;
01878  M01S01876.ssval   +++|
01879  M01S01877.ssval   +++|#
01880  M01S01878.ssval   +++|*     PROCESS EACH ENTRY IN FRAGMENT STARTING WITH *HOC* ENTRY.
01881  M01S01879.ssval   +++|#
01882  M01S01880.ssval   +++|
01883  M01S01881.ssval   +++|        REPEAT WHILE NOT ENDCHAIN
01884  M01S01882.ssval   +++|        DO                           # SCAN FRAGMENT CHAIN #
01885  M01S01883.ssval   +++|          BEGIN  # FRAGMENT PROCESSING #
01886  M01S01884.ssval   +++|
01887  M01S01885.ssval   +++|          IF (VTEN$POINT[0] EQ 0) OR (VTEN$POINT[0] EQ TAILPTR)
01888  M01S01886.ssval   +++|          THEN
01889  M01S01887.ssval   +++|
01890  M01S01888.ssval   +++|#
01891  M01S01889.ssval   +++|*     ENTRY BELONGS TO THIS CHAIN (EITHER A NEW ENTRY OR A TAIL ENTRY).
01892  M01S01890.ssval   +++|#
01893  M01S01891.ssval   +++|
01894  M01S01892.ssval   +++|            BEGIN  # ADD ENTRY TO THE FRAGMENT CHAIN #
01895  M01S01893.ssval   +++|            VTEN$POINT[0] = I;
01896  M01S01894.ssval   +++|            IF NOT VTEN$ALOC[0]
01897  M01S01895.ssval   +++|            THEN
01898  M01S01896.ssval   +++|              BEGIN
01899  M01S01897.ssval   +++|              VTEN$SOF[0] = TRUE;
01900  M01S01898.ssval   +++|              END
01901  M01S01899.ssval   +++|
01902  M01S01900.ssval   +++|            IF NOT VTEN$ALOC[0] OR VTEN$EOC[0] AND VTEN$LINK[0] NQ 0
01903  M01S01901.ssval   +++|              THEN
01904  M01S01902.ssval   +++|              BEGIN
01905  M01S01903.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
01906  M01S01904.ssval   +++|              END
01907  M01S01905.ssval   +++|
01908  M01S01906.ssval   +++|            END  # ADD ENTRY TO THE FRAGMENT CHAIN #
01909  M01S01907.ssval   +++|
01910  M01S01908.ssval   +++|          ELSE
01911  M01S01909.ssval   +++|
01912  M01S01910.ssval   +++|#
01913  M01S01911.ssval   +++|*     ENTRY ALREADY ON SOME OTHER CHAIN.
01914  M01S01912.ssval   +++|#
01915  M01S01913.ssval   +++|
01916  M01S01914.ssval   +++|            BEGIN  # ENTRY ON A CHAIN #
01917  M01S01915.ssval   +++|            IF VTEN$SOF[0] AND (VTPTR NQ I)  # NOT LOOPING #
01918  M01S01916.ssval   +++|              AND VTEN$ALOC[0] AND VTPTR EQ VTEN$POINT[0]
01919  M01S01917.ssval   +++|            THEN
01920  M01S01918.ssval   +++|
01921  M01S01919.ssval   +++|#
01922  M01S01920.ssval   +++|*     THE OTHER CHAIN IS A TAIL.  THE CHAIN BEING FOLLOWED POINTS TO
01923  M01S01921.ssval   +++|*     THE BEGINNING OF A FRAGMENT CHAIN.  MAKE THE TWO CHAINS INTO ONE
01924  M01S01922.ssval   +++|*     FRAGMENT CHAIN BY FOLLOWING THIS TAIL AND UPDATING THE
01925  M01S01923.ssval   +++|*     VTEN$POINT.
01926  M01S01924.ssval   +++|#
01927  M01S01925.ssval   +++|
01928  M01S01926.ssval   +++|              BEGIN  # START TAIL #
01929  M01S01927.ssval   +++|              TAIL = TRUE;
01930  M01S01928.ssval   +++|              VTEN$SOF[0] = FALSE;
01931  M01S01929.ssval   +++|              VTEN$INTC[0] = FALSE;
01932  M01S01930.ssval   +++|              VTEN$ILL[0] = FALSE;
01933  M01S01931.ssval   +++|              TAILPTR = VTEN$POINT[0];  # MARK THIS ONE, MARK REST IN
01934  M01S01932.ssval   +++|                                          MAIN LOOP #
01935  M01S01933.ssval   +++|              VTEN$POINT[0] = I;
01936  M01S01934.ssval   +++|              END  # START TAIL #
01937  M01S01935.ssval   +++|
01938  M01S01936.ssval   +++|            ELSE
01939  M01S01937.ssval   +++|
01940  M01S01938.ssval   +++|#
01941  M01S01939.ssval   +++|*     CHAIN INTERSECTS OR IS ILL-FORMED.
01942  M01S01940.ssval   +++|#
01943  M01S01941.ssval   +++|
01944  M01S01942.ssval   +++|              BEGIN  # PROBLEM CHAIN #
01945  M01S01943.ssval   +++|              VTEN$INTS[0] = TRUE;
01946  M01S01944.ssval   +++|              IF VTEN$POINT[0] EQ I
01947  M01S01945.ssval   +++|              THEN                   # THE CHAIN IS ILL-FORMED #
01948  M01S01946.ssval   +++|                BEGIN
01949  M01S01947.ssval   +++|                HOCSTAT = S"ILL";
01950  M01S01948.ssval   +++|                VTEN$LOOP[0] = TRUE;
01951  M01S01949.ssval   +++|                END
01952  M01S01950.ssval   +++|
01953  M01S01951.ssval   +++|              ELSE                   # THE CHAIN INTERSECTS #
01954  M01S01952.ssval   +++|                BEGIN
01955  M01S01953.ssval   +++|                HOCSTAT = S"INTC";
01956  M01S01954.ssval   +++|                VLBICT(I,VTEN$POINT[0]);  # REPORT CHAINS #
01957  M01S01955.ssval   +++|                END
01958  M01S01956.ssval   +++|
01959  M01S01957.ssval   +++|              END  # PROBLEM CHAIN #
01960  M01S01958.ssval   +++|
01961  M01S01959.ssval   +++|            END  # ENTRY ON A CHAIN #
01962  M01S01960.ssval   +++|
01963  M01S01961.ssval   +++|
01964  M01S01962.ssval   +++|
01965  M01S01963.ssval   +++|#
01966  M01S01964.ssval   +++|*     UPDATE THE AU ENTRY.
01967  M01S01965.ssval   +++|#
01968  M01S01966.ssval   +++|
01969  M01S01967.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # UPDATE ENTRY #
01970  M01S01968.ssval   +++|
01971  M01S01969.ssval   +++|#
01972  M01S01970.ssval   +++|*     AN END OF CHAIN CONDITION IS SET HERE IF:
01973  M01S01971.ssval   +++|*       1) *EOC* FLAG IS SET, OR
01974  M01S01972.ssval   +++|*       2) A LINKAGE PROBLEM HAS BEEN DETECTED.
01975  M01S01973.ssval   +++|#
01976  M01S01974.ssval   +++|
01977  M01S01975.ssval   +++|          ENDCHAIN = VTEN$EOC[0] OR HOCSTAT NQ S"OK";  # BAD CHAIN #
01978  M01S01976.ssval   +++|
01979  M01S01977.ssval   +++|#
01980  M01S01978.ssval   +++|*     GET LINK TO NEXT AU IF NOT AT END OF CHAIN.
01981  M01S01979.ssval   +++|#
01982  M01S01980.ssval   +++|
01983  M01S01981.ssval   +++|          IF NOT ENDCHAIN
01984  M01S01982.ssval   +++|          THEN
01985  M01S01983.ssval   +++|            BEGIN  # GET NEXT LINK #
01986  M01S01984.ssval   +++|            VTPTR = VTEN$LINK[0];
01987  M01S01985.ssval   +++|
01988  M01S01986.ssval   +++|            IF VTPTR LS VTFIRST OR VTPTR GR VTLAST
01989  M01S01987.ssval   +++|            THEN                     # LINK IS BAD #
01990  M01S01988.ssval   +++|              BEGIN
01991  M01S01989.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
01992  M01S01990.ssval   +++|              ENDCHAIN = TRUE;
01993  M01S01991.ssval   +++|              END
01994  M01S01992.ssval   +++|
01995  M01S01993.ssval   +++|            END  # GET NEXT LINK #
01996  M01S01994.ssval   +++|
01997  M01S01995.ssval   +++|#
01998  M01S01996.ssval   +++|*     GET NEXT AU IN CHAIN.
01999  M01S01997.ssval   +++|#
02000  M01S01998.ssval   +++|
02001  M01S01999.ssval   +++|          IF NOT ENDCHAIN
02002  M01S02000.ssval   +++|          THEN
02003  M01S02001.ssval   +++|            BEGIN
02004  M01S02002.ssval   +++|            VTEN$WORD[0] = VT$ITEM[VTPTR];  # NEXT IN CHAIN #
02005  M01S02003.ssval   +++|            END
02006  M01S02004.ssval   +++|
02007  M01S02005.ssval   +++|          END  # FRAGMENT PROCESSING #
02008  M01S02006.ssval   +++|
02009  M01S02007.ssval   +++|#
02010  M01S02008.ssval   +++|*     UPDATE OTHER HEAD OF CHAIN IF INTERSECTING.
02011  M01S02009.ssval   +++|#
02012  M01S02010.ssval   +++|
02013  M01S02011.ssval   +++|        IF HOCSTAT EQ S"INTC"
02014  M01S02012.ssval   +++|        THEN
02015  M01S02013.ssval   +++|          BEGIN
02016  M01S02014.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
02017  M01S02015.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING FLAG #
02018  M01S02016.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # STORE *HOC* ENTRY #
02019  M01S02017.ssval   +++|          END
02020  M01S02018.ssval   +++|
02021  M01S02019.ssval   +++|#
02022  M01S02020.ssval   +++|*     UPDATE HEAD OF CHAIN ENTRY.
02023  M01S02021.ssval   +++|#
02024  M01S02022.ssval   +++|
02025  M01S02023.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *HOC* ENTRY #
02026  M01S02024.ssval   +++|        IF HOCSTAT EQ S"ILL"
02027  M01S02025.ssval   +++|        THEN
02028  M01S02026.ssval   +++|          BEGIN
02029  M01S02027.ssval   +++|          VTEN$ILL[0] = TRUE;        # SET ILL-FORMED FLAG #
02030  M01S02028.ssval   +++|          END
02031  M01S02029.ssval   +++|
02032  M01S02030.ssval   +++|        IF HOCSTAT EQ S"INTC"
02033  M01S02031.ssval   +++|        THEN
02034  M01S02032.ssval   +++|          BEGIN
02035  M01S02033.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING FLAG #
02036  M01S02034.ssval   +++|          END
02037  M01S02035.ssval   +++|
02038  M01S02036.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *HOC* ENTRY #
02039  M01S02037.ssval   +++|
02040  M01S02038.ssval   +++|        END  # *VT* ENTRY #
02041  M01S02039.ssval   +++|
02042  M01S02040.ssval   +++|      END  # VLCFS #
02043  M01S02041.ssval   +++|
02044  M01S02042.ssval   +++|    TERM
02045  M01S02043.ssval   +++|PROC VLCMAP(CMERR);
02046  M01S02044.ssval   +++|# TITLE VLCMAP - *SM* MAP LOOKUP.                                    #
02047  M01S02045.ssval   +++|
02048  M01S02046.ssval   +++|
02049  M01S02047.ssval   +++|      BEGIN  # VLCMAP #
02050  M01S02048.ssval   +++|
02051  M01S02049.ssval   +++|#
02052  M01S02050.ssval   +++|**    VLCMAP - SMMAP LOOKUP.
02053  M01S02051.ssval   +++|*
02054  M01S02052.ssval   +++|*     *VLCMAP* READS THE SMMAP ENTRY FOR THE GIVEN Y,Z COORDINATES
02055  M01S02053.ssval   +++|*     IN THE *FCT* RECORD AND VERIFIES THAT THE ENTRY IS VALID.
02056  M01S02054.ssval   +++|*
02057  M01S02055.ssval   +++|*     PROC VLCMAP(CMERR)
02058  M01S02056.ssval   +++|*
02059  M01S02057.ssval   +++|*     ENTRY     (SMINDX)         - *SM* INDEX.
02060  M01S02058.ssval   +++|*               (FCTORD)          - *FCT* ORDINAL.
02061  M01S02059.ssval   +++|*               (PAR$FM)          - FAMILY.
02062  M01S02060.ssval   +++|*               (SBINDX)          - SUBFAMILY INDEX.
02063  M01S02061.ssval   +++|*               (ARRAY VLFCTAREA) - CONTAINS *FCT* RECORD.
02064  M01S02062.ssval   +++|*
02065  M01S02063.ssval   +++|*     EXIT      (CMERR)        = TRUE IF ERROR DETECTED.
02066  M01S02064.ssval   +++|*                              = FALSE IF NO ERROR.
02067  M01S02065.ssval   +++|*               (ARRAY VLCMAP) - BIT SET FOR GIVEN Y, Z IF THE
02068  M01S02066.ssval   +++|*                                SMMAP/FCT ENTRIES POINT TO EACH
02069  M01S02067.ssval   +++|*                                OTHER.
02070  M01S02068.ssval   +++|*
02071  M01S02069.ssval   +++|*               IF AN ERROR IS DETECTED, A PROBLEM FILE
02072  M01S02070.ssval   +++|*               RECORD (RT"FCT") IS WRITTEN.
02073  M01S02071.ssval   +++|*
02074  M01S02072.ssval   +++|*     MESSAGES  * SMMAP READ ERROR.*
02075  M01S02073.ssval   +++|*
02076  M01S02074.ssval   +++|*     NOTES     AN ERROR IN THE ENTRY IS DETECTED IF -
02077  M01S02075.ssval   +++|*               . IT IS NOT ASSIGNED TO THE SUBFAMILY.
02078  M01S02076.ssval   +++|*               . FAMILY IN ENTRY IS WRONG.
02079  M01S02077.ssval   +++|*               . SUBFAMILY IS WRONG.
02080  M01S02078.ssval   +++|*               . *FCT* ORDINAL IS WRONG.
02081  M01S02079.ssval   +++|*               . *CSN* IS WRONG.
02082  M01S02080.ssval   +++|*
02083  M01S02081.ssval   +++|#
02084  M01S02082.ssval   +++|
02085  M01S02083.ssval   +++|      ITEM CMERR      B;             # INDICATES *SM* MAP ERROR #
02086  M01S02084.ssval   +++|
02087  M01S02085.ssval   +++|#
02088  M01S02086.ssval   +++|****  PROC VLCMAP - XREF LIST BEGIN.
02089  M01S02087.ssval   +++|#
02090  M01S02088.ssval   +++|
02091  M01S02089.ssval   +++|      XREF
02092  M01S02090.ssval   +++|        BEGIN
02093  M01S02091.ssval   +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
02094  M01S02092.ssval   +++|                                       CALLER #
02095  M01S02093.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02096  M01S02094.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
02097  M01S02095.ssval   +++|        PROC ZFILL;                  # ZERO FILLS A CHARACTER ITEM #
02098  M01S02096.ssval   +++|        END
02099  M01S02097.ssval   +++|
02100  M01S02098.ssval   +++|#
02101  M01S02099.ssval   +++|****  PROC VLCMAP - XREF LIST END.
02102  M01S02100.ssval   +++|#
02103  M01S02101.ssval   +++|
02104  M01S02102.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02105  M01S02103.ssval   +++|
02106  M01S02104.ssval   +++|*CALL COMBFAS
02107  M01S02105.ssval   +++|*CALL COMBCMD
02108  M01S02106.ssval   +++|*CALL COMBCMS
02109  M01S02107.ssval   +++|*CALL COMBMAP
02110  M01S02108.ssval   +++|*CALL COMBMCT
02111  M01S02109.ssval   +++|*CALL COMTVLD
02112  M01S02110.ssval   +++|*CALL COMTVLF
02113  M01S02111.ssval   +++|*CALL COMTVLM
02114  M01S02112.ssval   +++|
02115  M01S02113.ssval   +++|
02116  M01S02114.ssval   +++|      ITEM ORD        U;             # TO CALCULATE *SM* MAP ORDINAL #
02117  M01S02115.ssval   +++|
02118  M01S02116.ssval   +++|                                               CONTROL EJECT;
02119  M01S02117.ssval   +++|
02120  M01S02118.ssval   +++|
02121  M01S02119.ssval   +++|      P<FCT> = LOC(VLFCTAREA);
02122  M01S02120.ssval   +++|
02123  M01S02121.ssval   +++|#
02124  M01S02122.ssval   +++|*     SAVE Y AND Z COORDINATES.
02125  M01S02123.ssval   +++|#
02126  M01S02124.ssval   +++|
02127  M01S02125.ssval   +++|      Y = FCT$Y[0];
02128  M01S02126.ssval   +++|      Z = FCT$Z[0];
02129  M01S02127.ssval   +++|
02130  M01S02128.ssval   +++|      CMERR = FALSE;                 # ASSUME NO ERROR #
02131  M01S02129.ssval   +++|
02132  M01S02130.ssval   +++|#
02133  M01S02131.ssval   +++|*     IF *FCT* DOES NOT POINT TO A SMMAP ENTRY, RETURN.
02134  M01S02132.ssval   +++|#
02135  M01S02133.ssval   +++|
02136  M01S02134.ssval   +++|      IF Y EQ 0 AND Z EQ 0
02137  M01S02135.ssval   +++|      THEN
02138  M01S02136.ssval   +++|        BEGIN
02139  M01S02137.ssval   +++|        RETURN;
02140  M01S02138.ssval   +++|        END
02141  M01S02139.ssval   +++|
02142  M01S02140.ssval   +++|      ZFILL(VLMAPAREA,MAPENTL);      # CLEAR MAP ENTRY AREA #
02143  M01S02141.ssval   +++|
02144  M01S02142.ssval   +++|
02145  M01S02143.ssval   +++|#
02146  M01S02144.ssval   +++|*     READ *SM* MAP ENTRY.
02147  M01S02145.ssval   +++|#
02148  M01S02146.ssval   +++|
02149  M01S02147.ssval   +++|      ORD = MAXORD - Z - (Y * (MAX$Z+1));
02150  M01S02148.ssval   +++|      MGETENT(SMINDX,ORD,LOC(VLMAPAREA),STAT);  # GET *SM* ENTRY #
02151  M01S02149.ssval   +++|
02152  M01S02150.ssval   +++|#
02153  M01S02151.ssval   +++|*     IF ERROR WHEN READING THE SMMAP, ISSUE MESSAGE AND ABORT.
02154  M01S02152.ssval   +++|#
02155  M01S02153.ssval   +++|
02156  M01S02154.ssval   +++|      IF (STAT NQ CMASTAT"NOERR") AND (STAT NQ CMASTAT"ORDERR")
02157  M01S02155.ssval   +++|      THEN
02158  M01S02156.ssval   +++|        BEGIN
02159  M01S02157.ssval   +++|        VLERROR(VE"MAPR",ABRT);      # ABORT WITH MESSAGE #
02160  M01S02158.ssval   +++|        END
02161  M01S02159.ssval   +++|
02162  M01S02160.ssval   +++|
02163  M01S02161.ssval   +++|      P<SMUMAP> = LOC(VLMAPAREA);
02164  M01S02162.ssval   +++|#
02165  M01S02163.ssval   +++|*     IF MAP ENTRY IS FOR ANOTHER SUBFAMILY, RETURN.
02166  M01S02164.ssval   +++|#
02167  M01S02165.ssval   +++|
02168  M01S02166.ssval   +++|      IF SBINDX NQ CM$SUB[0]
02169  M01S02167.ssval   +++|      THEN                             ##
02170  M01S02168.ssval   +++|        BEGIN
02171  M01S02169.ssval   +++|        RETURN;
02172  M01S02170.ssval   +++|        END
02173  M01S02171.ssval   +++|
02174  M01S02172.ssval   +++|
02175  M01S02173.ssval   +++|#
02176  M01S02174.ssval   +++|*     IF THE *FCT* POINTS TO AN INCORRECT SMMAP ENTRY, WRITE THE
02177  M01S02175.ssval   +++|*     ENTRY TO THE PROBLEM FILE.
02178  M01S02176.ssval   +++|#
02179  M01S02177.ssval   +++|
02180  M01S02178.ssval   +++|      IF CM$CODE[0] NQ CUBSTAT"SUBFAM"  ##
02181  M01S02179.ssval   +++|        OR PAR$FM NQ CM$FMLYNM[0]    ##
02182  M01S02180.ssval   +++|        OR SBINDX NQ CM$SUB[0]       ##
02183  M01S02181.ssval   +++|        OR FCTORD NQ CM$FCTORD[0]    ##
02184  M01S02182.ssval   +++|        OR FCT$CSND[0] NQ CM$CSND[0]   # #
02185  M01S02183.ssval   +++|      THEN
02186  M01S02184.ssval   +++|        BEGIN
02187  M01S02185.ssval   +++|        CMERR = TRUE;
02188  M01S02186.ssval   +++|        CSN = FCT$CSND[0];
02189  M01S02187.ssval   +++|        VLWPROB(REC"FCT");           # WRITE PROBLEM ENTRY #
02190  M01S02188.ssval   +++|        END
02191  M01S02189.ssval   +++|
02192  M01S02190.ssval   +++|#
02193  M01S02191.ssval   +++|*     IF *FCT* AND *SM* POINT TO EACH OTHER, SET THE BIT IN CMAP
02194  M01S02192.ssval   +++|*     ARRAY TO INDICATE THAT A *FCT* ENTRY EXISTS FOR THIS SMMAP
02195  M01S02193.ssval   +++|*     ENTRY.
02196  M01S02194.ssval   +++|#
02197  M01S02195.ssval   +++|
02198  M01S02196.ssval   +++|      IF PAR$FM EQ CM$FMLYNM[0] AND SBINDX EQ CM$SUB[0]  ##
02199  M01S02197.ssval   +++|        AND FCTORD EQ CM$FCTORD[0]
02200  M01S02198.ssval   +++|      THEN
02201  M01S02199.ssval   +++|        BEGIN
02202  M01S02200.ssval   +++|        B<Y,1>VLCM$Z[Z] = 1;
02203  M01S02201.ssval   +++|        END
02204  M01S02202.ssval   +++|
02205  M01S02203.ssval   +++|
02206  M01S02204.ssval   +++|      END  # VLCMAP #
02207  M01S02205.ssval   +++|
02208  M01S02206.ssval   +++|    TERM
02209  M01S02207.ssval   +++|PROC VLSMSC;
02210  M01S02208.ssval   +++|# TITLE VLSMSC - *SM* MAP SCAN.                                     #
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/ssval.txt · Last modified: by 127.0.0.1