User Tools

Site Tools


cdc:nos2.source:opl.opl871:deck:acccat.001

Deck ACCCAT Part 001

1 Modification

Listing Sections

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: by 127.0.0.1