User Tools

Site Tools


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

Deck ACCCAT

Library Member Format: MODIFY

Listing Sections

Source

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