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