Action unknown: copypageplugin__copy
cdc:nos2.source:opl.opl871:deck:acccat.001
Deck ACCCAT Part 001
1 Modification
Listing Sections
- Deck ACCCAT Start
- Deck ACCCAT Part 1 (Line 2183)
Source
Seq # *Modification Id* Act ----------------------------+ 02183 M00S02182.acccat +++| THEN # FILE BUSY OR TEMPORARY ERROR # 02184 M00S02183.acccat +++| BEGIN 02185 M00S02184.acccat +++| INTLK = TRUE; 02186 M00S02185.acccat +++| END 02187 M00S02186.acccat +++| 02188 M00S02187.acccat +++| ELSE 02189 M00S02188.acccat +++| BEGIN # FILE NOT INTERLOCKED # 02190 M00S02189.acccat +++| OCT$INTLK[I] = FALSE; 02191 M00S02190.acccat +++| TEMP = OCT$LINK[I]; 02192 M00S02191.acccat +++| OCT$LINK[I] = 0; 02193 M00S02192.acccat +++| REPEAT WHILE TEMP NQ 0 02194 M00S02193.acccat +++| DO 02195 M00S02194.acccat +++| BEGIN # ADD WAITING REQUESTS TO READY CHAIN # 02196 M00S02195.acccat +++| P<HLRQ> = TEMP; 02197 M00S02196.acccat +++| TEMP = HLR$LNK1[0]; 02198 M00S02197.acccat +++| ADD$LNK(P<HLRQ>,LCHN"HL$READY",0); 02199 M00S02198.acccat +++| END # ADD WAITING REQUESTS TO READY CHAIN # 02200 M00S02199.acccat +++| 02201 M00S02200.acccat +++| IF STAT NQ 0 02202 M00S02201.acccat +++| THEN # IF ATTACH ERROR # 02203 M00S02202.acccat +++| BEGIN 02204 M00S02203.acccat +++| CMSGLINE[0] = CMSG3; 02205 M00S02204.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02206 M00S02205.acccat +++| CMSGLINE[0] = CMSGCLOSE; 02207 M00S02206.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 02208 M00S02207.acccat +++| FAMILY = OCT$FAM[I]; 02209 M00S02208.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 02210 M00S02209.acccat +++| CMSGCFAM[0] = FAMILY; 02211 M00S02210.acccat +++| RMVBLNK(CMSGAREA,48); 02212 M00S02211.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02213 M00S02212.acccat +++| ZFILL(OCT[I],OCTENTL); # CLEAR *OCT* ENTRY # 02214 M00S02213.acccat +++| TEST I; 02215 M00S02214.acccat +++| END 02216 M00S02215.acccat +++| 02217 M00S02216.acccat +++|# 02218 M00S02217.acccat +++|* CHECK FOR CATALOG OPENED. 02219 M00S02218.acccat +++|# 02220 M00S02219.acccat +++| 02221 M00S02220.acccat +++| IF OCT$PRMA[I] EQ 0 02222 M00S02221.acccat +++| THEN # IF CATALOG OPEN NOT COMPLETE # 02223 M00S02222.acccat +++| BEGIN 02224 M00S02223.acccat +++| CRDPRM(I,ERRSTAT); # FINISH CATALOG OPEN # 02225 M00S02224.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02226 M00S02225.acccat +++| THEN 02227 M00S02226.acccat +++| BEGIN 02228 M00S02227.acccat +++| RETURN; # RETURN ERROR STATUS # 02229 M00S02228.acccat +++| END 02230 M00S02229.acccat +++| 02231 M00S02230.acccat +++| END 02232 M00S02231.acccat +++| 02233 M00S02232.acccat +++| END # FILE NOT INTERLOCKED # 02234 M00S02233.acccat +++| 02235 M00S02234.acccat +++| END # SEARCH *OCT* # 02236 M00S02235.acccat +++| 02237 M00S02236.acccat +++| IF NOT INTLK 02238 M00S02237.acccat +++| THEN # IF NO CATALOGS INTERLOCKED # 02239 M00S02238.acccat +++| BEGIN 02240 M00S02239.acccat +++| GLBINTLK = FALSE; # CLEAR GLOBAL INTERLOCK FLAG # 02241 M00S02240.acccat +++| ITLK$EXPIR = 0; 02242 M00S02241.acccat +++| END 02243 M00S02242.acccat +++| 02244 M00S02243.acccat +++| ELSE 02245 M00S02244.acccat +++| BEGIN 02246 M00S02245.acccat +++| RTIME(RTIMESTAT[0]); 02247 M00S02246.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02248 M00S02247.acccat +++| END 02249 M00S02248.acccat +++| 02250 M00S02249.acccat +++| RETURN; 02251 M00S02250.acccat +++| END # CRCLMLK # 02252 M00S02251.acccat +++| 02253 M00S02252.acccat +++| TERM 02254 M00S02253.acccat +++|PROC CRDAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT); 02255 M00S02254.acccat +++|# TITLE CRDAST - READ AVAILABLE STREAM TABLE. # 02256 M00S02255.acccat +++| BEGIN # CRDAST # 02257 M00S02256.acccat +++| 02258 M00S02257.acccat +++|# 02259 M00S02258.acccat +++|** CRDAST - READ AVAILABLE STREAM TABLE. 02260 M00S02259.acccat +++|* 02261 M00S02260.acccat +++|* *CRDAST* READS THE ENTIRE AVAILABLE STREAM TABLE DIRECTLY INTO 02262 M00S02261.acccat +++|* THE CALLERS BUFFER. 02263 M00S02262.acccat +++|* 02264 M00S02263.acccat +++|* CRDAST - IS CALLED BY ADDCAR,ADDCUBE,ADDCSU,ALLOCAT,DESTAGR, 02265 M00S02264.acccat +++|* OPENCAT,PURGCHN,PURGFCT,RLSUNS,RMVCAR,RMVCUBE,SERAST, 02266 M00S02265.acccat +++|* STAGER,UPDCAT. 02267 M00S02266.acccat +++|* 02268 M00S02267.acccat +++|* PROC CRDAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT) 02269 M00S02268.acccat +++|* 02270 M00S02269.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02271 M00S02270.acccat +++|* 7 CHARACTER MAXIMUM. 02272 M00S02271.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 02273 M00S02272.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 02274 M00S02273.acccat +++|* (BADDR) - ADDRESS OF BUFFER TO CONTAIN *AST*. 02275 M00S02274.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02276 M00S02275.acccat +++|* 02277 M00S02276.acccat +++|* EXIT THE *AST* HAS BEEN READ INTO THE BUFFER AT THE ADDRESS 02278 M00S02277.acccat +++|* SPECIFIED BY (BADDR). 02279 M00S02278.acccat +++|* (ERRSTAT) - ERROR STATUS. 02280 M00S02279.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02281 M00S02280.acccat +++|* = NO ERRORS. 02282 M00S02281.acccat +++|* = CATALOG FILE INTERLOCKED. 02283 M00S02282.acccat +++|* = CATALOG NOT OPEN. 02284 M00S02283.acccat +++|* = NO SUCH SUBCATALOG. 02285 M00S02284.acccat +++|* = *CIO* ERROR. 02286 M00S02285.acccat +++|* 02287 M00S02286.acccat +++|* NOTES THE *AST* IS READ DIRECTLY INTO THE CALLERS BUFFER. 02288 M00S02287.acccat +++|* IT IS THE CALLERS RESPONSIBILITY TO ENSURE THAT THE 02289 M00S02288.acccat +++|* BUFFER IS LARGE ENOUGH TO CONTAIN THE ENTIRE *AST*. 02290 M00S02289.acccat +++|* THE BUFFER SIZE SHOULD BE THE LENGTH OF THE *AST* 02291 M00S02290.acccat +++|* ROUNDED UP TO A PRU SIZE MULTIPLE OR LARGER. 02292 M00S02291.acccat +++|# 02293 M00S02292.acccat +++| 02294 M00S02293.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02295 M00S02294.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 02296 M00S02295.acccat +++| ITEM SMID U; # SM IDENTIFIER # 02297 M00S02296.acccat +++| ITEM BADDR U; # *AST* BUFFER ADDRESS # 02298 M00S02297.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02299 M00S02298.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02300 M00S02299.acccat +++| 02301 M00S02300.acccat +++|# 02302 M00S02301.acccat +++|**** PROC CRDAST - XREF LIST BEGIN. 02303 M00S02302.acccat +++|# 02304 M00S02303.acccat +++| 02305 M00S02304.acccat +++| XREF 02306 M00S02305.acccat +++| BEGIN 02307 M00S02306.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02308 M00S02307.acccat +++| PROC CRDPRM; 02309 M00S02308.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 02310 M00S02309.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 02311 M00S02310.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02312 M00S02311.acccat +++| END 02313 M00S02312.acccat +++| 02314 M00S02313.acccat +++|# 02315 M00S02314.acccat +++|**** PROC CRDAST - XREF LIST END. 02316 M00S02315.acccat +++|# 02317 M00S02316.acccat +++| 02318 M00S02317.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02319 M00S02318.acccat +++|*CALL COMBFAS 02320 M00S02319.acccat +++|*CALL COMBCMD 02321 M00S02320.acccat +++|*CALL COMBCMS 02322 M00S02321.acccat +++|*CALL COMBFET 02323 M00S02322.acccat +++|*CALL COMBMCT 02324 M00S02323.acccat +++|*CALL COMXMSC 02325 M00S02324.acccat +++| 02326 M00S02325.acccat +++| ITEM LENGTH I; # *AST* LENGTH # 02327 M00S02326.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 02328 M00S02327.acccat +++|CONTROL EJECT; 02329 M00S02328.acccat +++| 02330 M00S02329.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 02331 M00S02330.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02332 M00S02331.acccat +++| THEN 02333 M00S02332.acccat +++| BEGIN 02334 M00S02333.acccat +++| RETURN; # RETURN ERROR STATUS # 02335 M00S02334.acccat +++| END 02336 M00S02335.acccat +++| 02337 M00S02336.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 02338 M00S02337.acccat +++| IF PRM$SCW1[SMID ] EQ 0 02339 M00S02338.acccat +++| THEN # IF NO SUCH SUBCATALOG # 02340 M00S02339.acccat +++| BEGIN 02341 M00S02340.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 02342 M00S02341.acccat +++| RETURN; 02343 M00S02342.acccat +++| END 02344 M00S02343.acccat +++| 02345 M00S02344.acccat +++| LENGTH = ABUFLEN; 02346 M00S02345.acccat +++| 02347 M00S02346.acccat +++|# 02348 M00S02347.acccat +++|* READ ENTIRE *AST* INTO CALLERS BUFFER. 02349 M00S02348.acccat +++|# 02350 M00S02349.acccat +++| 02351 M00S02350.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],BADDR,LENGTH,RFETL); 02352 M00S02351.acccat +++| FET$EP[0] = TRUE; 02353 M00S02352.acccat +++| FET$R[0] = TRUE; 02354 M00S02353.acccat +++| FET$RR[0] = PRM$ASTLOC[SMID ]; 02355 M00S02354.acccat +++| READ(FETSET[0],RCL); 02356 M00S02355.acccat +++| IF FET$AT[0] NQ 0 02357 M00S02356.acccat +++| THEN 02358 M00S02357.acccat +++| BEGIN 02359 M00S02358.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,FETSET[0]); 02360 M00S02359.acccat +++| RETURN; 02361 M00S02360.acccat +++| END 02362 M00S02361.acccat +++| 02363 M00S02362.acccat +++| CRDPRM(ORD,ERRSTAT); 02364 M00S02363.acccat +++| RETURN; 02365 M00S02364.acccat +++| END # CRDAST # 02366 M00S02365.acccat +++| 02367 M00S02366.acccat +++| TERM 02368 M00S02367.acccat +++|PROC CRDPRM((TORD),ERRSTAT); 02369 M00S02368.acccat +++|# TITLE CRDPRM - READ CATALOG PREAMBLE. # 02370 M00S02369.acccat +++| BEGIN # CRDPRM # 02371 M00S02370.acccat +++| 02372 M00S02371.acccat +++|# 02373 M00S02372.acccat +++|** CRDPRM - READ CATALOG PREAMBLE. 02374 M00S02373.acccat +++|* 02375 M00S02374.acccat +++|* *CRDPRM* READS THE HEADER OF EACH 02376 M00S02375.acccat +++|* SUBCATALOG ENTRY IN THE PREAMBLE INTO A BUFFER (THE 02377 M00S02376.acccat +++|* PREAMBLE TABLE). 02378 M00S02377.acccat +++|* 02379 M00S02378.acccat +++|* CRDPRM - IS CALLED BY COPEN. 02380 M00S02379.acccat +++|* 02381 M00S02380.acccat +++|* PROC CRDPRM((TORD),ERRSTAT) 02382 M00S02381.acccat +++|* 02383 M00S02382.acccat +++|* ENTRY (TORD) - ORDINAL OF CATALOGS ENTRY IN THE OPEN CATALOG 02384 M00S02383.acccat +++|* TABLE. 02385 M00S02384.acccat +++|* 02386 M00S02385.acccat +++|* EXIT A CATALOG PREAMBLE IS READ INTO A BUFFER AND 02387 M00S02386.acccat +++|* UPDATED. 02388 M00S02387.acccat +++|* (ERRSTAT) - ERROR STATUS. 02389 M00S02388.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02390 M00S02389.acccat +++|* = NO ERRORS. 02391 M00S02390.acccat +++|* = *CIO* ERROR. 02392 M00S02391.acccat +++|* = CATALOG ATTACH ERROR. 02393 M00S02392.acccat +++|* 02394 M00S02393.acccat +++|* NOTES WHEN A CATALOG IS OPENED, A PREAMBLE IS READ 02395 M00S02394.acccat +++|* INTO THE PREAMBLE TABLE, TO BE USED TO REFERENCE 02396 M00S02395.acccat +++|* DATA IN THE PREAMBLE, THUS REDUCING DISK REFERENCES. 02397 M00S02396.acccat +++|# 02398 M00S02397.acccat +++| 02399 M00S02398.acccat +++| ITEM TORD I; # OPEN CATALOG TABLE ORDINAL # 02400 M00S02399.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02401 M00S02400.acccat +++| 02402 M00S02401.acccat +++|# 02403 M00S02402.acccat +++|**** PROC CRDPRM - XREF LIST BEGIN. 02404 M00S02403.acccat +++|# 02405 M00S02404.acccat +++| 02406 M00S02405.acccat +++| XREF 02407 M00S02406.acccat +++| BEGIN 02408 M00S02407.acccat +++| PROC CCLOSE; # CLOSE CATALOGS # 02409 M00S02408.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02410 M00S02409.acccat +++| PROC REWIND; # REWIND FILE # 02411 M00S02410.acccat +++| PROC RPHR; # READ PRU TO *CIO* BUFFER # 02412 M00S02411.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02413 M00S02412.acccat +++| END 02414 M00S02413.acccat +++| 02415 M00S02414.acccat +++|# 02416 M00S02415.acccat +++|**** PROC CRDPRM - XREF LIST END. 02417 M00S02416.acccat +++|# 02418 M00S02417.acccat +++| 02419 M00S02418.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02420 M00S02419.acccat +++|*CALL COMBFAS 02421 M00S02420.acccat +++|*CALL COMBCMD 02422 M00S02421.acccat +++|*CALL COMBCMS 02423 M00S02422.acccat +++|*CALL COMBFET 02424 M00S02423.acccat +++|*CALL COMBMCT 02425 M00S02424.acccat +++|*CALL COMXMSC 02426 M00S02425.acccat +++| 02427 M00S02426.acccat +++| ITEM I I; # LOOP COUNTER # 02428 M00S02427.acccat +++| ITEM J I; # LOOP COUNTER # 02429 M00S02428.acccat +++|CONTROL EJECT; 02430 M00S02429.acccat +++| 02431 M00S02430.acccat +++|# 02432 M00S02431.acccat +++|* READ CATALOG PREAMBLE INTO BUFFER. 02433 M00S02432.acccat +++|# 02434 M00S02433.acccat +++| 02435 M00S02434.acccat +++| OCT$PRMA[TORD] = (PRMBADR+((TORD-1)*PRMTLEN*3)); 02436 M00S02435.acccat +++| ZSETFET(TFETADR,OCT$LFN[TORD],TBUFADR,2*PRULEN,RFETL); 02437 M00S02436.acccat +++| FET$EP[0] = TRUE; 02438 M00S02437.acccat +++| REWIND(FETSET[0],RCL); 02439 M00S02438.acccat +++| RPHR(FETSET[0],RCL); 02440 M00S02439.acccat +++| IF FET$AT[0] NQ 0 02441 M00S02440.acccat +++| THEN 02442 M00S02441.acccat +++| BEGIN 02443 M00S02442.acccat +++| GOTO ERR; 02444 M00S02443.acccat +++| END 02445 M00S02444.acccat +++| 02446 M00S02445.acccat +++| P<PREAMBLE> = OCT$PRMA[TORD]; 02447 M00S02446.acccat +++| 02448 M00S02447.acccat +++|# 02449 M00S02448.acccat +++|* TRANSFER HEADER OF EACH ENTRY TO THE TABLE. 02450 M00S02449.acccat +++|# 02451 M00S02450.acccat +++| 02452 M00S02451.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 02453 M00S02452.acccat +++| DO 02454 M00S02453.acccat +++| BEGIN 02455 M00S02454.acccat +++| PRM$SCW1[I] = TBUF$W[I + 1]; 02456 M00S02455.acccat +++| PRM$SCW2[I] = TBUF$W1[I + 1]; 02457 M00S02456.acccat +++| PRM$SCW3[I] = TBUF$W2[I + 1]; 02458 M00S02457.acccat +++| END 02459 M00S02458.acccat +++| 02460 M00S02459.acccat +++| IF OCT$FAM[TORD] NQ PRM$FAM[0] ## 02461 M00S02460.acccat +++| OR OCT$SUBF[TORD] NQ PRM$SUBF[0] 02462 M00S02461.acccat +++| THEN # IF WRONG CATALOG ATTACHED # 02463 M00S02462.acccat +++| BEGIN 02464 M00S02463.acccat +++| CCLOSE(OCT$FAM[TORD],OCT$SUBF[TORD],0,ERRSTAT); 02465 M00S02464.acccat +++| ERRSTAT = CMASTAT"ATTERR"; 02466 M00S02465.acccat +++| RETURN; # RETURN ERROR STATUS # 02467 M00S02466.acccat +++| END 02468 M00S02467.acccat +++| 02469 M00S02468.acccat +++| 02470 M00S02469.acccat +++|# CHANGE DELETED 36 LINES THAT UPDATED STREAM COUNTS # 02471 M00S02470.acccat +++| RETURN; 02472 M00S02471.acccat +++|ERR: # PROCESS *CIO* ERROR # 02473 M00S02472.acccat +++| CPIOERR(OCT$FAM[TORD],OCT$SUBF[TORD],0,ERRSTAT,FETSET[0]); 02474 M00S02473.acccat +++| RETURN; 02475 M00S02474.acccat +++| END # CRDPRM # 02476 M00S02475.acccat +++| 02477 M00S02476.acccat +++| TERM 02478 M00S02477.acccat +++|PROC CRELSLK((FAMNM),(MASK),(QRADDR),ERRSTAT); 02479 M00S02478.acccat +++|# TITLE CRELSLK - RELEASE CATALOG INTERLOCKS. # 02480 M00S02479.acccat +++| BEGIN # CRELSLK # 02481 M00S02480.acccat +++| 02482 M00S02481.acccat +++|# 02483 M00S02482.acccat +++|** CRELSLK - RELEASE CATALOG INTERLOCKS. 02484 M00S02483.acccat +++|* 02485 M00S02484.acccat +++|* *CRELSLK* RETURNS THE SPECIFIED CATALOGS IF THEY ARE INTERLOCKED 02486 M00S02485.acccat +++|* AND SETS THE INTERLOCK BIT IN THE OPEN CATALOG TABLE TO INDICATE 02487 M00S02486.acccat +++|* THAT THE INTERLOCK HAS BEEN GIVEN UP BY *MSSEXEC*. 02488 M00S02487.acccat +++|* 02489 M00S02488.acccat +++|* CRELSLK - IS CALLED BY HLRQMTR,TDAM$RP. 02490 M00S02489.acccat +++|* 02491 M00S02490.acccat +++|* PROC CRELSLK((FAMNM),(MASK),(QRADDR),ERRSTAT) 02492 M00S02491.acccat +++|* 02493 M00S02492.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02494 M00S02493.acccat +++|* 7 CHARACTER MAXIMUM. 02495 M00S02494.acccat +++|* (MASK) - THE 8-BIT DEVICE MASK FOR A DEVICE. 02496 M00S02495.acccat +++|* 02497 M00S02496.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 02498 M00S02497.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02499 M00S02498.acccat +++|* = *CIO* ERROR. 02500 M00S02499.acccat +++|* THE SPECIFIED CATALOGS ARE RETURNED. THE INTERLOCK 02501 M00S02500.acccat +++|* BIT IS SET IN THE CORRESPONDING *OCT* ENTRIES, AND THE 02502 M00S02501.acccat +++|* GLOBAL INTERLOCK FLAG IS SET. 02503 M00S02502.acccat +++|# 02504 M00S02503.acccat +++| 02505 M00S02504.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02506 M00S02505.acccat +++| ITEM MASK U; # DEVICE MASK # 02507 M00S02506.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02508 M00S02507.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02509 M00S02508.acccat +++| 02510 M00S02509.acccat +++|# 02511 M00S02510.acccat +++|**** PROC CRELSLK - XREF LIST BEGIN. 02512 M00S02511.acccat +++|# 02513 M00S02512.acccat +++| 02514 M00S02513.acccat +++| XREF 02515 M00S02514.acccat +++| BEGIN 02516 M00S02515.acccat +++| PROC BFLUSH; # BUFFER FLUSH # 02517 M00S02516.acccat +++| PROC RETERN; # RETURN FILE TO SYSTEM # 02518 M00S02517.acccat +++| PROC RTIME; # GET REAL TIME CLOCK READING # 02519 M00S02518.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02520 M00S02519.acccat +++| END 02521 M00S02520.acccat +++| 02522 M00S02521.acccat +++|# 02523 M00S02522.acccat +++|**** PROC CRELSLK - XREF LIST END. 02524 M00S02523.acccat +++|# 02525 M00S02524.acccat +++| 02526 M00S02525.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02527 M00S02526.acccat +++|*CALL COMBFAS 02528 M00S02527.acccat +++|*CALL COMBCMD 02529 M00S02528.acccat +++|*CALL COMBCMS 02530 M00S02529.acccat +++|*CALL COMXCTF 02531 M00S02530.acccat +++|*CALL COMXIPR 02532 M00S02531.acccat +++| 02533 M00S02532.acccat +++| ITEM I I; # LOOP COUNTER # 02534 M00S02533.acccat +++|CONTROL EJECT; 02535 M00S02534.acccat +++| 02536 M00S02535.acccat +++| ERRSTAT = CMASTAT"NOERR"; 02537 M00S02536.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02538 M00S02537.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02539 M00S02538.acccat +++| THEN 02540 M00S02539.acccat +++| BEGIN 02541 M00S02540.acccat +++| RETURN; 02542 M00S02541.acccat +++| END 02543 M00S02542.acccat +++| 02544 M00S02543.acccat +++| FASTFOR I = 1 STEP 1 UNTIL OCTLEN 02545 M00S02544.acccat +++| DO 02546 M00S02545.acccat +++| BEGIN 02547 M00S02546.acccat +++| IF OCT$FAM[I] EQ FAMNM AND NOT OCT$INTLK[I] ## 02548 M00S02547.acccat +++| AND B<(59-OCT$SUBF[I]),1>MASK EQ 1 02549 M00S02548.acccat +++| THEN # IF INTERLOCK TO BE GIVEN UP # 02550 M00S02549.acccat +++| BEGIN 02551 M00S02550.acccat +++| GLBINTLK = TRUE; # SET GLOBAL INTERLOCK FLAG # 02552 M00S02551.acccat +++| OCT$INTLK[I] = TRUE; 02553 M00S02552.acccat +++| RTIME(RTIMESTAT[0]); 02554 M00S02553.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02555 M00S02554.acccat +++| ZSETFET(TFETADR,OCT$LFN[I],TBUFADR,TBUFL,RFETL); 02556 M00S02555.acccat +++| RETERN(TFET[0],RCL); 02557 M00S02556.acccat +++| END 02558 M00S02557.acccat +++| 02559 M00S02558.acccat +++| END 02560 M00S02559.acccat +++| 02561 M00S02560.acccat +++| RETURN; 02562 M00S02561.acccat +++| END # CRELSLK # 02563 M00S02562.acccat +++| 02564 M00S02563.acccat +++| TERM 02565 M00S02564.acccat +++|PROC CRELSMM((FAMNM),(MASK),(QRADDR),ERRSTAT); 02566 M00S02565.acccat +++|# TITLE CRELSMM - RELEASE CATALOG IN MODIFY MODE. # 02567 M00S02566.acccat +++| BEGIN # CRELSMM # 02568 M00S02567.acccat +++| 02569 M00S02568.acccat +++|# 02570 M00S02569.acccat +++|** CRELSMM - RELEASE CATALOG IN MODIFY MODE. 02571 M00S02570.acccat +++|* 02572 M00S02571.acccat +++|* *CRELSMM* ATTACHES THE SPECIFIED CATALOGS IN UPDATE MODE 02573 M00S02572.acccat +++|* (RELINQUISHING MODIFY MODE) IF THEY ARE INTERLOCKED BY 02574 M00S02573.acccat +++|* *SSEXEC* AND SETS THE UPDATE MODE INTERLOCK FLAG IN THE 02575 M00S02574.acccat +++|* OPEN CATALOG TABLE. *PFDUMP* WILL ATTACH THE CATALOGS IN 02576 M00S02575.acccat +++|* READ/ALLOW UPDATE MODE, PREVENTING *SSEXEC* FROM 02577 M00S02576.acccat +++|* RECLAIMING THE CATALOGS IN MODIFY MODE UNTIL IT RETURNS 02578 M00S02577.acccat +++|* THEM. DESTAGING FILES AND ADDING, EXTENDING OR REMOVING 02579 M00S02578.acccat +++|* SUBCATALOGS ARE NOT ALLOWED WHILE THIS INTERLOCK IS SET. 02580 M00S02579.acccat +++|* 02581 M00S02580.acccat +++|* PROC CRELSMM((FAMNM),(MASK),(QRADDR),ERRSTAT) 02582 M00S02581.acccat +++|* 02583 M00S02582.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02584 M00S02583.acccat +++|* 7 CHARACTER MAXIMUM. 02585 M00S02584.acccat +++|* (MASK) - THE 8-BIT DEVICE MASK FOR A DEVICE. 02586 M00S02585.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02587 M00S02586.acccat +++|* 02588 M00S02587.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 02589 M00S02588.acccat +++|* (VALUES DEFINED IN *COMACMS*) 02590 M00S02589.acccat +++|* = NO ERRORS. 02591 M00S02590.acccat +++|* = I/O ERROR. 02592 M00S02591.acccat +++|* = CATALOG ATTACH ERROR. 02593 M00S02592.acccat +++|* IF THE DESIRED FAMILY IS NOT FOUND ON A *SETPFP*, AN 02594 M00S02593.acccat +++|* ERROR MESSAGE IS ISSUED AND THE PROGRAM IS ABORTED. 02595 M00S02594.acccat +++|* 02596 M00S02595.acccat +++|* THE SPECIFIED CATALOGS ARE ATTACHED IN UPDATE MODE. 02597 M00S02596.acccat +++|* THE INTERLOCK FLAG IS SET IN THE CORRESPONDING *OCT* 02598 M00S02597.acccat +++|* ENTRIES AND THE GLOBAL INTERLOCK FLAG IS SET, IF THE 02599 M00S02598.acccat +++|* INTERLOCK WAS RELEASED. 02600 M00S02599.acccat +++|* 02601 M00S02600.acccat +++|* MESSAGES * PROGRAM ABNORMAL, CRELSMM.* 02602 M00S02601.acccat +++|* * UNABLE TO REATTACH SMF CATALOG. 02603 M00S02602.acccat +++|* SMFCATN FOR FAMILY FFFFFFF CLOSED.* 02604 M00S02603.acccat +++|# 02605 M00S02604.acccat +++| 02606 M00S02605.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02607 M00S02606.acccat +++| ITEM MASK U; # DEVICE MASK # 02608 M00S02607.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02609 M00S02608.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02610 M00S02609.acccat +++| 02611 M00S02610.acccat +++|# 02612 M00S02611.acccat +++|**** PROC CRELSMM - XREF LIST BEGIN. 02613 M00S02612.acccat +++|# 02614 M00S02613.acccat +++| 02615 M00S02614.acccat +++| XREF 02616 M00S02615.acccat +++| BEGIN 02617 M00S02616.acccat +++| PROC ABORT; # ABORT # 02618 M00S02617.acccat +++| PROC BFLUSH; # BUFFER FLUSH # 02619 M00S02618.acccat +++| PROC BZFILL; # BLANK OR ZERO FILL WORD # 02620 M00S02619.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 02621 M00S02620.acccat +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 02622 M00S02621.acccat +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS # 02623 M00S02622.acccat +++| PROC RTIME; # GET REAL TIME CLOCK READING # 02624 M00S02623.acccat +++| PROC SETPFP; # SET PERMANENT FILE PARAMETERS # 02625 M00S02624.acccat +++| FUNC XCDD C(10); # INTEGER TO DISPLAY CODE 02626 M00S02625.acccat +++| CONVERSION # 02627 M00S02626.acccat +++| PROC ZFILL; # ZERO FILL A BUFFER # 02628 M00S02627.acccat +++| END 02629 M00S02628.acccat +++| 02630 M00S02629.acccat +++|# 02631 M00S02630.acccat +++|**** PROC CRELSMM - XREF LIST END. 02632 M00S02631.acccat +++|# 02633 M00S02632.acccat +++| 02634 M00S02633.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02635 M00S02634.acccat +++|*CALL COMBFAS 02636 M00S02635.acccat +++|*CALL COMBBZF 02637 M00S02636.acccat +++|*CALL COMBCMD 02638 M00S02637.acccat +++|*CALL COMBCMS 02639 M00S02638.acccat +++|*CALL COMBPFP 02640 M00S02639.acccat +++|*CALL COMBPFS 02641 M00S02640.acccat +++|*CALL COMXCTF 02642 M00S02641.acccat +++|*CALL COMXIPR 02643 M00S02642.acccat +++| 02644 M00S02643.acccat +++| ITEM CATPFN C(7); # MSF CATALOG PFN # 02645 M00S02644.acccat +++| ITEM DIS$SUBF C(10); # SUBFAMILY (DISPLAY CODE) # 02646 M00S02645.acccat +++| ITEM FAMILY C(7); # FAMILY NAME # 02647 M00S02646.acccat +++| ITEM I I; # LOOP COUNTER # 02648 M00S02647.acccat +++| CONTROL EJECT; 02649 M00S02648.acccat +++| 02650 M00S02649.acccat +++| ERRSTAT = CMASTAT"NOERR"; 02651 M00S02650.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02652 M00S02651.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02653 M00S02652.acccat +++| THEN 02654 M00S02653.acccat +++| BEGIN 02655 M00S02654.acccat +++| RETURN; 02656 M00S02655.acccat +++| END 02657 M00S02656.acccat +++| 02658 M00S02657.acccat +++| FASTFOR I = 1 STEP 1 UNTIL OCTLEN 02659 M00S02658.acccat +++| DO 02660 M00S02659.acccat +++| BEGIN # SEARCH *OCT* # 02661 M00S02660.acccat +++| IF OCT$FAM[I] EQ FAMNM ## 02662 M00S02661.acccat +++| AND NOT OCT$INTLK[I] ## 02663 M00S02662.acccat +++| # AND NOT OCT$UMI[I] # 02664 M00S02663.acccat +++| AND B<(59-OCT$SUBF[I]),1>MASK EQ 1 02665 M00S02664.acccat +++| THEN 02666 M00S02665.acccat +++| BEGIN # INTERLOCK TO BE GIVEN UP # 02667 M00S02666.acccat +++| PFP$FAM[0] = OCT$FAM[I]; # SET FAMILY AND USER INDEX # 02668 M00S02667.acccat +++| PFP$UI[0] = DEF$UI + OCT$SUBF[I]; 02669 M00S02668.acccat +++| PFP$FG1[0] = TRUE; 02670 M00S02669.acccat +++| PFP$FG4[0] = TRUE; 02671 M00S02670.acccat +++| SETPFP(PFP); 02672 M00S02671.acccat +++| IF PFP$STAT NQ 0 02673 M00S02672.acccat +++| THEN # IF FAMILY NOT FOUND # 02674 M00S02673.acccat +++| BEGIN 02675 M00S02674.acccat +++| CMA$RTN[0] = "CRELSMM."; 02676 M00S02675.acccat +++| MESSAGE(CMAMSG,UDFL1); # ISSUE ERROR MESSAGE # 02677 M00S02676.acccat +++| ABORT; 02678 M00S02677.acccat +++| END 02679 M00S02678.acccat +++| 02680 M00S02679.acccat +++| CATPFN = SFMCAT; # REATTACH IN UPDATE MODE # 02681 M00S02680.acccat +++| DIS$SUBF = XCDD(OCT$SUBF[I]); 02682 M00S02681.acccat +++| C<6,1>CATPFN = C<9,1>DIS$SUBF; 02683 M00S02682.acccat +++| PFD("ATTACH",OCT$LFN[I],CATPFN,"M","U", 02684 M00S02683.acccat +++| "RC",PFSTAT,"NA",0,"UP",0,0); 02685 M00S02684.acccat +++| IF PFSTAT NQ 0 02686 M00S02685.acccat +++| THEN # ATTACH ERROR # 02687 M00S02686.acccat +++| BEGIN 02688 M00S02687.acccat +++| CMSGLINE[0] = CMSG3; 02689 M00S02688.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02690 M00S02689.acccat +++| CMSGLINE[0] = CMSGCLOSE; 02691 M00S02690.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 02692 M00S02691.acccat +++| FAMILY = OCT$FAM[I]; 02693 M00S02692.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 02694 M00S02693.acccat +++| CMSGCFAM[0] = FAMILY; 02695 M00S02694.acccat +++| RMVBLNK(CMSGAREA,48); 02696 M00S02695.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02697 M00S02696.acccat +++| ZFILL(OCT[I],OCTENTL); # CLEAR *OCT* ENTRY # 02698 M00S02697.acccat +++| TEST I; 02699 M00S02698.acccat +++| END 02700 M00S02699.acccat +++| 02701 M00S02700.acccat +++| GLBINTLK = TRUE; # SET GLOBAL INTERLOCK FLAG # 02702 M00S02701.acccat +++| # OCT$UMI[I] = TRUE # 02703 M00S02702.acccat +++| RTIME(RTIMESTAT[0]); 02704 M00S02703.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02705 M00S02704.acccat +++| END # INTERLOCK TO BE GIVEN UP # 02706 M00S02705.acccat +++| 02707 M00S02706.acccat +++| END # SEARCH *OCT* # 02708 M00S02707.acccat +++| 02709 M00S02708.acccat +++| RETURN; 02710 M00S02709.acccat +++| END # CRELSMM # 02711 M00S02710.acccat +++| 02712 M00S02711.acccat +++| TERM 02713 M00S02712.acccat +++|PROC CRMVSC((FAMNM),(SUBF),(SMID ),(QRADDR),ERRSTAT); 02714 M00S02713.acccat +++|# TITLE CRMVSC - REMOVE SUBCATALOG. # 02715 M00S02714.acccat +++| BEGIN # CRMVSC # 02716 M00S02715.acccat +++| 02717 M00S02716.acccat +++|# 02718 M00S02717.acccat +++|** CRMVSC - REMOVE SUBCATALOG. 02719 M00S02718.acccat +++|* 02720 M00S02719.acccat +++|* *CRMVSC* REMOVES THE SPECIFIED SUBCATALOG FROM THE CATALOG FILE. 02721 M00S02720.acccat +++|* THE CATALOG MUST BE OPEN IN MODIFY MODE. 02722 M00S02721.acccat +++|* 02723 M00S02722.acccat +++|* CRMVSC - IS CALLED BY RMVCSU. 02724 M00S02723.acccat +++|* 02725 M00S02724.acccat +++|* PROC CRMVSC((FAMNM),(SUBF),(SMID ),(QRADDR),ERRSTAT) 02726 M00S02725.acccat +++|* 02727 M00S02726.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02728 M00S02727.acccat +++|* 7 CHARACTER MAXIMUM. 02729 M00S02728.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 02730 M00S02729.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 02731 M00S02730.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02732 M00S02731.acccat +++|* 02733 M00S02732.acccat +++|* EXIT THE SUBCATALOG HAS BEEN REMOVED AND THE CATALOG 02734 M00S02733.acccat +++|* PREAMBLE HAS BEEN UPDATED TO REFLECT THE CHANGE. 02735 M00S02734.acccat +++|* (ERRSTAT) - ERROR STATUS. 02736 M00S02735.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02737 M00S02736.acccat +++|* = NO ERRORS. 02738 M00S02737.acccat +++|* = CATALOG FILE INTERLOCKED. 02739 M00S02738.acccat +++|* = CATALOG NOT OPEN. 02740 M00S02739.acccat +++|* = CATALOG NOT OPEN IN MODIFY MODE. 02741 M00S02740.acccat +++|* = NO SUCH SUBCATALOG. 02742 M00S02741.acccat +++|* = *CIO* ERROR. 02743 M00S02742.acccat +++|* = FILE DEFINE ERROR. 02744 M00S02743.acccat +++|* = FILE ATTACH ERROR. 02745 M00S02744.acccat +++|* = FILE PURGE ERROR. 02746 M00S02745.acccat +++|* = FILE RENAME ERROR. 02747 M00S02746.acccat +++|* IF THE DESIRED FAMILY IS NOT FOUND ON A *SETPFP*, AN 02748 M00S02747.acccat +++|* ERROR MESSAGE IS ISSUED AND THE PROGRAM IS ABORTED. 02749 M00S02748.acccat +++|* 02750 M00S02749.acccat +++|* NOTES THE CATALOG IS RE-ATTACHED IN WRITE MODE BEFORE 02751 M00S02750.acccat +++|* REMOVING THE SUBCATALOG IN ORDER TO ALTER THE FILE 02752 M00S02751.acccat +++|* LENGTH, AND WHEN FINISHED, THE FILE IS ATTACHED IN 02753 M00S02752.acccat +++|* MODIFY MODE AGAIN. 02754 M00S02753.acccat +++|* 02755 M00S02754.acccat +++|* MESSAGES * PROGRAM ABNORMAL, CRMVSC.*. 02756 M00S02755.acccat +++|# 02757 M00S02756.acccat +++| 02758 M00S02757.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02759 M00S02758.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 02760 M00S02759.acccat +++| ITEM SMID U; # SM IDENTIFIER # 02761 M00S02760.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02762 M00S02761.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02763 M00S02762.acccat +++| 02764 M00S02763.acccat +++|# 02765 M00S02764.acccat +++|**** PROC CRMVSC - XREF LIST BEGIN. 02766 M00S02765.acccat +++|# 02767 M00S02766.acccat +++| 02768 M00S02767.acccat +++| XREF 02769 M00S02768.acccat +++| BEGIN 02770 M00S02769.acccat +++| PROC ABORT; # ABORT # 02771 M00S02770.acccat +++| PROC BFLUSH; # FLUSH *FCT* I/O BUFFER # 02772 M00S02771.acccat +++| PROC CDEFTF; # DEFINE TEMPORARY CATALOG # 02773 M00S02772.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02774 M00S02773.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 02775 M00S02774.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 02776 M00S02775.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 02777 M00S02776.acccat +++| PROC READW; # READ DATA TO WORKING BUFFER # 02778 M00S02777.acccat +++| PROC REPLCAT; # REPLACE MSF CATALOG # 02779 M00S02778.acccat +++| PROC REWIND; # REWIND A FILE # 02780 M00S02779.acccat +++| PROC SETPFP; # SET PERMANENT FILE PARAMETERS # 02781 M00S02780.acccat +++| PROC WRITEF; # WRITE END OF FILE # 02782 M00S02781.acccat +++| PROC WRITEW; # WRITE DATA FROM WORKING BUFFER # 02783 M00S02782.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02784 M00S02783.acccat +++| END 02785 M00S02784.acccat +++| 02786 M00S02785.acccat +++|# 02787 M00S02786.acccat +++|**** PROC CRMVSC - XREF LIST END. 02788 M00S02787.acccat +++|# 02789 M00S02788.acccat +++| 02790 M00S02789.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02791 M00S02790.acccat +++|*CALL COMBFAS 02792 M00S02791.acccat +++|*CALL COMBCMD 02793 M00S02792.acccat +++|*CALL COMBCMS 02794 M00S02793.acccat +++|*CALL COMBFET 02795 M00S02794.acccat +++|*CALL COMBMCT 02796 M00S02795.acccat +++|*CALL COMBPFP 02797 M00S02796.acccat +++|*CALL COMXMSC 02798 M00S02797.acccat +++| 02799 M00S02798.acccat +++| ITEM I I; # LOOP COUNTER # 02800 M00S02799.acccat +++| ITEM J I; # LOOP COUNTER # 02801 M00S02800.acccat +++| ITEM NAST I; # NUMBER OF PRU-S IN *AST* # 02802 M00S02801.acccat +++| ITEM NFCT I; # NUMBER OF PRU-S IN *FCT* # 02803 M00S02802.acccat +++| ITEM NPRU I; # NUMBER OF PRU-S TO REMOVE # 02804 M00S02803.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 02805 M00S02804.acccat +++| ITEM RMV I; # SUBCATALOG LOCATION # 02806 M00S02805.acccat +++| ITEM STAT I; # STATUS # 02807 M00S02806.acccat +++|CONTROL EJECT; 02808 M00S02807.acccat +++| 02809 M00S02808.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 02810 M00S02809.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02811 M00S02810.acccat +++| THEN 02812 M00S02811.acccat +++| BEGIN 02813 M00S02812.acccat +++| RETURN; # RETURN ERROR STATUS # 02814 M00S02813.acccat +++| END 02815 M00S02814.acccat +++| 02816 M00S02815.acccat +++| IF OCT$ATTM[ORD] NQ "M" 02817 M00S02816.acccat +++| THEN # IF NOT OPEN IN MODIFY MODE # 02818 M00S02817.acccat +++| BEGIN 02819 M00S02818.acccat +++| ERRSTAT = CMASTAT"MODERR"; 02820 M00S02819.acccat +++| RETURN; # RETURN ERROR STATUS # 02821 M00S02820.acccat +++| END 02822 M00S02821.acccat +++| 02823 M00S02822.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 02824 M00S02823.acccat +++| IF PRM$SCW1[SMID ] EQ 0 02825 M00S02824.acccat +++| THEN # IF NO SUCH SUBCATALOG # 02826 M00S02825.acccat +++| BEGIN 02827 M00S02826.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 02828 M00S02827.acccat +++| RETURN; # RETURN ERROR STATUS # 02829 M00S02828.acccat +++| END 02830 M00S02829.acccat +++| 02831 M00S02830.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02832 M00S02831.acccat +++| FB$CWRD[0] = 0; 02833 M00S02832.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02834 M00S02833.acccat +++| THEN 02835 M00S02834.acccat +++| BEGIN 02836 M00S02835.acccat +++| RETURN; 02837 M00S02836.acccat +++| END 02838 M00S02837.acccat +++| 02839 M00S02838.acccat +++|# 02840 M00S02839.acccat +++|* SET FAMILY AND USER INDEX. 02841 M00S02840.acccat +++|# 02842 M00S02841.acccat +++| 02843 M00S02842.acccat +++| PFP$WRD0[0] = 0; 02844 M00S02843.acccat +++| PFP$FAM[0] = OCT$FAM[ORD]; 02845 M00S02844.acccat +++| PFP$UI[0] = DEF$UI + OCT$SUBF[ORD]; 02846 M00S02845.acccat +++| PFP$FG1[0] = TRUE; 02847 M00S02846.acccat +++| PFP$FG4[0] = TRUE; 02848 M00S02847.acccat +++| SETPFP(PFP); 02849 M00S02848.acccat +++| IF PFP$STAT[0] NQ 0 02850 M00S02849.acccat +++| THEN # IF FAMILY NOT FOUND # 02851 M00S02850.acccat +++| BEGIN 02852 M00S02851.acccat +++| CMA$RTN[0] = "CRMVSC."; 02853 M00S02852.acccat +++| MESSAGE(CMAMSG,UDFL1); # ISSUE ERROR MESSAGE # 02854 M00S02853.acccat +++| ABORT; 02855 M00S02854.acccat +++| END 02856 M00S02855.acccat +++| 02857 M00S02856.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],FCTBADR,SEQBL,RFETL); 02858 M00S02857.acccat +++| FET$EP[0] = TRUE; 02859 M00S02858.acccat +++| ZSETFET(TFETADR+RFETL,TSFMCAT,TBUFADR,TBUFL,RFETL); 02860 M00S02859.acccat +++| FET$EP[0] = TRUE; 02861 M00S02860.acccat +++| REWIND(TFET[0],NRCL); 02862 M00S02861.acccat +++| CDEFTF(TFET[1],ERRSTAT); # DEFINE TEMPORARY CATALOG FILE # 02863 M00S02862.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02864 M00S02863.acccat +++| THEN 02865 M00S02864.acccat +++| BEGIN 02866 M00S02865.acccat +++| RETURN; # RETURN ERROR STATUS # 02867 M00S02866.acccat +++| END 02868 M00S02867.acccat +++| 02869 M00S02868.acccat +++|# 02870 M00S02869.acccat +++|* DETERMINE SUBCATALOG LENGTH. 02871 M00S02870.acccat +++|# 02872 M00S02871.acccat +++| 02873 M00S02872.acccat +++| NFCT = PRM$ENTRC[SMID] * 16; 02874 M00S02873.acccat +++| NAST = (MAXORD/PRULEN) * 2 + 1; 02875 M00S02874.acccat +++| NPRU = NFCT + NAST; # SUBCATALOG LENGTH IN PRU-S # 02876 M00S02875.acccat +++| 02877 M00S02876.acccat +++|# 02878 M00S02877.acccat +++|* UPDATE CATALOG PREAMBLE. 02879 M00S02878.acccat +++|# 02880 M00S02879.acccat +++| 02881 M00S02880.acccat +++| RMV = PRM$ASTLOC[SMID]; # SAVE SUBCATALOG LOCATION # 02882 M00S02881.acccat +++| PRM$SCW1[SMID ] = 0; # CLEAR ENTRY IN PREAMBLE # 02883 M00S02882.acccat +++| FASTFOR I = 1 STEP 1 UNTIL MAXSM 02884 M00S02883.acccat +++| DO 02885 M00S02884.acccat +++| BEGIN 02886 M00S02885.acccat +++| IF PRM$FCTLOC[I] GR RMV 02887 M00S02886.acccat +++| THEN # IF SUBCATALOG LOCATION CHANGED # 02888 M00S02887.acccat +++| BEGIN 02889 M00S02888.acccat +++| PRM$FCTLOC[I] = PRM$FCTLOC[I] - NPRU; 02890 M00S02889.acccat +++| PRM$ASTLOC[I] = PRM$ASTLOC[I] - NPRU; 02891 M00S02890.acccat +++| END 02892 M00S02891.acccat +++| 02893 M00S02892.acccat +++| END 02894 M00S02893.acccat +++| 02895 M00S02894.acccat +++|# 02896 M00S02895.acccat +++|* TRANSFER CATALOG FILE TO TEMPORARY FILE, REMOVING SUBCATALOG. 02897 M00S02896.acccat +++|# 02898 M00S02897.acccat +++| 02899 M00S02898.acccat +++| READ(TFET[0],RCL); 02900 M00S02899.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02901 M00S02900.acccat +++| IF STAT EQ CIOERR 02902 M00S02901.acccat +++| THEN # IF *CIO* ERROR # 02903 M00S02902.acccat +++| BEGIN 02904 M00S02903.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02905 M00S02904.acccat +++| RETURN; 02906 M00S02905.acccat +++| END 02907 M00S02906.acccat +++| 02908 M00S02907.acccat +++| IF STAT NQ 0 02909 M00S02908.acccat +++| THEN # IF TRANSFER NOT COMPLETE # 02910 M00S02909.acccat +++| BEGIN 02911 M00S02910.acccat +++| CMA$RTN[0] = "CRMVSC."; 02912 M00S02911.acccat +++| MESSAGE(CMAMSG,UDFL1); 02913 M00S02912.acccat +++| ABORT; 02914 M00S02913.acccat +++| END 02915 M00S02914.acccat +++| 02916 M00S02915.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 02917 M00S02916.acccat +++| DO # UPDATE CATALOG PREAMBLE # 02918 M00S02917.acccat +++| BEGIN 02919 M00S02918.acccat +++| WBUF$W[I*3+1] = PRM$SCW1[I]; 02920 M00S02919.acccat +++| WBUF$W[I*3+2] = PRM$SCW2[I]; 02921 M00S02920.acccat +++| WBUF$W[I*3+3] = PRM$SCW3[I]; 02922 M00S02921.acccat +++| END 02923 M00S02922.acccat +++| 02924 M00S02923.acccat +++| P<PREAMBLE> = LOC(WBUF[0]); # CLEAR SECOND WORD OF ENTRY # 02925 M00S02924.acccat +++| PRM$SCW1[SMID] = 0; 02926 M00S02925.acccat +++| PRM$SCW2[SMID ] = 0; 02927 M00S02926.acccat +++| PRM$SCW3[SMID] = 0; 02928 M00S02927.acccat +++| WRITEW(TFET[1],WBUF,WBUFL,STAT); 02929 M00S02928.acccat +++| FASTFOR I = 2 STEP 1 WHILE STAT EQ 0 02930 M00S02929.acccat +++| DO 02931 M00S02930.acccat +++| BEGIN # TRANSFER CATALOG # 02932 M00S02931.acccat +++| IF I EQ RMV # IF AT SUBCATALOG TO BE REMOVED # 02933 M00S02932.acccat +++| THEN 02934 M00S02933.acccat +++| BEGIN # SUBCATALOG TO BE REMOVED # 02935 M00S02934.acccat +++| FASTFOR J = 1 STEP 1 UNTIL NPRU 02936 M00S02935.acccat +++| DO 02937 M00S02936.acccat +++| BEGIN # SKIP SUBCATALOG # 02938 M00S02937.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02939 M00S02938.acccat +++| IF STAT EQ CIOERR 02940 M00S02939.acccat +++| THEN # IF *CIO* ERROR # 02941 M00S02940.acccat +++| BEGIN 02942 M00S02941.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02943 M00S02942.acccat +++| RETURN; 02944 M00S02943.acccat +++| END 02945 M00S02944.acccat +++| 02946 M00S02945.acccat +++| IF STAT NQ 0 02947 M00S02946.acccat +++| THEN # IF *EOR*, *EOF* OR *EOI* # 02948 M00S02947.acccat +++| BEGIN 02949 M00S02948.acccat +++| TEST I; # EXIT TRANSFER CATALOG LOOP # 02950 M00S02949.acccat +++| END 02951 M00S02950.acccat +++| 02952 M00S02951.acccat +++| END # SKIP SUBCATALOG # 02953 M00S02952.acccat +++| 02954 M00S02953.acccat +++| END # SUBCATALOG TO BE REMOVED # 02955 M00S02954.acccat +++| 02956 M00S02955.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02957 M00S02956.acccat +++| IF STAT EQ CIOERR 02958 M00S02957.acccat +++| THEN # IF *CIO* ERROR # 02959 M00S02958.acccat +++| BEGIN 02960 M00S02959.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02961 M00S02960.acccat +++| RETURN; 02962 M00S02961.acccat +++| END 02963 M00S02962.acccat +++| 02964 M00S02963.acccat +++| IF STAT NQ 0 # IF *EOR*, *EOF*, OR *EOI* # 02965 M00S02964.acccat +++| THEN 02966 M00S02965.acccat +++| BEGIN 02967 M00S02966.acccat +++| TEST I; # EXIT LOOP # 02968 M00S02967.acccat +++| END 02969 M00S02968.acccat +++| 02970 M00S02969.acccat +++| WRITEW(TFET[1],WBUF,WBUFL,STAT); 02971 M00S02970.acccat +++| IF STAT NQ 0 02972 M00S02971.acccat +++| THEN # IF *CIO* ERROR # 02973 M00S02972.acccat +++| BEGIN 02974 M00S02973.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[1]); 02975 M00S02974.acccat +++| RETURN; 02976 M00S02975.acccat +++| END 02977 M00S02976.acccat +++| 02978 M00S02977.acccat +++| END # TRANSFER CATALOG # 02979 M00S02978.acccat +++| 02980 M00S02979.acccat +++| WRITEF(TFET[1],RCL); 02981 M00S02980.acccat +++| IF FET$AT[0] NQ 0 02982 M00S02981.acccat +++| THEN 02983 M00S02982.acccat +++| BEGIN 02984 M00S02983.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[1]); 02985 M00S02984.acccat +++| RETURN; 02986 M00S02985.acccat +++| END 02987 M00S02986.acccat +++| 02988 M00S02987.acccat +++|# 02989 M00S02988.acccat +++|* REPLACE MSF CATALOG WITH NEW CATALOG (*TSFMCAT*). 02990 M00S02989.acccat +++|# 02991 M00S02990.acccat +++| 02992 M00S02991.acccat +++| REPLCAT(ORD,ERRSTAT); 02993 M00S02992.acccat +++| RETURN; 02994 M00S02993.acccat +++| END # CRMVSC # 02995 M00S02994.acccat +++| 02996 M00S02995.acccat +++| TERM 02997 M00S02996.acccat +++|PROC CWTAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT); 02998 M00S02997.acccat +++|# TITLE CWTAST - WRITE AVAILABLE STREAM TABLE. # 02999 M00S02998.acccat +++| BEGIN # CWTAST # 03000 M00S02999.acccat +++| 03001 M00S03000.acccat +++|# 03002 M00S03001.acccat +++|** CWTAST - WRITE AVAILABLE STREAM TABLE. 03003 M00S03002.acccat +++|* 03004 M00S03003.acccat +++|* *CWTAST* WRITES THE ENTIRE ALLOCATION SUMMARY TABLE FROM THE 03005 M00S03004.acccat +++|* CALLERS BUFFER TO THE CATALOG FILE. THE FREE AU COUNT 03006 M00S03005.acccat +++|* IN THE CATALOG PREAMBLE IS UPDATED. THE CATALOG MUST BE 03007 M00S03006.acccat +++|* OPEN IN MODIFY MODE. 03008 M00S03007.acccat +++|* 03009 M00S03008.acccat +++|* CWTAST - IS CALLED BY ADDCAR,ADDCUBE,ADDCSU,ALLOCAT, 03010 M00S03009.acccat +++|* DESTAGR,OPENCAT,PURGCHN,PURGFCT,RLSUNS,RMVCAR, 03011 M00S03010.acccat +++|* RMVCUBE,STAGER,UPDCAT. 03012 M00S03011.acccat +++|* 03013 M00S03012.acccat +++|* PROC CWTAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT) 03014 M00S03013.acccat +++|* 03015 M00S03014.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 03016 M00S03015.acccat +++|* 7 CHARACTER MAXIMUM. 03017 M00S03016.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 03018 M00S03017.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 03019 M00S03018.acccat +++|* (BADDR) - ADDRESS OF BUFFER CONTAINING *AST*. 03020 M00S03019.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 03021 M00S03020.acccat +++|* 03022 M00S03021.acccat +++|* EXIT THE *AST* HAS BEEN WRITTEN FROM THE BUFFER AT THE 03023 M00S03022.acccat +++|* ADDRESS SPECIFIED BY (BADDR) TO THE CATALOG. 03024 M00S03023.acccat +++|* (ERRSTAT) - ERROR STATUS. 03025 M00S03024.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03026 M00S03025.acccat +++|* = NO ERRORS. 03027 M00S03026.acccat +++|* = CATALOG FILE INTERLOCKED. 03028 M00S03027.acccat +++|* = CATALOG NOT OPEN. 03029 M00S03028.acccat +++|* = CATALOG NOT OPEN IN MODIFY MODE. 03030 M00S03029.acccat +++|* = NO SUCH SUBCATALOG. 03031 M00S03030.acccat +++|* = *CIO* ERROR. 03032 M00S03031.acccat +++|* 03033 M00S03032.acccat +++|* NOTES THE LENGTH OF THE *AST* MUST NOT BE CHANGED 03034 M00S03033.acccat +++|* BY THE CALLER. THE CALLERS BUFFER SIZE SHOULD 03035 M00S03034.acccat +++|* BE THE LENGTH OF THE *AST* ROUNDED UP TO A PRU 03036 M00S03035.acccat +++|* MULTIPLE OR LARGER. 03037 M00S03036.acccat +++|# 03038 M00S03037.acccat +++| 03039 M00S03038.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 03040 M00S03039.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 03041 M00S03040.acccat +++| ITEM SMID U; # SM IDENTIFIER # 03042 M00S03041.acccat +++| ITEM BADDR U; # *AST* BUFFER ADDRESS # 03043 M00S03042.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 03044 M00S03043.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03045 M00S03044.acccat +++| 03046 M00S03045.acccat +++|# 03047 M00S03046.acccat +++|**** PROC CWTAST - XREF LIST BEGIN. 03048 M00S03047.acccat +++|# 03049 M00S03048.acccat +++| 03050 M00S03049.acccat +++| XREF 03051 M00S03050.acccat +++| BEGIN 03052 M00S03051.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 03053 M00S03052.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 03054 M00S03053.acccat +++| PROC REWRITE; # REWRITE DATA FROM I/O BUFFER # 03055 M00S03054.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 03056 M00S03055.acccat +++| PROC RPHR; # RANDOM READ # 03057 M00S03056.acccat +++| PROC WPHR; # RANDOM WRITE # 03058 M00S03057.acccat +++| END 03059 M00S03058.acccat +++| 03060 M00S03059.acccat +++|# 03061 M00S03060.acccat +++|**** PROC CWTAST - XREF LIST END. 03062 M00S03061.acccat +++|# 03063 M00S03062.acccat +++| 03064 M00S03063.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03065 M00S03064.acccat +++|*CALL COMBFAS 03066 M00S03065.acccat +++|*CALL COMBCMD 03067 M00S03066.acccat +++|*CALL COMBCMS 03068 M00S03067.acccat +++|*CALL COMBFET 03069 M00S03068.acccat +++|*CALL COMBMCT 03070 M00S03069.acccat +++|*CALL COMXMSC 03071 M00S03070.acccat +++|*CALL COMSPFM 03072 M00S03071.acccat +++| 03073 M00S03072.acccat +++| ITEM COUNT I; # FREE STREAM COUNT # 03074 M00S03073.acccat +++| ITEM I I; # LOOP COUNTER # 03075 M00S03074.acccat +++| ITEM LENGTH I; # *AST* LENGTH # 03076 M00S03075.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03077 M00S03076.acccat +++|CONTROL EJECT; 03078 M00S03077.acccat +++| 03079 M00S03078.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 03080 M00S03079.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 03081 M00S03080.acccat +++| THEN 03082 M00S03081.acccat +++| BEGIN 03083 M00S03082.acccat +++| RETURN; # RETURN ERROR STATUS # 03084 M00S03083.acccat +++| END 03085 M00S03084.acccat +++| 03086 M00S03085.acccat +++| IF OCT$ATTM[ORD] NQ "M" 03087 M00S03086.acccat +++| THEN # IF NOT OPEN IN MODIFY MODE # 03088 M00S03087.acccat +++| BEGIN 03089 M00S03088.acccat +++| ERRSTAT = CMASTAT"MODERR"; 03090 M00S03089.acccat +++| RETURN; # RETURN ERROR STATUS # 03091 M00S03090.acccat +++| END 03092 M00S03091.acccat +++| 03093 M00S03092.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 03094 M00S03093.acccat +++| IF PRM$SCW1[SMID ] EQ 0 03095 M00S03094.acccat +++| THEN # IF NO SUCH SUBCATALOG # 03096 M00S03095.acccat +++| BEGIN 03097 M00S03096.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 03098 M00S03097.acccat +++| RETURN; 03099 M00S03098.acccat +++| END 03100 M00S03099.acccat +++| 03101 M00S03100.acccat +++| 03102 M00S03101.acccat +++| COUNT = 0; 03103 M00S03102.acccat +++| P<AST> = BADDR; 03104 M00S03103.acccat +++| 03105 M00S03104.acccat +++| 03106 M00S03105.acccat +++|# 03107 M00S03106.acccat +++|* WRITE ENTIRE *AST* FROM CALLERS BUFFER TO CATALOG FILE. 03108 M00S03107.acccat +++|# 03109 M00S03108.acccat +++| 03110 M00S03109.acccat +++| LENGTH = ABUFLEN; 03111 M00S03110.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],BADDR,LENGTH,RFETL); 03112 M00S03111.acccat +++| FET$EP[0] = TRUE; 03113 M00S03112.acccat +++| FET$IN[0] = FET$FRST[0] + LENGTH - 1; 03114 M00S03113.acccat +++| FET$R[0] = TRUE; 03115 M00S03114.acccat +++| FET$RR[0] = PRM$ASTLOC[SMID ]; 03116 M00S03115.acccat +++| REWRITE(FETSET[0],RCL); 03117 M00S03116.acccat +++| IF FET$AT[0] NQ 0 03118 M00S03117.acccat +++| THEN 03119 M00S03118.acccat +++| BEGIN 03120 M00S03119.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,FETSET[0]); 03121 M00S03120.acccat +++| RETURN; 03122 M00S03121.acccat +++| END 03123 M00S03122.acccat +++| 03124 M00S03123.acccat +++| 03125 M00S03124.acccat +++|# 03126 M00S03125.acccat +++|* WRITE UPDATED PREAMBLE TO CATALOG FILE. 03127 M00S03126.acccat +++|# 03128 M00S03127.acccat +++| 03129 M00S03128.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],TBUFADR,2*PRULEN,RFETL); 03130 M00S03129.acccat +++| FET$EP[0] = TRUE; 03131 M00S03130.acccat +++| FET$R[0] = TRUE; 03132 M00S03131.acccat +++| FET$RR[0] = 1; 03133 M00S03132.acccat +++| RPHR(FETSET[0],RCL); 03134 M00S03133.acccat +++| IF FET$AT[0] NQ 0 03135 M00S03134.acccat +++| THEN # READ ERROR # 03136 M00S03135.acccat +++| BEGIN 03137 M00S03136.acccat +++| ERRSTAT = CMASTAT"CIOERR"; 03138 M00S03137.acccat +++| FET$AT[0] = 0; 03139 M00S03138.acccat +++| END 03140 M00S03139.acccat +++| 03141 M00S03140.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 03142 M00S03141.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 03143 M00S03142.acccat +++| DO # TRANSFER PREAMBLE TO TBUF # 03144 M00S03143.acccat +++| BEGIN 03145 M00S03144.acccat +++| TBUF$W[I + 1] = PRM$SCW1[I]; 03146 M00S03145.acccat +++| TBUF$W1[I + 1] = PRM$SCW2[I]; 03147 M00S03146.acccat +++| TBUF$W2[I + 1] = PRM$SCW3[I]; 03148 M00S03147.acccat +++| END 03149 M00S03148.acccat +++| 03150 M00S03149.acccat +++| FET$RR[0] = 1; 03151 M00S03150.acccat +++| FET$W[0] = TRUE; 03152 M00S03151.acccat +++| WPHR(FETSET[0],RCL); 03153 M00S03152.acccat +++| IF FET$AT[0] NQ 0 03154 M00S03153.acccat +++| THEN 03155 M00S03154.acccat +++| BEGIN 03156 M00S03155.acccat +++| ERRSTAT = CMASTAT"CIOERR"; 03157 M00S03156.acccat +++| FET$AT[0] = 0; 03158 M00S03157.acccat +++| END 03159 M00S03158.acccat +++| 03160 M00S03159.acccat +++| RETURN; 03161 M00S03160.acccat +++| END # CWTAST # 03162 M00S03161.acccat +++| 03163 M00S03162.acccat +++| TERM 03164 M00S03163.acccat +++|PROC OCTSRCH((FAM),(SUB),ORD,(QRADR),ERRSTAT); 03165 M00S03164.acccat +++|# TITLE OCTSRCH - OPEN CATALOG TABLE SEARCH. # 03166 M00S03165.acccat +++| BEGIN # OCTSRCH # 03167 M00S03166.acccat +++| 03168 M00S03167.acccat +++|# 03169 M00S03168.acccat +++|** OCTSRCH - OPEN CATALOG TABLE SEARCH. 03170 M00S03169.acccat +++|* 03171 M00S03170.acccat +++|* *OCTSRCH* SEARCHES THE OPEN CATALOG TABLE TO GET THE ORDINAL 03172 M00S03171.acccat +++|* OF THE ENTRY WITH THE SPECIFIED FAMILY NAME AND SUBFAMILY 03173 M00S03172.acccat +++|* DESIGNATOR. 03174 M00S03173.acccat +++|* 03175 M00S03174.acccat +++|* OCTSRCH - IS CALLED BY CADDSC,CBUFMAN,CCLOSE,CEXTSC,CFLUSH, 03176 M00S03175.acccat +++|* CGETPD,CPUTPD,CRDAST,CRMVSC,CSELSC,CWTAST,PURGCHN.* 03177 M00S03176.acccat +++|* 03178 M00S03177.acccat +++|* PROC OCTSRCH((FAM),(SUB),ORD,(QRADR),ERRSTAT) 03179 M00S03178.acccat +++|* 03180 M00S03179.acccat +++|* ENTRY (FAM) - FAMILY NAME. 03181 M00S03180.acccat +++|* (SUB) - SUBFAMILY DESIGNATOR. 03182 M00S03181.acccat +++|* (QRADR) - ADDRESS OF *HLRQ* ENTRY, ELSE ZERO. 03183 M00S03182.acccat +++|* 03184 M00S03183.acccat +++|* EXIT (ORD) - THE ORDINAL OF THE DESIRED ENTRY, IF NO 03185 M00S03184.acccat +++|* ERRORS. 03186 M00S03185.acccat +++|* (ERRSTAT) - ERROR STATUS. 03187 M00S03186.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03188 M00S03187.acccat +++|* = NO ERRORS. 03189 M00S03188.acccat +++|* = CATALOG FILE INTERLOCKED. 03190 M00S03189.acccat +++|* = CATALOG NOT OPEN. 03191 M00S03190.acccat +++|* IF THE CATALOG IS INTERLOCKED AND (QRADR) IS NON-ZERO, 03192 M00S03191.acccat +++|* THE CATALOG ACCESS REQUEST IS ADDED TO THE END OF A 03193 M00S03192.acccat +++|* WAITING-FOR-INTERLOCK CHAIN. 03194 M00S03193.acccat +++|* 03195 M00S03194.acccat +++|* NOTES CATALOG ACCESS REQUESTS FROM *MSSEXEC* PASS THE 03196 M00S03195.acccat +++|* ADDRESS OF THE *HLRQ* ENTRY ASSOCIATED WITH THE 03197 M00S03196.acccat +++|* REQUEST, SO THAT THE REQUEST CAN BE QUEUED IF THE 03198 M00S03197.acccat +++|* CATALOG IS INTERLOCKED. REQUESTS FROM MSS UTILITIES 03199 M00S03198.acccat +++|* SET (QRADR) EQUAL TO ZERO AND MUST BE RETRIED IF THE 03200 M00S03199.acccat +++|* CATALOG IS INTERLOCKED. 03201 M00S03200.acccat +++|# 03202 M00S03201.acccat +++| 03203 M00S03202.acccat +++| ITEM FAM C(7); # FAMILY NAME # 03204 M00S03203.acccat +++| ITEM SUB U; # SUBFAMILY DESIGNATOR # 03205 M00S03204.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03206 M00S03205.acccat +++| ITEM QRADR U; # *HLRQ* ENTRY ADDRESS # 03207 M00S03206.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03208 M00S03207.acccat +++| 03209 M00S03208.acccat +++|# 03210 M00S03209.acccat +++|**** PROC OCTSRCH - XREF LIST BEGIN. 03211 M00S03210.acccat +++|# 03212 M00S03211.acccat +++| 03213 M00S03212.acccat +++| XREF 03214 M00S03213.acccat +++| BEGIN 03215 M00S03214.acccat +++| PROC ADD$LNK; # ADD ENTRY TO END OF CHAIN # 03216 M00S03215.acccat +++| END 03217 M00S03216.acccat +++| 03218 M00S03217.acccat +++|# 03219 M00S03218.acccat +++|**** PROC OCTSRCH - XREF LIST END. 03220 M00S03219.acccat +++|# 03221 M00S03220.acccat +++| 03222 M00S03221.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03223 M00S03222.acccat +++|*CALL COMBFAS 03224 M00S03223.acccat +++|*CALL COMBCMD 03225 M00S03224.acccat +++|*CALL COMBCMS 03226 M00S03225.acccat +++|*CALL COMXHLR 03227 M00S03226.acccat +++| 03228 M00S03227.acccat +++| ITEM I I; # LOOP COUNTER # 03229 M00S03228.acccat +++|CONTROL EJECT; 03230 M00S03229.acccat +++| 03231 M00S03230.acccat +++|# 03232 M00S03231.acccat +++|* SEARCH THE *OCT* FOR THE REQUESTED ENTRY. 03233 M00S03232.acccat +++|# 03234 M00S03233.acccat +++| 03235 M00S03234.acccat +++| ERRSTAT = CMASTAT"NOERR"; 03236 M00S03235.acccat +++| ORD = 0; 03237 M00S03236.acccat +++| FASTFOR I = 1 STEP 1 WHILE ORD EQ 0 AND I LQ OCTLEN 03238 M00S03237.acccat +++| DO 03239 M00S03238.acccat +++| BEGIN # SEARCH FOR ENTRY # 03240 M00S03239.acccat +++| IF OCT$SUBF[I] EQ SUB ## 03241 M00S03240.acccat +++| AND OCT$FAM[I] EQ FAM 03242 M00S03241.acccat +++| THEN 03243 M00S03242.acccat +++| BEGIN # REQUESTED ENTRY FOUND # 03244 M00S03243.acccat +++| ORD = I; 03245 M00S03244.acccat +++| IF OCT$INTLK[I] 03246 M00S03245.acccat +++| THEN # IF CATALOG INTERLOCKED # 03247 M00S03246.acccat +++| BEGIN 03248 M00S03247.acccat +++| ERRSTAT = CMASTAT"INTLK"; 03249 M00S03248.acccat +++| IF QRADR NQ 0 03250 M00S03249.acccat +++| THEN 03251 M00S03250.acccat +++| BEGIN # ADD REQUEST TO WAITING-FOR-INTERLOCK CHAIN # 03252 M00S03251.acccat +++| IF OCT$LINK[I] EQ 0 03253 M00S03252.acccat +++| THEN # IF EMPTY CHAIN # 03254 M00S03253.acccat +++| BEGIN 03255 M00S03254.acccat +++| OCT$LINK[I] = QRADR; 03256 M00S03255.acccat +++| END 03257 M00S03256.acccat +++| 03258 M00S03257.acccat +++| ELSE 03259 M00S03258.acccat +++| BEGIN 03260 M00S03259.acccat +++| P<HLRQ> = OCT$LINK[I]; 03261 M00S03260.acccat +++| REPEAT WHILE HLR$LNK1[0] NQ 0 03262 M00S03261.acccat +++| DO # SEARCH FOR END OF CHAIN # 03263 M00S03262.acccat +++| BEGIN 03264 M00S03263.acccat +++| P<HLRQ> = HLR$LNK1[0]; 03265 M00S03264.acccat +++| END 03266 M00S03265.acccat +++| 03267 M00S03266.acccat +++| HLR$LNK1[0] = QRADR; 03268 M00S03267.acccat +++| END 03269 M00S03268.acccat +++| 03270 M00S03269.acccat +++| END # ADD REQUEST TO WAITING-FOR-INTERLOCK CHAIN # 03271 M00S03270.acccat +++| 03272 M00S03271.acccat +++| END 03273 M00S03272.acccat +++| 03274 M00S03273.acccat +++| END # REQUESTED ENTRY FOUND # 03275 M00S03274.acccat +++| 03276 M00S03275.acccat +++| END # SEARCH FOR ENTRY # 03277 M00S03276.acccat +++| 03278 M00S03277.acccat +++| IF ORD EQ 0 03279 M00S03278.acccat +++| THEN # IF CATALOG NOT OPEN # 03280 M00S03279.acccat +++| BEGIN 03281 M00S03280.acccat +++| ERRSTAT = CMASTAT"NOTOPEN"; 03282 M00S03281.acccat +++| END 03283 M00S03282.acccat +++| 03284 M00S03283.acccat +++| RETURN; 03285 M00S03284.acccat +++| END # OCTSRCH # 03286 M00S03285.acccat +++| 03287 M00S03286.acccat +++| TERM 03288 M00S03287.acccat +++|PROC REPLCAT((ORD),ERRSTAT); 03289 M00S03288.acccat +++|# TITLE REPLCAT - REPLACES THE MSF CATALOG. # 03290 M00S03289.acccat +++| 03291 M00S03290.acccat +++| BEGIN # REPLCAT # 03292 M00S03291.acccat +++| 03293 M00S03292.acccat +++|# 03294 M00S03293.acccat +++|** REPLCAT - REPLACES THE MSF CATALOG. 03295 M00S03294.acccat +++|* 03296 M00S03295.acccat +++|* *REPLCAT* REPLACES THE MSF CATALOG WITH THE TEMPORARY CATALOG 03297 M00S03296.acccat +++|* (*TSFMCAT*) CREATED BY *CADDSC*, *CEXTSC* OR *CRMVSC*. THE 03298 M00S03297.acccat +++|* OLD CATALOG IS PURGED. THE TEMPORARY CATALOG IS REATTACHED 03299 M00S03298.acccat +++|* IN MODIFY MODE AND THE TEMPORARY CATALOG FILE NAME IS CHANGED 03300 M00S03299.acccat +++|* TO THE ACTUAL CATALOG FILE NAME. 03301 M00S03300.acccat +++|* 03302 M00S03301.acccat +++|* REPLCAT - IS CALLED BY CADDSC,CEXTSC,CRMVSC. 03303 M00S03302.acccat +++|* 03304 M00S03303.acccat +++|* 03305 M00S03304.acccat +++|* PROC REPLCAT((ORD),ERRSTAT) 03306 M00S03305.acccat +++|* 03307 M00S03306.acccat +++|* ENTRY (ORD) = ORDINAL OF *OCT* ENTRY FOR CATALOG. 03308 M00S03307.acccat +++|* TFETADR = ADDRESS OF FET FOR MSF CATALOG. 03309 M00S03308.acccat +++|* TFETADR+RFETL = ADDRESS OF FET FOR TEMPORARY CATALOG. 03310 M00S03309.acccat +++|* 03311 M00S03310.acccat +++|* THE MSF CATALOG IS ATTACHED IN MODIFY MODE AND 03312 M00S03311.acccat +++|* THE NEWLY CREATED CATALOG, *TSFMCAT*, IS ATTACHED 03313 M00S03312.acccat +++|* IN WRITE MODE. 03314 M00S03313.acccat +++|* 03315 M00S03314.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 03316 M00S03315.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03317 M00S03316.acccat +++|* = NO ERRORS. 03318 M00S03317.acccat +++|* = TEMPORARY FILE ATTACH ERROR. 03319 M00S03318.acccat +++|* = TEMPORARY FILE PURGE ERROR. 03320 M00S03319.acccat +++|* = TEMPORARY FILE RENAME ERROR. 03321 M00S03320.acccat +++|* THE MSF CATALOG IS REPLACED WITH *TSFMCAT*. 03322 M00S03321.acccat +++|* 03323 M00S03322.acccat +++|* MESSAGES * MSF CATALOG REPLACE ERROR. 03324 M00S03323.acccat +++|* SFMCATN FOR FAMILY FFFFFFF CLOSED.* 03325 M00S03324.acccat +++|* 03326 M00S03325.acccat +++|* * DEVICE UNAVAILABLE ON MSF CATALOG ACCESS. 03327 M00S03326.acccat +++|* SFMCATN FOR FAMILY FFFFFFF CLOSED.* 03328 M00S03327.acccat +++|* 03329 M00S03328.acccat +++|* NOTES IF AN ERROR IDLE STATUS IS RETURNED ON A *PFM* 03330 M00S03329.acccat +++|* REQUEST, *REPLCAT* WILL RESTORE THE MSF CATALOG 03331 M00S03330.acccat +++|* TO ITS PRIOR STATE (BEFORE CURRENT UPDATE). IF 03332 M00S03331.acccat +++|* SOME OTHER ERROR IS RETURNED, ANALYST INTERVENTION 03333 M00S03332.acccat +++|* MAY BE REQUIRED TO RESTORE THE CATALOG. IN EITHER 03334 M00S03333.acccat +++|* CASE THE CATALOG WILL BE CLOSED. 03335 M00S03334.acccat +++|# 03336 M00S03335.acccat +++| 03337 M00S03336.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03338 M00S03337.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03339 M00S03338.acccat +++| 03340 M00S03339.acccat +++|# 03341 M00S03340.acccat +++|**** PROC REPLCAT - XREF LIST BEGIN. 03342 M00S03341.acccat +++|# 03343 M00S03342.acccat +++| 03344 M00S03343.acccat +++| XREF 03345 M00S03344.acccat +++| BEGIN 03346 M00S03345.acccat +++| PROC BZFILL; # BLANK OR ZERO FILL WORD # 03347 M00S03346.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 03348 M00S03347.acccat +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 03349 M00S03348.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 03350 M00S03349.acccat +++| PROC RENAME; # RENAME LOCAL FILE # 03351 M00S03350.acccat +++| PROC RETERN; # RETURN A FILE # 03352 M00S03351.acccat +++| PROC REWIND; # REWIND A FILE # 03353 M00S03352.acccat +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS # 03354 M00S03353.acccat +++| PROC WRITE; # WRITE DATA FROM *CIO* BUFFER # 03355 M00S03354.acccat +++| PROC WRITEF; # WRITE END OF FILE # 03356 M00S03355.acccat +++| FUNC XCDD C(10); # CONVERT DECIMAL TO DISPLAY # 03357 M00S03356.acccat +++| PROC ZFILL; # ZERO FILL BUFFER # 03358 M00S03357.acccat +++| END 03359 M00S03358.acccat +++| 03360 M00S03359.acccat +++|# 03361 M00S03360.acccat +++|**** PROC REPLCAT - XREF LIST END. 03362 M00S03361.acccat +++|# 03363 M00S03362.acccat +++| 03364 M00S03363.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03365 M00S03364.acccat +++|*CALL COMBFAS 03366 M00S03365.acccat +++|*CALL COMBBZF 03367 M00S03366.acccat +++|*CALL COMBCMD 03368 M00S03367.acccat +++|*CALL COMBCMS 03369 M00S03368.acccat +++|*CALL COMBFET 03370 M00S03369.acccat +++|*CALL COMBPFS 03371 M00S03370.acccat +++|*CALL COMXMSC 03372 M00S03371.acccat +++|*CALL COMSPFM 03373 M00S03372.acccat +++| 03374 M00S03373.acccat +++| ITEM CATPFN C(7); # MSF CATALOG PFN # 03375 M00S03374.acccat +++| ITEM DEV$NA B; # DEVICE NOT AVAILABLE FLAG # 03376 M00S03375.acccat +++| ITEM DIS$SUBF C(10); # SUBFAMILY (DISPLAY CODE) # 03377 M00S03376.acccat +++| ITEM FAMILY C(7); # FAMILY NAME # 03378 M00S03377.acccat +++| CONTROL EJECT; 03379 M00S03378.acccat +++| 03380 M00S03379.acccat +++| P<FETSET> = TFETADR; 03381 M00S03380.acccat +++| DEV$NA = FALSE; 03382 M00S03381.acccat +++| 03383 M00S03382.acccat +++|# 03384 M00S03383.acccat +++|* PURGE OLD CATALOG FILE. 03385 M00S03384.acccat +++|# 03386 M00S03385.acccat +++| 03387 M00S03386.acccat +++| CATPFN = SFMCAT; # BUILD CATALOG PFN # 03388 M00S03387.acccat +++| DIS$SUBF = XCDD(OCT$SUBF[ORD]); 03389 M00S03388.acccat +++| C<6,1>CATPFN = C<9,1>DIS$SUBF; 03390 M00S03389.acccat +++| PFD("PURGE",CATPFN,"RC",PFSTAT,"UP",0,0); 03391 M00S03390.acccat +++| IF PFSTAT NQ 0 03392 M00S03391.acccat +++| THEN 03393 M00S03392.acccat +++| BEGIN 03394 M00S03393.acccat +++| DEV$NA = PFSTAT EQ PFN; 03395 M00S03394.acccat +++| ERRSTAT = CMASTAT"TPRGERR"; 03396 M00S03395.acccat +++| PFD("PURGE",TSFMCAT,"RC",PFSTAT,"UP",0,"SR","IE",0); 03397 M00S03396.acccat +++| GOTO RETNCAT; 03398 M00S03397.acccat +++| END 03399 M00S03398.acccat +++| 03400 M00S03399.acccat +++|# 03401 M00S03400.acccat +++|* REATTACH CATALOG IN MODIFY MODE. 03402 M00S03401.acccat +++|# 03403 M00S03402.acccat +++| 03404 M00S03403.acccat +++| PFD("ATTACH",TSFMCAT,0,"M","M","RC",PFSTAT,"NA",0,"UP",0,0); 03405 M00S03404.acccat +++| IF PFSTAT NQ 0 03406 M00S03405.acccat +++| THEN 03407 M00S03406.acccat +++| BEGIN # ATTACH ERROR # 03408 M00S03407.acccat +++| ERRSTAT = CMASTAT"TATTERR"; 03409 M00S03408.acccat +++| IF PFSTAT EQ PFN 03410 M00S03409.acccat +++| THEN 03411 M00S03410.acccat +++| BEGIN 03412 M00S03411.acccat +++| GOTO RESTCAT; 03413 M00S03412.acccat +++| END 03414 M00S03413.acccat +++| 03415 M00S03414.acccat +++| ELSE 03416 M00S03415.acccat +++| BEGIN 03417 M00S03416.acccat +++| GOTO RETNCAT; 03418 M00S03417.acccat +++| END 03419 M00S03418.acccat +++| 03420 M00S03419.acccat +++| END # ATTACH ERROR # 03421 M00S03420.acccat +++| 03422 M00S03421.acccat +++|# 03423 M00S03422.acccat +++|* CHANGE TEMPORARY FILE NAME TO ACTUAL CATALOG NAME. 03424 M00S03423.acccat +++|# 03425 M00S03424.acccat +++| 03426 M00S03425.acccat +++| PFD("CHANGE",CATPFN,TSFMCAT,"RC",PFSTAT,"UP",0,0); 03427 M00S03426.acccat +++| IF PFSTAT NQ 0 03428 M00S03427.acccat +++| THEN 03429 M00S03428.acccat +++| BEGIN # CHANGE ERROR # 03430 M00S03429.acccat +++| ERRSTAT = CMASTAT"TRNMERR"; 03431 M00S03430.acccat +++| IF PFSTAT EQ PFN 03432 M00S03431.acccat +++| THEN 03433 M00S03432.acccat +++| BEGIN 03434 M00S03433.acccat +++| GOTO RESTCAT; 03435 M00S03434.acccat +++| END 03436 M00S03435.acccat +++| 03437 M00S03436.acccat +++| ELSE 03438 M00S03437.acccat +++| BEGIN 03439 M00S03438.acccat +++| GOTO RETNCAT; 03440 M00S03439.acccat +++| END 03441 M00S03440.acccat +++| 03442 M00S03441.acccat +++| END # CHANGE ERROR # 03443 M00S03442.acccat +++| 03444 M00S03443.acccat +++| RETERN(FETSET[0],RCL); 03445 M00S03444.acccat +++| RENAME(FETSET[1],OCT$LFN[ORD]); 03446 M00S03445.acccat +++| RETURN; 03447 M00S03446.acccat +++| 03448 M00S03447.acccat +++|RESTCAT: # RESTORE ORIGINAL CATALOG # 03449 M00S03448.acccat +++| PFD("ATTACH",TSFMCAT,0,"M","W","RC",PFSTAT,"NA",0, ## 03450 M00S03449.acccat +++| "UP",0,"SR","IE",0); 03451 M00S03450.acccat +++| FET$IN[0] = FET$FRST[0]; # RESET FET POINTERS # 03452 M00S03451.acccat +++| FET$OUT[0] = FET$FRST[0]; 03453 M00S03452.acccat +++| FET$IN[1] = FET$FRST[1]; 03454 M00S03453.acccat +++| FET$OUT[1] = FET$FRST[1]; 03455 M00S03454.acccat +++| REWIND(FETSET[0],NRCL); 03456 M00S03455.acccat +++| REPEAT WHILE NOT FET$EOI[0] 03457 M00S03456.acccat +++| DO 03458 M00S03457.acccat +++| BEGIN 03459 M00S03458.acccat +++| READ(FETSET[0],RCL); 03460 M00S03459.acccat +++| FET$IN[1] = FET$IN[0]; 03461 M00S03460.acccat +++| WRITE(FETSET[1],RCL); 03462 M00S03461.acccat +++| FET$OUT[0] = FET$OUT[1]; 03463 M00S03462.acccat +++| END 03464 M00S03463.acccat +++| 03465 M00S03464.acccat +++| WRITEF(FETSET[1],RCL); 03466 M00S03465.acccat +++| PFD("CHANGE",CATPFN,TSFMCAT,"RC",PFSTAT,"UP",0,"SR","IE",0); 03467 M00S03466.acccat +++| DEV$NA = TRUE; 03468 M00S03467.acccat +++| 03469 M00S03468.acccat +++|RETNCAT: # RETURN LOCAL CATALOGS # 03470 M00S03469.acccat +++| RETERN(FETSET[0],RCL); 03471 M00S03470.acccat +++| RETERN(FETSET[1],RCL); 03472 M00S03471.acccat +++| 03473 M00S03472.acccat +++| IF DEV$NA # ISSUE ERROR MESSAGE # 03474 M00S03473.acccat +++| THEN 03475 M00S03474.acccat +++| BEGIN 03476 M00S03475.acccat +++| CMSGLINE[0] = CMSG1; 03477 M00S03476.acccat +++| END 03478 M00S03477.acccat +++| 03479 M00S03478.acccat +++| ELSE 03480 M00S03479.acccat +++| BEGIN 03481 M00S03480.acccat +++| CMSGLINE[0] = CMSG2; 03482 M00S03481.acccat +++| END 03483 M00S03482.acccat +++| 03484 M00S03483.acccat +++| MESSAGE(CMSGAREA,UDFL1); # ISSUE ERROR MESSAGE # 03485 M00S03484.acccat +++| CMSGLINE[0] = CMSGCLOSE; 03486 M00S03485.acccat +++| FAMILY = OCT$FAM[ORD]; 03487 M00S03486.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 03488 M00S03487.acccat +++| CMSGCFAM[0] = FAMILY; 03489 M00S03488.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 03490 M00S03489.acccat +++| RMVBLNK(CMSGAREA,48); 03491 M00S03490.acccat +++| MESSAGE(CMSGAREA,UDFL1); 03492 M00S03491.acccat +++| 03493 M00S03492.acccat +++| ZFILL(OCT[ORD],OCTENTL); 03494 M00S03493.acccat +++| RETURN; 03495 M00S03494.acccat +++| 03496 M00S03495.acccat +++| END # REPLCAT # 03497 M00S03496.acccat +++| 03498 M00S03497.acccat +++| TERM
cdc/nos2.source/opl.opl871/deck/acccat.001.txt ยท Last modified: (external edit)