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 
----------------------------+
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