User Tools

Site Tools


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

Deck SSVAL

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.ssval   +++|PRGM SSVAL;
00002  M00S00002.ssval   +++|
00003  M00S00003.ssval   +++|# TITLE SSVAL - SFM VALIDATE PROGRAM.                                 #
00004  M00S00004.ssval   +++|
00005  M00S00005.ssval   +++|      BEGIN  # SSVAL #
00006  M00S00006.ssval   +++|
00007  M00S00007.ssval   +++|#
00008  M00S00008.ssval   +++|***** SSVAL - M860 CATALOG VALIDATION UTILITY.
00009  M00S00009.ssval   +++|*
00010  M00S00010.ssval   +++|*     THE FUNCTION OF *SSVAL* IS TO EXAMINE THE SFM CATALOG AND
00011  M00S00011.ssval   +++|*     THE PERMANENT FILE CATALOG FOR THE SPECIFIED FAMILY, OPTIONALLY
00012  M00S00012.ssval   +++|*     EXAMINE SPECIFIED SMMAP FILES, AND ISSUE A REPORT DETAILING
00013  M00S00013.ssval   +++|*     ANY IRREGULARITIES OR DISCREPANCIES FOUND.  A COUNT OF THE
00014  M00S00014.ssval   +++|*     NUMBER OF VALIDATION ERRORS DETECTED, IF ANY, IS PLACED IN
00015  M00S00015.ssval   +++|*     THE DAYFILE.  IF SELECTED, *SSVAL* WILL RELEASE SFM SPACE
00016  M00S00016.ssval   +++|*     FOR PURGED FILES.  WHEN ERROR CONDITIONS ARE FOUND, *SSVAL*
00017  M00S00017.ssval   +++|*     WILL OPTIONALLY SET FLAGS IN AFFECTED ENTRIES OF THESE FILES
00018  M00S00018.ssval   +++|*     TO PROTECT A PERMANENT FILE FROM BEING SUBJECT TO BEING
00019  M00S00019.ssval   +++|*     LOST AND TO PERMIT THE SITE TO RECOVER FROM THE ERROR VIA
00020  M00S00020.ssval   +++|*     THE *SSDEBUG* UTILITY.
00021  M00S00021.ssval   +++|*
00022  M00S00022.ssval   +++|*     RUN TIME PARAMETERS ALLOW SELECTED SUBFAMILIES OR ALL
00023  M00S00023.ssval   +++|*     SUBFAMILIES AND SELECTED SUBCATALOGS OR ALL SUBCATALOGS
00024  M00S00024.ssval   +++|*     TO BE ANALYZED.
00025  M00S00025.ssval   +++|*
00026  M00S00026.ssval   +++|*     THERE ARE TWO TYPES OF VALIDATION RUNS.  THEY ARE -
00027  M00S00027.ssval   +++|*      1) TO VALIDATE THE "LIVE" CATALOGS TO DETECT ERRORS AND
00028  M00S00028.ssval   +++|          ALLOW REPAIR OF THE CATALOGS.  REPAIR REFERS TO THE
00029  M00S00029.ssval   +++|          PROCESS OF SETTING FLAGS WHICH, DEPENDING ON THE FLAG SET
00030  M00S00030.ssval   +++|          MAY OR MAY NOT CORRECT THE PROBLEM.
00031  M00S00031.ssval   +++|*      2) TO VALIDATE THE COPIES OF THE CATALOGS FROM THE RELEASE
00032  M00S00032.ssval   +++|*         DATA FILE TO ALLOW RELEASE OF THE "FREE SPACE" IN THE
00033  M00S00033.ssval   +++|*         SFM CATALOG FOR FILES THAT WERE PURGED BY THE USER.
00034  M00S00034.ssval   +++|*
00035  M00S00035.ssval   +++|*     THE REQUIREMENTS AND RESULTS OF THESE RUNS ARE -
00036  M00S00036.ssval   +++|*
00037  M00S00037.ssval   +++|*       FOR TYPE 1 -
00038  M00S00038.ssval   +++|*         . THE SFM CATALOG PERMANENT FILE MUST BE ATTACHABLE.
00039  M00S00039.ssval   +++|*         . THE PERMANENT FILE CATALOG MUST BE ACCESSIBLE.
00040  M00S00040.ssval   +++|*         . THE SMMAP FILE MUST BE ATTACHABLE ( IF SELECTED ).
00041  M00S00041.ssval   +++|*         . THE CATALOGS ARE EXAMINED FOR VALIDATION ERRORS.
00042  M00S00042.ssval   +++|*         . THE VALIDATION REPORT IS ISSUED.
00043  M00S00043.ssval   +++|*         . THE CATALOGS ARE REPAIRED FOR ERRORS DETECTED TO
00044  M00S00044.ssval   +++|*           ALLOW CORRECTIVE ACTION.
00045  M00S00045.ssval   +++|*
00046  M00S00046.ssval   +++|*       FOR TYPE 2 -
00047  M00S00047.ssval   +++|*         . NO LIVE CATALOGS ARE USED.
00048  M00S00048.ssval   +++|*         . NO VALIDATION OF THE SMMAP FILE OCCURS.
00049  M00S00049.ssval   +++|*         . COPIES OF THE SFM CATALOG AND THE *PFC* ARE
00050  M00S00050.ssval   +++|*            EXAMINED FOR VALIDATION ERRORS.
00051  M00S00051.ssval   +++|*         . THE VALIDATION REPORT IS ISSUED.
00052  M00S00052.ssval   +++|*         . THE "FREE SPACE" IN THE SFM CATALOG IS RELEASED.  THIS
00053  M00S00053.ssval   +++|            CONSEQUENTLY RELEASES SPACE IN THE APPROPRIATE
00054  M00S00054.ssval   +++|            CARTRIDGE(S).
00055  M00S00055.ssval   +++|*
00056  M00S00056.ssval   +++|*     THE REPAIR/RELEASE FUNCTION OF *SSVAL* CANNOT OCCUR IF THE
00057  M00S00057.ssval   +++|*     M860 *EXEC* SUBSYSTEM IS NOT RUNNING.
00058  M00S00058.ssval   +++|*
00059  M00S00059.ssval   +++|
00060  M00S00060.ssval   +++|
00061  M00S00061.ssval   +++|
00062  M00S00062.ssval   +++|
00063  M00S00063.ssval   +++|***   *SSVAL* IS THE M860 UTILITY THAT VALIDATES THE SFM CATALOG,
00064  M00S00064.ssval   +++|*     PERMANENT FILE CATALOG (*PFC*) AND THE SMMAP FILE, REPAIRS
00065  M00S00065.ssval   +++|*     THE CATALOGS AND RELEASES SPACE IN THE SFM CATALOG FOR PURGED
00066  M00S00066.ssval   +++|*     USER FILES.
00067  M00S00067.ssval   +++|*
00068  M00S00068.ssval   +++|
00069  M00S00069.ssval   +++|***   INPUT DATA IS FROM THE SFM CATALOG FILE AND THE PERMANENT
00070  M00S00070.ssval   +++|*     FILE CATALOG FOR A SINGLE FAMILY.  THESE TWO INPUT FILES MAY
00071  M00S00071.ssval   +++|*     EITHER BE FROM THEIR PERMANENT LOCATION ON THE FAMILY
00072  M00S00072.ssval   +++|*     PACKS ("LIVE") OR FROM THE RELEASE DATA FILE (*RDF*)
00073  M00S00073.ssval   +++|*     PRODUCED BY THE *PFDUMP* UTILITY.  *SSVAL* WILL PRODUCE A *PFC
00074  M00S00074.ssval   +++|*     EXTRACT FILE* FROM EITHER OF THE ABOVE SOURCES.
00075  M00S00075.ssval   +++|*
00076  M00S00076.ssval   +++|*     THE SMMAP FILE IS AN INPUT IF SPECIFIED BY AN OPTION ON
00077  M00S00077.ssval   +++|*     THE CONTROL CARD.  IT IS ACCESSED ONLY FROM ITS PERMANENT
00078  M00S00078.ssval   +++|*     LOCATION ON THE SYSTEM DEFAULT FAMILY.
00079  M00S00079.ssval   +++|*
00080  M00S00080.ssval   +++|*     SFM CATALOG FILE - CONTAINS THE CONTROL INFORMATION ABOUT
00081  M00S00081.ssval   +++|*         THE FILES ON THE MSF.  THE FILE AND CARTRIDGE TABLE (*FCT*)
00082  M00S00082.ssval   +++|*         PORTION OF THE CATALOG CONTAINS THE ALLOCATION AND STATUS
00083  M00S00083.ssval   +++|*         INFORMATION FOR EACH CARTRIDGE.  THE *FCT*
00084  M00S00084.ssval   +++|*         IS EXAMINED FOR IRREGULARITIES AND ERRORS.
00085  M00S00085.ssval   +++|*
00086  M00S00086.ssval   +++|*     PERMANENT FILE CATALOG - CONTAINS CONTROL INFORMATION ABOUT
00087  M00S00087.ssval   +++|*         USER PERMANENT FILES RESIDING ON THE MSF.  THE ALTERNATE
00088  M00S00088.ssval   +++|*         STORAGE ALLOCATION FIELD (*ASA*) CONTAINS THE POINTER
00089  M00S00089.ssval   +++|*         SPECIFIYING THE *SM* INDEX, *FCT* ORDINAL.
00090  M00S00090.ssval   +++|*
00091  M00S00091.ssval   +++|*     SMMAP FILE - CONTAINS CONTROL INFORMATION ABOUT ALL CUBES
00092  M00S00092.ssval   +++|*         AND CARTRIDGES IN A GIVEN SM.
00093  M00S00093.ssval   +++|*
00094  M00S00094.ssval   +++|*     RDF FILE - (RELEASE DATA FILE) CONTAINS A HEADER, *PFC* EXTRACT
00095  M00S00095.ssval   +++|*         RECORDS, AND COPIES OF SFM CATALOGS.  IT IS PRODUCED BY
00096  M00S00096.ssval   +++|*         *PFDUMP*.  THE DATE AND TIME WHEN THE FILE WAS CREATED IS
00097  M00S00097.ssval   +++|*         RECORDED IN THE HEADER.  THE RDF FILE IS USED FOR BACKUP
00098  M00S00098.ssval   +++|*         PURPOSES ONLY.  A DESCRIPTION OF THE FIELDS IN THE RDF FILE
00099  M00S00099.ssval   +++|*         MAY BE FOUND IN *COMSPFM*.
00100  M00S00100.ssval   +++|*
00101  M00S00101.ssval   +++|*
00102  M00S00102.ssval   +++|
00103  M00S00103.ssval   +++|***   CONTROL CARD CALL.
00104  M00S00104.ssval   +++|*
00105  M00S00105.ssval   +++|*     SSVAL(P1,P2,...,PN)
00106  M00S00106.ssval   +++|*
00107  M00S00107.ssval   +++|*       PARAMETER                DESCRIPTION
00108  M00S00108.ssval   +++|*       ---------                -----------
00109  M00S00109.ssval   +++|*
00110  M00S00110.ssval   +++|*       L                  LISTABLE OUTPUT ON FILE *OUTPUT*.
00111  M00S00111.ssval   +++|*       L = *LFN*          LISTABLE OUTPUT ON FILE *LFN*.
00112  M00S00112.ssval   +++|*       L = 0              NO OUTPUT FILE GENERATED.
00113  M00S00113.ssval   +++|*       L OMITTED          SAME AS L.
00114  M00S00114.ssval   +++|*
00115  M00S00115.ssval   +++|*       RF                 RELEASE DATA FILE ON LOCAL FILE *ZZZZRDF*.
00116  M00S00116.ssval   +++|*       RF = *LFN*         RELEASE DATA FILE ON FILE *LFN*.
00117  M00S00117.ssval   +++|*       RF OMITTED         USE THE CURRENT VERSION OF THE SFM CATALOGS
00118  M00S00118.ssval   +++|*                          FOR ANALYSIS.
00119  M00S00119.ssval   +++|*
00120  M00S00120.ssval   +++|*       FM                 USE DEFAULT FAMILY.  NOT PERMITTED IF *RF*
00121  M00S00121.ssval   +++|*                          IS SPECIFIED.
00122  M00S00122.ssval   +++|*       FM=FAMILY          FAMILY TO BE ANALYZED.  NOT PERMITTED IF
00123  M00S00123.ssval   +++|*                          *RF* IS SPECIFIED.
00124  M00S00124.ssval   +++|*       FM OMITTED         SAME AS *FM* IF *RF* IS NOT SPECIFIED.  USE
00125  M00S00125.ssval   +++|*                          THE FAMILY ON THE RELEASE DATA FILE IF *RF*
00126  M00S00126.ssval   +++|*                          IS SPECIFIED.
00127  M00S00127.ssval   +++|*
00128  M00S00128.ssval   +++|*       SB                 ALL SUBFAMILIES ARE TO BE PROCESSED.
00129  M00S00129.ssval   +++|*       SB = CHARS         SELECT UP TO EIGHT SUBFAMILIES.  THERE
00130  M00S00130.ssval   +++|*                          ARE EIGHT POSSIBLE SUBFAMILIES NUMBERED FROM
00131  M00S00131.ssval   +++|*                          0 THROUGH 7 (E.G. SB=723 SELECTS SUBFAMILIES
00132  M00S00132.ssval   +++|*                          2,3,AND 7).
00133  M00S00133.ssval   +++|*       SB OMITTED         SAME AS *SB*.
00134  M00S00134.ssval   +++|*
00135  M00S00135.ssval   +++|*       SM                 ALL *SM-S* PROCESSED.
00136  M00S00136.ssval   +++|*       SM = CHARS         SELECT UP TO EIGHT *SM*-S INDICATED
00137  M00S00137.ssval   +++|*                          BY THE LETTERS A-H (E.G. SM=ACHG SELECTS
00138  M00S00138.ssval   +++|*                          *SM-S* A, C, AND H).
00139  M00S00139.ssval   +++|*       SM OMITTED         SAME AS *SM*.
00140  M00S00140.ssval   +++|*
00141  M00S00141.ssval   +++|*       AM                 ANALYZE THE SFM SMMAP.  THIS OPTION MAY
00142  M00S00142.ssval   +++|*                          ONLY BE USED IF *RF* IS NOT SPECIFIED.
00143  M00S00143.ssval   +++|*                          *SSVAL* WILL ONLY EXAMINE A PARTICULAR
00144  M00S00144.ssval   +++|*                          SMMAP IF THE SFM CATALOG HAS A SUBCATALOG
00145  M00S00145.ssval   +++|*                          FOR THE CORRESPONDING *SM* AND IS THAT
00146  M00S00146.ssval   +++|*                          *SM* WAS SELECTED BY THE *CS* PARAMETER.
00147  M00S00147.ssval   +++|*       AM OMITTED         DO NOT ANALYZE THE SFM SMMAP.
00148  M00S00148.ssval   +++|*
00149  M00S00149.ssval   +++|*       FX                 *PFC* AND SFM CATALOGS WILL NOT BE
00150  M00S00150.ssval   +++|*                          AUTOMATICALLY FLAGGED OR FIXED AND RELEASE
00151  M00S00151.ssval   +++|*                          PROCESSING WILL NOT BE PERFORMED IF THERE
00152  M00S00152.ssval   +++|*                          ARE ANY ERRORS (SAME AS FX=0).
00153  M00S00153.ssval   +++|*       FX = N             *PFC* AND SFM CATALOGS WILL ONLY BE
00154  M00S00154.ssval   +++|*                          AUTOMATICALLY FIXED OR RELEASE PROCESSING
00155  M00S00155.ssval   +++|*                          WILL BE PERFORMED ONLY IF THE TOTAL ERROR
00156  M00S00156.ssval   +++|*                          COUNT IS LESS THAN OR EQUAL TO N.
00157  M00S00157.ssval   +++|*       FX OMITTED         SAME AS *FX*.
00158  M00S00158.ssval   +++|*
00159  M00S00159.ssval   +++|*       RL                 RELEASE PROCESSING IS TO BE PERFORMED.
00160  M00S00160.ssval   +++|*                          THIS OPTION MAY ONLY BE USED IF *RF*
00161  M00S00161.ssval   +++|*                          IS ALSO SELECTED.
00162  M00S00162.ssval   +++|*       RL OMITTED         NO RELEASE PROCESSING WILL BE PERFORMED.
00163  M00S00163.ssval   +++|*
00164  M00S00164.ssval   +++|*       ST                 FILES ARE INDICATED AS SCATTERED IF THEY
00165  M00S00165.ssval   +++|*                          SPREAD ACROSS MORE THAN THE MINIMUM NUMBER
00166  M00S00166.ssval   +++|*                          OF CARTRIDGES NEEDED TO CONTAIN THEM.
00167  M00S00167.ssval   +++|*       ST = N             FILES ARE INDICATED AS SCATTERED IF THEY
00168  M00S00168.ssval   +++|*                          SPREAD ACROSS N MORE CARTRIDGES THAN THE
00169  M00S00169.ssval   +++|*                          MINIMUM NUMBER NEEDED TO CONTAIN THEM.
00170  M00S00170.ssval   +++|*       ST OMITTED         SAME AS *ST*.
00171  M00S00171.ssval   +++|*
00172  M00S00172.ssval   +++|*
00173  M00S00173.ssval   +++|
00174  M00S00174.ssval   +++|
00175  M00S00175.ssval   +++|
00176  M00S00176.ssval   +++|***   THE VALIDATION PROCESS EXAMINES THE ALTERNATE STORAGE AND
00177  M00S00177.ssval   +++|*     PERMANENT FILE CATALOGS AND REPORTS VALIDATION ERRORS DETECTED.
00178  M00S00178.ssval   +++|*
00179  M00S00179.ssval   +++|*     THE CATALOG ENTRIES ARE VALIDATED AS FOLLOWS.
00180  M00S00180.ssval   +++|*       . ALL *PFC* ENTRIES FOR USER FILES THAT RESIDE ON MSF.
00181  M00S00181.ssval   +++|*         - THE *ASA* FIELD.
00182  M00S00182.ssval   +++|*           * ASA NOT HEAD OF CHAIN.
00183  M00S00183.ssval   +++|*           * ASA OUT OF RANGE.
00184  M00S00184.ssval   +++|*           * INVALID *SM* IN ASA.
00185  M00S00185.ssval   +++|*           * MULTIPLE *PFC* ENTRIES OWN THE SFM FILE.
00186  M00S00186.ssval   +++|*         - THE READ DATA ERROR FLAG.
00187  M00S00187.ssval   +++|*           * READ ERROR FLAG SET IN *PFC* ENTRY.
00188  M00S00188.ssval   +++|*       . ALL *FCT* ENTRIES IN THE SFM CATALOG.
00189  M00S00189.ssval   +++|*         - THE CARTRIDGE STATUS (INHIBIT, LOST, EXCESSIVE
00190  M00S00190.ssval   +++|*           WRITE PARITY ERROR, START OF FRAGMENT, CONFLICT, SMMAP
00191  M00S00191.ssval   +++|*           ERROR,CSN AND Y AND Z COORDINATES).
00192  M00S00192.ssval   +++|*           * *FCT* ENTRIES CONTAIN THE FOLLOWING PROBLEMS -
00193  M00S00193.ssval   +++|*             - INHIBIT ALLOCATION FLAG SET.
00194  M00S00194.ssval   +++|*             - FROZEN CHAIN FLAG SET.
00195  M00S00195.ssval   +++|*             - EXCESSIVE WRITE PARITY ERRORS FLAG SET.
00196  M00S00196.ssval   +++|*             - START OF FRAGMENT FLAG SET.
00197  M00S00197.ssval   +++|*             - AU CONFLICT FLAG SET.
00198  M00S00198.ssval   +++|*             - LOST CARTRIDGE FLAG SET.
00199  M00S00199.ssval   +++|*         - THE AU CHAIN INFORMATION (CHAIN CONTROL, OFF CARTRIDGE
00200  M00S00200.ssval   +++|*           LINK FLAG, OFF CARTRIDGE LINKS).
00201  M00S00201.ssval   +++|*           * CHAINS INTERSECT OR ARE ILL-FORMED.
00202  M00S00202.ssval   +++|*           * FRAGMENTS DETECTED.
00203  M00S00203.ssval   +++|*           * SCATTERED FILE DETECTED.
00204  M00S00204.ssval   +++|*           * NO VALID SMMAP ENTRY FOR THE FCT.
00205  M00S00205.ssval   +++|*
00206  M00S00206.ssval   +++|*       . ALL SMMAP ENTRIES ASSIGNED TO THE SUBFAMILY.
00207  M00S00207.ssval   +++|*         - THE VSN, FAMILY, SUBFAMILY, *FCT* ORDINAL FIELDS.
00208  M00S00208.ssval   +++|*       . SMMAP ENTRY ALLOCATED TO THE SUBFAMILY THAT HAS NO
00209  M00S00209.ssval   +++|*         VALID *FCT* ENTRY IN THE SFM CATALOG.
00210  M00S00210.ssval   +++|*
00211  M00S00211.ssval   +++|
00212  M00S00212.ssval   +++|***   THE RESULTS OF RUNNING *SSVAL* ARE:
00213  M00S00213.ssval   +++|*     - THE VALIDATION REPORT.
00214  M00S00214.ssval   +++|*     - THE RELEASE OF FREE SFM SPACE IN THE SFM CATALOG.
00215  M00S00215.ssval   +++|*     - THE REPAIRS OF THE CATALOGS FOR VALIDATION ERRORS DETECTED.
00216  M00S00216.ssval   +++|*
00217  M00S00217.ssval   +++|*     FREE SPACE IN THE SFM CATALOG IS RELEASED IF THE RF AND
00218  M00S00218.ssval   +++|*     RL CONTROL CARD PARAMETERS WERE SPECIFIED AND IF THE
00219  M00S00219.ssval   +++|*     TOTAL VALIDATION ERRORS DETECTED WERE LESS THAT THE
00220  M00S00220.ssval   +++|*     THRESHOLD SET BY THE FX CONTROL CARD PARAMETER.  IN ADDITION,
00221  M00S00221.ssval   +++|*     THE RELEASE FOR A SPECIFIC SUBFAMILY AND *SM* OCCURS ONLY
00222  M00S00222.ssval   +++|*     IF THE RDF FILE DATE AND TIME IS MORE RECENT THAN THE
00223  M00S00223.ssval   +++|*     LAST PURGE DATE AND TIME RECORDED IN THE PREAMBLE OF THE
00224  M00S00224.ssval   +++|*     SFM CATALOG.
00225  M00S00225.ssval   +++|*
00226  M00S00226.ssval   +++|*     REPAIRS TO THE CATALOGS OCCUR ONLY IF THE FM CONTROL CARD
00227  M00S00227.ssval   +++|*     PARAMETER IS ACTIVE AND THE TOTAL VALIDATION ERRORS ARE
00228  M00S00228.ssval   +++|*     LESS THAN THE THRESHOLD SET BY THE FX CONTROL CARD PARAMETER.
00229  M00S00229.ssval   +++|*
00230  M00S00230.ssval   +++|*     *PFC* ENTRIES CAN ONLY BE REPAIRED IF THE FILE IS DISK RESIDENT.
00231  M00S00231.ssval   +++|*       - THE *ASA* IS CLEARED IN THE *PFC* ENTRY TO PREVENT THE
00232  M00S00232.ssval   +++|*         RELEASE OF THE DISK SPACE.
00233  M00S00233.ssval   +++|*     REPAIRS TO THE SFM CATALOG OCCUR IF ERRORS ARE DETECTED IN
00234  M00S00234.ssval   +++|*     *FCT* ENTRIES.
00235  M00S00235.ssval   +++|*       - THE FOLLOWING FLAGS ARE SET IN THE SFM CATALOG *FCT* ENTRY.
00236  M00S00236.ssval   +++|*         . THE FROZEN FLAG IS SET TO PREVENT AUTOMATIC RELEASE OF THE
00237  M00S00237.ssval   +++|*           SFM FILE SPACE AND ALLOW INSPECTION OF THE SFM DATA.
00238  M00S00238.ssval   +++|*         . THE START OF FRAGMENT FLAG IS SET IF A FRAGMENT WAS
00239  M00S00239.ssval   +++|*           DETECTED.
00240  M00S00240.ssval   +++|*         . THE SMMAP ERROR FLAG IS SET IF THE *FCT* HAS NO SMMAP
00241  M00S00241.ssval   +++|*           ENTRY.
00242  M00S00242.ssval   +++|*         . THE INHIBIT FLAG IS SET IF THE SMMAP ERROR OCCURRED.
00243  M00S00243.ssval   +++|*     REPAIR TO THE SMMAP FILE OCCURS FOR ERRORS DETECTED IN THE
00244  M00S00244.ssval   +++|*     SMMAP-*FCT* LINKAGE.
00245  M00S00245.ssval   +++|*         . THE ERROR FLAG IN THE SMMAP ENTRY IS SET.
00246  M00S00246.ssval   +++|*
00247  M00S00247.ssval   +++|*     THE VALIDATION REPORT CONTAINS INFORMATIONAL AND ERROR LINES
00248  M00S00248.ssval   +++|*     DESCRIBING WHAT WAS VALIDATED AND WHAT WAS FOUND TO BE IN ERROR.
00249  M00S00249.ssval   +++|*
00250  M00S00250.ssval   +++|*     COLUMN 0 IS RESERVED FOR THE CARRIAGE CONTROL CHARACTER.
00251  M00S00251.ssval   +++|*
00252  M00S00252.ssval   +++|*     THE TITLE, INFORMATIONAL AND HEADING LINES START IN COLUMN  4.
00253  M00S00253.ssval   +++|*
00254  M00S00254.ssval   +++|*     THE DETAIL LINES START IN COLUMN 7 OR BEYOND.
00255  M00S00255.ssval   +++|*
00256  M00S00256.ssval   +++|*       LINE           -             GENERAL
00257  M00S00257.ssval   +++|*       TYPE           -             FORMAT
00258  M00S00258.ssval   +++|*       ----           -             ------
00259  M00S00259.ssval   +++|*
00260  M00S00260.ssval   +++|*     TITLE            -    SSVAL - VALIDATION REPORT     ...VER 1.0
00261  M00S00261.ssval   +++|*     SUB-TITLE        -            FAMILY = NAME
00262  M00S00262.ssval   +++|*
00263  M00S00263.ssval   +++|*     PRESET           -                (CONTROL CARD IMAGE)
00264  M00S00264.ssval   +++|*       DETAIL         -                (LIST OF) KEYWORD = VALUE.
00265  M00S00265.ssval   +++|*
00266  M00S00266.ssval   +++|*     RDF DETAIL       -    RDF FILE FAMILY = NAME
00267  M00S00267.ssval   +++|*                      -    RDF FILE BUDT   = DATE-TIME
00268  M00S00268.ssval   +++|*
00269  M00S00269.ssval   +++|*     PRESET           -    *** PF = NAME          INVALID SM IN PFC
00270  M00S00270.ssval   +++|*       ERRORS         -        UI = VALUE
00271  M00S00271.ssval   +++|*
00272  M00S00272.ssval   +++|*     SUBCATALOG       -    SUBFAMILY = N  *SM* = X    "GOOD"
00273  M00S00273.ssval   +++|*       HEADINGS       -                              "INTERSECTIONS"
00274  M00S00274.ssval   +++|*                      -                              "PROBLEMS"
00275  M00S00275.ssval   +++|*
00276  M00S00276.ssval   +++|*     SUB-HEADING      -                    -HEAD OF CHAINS-
00277  M00S00277.ssval   +++|*       INTERSECTIONS  -                 FCTORD-STRM   FCTORD-STRM
00278  M00S00278.ssval   +++|*
00279  M00S00279.ssval   +++|*     INTERSECTIONS    -                 (CHAIN-ID)     (CHAIN-ID)
00280  M00S00280.ssval   +++|*       DETAIL         -
00281  M00S00281.ssval   +++|*
00282  M00S00282.ssval   +++|*     SUB-HEADING      -     ERR   IDENTIFICATION     -CHAIN-    ERROR
00283  M00S00283.ssval   +++|*       PROBLEMS       -     TYP                  FCT-STM-A/U-H-E
00284  M00S00284.ssval   +++|*
00285  M00S00285.ssval   +++|*     PROBLEM          -      4    PF=NAME
00286  M00S00286.ssval   +++|*       DETAIL         -           UI=VALUE
00287  M00S00287.ssval   +++|*                      -           BU=DATE-TIME
00288  M00S00288.ssval   +++|*                      -           DI=N/Y           (CHAIN-ID)   TEXT
00289  M00S00289.ssval   +++|*                                                   (CHAIN-ID)  (TEXT)
00290  M00S00290.ssval   +++|*                                                                TEXT
00291  M00S00291.ssval   +++|*
00292  M00S00292.ssval   +++|*     SUMMARY          -    FREE M860 FILE    = NNN
00293  M00S00293.ssval   +++|*                      -    FREE M860 AU-S = NNNN
00294  M00S00294.ssval   +++|*                      -    TOTAL VALIDATION ERRORS = NNN
00295  M00S00295.ssval   +++|*
00296  M00S00296.ssval   +++|*     MISCELLANEOUS    -    ***CONNECT TO EXEC FAILED
00297  M00S00297.ssval   +++|*                      -    CATALOGS NOT MODIFIED
00298  M00S00298.ssval   +++|*                      -    CATALOGS MODIFIED
00299  M00S00299.ssval   +++|*                      -    FREE FILES RELEASED
00300  M00S00300.ssval   +++|*
00301  M00S00301.ssval   +++|*
00302  M00S00302.ssval   +++|*     THE INTERSECTIONS REPORT SECTION IS ISSUED FOR THE SUBCATALOG
00303  M00S00303.ssval   +++|*     WHEN INTERSECTIONS ARE DETECTED.
00304  M00S00304.ssval   +++|*
00305  M00S00305.ssval   +++|*     THE PROBLEM REPORT SECTION IS ISSUED AT THE END OF EACH
00306  M00S00306.ssval   +++|*     SUBCATALOG-S VALIDATION.
00307  M00S00307.ssval   +++|*
00308  M00S00308.ssval   +++|*     ENOUGH IDENTIFICATION IS GIVEN TO ALLOW THE ANALYST TO LOCATE THE
00309  M00S00309.ssval   +++|*     ENTRY(S) RELATING TO THE PROBLEM IN THE CATALOGS: SFM CATALOG,
00310  M00S00310.ssval   +++|*     *PFC* OR SMMAP.
00311  M00S00311.ssval   +++|*
00312  M00S00312.ssval   +++|*     ERROR TYPE VALUES IN THE PROBLEM REPORT SECTION ARE -
00313  M00S00313.ssval   +++|*         1 - *FCT* ENTRY WITH NO VALID SMMAP ENTRY.
00314  M00S00314.ssval   +++|*         2 - SMMAP ENTRY WITH NO VALID *FCT* ENTRY.
00315  M00S00315.ssval   +++|*         3 - *PFC* ENTRY WITH INVALID ASA.
00316  M00S00316.ssval   +++|*         4 - *PFC* ENTRY WITH PROBLEMS.
00317  M00S00317.ssval   +++|*         5 - ORPHANS WITH PROBLEMS.
00318  M00S00318.ssval   +++|*         6 - CHAIN FRAGMENTS.
00319  M00S00319.ssval   +++|*         7 - UNALLOCATED SFM ENTRIES WITH PROBLEMS.
00320  M00S00320.ssval   +++|*
00321  M00S00321.ssval   +++|
00322  M00S00322.ssval   +++|
00323  M00S00323.ssval   +++|***   DAYFILE MESSAGES.
00324  M00S00324.ssval   +++|*
00325  M00S00325.ssval   +++|*      * SSVAL COMPLETED.*
00326  M00S00326.ssval   +++|*      * SSVAL ABORTED.*
00327  M00S00327.ssval   +++|*      * FREE FILES RELEASED.*
00328  M00S00328.ssval   +++|*      * CATALOGS MODIFIED.*
00329  M00S00329.ssval   +++|*      * CATALOGS NOT MODIFIED.*
00330  M00S00330.ssval   +++|*      * TOTAL VALIDATION ERRORS = NN.*
00331  M00S00331.ssval   +++|*      * VALIDATING SB=N SM=X.*
00332  M00S00332.ssval   +++|*      * CONTROL CARD SYNTAX ERROR.*
00333  M00S00333.ssval   +++|*      * INVALID CS PARAMETER.*
00334  M00S00334.ssval   +++|*      * INVALID FX PARAMETER.*
00335  M00S00335.ssval   +++|*      * INVALID SB PARAMETER.*
00336  M00S00336.ssval   +++|*      * INVALID ST PARAMETER.*
00337  M00S00337.ssval   +++|*      * ILLEGAL - L AND RF PARAMETER.*
00338  M00S00338.ssval   +++|*      * ILLEGAL - RL AND NO RF PARAMETER.*
00339  M00S00339.ssval   +++|*      * ILLEGAL - RF AND FM PARAMETER.*
00340  M00S00340.ssval   +++|*      * ILLEGAL - RF AND AM PARAMETER.*
00341  M00S00341.ssval   +++|*      * SSVAL - MUST BE SYSTEM ORIGIN.*
00342  M00S00342.ssval   +++|*      * RDF FILE ERROR - MISSING HEADER.*
00343  M00S00343.ssval   +++|*      * RDF FILE ERROR - BAD RECORD LENGTH.*
00344  M00S00344.ssval   +++|*      * RDF FILE ERROR - UNIDENTIFIED DATA.*
00345  M00S00345.ssval   +++|*      * SFM CATALOG OPEN ERROR.*
00346  M00S00346.ssval   +++|*      * SFM CATALOG READ ERROR.*
00347  M00S00347.ssval   +++|*      * SMMAP OPEN ERROR.*
00348  M00S00348.ssval   +++|*      * SMMAP READ ERROR.*
00349  M00S00349.ssval   +++|*      * REQUIRED FL EXCEEDS JOB MAX.*
00350  M00S00350.ssval   +++|*      * CONNECT TO EXEC FAILED.*
00351  M00S00351.ssval   +++|*      * UCP CALL ERROR.*
00352  M00S00352.ssval   +++|*      * FAMILY NOT FOUND IN SYSTEM.*
00353  M00S00353.ssval   +++|*      * ERROR READING *PFC*.*
00354  M00S00354.ssval   +++|*      * SSVAL ABNORMAL* NAME.*
00355  M00S00355.ssval   +++|*
00356  M00S00356.ssval   +++|
00357  M00S00357.ssval   +++|
00358  M00S00358.ssval   +++|***   OPERATOR MESSAGES.
00359  M00S00359.ssval   +++|*
00360  M00S00360.ssval   +++|*      * WAITING FOR FILE FILENAME.*
00361  M00S00361.ssval   +++|*      * WAITING FOR EXEC.*
00362  M00S00362.ssval   +++|*      * VALIDATING SB=N SM=X.*
00363  M00S00363.ssval   +++|*
00364  M00S00364.ssval   +++|
00365  M00S00365.ssval   +++|***   SSVAL.
00366  M00S00366.ssval   +++|*
00367  M00S00367.ssval   +++|*     *SSVAL* IS THE M860 UTILITY PROGRAM THAT VALIDATES DATA IN THE
00368  M00S00368.ssval   +++|*     SFM CATALOG, THE PERMANENT FILE CATALOG (PFC) AND THE SMMAP
00369  M00S00369.ssval   +++|*     FILE.  IT CAN ALSO REPAIR THE CATALOGS FOR VALIDATION
00370  M00S00370.ssval   +++|*     ERRORS DETECTED AND RELEASE FREE SPACE IN THE SFM CATALOG FOR
00371  M00S00371.ssval   +++|*     PURGED USER FILES.
00372  M00S00372.ssval   +++|*
00373  M00S00373.ssval   +++|*     SSVAL(P1,P2,...,PN)
00374  M00S00374.ssval   +++|*
00375  M00S00375.ssval   +++|*     PRGM SSVAL
00376  M00S00376.ssval   +++|*
00377  M00S00377.ssval   +++|*     MESSAGES  * CONNECT TO EXEC FAILED.*
00378  M00S00378.ssval   +++|*               * SSVAL COMPLETED.*
00379  M00S00379.ssval   +++|*
00380  M00S00380.ssval   +++|*     NOTES    *SSVAL* -
00381  M00S00381.ssval   +++|*              . CALLS VLPRSET TO INITIALIZE FILES AND PARAMETERS.
00382  M00S00382.ssval   +++|*              . CONNECTS TO M860 *EXEC*.
00383  M00S00383.ssval   +++|*              . CALLS VLSUBFM FOR EACH SUBFAMILY TO VALIDATE.
00384  M00S00384.ssval   +++|*              . CALLS VLFIX TO PERFORM REPAIR/RELEASE PROCESSING
00385  M00S00385.ssval   +++|*                ON THE CATALOGS.
00386  M00S00386.ssval   +++|*              . DISCONNECTS AND CLOSES.
00387  M00S00387.ssval   +++|*
00388  M00S00388.ssval   +++|
00389  M00S00389.ssval   +++|**********
00390  M00S00390.ssval   +++|
00391  M00S00391.ssval   +++|**    METHOD.  OR  METHODS....
00392  M00S00392.ssval   +++|*
00393  M00S00393.ssval   +++|*     A NUMBER OF LOCAL FILES ARE USED TO RETAIN INFORMATION
00394  M00S00394.ssval   +++|*     THROUGHOUT THE VALIDATION PROCESS -
00395  M00S00395.ssval   +++|*
00396  M00S00396.ssval   +++|*      . *PFC* EXTRACT FILES - CONTAIN EXTRACTS FROM THE LIVE
00397  M00S00397.ssval   +++|*            *PFC* OR FROM THE RDF FILE.  THERE IS A SEPARATE
00398  M00S00398.ssval   +++|*            FILE FOR EACH SUBFAMILY.
00399  M00S00399.ssval   +++|*
00400  M00S00400.ssval   +++|*      . PROBLEM FILE - CONTAINS ENTRIES FOR VALIDATION
00401  M00S00401.ssval   +++|*            ERRORS DETECTED.
00402  M00S00402.ssval   +++|*
00403  M00S00403.ssval   +++|*      . FIXIT FILE - CONTAINS ENTRIES FOR ALL REPAIRS AND
00404  M00S00404.ssval   +++|*            RELEASES THAT MAY BE PERFORMED.
00405  M00S00405.ssval   +++|*
00406  M00S00406.ssval   +++|*      . ZZZVALX FILES - CONTAIN COPIES OF THE SFM CATALOGS,
00407  M00S00407.ssval   +++|*            FROM THE RDF FILE.  THERE IS A SEPARATE FILE
00408  M00S00408.ssval   +++|*            FOR EACH SUBFAMILY.
00409  M00S00409.ssval   +++|*
00410  M00S00410.ssval   +++|*     A VALIDATION TABLE (*VT*) IS USED TO CONTAIN AND EXAMINE
00411  M00S00411.ssval   +++|*     THE *FCT* DATA FOR A SUBCATALOG IN THE SFM CATALOG.  THE
00412  M00S00412.ssval   +++|*     *VT* HAS A 1 WORD ENTRY.
00413  M00S00413.ssval   +++|*
00414  M00S00414.ssval   +++|*     EACH WORD (REPRESENTING ONE AU IN THE *FCT*) CONTAINS
00415  M00S00415.ssval   +++|*     STATUS AND LINKAGE INFORMATION ABOUT THE AU -
00416  M00S00416.ssval   +++|*         . ALLOCATED OR NOT.
00417  M00S00417.ssval   +++|*         . HEAD OF CHAIN AND/OR END OF CHAIN
00418  M00S00418.ssval   +++|*         . *PFC* OWNER FLAG
00419  M00S00419.ssval   +++|*         . VALIDATION ERROR FLAGS.
00420  M00S00420.ssval   +++|*         . A LINK TO THE NEXT AU IN THE CHAIN.
00421  M00S00421.ssval   +++|*
00422  M00S00422.ssval   +++|*     VALIDATION ERROR FLAGS ARE ASSIGNED PROBLEM TYPES (1,2, OR 4)
00423  M00S00423.ssval   +++|*     THAT REFLECT THE SUBSEQUENT REPORT AND REPAIR PROCESSING
00424  M00S00424.ssval   +++|*     THAT SHOULD OCCUR -
00425  M00S00425.ssval   +++|*         TYPE 1 - REPORT THE PROBLEM AND DO NOT REPAIR.
00426  M00S00426.ssval   +++|*         TYPE 2 - REPORT THE PROBLEM.  REPAIR ONLY IF THERE
00427  M00S00427.ssval   +++|*                  IS AN ASSOCIATED *PFC* ENTRY.
00428  M00S00428.ssval   +++|*         TYPE 4 - REPORT THE PROBLEM AND REPAIR THE CATALOG(S).
00429  M00S00429.ssval   +++|*
00430  M00S00430.ssval   +++|*     THE *VT* IS USED AS A FAST METHOD TO FOLLOW CHAINS TO
00431  M00S00431.ssval   +++|*     ENSURE THAT THEY ARE VALID.  ERRORS ARE-
00432  M00S00432.ssval   +++|*         . INTERSECTING CHAINS.
00433  M00S00433.ssval   +++|*         . ILL-FORMED CHAINS.
00434  M00S00434.ssval   +++|*
00435  M00S00435.ssval   +++|*     AS THE CHAIN IS FOLLOWED, EACH ENTRY IS MARKED BY SETTING
00436  M00S00436.ssval   +++|*     THE POINTER FIELD TO THE HEAD OF CHAIN ENTRY.
00437  M00S00437.ssval   +++|*
00438  M00S00438.ssval   +++|**    GENERAL RULES.
00439  M00S00439.ssval   +++|*
00440  M00S00440.ssval   +++|*     *SSVAL* ALWAYS ISSUES A SUBSYSTEM REQUEST USING THE
00441  M00S00441.ssval   +++|*     SUBSYSTEM ID FOR THE M860 EXEC AND PARAMETERS FOR A
00442  M00S00442.ssval   +++|*     "CONNECT".  IF THE M860 EXEC IS NOT PRESENT OR IF THE
00443  M00S00443.ssval   +++|*     M860 EXEC RETURNS AN ERROR STATUS, *SSVAL* ISSUES A
00444  M00S00444.ssval   +++|*     MESSAGE "CONNECT TO EXEC FAILED" AND CONTINUES.  BUT
00445  M00S00445.ssval   +++|*     NO FURTHER SUBSYSTEM REQUESTS ARE MADE.  THEREFORE, NO
00446  M00S00446.ssval   +++|*     REPAIR/RELEASE PROCESSING CAN OCCUR.  SSVAL CONTINUES
00447  M00S00447.ssval   +++|*     IN THIS "LIMITED" MODE TO PRODUCE THE VALIDATION REPORT.
00448  M00S00448.ssval   +++|*
00449  M00S00449.ssval   +++|*     THE CATALOGS ARE ATTACHED IN READ MODE.  THIS PROVIDES AN
00450  M00S00450.ssval   +++|*     INTERLOCK TO ENSURE THAT NO ONE IS MODIFIYING THE DATA
00451  M00S00451.ssval   +++|*     DURING VALIDATION.
00452  M00S00452.ssval   +++|*
00453  M00S00453.ssval   +++|*     I/O ERRORS WILL BE DETECTED AND PROCESSED BY *CIO*.
00454  M00S00454.ssval   +++|*
00455  M00S00455.ssval   +++|**    HEIRARCHY.
00456  M00S00456.ssval   +++|*
00457  M00S00457.ssval   +++|*     3 MAJOR STEPS -
00458  M00S00458.ssval   +++|*
00459  M00S00459.ssval   +++|*      . PRESET - PROCESS THE CONTROL CARD PARAMETERS INTO
00460  M00S00460.ssval   +++|*                 RUN TIME PARAMETERS.
00461  M00S00461.ssval   +++|*               - PROCESS INPUT FILES TO GENERATE WORKING FILES.
00462  M00S00462.ssval   +++|*
00463  M00S00463.ssval   +++|*      . VALIDATE (THIS STEP REPEATS FOR ALL SELECTED
00464  M00S00464.ssval   +++|*              SUBCATALOGS WITHIN SELECTED SUBFAMILIES).
00465  M00S00465.ssval   +++|*               - ANALYZES ALL CATALOG DATA AND GENERATES THE
00466  M00S00466.ssval   +++|*                 PROBLEM FILE.
00467  M00S00467.ssval   +++|*               - EXAMINES ALL PROBLEM FILE ENTRIES AND GENERATES
00468  M00S00468.ssval   +++|*                 THE VALIDATION REPORT AND THE FIXIT FILE.
00469  M00S00469.ssval   +++|*
00470  M00S00470.ssval   +++|*      . FIX    - EXAMINES THE FIXIT FILE ENTRIES AND RELEASES FREE
00471  M00S00471.ssval   +++|*                 SPACE IF THIS MODE IS SELECTED.
00472  M00S00472.ssval   +++|*               - EXAMINES THE FIXIT FILE ENTRIES AND REPAIRS CATALOG
00473  M00S00473.ssval   +++|*                 ENTRIES IF THIS OPTION IS SELECTED.
00474  M00S00474.ssval   +++|*
00475  M00S00475.ssval   +++|*
00476  M00S00476.ssval   +++|*     *SSVAL* MAJOR ROUTINES.
00477  M00S00477.ssval   +++|*       1.0  VLPRSET - PRESET PARAMETERS AND FILES.
00478  M00S00478.ssval   +++|*            1.1 VLTAB -
00479  M00S00479.ssval   +++|*            1.2 VLPFC - READ THE PFC.
00480  M00S00480.ssval   +++|*            1.3 VLRDF - READ THE RDF FILE.
00481  M00S00481.ssval   +++|*                1.3.1 VLRDF2 - PROCESS THE RDF RECORD.
00482  M00S00482.ssval   +++|*
00483  M00S00483.ssval   +++|*       2.0  VLSUBFM - SUBFAMILY VALIDATION.
00484  M00S00484.ssval   +++|*            2.1 VLBLDVT - BUILD VALIDATION TABLE.
00485  M00S00485.ssval   +++|*                2.1.1 VLCMAP - SMMAP LOOKUP.
00486  M00S00486.ssval   +++|*            2.2 VLASFM - ANALYZE THE SFM CATALOG.
00487  M00S00487.ssval   +++|*                2.2.1 VLNCS - NORMAL CHAIN SCAN.
00488  M00S00488.ssval   +++|*                2.2.2 VLCFS - CHAIN FRAGMENT SCAN.
00489  M00S00489.ssval   +++|*                2.2.3 VLSMSC - SMMAP SCAN.
00490  M00S00490.ssval   +++|*            2.3 VLAPFC - ANALYZE THE *PFC* CATALOG.
00491  M00S00491.ssval   +++|*                2.3.1 VLAPFC2 - ANALYZE *PFC* PASS 2.
00492  M00S00492.ssval   +++|*            2.4 VLRPT - VALIDATION REPORT.
00493  M00S00493.ssval   +++|*                2.4.1 VLRPTL - ISSUE REPORT LINE.
00494  M00S00494.ssval   +++|*                2.4.2 VLSCH - SCAN CHAIN FOR REPORT.
00495  M00S00495.ssval   +++|*
00496  M00S00496.ssval   +++|*       3.0  VLFIX - FIX CATALOGS.
00497  M00S00497.ssval   +++|*            3.1 VLFIXP - FIX PFC.
00498  M00S00498.ssval   +++|*
00499  M00S00499.ssval   +++|
00500  M00S00500.ssval   +++|**    EXTERNAL INTERFACE ROUTINES.
00501  M00S00501.ssval   +++|*
00502  M00S00502.ssval   +++|*     CATALOG/MAP ACCESS ROUTINES.
00503  M00S00503.ssval   +++|*     M860 REPORT FORMATTER.
00504  M00S00504.ssval   +++|*     NOS MACROS USING THE SYMPL INTERFACES ON MAC1.
00505  M00S00505.ssval   +++|*     SPECIAL ROUTINES ON MAC2.
00506  M00S00506.ssval   +++|*      - XARG
00507  M00S00507.ssval   +++|*      - CALLSS
00508  M00S00508.ssval   +++|*      - CINTLK
00509  M00S00509.ssval   +++|*      - GETFAM
00510  M00S00510.ssval   +++|*      - RDPFC
00511  M00S00511.ssval   +++|*      - SETASA
00512  M00S00512.ssval   +++|*      - SETPFP
00513  M00S00513.ssval   +++|*      - UATTACH
00514  M00S00514.ssval   +++|#
00515  M00S00515.ssval   +++|
00516  M00S00516.ssval   +++|                                               CONTROL PRESET;
00517  M00S00517.ssval   +++|
00518  M00S00518.ssval   +++|#
00519  M00S00519.ssval   +++|****  PROC SSVAL - XREF LIST BEGIN.
00520  M00S00520.ssval   +++|#
00521  M00S00521.ssval   +++|
00522  M00S00522.ssval   +++|      XREF
00523  M00S00523.ssval   +++|        BEGIN
00524  M00S00524.ssval   +++|        PROC ABORT;                  # CALLS *ABORT* MACRO #
00525  M00S00525.ssval   +++|        PROC GETPFP;                 # GET USER INDEX AND FAMILY #
00526  M00S00526.ssval   +++|        PROC GETSPS;                 # GET SYSTEM ORIGIN STATUS #
00527  M00S00527.ssval   +++|        PROC MEMORY;                 # INTERFACE TO *MEMORY* MACRO #
00528  M00S00528.ssval   +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
00529  M00S00529.ssval   +++|                                       OR RETURN #
00530  M00S00530.ssval   +++|        PROC RPCLOSE;                # CLOSES A PRINT FILE #
00531  M00S00531.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
00532  M00S00532.ssval   +++|        PROC VLFIX;                  # FIX CATALOGS #
00533  M00S00533.ssval   +++|        PROC VLMSG;                  # ISSUE INFORMATIONAL MESSAGE #
00534  M00S00534.ssval   +++|        PROC VLPRSET;                # PRESET PARAMETERS AND FILES #
00535  M00S00535.ssval   +++|        PROC VLREQEX;                # REQUEST TO EXEC #
00536  M00S00536.ssval   +++|        PROC VLSUBFM;                # SUBFAMILY VALIDATION #
00537  M00S00537.ssval   +++|        END
00538  M00S00538.ssval   +++|
00539  M00S00539.ssval   +++|#
00540  M00S00540.ssval   +++|****  PROC SSVAL - XREF LIST END.
00541  M00S00541.ssval   +++|#
00542  M00S00542.ssval   +++|
00543  M00S00543.ssval   +++|      DEF RSLEN      #1#;            # RETURN STATUS WORD LENGTH #
00544  M00S00544.ssval   +++|      DEF LISTCON    #0#;            # TURN OFF COMMON DECK LISTINGS #
00545  M00S00545.ssval   +++|
00546  M00S00546.ssval   +++|*CALL COMBFAS
00547  M00S00547.ssval   +++|*CALL COMBCMD
00548  M00S00548.ssval   +++|*CALL COMBCPR
00549  M00S00549.ssval   +++|*CALL COMBMAP
00550  M00S00550.ssval   +++|*CALL COMBMCT
00551  M00S00551.ssval   +++|*CALL COMBPFP
00552  M00S00552.ssval   +++|*CALL COMTFMT
00553  M00S00553.ssval   +++|*CALL COMTVLD
00554  M00S00554.ssval   +++|*CALL COMTVLF
00555  M00S00555.ssval   +++|*CALL COMTVLM
00556  M00S00556.ssval   +++|*CALL COMTVLV
00557  M00S00557.ssval   +++|*CALL COMTVLX
00558  M00S00558.ssval   +++|
00559  M00S00559.ssval   +++|
00560  M00S00560.ssval   +++|      ARRAY SCR$FET [0:0] S(SFETL);;  # SCRATCH FET #
00561  M00S00561.ssval   +++|      ARRAY SPSSTAT [0:0] S(RSLEN);
00562  M00S00562.ssval   +++|        BEGIN
00563  M00S00563.ssval   +++|        ITEM SPS$STATUS U(00,48,12);  # RETURN STATUS #
00564  M00S00564.ssval   +++|        END
00565  M00S00565.ssval   +++|                                               CONTROL EJECT;
00566  M00S00566.ssval   +++|
00567  M00S00567.ssval   +++|      GETSPS(SPSSTAT);               # GET SYSTEM ORIGIN STATUS #
00568  M00S00568.ssval   +++|      IF SPS$STATUS NQ 0
00569  M00S00569.ssval   +++|      THEN
00570  M00S00570.ssval   +++|        BEGIN
00571  M00S00571.ssval   +++|        VLMSG(VM"NEEDSYOT");         # MUST HAVE SYSTEM PRIVILEGES #
00572  M00S00572.ssval   +++|        ABORT;
00573  M00S00573.ssval   +++|        END
00574  M00S00574.ssval   +++|
00575  M00S00575.ssval   +++|#
00576  M00S00576.ssval   +++|*     SAVE THE USER-S CURRENT FAMILY AND USER INDEX IN COMMON.
00577  M00S00577.ssval   +++|#
00578  M00S00578.ssval   +++|
00579  M00S00579.ssval   +++|      GETPFP(PFP[0]);
00580  M00S00580.ssval   +++|      USER$FAM[0] = PFP$FAM[0];
00581  M00S00581.ssval   +++|      USER$UI[0] = PFP$UI[0];
00582  M00S00582.ssval   +++|
00583  M00S00583.ssval   +++|#
00584  M00S00584.ssval   +++|*     GET CURRENT JOB FIELD LENGTH.
00585  M00S00585.ssval   +++|#
00586  M00S00586.ssval   +++|
00587  M00S00587.ssval   +++|      MEM$MIN = O"50000";            # SAVE PROGRAM SIZE #
00588  M00S00588.ssval   +++|      MEM$WDS[0] = MEM$MIN;
00589  M00S00589.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);   # SET MEMORY #
00590  M00S00590.ssval   +++|
00591  M00S00591.ssval   +++|#
00592  M00S00592.ssval   +++|*     GET MAXIMUM JOB FIELD LENGTH.
00593  M00S00593.ssval   +++|#
00594  M00S00594.ssval   +++|
00595  M00S00595.ssval   +++|      MEM$WDS[0] = REQMAXFL;
00596  M00S00596.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);
00597  M00S00597.ssval   +++|      MEM$MAX = MEM$WDS[0];          # SAVE MAXIMUM MEMORY ALLOWED #
00598  M00S00598.ssval   +++|
00599  M00S00599.ssval   +++|#
00600  M00S00600.ssval   +++|*     PRESET - PROCESS CONTROL CARD AND INITIALIZE FILES.
00601  M00S00601.ssval   +++|#
00602  M00S00602.ssval   +++|
00603  M00S00603.ssval   +++|      VLPRSET;
00604  M00S00604.ssval   +++|
00605  M00S00605.ssval   +++|#
00606  M00S00606.ssval   +++|*     CONNECT TO SUBSYSTEM.
00607  M00S00607.ssval   +++|#
00608  M00S00608.ssval   +++|
00609  M00S00609.ssval   +++|      CONNECTED = TRUE;              # INITIALIZE FOR VLREQEX CALL #
00610  M00S00610.ssval   +++|      VLREQEX(TYP"TYP1",REQTYP1"CONNECT");
00611  M00S00611.ssval   +++|      IF STAT NQ 0
00612  M00S00612.ssval   +++|      THEN                           # CONNECT REQUEST FAILED #
00613  M00S00613.ssval   +++|        BEGIN
00614  M00S00614.ssval   +++|        VLERROR(VE"NCONNECT",NOABT);  # ISSUE ERROR MESSAGE #
00615  M00S00615.ssval   +++|        CONNECTED = FALSE;           # NOT CONNECTED #
00616  M00S00616.ssval   +++|        END
00617  M00S00617.ssval   +++|
00618  M00S00618.ssval   +++|#
00619  M00S00619.ssval   +++|*     VALIDATE ALL SELECTED SUBFAMILIES.  ONLY THOSE SUBFAMILIES
00620  M00S00620.ssval   +++|*     SELECTED BY THE CONTROL CARD AND WHO HAVE THE SFM CATALOG FILE
00621  M00S00621.ssval   +++|*     AVAILABLE IN THIS RUN ARE VALIDATED.
00622  M00S00622.ssval   +++|#
00623  M00S00623.ssval   +++|
00624  M00S00624.ssval   +++|      SLOWFOR SBINDX = 0 STEP 1 UNTIL MAXSF
00625  M00S00625.ssval   +++|      DO
00626  M00S00626.ssval   +++|        BEGIN
00627  M00S00627.ssval   +++|        IF (B<SBINDX,1>PAR$SB EQ 1) AND (B<SBINDX,1>SFMCATDEF EQ 1)
00628  M00S00628.ssval   +++|          THEN
00629  M00S00629.ssval   +++|          BEGIN
00630  M00S00630.ssval   +++|          VLSUBFM;                   # VALIDATE SUBFAMILY #
00631  M00S00631.ssval   +++|          END
00632  M00S00632.ssval   +++|
00633  M00S00633.ssval   +++|        END
00634  M00S00634.ssval   +++|
00635  M00S00635.ssval   +++|#
00636  M00S00636.ssval   +++|*     RETURN MEMORY USED IN VALIDATION.
00637  M00S00637.ssval   +++|#
00638  M00S00638.ssval   +++|
00639  M00S00639.ssval   +++|      MEM$WDS[0] = MEM$MIN;
00640  M00S00640.ssval   +++|      MEMORY("CM",MEMRQST,RCL,NA);   # REDUCE FL #
00641  M00S00641.ssval   +++|
00642  M00S00642.ssval   +++|
00643  M00S00643.ssval   +++|
00644  M00S00644.ssval   +++|#
00645  M00S00645.ssval   +++|*     FIX CATALOGS PROCESSING.
00646  M00S00646.ssval   +++|#
00647  M00S00647.ssval   +++|
00648  M00S00648.ssval   +++|      VLFIX;
00649  M00S00649.ssval   +++|
00650  M00S00650.ssval   +++|#
00651  M00S00651.ssval   +++|*     CLOSE THE REPORT FILE AND DISCONNECT.
00652  M00S00652.ssval   +++|#
00653  M00S00653.ssval   +++|
00654  M00S00654.ssval   +++|      RPCLOSE(RPTFADR);
00655  M00S00655.ssval   +++|
00656  M00S00656.ssval   +++|      VLREQEX(TYP"TYP1",REQTYP1"DISCONNECT");  # DISCONNECT FROM EXEC #
00657  M00S00657.ssval   +++|
00658  M00S00658.ssval   +++|      VLMSG(VM"VLDONE");             # SSVAL COMPLETED #
00659  M00S00659.ssval   +++|      IF TOTALERRS - PAR$FX LQ 0
00660  M00S00660.ssval   +++|      THEN
00661  M00S00661.ssval   +++|        BEGIN
00662  M00S00662.ssval   +++|        RESTPFP(PFP$END);
00663  M00S00663.ssval   +++|        END
00664  M00S00664.ssval   +++|
00665  M00S00665.ssval   +++|      ELSE
00666  M00S00666.ssval   +++|        BEGIN
00667  M00S00667.ssval   +++|        RESTPFP(PFP$ABORT);
00668  M00S00668.ssval   +++|        END
00669  M00S00669.ssval   +++|
00670  M00S00670.ssval   +++|
00671  M00S00671.ssval   +++|      STOP;
00672  M00S00672.ssval   +++|
00673  M00S00673.ssval   +++|      END  # SSVAL #
00674  M00S00674.ssval   +++|
00675  M00S00675.ssval   +++|    TERM
00676  M00S00676.ssval   +++|PROC VLAMSF;
00677  M00S00677.ssval   +++|# TITLE VLASFM - ANALYZE THE SFM CATALOG.                             #
00678  M00S00678.ssval   +++|
00679  M00S00679.ssval   +++|
00680  M00S00680.ssval   +++|      BEGIN  # VLASFM #
00681  M00S00681.ssval   +++|
00682  M00S00682.ssval   +++|#
00683  M00S00683.ssval   +++|**    VLASFM - ANALYZE THE SFM CATALOG.
00684  M00S00684.ssval   +++|*
00685  M00S00685.ssval   +++|*     *VLAMSF* CONTROLS THE VALIDATION PROCESS THAT EXAMINES
00686  M00S00686.ssval   +++|*     THE SFM CATALOG DATA IN THE *VT* TABLE.
00687  M00S00687.ssval   +++|*
00688  M00S00688.ssval   +++|*     PROC VLASFM
00689  M00S00689.ssval   +++|*
00690  M00S00690.ssval   +++|*     ENTRY     (PAR$AM)        - AM CONTROL CARD PARAMETER.
00691  M00S00691.ssval   +++|*               (ARRAY VTTABLE) - VALIDATION TABLE ENTRIES.
00692  M00S00692.ssval   +++|*
00693  M00S00693.ssval   +++|*     EXIT      (VTEN$PROB) - THIS FIELD IN EACH VALIDATION TABLE ENTRY
00694  M00S00694.ssval   +++|*                             IS UPDATED TO REFLECT THE TYPE OF
00695  M00S00695.ssval   +++|*                             VALIDATION PROBLEMS ENCOUNTERED SO FAR.
00696  M00S00696.ssval   +++|*
00697  M00S00697.ssval   +++|*     NOTES     *VLAMSF* PROCESSES BY -
00698  M00S00698.ssval   +++|*               . CALLING *VLNCS* TO PERFORM THE NORMAL CHAIN SCAN.
00699  M00S00699.ssval   +++|*               . CALLING *VLCFS* TO PERFORM THE CHAIN FRAGMENT SCAN.
00700  M00S00700.ssval   +++|*               . CALLING *VLSMSC* TO SCAN THE SMMAP.
00701  M00S00701.ssval   +++|*               . SCANNING ALL ENTRIES IN THE *VT* TABLE TO UPDATE THE
00702  M00S00702.ssval   +++|*                 PROBLEM FIELD IN THE ENTRY AND IN ITS ASSOCIATED HEAD
00703  M00S00703.ssval   +++|*                 OF CHAIN ENTRY.
00704  M00S00704.ssval   +++|#
00705  M00S00705.ssval   +++|
00706  M00S00706.ssval   +++|#
00707  M00S00707.ssval   +++|****  PROC VLASFM - XREF LIST BEGIN.
00708  M00S00708.ssval   +++|#
00709  M00S00709.ssval   +++|
00710  M00S00710.ssval   +++|      XREF
00711  M00S00711.ssval   +++|        BEGIN
00712  M00S00712.ssval   +++|        PROC VLCFS;                  # CHAIN FRAGMENT SCAN #
00713  M00S00713.ssval   +++|        PROC VLSMSC;                # *SM* MAP SCAN #
00714  M00S00714.ssval   +++|        PROC VLNCS;                  # NORMAL CHAIN SCAN #
00715  M00S00715.ssval   +++|        END
00716  M00S00716.ssval   +++|
00717  M00S00717.ssval   +++|#
00718  M00S00718.ssval   +++|****  PROC VLASFM - XREF LIST END.
00719  M00S00719.ssval   +++|#
00720  M00S00720.ssval   +++|
00721  M00S00721.ssval   +++|      DEF LISTCON    #0#;            # TURN OFF COMMON DECK LISTING #
00722  M00S00722.ssval   +++|
00723  M00S00723.ssval   +++|*CALL COMBFAS
00724  M00S00724.ssval   +++|*CALL COMTVLD
00725  M00S00725.ssval   +++|*CALL COMTVLV
00726  M00S00726.ssval   +++|
00727  M00S00727.ssval   +++|
00728  M00S00728.ssval   +++|
00729  M00S00729.ssval   +++|
00730  M00S00730.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
00731  M00S00731.ssval   +++|      ITEM K          I;             # TEMPORARY VARIABLE #
00732  M00S00732.ssval   +++|      ITEM PT         U;             # PROBLEM TYPE #
00733  M00S00733.ssval   +++|
00734  M00S00734.ssval   +++|                                               CONTROL EJECT;
00735  M00S00735.ssval   +++|
00736  M00S00736.ssval   +++|#
00737  M00S00737.ssval   +++|*     PERFORM NORMAL CHAIN SCAN.
00738  M00S00738.ssval   +++|#
00739  M00S00739.ssval   +++|
00740  M00S00740.ssval   +++|      VLNCS;
00741  M00S00741.ssval   +++|
00742  M00S00742.ssval   +++|#
00743  M00S00743.ssval   +++|*     PERFORM CHAIN FRAGMENT SCAN.
00744  M00S00744.ssval   +++|#
00745  M00S00745.ssval   +++|
00746  M00S00746.ssval   +++|      VLCFS;
00747  M00S00747.ssval   +++|
00748  M00S00748.ssval   +++|#
00749  M00S00749.ssval   +++|*     PERFORM SMMAP SCAN IF THE *AM* PARAMETER WAS SPECIFIED.
00750  M00S00750.ssval   +++|#
00751  M00S00751.ssval   +++|
00752  M00S00752.ssval   +++|
00753  M00S00753.ssval   +++|#
00754  M00S00754.ssval   +++|*     SCAN ALL *VT* ENTRIES TO UPDATE THE *VT* PROBLEM FIELD IN THE
00755  M00S00755.ssval   +++|*     ENTRY AND IN THE CORRESPONDING HEAD OF CHAIN ENTRY.  THE PROBLEM
00756  M00S00756.ssval   +++|*     FIELD IS DEFINED TO BE THE LOGICAL SUM OF ALL THE PROBLEM TYPES
00757  M00S00757.ssval   +++|*     FOR ALL THE VALIDATION ERRORS DETECTED FOR THAT ENTRY.  PROBLEM
00758  M00S00758.ssval   +++|*     TYPES FOR EACH VALIDATION ERROR ARE DEFINED IN THE *VTPTYPES*
00759  M00S00759.ssval   +++|*     ARRAY IN COMTVLV.
00760  M00S00760.ssval   +++|#
00761  M00S00761.ssval   +++|
00762  M00S00762.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
00763  M00S00763.ssval   +++|      DO
00764  M00S00764.ssval   +++|        BEGIN  # SCAN OF *VT* ENTRIES #
00765  M00S00765.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *VT* ENTRY #
00766  M00S00766.ssval   +++|
00767  M00S00767.ssval   +++|#
00768  M00S00768.ssval   +++|*     SCAN THE ERROR FLAGS IN THE *VT* ENTRY (BITS *VPS* THRU *VPX*).
00769  M00S00769.ssval   +++|*     ADD THE PROBLEM TYPE FOR EVERY ACTIVE ERROR FLAG TO THE LOGICAL
00770  M00S00770.ssval   +++|*     SUM.
00771  M00S00771.ssval   +++|#
00772  M00S00772.ssval   +++|
00773  M00S00773.ssval   +++|        PT = 0;
00774  M00S00774.ssval   +++|        SLOWFOR K = VPS STEP 1 UNTIL VPX
00775  M00S00775.ssval   +++|        DO
00776  M00S00776.ssval   +++|          BEGIN
00777  M00S00777.ssval   +++|          IF B<K,1>VTEN$WORD[0] EQ 1
00778  M00S00778.ssval   +++|          THEN
00779  M00S00779.ssval   +++|            BEGIN
00780  M00S00780.ssval   +++|            PT = PT LOR VTP$TYP[K];  # OR LOGICAL SUM TOGETHER #
00781  M00S00781.ssval   +++|            END
00782  M00S00782.ssval   +++|
00783  M00S00783.ssval   +++|          END
00784  M00S00784.ssval   +++|
00785  M00S00785.ssval   +++|#
00786  M00S00786.ssval   +++|*     LOGICALLY ADD THE COMPUTED PROBLEM TYPES TO THE PROBLEM FIELD IN
00787  M00S00787.ssval   +++|*     IN THE *VT* ENTRY.
00788  M00S00788.ssval   +++|#
00789  M00S00789.ssval   +++|
00790  M00S00790.ssval   +++|        VTEN$PROB[0] = VTEN$PROB[0] LOR PT;
00791  M00S00791.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *VT* ENTRY #
00792  M00S00792.ssval   +++|
00793  M00S00793.ssval   +++|#
00794  M00S00794.ssval   +++|*     UPDATE *HOC* ENTRY PROBLEM FIELD ( LOGICAL SUM OF MEMBERS ).
00795  M00S00795.ssval   +++|#
00796  M00S00796.ssval   +++|
00797  M00S00797.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
00798  M00S00798.ssval   +++|        VTEN$PROB[0] = VTEN$PROB[0] LOR PT;  # ADD VALUE OF MEMBER #
00799  M00S00799.ssval   +++|        VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # UPDATE *HOC* ENTRY #
00800  M00S00800.ssval   +++|        END  # SCAN OF *VT* ENTRIES #
00801  M00S00801.ssval   +++|
00802  M00S00802.ssval   +++|      END  # VLASFM #
00803  M00S00803.ssval   +++|
00804  M00S00804.ssval   +++|    TERM
00805  M00S00805.ssval   +++|PROC VLAPFC(GROUP);
00806  M00S00806.ssval   +++|# TITLE VLAPFC - ANALYZE THE *PFC* CATALOG.                           #
00807  M00S00807.ssval   +++|
00808  M00S00808.ssval   +++|
00809  M00S00809.ssval   +++|      BEGIN  # VLAPFC #
00810  M00S00810.ssval   +++|
00811  M00S00811.ssval   +++|#
00812  M00S00812.ssval   +++|**    VLAPFC - ANALYZE THE *PFC* CATALOG DATA.
00813  M00S00813.ssval   +++|*
00814  M00S00814.ssval   +++|*     *VLAPFC* READ THE *PFC* EXTRACT FILE FOR THE SUBFAMILY
00815  M00S00815.ssval   +++|*     AND VALIDATES EACH *PFC* ENTRY FOR THE SELECTED *SM*.
00816  M00S00816.ssval   +++|*
00817  M00S00817.ssval   +++|*     PROC VLAPFC
00818  M00S00818.ssval   +++|*
00819  M00S00819.ssval   +++|*     ENTRY     (SMINDX)        - *SM* NUMBER.
00820  M00S00820.ssval   +++|*               (PRM$ENTRC)     - COUNT OF *FCT* ENTRIES IN PREAMBLE.
00821  M00S00821.ssval   +++|*               (SBINDX)        - SUBFAMILY NUMBER.
00822  M00S00822.ssval   +++|*               (ARRAY VTTABLE) - VALIDATION TABLE ENTRIES.
00823  M00S00823.ssval   +++|*
00824  M00S00824.ssval   +++|*     EXIT      FOR DETECTED ERRORS -
00825  M00S00825.ssval   +++|*               . SET *VT* ENTRY ERROR FLAGS AND UPDATE THE
00826  M00S00826.ssval   +++|*                 *VTEN$PROB* FIELD.
00827  M00S00827.ssval   +++|*               . A PROBLEM FILE RECORD IS WRITTEN (RECORD TYPE
00828  M00S00828.ssval   +++|*                 REC"ASA" OR REC"OTHR").
00829  M00S00829.ssval   +++|*
00830  M00S00830.ssval   +++|*     MESSAGES  * SSVAL ABNORMAL, VLAPFC.*.
00831  M00S00831.ssval   +++|*
00832  M00S00832.ssval   +++|*     NOTES     *VLAPFC* WILL DETECT THE FOLLOWING ERRORS -
00833  M00S00833.ssval   +++|*               . ILLEGAL *ASA* IN THE *PFC* (NO SFM CATALOG ENTRY
00834  M00S00834.ssval   +++|*                 FOR THE *ASA* IN THE *VT*).
00835  M00S00835.ssval   +++|*               . MULTIPLE OWNERS.
00836  M00S00836.ssval   +++|*               . NOT HEAD OF CHAIN.
00837  M00S00837.ssval   +++|*               . DATA ERROR FLAG ON IN THE *PFC*.
00838  M00S00838.ssval   +++|*               . *PFC* POINTS TO A CHAIN WITH PROBLEMS.
00839  M00S00839.ssval   +++|*
00840  M00S00840.ssval   +++|*               IF THE MULTIPLE OWNERS COUNTER IS NOT ZERO, *VLAPFC2*
00841  M00S00841.ssval   +++|*               IS CALLED TO FIND THE FIRST OWNER.
00842  M00S00842.ssval   +++|#
00843  M00S00843.ssval   +++|
00844  M00S00844.ssval   +++|#
00845  M00S00845.ssval   +++|****  PROC VLAPFC - XREF LIST BEGIN.
00846  M00S00846.ssval   +++|#
00847  M00S00847.ssval   +++|
00848  M00S00848.ssval   +++|      XREF
00849  M00S00849.ssval   +++|        BEGIN
00850  M00S00850.ssval   +++|        PROC MESSAGE;                # MESSAGE TO DAYFILE #
00851  M00S00851.ssval   +++|        PROC VLWFIX;                 # WRITE FIXIT FILE RECORD #
00852  M00S00852.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
00853  M00S00853.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
00854  M00S00854.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
00855  M00S00855.ssval   +++|        PROC VLAPFC2;                # ANALYZE *PFC* PASS 2 #
00856  M00S00856.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
00857  M00S00857.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
00858  M00S00858.ssval   +++|        FUNC XCOD C(10);             # BINARY TO DISPLAY #
00859  M00S00859.ssval   +++|        PROC ZSETFET;                # INITIALIZES A *FET* FOR *I/O* #
00860  M00S00860.ssval   +++|        END
00861  M00S00861.ssval   +++|
00862  M00S00862.ssval   +++|#
00863  M00S00863.ssval   +++|****  PROC VLAPFC - XREF LIST END.
00864  M00S00864.ssval   +++|#
00865  M00S00865.ssval   +++|
00866  M00S00866.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
00867  M00S00867.ssval   +++|*CALL COMBFAS
00868  M00S00868.ssval   +++|*CALL COMBCMD
00869  M00S00869.ssval   +++|*CALL COMBMCT
00870  M00S00870.ssval   +++|*CALL COMTVLD
00871  M00S00871.ssval   +++|*CALL COMTVLF
00872  M00S00872.ssval   +++|*CALL COMTVLV
00873  M00S00873.ssval   +++|
00874  M00S00874.ssval   +++|
00875  M00S00875.ssval   +++|      ITEM GROUP      I;             # GROUP BEING PROCESSED #
00876  M00S00876.ssval   +++|      ITEM GMO        I;             # GLOBAL MULTIPLE OWNERS #
00877  M00S00877.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
00878  M00S00878.ssval   +++|
00879  M00S00879.ssval   +++|      ARRAY BLDLFN [0:0] S(1);       # BUILD *LFN* #
00880  M00S00880.ssval   +++|        BEGIN
00881  M00S00881.ssval   +++|        ITEM BLDNAME    C(00,00,07) = [ EXTLFN ];  # NAME OF FILE #
00882  M00S00882.ssval   +++|        ITEM BLDLFNX    U(00,36,06);  # SUBFAMILY NUMBER #
00883  M00S00883.ssval   +++|        END
00884  M00S00884.ssval   +++|
00885  M00S00885.ssval   +++|#
00886  M00S00886.ssval   +++|*     THIS ARRAY FOR LINK MESSAGE.
00887  M00S00887.ssval   +++|#
00888  M00S00888.ssval   +++|
00889  M00S00889.ssval   +++|      ARRAY LINK [0:0] P(3);
00890  M00S00890.ssval   +++|        BEGIN                        # LINK MESSAGE #
00891  M00S00891.ssval   +++|        ITEM LINK$MG  C(00,00,10) = ["   UI =   "];
00892  M00S00892.ssval   +++|        ITEM LINK$NO  C(01,00,10);
00893  M00S00893.ssval   +++|        ITEM LINK$Z   U(02,00,60) = [0]; # ZERO BYTE #
00894  M00S00894.ssval   +++|        END
00895  M00S00895.ssval   +++|
00896  M00S00896.ssval   +++|
00897  M00S00897.ssval   +++|                                               CONTROL EJECT;
00898  M00S00898.ssval   +++|
00899  M00S00899.ssval   +++|      P<PREAMBLE> = PRMBADR;
00900  M00S00900.ssval   +++|
00901  M00S00901.ssval   +++|      GMO = 0;                       # INITIALIZE MULTIPLE OWNERS
00902  M00S00902.ssval   +++|                                       COUNTER #
00903  M00S00903.ssval   +++|
00904  M00S00904.ssval   +++|#
00905  M00S00905.ssval   +++|*     INITIALIZE THE *PFC* EXTRACT FILE FOR READING.
00906  M00S00906.ssval   +++|#
00907  M00S00907.ssval   +++|
00908  M00S00908.ssval   +++|      EXTFADR = LOC(EXTRACTFIL);     # FET ADDRESS #
00909  M00S00909.ssval   +++|      EXTBADR = LOC(EXTRACBUF);      # BUFFER ADDRESS #
00910  M00S00910.ssval   +++|      BLDLFNX = SBINDX + "0";        # APPEND SUBFAMILY TO *LFN* #
00911  M00S00911.ssval   +++|      ZSETFET(EXTFADR,BLDLFN,EXTBADR,LEXTBUF,SFETL);
00912  M00S00912.ssval   +++|
00913  M00S00913.ssval   +++|      REWIND(EXTRACTFIL,RCL);
00914  M00S00914.ssval   +++|      READ(EXTRACTFIL,NRCL);
00915  M00S00915.ssval   +++|
00916  M00S00916.ssval   +++|#
00917  M00S00917.ssval   +++|*     PROCESS EACH RECORD IN THE *PFC* EXTRACT FILE FOR THE SUBFAMILY.
00918  M00S00918.ssval   +++|#
00919  M00S00919.ssval   +++|
00920  M00S00920.ssval   +++|      STAT = OK;
00921  M00S00921.ssval   +++|      REPEAT WHILE STAT EQ OK
00922  M00S00922.ssval   +++|      DO
00923  M00S00923.ssval   +++|        BEGIN  # SCAN SUBFAMILY *PFC* ENTRIES #
00924  M00S00924.ssval   +++|        READW(EXTRACTFIL,EXTRECORD,RLEXTR,STAT);
00925  M00S00925.ssval   +++|
00926  M00S00926.ssval   +++|        IF STAT NQ OK
00927  M00S00927.ssval   +++|        THEN                         # DETECTED EOR, EOF, EOI OR
00928  M00S00928.ssval   +++|                                       ERROR #
00929  M00S00929.ssval   +++|          BEGIN
00930  M00S00930.ssval   +++|          TEST DUMMY;                # SKIP, NO RECORD READ #
00931  M00S00931.ssval   +++|          END
00932  M00S00932.ssval   +++|
00933  M00S00933.ssval   +++|
00934  M00S00934.ssval   +++|#
00935  M00S00935.ssval   +++|*     SKIP THIS RECORD IF THE *SM* IN THE *PFC* IS NOT THE ONE BEING
00936  M00S00936.ssval   +++|*     PROCESSED.
00937  M00S00937.ssval   +++|#
00938  M00S00938.ssval   +++|
00939  M00S00939.ssval   +++|        IF EXTR$SM[0] NQ SMINDX
00940  M00S00940.ssval   +++|        THEN
00941  M00S00941.ssval   +++|          BEGIN
00942  M00S00942.ssval   +++|          TEST DUMMY;
00943  M00S00943.ssval   +++|          END
00944  M00S00944.ssval   +++|#
00945  M00S00945.ssval   +++|*     SKIP THIS RECORD IF THE GROUP IN THE *PFC* IS NOT THE ONE
00946  M00S00946.ssval   +++|*     BEING PROCESSED.
00947  M00S00947.ssval   +++|#
00948  M00S00948.ssval   +++|
00949  M00S00949.ssval   +++|      IF EXTR$GP[0] NQ GROUP
00950  M00S00950.ssval   +++|      THEN
00951  M00S00951.ssval   +++|        BEGIN
00952  M00S00952.ssval   +++|        TEST DUMMY;
00953  M00S00953.ssval   +++|        END
00954  M00S00954.ssval   +++|
00955  M00S00955.ssval   +++|
00956  M00S00956.ssval   +++|#
00957  M00S00957.ssval   +++|*     CHECK FOR VALID *ASA* IN THE *PFC*.
00958  M00S00958.ssval   +++|#
00959  M00S00959.ssval   +++|
00960  M00S00960.ssval   +++|        IF EXTR$GP[0] GR MAXGP
00961  M00S00961.ssval   +++|          OR EXTR$GPT[0] GR MAXGRT
00962  M00S00962.ssval   +++|          OR EXTR$AU[0] GR INAVOT
00963  M00S00963.ssval   +++|        THEN                         # *ASA* OUT OF RANGE #
00964  M00S00964.ssval   +++|          BEGIN
00965  M00S00965.ssval   +++|          VLWPROB(REC"ASA");         # BUILD PROBLEM ENTRY #
00966  M00S00966.ssval   +++|          TEST DUMMY;
00967  M00S00967.ssval   +++|          END
00968  M00S00968.ssval   +++|
00969  M00S00969.ssval   +++|#
00970  M00S00970.ssval   +++|*     DO NOT CHECK THE PFC AGAINST THE SFM CATALOG
00971  M00S00971.ssval   +++|*     IF THE CATALOG IS EMPTY.
00972  M00S00972.ssval   +++|#
00973  M00S00973.ssval   +++|
00974  M00S00974.ssval   +++|      IF VTLAST LS VTFIRST
00975  M00S00975.ssval   +++|      THEN
00976  M00S00976.ssval   +++|        BEGIN
00977  M00S00977.ssval   +++|        TEST DUMMY;
00978  M00S00978.ssval   +++|        END
00979  M00S00979.ssval   +++|
00980  M00S00980.ssval   +++|#
00981  M00S00981.ssval   +++|*     USING THE *ASA*, LOCATE AND EDIT THE *VT* ENTRY FOR THIS RECORD.
00982  M00S00982.ssval   +++|#
00983  M00S00983.ssval   +++|
00984  M00S00984.ssval   +++|        P<VTLINK> = LOC(VTPTR);      # BUILD LINK TO *VT* ENTRY #
00985  M00S00985.ssval   +++|        VTL$GRT[0] = EXTR$GPT[0];
00986  M00S00986.ssval   +++|        VTL$AU[0] = EXTR$AU[0];
00987  M00S00987.ssval   +++|        IF (VTL$WORD[0] LS VTFIRST) OR (VTL$WORD[0] GR VTLAST)
00988  M00S00988.ssval   +++|        THEN                         # INVALID LINK #
00989  M00S00989.ssval   +++|          BEGIN
00990  M00S00990.ssval   +++|          LINK$NO = XCOD(EXTR$UI[0]);
00991  M00S00991.ssval   +++|          MESSAGE(LINK,SYSUDF1);
00992  M00S00992.ssval   +++|          MP$WD[1] = " VLAPFC INVALID LINK ";
00993  M00S00993.ssval   +++|          VLERROR(VE"SYSERR",ABRT);  # ABORT WITH MESSAGE #
00994  M00S00994.ssval   +++|          END
00995  M00S00995.ssval   +++|
00996  M00S00996.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTPTR];  # GET ENTRY #
00997  M00S00997.ssval   +++|
00998  M00S00998.ssval   +++|#
00999  M00S00999.ssval   +++|*     IF *VT* ENTRY IS ALREADY OWNED AND THE MULTIPLE OWNER FLAG
01000  M00S01000.ssval   +++|*     IS NOT SET, 1) SET IT, 2) UPDATE THE PROBLEM TYPE FIELD,
01001  M00S01001.ssval   +++|*     AND 3) INCREMENT THE MULTIPLE OWNERS COUNTER.  THIS COUNTER
01002  M00S01002.ssval   +++|*     WILL BE USED IN VLAPFC2 TO LOCATE THE FIRST OWNER(S).
01003  M00S01003.ssval   +++|#
01004  M00S01004.ssval   +++|
01005  M00S01005.ssval   +++|        IF VTEN$OWN AND NOT VTEN$MULT
01006  M00S01006.ssval   +++|        THEN                         # MULTIPLE OWNER DETECTED #
01007  M00S01007.ssval   +++|          BEGIN
01008  M00S01008.ssval   +++|          VTEN$MULT = TRUE;          # SET MULTIPLE OWNER FLAG #
01009  M00S01009.ssval   +++|          VTEN$PROB = VTEN$PROB LOR VTP$TYP[BMUL];  # SET PROBLEM
01010  M00S01010.ssval   +++|                                                      TYPE #
01011  M00S01011.ssval   +++|          GMO = GMO + 1;             # INCREMENT OWNERS #
01012  M00S01012.ssval   +++|          END
01013  M00S01013.ssval   +++|
01014  M00S01014.ssval   +++|        VTEN$OWN = TRUE;             # SET OWNER FLAG #
01015  M00S01015.ssval   +++|
01016  M00S01016.ssval   +++|#
01017  M00S01017.ssval   +++|*     IF THE DATA ERROR FLAG IS SET IN THE *PFC*, SET THE ERROR FLAG
01018  M00S01018.ssval   +++|*     IN THE *VT* AND UPDATE THE PROBLEM FIELD.
01019  M00S01019.ssval   +++|#
01020  M00S01020.ssval   +++|
01021  M00S01021.ssval   +++|        IF EXTR$DERR[0]
01022  M00S01022.ssval   +++|        THEN
01023  M00S01023.ssval   +++|          BEGIN
01024  M00S01024.ssval   +++|          VTEN$RERR[0] = TRUE;
01025  M00S01025.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BRER];
Line S00001 Modification History
M01 (Added by) msea011
Seq #  *Modification Id* Act 
----------------------------+
01026  M01S00001.msea011 +++|          TPFCERRS = TPFCERRS + 1;
01027  M00S01026.ssval   +++|          END
01028  M00S01027.ssval   +++|
01029  M00S01028.ssval   +++|#
01030  M00S01029.ssval   +++|*     IF THE SYSTEM ERROR FLAG IS SET IN THE *PFC*, SET THE ERROR FLAG
01031  M00S01030.ssval   +++|*     IN THE *VT* AND UPDATE THE PROBLEM FIELD.
01032  M00S01031.ssval   +++|#
01033  M00S01032.ssval   +++|
01034  M00S01033.ssval   +++|        IF EXTR$SYS[0]
01035  M00S01034.ssval   +++|        THEN
01036  M00S01035.ssval   +++|          BEGIN
01037  M00S01036.ssval   +++|          VTEN$SYS[0] = TRUE;
01038  M00S01037.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BSYS];
Line S00002 Modification History
M01 (Added by) msea011
Seq #  *Modification Id* Act 
----------------------------+
01039  M01S00002.msea011 +++|          TPFCERRS = TPFCERRS + 1;
01040  M00S01038.ssval   +++|          END
01041  M00S01039.ssval   +++|
01042  M00S01040.ssval   +++|#
01043  M00S01041.ssval   +++|*     IF THE *PFC* DOES NOT POINT TO THE HEAD OF CHAIN, SET THE ERROR
01044  M00S01042.ssval   +++|*     FLAG AND UPDATE THE PROBLEM TYPE FIELD.
01045  M00S01043.ssval   +++|#
01046  M00S01044.ssval   +++|
01047  M00S01045.ssval   +++|        IF NOT VTEN$HOC[0]
01048  M00S01046.ssval   +++|        THEN
01049  M00S01047.ssval   +++|          BEGIN
01050  M00S01048.ssval   +++|          VTEN$MSH[0] = TRUE;
01051  M00S01049.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BMSH];
01052  M00S01050.ssval   +++|          END
01053  M00S01051.ssval   +++|
01054  M00S01052.ssval   +++|#
01055  M00S01053.ssval   +++|*     IF THE FREE CARTRIDGE FLAG IS SET ON CARTRIDE THEN ADD
01056  M00S01054.ssval   +++|*     A RECORD TO THE FIXIT FILE.
01057  M00S01055.ssval   +++|#
01058  M00S01056.ssval   +++|
01059  M00S01057.ssval   +++|        IF VTEN$FCF[0] AND NOT EXTR$FF[0]
01060  M00S01058.ssval   +++|        THEN                        # BUILD FICIT FILE ENTRY #
01061  M00S01059.ssval   +++|          BEGIN
01062  M00S01060.ssval   +++|          VLWFIX(REC"FCF");
01063  M00S01061.ssval   +++|          END
01064  M00S01062.ssval   +++|
01065  M00S01063.ssval   +++|#
01066  M00S01064.ssval   +++|*     IF THE *PFC* POINTS TO A CHAIN WITH PROBLEMS, ADD THIS
01067  M00S01065.ssval   +++|*     ENTRY TO THE PROBLEM FILE.
01068  M00S01066.ssval   +++|#
01069  M00S01067.ssval   +++|
01070  M00S01068.ssval   +++|        IF VTEN$PROB[0] NQ 0
01071  M00S01069.ssval   +++|        THEN
01072  M00S01070.ssval   +++|          BEGIN
01073  M00S01071.ssval   +++|          VLWPROB(REC"OTHR");        # BUILD PROBLEM ENTRY #
01074  M00S01072.ssval   +++|          END
01075  M00S01073.ssval   +++|
01076  M00S01074.ssval   +++|        VT$ITEM[VTPTR] = VTEN$WORD[0];  # STORE THE *VT* ENTRY #
01077  M00S01075.ssval   +++|
01078  M00S01076.ssval   +++|#
01079  M00S01077.ssval   +++|*     IF THE *VT* ENTRY WAS NOT THE HEAD OF CHAIN, UPDATE THE *HOC*.
01080  M00S01078.ssval   +++|#
01081  M00S01079.ssval   +++|
01082  M00S01080.ssval   +++|        IF VTEN$POINT[0] NQ VTPTR
01083  M00S01081.ssval   +++|        THEN
01084  M00S01082.ssval   +++|          BEGIN  # UPDATE *HOC* ENTRY #
01085  M00S01083.ssval   +++|          I = VTEN$PROB[0];          # SAVE PROBLEM OF MEMBER #
01086  M00S01084.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
01087  M00S01085.ssval   +++|          IF VTEN$OWN[0]
01088  M00S01086.ssval   +++|          THEN
01089  M00S01087.ssval   +++|            BEGIN
01090  M00S01088.ssval   +++|            VTEN$MULT[0] = TRUE;
01091  M00S01089.ssval   +++|            VTEN$PROB[0] = VTEN$PROB[0] LOR VTP$TYP[BMUL];
01092  M00S01090.ssval   +++|            GMO = GMO + 1;
01093  M00S01091.ssval   +++|            END
01094  M00S01092.ssval   +++|
01095  M00S01093.ssval   +++|          VTEN$OWN[0] = TRUE;
01096  M00S01094.ssval   +++|          VTEN$PROB[0] = VTEN$PROB[0] LOR I;  # PROBLEM OF MEMBER #
01097  M00S01095.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];
01098  M00S01096.ssval   +++|          END  # UPDATE *HOC* ENTRY #
01099  M00S01097.ssval   +++|
01100  M00S01098.ssval   +++|        END  # SCAN SUBFAMILY *PFC* ENTRIES #
01101  M00S01099.ssval   +++|
01102  M00S01100.ssval   +++|#
01103  M00S01101.ssval   +++|*     IF AN UNEXPECTED *CIO* ERROR OCCURRED, ABORT.
01104  M00S01102.ssval   +++|#
01105  M00S01103.ssval   +++|
01106  M00S01104.ssval   +++|      IF STAT EQ CIOERR
01107  M00S01105.ssval   +++|      THEN
01108  M00S01106.ssval   +++|        BEGIN
01109  M00S01107.ssval   +++|        MP$WD[1] = "VLAPFC";         # NAME FOR MESSAGE #
01110  M00S01108.ssval   +++|        VLERROR(VE"SYSERR",ABRT);    # ABORT WITH MESSAGE #
01111  M00S01109.ssval   +++|        END
01112  M00S01110.ssval   +++|
01113  M00S01111.ssval   +++|#
01114  M00S01112.ssval   +++|*     IF THERE ARE GLOBAL MULTIPLE OWNERS, PERFORM VLAPFC2 TO FIND
01115  M00S01113.ssval   +++|*     THE FIRST OWNER OF THE FILE.
01116  M00S01114.ssval   +++|#
01117  M00S01115.ssval   +++|
01118  M00S01116.ssval   +++|      IF GMO GR 0
01119  M00S01117.ssval   +++|      THEN
01120  M00S01118.ssval   +++|        BEGIN
01121  M00S01119.ssval   +++|        VLAPFC2(GMO,GROUP);
01122  M00S01120.ssval   +++|        END
01123  M00S01121.ssval   +++|
01124  M00S01122.ssval   +++|      END  # VLAPFC #
01125  M00S01123.ssval   +++|
01126  M00S01124.ssval   +++|    TERM
01127  M00S01125.ssval   +++|PROC VLAPFC2(CNT,GROUP);
01128  M00S01126.ssval   +++|# TITLE VLAPFC2 - ANALYZE *PFC* PASS 2.                               #
01129  M00S01127.ssval   +++|
01130  M00S01128.ssval   +++|
01131  M00S01129.ssval   +++|      BEGIN  # VLAPFC2 #
01132  M00S01130.ssval   +++|
01133  M00S01131.ssval   +++|#
01134  M00S01132.ssval   +++|**    VLAPFC2 - ANALYZE THE *PFC* PASS 2.
01135  M00S01133.ssval   +++|*
01136  M00S01134.ssval   +++|*     *VLAPFC2* READS THE *PFC* EXTRACT FILE TO FIND THE FIRST OWNER
01137  M00S01135.ssval   +++|*     SINCE MULTIPLE OWNERS WERE FOUND IN *VLAPFC*.  ALL OTHER
01138  M00S01136.ssval   +++|*     INTERSECTIONS WITH THIS PARTICULAR CHAIN ARE MARKED IN *VLAPFC*.
01139  M00S01137.ssval   +++|*
01140  M00S01138.ssval   +++|*     PROC VLAPFC2(CNT)
01141  M00S01139.ssval   +++|*
01142  M00S01140.ssval   +++|*     ENTRY     (CNT)            - COUNT OF MULTIPLE OWNERS.
01143  M00S01141.ssval   +++|*               (SMINDX)        - *SM* NUMBER BEING PROCESSED.
01144  M00S01142.ssval   +++|*               ARRAY VTTABLE    - VALIDATION TABLE ENTRIES.
01145  M00S01143.ssval   +++|*               ARRAY EXTRACTFIL - *PFC* EXTRACT FILE *FET*.
01146  M00S01144.ssval   +++|*
01147  M00S01145.ssval   +++|*     EXIT      FOR THE *PFC* ENTRY THAT IS THE "FIRST" OWNER -
01148  M00S01146.ssval   +++|*               . *VT* ENTRY *VTEN$1ST* FLAG IS SET.
01149  M00S01147.ssval   +++|*               . A PROBLEM FILE RECORD IS WRITTEN AS "OTHR" RECORD
01150  M00S01148.ssval   +++|*                 TYPE.
01151  M00S01149.ssval   +++|#
01152  M00S01150.ssval   +++|
01153  M00S01151.ssval   +++|      ITEM GROUP      I;             # GROUP BEING PROCESSED #
01154  M00S01152.ssval   +++|      ITEM CNT        I;             # COUNT OF MULTIPLE *PFC* OWNERS #
01155  M00S01153.ssval   +++|
01156  M00S01154.ssval   +++|#
01157  M00S01155.ssval   +++|****  PROC VLAPFC2 - XREF LIST BEGIN.
01158  M00S01156.ssval   +++|#
01159  M00S01157.ssval   +++|
01160  M00S01158.ssval   +++|      XREF
01161  M00S01159.ssval   +++|        BEGIN
01162  M00S01160.ssval   +++|        PROC READ;                   # INTERFACE TO *READ* MACRO #
01163  M00S01161.ssval   +++|        PROC READW;                  # INTERFACE TO *READW* MACRO #
01164  M00S01162.ssval   +++|        PROC REWIND;                 # INTERFACE TO *REWIND* MACRO #
01165  M00S01163.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
01166  M00S01164.ssval   +++|        END
01167  M00S01165.ssval   +++|
01168  M00S01166.ssval   +++|#
01169  M00S01167.ssval   +++|****  PROC VLAPFC2 - XREF LIST END.
01170  M00S01168.ssval   +++|#
01171  M00S01169.ssval   +++|
01172  M00S01170.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
01173  M00S01171.ssval   +++|
01174  M00S01172.ssval   +++|*CALL COMBFAS
01175  M00S01173.ssval   +++|*CALL COMTVLD
01176  M00S01174.ssval   +++|*CALL COMTVLF
01177  M00S01175.ssval   +++|*CALL COMTVLV
01178  M00S01176.ssval   +++|
01179  M00S01177.ssval   +++|                                               CONTROL EJECT;
01180  M00S01178.ssval   +++|
01181  M00S01179.ssval   +++|#
01182  M00S01180.ssval   +++|*     READ THE *PFC* EXTRACT FILE.
01183  M00S01181.ssval   +++|#
01184  M00S01182.ssval   +++|
01185  M00S01183.ssval   +++|      REWIND(EXTRACTFIL,RCL);
01186  M00S01184.ssval   +++|      READ(EXTRACTFIL,NRCL);
01187  M00S01185.ssval   +++|
01188  M00S01186.ssval   +++|#
01189  M00S01187.ssval   +++|*     READ THE EXTRACT FILE UNTIL, 1) THE FILE STATUS IS NOT OK,
01190  M00S01188.ssval   +++|*     OR 2) THERE ARE NO MORE MULTIPLE OWNERS.
01191  M00S01189.ssval   +++|#
01192  M00S01190.ssval   +++|
01193  M00S01191.ssval   +++|      STAT = 0;
01194  M00S01192.ssval   +++|      REPEAT WHILE STAT EQ OK AND (CNT GR 0)
01195  M00S01193.ssval   +++|      DO                             # PROCESS THE EXTRACT RECORD #
01196  M00S01194.ssval   +++|        BEGIN  # READING EXTRACT FILE #
01197  M00S01195.ssval   +++|        READW(EXTRACTFIL,EXTRECORD,RLEXTR,STAT);  # GET THE EXTRACT
01198  M00S01196.ssval   +++|                                                    RECORD #
01199  M00S01197.ssval   +++|        IF STAT NQ OK
01200  M00S01198.ssval   +++|        THEN
01201  M00S01199.ssval   +++|          BEGIN
01202  M00S01200.ssval   +++|          TEST DUMMY;                # DETECTED EOR, EOF, EOI OR ERROR
01203  M00S01201.ssval   +++|                                     #
01204  M00S01202.ssval   +++|          END
01205  M00S01203.ssval   +++|
01206  M00S01204.ssval   +++|
01207  M00S01205.ssval   +++|#
01208  M00S01206.ssval   +++|*     PROCESS ONLY THE RECORDS FOR THE GIVEN SM.
01209  M00S01207.ssval   +++|#
01210  M00S01208.ssval   +++|
01211  M00S01209.ssval   +++|        IF EXTR$SM[0] NQ SMINDX
01212  M00S01210.ssval   +++|        THEN                         # NOT SELECTED #
01213  M00S01211.ssval   +++|          BEGIN
01214  M00S01212.ssval   +++|          TEST DUMMY;
01215  M00S01213.ssval   +++|          END
01216  M00S01214.ssval   +++|
01217  M00S01215.ssval   +++|        IF EXTR$GP[0] NQ GROUP
01218  M00S01216.ssval   +++|        THEN
01219  M00S01217.ssval   +++|          BEGIN
01220  M00S01218.ssval   +++|          TEST DUMMY;
01221  M00S01219.ssval   +++|          END
01222  M00S01220.ssval   +++|
01223  M00S01221.ssval   +++|#
01224  M00S01222.ssval   +++|*     USING THE *ASA* IN THE EXTRACT RECORD, DEVELOP THE INDEX TO
01225  M00S01223.ssval   +++|*     THE *VT* ARRAY FOR THIS RECORD.
01226  M00S01224.ssval   +++|#
01227  M00S01225.ssval   +++|
01228  M00S01226.ssval   +++|        P<VTLINK> = LOC(VTPTR);      # BUILD LINK TO *VT* ENTRY #
01229  M00S01227.ssval   +++|        VTL$GRT[0] = EXTR$GPT[0];
01230  M00S01228.ssval   +++|        VTL$AU[0] = EXTR$AU[0];
01231  M00S01229.ssval   +++|
01232  M00S01230.ssval   +++|        IF (VTL$WORD[0] LS VTFIRST) OR (VTL$WORD[0] GR VTLAST)
01233  M00S01231.ssval   +++|        THEN
01234  M00S01232.ssval   +++|          BEGIN
01235  M00S01233.ssval   +++|          TEST DUMMY;                # SKIP IF THE INDEX IS BAD #
01236  M00S01234.ssval   +++|          END
01237  M00S01235.ssval   +++|
01238  M00S01236.ssval   +++|#
01239  M00S01237.ssval   +++|*     GET THE *VT* ENTRY FOR THIS *PFC* EXTRACT RECORD.
01240  M00S01238.ssval   +++|#
01241  M00S01239.ssval   +++|
01242  M00S01240.ssval   +++|        VTEN$WORD[0] = VT$ITEM[VTPTR];  # GET *VT* ENTRY #
01243  M00S01241.ssval   +++|
01244  M00S01242.ssval   +++|#
01245  M00S01243.ssval   +++|*     DETERMINE IF THIS IS THE 1ST OWNER OF MULTIPLY-OWNED FILE.
01246  M00S01244.ssval   +++|#
01247  M00S01245.ssval   +++|
01248  M00S01246.ssval   +++|        IF VTEN$MULT[0] AND (NOT VTEN$1ST[0])
01249  M00S01247.ssval   +++|        THEN
01250  M00S01248.ssval   +++|          BEGIN
01251  M00S01249.ssval   +++|          VTEN$1ST[0] = TRUE;
01252  M00S01250.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # UPDATE ENTRY #
01253  M00S01251.ssval   +++|          VLWPROB(REC"OTHR");        # BUILD PROBLEM ENTRY #
01254  M00S01252.ssval   +++|          CNT = CNT - 1;
01255  M00S01253.ssval   +++|          END
01256  M00S01254.ssval   +++|
01257  M00S01255.ssval   +++|        END  # READING EXTRACT FILE #
01258  M00S01256.ssval   +++|
01259  M00S01257.ssval   +++|      END  # VLAPFC2 #
01260  M00S01258.ssval   +++|
01261  M00S01259.ssval   +++|    TERM
01262  M00S01260.ssval   +++|PROC VLBFILL(FLD,NWDS);
01263  M00S01261.ssval   +++|# TITLE VLBFILL - BLANK FILL.                                         #
01264  M00S01262.ssval   +++|
01265  M00S01263.ssval   +++|      BEGIN  # VLBFILL #
01266  M00S01264.ssval   +++|
01267  M00S01265.ssval   +++|#
01268  M00S01266.ssval   +++|**    VLBFILL - BLANK FILL.
01269  M00S01267.ssval   +++|*
01270  M00S01268.ssval   +++|*     *VLBFILL* CHANGES ALL BINARY ZERO CHARACTERS STARTING IN *FLD*
01271  M00S01269.ssval   +++|*     TO DISPLAY CODE BLANKS FOR A LENGTH OF *NWDS*.
01272  M00S01270.ssval   +++|*
01273  M00S01271.ssval   +++|*     PROC VLBFILL
01274  M00S01272.ssval   +++|*
01275  M00S01273.ssval   +++|*     ENTRY     (FLD) - THE FIELD TO SCAN.
01276  M00S01274.ssval   +++|*               (WDS) - NUMBER OF WORDS TO SCAN.
01277  M00S01275.ssval   +++|*
01278  M00S01276.ssval   +++|*     EXIT      (FLD) - CONTAINS THE BLANK FILLED FIELD.
01279  M00S01277.ssval   +++|#
01280  M00S01278.ssval   +++|
01281  M00S01279.ssval   +++|      ITEM FLD        I;             # FIELD TO SCAN #
01282  M00S01280.ssval   +++|      ITEM NWDS       I;             # NUMBER OF WORDS TO SCAN #
01283  M00S01281.ssval   +++|
01284  M00S01282.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
01285  M00S01283.ssval   +++|
01286  M00S01284.ssval   +++|*CALL COMBFAS
01287  M00S01285.ssval   +++|
01288  M00S01286.ssval   +++|      ITEM CHARINDX   I;             # INDEX FOR CHARACTERS SCANNED #
01289  M00S01287.ssval   +++|      ITEM NCHAR      I;             # NUMBER OF CHARACTERS TO SCAN #
01290  M00S01288.ssval   +++|
01291  M00S01289.ssval   +++|      BASED
01292  M00S01290.ssval   +++|      ARRAY SCAN [0:0] S(200);       # TO SCAN FIELD #
01293  M00S01291.ssval   +++|      ITEM SCAN$WD    C(00,00,200);
01294  M00S01292.ssval   +++|
01295  M00S01293.ssval   +++|                                               CONTROL EJECT;
01296  M00S01294.ssval   +++|
01297  M00S01295.ssval   +++|#
01298  M00S01296.ssval   +++|*     LOOK FOR A BINARY ZERO CHARACTER IN THE SPECIFIED FIELD AND
01299  M00S01297.ssval   +++|*     CHANGE IT TO A BLANK.
01300  M00S01298.ssval   +++|#
01301  M00S01299.ssval   +++|
01302  M00S01300.ssval   +++|
01303  M00S01301.ssval   +++|      P<SCAN> = LOC(FLD);
01304  M00S01302.ssval   +++|
01305  M00S01303.ssval   +++|      NCHAR = NWDS * 10;             # NUMBER OF CHARACTERS TO SCAN #
01306  M00S01304.ssval   +++|      SLOWFOR CHARINDX = 0 STEP 1 UNTIL NCHAR - 1
01307  M00S01305.ssval   +++|      DO
01308  M00S01306.ssval   +++|        BEGIN  # CHARINDX #
01309  M00S01307.ssval   +++|        IF C<CHARINDX,1>SCAN$WD[0] EQ 00
01310  M00S01308.ssval   +++|        THEN                         # FOUND A BINARY ZERO #
01311  M00S01309.ssval   +++|          BEGIN
01312  M00S01310.ssval   +++|          C<CHARINDX,1>SCAN$WD[0] = " ";  # REPLACE WITH A BLANK #
01313  M00S01311.ssval   +++|          END
01314  M00S01312.ssval   +++|
01315  M00S01313.ssval   +++|        END  # CHARINDX #
01316  M00S01314.ssval   +++|
01317  M00S01315.ssval   +++|      END  # VLBFILL #
01318  M00S01316.ssval   +++|
01319  M00S01317.ssval   +++|    TERM
01320  M00S01318.ssval   +++|PROC VLBICT(E1,E2);
01321  M00S01319.ssval   +++|# TITLE VLBICT - INTERSECTING CHAIN REPORT.                           #
01322  M00S01320.ssval   +++|
01323  M00S01321.ssval   +++|#
01324  M00S01322.ssval   +++|***
01325  M00S01323.ssval   +++|#
01326  M00S01324.ssval   +++|
01327  M00S01325.ssval   +++|      BEGIN  # VLBICT #
01328  M00S01326.ssval   +++|
01329  M00S01327.ssval   +++|#
01330  M00S01328.ssval   +++|**    VLBICT - INTERSECTING CHAIN REPORT.
01331  M00S01329.ssval   +++|*
01332  M00S01330.ssval   +++|*     *VLBICT* ISSUES THE INTERSECTING CHAIN DETAIL LINE TO THE
01333  M00S01331.ssval   +++|*     REPORT FILE AND ALSO ISSUES THE SUBCATALOG HEADING LINE
01334  M00S01332.ssval   +++|*     WHEN CALLED THE FIRST TIME FOR THE SUBCATALOG.
01335  M00S01333.ssval   +++|*
01336  M00S01334.ssval   +++|*     PROC VLBICT(E1,E2)
01337  M00S01335.ssval   +++|*
01338  M00S01336.ssval   +++|*     ENTRY     (E1)      - *VT* ENTRY INDEX (*FCT* ORDINAL, AU)
01339  M00S01337.ssval   +++|*                           FOR ENTRY 1.
01340  M00S01338.ssval   +++|*               (E2)      - *VT* ENTRY INDEX (*FCT* ORDINAL, AU)
01341  M00S01339.ssval   +++|*                           FOR ENTRY 2.
01342  M00S01340.ssval   +++|*               (RPTFADR) - ADDRESS OF THE REPORT FILE *FET*.
01343  M00S01341.ssval   +++|*               (SCDTLH)  - SUBCATALOG DETAIL HEADING FLAG.
01344  M00S01342.ssval   +++|*
01345  M00S01343.ssval   +++|*     EXIT      INTERSECTING CHAIN DETAIL LINE WRITTEN TO THE REPORT
01346  M00S01344.ssval   +++|*               FILE.
01347  M00S01345.ssval   +++|*               (SCRPTED) - SUBCATALOG REPORTED FLAG.
01348  M00S01346.ssval   +++|*               (SCDTLH)  - SUBCATALOG DETAIL HEADING FLAG.
01349  M00S01347.ssval   +++|*
01350  M00S01348.ssval   +++|*     NOTES     TO FORCE LEADING ZEROS ON THE *FCT* NUMBER AND
01351  M00S01349.ssval   +++|*               THE AU NUMBER THE *ZFD* VALUE IS ADDED BEFORE
01352  M00S01350.ssval   +++|*               CONVERSION.
01353  M00S01351.ssval   +++|*
01354  M00S01352.ssval   +++|#
01355  M00S01353.ssval   +++|
01356  M00S01354.ssval   +++|      ITEM E1         I;             # CHAIN ENTRY 1 #
01357  M00S01355.ssval   +++|      ITEM E2         I;             # CHAIN ENTRY 2 #
01358  M00S01356.ssval   +++|
01359  M00S01357.ssval   +++|#
01360  M00S01358.ssval   +++|****  PROC VLBICT - XREF LIST BEGIN.
01361  M00S01359.ssval   +++|#
01362  M00S01360.ssval   +++|
01363  M00S01361.ssval   +++|      XREF
01364  M00S01362.ssval   +++|        BEGIN
01365  M00S01363.ssval   +++|        PROC RPLINE;                 # CALLS *RPLINEX* TO PRINT A
01366  M00S01364.ssval   +++|                                       LINE #
01367  M00S01365.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
01368  M00S01366.ssval   +++|        FUNC VLNTC C(10);            # NUMERIC TO CHARACTER
01369  M00S01367.ssval   +++|                                       CONVERSION #
01370  M00S01368.ssval   +++|        PROC VLSUBHD;                # ISSUE REPORT SUBHEADING #
01371  M00S01369.ssval   +++|        END
01372  M00S01370.ssval   +++|
01373  M00S01371.ssval   +++|#
01374  M00S01372.ssval   +++|****  PROC VLBICT - XREF LIST END.
01375  M00S01373.ssval   +++|#
01376  M00S01374.ssval   +++|
01377  M00S01375.ssval   +++|
01378  M00S01376.ssval   +++|
01379  M00S01377.ssval   +++|      DEF LISTCON #0#;               # TURN OFF LISTING #
01380  M00S01378.ssval   +++|
01381  M00S01379.ssval   +++|*CALL COMBFAS
01382  M00S01380.ssval   +++|*CALL COMTVLD
01383  M00S01381.ssval   +++|*CALL COMTVLF
01384  M00S01382.ssval   +++|*CALL COMTVLV
01385  M00S01383.ssval   +++|
01386  M00S01384.ssval   +++|#
01387  M00S01385.ssval   +++|*     INTERSECTING CHAIN DETAIL LINE FOR THE REPORT FILE.
01388  M00S01386.ssval   +++|#
01389  M00S01387.ssval   +++|
01390  M00S01388.ssval   +++|      ARRAY ICLINE [0:0] S(3);       # INTERSECTING CHAIN REPORT LINE
01391  M00S01389.ssval   +++|                                     #
01392  M00S01390.ssval   +++|        BEGIN
01393  M00S01391.ssval   +++|        ITEM ICL$DEF    C(00,00,30) = ["000-0000       000-0000"];
01394  M00S01392.ssval   +++|        ITEM ICL$FCT1   C(00,00,03);  # *FCT* OF ENTRY ONE #
01395  M00S01393.ssval   +++|        ITEM ICL$AU1    C(00,24,04);  # *AU* OF ENTRY ONE #
01396  M00S01394.ssval   +++|        ITEM ICL$FCT2   C(01,30,03);  # *FCT* OF ENTRY TWO #
01397  M00S01395.ssval   +++|        ITEM ICL$AU2    C(01,54,04);  # *AU* OF ENTRY TWO #
01398  M00S01396.ssval   +++|        END
01399  M00S01397.ssval   +++|
01400  M00S01398.ssval   +++|                                               CONTROL EJECT;
01401  M00S01399.ssval   +++|
01402  M00S01400.ssval   +++|#
01403  M00S01401.ssval   +++|*     IF THE DETAIL HEADING HAS NOT BEEN PRINTED, PRINT IT.
01404  M00S01402.ssval   +++|#
01405  M00S01403.ssval   +++|
01406  M00S01404.ssval   +++|
01407  M00S01405.ssval   +++|      IF NOT SCDTLH
01408  M00S01406.ssval   +++|      THEN
01409  M00S01407.ssval   +++|        BEGIN
01410  M00S01408.ssval   +++|        VLSUBHD(SHTYP"ICT");         # PRINT DETAIL HEADING #
01411  M00S01409.ssval   +++|        SCRPTED = TRUE;              # SUBCATALOG REPORTED FLAG #
01412  M00S01410.ssval   +++|        SCDTLH = TRUE;               # SET SUBCATALOG DETAIL HEADING
01413  M00S01411.ssval   +++|                                       FLAG #
01414  M00S01412.ssval   +++|        END
01415  M00S01413.ssval   +++|
01416  M00S01414.ssval   +++|#
01417  M00S01415.ssval   +++|*     FORMAT AND PRINT THE INTERSECTING REPORT LINE.
01418  M00S01416.ssval   +++|#
01419  M00S01417.ssval   +++|
01420  M00S01418.ssval   +++|      P<VTLINK> = LOC(E1);             # *VT* LINK FOR ENTRY 1 #
01421  M00S01419.ssval   +++|      ICL$FCT1[0] = VLNTC(GROUPX*16+VTL$GRT[0]
01422  M00S01420.ssval   +++|        +ZFD,"XCDD",3);
01423  M00S01421.ssval   +++|      ICL$AU1[0] = VLNTC(VTL$AU[0]    # GET AU #
01424  M00S01422.ssval   +++|                    +ZFD,"XCDD",4);
01425  M00S01423.ssval   +++|      P<VTLINK> = LOC(E2);             # *VT* LINK FOR ENTRY 2 #
01426  M00S01424.ssval   +++|      ICL$FCT2[0] = VLNTC(GROUPX*16+VTL$GRT[0]
01427  M00S01425.ssval   +++|                    +ZFD,"XCDD",3);
01428  M00S01426.ssval   +++|      ICL$AU2[0] = VLNTC(VTL$AU[0]    # GET AU #
01429  M00S01427.ssval   +++|                    +ZFD,"XCDD",4);
01430  M00S01428.ssval   +++|
01431  M00S01429.ssval   +++|      RPLINE(RPTFADR,ICLINE,24,30,EOPL);  # ISSUE LINE TO REPORT #
01432  M00S01430.ssval   +++|
01433  M00S01431.ssval   +++|
01434  M00S01432.ssval   +++|      RETURN;
01435  M00S01433.ssval   +++|      END  # VLBICT #
01436  M00S01434.ssval   +++|
01437  M00S01435.ssval   +++|    TERM
01438  M00S01436.ssval   +++|PROC VLBLDVT(GROUP);
01439  M00S01437.ssval   +++|
01440  M00S01438.ssval   +++|# TITLE VLBLDVT - BUILD VALIDATION TABLE.                             #
01441  M00S01439.ssval   +++|
01442  M00S01440.ssval   +++|      BEGIN  # VLBLDVT #
01443  M00S01441.ssval   +++|
01444  M00S01442.ssval   +++|#
01445  M00S01443.ssval   +++|**    VLBLDVT - BUILD THE VALIDATION TABLE.
01446  M00S01444.ssval   +++|*
01447  M00S01445.ssval   +++|*     *VLBLDVT* READS THE *FCT* IN THE SELECTED SUBCATALOG (SM)
01448  M00S01446.ssval   +++|*     OF THE SFM CATALOG BEING PROCESSED AND BUILDS A *VT*
01449  M00S01447.ssval   +++|*     TABLE ENTRY FOR EACH AU OF EACH *FCT* ENTRY.
01450  M00S01448.ssval   +++|*
01451  M00S01449.ssval   +++|*     PROC VLBLDVT
01452  M00S01450.ssval   +++|*
01453  M00S01451.ssval   +++|*     ENTRY     (SMINDX)  - *SM* INDEX CURRENTLY PROCESSING.
01454  M00S01452.ssval   +++|*               (PAR$AM)   - AM PARAMETER FROM CONTROL CARD.
01455  M00S01453.ssval   +++|*               (PAR$FM)   - FM PARAMETER FROM CONTROL CARD.
01456  M00S01454.ssval   +++|*               (SBINDX)   - SUBFAMILY CURRENTLY PROCESSING.
01457  M00S01455.ssval   +++|*               P<VTTABLE> - START OF *VT* TABLE IN MEMORY.
01458  M00S01456.ssval   +++|*               (GROUP) - GROUP THAT WILL BE PROCESSED.
01459  M00S01457.ssval   +++|*
01460  M00S01458.ssval   +++|*     EXIT      (VTFIRST)       - INDEX OF FIRST ENTRY IN THE TABLE.
01461  M00S01459.ssval   +++|*               (VTLAST)        - INDEX OF LAST ENTRY IN THE TABLE.
01462  M00S01460.ssval   +++|*               (ARRAY VTTABLE) - CONTAINS ENTRIES FOR EACH AU IN
01463  M00S01461.ssval   +++|*                                 THE SUBCATALOG.
01464  M00S01462.ssval   +++|*
01465  M00S01463.ssval   +++|*     MESSAGES  *SFM CATALOG READ ERROR.*
01466  M00S01464.ssval   +++|*
01467  M00S01465.ssval   +++|*     NOTES     IF THE AM PARAMETER WAS SELECTED, THE *VLCMAP*
01468  M00S01466.ssval   +++|*               ROUTINE IS CALLED TO CHECK THE SMMAP ENTRY FOR EACH
01469  M00S01467.ssval   +++|*               *FCT* READ.
01470  M00S01468.ssval   +++|*
01471  M00S01469.ssval   +++|*               THESE *VT* ENTRY FIELDS ARE SET DEPENDING ON THE
01472  M00S01470.ssval   +++|*               *FCT* ENTRY -
01473  M00S01471.ssval   +++|*               . VTEN$NONE - NO CARTRIDGE ( *VSN* = BLANKS ).
01474  M00S01472.ssval   +++|*               . VTEN$SM  - SMMAP ENTRY ERROR.
01475  M00S01473.ssval   +++|*               . VTEN$INHB - INHIBIT FLAG SET.
01476  M00S01474.ssval   +++|*               . VTEN$LOST - LOST CARTRIDGE FLAG SET.
01477  M00S01475.ssval   +++|*               . VTEN$EWPE - EXCESSIVE WRITE PARITY ERRORS.
01478  M00S01476.ssval   +++|*               . VTEN$CONF - AU CONFLICT FLAG SET.
01479  M00S01477.ssval   +++|*               . VTEN$FROZ - FROZEN FLAG SET.
01480  M00S01478.ssval   +++|*               . VTEN$SOF  - START OF FRAGMENT SET.
01481  M00S01479.ssval   +++|*               . VTEN$ALOC - AU ALLOCATED.
01482  M00S01480.ssval   +++|*               . VTEN$HOC  - AU IS HEAD OF CHAIN.
01483  M00S01481.ssval   +++|*               . VTEN$EOC  - AU IS END OF CHAIN.
01484  M00S01482.ssval   +++|*               . VTEN$LINK - INDEX TO NEXT AU IN CHAIN.
01485  M00S01483.ssval   +++|*
01486  M00S01484.ssval   +++|#
01487  M00S01485.ssval   +++|
01488  M00S01486.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTINGS #
01489  M00S01487.ssval   +++|
01490  M00S01488.ssval   +++|#
01491  M00S01489.ssval   +++|****  PROC VLBLDVT - XREF LIST BEGIN.
01492  M00S01490.ssval   +++|#
01493  M00S01491.ssval   +++|
01494  M00S01492.ssval   +++|      XREF
01495  M00S01493.ssval   +++|        BEGIN
01496  M00S01494.ssval   +++|        PROC CGETFCT;                # GET AN *FCT* ENTRY #
01497  M00S01495.ssval   +++|        PROC VLCMAP;                 # *SM* MAP LOOKUP #
01498  M00S01496.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
01499  M00S01497.ssval   +++|        END
01500  M00S01498.ssval   +++|
01501  M00S01499.ssval   +++|#
01502  M00S01500.ssval   +++|****  PROC VLBLDVT - XREF LIST END.
01503  M00S01501.ssval   +++|#
01504  M00S01502.ssval   +++|
01505  M00S01503.ssval   +++|
01506  M00S01504.ssval   +++|
01507  M00S01505.ssval   +++|
01508  M00S01506.ssval   +++|*CALL COMBFAS
01509  M00S01507.ssval   +++|*CALL COMBCMD
01510  M00S01508.ssval   +++|*CALL COMBCMS
01511  M00S01509.ssval   +++|*CALL COMBMAP
01512  M00S01510.ssval   +++|*CALL COMBMCT
01513  M00S01511.ssval   +++|*CALL COMTVLD
01514  M00S01512.ssval   +++|*CALL COMTVLM
01515  M00S01513.ssval   +++|*CALL COMTVLV
01516  M00S01514.ssval   +++|
01517  M00S01515.ssval   +++|      ITEM EOCS     B;               # SAVE END OF CHAIN BIT #
01518  M00S01516.ssval   +++|      ITEM GROUP    U;               # GROUP TO BE PROCESSED #
01519  M00S01517.ssval   +++|      ITEM LINKHS   I;               # SAVE LINK POINTER HEADER #
01520  M00S01518.ssval   +++|      ITEM NEXT     I;               # INDEX TO *FCT* ORD TABLE #
01521  M00S01519.ssval   +++|      ITEM SMERR    B;               # FLAG RESULTS OF VLCMAP PROCESS #
01522  M00S01520.ssval   +++|      ITEM SW       U;               # AU WORD OFFSET #
01523  M00S01521.ssval   +++|      ITEM SP       U;               # AU POSITION IN WORD #
01524  M00S01522.ssval   +++|      ITEM START    I;               # START OF PROCESSING #
01525  M00S01523.ssval   +++|      ITEM TERMX    I;               # TERMINATION ORDINAL #
01526  M00S01524.ssval   +++|      ITEM ITEMP    I;               # TEMPORARY #
01527  M00S01525.ssval   +++|      ITEM I        I;               # INDUCTION VARIABLE #
01528  M00S01526.ssval   +++|      ITEM VPOINT   U;               # VOLUME HEAD POINTER #
01529  M00S01527.ssval   +++|
01530  M00S01528.ssval   +++|                                               CONTROL EJECT;
01531  M00S01529.ssval   +++|
01532  M00S01530.ssval   +++|#
01533  M00S01531.ssval   +++|*     INITIALIZE *VT* POINTERS.
01534  M00S01532.ssval   +++|#
01535  M00S01533.ssval   +++|
01536  M00S01534.ssval   +++|      P<VTLINK> = LOC(VTFIRST);      # BUILD STARTING LINK ADDRESS #
01537  M00S01535.ssval   +++|      VTL$GRT[0] = 0;
01538  M00S01536.ssval   +++|      VTL$AU[0] = 1;
01539  M00S01537.ssval   +++|      VTPTR = VTL$WORD[0] - 1;       # INITIALIZE ENTRY POINTER #
01540  M00S01538.ssval   +++|      GRTX = -1;
01541  M00S01539.ssval   +++|      EOCS = FALSE;
01542  M00S01540.ssval   +++|
01543  M00S01541.ssval   +++|#
01544  M00S01542.ssval   +++|*     PROCESS FOR EACH *FCT* RECORD.
01545  M00S01543.ssval   +++|#
01546  M00S01544.ssval   +++|
01547  M00S01545.ssval   +++|      START = GROUP * 16;
01548  M00S01546.ssval   +++|      TERMX = START + 15;
01549  M00S01547.ssval   +++|      SLOWFOR FCTORD = START STEP 1
01550  M00S01548.ssval   +++|        WHILE FCTORD LQ TERMX
01551  M00S01549.ssval   +++|        AND FCTORD LQ (PRM$ENTRC[SMINDX] + 15)
01552  M00S01550.ssval   +++|      DO
01553  M00S01551.ssval   +++|        BEGIN  # *FCT* PROCESSING #
01554  M00S01552.ssval   +++|        GRTX = GRTX + 1;
01555  M00S01553.ssval   +++|
01556  M00S01554.ssval   +++|#
01557  M00S01555.ssval   +++|*     READ THE *FCT* RECORD.
01558  M00S01556.ssval   +++|#
01559  M00S01557.ssval   +++|
01560  M00S01558.ssval   +++|      STAT = 0;
01561  M00S01559.ssval   +++|      FB$CWRD[0] = 0;
01562  M00S01560.ssval   +++|        CGETFCT(PAR$FM,SBINDX,SMINDX,FCTORD,LOC(VLFCTAREA),0,STAT);
01563  M00S01561.ssval   +++|        IF STAT NQ CMASTAT"NOERR"
01564  M00S01562.ssval   +++|        THEN
01565  M00S01563.ssval   +++|          BEGIN
01566  M00S01564.ssval   +++|          VLERROR(VE"CATR",ABRT);    # ABORT WITH MESSAGE #
01567  M00S01565.ssval   +++|          END
01568  M00S01566.ssval   +++|
01569  M00S01567.ssval   +++|        P<FCT> = LOC(VLFCTAREA);
01570  M00S01568.ssval   +++|        SMERR = FALSE;              # INITIALIZE TO NO *SM* ERROR #
01571  M00S01569.ssval   +++|
01572  M00S01570.ssval   +++|#
01573  M00S01571.ssval   +++|*     IF THE *AM* OPTION WAS SELECTED, PERFORM A SMMAP CHECK.
01574  M00S01572.ssval   +++|#
01575  M00S01573.ssval   +++|
01576  M00S01574.ssval   +++|        IF PAR$AM NQ 0
01577  M00S01575.ssval   +++|        THEN
01578  M00S01576.ssval   +++|          BEGIN
01579  M00S01577.ssval   +++|          VLCMAP(SMERR);
01580  M00S01578.ssval   +++|          END
01581  M00S01579.ssval   +++|
01582  M00S01580.ssval   +++|#
01583  M00S01581.ssval   +++|*     PROCESS FOR EACH AU OF THE *FCT* RECORD.
01584  M00S01582.ssval   +++|#
01585  M00S01583.ssval   +++|
01586  M00S01584.ssval   +++|        SLOWFOR AUINDX = 1 STEP 1 UNTIL INAVOT
01587  M00S01585.ssval   +++|        DO
01588  M00S01586.ssval   +++|          BEGIN  # AU PROCESSING #
01589  M00S01587.ssval   +++|
01590  M00S01588.ssval   +++|#
01591  M00S01589.ssval   +++|*     CALCULATE AU WORD AND OFFSET INTO *FCT* AREA.
01592  M00S01590.ssval   +++|#
01593  M00S01591.ssval   +++|
01594  M00S01592.ssval   +++|          SW = FCT$WD(AUINDX);
01595  M00S01593.ssval   +++|          SP = FCT$WP(AUINDX);
01596  M00S01594.ssval   +++|
01597  M00S01595.ssval   +++|          IF FCT$CAUF(SW,SP) EQ 0
01598  M00S01596.ssval   +++|          THEN                  # SAVE POINTER AT VOLUME START #
01599  M00S01597.ssval   +++|            BEGIN
01600  M00S01598.ssval   +++|            VPOINT = FCT$LINK(SW,SP);
01601  M00S01599.ssval   +++|            END
01602  M00S01600.ssval   +++|
01603  M00S01601.ssval   +++|#
01604  M00S01602.ssval   +++|*     BUILD *VT* ENTRY FOR THE AU.
01605  M00S01603.ssval   +++|#
01606  M00S01604.ssval   +++|
01607  M00S01605.ssval   +++|          VTEN$WORD[0] = 0;
01608  M00S01606.ssval   +++|          IF FCT$CSND[0] EQ "        "
01609  M00S01607.ssval   +++|            OR FCT$1ST[0] EQ 0
01610  M00S01608.ssval   +++|          THEN
01611  M00S01609.ssval   +++|
01612  M00S01610.ssval   +++|#
01613  M00S01611.ssval   +++|*     BUILD *VT* ENTRY WHEN NO CARTRIDGE.
01614  M00S01612.ssval   +++|#
01615  M00S01613.ssval   +++|
01616  M00S01614.ssval   +++|            BEGIN
01617  M00S01615.ssval   +++|            VTEN$NONE[0] = TRUE;
01618  M00S01616.ssval   +++|            EOCS = FALSE;
01619  M00S01617.ssval   +++|            VPOINT = 0;
01620  M00S01618.ssval   +++|            END
01621  M00S01619.ssval   +++|
01622  M00S01620.ssval   +++|          ELSE
01623  M00S01621.ssval   +++|
01624  M00S01622.ssval   +++|#
01625  M00S01623.ssval   +++|*     BUILD *VT* ENTRY WHEN CARTRIDGE EXISTS.
01626  M00S01624.ssval   +++|#
01627  M00S01625.ssval   +++|
01628  M00S01626.ssval   +++|            BEGIN  # CARTRIDGE EXISTS #
01629  M00S01627.ssval   +++|            VTEN$SME[0] = SMERR;
01630  M00S01628.ssval   +++|            VTEN$INHB[0] = FCT$IAF[0];
01631  M00S01629.ssval   +++|            VTEN$LOST[0] = FCT$LCF[0];
01632  M00S01630.ssval   +++|            VTEN$EWPE[0] = FCT$EEF[0];
01633  M00S01631.ssval   +++|            VTEN$CONR[0] = FCT$AUCF(SW,SP);
01634  M00S01632.ssval   +++|            VTEN$FROZR[0] = FCT$FRCF(SW,SP);
01635  M00S01633.ssval   +++|            VTEN$SOFR[0] = FCT$SFF(SW,SP);
01636  M00S01634.ssval   +++|            VTEN$ALOCR[0] = FCT$FBF(SW,SP);
01637  M00S01635.ssval   +++|            VTEN$FCF[0] = FCT$FCF[0];
01638  M00S01636.ssval   +++|
01639  M00S01637.ssval   +++|#
01640  M00S01638.ssval   +++|*     PROCESS AN ALLOCATED HEAD OF VOLUME *AU*.
01641  M00S01639.ssval   +++|#
01642  M00S01640.ssval   +++|
01643  M00S01641.ssval   +++|            IF VTEN$ALOC[0] AND FCT$CAUF(SW,SP) EQ 0
01644  M00S01642.ssval   +++|            THEN
01645  M00S01643.ssval   +++|              BEGIN  # AU ALLOCATED #
01646  M00S01644.ssval   +++|              ITEMP = FCT$CC(SW,SP);
01647  M00S01645.ssval   +++|              IF ITEMP EQ CHAINCON"FIRST"
01648  M00S01646.ssval   +++|              THEN
01649  M00S01647.ssval   +++|                BEGIN
01650  M00S01648.ssval   +++|                VTEN$HOC[0] = TRUE;  # HEAD OF CHAIN #
01651  M00S01649.ssval   +++|                END
01652  M00S01650.ssval   +++|
01653  M00S01651.ssval   +++|              IF ITEMP EQ CHAINCON"LAST"
01654  M00S01652.ssval   +++|              THEN
01655  M00S01653.ssval   +++|                BEGIN
01656  M00S01654.ssval   +++|                EOCS = TRUE;
01657  M00S01655.ssval   +++|                END
01658  M00S01656.ssval   +++|
01659  M00S01657.ssval   +++|              IF ITEMP EQ CHAINCON"ONLY"
01660  M00S01658.ssval   +++|              THEN
01661  M00S01659.ssval   +++|                BEGIN
01662  M00S01660.ssval   +++|                VTEN$HOC[0] = TRUE;  # SET BOTH HEAD AND #
01663  M00S01661.ssval   +++|                EOCS = TRUE;
01664  M00S01662.ssval   +++|                END
01665  M00S01663.ssval   +++|
01666  M00S01664.ssval   +++|#
01667  M00S01665.ssval   +++|*     IF NOT THE END OF THE CHAIN, SET LINK TO NEXT IN CHAIN.
01668  M00S01666.ssval   +++|#
01669  M00S01667.ssval   +++|
01670  M00S01668.ssval   +++|              IF NOT EOCS
01671  M00S01669.ssval   +++|              THEN
01672  M00S01670.ssval   +++|                BEGIN  # LINK TO THE NEXT AU #
01673  M00S01671.ssval   +++|                ITEMP = FCT$CLKOCL(SW,SP);
01674  M00S01672.ssval   +++|                LINKHS = GRTX;
01675  M00S01673.ssval   +++|                IF ITEMP NQ 0
01676  M00S01674.ssval   +++|                THEN
01677  M00S01675.ssval   +++|                  BEGIN
01678  M00S01676.ssval   +++|                  VTEN$OCL[0] = ITEMP;
01679  M00S01677.ssval   +++|                  LINKHS = FCT$OCL[0];
01680  M00S01678.ssval   +++|                  IF ITEMP EQ 2
01681  M00S01679.ssval   +++|                  THEN
01682  M00S01680.ssval   +++|                    BEGIN
01683  M00S01681.ssval   +++|                    LINKHS = FCT$OCL1[0];
01684  M00S01682.ssval   +++|                    END
01685  M00S01683.ssval   +++|
01686  M00S01684.ssval   +++|                  ELSE
01687  M00S01685.ssval   +++|                    BEGIN
01688  M00S01686.ssval   +++|                    IF ITEMP EQ 3
01689  M00S01687.ssval   +++|                    THEN
01690  M00S01688.ssval   +++|                      BEGIN
01691  M00S01689.ssval   +++|                      LINKHS = FCT$OCL2[0];
01692  M00S01690.ssval   +++|                      END
01693  M00S01691.ssval   +++|
01694  M00S01692.ssval   +++|                    END
01695  M00S01693.ssval   +++|
01696  M00S01694.ssval   +++|                  END
01697  M00S01695.ssval   +++|
01698  M00S01696.ssval   +++|                END  # LINK TO THE NEXT AU #
01699  M00S01697.ssval   +++|
01700  M00S01698.ssval   +++|              END  # AU ALLOCATED #
01701  M00S01699.ssval   +++|
01702  M00S01700.ssval   +++|            IF VTEN$ALOC[0] AND FCT$LEN(SW,SP) NQ 0
01703  M00S01701.ssval   +++|            THEN            # *AU*-S REMAIN IN VOLUME #
01704  M00S01702.ssval   +++|              BEGIN
01705  M00S01703.ssval   +++|              VTEN$LINKL[0] = AUINDX + 1;
01706  M00S01704.ssval   +++|              VTEN$LINKH[0] = GRTX;
01707  M00S01705.ssval   +++|              END
01708  M00S01706.ssval   +++|
01709  M00S01707.ssval   +++|            IF VTEN$ALOC[0] AND FCT$LEN(SW,SP) EQ 0
01710  M00S01708.ssval   +++|            THEN
01711  M00S01709.ssval   +++|              BEGIN
01712  M00S01710.ssval   +++|              VTEN$LINKL[0] = VPOINT;
01713  M00S01711.ssval   +++|              VTEN$LINKH[0] = GRTX;
01714  M00S01712.ssval   +++|              VTEN$EOC[0] = EOCS;
01715  M00S01713.ssval   +++|              IF EOCS
01716  M00S01714.ssval   +++|              THEN
01717  M00S01715.ssval   +++|                BEGIN
01718  M00S01716.ssval   +++|                VTEN$LINKH[0] = 0;
01719  M00S01717.ssval   +++|                END
01720  M00S01718.ssval   +++|
01721  M00S01719.ssval   +++|              IF NOT EOCS
01722  M00S01720.ssval   +++|              THEN
01723  M00S01721.ssval   +++|                BEGIN
01724  M00S01722.ssval   +++|                VTEN$LINKH[0] = LINKHS;
01725  M00S01723.ssval   +++|                END
01726  M00S01724.ssval   +++|
01727  M00S01725.ssval   +++|              EOCS = FALSE;
01728  M00S01726.ssval   +++|              END
01729  M00S01727.ssval   +++|
01730  M00S01728.ssval   +++|            END  # CARTRIDGE EXISTS #
01731  M00S01729.ssval   +++|
01732  M00S01730.ssval   +++|#
01733  M00S01731.ssval   +++|*     PUT *VT* ENTRY INTO TABLE IN MEMORY.
01734  M00S01732.ssval   +++|#
01735  M00S01733.ssval   +++|
01736  M00S01734.ssval   +++|          VTPTR = VTPTR + 1;         # ADDRESS FOR NEXT ENTRY #
01737  M00S01735.ssval   +++|
01738  M00S01736.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # PUT ENTRY IN TABLE #
01739  M00S01737.ssval   +++|
01740  M00S01738.ssval   +++|          END  # AU PROCESSING #
01741  M00S01739.ssval   +++|
01742  M00S01740.ssval   +++|        VTPTR = VTPTR + 2048 - INAVOT;
01743  M00S01741.ssval   +++|        END  # *FCT* PROCESSING #
01744  M00S01742.ssval   +++|
01745  M00S01743.ssval   +++|#
01746  M00S01744.ssval   +++|*     MARK END OF ENTRIES IN *VT* TABLE.
01747  M00S01745.ssval   +++|#
01748  M00S01746.ssval   +++|
01749  M00S01747.ssval   +++|      VTLAST = VTPTR;                # SAVE END OF *VT* TABLE #
01750  M00S01748.ssval   +++|
01751  M00S01749.ssval   +++|      RETURN;
01752  M00S01750.ssval   +++|
01753  M00S01751.ssval   +++|      END  # VLBLDVT #
01754  M00S01752.ssval   +++|
01755  M00S01753.ssval   +++|    TERM
01756  M00S01754.ssval   +++|PROC VLCFS;
01757  M00S01755.ssval   +++|# TITLE VLCFS - CHAIN FRAGMENT SCAN.                                  #
01758  M00S01756.ssval   +++|
01759  M00S01757.ssval   +++|
01760  M00S01758.ssval   +++|      BEGIN  # VLCFS #
01761  M00S01759.ssval   +++|
01762  M00S01760.ssval   +++|#
01763  M00S01761.ssval   +++|**    VLCFS - CHAIN FRAGMENT SCAN.
01764  M00S01762.ssval   +++|*
01765  M00S01763.ssval   +++|*     *VLCFS* SCANS ALL ENTRIES IN THE *VT* TABLE TO DETECT CHAIN
01766  M00S01764.ssval   +++|*     FRAGMENTS.  CHAIN FRAGMENTS ARE *VT* ENTRIES THAT ARE ALLOCATED
01767  M00S01765.ssval   +++|*     BUT ARE NOT MARKED AS MEMBERS OF NORMAL CHAINS (SEE *VLNCS*).
01768  M00S01766.ssval   +++|*
01769  M00S01767.ssval   +++|*     PROC VLCFS
01770  M00S01768.ssval   +++|*
01771  M00S01769.ssval   +++|*     ENTRY     (VTFIRST)     - INDEX TO FIRST ENTRY IN *VT*.
01772  M00S01770.ssval   +++|*               (VTLAST)      - INDEX TO LAST ENTRY IN *VT*.
01773  M00S01771.ssval   +++|*               ARRAY VTTABLE - VALIDATION TABLE ENTRIES.
01774  M00S01772.ssval   +++|*
01775  M00S01773.ssval   +++|*     EXIT      THE FOLLOWING FIELDS IN THE *VT* ENTRIES MAY BE
01776  M00S01774.ssval   +++|*               UPDATED IF FRAGMENTS ARE DETECTED.
01777  M00S01775.ssval   +++|*               . VTEN$POINT - INDEX TO HEAD OF CHAIN.
01778  M00S01776.ssval   +++|*               . VTEN$SOF   - START OF FRAGMENT FLAG SET.
01779  M00S01777.ssval   +++|*               . VTEN$ILL   - SET IF CHAIN IS ILL-FORMED.
01780  M00S01778.ssval   +++|*               . VTEN$INTC  - SET IF CHAIN IS INTERSECTING.
01781  M00S01779.ssval   +++|*
01782  M00S01780.ssval   +++|*               THE INTERSECTING CHAIN DETAIL LINES ARE ISSUED
01783  M00S01781.ssval   +++|*               TO THE REPORT FILE IF INTERSECTIONS ARE DETECTED.
01784  M00S01782.ssval   +++|*
01785  M00S01783.ssval   +++|*     NOTES     AN ENTRY IS MARKED AS BEING ON A CHAIN BY
01786  M00S01784.ssval   +++|*               SETTING THE VTEN$POINT FIELD EQUAL TO *HOC* INDEX.
01787  M00S01785.ssval   +++|*
01788  M00S01786.ssval   +++|*               THE CHAIN IS FOLLOWED UNTIL -
01789  M00S01787.ssval   +++|*                . AN END-OF-CHAIN ENTRY IS DETECTED.
01790  M00S01788.ssval   +++|*                . AN ILL-FORMED CHAIN IS DETECTED.
01791  M00S01789.ssval   +++|*                . AN INTERSECTING CHAIN IS DETECTED.
01792  M00S01790.ssval   +++|*
01793  M00S01791.ssval   +++|*               AN ILL-FORMED CHAIN HAS AN ENTRY THAT LINKS TO ANOTHER
01794  M00S01792.ssval   +++|*               ENTRY ALREADY ON THE CHAIN OR LINKS TO AN ENTRY
01795  M00S01793.ssval   +++|*               THAT IS NOT ALLOCATED OR HAS A LINK THAT IS NOT ZERO
01796  M00S01794.ssval   +++|*               WHEN THE *EOC* IS SET.
01797  M00S01795.ssval   +++|*
01798  M00S01796.ssval   +++|*               AN INTERSECTING CHAIN IS ONE WHOSE ENTRY LINKS TO AN
01799  M00S01797.ssval   +++|*               ENTRY ALREADY ON A DIFFERENT CHAIN.
01800  M00S01798.ssval   +++|*
01801  M00S01799.ssval   +++|*               IF A FRAGMENT CHAIN RUNS INTO ANOTHER FRAGMENT CHAIN,
01802  M00S01800.ssval   +++|*               THE SECOND FRAGMENT IS CONSIDERED A TAIL OF THE
01803  M00S01801.ssval   +++|*               FIRST.  IT IS FOLLOWED AND RE-MARKED SO THAT ITS
01804  M00S01802.ssval   +++|*               POINTER FIELD *VTEN$POINT* CONTAINS THE INDEX OF THE
01805  M00S01803.ssval   +++|*               FIRST START OF FRAGMENT ENTRY.
01806  M00S01804.ssval   +++|*
01807  M00S01805.ssval   +++|#
01808  M00S01806.ssval   +++|
01809  M00S01807.ssval   +++|#
01810  M00S01808.ssval   +++|****  PROC VLCFS - XREF LIST BEGIN.
01811  M00S01809.ssval   +++|#
01812  M00S01810.ssval   +++|
01813  M00S01811.ssval   +++|      XREF
01814  M00S01812.ssval   +++|        BEGIN
01815  M00S01813.ssval   +++|        PROC VLBICT;                 # INTERSECTING CHAIN REPORT #
01816  M00S01814.ssval   +++|        END
01817  M00S01815.ssval   +++|
01818  M00S01816.ssval   +++|#
01819  M00S01817.ssval   +++|****  PROC VLCFS - XREF LIST END.
01820  M00S01818.ssval   +++|#
01821  M00S01819.ssval   +++|
01822  M00S01820.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
01823  M00S01821.ssval   +++|
01824  M00S01822.ssval   +++|*CALL COMBFAS
01825  M00S01823.ssval   +++|*CALL COMTVLD
01826  M00S01824.ssval   +++|*CALL COMTVLV
01827  M00S01825.ssval   +++|
01828  M00S01826.ssval   +++|
01829  M00S01827.ssval   +++|      STATUS CHAIN                   # CHAIN STATUS #
01830  M00S01828.ssval   +++|        OK,                          # GOOD CHAIN #
01831  M00S01829.ssval   +++|        ILL,                         # ILL-FORMED CHAIN #
01832  M00S01830.ssval   +++|        INTC;                        # INTERSECTING CHAIN #
01833  M00S01831.ssval   +++|
01834  M00S01832.ssval   +++|      ITEM ENDCHAIN   B;             # END OF CHAIN FLAG #
01835  M00S01833.ssval   +++|      ITEM HOCSTAT    S : CHAIN;     # CHAIN STATUS #
01836  M00S01834.ssval   +++|      ITEM I          I;             # TEMPORARY VARIABLE #
01837  M00S01835.ssval   +++|      ITEM TAIL       B;             # TAIL FLAG #
01838  M00S01836.ssval   +++|      ITEM TAILPTR    I;             # *VT* INDEX OF A TAIL #
01839  M00S01837.ssval   +++|
01840  M00S01838.ssval   +++|                                               CONTROL EJECT;
01841  M00S01839.ssval   +++|
01842  M00S01840.ssval   +++|#
01843  M00S01841.ssval   +++|*     SCAN *VT* FOR ALLOCATED ENTRIES NOT ON CHAINS.  THIS VALIDATION
01844  M00S01842.ssval   +++|*     STEP IS TO IDENTIFY PROBLEMS WITH AU-S THAT ARE NOT ON VALID
01845  M00S01843.ssval   +++|*     CHAINS.
01846  M00S01844.ssval   +++|#
01847  M00S01845.ssval   +++|
01848  M00S01846.ssval   +++|      SLOWFOR I = VTFIRST STEP 1 UNTIL VTLAST
01849  M00S01847.ssval   +++|      DO
01850  M00S01848.ssval   +++|        BEGIN  # *VT* ENTRY #
01851  M00S01849.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *VT* ENTRY #
01852  M00S01850.ssval   +++|
01853  M00S01851.ssval   +++|#
01854  M00S01852.ssval   +++|*     FIND AN ALLOCATED AU THAT IS NOT ON A CHAIN.
01855  M00S01853.ssval   +++|*     IT IS DEFINED AS A FRAGMENT CHAIN.  IF THE ENTRY IS ALREADY
01856  M00S01854.ssval   +++|*     ASSIGNED TO A CHAIN, THE VTEN$POINT IS SET.
01857  M00S01855.ssval   +++|#
01858  M00S01856.ssval   +++|
01859  M00S01857.ssval   +++|        IF NOT VTEN$ALOC[0] OR VTEN$POINT[0] NQ 0
01860  M00S01858.ssval   +++|        THEN
01861  M00S01859.ssval   +++|          BEGIN
01862  M00S01860.ssval   +++|          TEST I;                    # SKIP, NOT A FRAGMENT #
01863  M00S01861.ssval   +++|          END
01864  M00S01862.ssval   +++|
01865  M00S01863.ssval   +++|
01866  M00S01864.ssval   +++|        VTEN$SOF[0] = TRUE;          # SET START OF FRAGMENT FLAG #
01867  M00S01865.ssval   +++|
01868  M00S01866.ssval   +++|#
01869  M00S01867.ssval   +++|*     INITIALIZE FIELDS USED TO FOLLOW THE FRAGMENT CHAIN.
01870  M00S01868.ssval   +++|*     THE VARIABLE I = INDEX OF FRAGMENT *HOC*.
01871  M00S01869.ssval   +++|#
01872  M00S01870.ssval   +++|
01873  M00S01871.ssval   +++|        VTPTR = I;                   # START AT THIS *HOC* #
01874  M00S01872.ssval   +++|        ENDCHAIN = FALSE;
01875  M00S01873.ssval   +++|        HOCSTAT = S"OK";
01876  M00S01874.ssval   +++|        TAIL = FALSE;
01877  M00S01875.ssval   +++|        TAILPTR = 0;
01878  M00S01876.ssval   +++|
01879  M00S01877.ssval   +++|#
01880  M00S01878.ssval   +++|*     PROCESS EACH ENTRY IN FRAGMENT STARTING WITH *HOC* ENTRY.
01881  M00S01879.ssval   +++|#
01882  M00S01880.ssval   +++|
01883  M00S01881.ssval   +++|        REPEAT WHILE NOT ENDCHAIN
01884  M00S01882.ssval   +++|        DO                           # SCAN FRAGMENT CHAIN #
01885  M00S01883.ssval   +++|          BEGIN  # FRAGMENT PROCESSING #
01886  M00S01884.ssval   +++|
01887  M00S01885.ssval   +++|          IF (VTEN$POINT[0] EQ 0) OR (VTEN$POINT[0] EQ TAILPTR)
01888  M00S01886.ssval   +++|          THEN
01889  M00S01887.ssval   +++|
01890  M00S01888.ssval   +++|#
01891  M00S01889.ssval   +++|*     ENTRY BELONGS TO THIS CHAIN (EITHER A NEW ENTRY OR A TAIL ENTRY).
01892  M00S01890.ssval   +++|#
01893  M00S01891.ssval   +++|
01894  M00S01892.ssval   +++|            BEGIN  # ADD ENTRY TO THE FRAGMENT CHAIN #
01895  M00S01893.ssval   +++|            VTEN$POINT[0] = I;
01896  M00S01894.ssval   +++|            IF NOT VTEN$ALOC[0]
01897  M00S01895.ssval   +++|            THEN
01898  M00S01896.ssval   +++|              BEGIN
01899  M00S01897.ssval   +++|              VTEN$SOF[0] = TRUE;
01900  M00S01898.ssval   +++|              END
01901  M00S01899.ssval   +++|
01902  M00S01900.ssval   +++|            IF NOT VTEN$ALOC[0] OR VTEN$EOC[0] AND VTEN$LINK[0] NQ 0
01903  M00S01901.ssval   +++|              THEN
01904  M00S01902.ssval   +++|              BEGIN
01905  M00S01903.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
01906  M00S01904.ssval   +++|              END
01907  M00S01905.ssval   +++|
01908  M00S01906.ssval   +++|            END  # ADD ENTRY TO THE FRAGMENT CHAIN #
01909  M00S01907.ssval   +++|
01910  M00S01908.ssval   +++|          ELSE
01911  M00S01909.ssval   +++|
01912  M00S01910.ssval   +++|#
01913  M00S01911.ssval   +++|*     ENTRY ALREADY ON SOME OTHER CHAIN.
01914  M00S01912.ssval   +++|#
01915  M00S01913.ssval   +++|
01916  M00S01914.ssval   +++|            BEGIN  # ENTRY ON A CHAIN #
01917  M00S01915.ssval   +++|            IF VTEN$SOF[0] AND (VTPTR NQ I)  # NOT LOOPING #
01918  M00S01916.ssval   +++|              AND VTEN$ALOC[0] AND VTPTR EQ VTEN$POINT[0]
01919  M00S01917.ssval   +++|            THEN
01920  M00S01918.ssval   +++|
01921  M00S01919.ssval   +++|#
01922  M00S01920.ssval   +++|*     THE OTHER CHAIN IS A TAIL.  THE CHAIN BEING FOLLOWED POINTS TO
01923  M00S01921.ssval   +++|*     THE BEGINNING OF A FRAGMENT CHAIN.  MAKE THE TWO CHAINS INTO ONE
01924  M00S01922.ssval   +++|*     FRAGMENT CHAIN BY FOLLOWING THIS TAIL AND UPDATING THE
01925  M00S01923.ssval   +++|*     VTEN$POINT.
01926  M00S01924.ssval   +++|#
01927  M00S01925.ssval   +++|
01928  M00S01926.ssval   +++|              BEGIN  # START TAIL #
01929  M00S01927.ssval   +++|              TAIL = TRUE;
01930  M00S01928.ssval   +++|              VTEN$SOF[0] = FALSE;
01931  M00S01929.ssval   +++|              VTEN$INTC[0] = FALSE;
01932  M00S01930.ssval   +++|              VTEN$ILL[0] = FALSE;
01933  M00S01931.ssval   +++|              TAILPTR = VTEN$POINT[0];  # MARK THIS ONE, MARK REST IN
01934  M00S01932.ssval   +++|                                          MAIN LOOP #
01935  M00S01933.ssval   +++|              VTEN$POINT[0] = I;
01936  M00S01934.ssval   +++|              END  # START TAIL #
01937  M00S01935.ssval   +++|
01938  M00S01936.ssval   +++|            ELSE
01939  M00S01937.ssval   +++|
01940  M00S01938.ssval   +++|#
01941  M00S01939.ssval   +++|*     CHAIN INTERSECTS OR IS ILL-FORMED.
01942  M00S01940.ssval   +++|#
01943  M00S01941.ssval   +++|
01944  M00S01942.ssval   +++|              BEGIN  # PROBLEM CHAIN #
01945  M00S01943.ssval   +++|              VTEN$INTS[0] = TRUE;
01946  M00S01944.ssval   +++|              IF VTEN$POINT[0] EQ I
01947  M00S01945.ssval   +++|              THEN                   # THE CHAIN IS ILL-FORMED #
01948  M00S01946.ssval   +++|                BEGIN
01949  M00S01947.ssval   +++|                HOCSTAT = S"ILL";
01950  M00S01948.ssval   +++|                VTEN$LOOP[0] = TRUE;
01951  M00S01949.ssval   +++|                END
01952  M00S01950.ssval   +++|
01953  M00S01951.ssval   +++|              ELSE                   # THE CHAIN INTERSECTS #
01954  M00S01952.ssval   +++|                BEGIN
01955  M00S01953.ssval   +++|                HOCSTAT = S"INTC";
01956  M00S01954.ssval   +++|                VLBICT(I,VTEN$POINT[0]);  # REPORT CHAINS #
01957  M00S01955.ssval   +++|                END
01958  M00S01956.ssval   +++|
01959  M00S01957.ssval   +++|              END  # PROBLEM CHAIN #
01960  M00S01958.ssval   +++|
01961  M00S01959.ssval   +++|            END  # ENTRY ON A CHAIN #
01962  M00S01960.ssval   +++|
01963  M00S01961.ssval   +++|
01964  M00S01962.ssval   +++|
01965  M00S01963.ssval   +++|#
01966  M00S01964.ssval   +++|*     UPDATE THE AU ENTRY.
01967  M00S01965.ssval   +++|#
01968  M00S01966.ssval   +++|
01969  M00S01967.ssval   +++|          VT$ITEM[VTPTR] = VTEN$WORD[0];  # UPDATE ENTRY #
01970  M00S01968.ssval   +++|
01971  M00S01969.ssval   +++|#
01972  M00S01970.ssval   +++|*     AN END OF CHAIN CONDITION IS SET HERE IF:
01973  M00S01971.ssval   +++|*       1) *EOC* FLAG IS SET, OR
01974  M00S01972.ssval   +++|*       2) A LINKAGE PROBLEM HAS BEEN DETECTED.
01975  M00S01973.ssval   +++|#
01976  M00S01974.ssval   +++|
01977  M00S01975.ssval   +++|          ENDCHAIN = VTEN$EOC[0] OR HOCSTAT NQ S"OK";  # BAD CHAIN #
01978  M00S01976.ssval   +++|
01979  M00S01977.ssval   +++|#
01980  M00S01978.ssval   +++|*     GET LINK TO NEXT AU IF NOT AT END OF CHAIN.
01981  M00S01979.ssval   +++|#
01982  M00S01980.ssval   +++|
01983  M00S01981.ssval   +++|          IF NOT ENDCHAIN
01984  M00S01982.ssval   +++|          THEN
01985  M00S01983.ssval   +++|            BEGIN  # GET NEXT LINK #
01986  M00S01984.ssval   +++|            VTPTR = VTEN$LINK[0];
01987  M00S01985.ssval   +++|
01988  M00S01986.ssval   +++|            IF VTPTR LS VTFIRST OR VTPTR GR VTLAST
01989  M00S01987.ssval   +++|            THEN                     # LINK IS BAD #
01990  M00S01988.ssval   +++|              BEGIN
01991  M00S01989.ssval   +++|              HOCSTAT = S"ILL";      # ILL-FORMED CHAIN #
01992  M00S01990.ssval   +++|              ENDCHAIN = TRUE;
01993  M00S01991.ssval   +++|              END
01994  M00S01992.ssval   +++|
01995  M00S01993.ssval   +++|            END  # GET NEXT LINK #
01996  M00S01994.ssval   +++|
01997  M00S01995.ssval   +++|#
01998  M00S01996.ssval   +++|*     GET NEXT AU IN CHAIN.
01999  M00S01997.ssval   +++|#
02000  M00S01998.ssval   +++|
02001  M00S01999.ssval   +++|          IF NOT ENDCHAIN
02002  M00S02000.ssval   +++|          THEN
02003  M00S02001.ssval   +++|            BEGIN
02004  M00S02002.ssval   +++|            VTEN$WORD[0] = VT$ITEM[VTPTR];  # NEXT IN CHAIN #
02005  M00S02003.ssval   +++|            END
02006  M00S02004.ssval   +++|
02007  M00S02005.ssval   +++|          END  # FRAGMENT PROCESSING #
02008  M00S02006.ssval   +++|
02009  M00S02007.ssval   +++|#
02010  M00S02008.ssval   +++|*     UPDATE OTHER HEAD OF CHAIN IF INTERSECTING.
02011  M00S02009.ssval   +++|#
02012  M00S02010.ssval   +++|
02013  M00S02011.ssval   +++|        IF HOCSTAT EQ S"INTC"
02014  M00S02012.ssval   +++|        THEN
02015  M00S02013.ssval   +++|          BEGIN
02016  M00S02014.ssval   +++|          VTEN$WORD[0] = VT$ITEM[VTEN$POINT[0]];  # GET *HOC* ENTRY #
02017  M00S02015.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING FLAG #
02018  M00S02016.ssval   +++|          VT$ITEM[VTEN$POINT[0]] = VTEN$WORD[0];  # STORE *HOC* ENTRY #
02019  M00S02017.ssval   +++|          END
02020  M00S02018.ssval   +++|
02021  M00S02019.ssval   +++|#
02022  M00S02020.ssval   +++|*     UPDATE HEAD OF CHAIN ENTRY.
02023  M00S02021.ssval   +++|#
02024  M00S02022.ssval   +++|
02025  M00S02023.ssval   +++|        VTEN$WORD[0] = VT$ITEM[I];   # GET *HOC* ENTRY #
02026  M00S02024.ssval   +++|        IF HOCSTAT EQ S"ILL"
02027  M00S02025.ssval   +++|        THEN
02028  M00S02026.ssval   +++|          BEGIN
02029  M00S02027.ssval   +++|          VTEN$ILL[0] = TRUE;        # SET ILL-FORMED FLAG #
02030  M00S02028.ssval   +++|          END
02031  M00S02029.ssval   +++|
02032  M00S02030.ssval   +++|        IF HOCSTAT EQ S"INTC"
02033  M00S02031.ssval   +++|        THEN
02034  M00S02032.ssval   +++|          BEGIN
02035  M00S02033.ssval   +++|          VTEN$INTC[0] = TRUE;       # SET INTERSECTING FLAG #
02036  M00S02034.ssval   +++|          END
02037  M00S02035.ssval   +++|
02038  M00S02036.ssval   +++|        VT$ITEM[I] = VTEN$WORD[0];   # STORE *HOC* ENTRY #
02039  M00S02037.ssval   +++|
02040  M00S02038.ssval   +++|        END  # *VT* ENTRY #
02041  M00S02039.ssval   +++|
02042  M00S02040.ssval   +++|      END  # VLCFS #
02043  M00S02041.ssval   +++|
02044  M00S02042.ssval   +++|    TERM
02045  M00S02043.ssval   +++|PROC VLCMAP(CMERR);
02046  M00S02044.ssval   +++|# TITLE VLCMAP - *SM* MAP LOOKUP.                                    #
02047  M00S02045.ssval   +++|
02048  M00S02046.ssval   +++|
02049  M00S02047.ssval   +++|      BEGIN  # VLCMAP #
02050  M00S02048.ssval   +++|
02051  M00S02049.ssval   +++|#
02052  M00S02050.ssval   +++|**    VLCMAP - SMMAP LOOKUP.
02053  M00S02051.ssval   +++|*
02054  M00S02052.ssval   +++|*     *VLCMAP* READS THE SMMAP ENTRY FOR THE GIVEN Y,Z COORDINATES
02055  M00S02053.ssval   +++|*     IN THE *FCT* RECORD AND VERIFIES THAT THE ENTRY IS VALID.
02056  M00S02054.ssval   +++|*
02057  M00S02055.ssval   +++|*     PROC VLCMAP(CMERR)
02058  M00S02056.ssval   +++|*
02059  M00S02057.ssval   +++|*     ENTRY     (SMINDX)         - *SM* INDEX.
02060  M00S02058.ssval   +++|*               (FCTORD)          - *FCT* ORDINAL.
02061  M00S02059.ssval   +++|*               (PAR$FM)          - FAMILY.
02062  M00S02060.ssval   +++|*               (SBINDX)          - SUBFAMILY INDEX.
02063  M00S02061.ssval   +++|*               (ARRAY VLFCTAREA) - CONTAINS *FCT* RECORD.
02064  M00S02062.ssval   +++|*
02065  M00S02063.ssval   +++|*     EXIT      (CMERR)        = TRUE IF ERROR DETECTED.
02066  M00S02064.ssval   +++|*                              = FALSE IF NO ERROR.
02067  M00S02065.ssval   +++|*               (ARRAY VLCMAP) - BIT SET FOR GIVEN Y, Z IF THE
02068  M00S02066.ssval   +++|*                                SMMAP/FCT ENTRIES POINT TO EACH
02069  M00S02067.ssval   +++|*                                OTHER.
02070  M00S02068.ssval   +++|*
02071  M00S02069.ssval   +++|*               IF AN ERROR IS DETECTED, A PROBLEM FILE
02072  M00S02070.ssval   +++|*               RECORD (RT"FCT") IS WRITTEN.
02073  M00S02071.ssval   +++|*
02074  M00S02072.ssval   +++|*     MESSAGES  * SMMAP READ ERROR.*
02075  M00S02073.ssval   +++|*
02076  M00S02074.ssval   +++|*     NOTES     AN ERROR IN THE ENTRY IS DETECTED IF -
02077  M00S02075.ssval   +++|*               . IT IS NOT ASSIGNED TO THE SUBFAMILY.
02078  M00S02076.ssval   +++|*               . FAMILY IN ENTRY IS WRONG.
02079  M00S02077.ssval   +++|*               . SUBFAMILY IS WRONG.
02080  M00S02078.ssval   +++|*               . *FCT* ORDINAL IS WRONG.
02081  M00S02079.ssval   +++|*               . *CSN* IS WRONG.
02082  M00S02080.ssval   +++|*
02083  M00S02081.ssval   +++|#
02084  M00S02082.ssval   +++|
02085  M00S02083.ssval   +++|      ITEM CMERR      B;             # INDICATES *SM* MAP ERROR #
02086  M00S02084.ssval   +++|
02087  M00S02085.ssval   +++|#
02088  M00S02086.ssval   +++|****  PROC VLCMAP - XREF LIST BEGIN.
02089  M00S02087.ssval   +++|#
02090  M00S02088.ssval   +++|
02091  M00S02089.ssval   +++|      XREF
02092  M00S02090.ssval   +++|        BEGIN
02093  M00S02091.ssval   +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
02094  M00S02092.ssval   +++|                                       CALLER #
02095  M00S02093.ssval   +++|        PROC VLERROR;                # ISSUE ERROR MESSAGE #
02096  M00S02094.ssval   +++|        PROC VLWPROB;                # WRITE PROBLEM FILE RECORD #
02097  M00S02095.ssval   +++|        PROC ZFILL;                  # ZERO FILLS A CHARACTER ITEM #
02098  M00S02096.ssval   +++|        END
02099  M00S02097.ssval   +++|
02100  M00S02098.ssval   +++|#
02101  M00S02099.ssval   +++|****  PROC VLCMAP - XREF LIST END.
02102  M00S02100.ssval   +++|#
02103  M00S02101.ssval   +++|
02104  M00S02102.ssval   +++|      DEF LISTCON #0#;               # TURN OFF COMMON DECK LISTING #
02105  M00S02103.ssval   +++|
02106  M00S02104.ssval   +++|*CALL COMBFAS
02107  M00S02105.ssval   +++|*CALL COMBCMD
02108  M00S02106.ssval   +++|*CALL COMBCMS
02109  M00S02107.ssval   +++|*CALL COMBMAP
02110  M00S02108.ssval   +++|*CALL COMBMCT
02111  M00S02109.ssval   +++|*CALL COMTVLD
02112  M00S02110.ssval   +++|*CALL COMTVLF
02113  M00S02111.ssval   +++|*CALL COMTVLM
02114  M00S02112.ssval   +++|
02115  M00S02113.ssval   +++|
02116  M00S02114.ssval   +++|      ITEM ORD        U;             # TO CALCULATE *SM* MAP ORDINAL #
02117  M00S02115.ssval   +++|
02118  M00S02116.ssval   +++|                                               CONTROL EJECT;
02119  M00S02117.ssval   +++|
02120  M00S02118.ssval   +++|
02121  M00S02119.ssval   +++|      P<FCT> = LOC(VLFCTAREA);
02122  M00S02120.ssval   +++|
02123  M00S02121.ssval   +++|#
02124  M00S02122.ssval   +++|*     SAVE Y AND Z COORDINATES.
02125  M00S02123.ssval   +++|#
02126  M00S02124.ssval   +++|
02127  M00S02125.ssval   +++|      Y = FCT$Y[0];
02128  M00S02126.ssval   +++|      Z = FCT$Z[0];
02129  M00S02127.ssval   +++|
02130  M00S02128.ssval   +++|      CMERR = FALSE;                 # ASSUME NO ERROR #
02131  M00S02129.ssval   +++|
02132  M00S02130.ssval   +++|#
02133  M00S02131.ssval   +++|*     IF *FCT* DOES NOT POINT TO A SMMAP ENTRY, RETURN.
02134  M00S02132.ssval   +++|#
02135  M00S02133.ssval   +++|
02136  M00S02134.ssval   +++|      IF Y EQ 0 AND Z EQ 0
02137  M00S02135.ssval   +++|      THEN
02138  M00S02136.ssval   +++|        BEGIN
02139  M00S02137.ssval   +++|        RETURN;
02140  M00S02138.ssval   +++|        END
02141  M00S02139.ssval   +++|
02142  M00S02140.ssval   +++|      ZFILL(VLMAPAREA,MAPENTL);      # CLEAR MAP ENTRY AREA #
02143  M00S02141.ssval   +++|
02144  M00S02142.ssval   +++|
02145  M00S02143.ssval   +++|#
02146  M00S02144.ssval   +++|*     READ *SM* MAP ENTRY.
02147  M00S02145.ssval   +++|#
02148  M00S02146.ssval   +++|
02149  M00S02147.ssval   +++|      ORD = MAXORD - Z - (Y * (MAX$Z+1));
02150  M00S02148.ssval   +++|      MGETENT(SMINDX,ORD,LOC(VLMAPAREA),STAT);  # GET *SM* ENTRY #
02151  M00S02149.ssval   +++|
02152  M00S02150.ssval   +++|#
02153  M00S02151.ssval   +++|*     IF ERROR WHEN READING THE SMMAP, ISSUE MESSAGE AND ABORT.
02154  M00S02152.ssval   +++|#
02155  M00S02153.ssval   +++|
02156  M00S02154.ssval   +++|      IF (STAT NQ CMASTAT"NOERR") AND (STAT NQ CMASTAT"ORDERR")
02157  M00S02155.ssval   +++|      THEN
02158  M00S02156.ssval   +++|        BEGIN
02159  M00S02157.ssval   +++|        VLERROR(VE"MAPR",ABRT);      # ABORT WITH MESSAGE #
02160  M00S02158.ssval   +++|        END
02161  M00S02159.ssval   +++|
02162  M00S02160.ssval   +++|
02163  M00S02161.ssval   +++|      P<SMUMAP> = LOC(VLMAPAREA);
02164  M00S02162.ssval   +++|#
02165  M00S02163.ssval   +++|*     IF MAP ENTRY IS FOR ANOTHER SUBFAMILY, RETURN.
02166  M00S02164.ssval   +++|#
02167  M00S02165.ssval   +++|
02168  M00S02166.ssval   +++|      IF SBINDX NQ CM$SUB[0]
02169  M00S02167.ssval   +++|      THEN                             ##
02170  M00S02168.ssval   +++|        BEGIN
02171  M00S02169.ssval   +++|        RETURN;
02172  M00S02170.ssval   +++|        END
02173  M00S02171.ssval   +++|
02174  M00S02172.ssval   +++|
02175  M00S02173.ssval   +++|#
02176  M00S02174.ssval   +++|*     IF THE *FCT* POINTS TO AN INCORRECT SMMAP ENTRY, WRITE THE
02177  M00S02175.ssval   +++|*     ENTRY TO THE PROBLEM FILE.
02178  M00S02176.ssval   +++|#
02179  M00S02177.ssval   +++|
02180  M00S02178.ssval   +++|      IF CM$CODE[0] NQ CUBSTAT"SUBFAM"  ##
02181  M00S02179.ssval   +++|        OR PAR$FM NQ CM$FMLYNM[0]    ##
02182  M00S02180.ssval   +++|        OR SBINDX NQ CM$SUB[0]       ##
02183  M00S02181.ssval   +++|        OR FCTORD NQ CM$FCTORD[0]    ##
02184  M00S02182.ssval   +++|        OR FCT$CSND[0] NQ CM$CSND[0]   # #
02185  M00S02183.ssval   +++|      THEN
02186  M00S02184.ssval   +++|        BEGIN
02187  M00S02185.ssval   +++|        CMERR = TRUE;
02188  M00S02186.ssval   +++|        CSN = FCT$CSND[0];
02189  M00S02187.ssval   +++|        VLWPROB(REC"FCT");           # WRITE PROBLEM ENTRY #
02190  M00S02188.ssval   +++|        END
02191  M00S02189.ssval   +++|
02192  M00S02190.ssval   +++|#
02193  M00S02191.ssval   +++|*     IF *FCT* AND *SM* POINT TO EACH OTHER, SET THE BIT IN CMAP
02194  M00S02192.ssval   +++|*     ARRAY TO INDICATE THAT A *FCT* ENTRY EXISTS FOR THIS SMMAP
02195  M00S02193.ssval   +++|*     ENTRY.
02196  M00S02194.ssval   +++|#
02197  M00S02195.ssval   +++|
02198  M00S02196.ssval   +++|      IF PAR$FM EQ CM$FMLYNM[0] AND SBINDX EQ CM$SUB[0]  ##
02199  M00S02197.ssval   +++|        AND FCTORD EQ CM$FCTORD[0]
02200  M00S02198.ssval   +++|      THEN
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/ssval.txt ยท Last modified: by 127.0.0.1