cdc:nos2.source:opl.opl871:deck:acccat.001
Deck ACCCAT Part 001
1 Modification
Listing Sections
- Deck ACCCAT Start
- Deck ACCCAT Part 1 (Line 2185)
Source
Seq # *Modification Id* Act ----------------------------+ 02185 M01S02184.acccat +++| INTLK = TRUE; 02186 M01S02185.acccat +++| END 02187 M01S02186.acccat +++| 02188 M01S02187.acccat +++| ELSE 02189 M01S02188.acccat +++| BEGIN # FILE NOT INTERLOCKED # 02190 M01S02189.acccat +++| OCT$INTLK[I] = FALSE; 02191 M01S02190.acccat +++| TEMP = OCT$LINK[I]; 02192 M01S02191.acccat +++| OCT$LINK[I] = 0; 02193 M01S02192.acccat +++| REPEAT WHILE TEMP NQ 0 02194 M01S02193.acccat +++| DO 02195 M01S02194.acccat +++| BEGIN # ADD WAITING REQUESTS TO READY CHAIN # 02196 M01S02195.acccat +++| P<HLRQ> = TEMP; 02197 M01S02196.acccat +++| TEMP = HLR$LNK1[0]; 02198 M01S02197.acccat +++| ADD$LNK(P<HLRQ>,LCHN"HL$READY",0); 02199 M01S02198.acccat +++| END # ADD WAITING REQUESTS TO READY CHAIN # 02200 M01S02199.acccat +++| 02201 M01S02200.acccat +++| IF STAT NQ 0 02202 M01S02201.acccat +++| THEN # IF ATTACH ERROR # 02203 M01S02202.acccat +++| BEGIN 02204 M01S02203.acccat +++| CMSGLINE[0] = CMSG3; 02205 M01S02204.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02206 M01S02205.acccat +++| CMSGLINE[0] = CMSGCLOSE; 02207 M01S02206.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 02208 M01S02207.acccat +++| FAMILY = OCT$FAM[I]; 02209 M01S02208.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 02210 M01S02209.acccat +++| CMSGCFAM[0] = FAMILY; 02211 M01S02210.acccat +++| RMVBLNK(CMSGAREA,48); 02212 M01S02211.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02213 M01S02212.acccat +++| ZFILL(OCT[I],OCTENTL); # CLEAR *OCT* ENTRY # 02214 M01S02213.acccat +++| TEST I; 02215 M01S02214.acccat +++| END 02216 M01S02215.acccat +++| 02217 M01S02216.acccat +++|# 02218 M01S02217.acccat +++|* CHECK FOR CATALOG OPENED. 02219 M01S02218.acccat +++|# 02220 M01S02219.acccat +++| 02221 M01S02220.acccat +++| IF OCT$PRMA[I] EQ 0 02222 M01S02221.acccat +++| THEN # IF CATALOG OPEN NOT COMPLETE # 02223 M01S02222.acccat +++| BEGIN 02224 M01S02223.acccat +++| CRDPRM(I,ERRSTAT); # FINISH CATALOG OPEN # 02225 M01S02224.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02226 M01S02225.acccat +++| THEN 02227 M01S02226.acccat +++| BEGIN 02228 M01S02227.acccat +++| RETURN; # RETURN ERROR STATUS # 02229 M01S02228.acccat +++| END 02230 M01S02229.acccat +++| 02231 M01S02230.acccat +++| END 02232 M01S02231.acccat +++| 02233 M01S02232.acccat +++| END # FILE NOT INTERLOCKED # 02234 M01S02233.acccat +++| 02235 M01S02234.acccat +++| END # SEARCH *OCT* # 02236 M01S02235.acccat +++| 02237 M01S02236.acccat +++| IF NOT INTLK 02238 M01S02237.acccat +++| THEN # IF NO CATALOGS INTERLOCKED # 02239 M01S02238.acccat +++| BEGIN 02240 M01S02239.acccat +++| GLBINTLK = FALSE; # CLEAR GLOBAL INTERLOCK FLAG # 02241 M01S02240.acccat +++| ITLK$EXPIR = 0; 02242 M01S02241.acccat +++| END 02243 M01S02242.acccat +++| 02244 M01S02243.acccat +++| ELSE 02245 M01S02244.acccat +++| BEGIN 02246 M01S02245.acccat +++| RTIME(RTIMESTAT[0]); 02247 M01S02246.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02248 M01S02247.acccat +++| END 02249 M01S02248.acccat +++| 02250 M01S02249.acccat +++| RETURN; 02251 M01S02250.acccat +++| END # CRCLMLK # 02252 M01S02251.acccat +++| 02253 M01S02252.acccat +++| TERM 02254 M01S02253.acccat +++|PROC CRDAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT); 02255 M01S02254.acccat +++|# TITLE CRDAST - READ AVAILABLE STREAM TABLE. # 02256 M01S02255.acccat +++| BEGIN # CRDAST # 02257 M01S02256.acccat +++| 02258 M01S02257.acccat +++|# 02259 M01S02258.acccat +++|** CRDAST - READ AVAILABLE STREAM TABLE. 02260 M01S02259.acccat +++|* 02261 M01S02260.acccat +++|* *CRDAST* READS THE ENTIRE AVAILABLE STREAM TABLE DIRECTLY INTO 02262 M01S02261.acccat +++|* THE CALLERS BUFFER. 02263 M01S02262.acccat +++|* 02264 M01S02263.acccat +++|* CRDAST - IS CALLED BY ADDCAR,ADDCUBE,ADDCSU,ALLOCAT,DESTAGR, 02265 M01S02264.acccat +++|* OPENCAT,PURGCHN,PURGFCT,RLSUNS,RMVCAR,RMVCUBE,SERAST, 02266 M01S02265.acccat +++|* STAGER,UPDCAT. 02267 M01S02266.acccat +++|* 02268 M01S02267.acccat +++|* PROC CRDAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT) 02269 M01S02268.acccat +++|* 02270 M01S02269.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02271 M01S02270.acccat +++|* 7 CHARACTER MAXIMUM. 02272 M01S02271.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 02273 M01S02272.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 02274 M01S02273.acccat +++|* (BADDR) - ADDRESS OF BUFFER TO CONTAIN *AST*. 02275 M01S02274.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02276 M01S02275.acccat +++|* 02277 M01S02276.acccat +++|* EXIT THE *AST* HAS BEEN READ INTO THE BUFFER AT THE ADDRESS 02278 M01S02277.acccat +++|* SPECIFIED BY (BADDR). 02279 M01S02278.acccat +++|* (ERRSTAT) - ERROR STATUS. 02280 M01S02279.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02281 M01S02280.acccat +++|* = NO ERRORS. 02282 M01S02281.acccat +++|* = CATALOG FILE INTERLOCKED. 02283 M01S02282.acccat +++|* = CATALOG NOT OPEN. 02284 M01S02283.acccat +++|* = NO SUCH SUBCATALOG. 02285 M01S02284.acccat +++|* = *CIO* ERROR. 02286 M01S02285.acccat +++|* 02287 M01S02286.acccat +++|* NOTES THE *AST* IS READ DIRECTLY INTO THE CALLERS BUFFER. 02288 M01S02287.acccat +++|* IT IS THE CALLERS RESPONSIBILITY TO ENSURE THAT THE 02289 M01S02288.acccat +++|* BUFFER IS LARGE ENOUGH TO CONTAIN THE ENTIRE *AST*. 02290 M01S02289.acccat +++|* THE BUFFER SIZE SHOULD BE THE LENGTH OF THE *AST* 02291 M01S02290.acccat +++|* ROUNDED UP TO A PRU SIZE MULTIPLE OR LARGER. 02292 M01S02291.acccat +++|# 02293 M01S02292.acccat +++| 02294 M01S02293.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02295 M01S02294.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 02296 M01S02295.acccat +++| ITEM SMID U; # SM IDENTIFIER # 02297 M01S02296.acccat +++| ITEM BADDR U; # *AST* BUFFER ADDRESS # 02298 M01S02297.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02299 M01S02298.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02300 M01S02299.acccat +++| 02301 M01S02300.acccat +++|# 02302 M01S02301.acccat +++|**** PROC CRDAST - XREF LIST BEGIN. 02303 M01S02302.acccat +++|# 02304 M01S02303.acccat +++| 02305 M01S02304.acccat +++| XREF 02306 M01S02305.acccat +++| BEGIN 02307 M01S02306.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02308 M01S02307.acccat +++| PROC CRDPRM; 02309 M01S02308.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 02310 M01S02309.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 02311 M01S02310.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02312 M01S02311.acccat +++| END 02313 M01S02312.acccat +++| 02314 M01S02313.acccat +++|# 02315 M01S02314.acccat +++|**** PROC CRDAST - XREF LIST END. 02316 M01S02315.acccat +++|# 02317 M01S02316.acccat +++| 02318 M01S02317.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02319 M01S02318.acccat +++|*CALL COMBFAS 02320 M01S02319.acccat +++|*CALL COMBCMD 02321 M01S02320.acccat +++|*CALL COMBCMS 02322 M01S02321.acccat +++|*CALL COMBFET 02323 M01S02322.acccat +++|*CALL COMBMCT 02324 M01S02323.acccat +++|*CALL COMXMSC 02325 M01S02324.acccat +++| 02326 M01S02325.acccat +++| ITEM LENGTH I; # *AST* LENGTH # 02327 M01S02326.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 02328 M01S02327.acccat +++|CONTROL EJECT; 02329 M01S02328.acccat +++| 02330 M01S02329.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 02331 M01S02330.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02332 M01S02331.acccat +++| THEN 02333 M01S02332.acccat +++| BEGIN 02334 M01S02333.acccat +++| RETURN; # RETURN ERROR STATUS # 02335 M01S02334.acccat +++| END 02336 M01S02335.acccat +++| 02337 M01S02336.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 02338 M01S02337.acccat +++| IF PRM$SCW1[SMID ] EQ 0 02339 M01S02338.acccat +++| THEN # IF NO SUCH SUBCATALOG # 02340 M01S02339.acccat +++| BEGIN 02341 M01S02340.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 02342 M01S02341.acccat +++| RETURN; 02343 M01S02342.acccat +++| END 02344 M01S02343.acccat +++| 02345 M01S02344.acccat +++| LENGTH = ABUFLEN; 02346 M01S02345.acccat +++| 02347 M01S02346.acccat +++|# 02348 M01S02347.acccat +++|* READ ENTIRE *AST* INTO CALLERS BUFFER. 02349 M01S02348.acccat +++|# 02350 M01S02349.acccat +++| 02351 M01S02350.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],BADDR,LENGTH,RFETL); 02352 M01S02351.acccat +++| FET$EP[0] = TRUE; 02353 M01S02352.acccat +++| FET$R[0] = TRUE; 02354 M01S02353.acccat +++| FET$RR[0] = PRM$ASTLOC[SMID ]; 02355 M01S02354.acccat +++| READ(FETSET[0],RCL); 02356 M01S02355.acccat +++| IF FET$AT[0] NQ 0 02357 M01S02356.acccat +++| THEN 02358 M01S02357.acccat +++| BEGIN 02359 M01S02358.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,FETSET[0]); 02360 M01S02359.acccat +++| RETURN; 02361 M01S02360.acccat +++| END 02362 M01S02361.acccat +++| 02363 M01S02362.acccat +++| CRDPRM(ORD,ERRSTAT); 02364 M01S02363.acccat +++| RETURN; 02365 M01S02364.acccat +++| END # CRDAST # 02366 M01S02365.acccat +++| 02367 M01S02366.acccat +++| TERM 02368 M01S02367.acccat +++|PROC CRDPRM((TORD),ERRSTAT); 02369 M01S02368.acccat +++|# TITLE CRDPRM - READ CATALOG PREAMBLE. # 02370 M01S02369.acccat +++| BEGIN # CRDPRM # 02371 M01S02370.acccat +++| 02372 M01S02371.acccat +++|# 02373 M01S02372.acccat +++|** CRDPRM - READ CATALOG PREAMBLE. 02374 M01S02373.acccat +++|* 02375 M01S02374.acccat +++|* *CRDPRM* READS THE HEADER OF EACH 02376 M01S02375.acccat +++|* SUBCATALOG ENTRY IN THE PREAMBLE INTO A BUFFER (THE 02377 M01S02376.acccat +++|* PREAMBLE TABLE). 02378 M01S02377.acccat +++|* 02379 M01S02378.acccat +++|* CRDPRM - IS CALLED BY COPEN. 02380 M01S02379.acccat +++|* 02381 M01S02380.acccat +++|* PROC CRDPRM((TORD),ERRSTAT) 02382 M01S02381.acccat +++|* 02383 M01S02382.acccat +++|* ENTRY (TORD) - ORDINAL OF CATALOGS ENTRY IN THE OPEN CATALOG 02384 M01S02383.acccat +++|* TABLE. 02385 M01S02384.acccat +++|* 02386 M01S02385.acccat +++|* EXIT A CATALOG PREAMBLE IS READ INTO A BUFFER AND 02387 M01S02386.acccat +++|* UPDATED. 02388 M01S02387.acccat +++|* (ERRSTAT) - ERROR STATUS. 02389 M01S02388.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02390 M01S02389.acccat +++|* = NO ERRORS. 02391 M01S02390.acccat +++|* = *CIO* ERROR. 02392 M01S02391.acccat +++|* = CATALOG ATTACH ERROR. 02393 M01S02392.acccat +++|* 02394 M01S02393.acccat +++|* NOTES WHEN A CATALOG IS OPENED, A PREAMBLE IS READ 02395 M01S02394.acccat +++|* INTO THE PREAMBLE TABLE, TO BE USED TO REFERENCE 02396 M01S02395.acccat +++|* DATA IN THE PREAMBLE, THUS REDUCING DISK REFERENCES. 02397 M01S02396.acccat +++|# 02398 M01S02397.acccat +++| 02399 M01S02398.acccat +++| ITEM TORD I; # OPEN CATALOG TABLE ORDINAL # 02400 M01S02399.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02401 M01S02400.acccat +++| 02402 M01S02401.acccat +++|# 02403 M01S02402.acccat +++|**** PROC CRDPRM - XREF LIST BEGIN. 02404 M01S02403.acccat +++|# 02405 M01S02404.acccat +++| 02406 M01S02405.acccat +++| XREF 02407 M01S02406.acccat +++| BEGIN 02408 M01S02407.acccat +++| PROC CCLOSE; # CLOSE CATALOGS # 02409 M01S02408.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02410 M01S02409.acccat +++| PROC REWIND; # REWIND FILE # 02411 M01S02410.acccat +++| PROC RPHR; # READ PRU TO *CIO* BUFFER # 02412 M01S02411.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02413 M01S02412.acccat +++| END 02414 M01S02413.acccat +++| 02415 M01S02414.acccat +++|# 02416 M01S02415.acccat +++|**** PROC CRDPRM - XREF LIST END. 02417 M01S02416.acccat +++|# 02418 M01S02417.acccat +++| 02419 M01S02418.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02420 M01S02419.acccat +++|*CALL COMBFAS 02421 M01S02420.acccat +++|*CALL COMBCMD 02422 M01S02421.acccat +++|*CALL COMBCMS 02423 M01S02422.acccat +++|*CALL COMBFET 02424 M01S02423.acccat +++|*CALL COMBMCT 02425 M01S02424.acccat +++|*CALL COMXMSC 02426 M01S02425.acccat +++| 02427 M01S02426.acccat +++| ITEM I I; # LOOP COUNTER # 02428 M01S02427.acccat +++| ITEM J I; # LOOP COUNTER # 02429 M01S02428.acccat +++|CONTROL EJECT; 02430 M01S02429.acccat +++| 02431 M01S02430.acccat +++|# 02432 M01S02431.acccat +++|* READ CATALOG PREAMBLE INTO BUFFER. 02433 M01S02432.acccat +++|# 02434 M01S02433.acccat +++| 02435 M01S02434.acccat +++| OCT$PRMA[TORD] = (PRMBADR+((TORD-1)*PRMTLEN*3)); 02436 M01S02435.acccat +++| ZSETFET(TFETADR,OCT$LFN[TORD],TBUFADR,2*PRULEN,RFETL); 02437 M01S02436.acccat +++| FET$EP[0] = TRUE; 02438 M01S02437.acccat +++| REWIND(FETSET[0],RCL); 02439 M01S02438.acccat +++| RPHR(FETSET[0],RCL); 02440 M01S02439.acccat +++| IF FET$AT[0] NQ 0 02441 M01S02440.acccat +++| THEN 02442 M01S02441.acccat +++| BEGIN 02443 M01S02442.acccat +++| GOTO ERR; 02444 M01S02443.acccat +++| END 02445 M01S02444.acccat +++| 02446 M01S02445.acccat +++| P<PREAMBLE> = OCT$PRMA[TORD]; 02447 M01S02446.acccat +++| 02448 M01S02447.acccat +++|# 02449 M01S02448.acccat +++|* TRANSFER HEADER OF EACH ENTRY TO THE TABLE. 02450 M01S02449.acccat +++|# 02451 M01S02450.acccat +++| 02452 M01S02451.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 02453 M01S02452.acccat +++| DO 02454 M01S02453.acccat +++| BEGIN 02455 M01S02454.acccat +++| PRM$SCW1[I] = TBUF$W[I + 1]; 02456 M01S02455.acccat +++| PRM$SCW2[I] = TBUF$W1[I + 1]; 02457 M01S02456.acccat +++| PRM$SCW3[I] = TBUF$W2[I + 1]; 02458 M01S02457.acccat +++| END 02459 M01S02458.acccat +++| 02460 M01S02459.acccat +++| IF OCT$FAM[TORD] NQ PRM$FAM[0] ## 02461 M01S02460.acccat +++| OR OCT$SUBF[TORD] NQ PRM$SUBF[0] 02462 M01S02461.acccat +++| THEN # IF WRONG CATALOG ATTACHED # 02463 M01S02462.acccat +++| BEGIN 02464 M01S02463.acccat +++| CCLOSE(OCT$FAM[TORD],OCT$SUBF[TORD],0,ERRSTAT); 02465 M01S02464.acccat +++| ERRSTAT = CMASTAT"ATTERR"; 02466 M01S02465.acccat +++| RETURN; # RETURN ERROR STATUS # 02467 M01S02466.acccat +++| END 02468 M01S02467.acccat +++| 02469 M01S02468.acccat +++| 02470 M01S02469.acccat +++|# CHANGE DELETED 36 LINES THAT UPDATED STREAM COUNTS # 02471 M01S02470.acccat +++| RETURN; 02472 M01S02471.acccat +++|ERR: # PROCESS *CIO* ERROR # 02473 M01S02472.acccat +++| CPIOERR(OCT$FAM[TORD],OCT$SUBF[TORD],0,ERRSTAT,FETSET[0]); 02474 M01S02473.acccat +++| RETURN; 02475 M01S02474.acccat +++| END # CRDPRM # 02476 M01S02475.acccat +++| 02477 M01S02476.acccat +++| TERM 02478 M01S02477.acccat +++|PROC CRELSLK((FAMNM),(MASK),(QRADDR),ERRSTAT); 02479 M01S02478.acccat +++|# TITLE CRELSLK - RELEASE CATALOG INTERLOCKS. # 02480 M01S02479.acccat +++| BEGIN # CRELSLK # 02481 M01S02480.acccat +++| 02482 M01S02481.acccat +++|# 02483 M01S02482.acccat +++|** CRELSLK - RELEASE CATALOG INTERLOCKS. 02484 M01S02483.acccat +++|* 02485 M01S02484.acccat +++|* *CRELSLK* RETURNS THE SPECIFIED CATALOGS IF THEY ARE INTERLOCKED 02486 M01S02485.acccat +++|* AND SETS THE INTERLOCK BIT IN THE OPEN CATALOG TABLE TO INDICATE 02487 M01S02486.acccat +++|* THAT THE INTERLOCK HAS BEEN GIVEN UP BY *MSSEXEC*. 02488 M01S02487.acccat +++|* 02489 M01S02488.acccat +++|* CRELSLK - IS CALLED BY HLRQMTR,TDAM$RP. 02490 M01S02489.acccat +++|* 02491 M01S02490.acccat +++|* PROC CRELSLK((FAMNM),(MASK),(QRADDR),ERRSTAT) 02492 M01S02491.acccat +++|* 02493 M01S02492.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02494 M01S02493.acccat +++|* 7 CHARACTER MAXIMUM. 02495 M01S02494.acccat +++|* (MASK) - THE 8-BIT DEVICE MASK FOR A DEVICE. 02496 M01S02495.acccat +++|* 02497 M01S02496.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 02498 M01S02497.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02499 M01S02498.acccat +++|* = *CIO* ERROR. 02500 M01S02499.acccat +++|* THE SPECIFIED CATALOGS ARE RETURNED. THE INTERLOCK 02501 M01S02500.acccat +++|* BIT IS SET IN THE CORRESPONDING *OCT* ENTRIES, AND THE 02502 M01S02501.acccat +++|* GLOBAL INTERLOCK FLAG IS SET. 02503 M01S02502.acccat +++|# 02504 M01S02503.acccat +++| 02505 M01S02504.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02506 M01S02505.acccat +++| ITEM MASK U; # DEVICE MASK # 02507 M01S02506.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02508 M01S02507.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02509 M01S02508.acccat +++| 02510 M01S02509.acccat +++|# 02511 M01S02510.acccat +++|**** PROC CRELSLK - XREF LIST BEGIN. 02512 M01S02511.acccat +++|# 02513 M01S02512.acccat +++| 02514 M01S02513.acccat +++| XREF 02515 M01S02514.acccat +++| BEGIN 02516 M01S02515.acccat +++| PROC BFLUSH; # BUFFER FLUSH # 02517 M01S02516.acccat +++| PROC RETERN; # RETURN FILE TO SYSTEM # 02518 M01S02517.acccat +++| PROC RTIME; # GET REAL TIME CLOCK READING # 02519 M01S02518.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02520 M01S02519.acccat +++| END 02521 M01S02520.acccat +++| 02522 M01S02521.acccat +++|# 02523 M01S02522.acccat +++|**** PROC CRELSLK - XREF LIST END. 02524 M01S02523.acccat +++|# 02525 M01S02524.acccat +++| 02526 M01S02525.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02527 M01S02526.acccat +++|*CALL COMBFAS 02528 M01S02527.acccat +++|*CALL COMBCMD 02529 M01S02528.acccat +++|*CALL COMBCMS 02530 M01S02529.acccat +++|*CALL COMXCTF 02531 M01S02530.acccat +++|*CALL COMXIPR 02532 M01S02531.acccat +++| 02533 M01S02532.acccat +++| ITEM I I; # LOOP COUNTER # 02534 M01S02533.acccat +++|CONTROL EJECT; 02535 M01S02534.acccat +++| 02536 M01S02535.acccat +++| ERRSTAT = CMASTAT"NOERR"; 02537 M01S02536.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02538 M01S02537.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02539 M01S02538.acccat +++| THEN 02540 M01S02539.acccat +++| BEGIN 02541 M01S02540.acccat +++| RETURN; 02542 M01S02541.acccat +++| END 02543 M01S02542.acccat +++| 02544 M01S02543.acccat +++| FASTFOR I = 1 STEP 1 UNTIL OCTLEN 02545 M01S02544.acccat +++| DO 02546 M01S02545.acccat +++| BEGIN 02547 M01S02546.acccat +++| IF OCT$FAM[I] EQ FAMNM AND NOT OCT$INTLK[I] ## 02548 M01S02547.acccat +++| AND B<(59-OCT$SUBF[I]),1>MASK EQ 1 02549 M01S02548.acccat +++| THEN # IF INTERLOCK TO BE GIVEN UP # 02550 M01S02549.acccat +++| BEGIN 02551 M01S02550.acccat +++| GLBINTLK = TRUE; # SET GLOBAL INTERLOCK FLAG # 02552 M01S02551.acccat +++| OCT$INTLK[I] = TRUE; 02553 M01S02552.acccat +++| RTIME(RTIMESTAT[0]); 02554 M01S02553.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02555 M01S02554.acccat +++| ZSETFET(TFETADR,OCT$LFN[I],TBUFADR,TBUFL,RFETL); 02556 M01S02555.acccat +++| RETERN(TFET[0],RCL); 02557 M01S02556.acccat +++| END 02558 M01S02557.acccat +++| 02559 M01S02558.acccat +++| END 02560 M01S02559.acccat +++| 02561 M01S02560.acccat +++| RETURN; 02562 M01S02561.acccat +++| END # CRELSLK # 02563 M01S02562.acccat +++| 02564 M01S02563.acccat +++| TERM 02565 M01S02564.acccat +++|PROC CRELSMM((FAMNM),(MASK),(QRADDR),ERRSTAT); 02566 M01S02565.acccat +++|# TITLE CRELSMM - RELEASE CATALOG IN MODIFY MODE. # 02567 M01S02566.acccat +++| BEGIN # CRELSMM # 02568 M01S02567.acccat +++| 02569 M01S02568.acccat +++|# 02570 M01S02569.acccat +++|** CRELSMM - RELEASE CATALOG IN MODIFY MODE. 02571 M01S02570.acccat +++|* 02572 M01S02571.acccat +++|* *CRELSMM* ATTACHES THE SPECIFIED CATALOGS IN UPDATE MODE 02573 M01S02572.acccat +++|* (RELINQUISHING MODIFY MODE) IF THEY ARE INTERLOCKED BY 02574 M01S02573.acccat +++|* *SSEXEC* AND SETS THE UPDATE MODE INTERLOCK FLAG IN THE 02575 M01S02574.acccat +++|* OPEN CATALOG TABLE. *PFDUMP* WILL ATTACH THE CATALOGS IN 02576 M01S02575.acccat +++|* READ/ALLOW UPDATE MODE, PREVENTING *SSEXEC* FROM 02577 M01S02576.acccat +++|* RECLAIMING THE CATALOGS IN MODIFY MODE UNTIL IT RETURNS 02578 M01S02577.acccat +++|* THEM. DESTAGING FILES AND ADDING, EXTENDING OR REMOVING 02579 M01S02578.acccat +++|* SUBCATALOGS ARE NOT ALLOWED WHILE THIS INTERLOCK IS SET. 02580 M01S02579.acccat +++|* 02581 M01S02580.acccat +++|* PROC CRELSMM((FAMNM),(MASK),(QRADDR),ERRSTAT) 02582 M01S02581.acccat +++|* 02583 M01S02582.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02584 M01S02583.acccat +++|* 7 CHARACTER MAXIMUM. 02585 M01S02584.acccat +++|* (MASK) - THE 8-BIT DEVICE MASK FOR A DEVICE. 02586 M01S02585.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02587 M01S02586.acccat +++|* 02588 M01S02587.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 02589 M01S02588.acccat +++|* (VALUES DEFINED IN *COMACMS*) 02590 M01S02589.acccat +++|* = NO ERRORS. 02591 M01S02590.acccat +++|* = I/O ERROR. 02592 M01S02591.acccat +++|* = CATALOG ATTACH ERROR. 02593 M01S02592.acccat +++|* IF THE DESIRED FAMILY IS NOT FOUND ON A *SETPFP*, AN 02594 M01S02593.acccat +++|* ERROR MESSAGE IS ISSUED AND THE PROGRAM IS ABORTED. 02595 M01S02594.acccat +++|* 02596 M01S02595.acccat +++|* THE SPECIFIED CATALOGS ARE ATTACHED IN UPDATE MODE. 02597 M01S02596.acccat +++|* THE INTERLOCK FLAG IS SET IN THE CORRESPONDING *OCT* 02598 M01S02597.acccat +++|* ENTRIES AND THE GLOBAL INTERLOCK FLAG IS SET, IF THE 02599 M01S02598.acccat +++|* INTERLOCK WAS RELEASED. 02600 M01S02599.acccat +++|* 02601 M01S02600.acccat +++|* MESSAGES * PROGRAM ABNORMAL, CRELSMM.* 02602 M01S02601.acccat +++|* * UNABLE TO REATTACH SMF CATALOG. 02603 M01S02602.acccat +++|* SMFCATN FOR FAMILY FFFFFFF CLOSED.* 02604 M01S02603.acccat +++|# 02605 M01S02604.acccat +++| 02606 M01S02605.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02607 M01S02606.acccat +++| ITEM MASK U; # DEVICE MASK # 02608 M01S02607.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02609 M01S02608.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02610 M01S02609.acccat +++| 02611 M01S02610.acccat +++|# 02612 M01S02611.acccat +++|**** PROC CRELSMM - XREF LIST BEGIN. 02613 M01S02612.acccat +++|# 02614 M01S02613.acccat +++| 02615 M01S02614.acccat +++| XREF 02616 M01S02615.acccat +++| BEGIN 02617 M01S02616.acccat +++| PROC ABORT; # ABORT # 02618 M01S02617.acccat +++| PROC BFLUSH; # BUFFER FLUSH # 02619 M01S02618.acccat +++| PROC BZFILL; # BLANK OR ZERO FILL WORD # 02620 M01S02619.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 02621 M01S02620.acccat +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 02622 M01S02621.acccat +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS # 02623 M01S02622.acccat +++| PROC RTIME; # GET REAL TIME CLOCK READING # 02624 M01S02623.acccat +++| PROC SETPFP; # SET PERMANENT FILE PARAMETERS # 02625 M01S02624.acccat +++| FUNC XCDD C(10); # INTEGER TO DISPLAY CODE 02626 M01S02625.acccat +++| CONVERSION # 02627 M01S02626.acccat +++| PROC ZFILL; # ZERO FILL A BUFFER # 02628 M01S02627.acccat +++| END 02629 M01S02628.acccat +++| 02630 M01S02629.acccat +++|# 02631 M01S02630.acccat +++|**** PROC CRELSMM - XREF LIST END. 02632 M01S02631.acccat +++|# 02633 M01S02632.acccat +++| 02634 M01S02633.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02635 M01S02634.acccat +++|*CALL COMBFAS 02636 M01S02635.acccat +++|*CALL COMBBZF 02637 M01S02636.acccat +++|*CALL COMBCMD 02638 M01S02637.acccat +++|*CALL COMBCMS 02639 M01S02638.acccat +++|*CALL COMBPFP 02640 M01S02639.acccat +++|*CALL COMBPFS 02641 M01S02640.acccat +++|*CALL COMXCTF 02642 M01S02641.acccat +++|*CALL COMXIPR 02643 M01S02642.acccat +++| 02644 M01S02643.acccat +++| ITEM CATPFN C(7); # MSF CATALOG PFN # 02645 M01S02644.acccat +++| ITEM DIS$SUBF C(10); # SUBFAMILY (DISPLAY CODE) # 02646 M01S02645.acccat +++| ITEM FAMILY C(7); # FAMILY NAME # 02647 M01S02646.acccat +++| ITEM I I; # LOOP COUNTER # 02648 M01S02647.acccat +++| CONTROL EJECT; 02649 M01S02648.acccat +++| 02650 M01S02649.acccat +++| ERRSTAT = CMASTAT"NOERR"; 02651 M01S02650.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02652 M01S02651.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02653 M01S02652.acccat +++| THEN 02654 M01S02653.acccat +++| BEGIN 02655 M01S02654.acccat +++| RETURN; 02656 M01S02655.acccat +++| END 02657 M01S02656.acccat +++| 02658 M01S02657.acccat +++| FASTFOR I = 1 STEP 1 UNTIL OCTLEN 02659 M01S02658.acccat +++| DO 02660 M01S02659.acccat +++| BEGIN # SEARCH *OCT* # 02661 M01S02660.acccat +++| IF OCT$FAM[I] EQ FAMNM ## 02662 M01S02661.acccat +++| AND NOT OCT$INTLK[I] ## 02663 M01S02662.acccat +++| # AND NOT OCT$UMI[I] # 02664 M01S02663.acccat +++| AND B<(59-OCT$SUBF[I]),1>MASK EQ 1 02665 M01S02664.acccat +++| THEN 02666 M01S02665.acccat +++| BEGIN # INTERLOCK TO BE GIVEN UP # 02667 M01S02666.acccat +++| PFP$FAM[0] = OCT$FAM[I]; # SET FAMILY AND USER INDEX # 02668 M01S02667.acccat +++| PFP$UI[0] = DEF$UI + OCT$SUBF[I]; 02669 M01S02668.acccat +++| PFP$FG1[0] = TRUE; 02670 M01S02669.acccat +++| PFP$FG4[0] = TRUE; 02671 M01S02670.acccat +++| SETPFP(PFP); 02672 M01S02671.acccat +++| IF PFP$STAT NQ 0 02673 M01S02672.acccat +++| THEN # IF FAMILY NOT FOUND # 02674 M01S02673.acccat +++| BEGIN 02675 M01S02674.acccat +++| CMA$RTN[0] = "CRELSMM."; 02676 M01S02675.acccat +++| MESSAGE(CMAMSG,UDFL1); # ISSUE ERROR MESSAGE # 02677 M01S02676.acccat +++| ABORT; 02678 M01S02677.acccat +++| END 02679 M01S02678.acccat +++| 02680 M01S02679.acccat +++| CATPFN = SFMCAT; # REATTACH IN UPDATE MODE # 02681 M01S02680.acccat +++| DIS$SUBF = XCDD(OCT$SUBF[I]); 02682 M01S02681.acccat +++| C<6,1>CATPFN = C<9,1>DIS$SUBF; 02683 M01S02682.acccat +++| PFD("ATTACH",OCT$LFN[I],CATPFN,"M","U", 02684 M01S02683.acccat +++| "RC",PFSTAT,"NA",0,"UP",0,0); 02685 M01S02684.acccat +++| IF PFSTAT NQ 0 02686 M01S02685.acccat +++| THEN # ATTACH ERROR # 02687 M01S02686.acccat +++| BEGIN 02688 M01S02687.acccat +++| CMSGLINE[0] = CMSG3; 02689 M01S02688.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02690 M01S02689.acccat +++| CMSGLINE[0] = CMSGCLOSE; 02691 M01S02690.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 02692 M01S02691.acccat +++| FAMILY = OCT$FAM[I]; 02693 M01S02692.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 02694 M01S02693.acccat +++| CMSGCFAM[0] = FAMILY; 02695 M01S02694.acccat +++| RMVBLNK(CMSGAREA,48); 02696 M01S02695.acccat +++| MESSAGE(CMSGAREA,UDFL1); 02697 M01S02696.acccat +++| ZFILL(OCT[I],OCTENTL); # CLEAR *OCT* ENTRY # 02698 M01S02697.acccat +++| TEST I; 02699 M01S02698.acccat +++| END 02700 M01S02699.acccat +++| 02701 M01S02700.acccat +++| GLBINTLK = TRUE; # SET GLOBAL INTERLOCK FLAG # 02702 M01S02701.acccat +++| # OCT$UMI[I] = TRUE # 02703 M01S02702.acccat +++| RTIME(RTIMESTAT[0]); 02704 M01S02703.acccat +++| ITLK$EXPIR = RTIMSECS[0] + INLK$INTV; 02705 M01S02704.acccat +++| END # INTERLOCK TO BE GIVEN UP # 02706 M01S02705.acccat +++| 02707 M01S02706.acccat +++| END # SEARCH *OCT* # 02708 M01S02707.acccat +++| 02709 M01S02708.acccat +++| RETURN; 02710 M01S02709.acccat +++| END # CRELSMM # 02711 M01S02710.acccat +++| 02712 M01S02711.acccat +++| TERM 02713 M01S02712.acccat +++|PROC CRMVSC((FAMNM),(SUBF),(SMID ),(QRADDR),ERRSTAT); 02714 M01S02713.acccat +++|# TITLE CRMVSC - REMOVE SUBCATALOG. # 02715 M01S02714.acccat +++| BEGIN # CRMVSC # 02716 M01S02715.acccat +++| 02717 M01S02716.acccat +++|# 02718 M01S02717.acccat +++|** CRMVSC - REMOVE SUBCATALOG. 02719 M01S02718.acccat +++|* 02720 M01S02719.acccat +++|* *CRMVSC* REMOVES THE SPECIFIED SUBCATALOG FROM THE CATALOG FILE. 02721 M01S02720.acccat +++|* THE CATALOG MUST BE OPEN IN MODIFY MODE. 02722 M01S02721.acccat +++|* 02723 M01S02722.acccat +++|* CRMVSC - IS CALLED BY RMVCSU. 02724 M01S02723.acccat +++|* 02725 M01S02724.acccat +++|* PROC CRMVSC((FAMNM),(SUBF),(SMID ),(QRADDR),ERRSTAT) 02726 M01S02725.acccat +++|* 02727 M01S02726.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 02728 M01S02727.acccat +++|* 7 CHARACTER MAXIMUM. 02729 M01S02728.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 02730 M01S02729.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 02731 M01S02730.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 02732 M01S02731.acccat +++|* 02733 M01S02732.acccat +++|* EXIT THE SUBCATALOG HAS BEEN REMOVED AND THE CATALOG 02734 M01S02733.acccat +++|* PREAMBLE HAS BEEN UPDATED TO REFLECT THE CHANGE. 02735 M01S02734.acccat +++|* (ERRSTAT) - ERROR STATUS. 02736 M01S02735.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 02737 M01S02736.acccat +++|* = NO ERRORS. 02738 M01S02737.acccat +++|* = CATALOG FILE INTERLOCKED. 02739 M01S02738.acccat +++|* = CATALOG NOT OPEN. 02740 M01S02739.acccat +++|* = CATALOG NOT OPEN IN MODIFY MODE. 02741 M01S02740.acccat +++|* = NO SUCH SUBCATALOG. 02742 M01S02741.acccat +++|* = *CIO* ERROR. 02743 M01S02742.acccat +++|* = FILE DEFINE ERROR. 02744 M01S02743.acccat +++|* = FILE ATTACH ERROR. 02745 M01S02744.acccat +++|* = FILE PURGE ERROR. 02746 M01S02745.acccat +++|* = FILE RENAME ERROR. 02747 M01S02746.acccat +++|* IF THE DESIRED FAMILY IS NOT FOUND ON A *SETPFP*, AN 02748 M01S02747.acccat +++|* ERROR MESSAGE IS ISSUED AND THE PROGRAM IS ABORTED. 02749 M01S02748.acccat +++|* 02750 M01S02749.acccat +++|* NOTES THE CATALOG IS RE-ATTACHED IN WRITE MODE BEFORE 02751 M01S02750.acccat +++|* REMOVING THE SUBCATALOG IN ORDER TO ALTER THE FILE 02752 M01S02751.acccat +++|* LENGTH, AND WHEN FINISHED, THE FILE IS ATTACHED IN 02753 M01S02752.acccat +++|* MODIFY MODE AGAIN. 02754 M01S02753.acccat +++|* 02755 M01S02754.acccat +++|* MESSAGES * PROGRAM ABNORMAL, CRMVSC.*. 02756 M01S02755.acccat +++|# 02757 M01S02756.acccat +++| 02758 M01S02757.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 02759 M01S02758.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 02760 M01S02759.acccat +++| ITEM SMID U; # SM IDENTIFIER # 02761 M01S02760.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 02762 M01S02761.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 02763 M01S02762.acccat +++| 02764 M01S02763.acccat +++|# 02765 M01S02764.acccat +++|**** PROC CRMVSC - XREF LIST BEGIN. 02766 M01S02765.acccat +++|# 02767 M01S02766.acccat +++| 02768 M01S02767.acccat +++| XREF 02769 M01S02768.acccat +++| BEGIN 02770 M01S02769.acccat +++| PROC ABORT; # ABORT # 02771 M01S02770.acccat +++| PROC BFLUSH; # FLUSH *FCT* I/O BUFFER # 02772 M01S02771.acccat +++| PROC CDEFTF; # DEFINE TEMPORARY CATALOG # 02773 M01S02772.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 02774 M01S02773.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 02775 M01S02774.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 02776 M01S02775.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 02777 M01S02776.acccat +++| PROC READW; # READ DATA TO WORKING BUFFER # 02778 M01S02777.acccat +++| PROC REPLCAT; # REPLACE MSF CATALOG # 02779 M01S02778.acccat +++| PROC REWIND; # REWIND A FILE # 02780 M01S02779.acccat +++| PROC SETPFP; # SET PERMANENT FILE PARAMETERS # 02781 M01S02780.acccat +++| PROC WRITEF; # WRITE END OF FILE # 02782 M01S02781.acccat +++| PROC WRITEW; # WRITE DATA FROM WORKING BUFFER # 02783 M01S02782.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 02784 M01S02783.acccat +++| END 02785 M01S02784.acccat +++| 02786 M01S02785.acccat +++|# 02787 M01S02786.acccat +++|**** PROC CRMVSC - XREF LIST END. 02788 M01S02787.acccat +++|# 02789 M01S02788.acccat +++| 02790 M01S02789.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 02791 M01S02790.acccat +++|*CALL COMBFAS 02792 M01S02791.acccat +++|*CALL COMBCMD 02793 M01S02792.acccat +++|*CALL COMBCMS 02794 M01S02793.acccat +++|*CALL COMBFET 02795 M01S02794.acccat +++|*CALL COMBMCT 02796 M01S02795.acccat +++|*CALL COMBPFP 02797 M01S02796.acccat +++|*CALL COMXMSC 02798 M01S02797.acccat +++| 02799 M01S02798.acccat +++| ITEM I I; # LOOP COUNTER # 02800 M01S02799.acccat +++| ITEM J I; # LOOP COUNTER # 02801 M01S02800.acccat +++| ITEM NAST I; # NUMBER OF PRU-S IN *AST* # 02802 M01S02801.acccat +++| ITEM NFCT I; # NUMBER OF PRU-S IN *FCT* # 02803 M01S02802.acccat +++| ITEM NPRU I; # NUMBER OF PRU-S TO REMOVE # 02804 M01S02803.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 02805 M01S02804.acccat +++| ITEM RMV I; # SUBCATALOG LOCATION # 02806 M01S02805.acccat +++| ITEM STAT I; # STATUS # 02807 M01S02806.acccat +++|CONTROL EJECT; 02808 M01S02807.acccat +++| 02809 M01S02808.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 02810 M01S02809.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02811 M01S02810.acccat +++| THEN 02812 M01S02811.acccat +++| BEGIN 02813 M01S02812.acccat +++| RETURN; # RETURN ERROR STATUS # 02814 M01S02813.acccat +++| END 02815 M01S02814.acccat +++| 02816 M01S02815.acccat +++| IF OCT$ATTM[ORD] NQ "M" 02817 M01S02816.acccat +++| THEN # IF NOT OPEN IN MODIFY MODE # 02818 M01S02817.acccat +++| BEGIN 02819 M01S02818.acccat +++| ERRSTAT = CMASTAT"MODERR"; 02820 M01S02819.acccat +++| RETURN; # RETURN ERROR STATUS # 02821 M01S02820.acccat +++| END 02822 M01S02821.acccat +++| 02823 M01S02822.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 02824 M01S02823.acccat +++| IF PRM$SCW1[SMID ] EQ 0 02825 M01S02824.acccat +++| THEN # IF NO SUCH SUBCATALOG # 02826 M01S02825.acccat +++| BEGIN 02827 M01S02826.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 02828 M01S02827.acccat +++| RETURN; # RETURN ERROR STATUS # 02829 M01S02828.acccat +++| END 02830 M01S02829.acccat +++| 02831 M01S02830.acccat +++| BFLUSH(QRADDR,ERRSTAT); # FLUSH CATALOG *FCT* I/O BUFFER # 02832 M01S02831.acccat +++| FB$CWRD[0] = 0; 02833 M01S02832.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02834 M01S02833.acccat +++| THEN 02835 M01S02834.acccat +++| BEGIN 02836 M01S02835.acccat +++| RETURN; 02837 M01S02836.acccat +++| END 02838 M01S02837.acccat +++| 02839 M01S02838.acccat +++|# 02840 M01S02839.acccat +++|* SET FAMILY AND USER INDEX. 02841 M01S02840.acccat +++|# 02842 M01S02841.acccat +++| 02843 M01S02842.acccat +++| PFP$WRD0[0] = 0; 02844 M01S02843.acccat +++| PFP$FAM[0] = OCT$FAM[ORD]; 02845 M01S02844.acccat +++| PFP$UI[0] = DEF$UI + OCT$SUBF[ORD]; 02846 M01S02845.acccat +++| PFP$FG1[0] = TRUE; 02847 M01S02846.acccat +++| PFP$FG4[0] = TRUE; 02848 M01S02847.acccat +++| SETPFP(PFP); 02849 M01S02848.acccat +++| IF PFP$STAT[0] NQ 0 02850 M01S02849.acccat +++| THEN # IF FAMILY NOT FOUND # 02851 M01S02850.acccat +++| BEGIN 02852 M01S02851.acccat +++| CMA$RTN[0] = "CRMVSC."; 02853 M01S02852.acccat +++| MESSAGE(CMAMSG,UDFL1); # ISSUE ERROR MESSAGE # 02854 M01S02853.acccat +++| ABORT; 02855 M01S02854.acccat +++| END 02856 M01S02855.acccat +++| 02857 M01S02856.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],FCTBADR,SEQBL,RFETL); 02858 M01S02857.acccat +++| FET$EP[0] = TRUE; 02859 M01S02858.acccat +++| ZSETFET(TFETADR+RFETL,TSFMCAT,TBUFADR,TBUFL,RFETL); 02860 M01S02859.acccat +++| FET$EP[0] = TRUE; 02861 M01S02860.acccat +++| REWIND(TFET[0],NRCL); 02862 M01S02861.acccat +++| CDEFTF(TFET[1],ERRSTAT); # DEFINE TEMPORARY CATALOG FILE # 02863 M01S02862.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 02864 M01S02863.acccat +++| THEN 02865 M01S02864.acccat +++| BEGIN 02866 M01S02865.acccat +++| RETURN; # RETURN ERROR STATUS # 02867 M01S02866.acccat +++| END 02868 M01S02867.acccat +++| 02869 M01S02868.acccat +++|# 02870 M01S02869.acccat +++|* DETERMINE SUBCATALOG LENGTH. 02871 M01S02870.acccat +++|# 02872 M01S02871.acccat +++| 02873 M01S02872.acccat +++| NFCT = PRM$ENTRC[SMID] * 16; 02874 M01S02873.acccat +++| NAST = (MAXORD/PRULEN) * 2 + 1; 02875 M01S02874.acccat +++| NPRU = NFCT + NAST; # SUBCATALOG LENGTH IN PRU-S # 02876 M01S02875.acccat +++| 02877 M01S02876.acccat +++|# 02878 M01S02877.acccat +++|* UPDATE CATALOG PREAMBLE. 02879 M01S02878.acccat +++|# 02880 M01S02879.acccat +++| 02881 M01S02880.acccat +++| RMV = PRM$ASTLOC[SMID]; # SAVE SUBCATALOG LOCATION # 02882 M01S02881.acccat +++| PRM$SCW1[SMID ] = 0; # CLEAR ENTRY IN PREAMBLE # 02883 M01S02882.acccat +++| FASTFOR I = 1 STEP 1 UNTIL MAXSM 02884 M01S02883.acccat +++| DO 02885 M01S02884.acccat +++| BEGIN 02886 M01S02885.acccat +++| IF PRM$FCTLOC[I] GR RMV 02887 M01S02886.acccat +++| THEN # IF SUBCATALOG LOCATION CHANGED # 02888 M01S02887.acccat +++| BEGIN 02889 M01S02888.acccat +++| PRM$FCTLOC[I] = PRM$FCTLOC[I] - NPRU; 02890 M01S02889.acccat +++| PRM$ASTLOC[I] = PRM$ASTLOC[I] - NPRU; 02891 M01S02890.acccat +++| END 02892 M01S02891.acccat +++| 02893 M01S02892.acccat +++| END 02894 M01S02893.acccat +++| 02895 M01S02894.acccat +++|# 02896 M01S02895.acccat +++|* TRANSFER CATALOG FILE TO TEMPORARY FILE, REMOVING SUBCATALOG. 02897 M01S02896.acccat +++|# 02898 M01S02897.acccat +++| 02899 M01S02898.acccat +++| READ(TFET[0],RCL); 02900 M01S02899.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02901 M01S02900.acccat +++| IF STAT EQ CIOERR 02902 M01S02901.acccat +++| THEN # IF *CIO* ERROR # 02903 M01S02902.acccat +++| BEGIN 02904 M01S02903.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02905 M01S02904.acccat +++| RETURN; 02906 M01S02905.acccat +++| END 02907 M01S02906.acccat +++| 02908 M01S02907.acccat +++| IF STAT NQ 0 02909 M01S02908.acccat +++| THEN # IF TRANSFER NOT COMPLETE # 02910 M01S02909.acccat +++| BEGIN 02911 M01S02910.acccat +++| CMA$RTN[0] = "CRMVSC."; 02912 M01S02911.acccat +++| MESSAGE(CMAMSG,UDFL1); 02913 M01S02912.acccat +++| ABORT; 02914 M01S02913.acccat +++| END 02915 M01S02914.acccat +++| 02916 M01S02915.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 02917 M01S02916.acccat +++| DO # UPDATE CATALOG PREAMBLE # 02918 M01S02917.acccat +++| BEGIN 02919 M01S02918.acccat +++| WBUF$W[I*3+1] = PRM$SCW1[I]; 02920 M01S02919.acccat +++| WBUF$W[I*3+2] = PRM$SCW2[I]; 02921 M01S02920.acccat +++| WBUF$W[I*3+3] = PRM$SCW3[I]; 02922 M01S02921.acccat +++| END 02923 M01S02922.acccat +++| 02924 M01S02923.acccat +++| P<PREAMBLE> = LOC(WBUF[0]); # CLEAR SECOND WORD OF ENTRY # 02925 M01S02924.acccat +++| PRM$SCW1[SMID] = 0; 02926 M01S02925.acccat +++| PRM$SCW2[SMID ] = 0; 02927 M01S02926.acccat +++| PRM$SCW3[SMID] = 0; 02928 M01S02927.acccat +++| WRITEW(TFET[1],WBUF,WBUFL,STAT); 02929 M01S02928.acccat +++| FASTFOR I = 2 STEP 1 WHILE STAT EQ 0 02930 M01S02929.acccat +++| DO 02931 M01S02930.acccat +++| BEGIN # TRANSFER CATALOG # 02932 M01S02931.acccat +++| IF I EQ RMV # IF AT SUBCATALOG TO BE REMOVED # 02933 M01S02932.acccat +++| THEN 02934 M01S02933.acccat +++| BEGIN # SUBCATALOG TO BE REMOVED # 02935 M01S02934.acccat +++| FASTFOR J = 1 STEP 1 UNTIL NPRU 02936 M01S02935.acccat +++| DO 02937 M01S02936.acccat +++| BEGIN # SKIP SUBCATALOG # 02938 M01S02937.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02939 M01S02938.acccat +++| IF STAT EQ CIOERR 02940 M01S02939.acccat +++| THEN # IF *CIO* ERROR # 02941 M01S02940.acccat +++| BEGIN 02942 M01S02941.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02943 M01S02942.acccat +++| RETURN; 02944 M01S02943.acccat +++| END 02945 M01S02944.acccat +++| 02946 M01S02945.acccat +++| IF STAT NQ 0 02947 M01S02946.acccat +++| THEN # IF *EOR*, *EOF* OR *EOI* # 02948 M01S02947.acccat +++| BEGIN 02949 M01S02948.acccat +++| TEST I; # EXIT TRANSFER CATALOG LOOP # 02950 M01S02949.acccat +++| END 02951 M01S02950.acccat +++| 02952 M01S02951.acccat +++| END # SKIP SUBCATALOG # 02953 M01S02952.acccat +++| 02954 M01S02953.acccat +++| END # SUBCATALOG TO BE REMOVED # 02955 M01S02954.acccat +++| 02956 M01S02955.acccat +++| READW(TFET[0],WBUF,WBUFL,STAT); 02957 M01S02956.acccat +++| IF STAT EQ CIOERR 02958 M01S02957.acccat +++| THEN # IF *CIO* ERROR # 02959 M01S02958.acccat +++| BEGIN 02960 M01S02959.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[0]); 02961 M01S02960.acccat +++| RETURN; 02962 M01S02961.acccat +++| END 02963 M01S02962.acccat +++| 02964 M01S02963.acccat +++| IF STAT NQ 0 # IF *EOR*, *EOF*, OR *EOI* # 02965 M01S02964.acccat +++| THEN 02966 M01S02965.acccat +++| BEGIN 02967 M01S02966.acccat +++| TEST I; # EXIT LOOP # 02968 M01S02967.acccat +++| END 02969 M01S02968.acccat +++| 02970 M01S02969.acccat +++| WRITEW(TFET[1],WBUF,WBUFL,STAT); 02971 M01S02970.acccat +++| IF STAT NQ 0 02972 M01S02971.acccat +++| THEN # IF *CIO* ERROR # 02973 M01S02972.acccat +++| BEGIN 02974 M01S02973.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[1]); 02975 M01S02974.acccat +++| RETURN; 02976 M01S02975.acccat +++| END 02977 M01S02976.acccat +++| 02978 M01S02977.acccat +++| END # TRANSFER CATALOG # 02979 M01S02978.acccat +++| 02980 M01S02979.acccat +++| WRITEF(TFET[1],RCL); 02981 M01S02980.acccat +++| IF FET$AT[0] NQ 0 02982 M01S02981.acccat +++| THEN 02983 M01S02982.acccat +++| BEGIN 02984 M01S02983.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,TFET[1]); 02985 M01S02984.acccat +++| RETURN; 02986 M01S02985.acccat +++| END 02987 M01S02986.acccat +++| 02988 M01S02987.acccat +++|# 02989 M01S02988.acccat +++|* REPLACE MSF CATALOG WITH NEW CATALOG (*TSFMCAT*). 02990 M01S02989.acccat +++|# 02991 M01S02990.acccat +++| 02992 M01S02991.acccat +++| REPLCAT(ORD,ERRSTAT); 02993 M01S02992.acccat +++| RETURN; 02994 M01S02993.acccat +++| END # CRMVSC # 02995 M01S02994.acccat +++| 02996 M01S02995.acccat +++| TERM 02997 M01S02996.acccat +++|PROC CWTAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT); 02998 M01S02997.acccat +++|# TITLE CWTAST - WRITE AVAILABLE STREAM TABLE. # 02999 M01S02998.acccat +++| BEGIN # CWTAST # 03000 M01S02999.acccat +++| 03001 M01S03000.acccat +++|# 03002 M01S03001.acccat +++|** CWTAST - WRITE AVAILABLE STREAM TABLE. 03003 M01S03002.acccat +++|* 03004 M01S03003.acccat +++|* *CWTAST* WRITES THE ENTIRE ALLOCATION SUMMARY TABLE FROM THE 03005 M01S03004.acccat +++|* CALLERS BUFFER TO THE CATALOG FILE. THE FREE AU COUNT 03006 M01S03005.acccat +++|* IN THE CATALOG PREAMBLE IS UPDATED. THE CATALOG MUST BE 03007 M01S03006.acccat +++|* OPEN IN MODIFY MODE. 03008 M01S03007.acccat +++|* 03009 M01S03008.acccat +++|* CWTAST - IS CALLED BY ADDCAR,ADDCUBE,ADDCSU,ALLOCAT, 03010 M01S03009.acccat +++|* DESTAGR,OPENCAT,PURGCHN,PURGFCT,RLSUNS,RMVCAR, 03011 M01S03010.acccat +++|* RMVCUBE,STAGER,UPDCAT. 03012 M01S03011.acccat +++|* 03013 M01S03012.acccat +++|* PROC CWTAST((FAMNM),(SUBF),(SMID ),(BADDR),(QRADDR),ERRSTAT) 03014 M01S03013.acccat +++|* 03015 M01S03014.acccat +++|* ENTRY (FAMNM) - FAMILY NAME, LEFT JUSTIFIED, ZERO FILLED, 03016 M01S03015.acccat +++|* 7 CHARACTER MAXIMUM. 03017 M01S03016.acccat +++|* (SUBF) - SUBFAMILY DESIGNATOR. 03018 M01S03017.acccat +++|* (SMID ) - NUMERIC SM IDENTIFIER. 03019 M01S03018.acccat +++|* (BADDR) - ADDRESS OF BUFFER CONTAINING *AST*. 03020 M01S03019.acccat +++|* (QRADDR) - *HLRQ* ENTRY ADDRESS, ELSE ZERO. 03021 M01S03020.acccat +++|* 03022 M01S03021.acccat +++|* EXIT THE *AST* HAS BEEN WRITTEN FROM THE BUFFER AT THE 03023 M01S03022.acccat +++|* ADDRESS SPECIFIED BY (BADDR) TO THE CATALOG. 03024 M01S03023.acccat +++|* (ERRSTAT) - ERROR STATUS. 03025 M01S03024.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03026 M01S03025.acccat +++|* = NO ERRORS. 03027 M01S03026.acccat +++|* = CATALOG FILE INTERLOCKED. 03028 M01S03027.acccat +++|* = CATALOG NOT OPEN. 03029 M01S03028.acccat +++|* = CATALOG NOT OPEN IN MODIFY MODE. 03030 M01S03029.acccat +++|* = NO SUCH SUBCATALOG. 03031 M01S03030.acccat +++|* = *CIO* ERROR. 03032 M01S03031.acccat +++|* 03033 M01S03032.acccat +++|* NOTES THE LENGTH OF THE *AST* MUST NOT BE CHANGED 03034 M01S03033.acccat +++|* BY THE CALLER. THE CALLERS BUFFER SIZE SHOULD 03035 M01S03034.acccat +++|* BE THE LENGTH OF THE *AST* ROUNDED UP TO A PRU 03036 M01S03035.acccat +++|* MULTIPLE OR LARGER. 03037 M01S03036.acccat +++|# 03038 M01S03037.acccat +++| 03039 M01S03038.acccat +++| ITEM FAMNM C(7); # FAMILY NAME # 03040 M01S03039.acccat +++| ITEM SUBF U; # SUBFAMILY DESIGNATOR # 03041 M01S03040.acccat +++| ITEM SMID U; # SM IDENTIFIER # 03042 M01S03041.acccat +++| ITEM BADDR U; # *AST* BUFFER ADDRESS # 03043 M01S03042.acccat +++| ITEM QRADDR U; # *HLRQ* ENTRY ADDRESS # 03044 M01S03043.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03045 M01S03044.acccat +++| 03046 M01S03045.acccat +++|# 03047 M01S03046.acccat +++|**** PROC CWTAST - XREF LIST BEGIN. 03048 M01S03047.acccat +++|# 03049 M01S03048.acccat +++| 03050 M01S03049.acccat +++| XREF 03051 M01S03050.acccat +++| BEGIN 03052 M01S03051.acccat +++| PROC CPIOERR; # PROCESS MSF CATALOG I/O ERROR # 03053 M01S03052.acccat +++| PROC OCTSRCH; # SEARCH OPEN CATALOG TABLE # 03054 M01S03053.acccat +++| PROC REWRITE; # REWRITE DATA FROM I/O BUFFER # 03055 M01S03054.acccat +++| PROC ZSETFET; # INITIALIZES A FET # 03056 M01S03055.acccat +++| PROC RPHR; # RANDOM READ # 03057 M01S03056.acccat +++| PROC WPHR; # RANDOM WRITE # 03058 M01S03057.acccat +++| END 03059 M01S03058.acccat +++| 03060 M01S03059.acccat +++|# 03061 M01S03060.acccat +++|**** PROC CWTAST - XREF LIST END. 03062 M01S03061.acccat +++|# 03063 M01S03062.acccat +++| 03064 M01S03063.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03065 M01S03064.acccat +++|*CALL COMBFAS 03066 M01S03065.acccat +++|*CALL COMBCMD 03067 M01S03066.acccat +++|*CALL COMBCMS 03068 M01S03067.acccat +++|*CALL COMBFET 03069 M01S03068.acccat +++|*CALL COMBMCT 03070 M01S03069.acccat +++|*CALL COMXMSC 03071 M01S03070.acccat +++|*CALL COMSPFM 03072 M01S03071.acccat +++| 03073 M01S03072.acccat +++| ITEM COUNT I; # FREE STREAM COUNT # 03074 M01S03073.acccat +++| ITEM I I; # LOOP COUNTER # 03075 M01S03074.acccat +++| ITEM LENGTH I; # *AST* LENGTH # 03076 M01S03075.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03077 M01S03076.acccat +++|CONTROL EJECT; 03078 M01S03077.acccat +++| 03079 M01S03078.acccat +++| OCTSRCH(FAMNM,SUBF,ORD,QRADDR,ERRSTAT); # GET *OCT* ORDINAL # 03080 M01S03079.acccat +++| IF ERRSTAT NQ CMASTAT"NOERR" 03081 M01S03080.acccat +++| THEN 03082 M01S03081.acccat +++| BEGIN 03083 M01S03082.acccat +++| RETURN; # RETURN ERROR STATUS # 03084 M01S03083.acccat +++| END 03085 M01S03084.acccat +++| 03086 M01S03085.acccat +++| IF OCT$ATTM[ORD] NQ "M" 03087 M01S03086.acccat +++| THEN # IF NOT OPEN IN MODIFY MODE # 03088 M01S03087.acccat +++| BEGIN 03089 M01S03088.acccat +++| ERRSTAT = CMASTAT"MODERR"; 03090 M01S03089.acccat +++| RETURN; # RETURN ERROR STATUS # 03091 M01S03090.acccat +++| END 03092 M01S03091.acccat +++| 03093 M01S03092.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 03094 M01S03093.acccat +++| IF PRM$SCW1[SMID ] EQ 0 03095 M01S03094.acccat +++| THEN # IF NO SUCH SUBCATALOG # 03096 M01S03095.acccat +++| BEGIN 03097 M01S03096.acccat +++| ERRSTAT = CMASTAT"NOSUBCAT"; 03098 M01S03097.acccat +++| RETURN; 03099 M01S03098.acccat +++| END 03100 M01S03099.acccat +++| 03101 M01S03100.acccat +++| 03102 M01S03101.acccat +++| COUNT = 0; 03103 M01S03102.acccat +++| P<AST> = BADDR; 03104 M01S03103.acccat +++| 03105 M01S03104.acccat +++| 03106 M01S03105.acccat +++|# 03107 M01S03106.acccat +++|* WRITE ENTIRE *AST* FROM CALLERS BUFFER TO CATALOG FILE. 03108 M01S03107.acccat +++|# 03109 M01S03108.acccat +++| 03110 M01S03109.acccat +++| LENGTH = ABUFLEN; 03111 M01S03110.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],BADDR,LENGTH,RFETL); 03112 M01S03111.acccat +++| FET$EP[0] = TRUE; 03113 M01S03112.acccat +++| FET$IN[0] = FET$FRST[0] + LENGTH - 1; 03114 M01S03113.acccat +++| FET$R[0] = TRUE; 03115 M01S03114.acccat +++| FET$RR[0] = PRM$ASTLOC[SMID ]; 03116 M01S03115.acccat +++| REWRITE(FETSET[0],RCL); 03117 M01S03116.acccat +++| IF FET$AT[0] NQ 0 03118 M01S03117.acccat +++| THEN 03119 M01S03118.acccat +++| BEGIN 03120 M01S03119.acccat +++| CPIOERR(FAMNM,SUBF,QRADDR,ERRSTAT,FETSET[0]); 03121 M01S03120.acccat +++| RETURN; 03122 M01S03121.acccat +++| END 03123 M01S03122.acccat +++| 03124 M01S03123.acccat +++| 03125 M01S03124.acccat +++|# 03126 M01S03125.acccat +++|* WRITE UPDATED PREAMBLE TO CATALOG FILE. 03127 M01S03126.acccat +++|# 03128 M01S03127.acccat +++| 03129 M01S03128.acccat +++| ZSETFET(TFETADR,OCT$LFN[ORD],TBUFADR,2*PRULEN,RFETL); 03130 M01S03129.acccat +++| FET$EP[0] = TRUE; 03131 M01S03130.acccat +++| FET$R[0] = TRUE; 03132 M01S03131.acccat +++| FET$RR[0] = 1; 03133 M01S03132.acccat +++| RPHR(FETSET[0],RCL); 03134 M01S03133.acccat +++| IF FET$AT[0] NQ 0 03135 M01S03134.acccat +++| THEN # READ ERROR # 03136 M01S03135.acccat +++| BEGIN 03137 M01S03136.acccat +++| ERRSTAT = CMASTAT"CIOERR"; 03138 M01S03137.acccat +++| FET$AT[0] = 0; 03139 M01S03138.acccat +++| END 03140 M01S03139.acccat +++| 03141 M01S03140.acccat +++| P<PREAMBLE> = OCT$PRMA[ORD]; 03142 M01S03141.acccat +++| FASTFOR I = 0 STEP 1 UNTIL MAXSM 03143 M01S03142.acccat +++| DO # TRANSFER PREAMBLE TO TBUF # 03144 M01S03143.acccat +++| BEGIN 03145 M01S03144.acccat +++| TBUF$W[I + 1] = PRM$SCW1[I]; 03146 M01S03145.acccat +++| TBUF$W1[I + 1] = PRM$SCW2[I]; 03147 M01S03146.acccat +++| TBUF$W2[I + 1] = PRM$SCW3[I]; 03148 M01S03147.acccat +++| END 03149 M01S03148.acccat +++| 03150 M01S03149.acccat +++| FET$RR[0] = 1; 03151 M01S03150.acccat +++| FET$W[0] = TRUE; 03152 M01S03151.acccat +++| WPHR(FETSET[0],RCL); 03153 M01S03152.acccat +++| IF FET$AT[0] NQ 0 03154 M01S03153.acccat +++| THEN 03155 M01S03154.acccat +++| BEGIN 03156 M01S03155.acccat +++| ERRSTAT = CMASTAT"CIOERR"; 03157 M01S03156.acccat +++| FET$AT[0] = 0; 03158 M01S03157.acccat +++| END 03159 M01S03158.acccat +++| 03160 M01S03159.acccat +++| RETURN; 03161 M01S03160.acccat +++| END # CWTAST # 03162 M01S03161.acccat +++| 03163 M01S03162.acccat +++| TERM 03164 M01S03163.acccat +++|PROC OCTSRCH((FAM),(SUB),ORD,(QRADR),ERRSTAT); 03165 M01S03164.acccat +++|# TITLE OCTSRCH - OPEN CATALOG TABLE SEARCH. # 03166 M01S03165.acccat +++| BEGIN # OCTSRCH # 03167 M01S03166.acccat +++| 03168 M01S03167.acccat +++|# 03169 M01S03168.acccat +++|** OCTSRCH - OPEN CATALOG TABLE SEARCH. 03170 M01S03169.acccat +++|* 03171 M01S03170.acccat +++|* *OCTSRCH* SEARCHES THE OPEN CATALOG TABLE TO GET THE ORDINAL 03172 M01S03171.acccat +++|* OF THE ENTRY WITH THE SPECIFIED FAMILY NAME AND SUBFAMILY 03173 M01S03172.acccat +++|* DESIGNATOR. 03174 M01S03173.acccat +++|* 03175 M01S03174.acccat +++|* OCTSRCH - IS CALLED BY CADDSC,CBUFMAN,CCLOSE,CEXTSC,CFLUSH, 03176 M01S03175.acccat +++|* CGETPD,CPUTPD,CRDAST,CRMVSC,CSELSC,CWTAST,PURGCHN.* 03177 M01S03176.acccat +++|* 03178 M01S03177.acccat +++|* PROC OCTSRCH((FAM),(SUB),ORD,(QRADR),ERRSTAT) 03179 M01S03178.acccat +++|* 03180 M01S03179.acccat +++|* ENTRY (FAM) - FAMILY NAME. 03181 M01S03180.acccat +++|* (SUB) - SUBFAMILY DESIGNATOR. 03182 M01S03181.acccat +++|* (QRADR) - ADDRESS OF *HLRQ* ENTRY, ELSE ZERO. 03183 M01S03182.acccat +++|* 03184 M01S03183.acccat +++|* EXIT (ORD) - THE ORDINAL OF THE DESIRED ENTRY, IF NO 03185 M01S03184.acccat +++|* ERRORS. 03186 M01S03185.acccat +++|* (ERRSTAT) - ERROR STATUS. 03187 M01S03186.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03188 M01S03187.acccat +++|* = NO ERRORS. 03189 M01S03188.acccat +++|* = CATALOG FILE INTERLOCKED. 03190 M01S03189.acccat +++|* = CATALOG NOT OPEN. 03191 M01S03190.acccat +++|* IF THE CATALOG IS INTERLOCKED AND (QRADR) IS NON-ZERO, 03192 M01S03191.acccat +++|* THE CATALOG ACCESS REQUEST IS ADDED TO THE END OF A 03193 M01S03192.acccat +++|* WAITING-FOR-INTERLOCK CHAIN. 03194 M01S03193.acccat +++|* 03195 M01S03194.acccat +++|* NOTES CATALOG ACCESS REQUESTS FROM *MSSEXEC* PASS THE 03196 M01S03195.acccat +++|* ADDRESS OF THE *HLRQ* ENTRY ASSOCIATED WITH THE 03197 M01S03196.acccat +++|* REQUEST, SO THAT THE REQUEST CAN BE QUEUED IF THE 03198 M01S03197.acccat +++|* CATALOG IS INTERLOCKED. REQUESTS FROM MSS UTILITIES 03199 M01S03198.acccat +++|* SET (QRADR) EQUAL TO ZERO AND MUST BE RETRIED IF THE 03200 M01S03199.acccat +++|* CATALOG IS INTERLOCKED. 03201 M01S03200.acccat +++|# 03202 M01S03201.acccat +++| 03203 M01S03202.acccat +++| ITEM FAM C(7); # FAMILY NAME # 03204 M01S03203.acccat +++| ITEM SUB U; # SUBFAMILY DESIGNATOR # 03205 M01S03204.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03206 M01S03205.acccat +++| ITEM QRADR U; # *HLRQ* ENTRY ADDRESS # 03207 M01S03206.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03208 M01S03207.acccat +++| 03209 M01S03208.acccat +++|# 03210 M01S03209.acccat +++|**** PROC OCTSRCH - XREF LIST BEGIN. 03211 M01S03210.acccat +++|# 03212 M01S03211.acccat +++| 03213 M01S03212.acccat +++| XREF 03214 M01S03213.acccat +++| BEGIN 03215 M01S03214.acccat +++| PROC ADD$LNK; # ADD ENTRY TO END OF CHAIN # 03216 M01S03215.acccat +++| END 03217 M01S03216.acccat +++| 03218 M01S03217.acccat +++|# 03219 M01S03218.acccat +++|**** PROC OCTSRCH - XREF LIST END. 03220 M01S03219.acccat +++|# 03221 M01S03220.acccat +++| 03222 M01S03221.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03223 M01S03222.acccat +++|*CALL COMBFAS 03224 M01S03223.acccat +++|*CALL COMBCMD 03225 M01S03224.acccat +++|*CALL COMBCMS 03226 M01S03225.acccat +++|*CALL COMXHLR 03227 M01S03226.acccat +++| 03228 M01S03227.acccat +++| ITEM I I; # LOOP COUNTER # 03229 M01S03228.acccat +++|CONTROL EJECT; 03230 M01S03229.acccat +++| 03231 M01S03230.acccat +++|# 03232 M01S03231.acccat +++|* SEARCH THE *OCT* FOR THE REQUESTED ENTRY. 03233 M01S03232.acccat +++|# 03234 M01S03233.acccat +++| 03235 M01S03234.acccat +++| ERRSTAT = CMASTAT"NOERR"; 03236 M01S03235.acccat +++| ORD = 0; 03237 M01S03236.acccat +++| FASTFOR I = 1 STEP 1 WHILE ORD EQ 0 AND I LQ OCTLEN 03238 M01S03237.acccat +++| DO 03239 M01S03238.acccat +++| BEGIN # SEARCH FOR ENTRY # 03240 M01S03239.acccat +++| IF OCT$SUBF[I] EQ SUB ## 03241 M01S03240.acccat +++| AND OCT$FAM[I] EQ FAM 03242 M01S03241.acccat +++| THEN 03243 M01S03242.acccat +++| BEGIN # REQUESTED ENTRY FOUND # 03244 M01S03243.acccat +++| ORD = I; 03245 M01S03244.acccat +++| IF OCT$INTLK[I] 03246 M01S03245.acccat +++| THEN # IF CATALOG INTERLOCKED # 03247 M01S03246.acccat +++| BEGIN 03248 M01S03247.acccat +++| ERRSTAT = CMASTAT"INTLK"; 03249 M01S03248.acccat +++| IF QRADR NQ 0 03250 M01S03249.acccat +++| THEN 03251 M01S03250.acccat +++| BEGIN # ADD REQUEST TO WAITING-FOR-INTERLOCK CHAIN # 03252 M01S03251.acccat +++| IF OCT$LINK[I] EQ 0 03253 M01S03252.acccat +++| THEN # IF EMPTY CHAIN # 03254 M01S03253.acccat +++| BEGIN 03255 M01S03254.acccat +++| OCT$LINK[I] = QRADR; 03256 M01S03255.acccat +++| END 03257 M01S03256.acccat +++| 03258 M01S03257.acccat +++| ELSE 03259 M01S03258.acccat +++| BEGIN 03260 M01S03259.acccat +++| P<HLRQ> = OCT$LINK[I]; 03261 M01S03260.acccat +++| REPEAT WHILE HLR$LNK1[0] NQ 0 03262 M01S03261.acccat +++| DO # SEARCH FOR END OF CHAIN # 03263 M01S03262.acccat +++| BEGIN 03264 M01S03263.acccat +++| P<HLRQ> = HLR$LNK1[0]; 03265 M01S03264.acccat +++| END 03266 M01S03265.acccat +++| 03267 M01S03266.acccat +++| HLR$LNK1[0] = QRADR; 03268 M01S03267.acccat +++| END 03269 M01S03268.acccat +++| 03270 M01S03269.acccat +++| END # ADD REQUEST TO WAITING-FOR-INTERLOCK CHAIN # 03271 M01S03270.acccat +++| 03272 M01S03271.acccat +++| END 03273 M01S03272.acccat +++| 03274 M01S03273.acccat +++| END # REQUESTED ENTRY FOUND # 03275 M01S03274.acccat +++| 03276 M01S03275.acccat +++| END # SEARCH FOR ENTRY # 03277 M01S03276.acccat +++| 03278 M01S03277.acccat +++| IF ORD EQ 0 03279 M01S03278.acccat +++| THEN # IF CATALOG NOT OPEN # 03280 M01S03279.acccat +++| BEGIN 03281 M01S03280.acccat +++| ERRSTAT = CMASTAT"NOTOPEN"; 03282 M01S03281.acccat +++| END 03283 M01S03282.acccat +++| 03284 M01S03283.acccat +++| RETURN; 03285 M01S03284.acccat +++| END # OCTSRCH # 03286 M01S03285.acccat +++| 03287 M01S03286.acccat +++| TERM 03288 M01S03287.acccat +++|PROC REPLCAT((ORD),ERRSTAT); 03289 M01S03288.acccat +++|# TITLE REPLCAT - REPLACES THE MSF CATALOG. # 03290 M01S03289.acccat +++| 03291 M01S03290.acccat +++| BEGIN # REPLCAT # 03292 M01S03291.acccat +++| 03293 M01S03292.acccat +++|# 03294 M01S03293.acccat +++|** REPLCAT - REPLACES THE MSF CATALOG. 03295 M01S03294.acccat +++|* 03296 M01S03295.acccat +++|* *REPLCAT* REPLACES THE MSF CATALOG WITH THE TEMPORARY CATALOG 03297 M01S03296.acccat +++|* (*TSFMCAT*) CREATED BY *CADDSC*, *CEXTSC* OR *CRMVSC*. THE 03298 M01S03297.acccat +++|* OLD CATALOG IS PURGED. THE TEMPORARY CATALOG IS REATTACHED 03299 M01S03298.acccat +++|* IN MODIFY MODE AND THE TEMPORARY CATALOG FILE NAME IS CHANGED 03300 M01S03299.acccat +++|* TO THE ACTUAL CATALOG FILE NAME. 03301 M01S03300.acccat +++|* 03302 M01S03301.acccat +++|* REPLCAT - IS CALLED BY CADDSC,CEXTSC,CRMVSC. 03303 M01S03302.acccat +++|* 03304 M01S03303.acccat +++|* 03305 M01S03304.acccat +++|* PROC REPLCAT((ORD),ERRSTAT) 03306 M01S03305.acccat +++|* 03307 M01S03306.acccat +++|* ENTRY (ORD) = ORDINAL OF *OCT* ENTRY FOR CATALOG. 03308 M01S03307.acccat +++|* TFETADR = ADDRESS OF FET FOR MSF CATALOG. 03309 M01S03308.acccat +++|* TFETADR+RFETL = ADDRESS OF FET FOR TEMPORARY CATALOG. 03310 M01S03309.acccat +++|* 03311 M01S03310.acccat +++|* THE MSF CATALOG IS ATTACHED IN MODIFY MODE AND 03312 M01S03311.acccat +++|* THE NEWLY CREATED CATALOG, *TSFMCAT*, IS ATTACHED 03313 M01S03312.acccat +++|* IN WRITE MODE. 03314 M01S03313.acccat +++|* 03315 M01S03314.acccat +++|* EXIT (ERRSTAT) - ERROR STATUS. 03316 M01S03315.acccat +++|* (VALUES DEFINED IN *COMBCMS*) 03317 M01S03316.acccat +++|* = NO ERRORS. 03318 M01S03317.acccat +++|* = TEMPORARY FILE ATTACH ERROR. 03319 M01S03318.acccat +++|* = TEMPORARY FILE PURGE ERROR. 03320 M01S03319.acccat +++|* = TEMPORARY FILE RENAME ERROR. 03321 M01S03320.acccat +++|* THE MSF CATALOG IS REPLACED WITH *TSFMCAT*. 03322 M01S03321.acccat +++|* 03323 M01S03322.acccat +++|* MESSAGES * MSF CATALOG REPLACE ERROR. 03324 M01S03323.acccat +++|* SFMCATN FOR FAMILY FFFFFFF CLOSED.* 03325 M01S03324.acccat +++|* 03326 M01S03325.acccat +++|* * DEVICE UNAVAILABLE ON MSF CATALOG ACCESS. 03327 M01S03326.acccat +++|* SFMCATN FOR FAMILY FFFFFFF CLOSED.* 03328 M01S03327.acccat +++|* 03329 M01S03328.acccat +++|* NOTES IF AN ERROR IDLE STATUS IS RETURNED ON A *PFM* 03330 M01S03329.acccat +++|* REQUEST, *REPLCAT* WILL RESTORE THE MSF CATALOG 03331 M01S03330.acccat +++|* TO ITS PRIOR STATE (BEFORE CURRENT UPDATE). IF 03332 M01S03331.acccat +++|* SOME OTHER ERROR IS RETURNED, ANALYST INTERVENTION 03333 M01S03332.acccat +++|* MAY BE REQUIRED TO RESTORE THE CATALOG. IN EITHER 03334 M01S03333.acccat +++|* CASE THE CATALOG WILL BE CLOSED. 03335 M01S03334.acccat +++|# 03336 M01S03335.acccat +++| 03337 M01S03336.acccat +++| ITEM ORD I; # ORDINAL OF *OCT* ENTRY # 03338 M01S03337.acccat +++| ITEM ERRSTAT I; # ERROR STATUS # 03339 M01S03338.acccat +++| 03340 M01S03339.acccat +++|# 03341 M01S03340.acccat +++|**** PROC REPLCAT - XREF LIST BEGIN. 03342 M01S03341.acccat +++|# 03343 M01S03342.acccat +++| 03344 M01S03343.acccat +++| XREF 03345 M01S03344.acccat +++| BEGIN 03346 M01S03345.acccat +++| PROC BZFILL; # BLANK OR ZERO FILL WORD # 03347 M01S03346.acccat +++| PROC MESSAGE; # ISSUE MESSAGE # 03348 M01S03347.acccat +++| PROC PFD; # PERMANENT FILE REQUEST DELAYS # 03349 M01S03348.acccat +++| PROC READ; # READ FILE TO *CIO* BUFFER # 03350 M01S03349.acccat +++| PROC RENAME; # RENAME LOCAL FILE # 03351 M01S03350.acccat +++| PROC RETERN; # RETURN A FILE # 03352 M01S03351.acccat +++| PROC REWIND; # REWIND A FILE # 03353 M01S03352.acccat +++| PROC RMVBLNK; # REMOVE MULTIPLE BLANKS # 03354 M01S03353.acccat +++| PROC WRITE; # WRITE DATA FROM *CIO* BUFFER # 03355 M01S03354.acccat +++| PROC WRITEF; # WRITE END OF FILE # 03356 M01S03355.acccat +++| FUNC XCDD C(10); # CONVERT DECIMAL TO DISPLAY # 03357 M01S03356.acccat +++| PROC ZFILL; # ZERO FILL BUFFER # 03358 M01S03357.acccat +++| END 03359 M01S03358.acccat +++| 03360 M01S03359.acccat +++|# 03361 M01S03360.acccat +++|**** PROC REPLCAT - XREF LIST END. 03362 M01S03361.acccat +++|# 03363 M01S03362.acccat +++| 03364 M01S03363.acccat +++| DEF LISTCON #0#; # DO NOT LIST COMDECKS # 03365 M01S03364.acccat +++|*CALL COMBFAS 03366 M01S03365.acccat +++|*CALL COMBBZF 03367 M01S03366.acccat +++|*CALL COMBCMD 03368 M01S03367.acccat +++|*CALL COMBCMS 03369 M01S03368.acccat +++|*CALL COMBFET 03370 M01S03369.acccat +++|*CALL COMBPFS 03371 M01S03370.acccat +++|*CALL COMXMSC 03372 M01S03371.acccat +++|*CALL COMSPFM 03373 M01S03372.acccat +++| 03374 M01S03373.acccat +++| ITEM CATPFN C(7); # MSF CATALOG PFN # 03375 M01S03374.acccat +++| ITEM DEV$NA B; # DEVICE NOT AVAILABLE FLAG # 03376 M01S03375.acccat +++| ITEM DIS$SUBF C(10); # SUBFAMILY (DISPLAY CODE) # 03377 M01S03376.acccat +++| ITEM FAMILY C(7); # FAMILY NAME # 03378 M01S03377.acccat +++| CONTROL EJECT; 03379 M01S03378.acccat +++| 03380 M01S03379.acccat +++| P<FETSET> = TFETADR; 03381 M01S03380.acccat +++| DEV$NA = FALSE; 03382 M01S03381.acccat +++| 03383 M01S03382.acccat +++|# 03384 M01S03383.acccat +++|* PURGE OLD CATALOG FILE. 03385 M01S03384.acccat +++|# 03386 M01S03385.acccat +++| 03387 M01S03386.acccat +++| CATPFN = SFMCAT; # BUILD CATALOG PFN # 03388 M01S03387.acccat +++| DIS$SUBF = XCDD(OCT$SUBF[ORD]); 03389 M01S03388.acccat +++| C<6,1>CATPFN = C<9,1>DIS$SUBF; 03390 M01S03389.acccat +++| PFD("PURGE",CATPFN,"RC",PFSTAT,"UP",0,0); 03391 M01S03390.acccat +++| IF PFSTAT NQ 0 03392 M01S03391.acccat +++| THEN 03393 M01S03392.acccat +++| BEGIN 03394 M01S03393.acccat +++| DEV$NA = PFSTAT EQ PFN; 03395 M01S03394.acccat +++| ERRSTAT = CMASTAT"TPRGERR"; 03396 M01S03395.acccat +++| PFD("PURGE",TSFMCAT,"RC",PFSTAT,"UP",0,"SR","IE",0); 03397 M01S03396.acccat +++| GOTO RETNCAT; 03398 M01S03397.acccat +++| END 03399 M01S03398.acccat +++| 03400 M01S03399.acccat +++|# 03401 M01S03400.acccat +++|* REATTACH CATALOG IN MODIFY MODE. 03402 M01S03401.acccat +++|# 03403 M01S03402.acccat +++| 03404 M01S03403.acccat +++| PFD("ATTACH",TSFMCAT,0,"M","M","RC",PFSTAT,"NA",0,"UP",0,0); 03405 M01S03404.acccat +++| IF PFSTAT NQ 0 03406 M01S03405.acccat +++| THEN 03407 M01S03406.acccat +++| BEGIN # ATTACH ERROR # 03408 M01S03407.acccat +++| ERRSTAT = CMASTAT"TATTERR"; 03409 M01S03408.acccat +++| IF PFSTAT EQ PFN 03410 M01S03409.acccat +++| THEN 03411 M01S03410.acccat +++| BEGIN 03412 M01S03411.acccat +++| GOTO RESTCAT; 03413 M01S03412.acccat +++| END 03414 M01S03413.acccat +++| 03415 M01S03414.acccat +++| ELSE 03416 M01S03415.acccat +++| BEGIN 03417 M01S03416.acccat +++| GOTO RETNCAT; 03418 M01S03417.acccat +++| END 03419 M01S03418.acccat +++| 03420 M01S03419.acccat +++| END # ATTACH ERROR # 03421 M01S03420.acccat +++| 03422 M01S03421.acccat +++|# 03423 M01S03422.acccat +++|* CHANGE TEMPORARY FILE NAME TO ACTUAL CATALOG NAME. 03424 M01S03423.acccat +++|# 03425 M01S03424.acccat +++| 03426 M01S03425.acccat +++| PFD("CHANGE",CATPFN,TSFMCAT,"RC",PFSTAT,"UP",0,0); 03427 M01S03426.acccat +++| IF PFSTAT NQ 0 03428 M01S03427.acccat +++| THEN 03429 M01S03428.acccat +++| BEGIN # CHANGE ERROR # 03430 M01S03429.acccat +++| ERRSTAT = CMASTAT"TRNMERR"; 03431 M01S03430.acccat +++| IF PFSTAT EQ PFN 03432 M01S03431.acccat +++| THEN 03433 M01S03432.acccat +++| BEGIN 03434 M01S03433.acccat +++| GOTO RESTCAT; 03435 M01S03434.acccat +++| END 03436 M01S03435.acccat +++| 03437 M01S03436.acccat +++| ELSE 03438 M01S03437.acccat +++| BEGIN 03439 M01S03438.acccat +++| GOTO RETNCAT; 03440 M01S03439.acccat +++| END 03441 M01S03440.acccat +++| 03442 M01S03441.acccat +++| END # CHANGE ERROR # 03443 M01S03442.acccat +++| 03444 M01S03443.acccat +++| RETERN(FETSET[0],RCL); 03445 M01S03444.acccat +++| RENAME(FETSET[1],OCT$LFN[ORD]); 03446 M01S03445.acccat +++| RETURN; 03447 M01S03446.acccat +++| 03448 M01S03447.acccat +++|RESTCAT: # RESTORE ORIGINAL CATALOG # 03449 M01S03448.acccat +++| PFD("ATTACH",TSFMCAT,0,"M","W","RC",PFSTAT,"NA",0, ## 03450 M01S03449.acccat +++| "UP",0,"SR","IE",0); 03451 M01S03450.acccat +++| FET$IN[0] = FET$FRST[0]; # RESET FET POINTERS # 03452 M01S03451.acccat +++| FET$OUT[0] = FET$FRST[0]; 03453 M01S03452.acccat +++| FET$IN[1] = FET$FRST[1]; 03454 M01S03453.acccat +++| FET$OUT[1] = FET$FRST[1]; 03455 M01S03454.acccat +++| REWIND(FETSET[0],NRCL); 03456 M01S03455.acccat +++| REPEAT WHILE NOT FET$EOI[0] 03457 M01S03456.acccat +++| DO 03458 M01S03457.acccat +++| BEGIN 03459 M01S03458.acccat +++| READ(FETSET[0],RCL); 03460 M01S03459.acccat +++| FET$IN[1] = FET$IN[0]; 03461 M01S03460.acccat +++| WRITE(FETSET[1],RCL); 03462 M01S03461.acccat +++| FET$OUT[0] = FET$OUT[1]; 03463 M01S03462.acccat +++| END 03464 M01S03463.acccat +++| 03465 M01S03464.acccat +++| WRITEF(FETSET[1],RCL); 03466 M01S03465.acccat +++| PFD("CHANGE",CATPFN,TSFMCAT,"RC",PFSTAT,"UP",0,"SR","IE",0); 03467 M01S03466.acccat +++| DEV$NA = TRUE; 03468 M01S03467.acccat +++| 03469 M01S03468.acccat +++|RETNCAT: # RETURN LOCAL CATALOGS # 03470 M01S03469.acccat +++| RETERN(FETSET[0],RCL); 03471 M01S03470.acccat +++| RETERN(FETSET[1],RCL); 03472 M01S03471.acccat +++| 03473 M01S03472.acccat +++| IF DEV$NA # ISSUE ERROR MESSAGE # 03474 M01S03473.acccat +++| THEN 03475 M01S03474.acccat +++| BEGIN 03476 M01S03475.acccat +++| CMSGLINE[0] = CMSG1; 03477 M01S03476.acccat +++| END 03478 M01S03477.acccat +++| 03479 M01S03478.acccat +++| ELSE 03480 M01S03479.acccat +++| BEGIN 03481 M01S03480.acccat +++| CMSGLINE[0] = CMSG2; 03482 M01S03481.acccat +++| END 03483 M01S03482.acccat +++| 03484 M01S03483.acccat +++| MESSAGE(CMSGAREA,UDFL1); # ISSUE ERROR MESSAGE # 03485 M01S03484.acccat +++| CMSGLINE[0] = CMSGCLOSE; 03486 M01S03485.acccat +++| FAMILY = OCT$FAM[ORD]; 03487 M01S03486.acccat +++| BZFILL(FAMILY,TYPFILL"BFILL",7); 03488 M01S03487.acccat +++| CMSGCFAM[0] = FAMILY; 03489 M01S03488.acccat +++| CMSGCSUBF[0] = C<9,1>DIS$SUBF; 03490 M01S03489.acccat +++| RMVBLNK(CMSGAREA,48); 03491 M01S03490.acccat +++| MESSAGE(CMSGAREA,UDFL1); 03492 M01S03491.acccat +++| 03493 M01S03492.acccat +++| ZFILL(OCT[ORD],OCTENTL); 03494 M01S03493.acccat +++| RETURN; 03495 M01S03494.acccat +++| 03496 M01S03495.acccat +++| END # REPLCAT # 03497 M01S03496.acccat +++| 03498 M01S03497.acccat +++| TERM
cdc/nos2.source/opl.opl871/deck/acccat.001.txt ยท Last modified: by 127.0.0.1