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