User Tools

Site Tools


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

Deck SX3UCP

Library Member Format: MODIFY

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.sx3ucp  +++|PROC ADDCAR;
00002  M00S00002.sx3ucp  +++|# TITLE ADDCAR - ADD CARTRIDGE TO SUB-FAMILY.                         #
00003  M00S00003.sx3ucp  +++|
00004  M00S00004.sx3ucp  +++|      BEGIN  # ADDCAR #
00005  M00S00005.sx3ucp  +++|
00006  M00S00006.sx3ucp  +++|#
00007  M00S00007.sx3ucp  +++|**    ADDCAR - ADD CATRIDGE TO SUB-FAMILY.
00008  M00S00008.sx3ucp  +++|*
00009  M00S00009.sx3ucp  +++|*     *ADDCAR* UPDATES THE *SMMAP*, *FCT*, AND *AST* (IN THAT
00010  M00S00010.sx3ucp  +++|*     ORDER) TO REFLECT THE ADDITION OF THE CARTRIDGE TO THE
00011  M00S00011.sx3ucp  +++|*     SUB-FAMILY.
00012  M00S00012.sx3ucp  +++|*
00013  M00S00013.sx3ucp  +++|*     PROC ADDCAR
00014  M00S00014.sx3ucp  +++|*
00015  M00S00015.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00016  M00S00016.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00017  M00S00017.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
00018  M00S00018.sx3ucp  +++|*               *LTCENTRY*.
00019  M00S00019.sx3ucp  +++|*
00020  M00S00020.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
00021  M00S00021.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
00022  M00S00022.sx3ucp  +++|*               OF THE REQUEST.
00023  M00S00023.sx3ucp  +++|*
00024  M00S00024.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
00025  M00S00025.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
00026  M00S00026.sx3ucp  +++|*                    = OK3             OK
00027  M00S00027.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
00028  M00S00028.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
00029  M00S00029.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
00030  M00S00030.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
00031  M00S00031.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
00032  M00S00032.sx3ucp  +++|#
00033  M00S00033.sx3ucp  +++|
00034  M00S00034.sx3ucp  +++|#
00035  M00S00035.sx3ucp  +++|****  PROC ADDCAR - XREF LIST BEGIN.
00036  M00S00036.sx3ucp  +++|#
00037  M00S00037.sx3ucp  +++|
00038  M00S00038.sx3ucp  +++|      XREF
00039  M00S00039.sx3ucp  +++|        BEGIN
00040  M00S00040.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
00041  M00S00041.sx3ucp  +++|                                     #
00042  M00S00042.sx3ucp  +++|        PROC ANLZAST;                # ANALYZE THE *AST* #
00043  M00S00043.sx3ucp  +++|        PROC CEXTSC;                 # EXTEND SUBCATALOG #
00044  M00S00044.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
00045  M00S00045.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
00046  M00S00046.sx3ucp  +++|                                       *UCP* ERRORS #
00047  M00S00047.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
00048  M00S00048.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
00049  M00S00049.sx3ucp  +++|        PROC LOANFCTQ;               # ADD OR RECLAIM *FCTQ* ENTRY #
00050  M00S00050.sx3ucp  +++|        PROC MFLUSH;                 # FLUSH MAP TO FILE #
00051  M00S00051.sx3ucp  +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
00052  M00S00052.sx3ucp  +++|                                       CALLER #
00053  M00S00053.sx3ucp  +++|        PROC MPUTENT;                # MAP ENTRY TO THE MAP FILE BUFFER
00054  M00S00054.sx3ucp  +++|                                     #
00055  M00S00055.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
00056  M00S00056.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
00057  M00S00057.sx3ucp  +++|                                     #
00058  M00S00058.sx3ucp  +++|        PROC UASTPRM;                  # UPDATE *AST* AND *PRM* #
00059  M00S00059.sx3ucp  +++|        END
00060  M00S00060.sx3ucp  +++|
00061  M00S00061.sx3ucp  +++|#
00062  M00S00062.sx3ucp  +++|****  PROC ADDCAR - XREF LIST END.
00063  M00S00063.sx3ucp  +++|#
00064  M00S00064.sx3ucp  +++|
00065  M00S00065.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
00066  M00S00066.sx3ucp  +++|*CALL COMBFAS
00067  M00S00067.sx3ucp  +++|*CALL COMBCMD
00068  M00S00068.sx3ucp  +++|*CALL COMBCMS
00069  M00S00069.sx3ucp  +++|*CALL COMBCPR
00070  M00S00070.sx3ucp  +++|*CALL COMBMAP
00071  M00S00071.sx3ucp  +++|*CALL COMBMCT
00072  M00S00072.sx3ucp  +++|*CALL COMXFCQ
00073  M00S00073.sx3ucp  +++|*CALL COMXLTC
00074  M00S00074.sx3ucp  +++|*CALL COMXMSC
00075  M00S00075.sx3ucp  +++|
00076  M00S00076.sx3ucp  +++|
00077  M00S00077.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS FROM
00078  M00S00078.sx3ucp  +++|                                       *ACQ$FCT* #
00079  M00S00079.sx3ucp  +++|      ITEM FCTNUM     U;             # NUMBER OF ENTRIES TO ADD #
00080  M00S00080.sx3ucp  +++|      ITEM FXS        U;             # INDEX TO AST$AUSF #
00081  M00S00081.sx3ucp  +++|      ITEM FXL        U;             # INDEX TO AST$AULF #
00082  M00S00082.sx3ucp  +++|      ITEM GRTO       U;             # TOTAL SPACE IN GROUP #
00083  M00S00083.sx3ucp  +++|      ITEM GPX        U;             # BEST GROUP #
00084  M00S00084.sx3ucp  +++|      ITEM GPS        U;             # BEST ORDINAL #
00085  M00S00085.sx3ucp  +++|      ITEM I          U;             # COUNTER #
00086  M00S00086.sx3ucp  +++|      ITEM LENCOUNT   I;             # LENGTH COUNT #
00087  M00S00087.sx3ucp  +++|      ITEM POS        I;             # POSITION #
00088  M00S00088.sx3ucp  +++|      ITEM POINT      U;             # HOLDS POINTER TO SET LINKAGE #
00089  M00S00089.sx3ucp  +++|      ITEM START      U;             # BEGINNING LOOP COUNTER #
00090  M00S00090.sx3ucp  +++|      ITEM STARTLN    U;             # STARTING LENGTH #
00091  M00S00091.sx3ucp  +++|      ITEM SORL       U;             # SMALL OR LARGE FILE LOOP #
00092  M00S00092.sx3ucp  +++|      ITEM TERMX      U;             # TERMINATION OF LOOP #
00093  M00S00093.sx3ucp  +++|      ITEM WORD       I;             # LINK FIELD WORD #
00094  M00S00094.sx3ucp  +++|      ITEM ORD        I;             # *AST* ORDINAL #
00095  M00S00095.sx3ucp  +++|
00096  M00S00096.sx3ucp  +++|
00097  M00S00097.sx3ucp  +++|
00098  M00S00098.sx3ucp  +++|
00099  M00S00099.sx3ucp  +++|
00100  M00S00100.sx3ucp  +++|#
00101  M00S00101.sx3ucp  +++|*     GET THE MAP ENTRY FOR THE REQUEST.
00102  M00S00102.sx3ucp  +++|#
00103  M00S00103.sx3ucp  +++|
00104  M00S00104.sx3ucp  +++|      LOANFCTQ(0);
00105  M00S00105.sx3ucp  +++|      MGETENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
00106  M00S00106.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00107  M00S00107.sx3ucp  +++|      THEN
00108  M00S00108.sx3ucp  +++|        BEGIN
00109  M00S00109.sx3ucp  +++|        GOTO ERRORTN;
00110  M00S00110.sx3ucp  +++|        END
00111  M00S00111.sx3ucp  +++|
00112  M00S00112.sx3ucp  +++|      P<SMUMAP> = LOC(MAPBUFR);
00113  M00S00113.sx3ucp  +++|
00114  M00S00114.sx3ucp  +++|#
00115  M00S00115.sx3ucp  +++|*     GET THE *AST* AND EXPAND THE CATALOG IF THE REQUIRED
00116  M00S00116.sx3ucp  +++|*     *FCT* ENTRY DOES NOT PHYSICALLY EXIST.
00117  M00S00117.sx3ucp  +++|#
00118  M00S00118.sx3ucp  +++|
00119  M00S00119.sx3ucp  +++|      P<AST> = ASTBADR;
00120  M00S00120.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
00121  M00S00121.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00122  M00S00122.sx3ucp  +++|      THEN
00123  M00S00123.sx3ucp  +++|        BEGIN
00124  M00S00124.sx3ucp  +++|        GOTO ERRORTN;
00125  M00S00125.sx3ucp  +++|        END
00126  M00S00126.sx3ucp  +++|
00127  M00S00127.sx3ucp  +++|      IF (PRM$ENTRC[CPR$CSU[0]] + 15) LS CPR$FCT[0]
00128  M00S00128.sx3ucp  +++|      THEN                           # EXPAND TO INCLUDE REQUIRED ENTRY
00129  M00S00129.sx3ucp  +++|                                     #
00130  M00S00130.sx3ucp  +++|        BEGIN
00131  M00S00131.sx3ucp  +++|        FCTNUM = CPR$FCT[0] - PRM$ENTRC[CPR$CSU[0]] - 15;
00132  M00S00132.sx3ucp  +++|        CEXTSC(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],FCTNUM,0,ERRSTAT);
00133  M00S00133.sx3ucp  +++|        IF ERRSTAT NQ CMASTAT"NOERR"
00134  M00S00134.sx3ucp  +++|        THEN
00135  M00S00135.sx3ucp  +++|          BEGIN
00136  M00S00136.sx3ucp  +++|          GOTO ERRORTN;
00137  M00S00137.sx3ucp  +++|          END
00138  M00S00138.sx3ucp  +++|
00139  M00S00139.sx3ucp  +++|        END
00140  M00S00140.sx3ucp  +++|
00141  M00S00141.sx3ucp  +++|      ORD = CPR$FCT[0];
00142  M00S00142.sx3ucp  +++|
00143  M00S00143.sx3ucp  +++|#
00144  M00S00144.sx3ucp  +++|*     GET THE *FCTQ* ENTRY.
00145  M00S00145.sx3ucp  +++|#
00146  M00S00146.sx3ucp  +++|
00147  M00S00147.sx3ucp  +++|
00148  M00S00148.sx3ucp  +++|      ACQ$FCT(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],  ##
00149  M00S00149.sx3ucp  +++|        CPR$FCT[0],FCTEADDR,0,ERRSTAT);
00150  M00S00150.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00151  M00S00151.sx3ucp  +++|      THEN
00152  M00S00152.sx3ucp  +++|        BEGIN
00153  M00S00153.sx3ucp  +++|        GOTO ERRORTN;
00154  M00S00154.sx3ucp  +++|        END
00155  M00S00155.sx3ucp  +++|
00156  M00S00156.sx3ucp  +++|#
00157  M00S00157.sx3ucp  +++|*     UPDATE THE MAP ENTRY WITH THE *CSN*.
00158  M00S00158.sx3ucp  +++|#
00159  M00S00159.sx3ucp  +++|
00160  M00S00160.sx3ucp  +++|      P<FCT> = FCTEADDR + FCTQHL;
00161  M00S00161.sx3ucp  +++|      CM$CSND[0] = CPR$CSND[0];
00162  M00S00162.sx3ucp  +++|      CM$CCOD[0] = CPR$CCOD[0];
00163  M00S00163.sx3ucp  +++|      CM$FCTORD[0] = CPR$FCT[0];
00164  M00S00164.sx3ucp  +++|      MPUTENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
00165  M00S00165.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00166  M00S00166.sx3ucp  +++|      THEN
00167  M00S00167.sx3ucp  +++|        BEGIN
00168  M00S00168.sx3ucp  +++|        GOTO ERRORTN;
00169  M00S00169.sx3ucp  +++|        END
00170  M00S00170.sx3ucp  +++|
00171  M00S00171.sx3ucp  +++|
00172  M00S00172.sx3ucp  +++|#
00173  M00S00173.sx3ucp  +++|*     UPDATE THE *FCT* WITH THE *CSN* OF THE CARTRIDGE, AND
00174  M00S00174.sx3ucp  +++|*     THE *FAULF* AND THE *FAUSF*.
00175  M00S00175.sx3ucp  +++|#
00176  M00S00176.sx3ucp  +++|
00177  M00S00177.sx3ucp  +++|      FCT$CSND[0] = CPR$CSND[0];
00178  M00S00178.sx3ucp  +++|      FCT$FAUSF[0] = 1;
00179  M00S00179.sx3ucp  +++|      FCT$FAULF[0] = CPR$B[0] + 1;
00180  M00S00180.sx3ucp  +++|      FCT$CCOD[0] = CPR$CCOD[0];
00181  M00S00181.sx3ucp  +++|      FCT$ORD[0] = CPR$FCT[0];
00182  M00S00182.sx3ucp  +++|      FCT$FLGS[0] = 0;
00183  M00S00183.sx3ucp  +++|      FCT$OCL[0] = 0;
00184  M00S00184.sx3ucp  +++|      FCT$OCL1[0] = 0;
00185  M00S00185.sx3ucp  +++|      FCT$OCL2[0] = 0;
00186  M00S00186.sx3ucp  +++|      FCT$FTST[0] = INFTST;
00187  M00S00187.sx3ucp  +++|      FCT$SPAU[0] = INSPAU;
00188  M00S00188.sx3ucp  +++|      FCT$PRUS[0] = INPRUS;
00189  M00S00189.sx3ucp  +++|      FCT$AVOT[0] = INAVOT;
00190  M00S00190.sx3ucp  +++|      FCT$CDP[0] = CPR$B[0] + 1;
00191  M00S00191.sx3ucp  +++|      FCT$OCLF[0] = 0;
00192  M00S00192.sx3ucp  +++|      FCT$STRD[0] = CPR$STRD[0];
00193  M00S00193.sx3ucp  +++|      FCT$STWR[0] = CPR$STWR[0];
00194  M00S00194.sx3ucp  +++|      FCT$SRDE[0] = CPR$SRDE[0];
00195  M00S00195.sx3ucp  +++|      FCT$SWRE[0] = CPR$SWRE[0];
00196  M00S00196.sx3ucp  +++|      FCT$HRDE[0] = CPR$HRDE[0];
00197  M00S00197.sx3ucp  +++|      FCT$STDM[0] = CPR$STDM[0];
00198  M00S00198.sx3ucp  +++|      FCT$CRLD[0] = CPR$CRLD[0];
00199  M00S00199.sx3ucp  +++|      FCT$LDER[0] = CPR$LDER[0];
00200  M00S00200.sx3ucp  +++|      FCT$Y[0] = CPR$Y[0];
00201  M00S00201.sx3ucp  +++|      FCT$Z[0] = CPR$Z[0];
00202  M00S00202.sx3ucp  +++|      IF CPR$B[0] EQ 0
00203  M00S00203.sx3ucp  +++|      THEN             # SET FOR END CASE #
00204  M00S00204.sx3ucp  +++|        BEGIN
00205  M00S00205.sx3ucp  +++|        FCT$FAUSF[0] = 0;
00206  M00S00206.sx3ucp  +++|        END
00207  M00S00207.sx3ucp  +++|
00208  M00S00208.sx3ucp  +++|      IF CPR$B[0] EQ 1931
00209  M00S00209.sx3ucp  +++|      THEN
00210  M00S00210.sx3ucp  +++|        BEGIN
00211  M00S00211.sx3ucp  +++|        FCT$FAULF[0] = 0;
00212  M00S00212.sx3ucp  +++|        END
00213  M00S00213.sx3ucp  +++|
00214  M00S00214.sx3ucp  +++|
00215  M00S00215.sx3ucp  +++|#
00216  M00S00216.sx3ucp  +++|*     INITIALIZE CARTRIDGE LINK FIELD IN *FCT*.
00217  M00S00217.sx3ucp  +++|#
00218  M00S00218.sx3ucp  +++|
00219  M00S00219.sx3ucp  +++|      SLOWFOR SORL = 1 STEP 1 UNTIL 2
00220  M00S00220.sx3ucp  +++|      DO                             # FOR LARGE AND SMALL FILES #
00221  M00S00221.sx3ucp  +++|        BEGIN
00222  M00S00222.sx3ucp  +++|        IF SORL EQ 1
00223  M00S00223.sx3ucp  +++|        THEN                         # SET LINKAGE FOR LARGE FILES #
00224  M00S00224.sx3ucp  +++|          BEGIN
00225  M00S00225.sx3ucp  +++|          TERMX = CPR$B[0] + 1;
00226  M00S00226.sx3ucp  +++|          POINT = 0;
00227  M00S00227.sx3ucp  +++|          START = INAVOT;
00228  M00S00228.sx3ucp  +++|          END
00229  M00S00229.sx3ucp  +++|
00230  M00S00230.sx3ucp  +++|        IF SORL EQ 2
00231  M00S00231.sx3ucp  +++|        THEN                         # SET LINKAGE FOR SMALL FILES #
00232  M00S00232.sx3ucp  +++|          BEGIN
00233  M00S00233.sx3ucp  +++|          TERMX = 1;
00234  M00S00234.sx3ucp  +++|          POINT = 0;
00235  M00S00235.sx3ucp  +++|          START = CPR$B[0];
00236  M00S00236.sx3ucp  +++|          END
00237  M00S00237.sx3ucp  +++|
00238  M00S00238.sx3ucp  +++|        LENCOUNT = 0;
00239  M00S00239.sx3ucp  +++|        SLOWFOR I = START STEP -1 UNTIL TERMX
00240  M00S00240.sx3ucp  +++|        DO                           # INITIALIZE FIELDS #
00241  M00S00241.sx3ucp  +++|          BEGIN
00242  M00S00242.sx3ucp  +++|          WORD = FCT$WD(I);
00243  M00S00243.sx3ucp  +++|          POS = FCT$WP(I);
00244  M00S00244.sx3ucp  +++|          FCT$CLFG(WORD,POS) = 0;
00245  M00S00245.sx3ucp  +++|          FCT$LEN(WORD,POS) = LENCOUNT;
00246  M00S00246.sx3ucp  +++|          IF (I - INAVVS + LENCOUNT) LQ 0
00247  M00S00247.sx3ucp  +++|          THEN
00248  M00S00248.sx3ucp  +++|            BEGIN
00249  M00S00249.sx3ucp  +++|            FCT$LINK(WORD,POS) = 1;
00250  M00S00250.sx3ucp  +++|            END
00251  M00S00251.sx3ucp  +++|
00252  M00S00252.sx3ucp  +++|          ELSE
00253  M00S00253.sx3ucp  +++|            BEGIN
00254  M00S00254.sx3ucp  +++|            FCT$LINK(WORD,POS) = I - INAVVS + LENCOUNT;
00255  M00S00255.sx3ucp  +++|            END
00256  M00S00256.sx3ucp  +++|
00257  M00S00257.sx3ucp  +++|          IF (SORL EQ 1) AND ((I - INAVVS + LENCOUNT) LS TERMX)
00258  M00S00258.sx3ucp  +++|          THEN                       # SHORT VOLUME FOR LARGE FILES #
00259  M00S00259.sx3ucp  +++|            BEGIN
00260  M00S00260.sx3ucp  +++|            FCT$LINK(WORD,POS) = TERMX;
00261  M00S00261.sx3ucp  +++|            END
00262  M00S00262.sx3ucp  +++|
00263  M00S00263.sx3ucp  +++|          IF LENCOUNT EQ INAVVS OR I EQ TERMX
00264  M00S00264.sx3ucp  +++|          THEN
00265  M00S00265.sx3ucp  +++|            BEGIN
00266  M00S00266.sx3ucp  +++|            FCT$CAUF(WORD,POS) = 0;
00267  M00S00267.sx3ucp  +++|            FCT$LINK(WORD,POS) = POINT;
00268  M00S00268.sx3ucp  +++|            POINT = I;
00269  M00S00269.sx3ucp  +++|            END
00270  M00S00270.sx3ucp  +++|
00271  M00S00271.sx3ucp  +++|          ELSE
00272  M00S00272.sx3ucp  +++|            BEGIN
00273  M00S00273.sx3ucp  +++|            FCT$CAUF(WORD,POS) = 1;
00274  M00S00274.sx3ucp  +++|            END
00275  M00S00275.sx3ucp  +++|
00276  M00S00276.sx3ucp  +++|
00277  M00S00277.sx3ucp  +++|          LENCOUNT = LENCOUNT + 1;
00278  M00S00278.sx3ucp  +++|          IF LENCOUNT GR INAVVS
00279  M00S00279.sx3ucp  +++|          THEN                       # MAXIMUM VOLUME FOUND #
00280  M00S00280.sx3ucp  +++|            BEGIN
00281  M00S00281.sx3ucp  +++|            LENCOUNT = 0;
00282  M00S00282.sx3ucp  +++|            END
00283  M00S00283.sx3ucp  +++|
00284  M00S00284.sx3ucp  +++|          END
00285  M00S00285.sx3ucp  +++|
00286  M00S00286.sx3ucp  +++|        END
00287  M00S00287.sx3ucp  +++|
00288  M00S00288.sx3ucp  +++|
00289  M00S00289.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
00290  M00S00290.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00291  M00S00291.sx3ucp  +++|      THEN
00292  M00S00292.sx3ucp  +++|        BEGIN
00293  M00S00293.sx3ucp  +++|        GOTO ERRORTN;
00294  M00S00294.sx3ucp  +++|        END
00295  M00S00295.sx3ucp  +++|
00296  M00S00296.sx3ucp  +++|#
00297  M00S00297.sx3ucp  +++|*     UPDATE *AST* AND PREAMBLE.
00298  M00S00298.sx3ucp  +++|#
00299  M00S00299.sx3ucp  +++|
00300  M00S00300.sx3ucp  +++|      AST$1ST[ORD] = 0;
00301  M00S00301.sx3ucp  +++|      AST$2ND[ORD] = 0;
00302  M00S00302.sx3ucp  +++|      AST$AULF[ORD] = INAVOT - CPR$B[0];
00303  M00S00303.sx3ucp  +++|      AST$AUSF[ORD] = CPR$B[0];
00304  M00S00304.sx3ucp  +++|      AST$GR[ORD] = CPR$GR[0];
00305  M00S00305.sx3ucp  +++|      AST$GRT[ORD] = CPR$GRT[0];
00306  M00S00306.sx3ucp  +++|      AST$AAF[ORD] = TRUE;
00307  M00S00307.sx3ucp  +++|      AST$NOCLF[ORD] = FALSE;
00308  M00S00308.sx3ucp  +++|
00309  M00S00309.sx3ucp  +++|
00310  M00S00310.sx3ucp  +++|      AST$STAT[ORD] = ASTENSTAT"ASS$CART";
00311  M00S00311.sx3ucp  +++|      ANLZAST(CPR$CSU[0],-1,-1,FXS,FXL,GPX,GPS);
00312  M00S00312.sx3ucp  +++|      PRM$MXAUS[CPR$CSU[0]] = AST$AUSF[FXS];
00313  M00S00313.sx3ucp  +++|      PRM$MXAUL[CPR$CSU[0]] = AST$AULF[FXL];
00314  M00S00314.sx3ucp  +++|      PRM$MXAUGR[CPR$CSU[0]] = GPS;
00315  M00S00315.sx3ucp  +++|
00316  M00S00316.sx3ucp  +++|      UASTPRM(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],FCTEADDR,ERRSTAT);
00317  M00S00317.sx3ucp  +++|      CWTAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
00318  M00S00318.sx3ucp  +++|
00319  M00S00319.sx3ucp  +++|#
00320  M00S00320.sx3ucp  +++|*     PASS THE REQUEST STATUS TO THE *UCP* AND RETURN TO CALLER.
00321  M00S00321.sx3ucp  +++|#
00322  M00S00322.sx3ucp  +++|
00323  M00S00323.sx3ucp  +++|ERRORTN:
00324  M00S00324.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00325  M00S00325.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
00326  M00S00326.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
00327  M00S00327.sx3ucp  +++|      LOANFCTQ(-1);
00328  M00S00328.sx3ucp  +++|      MFLUSH;
00329  M00S00329.sx3ucp  +++|      CFLUSH(CPR$FAM[0],CPR$SUB[0],0,ERRSTAT);
00330  M00S00330.sx3ucp  +++|      UCP$RES;
00331  M00S00331.sx3ucp  +++|      RETURN;
00332  M00S00332.sx3ucp  +++|
00333  M00S00333.sx3ucp  +++|      END  # ADDCAR #
00334  M00S00334.sx3ucp  +++|
00335  M00S00335.sx3ucp  +++|    TERM
00336  M00S00336.sx3ucp  +++|PROC ADDCSU;
00337  M00S00337.sx3ucp  +++|# TITLE ADDCSU - ADD *SM* SUB-CATALOG.                                #
00338  M00S00338.sx3ucp  +++|
00339  M00S00339.sx3ucp  +++|      BEGIN  # ADDCSU #
00340  M00S00340.sx3ucp  +++|
00341  M00S00341.sx3ucp  +++|#
00342  M00S00342.sx3ucp  +++|**    ADDCSU - ADD *SM* SUB-CATALOG.
00343  M00S00343.sx3ucp  +++|*
00344  M00S00344.sx3ucp  +++|*     *ADDCSU* ADDS A SUB-CATALOG TO THE CATALOG SO AS TO
00345  M00S00345.sx3ucp  +++|*     ACCOMADATE AN ADDITIONAL *SM*.
00346  M00S00346.sx3ucp  +++|*
00347  M00S00347.sx3ucp  +++|*     PROC ADDCSU
00348  M00S00348.sx3ucp  +++|*
00349  M00S00349.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00350  M00S00350.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00351  M00S00351.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
00352  M00S00352.sx3ucp  +++|*               *LTCENTRY*.
00353  M00S00353.sx3ucp  +++|*
00354  M00S00354.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
00355  M00S00355.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
00356  M00S00356.sx3ucp  +++|*               OF THE REQUEST.
00357  M00S00357.sx3ucp  +++|*
00358  M00S00358.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
00359  M00S00359.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
00360  M00S00360.sx3ucp  +++|*                    = OK3             OK
00361  M00S00361.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
00362  M00S00362.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
00363  M00S00363.sx3ucp  +++|*                    = SUB$CAT$EX      SUBCATALOG ALREADY EXISTS
00364  M00S00364.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
00365  M00S00365.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
00366  M00S00366.sx3ucp  +++|#
00367  M00S00367.sx3ucp  +++|
00368  M00S00368.sx3ucp  +++|#
00369  M00S00369.sx3ucp  +++|****  PROC ADDCSU - XREF LIST BEGIN.
00370  M00S00370.sx3ucp  +++|#
00371  M00S00371.sx3ucp  +++|
00372  M00S00372.sx3ucp  +++|      XREF
00373  M00S00373.sx3ucp  +++|        BEGIN
00374  M00S00374.sx3ucp  +++|        PROC CADDSC;                 # ADD SUBCATALOG #
00375  M00S00375.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
00376  M00S00376.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
00377  M00S00377.sx3ucp  +++|                                       *UCP* ERRORS #
00378  M00S00378.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
00379  M00S00379.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
00380  M00S00380.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
00381  M00S00381.sx3ucp  +++|                                     #
00382  M00S00382.sx3ucp  +++|        END
00383  M00S00383.sx3ucp  +++|
00384  M00S00384.sx3ucp  +++|#
00385  M00S00385.sx3ucp  +++|****  PROC ADDCSU - XREF LIST END.
00386  M00S00386.sx3ucp  +++|#
00387  M00S00387.sx3ucp  +++|
00388  M00S00388.sx3ucp  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
00389  M00S00389.sx3ucp  +++|*CALL COMBFAS
00390  M00S00390.sx3ucp  +++|*CALL COMBCMD
00391  M00S00391.sx3ucp  +++|*CALL COMBCMS
00392  M00S00392.sx3ucp  +++|*CALL COMBCPR
00393  M00S00393.sx3ucp  +++|*CALL COMBMAP
00394  M00S00394.sx3ucp  +++|*CALL COMBMCT
00395  M00S00395.sx3ucp  +++|*CALL COMXLTC
00396  M00S00396.sx3ucp  +++|*CALL COMXMSC
00397  M00S00397.sx3ucp  +++|
00398  M00S00398.sx3ucp  +++|
00399  M00S00399.sx3ucp  +++|      ITEM FCTNUM     U;             # *FCT* ENTRY INCREMENT #
00400  M00S00400.sx3ucp  +++|      ITEM I          U;             # COUNTER #
00401  M00S00401.sx3ucp  +++|      ITEM K          U;             # COUNTER #
00402  M00S00402.sx3ucp  +++|
00403  M00S00403.sx3ucp  +++|
00404  M00S00404.sx3ucp  +++|
00405  M00S00405.sx3ucp  +++|
00406  M00S00406.sx3ucp  +++|
00407  M00S00407.sx3ucp  +++|#
00408  M00S00408.sx3ucp  +++|*     CREATE A SUB-CATALOG FOR THE *SM*.
00409  M00S00409.sx3ucp  +++|#
00410  M00S00410.sx3ucp  +++|
00411  M00S00411.sx3ucp  +++|      FCTNUM = NUMFCT;
00412  M00S00412.sx3ucp  +++|      CADDSC(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],FCTNUM,0,ERRSTAT);
00413  M00S00413.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00414  M00S00414.sx3ucp  +++|      THEN
00415  M00S00415.sx3ucp  +++|        BEGIN
00416  M00S00416.sx3ucp  +++|        GOTO ERRORTN;
00417  M00S00417.sx3ucp  +++|        END
00418  M00S00418.sx3ucp  +++|
00419  M00S00419.sx3ucp  +++|#
00420  M00S00420.sx3ucp  +++|*     GET THE AVAILABLE STREAM TABLE (*AST*).
00421  M00S00421.sx3ucp  +++|#
00422  M00S00422.sx3ucp  +++|
00423  M00S00423.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
00424  M00S00424.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00425  M00S00425.sx3ucp  +++|      THEN
00426  M00S00426.sx3ucp  +++|        BEGIN
00427  M00S00427.sx3ucp  +++|        CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00428  M00S00428.sx3ucp  +++|        LTC$RQR[LTCENTRY] = ERRSTAT;
00429  M00S00429.sx3ucp  +++|        UCP$RES;
00430  M00S00430.sx3ucp  +++|        RETURN;
00431  M00S00431.sx3ucp  +++|        END
00432  M00S00432.sx3ucp  +++|
00433  M00S00433.sx3ucp  +++|#
00434  M00S00434.sx3ucp  +++|*      SET STATUS OF ENTRIES TO UNASSIGNED CUBE.
00435  M00S00435.sx3ucp  +++|#
00436  M00S00436.sx3ucp  +++|
00437  M00S00437.sx3ucp  +++|      P<AST> = ASTBADR;
00438  M00S00438.sx3ucp  +++|      SLOWFOR I = 16 STEP 1 UNTIL (MAXORD + 15)
00439  M00S00439.sx3ucp  +++|      DO                             # SET *AST* STATUS #
00440  M00S00440.sx3ucp  +++|        BEGIN
00441  M00S00441.sx3ucp  +++|        AST$STAT[I] = ASTENSTAT"UNASS$CUB";
00442  M00S00442.sx3ucp  +++|        END
00443  M00S00443.sx3ucp  +++|
00444  M00S00444.sx3ucp  +++|      AST$NAME[15] = "*AST* ";
00445  M00S00445.sx3ucp  +++|      AST$SM[15] = CPR$CSU[0];
00446  M00S00446.sx3ucp  +++|
00447  M00S00447.sx3ucp  +++|#
00448  M00S00448.sx3ucp  +++|*     REWRITE *AST*.
00449  M00S00449.sx3ucp  +++|#
00450  M00S00450.sx3ucp  +++|
00451  M00S00451.sx3ucp  +++|      CWTAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
00452  M00S00452.sx3ucp  +++|
00453  M00S00453.sx3ucp  +++|#
00454  M00S00454.sx3ucp  +++|*     SEND RESPONSE TO *UCP* AND RETURN TO CALLER.
00455  M00S00455.sx3ucp  +++|#
00456  M00S00456.sx3ucp  +++|
00457  M00S00457.sx3ucp  +++|ERRORTN:
00458  M00S00458.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00459  M00S00459.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
00460  M00S00460.sx3ucp  +++|      CFLUSH(CPR$FAM[0],CPR$SUB[0],0,ERRSTAT);
00461  M00S00461.sx3ucp  +++|      UCP$RES;
00462  M00S00462.sx3ucp  +++|      RETURN;
00463  M00S00463.sx3ucp  +++|
00464  M00S00464.sx3ucp  +++|      END  # ADDCSU #
00465  M00S00465.sx3ucp  +++|
00466  M00S00466.sx3ucp  +++|    TERM
00467  M00S00467.sx3ucp  +++|PROC ADDCUBE;
00468  M00S00468.sx3ucp  +++|# TITLE ADDCUBE - ASSIGN CUBE TO SUB-FAMILY.                          #
00469  M00S00469.sx3ucp  +++|
00470  M00S00470.sx3ucp  +++|      BEGIN  # ADDCUBE #
00471  M00S00471.sx3ucp  +++|
00472  M00S00472.sx3ucp  +++|#
00473  M00S00473.sx3ucp  +++|**    ADDCUBE - ASSIGN CUBE TO SUB-FAMILY.
00474  M00S00474.sx3ucp  +++|*
00475  M00S00475.sx3ucp  +++|*     *ADDCUBE* UPDATES THE *SMMAP*, *FCT*, AND *AST*
00476  M00S00476.sx3ucp  +++|*     TO REFLECT THE ASSIGNMENT OF THE CUBICLE TO THE SUB-FAMILY.
00477  M00S00477.sx3ucp  +++|*
00478  M00S00478.sx3ucp  +++|*     PROC ADDCUBE
00479  M00S00479.sx3ucp  +++|*
00480  M00S00480.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00481  M00S00481.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00482  M00S00482.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
00483  M00S00483.sx3ucp  +++|*               *LTCENTRY*.
00484  M00S00484.sx3ucp  +++|*
00485  M00S00485.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
00486  M00S00486.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
00487  M00S00487.sx3ucp  +++|*               OF THE REQUEST.
00488  M00S00488.sx3ucp  +++|*
00489  M00S00489.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
00490  M00S00490.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
00491  M00S00491.sx3ucp  +++|*                    = OK3             OK
00492  M00S00492.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
00493  M00S00493.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
00494  M00S00494.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
00495  M00S00495.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
00496  M00S00496.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
00497  M00S00497.sx3ucp  +++|#
00498  M00S00498.sx3ucp  +++|
00499  M00S00499.sx3ucp  +++|#
00500  M00S00500.sx3ucp  +++|****  PROC ADDCUBE - XREF LIST BEGIN.
00501  M00S00501.sx3ucp  +++|#
00502  M00S00502.sx3ucp  +++|
00503  M00S00503.sx3ucp  +++|      XREF
00504  M00S00504.sx3ucp  +++|        BEGIN
00505  M00S00505.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
00506  M00S00506.sx3ucp  +++|                                     #
00507  M00S00507.sx3ucp  +++|        PROC CEXTSC;                 # EXTEND SUBCATALOG #
00508  M00S00508.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
00509  M00S00509.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
00510  M00S00510.sx3ucp  +++|                                       *UCP* ERRORS #
00511  M00S00511.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
00512  M00S00512.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
00513  M00S00513.sx3ucp  +++|        PROC MFLUSH;                 # FLUSH MAP TO FILE #
00514  M00S00514.sx3ucp  +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
00515  M00S00515.sx3ucp  +++|                                       CALLER #
00516  M00S00516.sx3ucp  +++|        PROC MPUTENT;                # MAP ENTRY TO THE MAP FILE BUFFER
00517  M00S00517.sx3ucp  +++|                                     #
00518  M00S00518.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
00519  M00S00519.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
00520  M00S00520.sx3ucp  +++|                                     #
00521  M00S00521.sx3ucp  +++|        END
00522  M00S00522.sx3ucp  +++|
00523  M00S00523.sx3ucp  +++|#
00524  M00S00524.sx3ucp  +++|****  PROC ADDCUBE - XREF LIST END.
00525  M00S00525.sx3ucp  +++|#
00526  M00S00526.sx3ucp  +++|
00527  M00S00527.sx3ucp  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
00528  M00S00528.sx3ucp  +++|*CALL COMBFAS
00529  M00S00529.sx3ucp  +++|*CALL COMBCMD
00530  M00S00530.sx3ucp  +++|*CALL COMBCMS
00531  M00S00531.sx3ucp  +++|*CALL COMBCPR
00532  M00S00532.sx3ucp  +++|*CALL COMBMAP
00533  M00S00533.sx3ucp  +++|*CALL COMBMCT
00534  M00S00534.sx3ucp  +++|*CALL COMXFCQ
00535  M00S00535.sx3ucp  +++|*CALL COMXLTC
00536  M00S00536.sx3ucp  +++|*CALL COMXMSC
00537  M00S00537.sx3ucp  +++|
00538  M00S00538.sx3ucp  +++|
00539  M00S00539.sx3ucp  +++|      ITEM FCTNUM     U;             # *FCT* ENTRY INCREMENT #
00540  M00S00540.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS RETURNED
00541  M00S00541.sx3ucp  +++|                                       FROM *ACQ$FCT* #
00542  M00S00542.sx3ucp  +++|      ITEM ORD        U;             # ORDINAL OF *AST*/*FCT* ENTRY #
00543  M00S00543.sx3ucp  +++|      ITEM I          U;             # COUNTER #
00544  M00S00544.sx3ucp  +++|      ITEM K          U;             # COUNTER #
00545  M00S00545.sx3ucp  +++|
00546  M00S00546.sx3ucp  +++|
00547  M00S00547.sx3ucp  +++|
00548  M00S00548.sx3ucp  +++|
00549  M00S00549.sx3ucp  +++|
00550  M00S00550.sx3ucp  +++|#
00551  M00S00551.sx3ucp  +++|*     GET ALLOCATION SUMMARY TABLE FOR THE FAMILY.
00552  M00S00552.sx3ucp  +++|#
00553  M00S00553.sx3ucp  +++|
00554  M00S00554.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
00555  M00S00555.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00556  M00S00556.sx3ucp  +++|      THEN
00557  M00S00557.sx3ucp  +++|        BEGIN
00558  M00S00558.sx3ucp  +++|        CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00559  M00S00559.sx3ucp  +++|        LTC$RQR[LTCENTRY] = ERRSTAT;
00560  M00S00560.sx3ucp  +++|        UCP$RES;
00561  M00S00561.sx3ucp  +++|        RETURN;
00562  M00S00562.sx3ucp  +++|        END
00563  M00S00563.sx3ucp  +++|
00564  M00S00564.sx3ucp  +++|      FCTNUM = NUMFCT;
00565  M00S00565.sx3ucp  +++|
00566  M00S00566.sx3ucp  +++|
00567  M00S00567.sx3ucp  +++|#
00568  M00S00568.sx3ucp  +++|*     GET THE MAP ENTRY FOR THE *XY* COORDINATES OF THE REQUEST.
00569  M00S00569.sx3ucp  +++|#
00570  M00S00570.sx3ucp  +++|
00571  M00S00571.sx3ucp  +++|      MGETENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
00572  M00S00572.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00573  M00S00573.sx3ucp  +++|      THEN
00574  M00S00574.sx3ucp  +++|        BEGIN
00575  M00S00575.sx3ucp  +++|        GOTO ERRORTN;
00576  M00S00576.sx3ucp  +++|        END
00577  M00S00577.sx3ucp  +++|
00578  M00S00578.sx3ucp  +++|
00579  M00S00579.sx3ucp  +++|#
00580  M00S00580.sx3ucp  +++|*     UPDATE THE MAP AND *FCT* TO REFLECT A CUBE BEING ASSIGNED
00581  M00S00581.sx3ucp  +++|*     TO A FAMILY.
00582  M00S00582.sx3ucp  +++|#
00583  M00S00583.sx3ucp  +++|
00584  M00S00584.sx3ucp  +++|      P<FCT> = FCTEADDR + FCTQHL;
00585  M00S00585.sx3ucp  +++|      P<SMUMAP> = LOC(MAPBUFR);
00586  M00S00586.sx3ucp  +++|      CM$FMLYNM[0] = CPR$FAM[0];
00587  M00S00587.sx3ucp  +++|      CM$SUB[0] = CPR$SUB[0];
00588  M00S00588.sx3ucp  +++|      CM$CODE[0] = CUBSTAT"SUBFAM";
00589  M00S00589.sx3ucp  +++|      CM$CSND[0] = "        ";
00590  M00S00590.sx3ucp  +++|      MPUTENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
00591  M00S00591.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
00592  M00S00592.sx3ucp  +++|      THEN
00593  M00S00593.sx3ucp  +++|        BEGIN
00594  M00S00594.sx3ucp  +++|        GOTO ERRORTN;
00595  M00S00595.sx3ucp  +++|        END
00596  M00S00596.sx3ucp  +++|
00597  M00S00597.sx3ucp  +++|
00598  M00S00598.sx3ucp  +++|
00599  M00S00599.sx3ucp  +++|
00600  M00S00600.sx3ucp  +++|
00601  M00S00601.sx3ucp  +++|#
00602  M00S00602.sx3ucp  +++|*     RETURN THE RESPONSE TO THE UCP, REWRITE THE ALLOCATION
00603  M00S00603.sx3ucp  +++|*     SUMMARY TABLE, AND RETURN TO THE CALLER.
00604  M00S00604.sx3ucp  +++|#
00605  M00S00605.sx3ucp  +++|
00606  M00S00606.sx3ucp  +++|ERRORTN:
00607  M00S00607.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00608  M00S00608.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
00609  M00S00609.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
00610  M00S00610.sx3ucp  +++|      MFLUSH;
00611  M00S00611.sx3ucp  +++|      UCP$RES;
00612  M00S00612.sx3ucp  +++|      RETURN;
00613  M00S00613.sx3ucp  +++|
00614  M00S00614.sx3ucp  +++|      END  # ADDCUBE #
00615  M00S00615.sx3ucp  +++|
00616  M00S00616.sx3ucp  +++|    TERM
00617  M00S00617.sx3ucp  +++|PROC CONVER3((REQTYPE),(REQCODE),(MCSTAT),RSTATUS);
00618  M00S00618.sx3ucp  +++|# TITLE CONVER3 - CONVERT MAP/CATALOG ERRORS TO *UCP* ERRORS.         #
00619  M00S00619.sx3ucp  +++|
00620  M00S00620.sx3ucp  +++|      BEGIN  # CONVER3 #
00621  M00S00621.sx3ucp  +++|
00622  M00S00622.sx3ucp  +++|#
00623  M00S00623.sx3ucp  +++|**    CONVER3 - CONVERT MAP/CATALOG ERRORS TO *UCP* ERRORS.
00624  M00S00624.sx3ucp  +++|*
00625  M00S00625.sx3ucp  +++|*     PROC CONVER3((REQTYPE),(REQCODE),(MCSTAT),RSTATUS)
00626  M00S00626.sx3ucp  +++|*
00627  M00S00627.sx3ucp  +++|*     ENTRY     REQTYPE - REQUEST TYPE (TYPE 3).
00628  M00S00628.sx3ucp  +++|*               REQCODE - REQUEST CODE (VALID TYPE 3 CODE).
00629  M00S00629.sx3ucp  +++|*               MCSTAT  - MAP/CATALOG ERROR CODE.
00630  M00S00630.sx3ucp  +++|*
00631  M00S00631.sx3ucp  +++|*     EXIT      RSTATUS - *UCP* ERROR CODE.
00632  M00S00632.sx3ucp  +++|*
00633  M00S00633.sx3ucp  +++|*     MESSAGES  * EXEC ABNORMAL, CONVER3. *
00634  M00S00634.sx3ucp  +++|#
00635  M00S00635.sx3ucp  +++|
00636  M00S00636.sx3ucp  +++|      ITEM REQTYPE    U;             # REQUEST TYPE #
00637  M00S00637.sx3ucp  +++|      ITEM REQCODE    U;             # REQUEST CODE #
00638  M00S00638.sx3ucp  +++|      ITEM MCSTAT     U;             # MAP/CATALOG ERROR CODE #
00639  M00S00639.sx3ucp  +++|      ITEM RSTATUS    U;             # *UCP* ERROR CODE RETURNED #
00640  M00S00640.sx3ucp  +++|
00641  M00S00641.sx3ucp  +++|#
00642  M00S00642.sx3ucp  +++|****  PROC CONVER3 - XREF LIST BEGIN.
00643  M00S00643.sx3ucp  +++|#
00644  M00S00644.sx3ucp  +++|
00645  M00S00645.sx3ucp  +++|      XREF
00646  M00S00646.sx3ucp  +++|        BEGIN
00647  M00S00647.sx3ucp  +++|        PROC ABORT;                  # INTERFACE TO *ABORT* MACRO #
00648  M00S00648.sx3ucp  +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
00649  M00S00649.sx3ucp  +++|        END
00650  M00S00650.sx3ucp  +++|
00651  M00S00651.sx3ucp  +++|#
00652  M00S00652.sx3ucp  +++|****  PROC CONVER3 - XREF LIST END.
00653  M00S00653.sx3ucp  +++|#
00654  M00S00654.sx3ucp  +++|
00655  M00S00655.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
00656  M00S00656.sx3ucp  +++|*CALL COMBFAS
00657  M00S00657.sx3ucp  +++|*CALL COMBCMS
00658  M00S00658.sx3ucp  +++|*CALL COMBCPR
00659  M00S00659.sx3ucp  +++|*CALL,COMXMSC
00660  M00S00660.sx3ucp  +++|
00661  M00S00661.sx3ucp  +++|      ARRAY ERRMAP [CMASTAT"NOERR":CMASTAT"STATLAST"] P(1);
00662  M00S00662.sx3ucp  +++|        BEGIN
00663  M00S00663.sx3ucp  +++|        ITEM ERR$RCV    U(00,00,60)   =  [  # RESPONSE CODE VALIDITY #
00664  M00S00664.sx3ucp  +++|        O"37777000000000000000",     # NO ERROR #
00665  M00S00665.sx3ucp  +++|        O"37775000000000000000",     # FILE INTERLOCKED #
00666  M00S00666.sx3ucp  +++|        O"00000000000000000000",     # FILE ALREADY OPEN #
00667  M00S00667.sx3ucp  +++|        O"37774000000000000000",     # FILE NOT OPEN #
00668  M00S00668.sx3ucp  +++|        O"00000000000000000000",     # FILE NOT OPEN IN *MODIFY* MODE #
00669  M00S00669.sx3ucp  +++|        O"00000000000000000000",     # FILE ALREADY INITIALIZED #
00670  M00S00670.sx3ucp  +++|        O"04000000000000000000",     # SUBCATALOG ALREADY EXISTS #
00671  M00S00671.sx3ucp  +++|        O"37674000000000000000",     # NO SUCH SUBCATALOG #
00672  M00S00672.sx3ucp  +++|        O"37775000000000000000",     # *CIO* ERROR #
00673  M00S00673.sx3ucp  +++|        O"33370000000000000000",     # ORDINAL OUT OF RANGE #
00674  M00S00674.sx3ucp  +++|        O"00001000000000000000",     # MAP/CATALOG *ATTACH* ERROR #
00675  M00S00675.sx3ucp  +++|        O"00000000000000000000",     # MAP/CATALOG *DEFINE* ERROR #
00676  M00S00676.sx3ucp  +++|        O"24400000000000000000",     # TEMPORARY FILE *DEFINE* ERROR #
00677  M00S00677.sx3ucp  +++|        O"24400000000000000000",     # TEMPORARY FILE *ATTACH* ERROR #
00678  M00S00678.sx3ucp  +++|        O"24400000000000000000",     # TEMPORARY FILE *PURGE* ERROR #
00679  M00S00679.sx3ucp  +++|        O"24400000000000000000",     # TEMPORARY FILE *RENAME* ERROR #
00680  M00S00680.sx3ucp  +++|        O"00000000000000000000",     # *OCT* FULL #
00681  M00S00681.sx3ucp  +++|        ];
00682  M00S00682.sx3ucp  +++|        END
00683  M00S00683.sx3ucp  +++|
00684  M00S00684.sx3ucp  +++|      SWITCH CONV$LIST:CMASTAT       # CONVERSION LIST #
00685  M00S00685.sx3ucp  +++|                 CONV0:NOERR,        # NO ERROR #
00686  M00S00686.sx3ucp  +++|                 CONV1:INTLK,        # FILE INTERLOCKED #
00687  M00S00687.sx3ucp  +++|                 CONV2:NOTOPEN,      # FILE NOT OPENED #
00688  M00S00688.sx3ucp  +++|                 CONV4:SCEXISTS,     # SUBCATALOG ALREADY EXISTS #
00689  M00S00689.sx3ucp  +++|                 CONV5:NOSUBCAT,     # NO SUCH SUBCATALOG #
00690  M00S00690.sx3ucp  +++|                 CONV6:CIOERR,       # *CIO* ERROR #
00691  M00S00691.sx3ucp  +++|                 CONV8:ORDERR,       # ORDINAL OUT OF RANGE #
00692  M00S00692.sx3ucp  +++|                 CONV6:ATTERR,       # MAP/CATALOG *ATTACH* ERROR #
00693  M00S00693.sx3ucp  +++|                 CONV6:DEFERR,       # MAP/CATALOG *DEFINE* ERROR #
00694  M00S00694.sx3ucp  +++|                 CONV6:TDEFERR,      # TEMPORARY FILE *DEFINE* ERROR #
00695  M00S00695.sx3ucp  +++|                 CONV6:TATTERR,      # TEMPORARY FILE *ATTACH* ERROR #
00696  M00S00696.sx3ucp  +++|                 CONV6:TPRGERR,      # TEMPORARY FILE *PURGE* ERROR #
00697  M00S00697.sx3ucp  +++|                 CONV6:TRNMERR;      # TEMPORARY FILE *RENAME* ERROR #
00698  M00S00698.sx3ucp  +++|                                               CONTROL EJECT;
00699  M00S00699.sx3ucp  +++|
00700  M00S00700.sx3ucp  +++|#
00701  M00S00701.sx3ucp  +++|*     TEST FOR AN INVALID ERROR CODE.
00702  M00S00702.sx3ucp  +++|#
00703  M00S00703.sx3ucp  +++|
00704  M00S00704.sx3ucp  +++|      IF REQTYPE NQ TYP"TYP3"        ##
00705  M00S00705.sx3ucp  +++|        OR MCSTAT GQ CMASTAT"STATLAST"  ##
00706  M00S00706.sx3ucp  +++|        OR REQCODE GQ REQTYP3"LSTREQTYP3"  ##
00707  M00S00707.sx3ucp  +++|        OR B<REQCODE,1>ERR$RCV[MCSTAT] EQ 0
00708  M00S00708.sx3ucp  +++|      THEN
00709  M00S00709.sx3ucp  +++|        BEGIN
00710  M00S00710.sx3ucp  +++|        FE$RTN[0] = "CONVER3.";
00711  M00S00711.sx3ucp  +++|        MESSAGE(FEMSG[0],UDFL1);
00712  M00S00712.sx3ucp  +++|        ABORT;
00713  M00S00713.sx3ucp  +++|        END
00714  M00S00714.sx3ucp  +++|
00715  M00S00715.sx3ucp  +++|#
00716  M00S00716.sx3ucp  +++|*     SIMULATED CASE STATEMENT TO CONVERT THE MAP/CATALOG ERROR CODE
00717  M00S00717.sx3ucp  +++|*     TO THE APPROPRIATE *UCP* ERROR CODE.
00718  M00S00718.sx3ucp  +++|#
00719  M00S00719.sx3ucp  +++|
00720  M00S00720.sx3ucp  +++|      GOTO CONV$LIST[MCSTAT];
00721  M00S00721.sx3ucp  +++|
00722  M00S00722.sx3ucp  +++|CONV0:                               # NO ERROR #
00723  M00S00723.sx3ucp  +++|      RSTATUS = RESPTYP3"OK3";
00724  M00S00724.sx3ucp  +++|      RETURN;
00725  M00S00725.sx3ucp  +++|
00726  M00S00726.sx3ucp  +++|CONV1:                               # CATALOG/MAP INTERLOCKED #
00727  M00S00727.sx3ucp  +++|      RSTATUS = RESPTYP3"C$M$INTLCK";
00728  M00S00728.sx3ucp  +++|      RETURN;
00729  M00S00729.sx3ucp  +++|
00730  M00S00730.sx3ucp  +++|CONV2:                               # CATALOG/MAP NOT OPEN #
00731  M00S00731.sx3ucp  +++|      RSTATUS = RESPTYP3"C$M$NOPEN";
00732  M00S00732.sx3ucp  +++|      RETURN;
00733  M00S00733.sx3ucp  +++|
00734  M00S00734.sx3ucp  +++|CONV4:                               # SUBCATALOG ALREADY EXISTS #
00735  M00S00735.sx3ucp  +++|      RSTATUS = RESPTYP3"SUB$CAT$EX";
00736  M00S00736.sx3ucp  +++|      RETURN;
00737  M00S00737.sx3ucp  +++|
00738  M00S00738.sx3ucp  +++|CONV5:                               # NO SUCH SUBCATALOG #
00739  M00S00739.sx3ucp  +++|      RSTATUS = RESPTYP3"NO$SUB$CAT";
00740  M00S00740.sx3ucp  +++|      RETURN;
00741  M00S00741.sx3ucp  +++|
00742  M00S00742.sx3ucp  +++|CONV6:                               # PERMANENT FILE PROBLEM #
00743  M00S00743.sx3ucp  +++|      RSTATUS = RESPTYP3"PF$PROB";
00744  M00S00744.sx3ucp  +++|      RETURN;
00745  M00S00745.sx3ucp  +++|
00746  M00S00746.sx3ucp  +++|CONV8:                               # ORDINAL OUT OF RANGE #
00747  M00S00747.sx3ucp  +++|      RSTATUS = RESPTYP3"ILLEG$ORD";
00748  M00S00748.sx3ucp  +++|      RETURN;
00749  M00S00749.sx3ucp  +++|
00750  M00S00750.sx3ucp  +++|#
00751  M00S00751.sx3ucp  +++|*     END SIMULATED CASE STATEMENT TO CONVERT THE MAP/CATALOG
00752  M00S00752.sx3ucp  +++|*     ERROR CODE TO THE APPROPRIATE *UCP* ERROR CODE.
00753  M00S00753.sx3ucp  +++|#
00754  M00S00754.sx3ucp  +++|
00755  M00S00755.sx3ucp  +++|      END  # CONVER3 #
00756  M00S00756.sx3ucp  +++|
00757  M00S00757.sx3ucp  +++|    TERM
00758  M00S00758.sx3ucp  +++|PROC GETPD;
00759  M00S00759.sx3ucp  +++|# TITLE GETPD - RETURNS LAST *PRG$ORPH* DATE AND TIME.                #
00760  M00S00760.sx3ucp  +++|
00761  M00S00761.sx3ucp  +++|      BEGIN  # GETPD #
00762  M00S00762.sx3ucp  +++|
00763  M00S00763.sx3ucp  +++|#
00764  M00S00764.sx3ucp  +++|**    GETPD - RETURNS LAST *PRG$ORPH* DATE AND TIME.
00765  M00S00765.sx3ucp  +++|*     *GETPD* RETURNS THE DATE AND TIME AT WHICH THE LAST
00766  M00S00766.sx3ucp  +++|*     *PRG$ORPH* REQUEST FROM *SSVAL* WAS PROCESSED.
00767  M00S00767.sx3ucp  +++|*     THE DATE AND TIME IS RETURNED VIA THE *CSN* FIELD
00768  M00S00768.sx3ucp  +++|*     OF THE RESPONSE WORD.
00769  M00S00769.sx3ucp  +++|*
00770  M00S00770.sx3ucp  +++|*     PROC GETPD
00771  M00S00771.sx3ucp  +++|*
00772  M00S00772.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00773  M00S00773.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00774  M00S00774.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
00775  M00S00775.sx3ucp  +++|*               *LTCENTRY*.
00776  M00S00776.sx3ucp  +++|*
00777  M00S00777.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
00778  M00S00778.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
00779  M00S00779.sx3ucp  +++|*               OF THE REQUEST.
00780  M00S00780.sx3ucp  +++|*
00781  M00S00781.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
00782  M00S00782.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
00783  M00S00783.sx3ucp  +++|*                    = OK3             OK
00784  M00S00784.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
00785  M00S00785.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
00786  M00S00786.sx3ucp  +++|*                    = RESUB$REQ       RESUBMIT REQUEST
00787  M00S00787.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
00788  M00S00788.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
00789  M00S00789.sx3ucp  +++|#
00790  M00S00790.sx3ucp  +++|
00791  M00S00791.sx3ucp  +++|#
00792  M00S00792.sx3ucp  +++|****  PROC GETPD - XREF LIST BEGIN.
00793  M00S00793.sx3ucp  +++|#
00794  M00S00794.sx3ucp  +++|
00795  M00S00795.sx3ucp  +++|      XREF
00796  M00S00796.sx3ucp  +++|        BEGIN
00797  M00S00797.sx3ucp  +++|        PROC CGETPD;                 # GET PURGE DATE #
00798  M00S00798.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
00799  M00S00799.sx3ucp  +++|                                       *UCP* ERRORS #
00800  M00S00800.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
00801  M00S00801.sx3ucp  +++|                                     #
00802  M00S00802.sx3ucp  +++|        END
00803  M00S00803.sx3ucp  +++|
00804  M00S00804.sx3ucp  +++|#
00805  M00S00805.sx3ucp  +++|****  PROC GETPD - XREF LIST END.
00806  M00S00806.sx3ucp  +++|#
00807  M00S00807.sx3ucp  +++|
00808  M00S00808.sx3ucp  +++|
00809  M00S00809.sx3ucp  +++|
00810  M00S00810.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
00811  M00S00811.sx3ucp  +++|*CALL COMBFAS
00812  M00S00812.sx3ucp  +++|*CALL COMBCPR
00813  M00S00813.sx3ucp  +++|*CALL COMBMAP
00814  M00S00814.sx3ucp  +++|*CALL COMXLTC
00815  M00S00815.sx3ucp  +++|
00816  M00S00816.sx3ucp  +++|      ITEM LASTPRG    U;             # LAST PURGE DATE AND TIME #
00817  M00S00817.sx3ucp  +++|
00818  M00S00818.sx3ucp  +++|
00819  M00S00819.sx3ucp  +++|
00820  M00S00820.sx3ucp  +++|
00821  M00S00821.sx3ucp  +++|
00822  M00S00822.sx3ucp  +++|      CGETPD(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],LASTPRG,0,ERRSTAT);
00823  M00S00823.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00824  M00S00824.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
00825  M00S00825.sx3ucp  +++|      LTC$DATE[LTCENTRY] = LASTPRG;
00826  M00S00826.sx3ucp  +++|      UCP$RES;
00827  M00S00827.sx3ucp  +++|      RETURN;
00828  M00S00828.sx3ucp  +++|
00829  M00S00829.sx3ucp  +++|      END  # GETPD #
00830  M00S00830.sx3ucp  +++|
00831  M00S00831.sx3ucp  +++|    TERM
00832  M00S00832.sx3ucp  +++|PROC LOANFCTQ(ACTION);
00833  M00S00833.sx3ucp  +++|
00834  M00S00834.sx3ucp  +++|# TITLE LOANFCTQ - ADD OR RECLAIM AN *FCTQ* ENTRY FOR *UCP* PROCS.    #
00835  M00S00835.sx3ucp  +++|
00836  M00S00836.sx3ucp  +++|      BEGIN  # LOANFCTQ #
00837  M00S00837.sx3ucp  +++|
00838  M00S00838.sx3ucp  +++|#
00839  M00S00839.sx3ucp  +++|**    LOANFCTQ - ADD OR RECLAIM AN *FCTQ* ENTRY FOR *UCP* PROCESSING.
00840  M00S00840.sx3ucp  +++|*
00841  M00S00841.sx3ucp  +++|*     THIS PROCEDURE PROVIDES AN *FCTQ* ENTRY WHICH CAN BE USED
00842  M00S00842.sx3ucp  +++|*     BY THE CALLING *UCP* REQUEST PROCESSOR IN THE EVENT THE NORMAL
00843  M00S00843.sx3ucp  +++|*     *FCTQ* ENTRIES ARE IN USE BY *HLRQ* PROCESSING.  THE CALLING
00844  M00S00844.sx3ucp  +++|*     PROCEDURES RULES ARE TO CALL *LOANFCTQ* PRIOR TO THE *ACQ$FCT*
00845  M00S00845.sx3ucp  +++|*     CALL TO ENSURE AN AVAILABLE *FCTQ* ENTRY.  AFTER CALLING
00846  M00S00846.sx3ucp  +++|*     *RLS$FCT*, *LOANFCTQ* IS AGAIN CALLED TO TAKE THE TEMPORARY
00847  M00S00847.sx3ucp  +++|*     *FCTQ* ENTRY OUT OF THE *FCTQ* FREE SPACE CHAIN.
00848  M00S00848.sx3ucp  +++|*
00849  M00S00849.sx3ucp  +++|*     PROC LOANFCTQ(ACTION)
00850  M00S00850.sx3ucp  +++|*
00851  M00S00851.sx3ucp  +++|*     ENTRY     ACTION = 0, AN *FCTQ* ENTRY TO BE MADE AVAILABLE.
00852  M00S00852.sx3ucp  +++|*                      = X, THE *FCTQ* ENTRY IS TO BE RECLAIMED.
00853  M00S00853.sx3ucp  +++|*
00854  M00S00854.sx3ucp  +++|*     EXIT      THE *FCTQ* FREE SPACE CHAIN IS PROPERLY ADJUSTED.
00855  M00S00855.sx3ucp  +++|#
00856  M00S00856.sx3ucp  +++|
00857  M00S00857.sx3ucp  +++|      ITEM ACTION     U;             # REQUESTED PROCESSING ACTION #
00858  M00S00858.sx3ucp  +++|
00859  M00S00859.sx3ucp  +++|#
00860  M00S00860.sx3ucp  +++|****  PROC LOANFCTQ - XREF LIST BEGIN.
00861  M00S00861.sx3ucp  +++|#
00862  M00S00862.sx3ucp  +++|
00863  M00S00863.sx3ucp  +++|      XREF
00864  M00S00864.sx3ucp  +++|        BEGIN
00865  M00S00865.sx3ucp  +++|        PROC ADD$LNK;                # ADD ENTRY TO A CHAIN #
00866  M00S00866.sx3ucp  +++|        PROC DEL$LNK;                # DELETE ENTRY FROM A CHAIN #
00867  M00S00867.sx3ucp  +++|        PROC ZFILL;                  # ZERO FILL AN ARRAY #
00868  M00S00868.sx3ucp  +++|        END
00869  M00S00869.sx3ucp  +++|
00870  M00S00870.sx3ucp  +++|#
00871  M00S00871.sx3ucp  +++|****  PROC LOANFCTQ - XREF LIST END.
00872  M00S00872.sx3ucp  +++|#
00873  M00S00873.sx3ucp  +++|
00874  M00S00874.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
00875  M00S00875.sx3ucp  +++|
00876  M00S00876.sx3ucp  +++|*CALL,COMBFAS
00877  M00S00877.sx3ucp  +++|*CALL,COMBCHN
00878  M00S00878.sx3ucp  +++|*CALL,COMBMCT
00879  M00S00879.sx3ucp  +++|*CALL,COMXFCQ
00880  M00S00880.sx3ucp  +++|
00881  M00S00881.sx3ucp  +++|      ARRAY LOANERFCTQ [0:0] S(FCTQHL);;  # *FCTQ* HEADER #
00882  M00S00882.sx3ucp  +++|      ARRAY LOANERFCT [0:0] S(FCTENTL);;  # *FCT* ENTRY #
00883  M00S00883.sx3ucp  +++|
00884  M00S00884.sx3ucp  +++|
00885  M00S00885.sx3ucp  +++|      IF ACTION EQ 0
00886  M00S00886.sx3ucp  +++|      THEN
00887  M00S00887.sx3ucp  +++|        BEGIN
00888  M00S00888.sx3ucp  +++|        ZFILL(LOANERFCTQ[0],FCTQHL+FCTENTL);
00889  M00S00889.sx3ucp  +++|        ADD$LNK(LOC(LOANERFCTQ[0]),LCHN"FCT$FRSPC",0);
00890  M00S00890.sx3ucp  +++|        END
00891  M00S00891.sx3ucp  +++|
00892  M00S00892.sx3ucp  +++|      ELSE
00893  M00S00893.sx3ucp  +++|        BEGIN
00894  M00S00894.sx3ucp  +++|        DEL$LNK(LOC(LOANERFCTQ[0]),LCHN"FCT$FRSPC",0);
00895  M00S00895.sx3ucp  +++|        END
00896  M00S00896.sx3ucp  +++|
00897  M00S00897.sx3ucp  +++|      RETURN;
00898  M00S00898.sx3ucp  +++|      END  # LOANFCTQ #
00899  M00S00899.sx3ucp  +++|
00900  M00S00900.sx3ucp  +++|    TERM
00901  M00S00901.sx3ucp  +++|PROC MAPRCLM;
00902  M00S00902.sx3ucp  +++|# TITLE MAPRCLM - RE-ATTACHES DESIGNATED MAP FILE.                    #
00903  M00S00903.sx3ucp  +++|
00904  M00S00904.sx3ucp  +++|      BEGIN  # MAPRCLM #
00905  M00S00905.sx3ucp  +++|
00906  M00S00906.sx3ucp  +++|#
00907  M00S00907.sx3ucp  +++|**    MAPRCLM - RE-ATTACHES DESIGNATED MAP FILE.
00908  M00S00908.sx3ucp  +++|*
00909  M00S00909.sx3ucp  +++|*     *MAPRCLM* RE-ATTACHES THE DESIGNATED MAP FILE.
00910  M00S00910.sx3ucp  +++|*
00911  M00S00911.sx3ucp  +++|*     PROC MAPRCLM
00912  M00S00912.sx3ucp  +++|*
00913  M00S00913.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00914  M00S00914.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00915  M00S00915.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
00916  M00S00916.sx3ucp  +++|*               *LTCENTRY*.
00917  M00S00917.sx3ucp  +++|*
00918  M00S00918.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
00919  M00S00919.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
00920  M00S00920.sx3ucp  +++|*               OF THE REQUEST.
00921  M00S00921.sx3ucp  +++|*
00922  M00S00922.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
00923  M00S00923.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
00924  M00S00924.sx3ucp  +++|*                    = OK3             OK
00925  M00S00925.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
00926  M00S00926.sx3ucp  +++|*
00927  M00S00927.sx3ucp  +++|*     MESSAGES  * EXEC ABNORMAL, MAPRCLM.*
00928  M00S00928.sx3ucp  +++|#
00929  M00S00929.sx3ucp  +++|
00930  M00S00930.sx3ucp  +++|#
00931  M00S00931.sx3ucp  +++|****  PROC MAPRCLM - XREF LIST BEGIN.
00932  M00S00932.sx3ucp  +++|#
00933  M00S00933.sx3ucp  +++|
00934  M00S00934.sx3ucp  +++|      XREF
00935  M00S00935.sx3ucp  +++|        BEGIN
00936  M00S00936.sx3ucp  +++|        PROC ABORT;                  # INTERFACE TO *ABORT* MACRO #
00937  M00S00937.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
00938  M00S00938.sx3ucp  +++|                                       *UCP* ERRORS #
00939  M00S00939.sx3ucp  +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
00940  M00S00940.sx3ucp  +++|        PROC MRCLMLK;                # RECLAIM MAP INTERLOCK. #
00941  M00S00941.sx3ucp  +++|        PROC SETPFP;                 # SET FAMILY AND USER INDEX #
00942  M00S00942.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST
00943  M00S00943.sx3ucp  +++|                                       COMPLETE. #
00944  M00S00944.sx3ucp  +++|        END
00945  M00S00945.sx3ucp  +++|
00946  M00S00946.sx3ucp  +++|#
00947  M00S00947.sx3ucp  +++|****  PROC MAPRCLM - XREF LIST END.
00948  M00S00948.sx3ucp  +++|#
00949  M00S00949.sx3ucp  +++|
00950  M00S00950.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
00951  M00S00951.sx3ucp  +++|*CALL COMBFAS
00952  M00S00952.sx3ucp  +++|*CALL COMBCPR
00953  M00S00953.sx3ucp  +++|*CALL COMBMAP
00954  M00S00954.sx3ucp  +++|*CALL COMBPFP
00955  M00S00955.sx3ucp  +++|*CALL COMXLTC
00956  M00S00956.sx3ucp  +++|*CALL COMXMSC
00957  M00S00957.sx3ucp  +++|
00958  M00S00958.sx3ucp  +++|
00959  M00S00959.sx3ucp  +++|
00960  M00S00960.sx3ucp  +++|
00961  M00S00961.sx3ucp  +++|
00962  M00S00962.sx3ucp  +++|      PFP$WRD0[0] = 0;               # SET FAMILY AND USER INDEX #
00963  M00S00963.sx3ucp  +++|      PFP$FG1[0] = TRUE;
00964  M00S00964.sx3ucp  +++|      PFP$FG4[0] = TRUE;
00965  M00S00965.sx3ucp  +++|      PFP$FAM[0] = DEF$FAM;
00966  M00S00966.sx3ucp  +++|      PFP$UI[0] = DEF$UI;
00967  M00S00967.sx3ucp  +++|      SETPFP(PFP);
00968  M00S00968.sx3ucp  +++|      IF PFP$STAT[0] NQ 0
00969  M00S00969.sx3ucp  +++|      THEN                           # FAMILY NOT FOUND #
00970  M00S00970.sx3ucp  +++|        BEGIN
00971  M00S00971.sx3ucp  +++|        FE$RTN[0] = "MAPRCLM.";
00972  M00S00972.sx3ucp  +++|        MESSAGE(FEMSG[0],UDFL1);     # ISSUE ERROR MESSAGE #
00973  M00S00973.sx3ucp  +++|        ABORT;
00974  M00S00974.sx3ucp  +++|        END
00975  M00S00975.sx3ucp  +++|
00976  M00S00976.sx3ucp  +++|      MRCLMLK(CPR$CSU[0],ERRSTAT);
00977  M00S00977.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
00978  M00S00978.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
00979  M00S00979.sx3ucp  +++|      UCP$RES;
00980  M00S00980.sx3ucp  +++|      RETURN;
00981  M00S00981.sx3ucp  +++|
00982  M00S00982.sx3ucp  +++|      END  # MAPRCLM #
00983  M00S00983.sx3ucp  +++|
00984  M00S00984.sx3ucp  +++|    TERM
00985  M00S00985.sx3ucp  +++|PROC MAPRELS;
00986  M00S00986.sx3ucp  +++|# TITLE MAPRELS - RETURNS THE DESIGNATED MAP FILE.                    #
00987  M00S00987.sx3ucp  +++|
00988  M00S00988.sx3ucp  +++|      BEGIN  # MAPRELS #
00989  M00S00989.sx3ucp  +++|
00990  M00S00990.sx3ucp  +++|#
00991  M00S00991.sx3ucp  +++|**    MAPRELS - RETURNS THE DESIGNATED MAP FILE.
00992  M00S00992.sx3ucp  +++|*
00993  M00S00993.sx3ucp  +++|*     *MAPRELS* RETURNS THE DESIGNATED MAP FILE.
00994  M00S00994.sx3ucp  +++|*
00995  M00S00995.sx3ucp  +++|*     PROC MAPRELS
00996  M00S00996.sx3ucp  +++|*
00997  M00S00997.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
00998  M00S00998.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
00999  M00S00999.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
01000  M00S01000.sx3ucp  +++|*               *LTCENTRY*.
01001  M00S01001.sx3ucp  +++|*
01002  M00S01002.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01003  M00S01003.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01004  M00S01004.sx3ucp  +++|*               OF THE REQUEST.
01005  M00S01005.sx3ucp  +++|*
01006  M00S01006.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
01007  M00S01007.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
01008  M00S01008.sx3ucp  +++|*                    = OK3             OK
01009  M00S01009.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
01010  M00S01010.sx3ucp  +++|#
01011  M00S01011.sx3ucp  +++|
01012  M00S01012.sx3ucp  +++|#
01013  M00S01013.sx3ucp  +++|****  PROC MAPRELS - XREF LIST BEGIN.
01014  M00S01014.sx3ucp  +++|#
01015  M00S01015.sx3ucp  +++|
01016  M00S01016.sx3ucp  +++|      XREF
01017  M00S01017.sx3ucp  +++|        BEGIN
01018  M00S01018.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
01019  M00S01019.sx3ucp  +++|                                       *UCP* ERRORS #
01020  M00S01020.sx3ucp  +++|        PROC MRELSLK;                # RETURN A MAP FILE #
01021  M00S01021.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
01022  M00S01022.sx3ucp  +++|                                     #
01023  M00S01023.sx3ucp  +++|        END
01024  M00S01024.sx3ucp  +++|
01025  M00S01025.sx3ucp  +++|#
01026  M00S01026.sx3ucp  +++|****  PROC MAPRELS - XREF LIST END.
01027  M00S01027.sx3ucp  +++|#
01028  M00S01028.sx3ucp  +++|
01029  M00S01029.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
01030  M00S01030.sx3ucp  +++|*CALL COMBFAS
01031  M00S01031.sx3ucp  +++|*CALL COMBCPR
01032  M00S01032.sx3ucp  +++|*CALL COMXLTC
01033  M00S01033.sx3ucp  +++|
01034  M00S01034.sx3ucp  +++|
01035  M00S01035.sx3ucp  +++|
01036  M00S01036.sx3ucp  +++|
01037  M00S01037.sx3ucp  +++|
01038  M00S01038.sx3ucp  +++|      LTC$RQR[LTCENTRY] = RESPTYP3"OK3";
01039  M00S01039.sx3ucp  +++|      MRELSLK(CPR$CSU[0]);
01040  M00S01040.sx3ucp  +++|      UCP$RES;
01041  M00S01041.sx3ucp  +++|      RETURN;
01042  M00S01042.sx3ucp  +++|
01043  M00S01043.sx3ucp  +++|      END  # MAPRELS #
01044  M00S01044.sx3ucp  +++|
01045  M00S01045.sx3ucp  +++|    TERM
01046  M00S01046.sx3ucp  +++|PROC NONQ$RP;
01047  M00S01047.sx3ucp  +++|# TITLE NONQ$RP - PRELIMINARY PROCESSING OF TYPE 3 REQUEST.           #
01048  M00S01048.sx3ucp  +++|
01049  M00S01049.sx3ucp  +++|      BEGIN  # NONQ$RP #
01050  M00S01050.sx3ucp  +++|
01051  M00S01051.sx3ucp  +++|
01052  M00S01052.sx3ucp  +++|#
01053  M00S01053.sx3ucp  +++|**    NONQ$RP - PRELIMINARY PROCESSING OF TYPE 3 REQUEST.
01054  M00S01054.sx3ucp  +++|*
01055  M00S01055.sx3ucp  +++|*     *NONQ$RP DOES PRELIMINARY PROCESSING OF TYPE 3 *UCP* REQUESTS
01056  M00S01056.sx3ucp  +++|*     AND CALLS THE PROPER MODULE TO DO THE DETAILED PROCESSING OF
01057  M00S01057.sx3ucp  +++|*     THE REQUESTS.
01058  M00S01058.sx3ucp  +++|*
01059  M00S01059.sx3ucp  +++|*     PROC NONQ$RP
01060  M00S01060.sx3ucp  +++|*
01061  M00S01061.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
01062  M00S01062.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
01063  M00S01063.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
01064  M00S01064.sx3ucp  +++|*               *LTCENTRY*.
01065  M00S01065.sx3ucp  +++|*
01066  M00S01066.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01067  M00S01067.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01068  M00S01068.sx3ucp  +++|*               OF THE REQUEST.
01069  M00S01069.sx3ucp  +++|#
01070  M00S01070.sx3ucp  +++|
01071  M00S01071.sx3ucp  +++|#
01072  M00S01072.sx3ucp  +++|****  PROC NONQ$RP - XREF LIST BEGIN.
01073  M00S01073.sx3ucp  +++|#
01074  M00S01074.sx3ucp  +++|
01075  M00S01075.sx3ucp  +++|      XREF
01076  M00S01076.sx3ucp  +++|        BEGIN
01077  M00S01077.sx3ucp  +++|        PROC KILL$UC;                # ABORT A *UCP* #
01078  M00S01078.sx3ucp  +++|        PROC SSOVL;                  # LOAD *MSAS* OVERLAYS #
01079  M00S01079.sx3ucp  +++|        END
01080  M00S01080.sx3ucp  +++|
01081  M00S01081.sx3ucp  +++|#
01082  M00S01082.sx3ucp  +++|****  PROC NONQ$RP - XREF LIST END.
01083  M00S01083.sx3ucp  +++|#
01084  M00S01084.sx3ucp  +++|
01085  M00S01085.sx3ucp  +++|
01086  M00S01086.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
01087  M00S01087.sx3ucp  +++|*CALL COMBFAS
01088  M00S01088.sx3ucp  +++|*CALL COMBCPR
01089  M00S01089.sx3ucp  +++|*CALL COMBOVL
01090  M00S01090.sx3ucp  +++|*CALL COMBUCR
01091  M00S01091.sx3ucp  +++|*CALL COMXMSC
01092  M00S01092.sx3ucp  +++|
01093  M00S01093.sx3ucp  +++|#
01094  M00S01094.sx3ucp  +++|*     SWITCH LIST TO PROCESS THE TYPE 3 REQUESTS.
01095  M00S01095.sx3ucp  +++|#
01096  M00S01096.sx3ucp  +++|
01097  M00S01097.sx3ucp  +++|      SWITCH TYP3SW:REQTYP3
01098  M00S01098.sx3ucp  +++|           ADDCUBEL:ADD$CUBE,
01099  M00S01099.sx3ucp  +++|           ADDCARTL:ADD$CART,
01100  M00S01100.sx3ucp  +++|            ADDCSUL:ADD$CSU,
01101  M00S01101.sx3ucp  +++|            RMVCSUL:RMV$CSU,
01102  M00S01102.sx3ucp  +++|           RMVCUBEL:RMV$CUBE,
01103  M00S01103.sx3ucp  +++|           RMVCARTL:RMV$CART,
01104  M00S01104.sx3ucp  +++|            UPDCATL:UPD$CAT,
01105  M00S01105.sx3ucp  +++|            UPDMAPL:UPD$MAP,
Line S01106 Modification History
M01 (Removed by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01106  M01S01106.sx3ucp1 ---|          PURGORPHL:PURG$ORPH,
Line S00001 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01107  M01S00001.sx3ucp1 +++|          RELSETUPL:REL$SETUP,
01108  M00S01107.sx3ucp  +++|          PURGFRAGL:PURG$FRAG,
01109  M00S01108.sx3ucp  +++|           PURGFCTL:PURG$FCT,
01110  M00S01109.sx3ucp  +++|         GTPRGDATEL:GT$PRGDATE,
01111  M00S01110.sx3ucp  +++|           RELMPLKL:REL$MPLK,
01112  M00S01111.sx3ucp  +++|           RECMPLKL:REC$MPLK;
01113  M00S01112.sx3ucp  +++|
01114  M00S01113.sx3ucp  +++|
01115  M00S01114.sx3ucp  +++|
01116  M00S01115.sx3ucp  +++|
01117  M00S01116.sx3ucp  +++|
01118  M00S01117.sx3ucp  +++|#
01119  M00S01118.sx3ucp  +++|*     REQUEST CODE HAS TO BE VALID.
01120  M00S01119.sx3ucp  +++|#
01121  M00S01120.sx3ucp  +++|
01122  M00S01121.sx3ucp  +++|      IF CPR$RQC[0] EQ REQTYP3"RES3"  ##
01123  M00S01122.sx3ucp  +++|        OR CPR$RQC[0] GQ REQTYP3"LSTREQTYP3"
01124  M00S01123.sx3ucp  +++|      THEN
01125  M00S01124.sx3ucp  +++|        BEGIN
01126  M00S01125.sx3ucp  +++|        KILL$UC(KILLCODE"INVRQC");
01127  M00S01126.sx3ucp  +++|        RETURN;
01128  M00S01127.sx3ucp  +++|        END
01129  M00S01128.sx3ucp  +++|
01130  M00S01129.sx3ucp  +++|#
01131  M00S01130.sx3ucp  +++|*     CALL THE APPROPRIATE PROCESSOR AND THEN RETURN TO THE CALLER.
01132  M00S01131.sx3ucp  +++|#
01133  M00S01132.sx3ucp  +++|
01134  M00S01133.sx3ucp  +++|      GOTO TYP3SW[CPR$RQC[0]];
01135  M00S01134.sx3ucp  +++|
01136  M00S01135.sx3ucp  +++|ADDCUBEL:
01137  M00S01136.sx3ucp  +++|      SSOVL(LADDCUBE,0);
01138  M00S01137.sx3ucp  +++|      RETURN;
01139  M00S01138.sx3ucp  +++|
01140  M00S01139.sx3ucp  +++|ADDCARTL:
01141  M00S01140.sx3ucp  +++|      SSOVL(LADDCAR,0);
01142  M00S01141.sx3ucp  +++|      RETURN;
01143  M00S01142.sx3ucp  +++|
01144  M00S01143.sx3ucp  +++|
01145  M00S01144.sx3ucp  +++|ADDCSUL:
01146  M00S01145.sx3ucp  +++|      SSOVL(LADDCSU,0);
01147  M00S01146.sx3ucp  +++|      RETURN;
01148  M00S01147.sx3ucp  +++|
01149  M00S01148.sx3ucp  +++|RMVCUBEL:
01150  M00S01149.sx3ucp  +++|      SSOVL(LRMVCUBE,0);
01151  M00S01150.sx3ucp  +++|      RETURN;
01152  M00S01151.sx3ucp  +++|
01153  M00S01152.sx3ucp  +++|RMVCARTL:
01154  M00S01153.sx3ucp  +++|      SSOVL(LRMVCAR,0);
01155  M00S01154.sx3ucp  +++|      RETURN;
01156  M00S01155.sx3ucp  +++|
01157  M00S01156.sx3ucp  +++|RMVCSUL:
01158  M00S01157.sx3ucp  +++|      SSOVL(LRMVCSU,0);
01159  M00S01158.sx3ucp  +++|      RETURN;
01160  M00S01159.sx3ucp  +++|
01161  M00S01160.sx3ucp  +++|UPDCATL:
01162  M00S01161.sx3ucp  +++|      SSOVL(LUPDCAT,0);
01163  M00S01162.sx3ucp  +++|      RETURN;
01164  M00S01163.sx3ucp  +++|
01165  M00S01164.sx3ucp  +++|UPDMAPL:
01166  M00S01165.sx3ucp  +++|      SSOVL(LUPDMAP,0);
01167  M00S01166.sx3ucp  +++|      RETURN;
01168  M00S01167.sx3ucp  +++|
01169  M00S01168.sx3ucp  +++|PURGFRAGL:
Line S01169 Modification History
M01 (Removed by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01170  M01S01169.sx3ucp1 ---|      SSOVL(LPURGCHN,0);
Line S00002 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01171  M01S00002.sx3ucp1 +++|      SSOVL(LRESETUP,0);
01172  M00S01170.sx3ucp  +++|      RETURN;
01173  M00S01171.sx3ucp  +++|
Line S01172 Modification History
M01 (Removed by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01174  M01S01172.sx3ucp1 ---|PURGORPHL:
01175  M01S01173.sx3ucp1 ---|      SSOVL(LPURGCHN,0);
Line S00003 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01176  M01S00003.sx3ucp1 +++|RELSETUPL:
01177  M01S00004.sx3ucp1 +++|      SSOVL(LRESETUP,0);
01178  M00S01174.sx3ucp  +++|      RETURN;
01179  M00S01175.sx3ucp  +++|
01180  M00S01176.sx3ucp  +++|PURGFCTL:
01181  M00S01177.sx3ucp  +++|      SSOVL(LPURGFCT,0);
01182  M00S01178.sx3ucp  +++|      RETURN;
01183  M00S01179.sx3ucp  +++|
01184  M00S01180.sx3ucp  +++|GTPRGDATEL:
01185  M00S01181.sx3ucp  +++|      SSOVL(LGETPD,0);
01186  M00S01182.sx3ucp  +++|      RETURN;
01187  M00S01183.sx3ucp  +++|
01188  M00S01184.sx3ucp  +++|RELMPLKL:
01189  M00S01185.sx3ucp  +++|      SSOVL(LMAPRELS,0);
01190  M00S01186.sx3ucp  +++|      RETURN;
01191  M00S01187.sx3ucp  +++|
01192  M00S01188.sx3ucp  +++|RECMPLKL:
01193  M00S01189.sx3ucp  +++|      SSOVL(LMAPRCLM,0);
01194  M00S01190.sx3ucp  +++|      RETURN;
01195  M00S01191.sx3ucp  +++|
01196  M00S01192.sx3ucp  +++|      END  # NONQ$RP #
01197  M00S01193.sx3ucp  +++|
01198  M00S01194.sx3ucp  +++|    TERM
01199  M00S01195.sx3ucp  +++|PROC PURGFCT;
01200  M00S01196.sx3ucp  +++|# TITLE PURGFCT - DELETE *FCT* ENTRY FROM USE.                        #
01201  M00S01197.sx3ucp  +++|
01202  M00S01198.sx3ucp  +++|      BEGIN  # PURGFCT #
01203  M00S01199.sx3ucp  +++|
01204  M00S01200.sx3ucp  +++|#
01205  M00S01201.sx3ucp  +++|**    PURGFCT - DELETE *FCT* ENTRY FROM USE.
01206  M00S01202.sx3ucp  +++|*
01207  M00S01203.sx3ucp  +++|*     *PURGFCT* DELETES AN *FCT* ENTRY AND UPDATES THE *AST*
01208  M00S01204.sx3ucp  +++|*     AND PREAMBLE.
01209  M00S01205.sx3ucp  +++|*     *FCT* ENTRY.
01210  M00S01206.sx3ucp  +++|*
01211  M00S01207.sx3ucp  +++|*     PROC PURGFCT
01212  M00S01208.sx3ucp  +++|*
01213  M00S01209.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
01214  M00S01210.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
01215  M00S01211.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
01216  M00S01212.sx3ucp  +++|*               *LTCENTRY*.
01217  M00S01213.sx3ucp  +++|*
01218  M00S01214.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01219  M00S01215.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01220  M00S01216.sx3ucp  +++|*               OF THE REQUEST.
01221  M00S01217.sx3ucp  +++|*
01222  M00S01218.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
01223  M00S01219.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
01224  M00S01220.sx3ucp  +++|*                    = OK3             OK
01225  M00S01221.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
01226  M00S01222.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
01227  M00S01223.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
01228  M00S01224.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
01229  M00S01225.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
01230  M00S01226.sx3ucp  +++|#
01231  M00S01227.sx3ucp  +++|
01232  M00S01228.sx3ucp  +++|#
01233  M00S01229.sx3ucp  +++|****  PROC PURGFCT - XREF LIST BEGIN.
01234  M00S01230.sx3ucp  +++|#
01235  M00S01231.sx3ucp  +++|
01236  M00S01232.sx3ucp  +++|      XREF
01237  M00S01233.sx3ucp  +++|        BEGIN
01238  M00S01234.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
01239  M00S01235.sx3ucp  +++|                                     #
01240  M00S01236.sx3ucp  +++|        PROC ANLZAST;                # ANALYZE *AST* #
01241  M00S01237.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
01242  M00S01238.sx3ucp  +++|        PROC CNTFS;                  # COUNT FREE STREAMS #
01243  M00S01239.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
01244  M00S01240.sx3ucp  +++|                                       *UCP* ERRORS #
01245  M00S01241.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
01246  M00S01242.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
01247  M00S01243.sx3ucp  +++|        PROC LOANFCTQ;               # ADD OR RECLAIM *FCTQ* ENTRY #
01248  M00S01244.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
01249  M00S01245.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
01250  M00S01246.sx3ucp  +++|                                     #
01251  M00S01247.sx3ucp  +++|        PROC UPDAST;                 # UPDATE THE *AST* #
01252  M00S01248.sx3ucp  +++|        PROC ZFILL;                  # ZERO FILLS A BUFFER #
01253  M00S01249.sx3ucp  +++|        END
01254  M00S01250.sx3ucp  +++|
01255  M00S01251.sx3ucp  +++|#
01256  M00S01252.sx3ucp  +++|****  PROC PURGFCT - XREF LIST END.
01257  M00S01253.sx3ucp  +++|#
01258  M00S01254.sx3ucp  +++|
01259  M00S01255.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
01260  M00S01256.sx3ucp  +++|*CALL COMBFAS
01261  M00S01257.sx3ucp  +++|*CALL COMBCHN
01262  M00S01258.sx3ucp  +++|*CALL COMBCMD
01263  M00S01259.sx3ucp  +++|*CALL COMBCMS
01264  M00S01260.sx3ucp  +++|*CALL COMBCPR
01265  M00S01261.sx3ucp  +++|*CALL COMBMAP
01266  M00S01262.sx3ucp  +++|*CALL COMBMCT
01267  M00S01263.sx3ucp  +++|*CALL COMXFCQ
01268  M00S01264.sx3ucp  +++|*CALL COMXLTC
01269  M00S01265.sx3ucp  +++|*CALL COMXMSC
01270  M00S01266.sx3ucp  +++|
01271  M00S01267.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS #
01272  M00S01268.sx3ucp  +++|      ITEM FROMCHAIN  U;             # CHAIN TO MOVE *FCT* ENTRY FROM #
01273  M00S01269.sx3ucp  +++|      ITEM FXL        I;             # INDEX FOR LARGE *AU*S #
01274  M00S01270.sx3ucp  +++|      ITEM FXS        I;             # INDEX FOR SMALL *AU*S #
01275  M00S01271.sx3ucp  +++|      ITEM GPS        I;             # BEST GROUP #
01276  M00S01272.sx3ucp  +++|      ITEM GPX        I;             # BEST ORDINAL #
01277  M00S01273.sx3ucp  +++|      ITEM I          U;             # COUNTER #
01278  M00S01274.sx3ucp  +++|                                               CONTROL EJECT;
01279  M00S01275.sx3ucp  +++|
01280  M00S01276.sx3ucp  +++|#
01281  M00S01277.sx3ucp  +++|*     GET THE *FCTQ* ENTRY FOR THE REQUEST.
01282  M00S01278.sx3ucp  +++|#
01283  M00S01279.sx3ucp  +++|
01284  M00S01280.sx3ucp  +++|      LOANFCTQ(0);
01285  M00S01281.sx3ucp  +++|
01286  M00S01282.sx3ucp  +++|      ACQ$FCT(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],  ##
01287  M00S01283.sx3ucp  +++|        CPR$FCT[0],FCTEADDR,0,ERRSTAT);
01288  M00S01284.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01289  M00S01285.sx3ucp  +++|      THEN
01290  M00S01286.sx3ucp  +++|        BEGIN
01291  M00S01287.sx3ucp  +++|        GOTO ERRORTN;
01292  M00S01288.sx3ucp  +++|        END
01293  M00S01289.sx3ucp  +++|
01294  M00S01290.sx3ucp  +++|#
01295  M00S01291.sx3ucp  +++|*     GET THE ALLOCATION SUMMARY TABLE.
01296  M00S01292.sx3ucp  +++|#
01297  M00S01293.sx3ucp  +++|
01298  M00S01294.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
01299  M00S01295.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01300  M00S01296.sx3ucp  +++|      THEN
01301  M00S01297.sx3ucp  +++|        BEGIN
01302  M00S01298.sx3ucp  +++|        GOTO ERRORTN;
01303  M00S01299.sx3ucp  +++|        END
01304  M00S01300.sx3ucp  +++|
01305  M00S01301.sx3ucp  +++|
01306  M00S01302.sx3ucp  +++|      P<FCT> = FCTEADDR + FCTQHL;
01307  M00S01303.sx3ucp  +++|
01308  M00S01304.sx3ucp  +++|#
01309  M00S01305.sx3ucp  +++|*     SET *AST* STATUS TO UNASSIGNED CUBE, AND UPDATE PREAMBLE.
01310  M00S01306.sx3ucp  +++|#
01311  M00S01307.sx3ucp  +++|
01312  M00S01308.sx3ucp  +++|      P<AST> = ASTBADR;
01313  M00S01309.sx3ucp  +++|      ZFILL(AST[CPR$FCT[0]],2);
01314  M00S01310.sx3ucp  +++|      AST$STAT[CPR$CSU[0]] = ASTENSTAT"UNASS$CUB";
01315  M00S01311.sx3ucp  +++|
01316  M00S01312.sx3ucp  +++|      ANLZAST(CPR$CSU[0],-1,-1,FXS,FXL,GPX,GPS);
01317  M00S01313.sx3ucp  +++|      PRM$MXAUS[CPR$CSU[0]] = AST$AUSF[FXS];
01318  M00S01314.sx3ucp  +++|      PRM$MXAUL[CPR$CSU[0]] = AST$AULF[FXL];
01319  M00S01315.sx3ucp  +++|      PRM$MXAUGR[CPR$CSU[0]] = GPS;
01320  M00S01316.sx3ucp  +++|      CWTAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
01321  M00S01317.sx3ucp  +++|      ZFILL(FCT,FCTENTL);
01322  M00S01318.sx3ucp  +++|
01323  M00S01319.sx3ucp  +++|ERRORTN:
01324  M00S01320.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
01325  M00S01321.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
01326  M00S01322.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
01327  M00S01323.sx3ucp  +++|      LOANFCTQ(-1);
01328  M00S01324.sx3ucp  +++|      CFLUSH(CPR$FAM[0],CPR$SUB[0],0,ERRSTAT);
01329  M00S01325.sx3ucp  +++|      UCP$RES;
01330  M00S01326.sx3ucp  +++|      RETURN;
01331  M00S01327.sx3ucp  +++|
01332  M00S01328.sx3ucp  +++|      END  # PURGFCT #
01333  M00S01329.sx3ucp  +++|
01334  M00S01330.sx3ucp  +++|    TERM
01335  M00S01331.sx3ucp  +++|PROC PURGCHN;
01336  M00S01332.sx3ucp  +++|# TITLE PURGCHN - PURGE FRAGMENTED AND ORPHAN CHAINS.                 #
01337  M00S01333.sx3ucp  +++|
01338  M00S01334.sx3ucp  +++|      BEGIN  # PURGCHN #
01339  M00S01335.sx3ucp  +++|
01340  M00S01336.sx3ucp  +++|#
01341  M00S01337.sx3ucp  +++|**    PURGCHN - PURGE FRAGMENTED AND ORPHAN CHAINS.
01342  M00S01338.sx3ucp  +++|*
01343  M00S01339.sx3ucp  +++|*     *PURGCHN MAKES THE SPACE OCCUPIED BY A FILE FRAGMENT OR AN
01344  M00S01340.sx3ucp  +++|*     ORPHAN FILE AVAILABLE FOR RE-USE. THIS PROCEDURE PROCESSES
01345  M00S01341.sx3ucp  +++|*     BOTH PURGE FRAGMENT AND PURGE ORPHAN REQUESTS.
01346  M00S01342.sx3ucp  +++|*
01347  M00S01343.sx3ucp  +++|*     PROC PURGCHN
01348  M00S01344.sx3ucp  +++|*
01349  M00S01345.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
01350  M00S01346.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
01351  M00S01347.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
01352  M00S01348.sx3ucp  +++|*               *LTCENTRY*.
01353  M00S01349.sx3ucp  +++|*
01354  M00S01350.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01355  M00S01351.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01356  M00S01352.sx3ucp  +++|*               OF THE REQUEST.
01357  M00S01353.sx3ucp  +++|*
01358  M00S01354.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
01359  M00S01355.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
01360  M00S01356.sx3ucp  +++|*                    = OK3             OK
01361  M00S01357.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
01362  M00S01358.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
01363  M00S01359.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
01364  M00S01360.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
01365  M00S01361.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
01366  M00S01362.sx3ucp  +++|*                    = NFROZ$FRAG      NON FROZEN FRAGMENT.
01367  M00S01363.sx3ucp  +++|*
01368  M00S01364.sx3ucp  +++|*     MESSAGES  * EXEC ABNORMAL, PURGCHN. *
01369  M00S01365.sx3ucp  +++|*
01370  M00S01366.sx3ucp  +++|#
01371  M00S01367.sx3ucp  +++|
01372  M00S01368.sx3ucp  +++|#
01373  M00S01369.sx3ucp  +++|****  PROC PURGCHN - XREF LIST BEGIN.
01374  M00S01370.sx3ucp  +++|#
01375  M00S01371.sx3ucp  +++|
01376  M00S01372.sx3ucp  +++|      XREF
01377  M00S01373.sx3ucp  +++|        BEGIN
01378  M00S01374.sx3ucp  +++|        PROC ABORT;                  # INTERFACE TO *ABORT* MACRO #
01379  M00S01375.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
01380  M00S01376.sx3ucp  +++|                                     #
01381  M00S01377.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
01382  M00S01378.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
01383  M00S01379.sx3ucp  +++|                                       *UCP* ERRORS #
01384  M00S01380.sx3ucp  +++|        PROC CPUTPD;                 # PUT PURGE DATE #
01385  M00S01381.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
01386  M00S01382.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
01387  M00S01383.sx3ucp  +++|        PROC LOANFCTQ;               # ADD OR RECLAIM *FCTQ* ENTRY #
01388  M00S01384.sx3ucp  +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
01389  M00S01385.sx3ucp  +++|        PROC OCTSRCH;                # SEARCHES *OCT* FOR ENTRY #
01390  M00S01386.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
01391  M00S01387.sx3ucp  +++|        PROC RLSVOL;                 # RELEASE VOLUME #
01392  M00S01388.sx3ucp  +++|        PROC UASTPRM;                # UPDATE AST AND PREAMBLE #
01393  M00S01389.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
01394  M00S01390.sx3ucp  +++|                                     #
01395  M00S01391.sx3ucp  +++|        PROC UPDAST;                 # UPDATE THE *AST* #
01396  M00S01392.sx3ucp  +++|        END
01397  M00S01393.sx3ucp  +++|
01398  M00S01394.sx3ucp  +++|#
01399  M00S01395.sx3ucp  +++|****  PROC PURGCHN - XREF LIST END.
01400  M00S01396.sx3ucp  +++|#
01401  M00S01397.sx3ucp  +++|
01402  M00S01398.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
01403  M00S01399.sx3ucp  +++|*CALL COMBFAS
01404  M00S01400.sx3ucp  +++|*CALL COMBCMD
01405  M00S01401.sx3ucp  +++|*CALL COMBCMS
01406  M00S01402.sx3ucp  +++|*CALL COMBCPR
01407  M00S01403.sx3ucp  +++|*CALL COMBMAP
01408  M00S01404.sx3ucp  +++|*CALL COMBMCT
01409  M00S01405.sx3ucp  +++|*CALL COMXFCQ
01410  M00S01406.sx3ucp  +++|*CALL COMXLTC
01411  M00S01407.sx3ucp  +++|*CALL COMXMSC
01412  M00S01408.sx3ucp  +++|
01413  M00S01409.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS #
01414  M00S01410.sx3ucp  +++|      ITEM FCTERR     B;             # SWITCH USED TO INDICATE MAIN
01415  M00S01411.sx3ucp  +++|                                       LOOP WAS TERMINATED BECAUSE OF
01416  M00S01412.sx3ucp  +++|                                       AN ERROR #
01417  M00S01413.sx3ucp  +++|      ITEM FCTNBR     U;             # *FCT* TO FIND #
01418  M00S01414.sx3ucp  +++|      ITEM FCTAU      U;             # *AU* TO BE RELEASED #
01419  M00S01415.sx3ucp  +++|      ITEM FROZERR    B;             # NON-FROZEN-FRAGMENT ERROR FOUND
01420  M00S01416.sx3ucp  +++|                                       WHICH DOES NOT REQUIRE
01421  M00S01417.sx3ucp  +++|                                       CONVERSION #
01422  M00S01418.sx3ucp  +++|      ITEM FRSTTIME   B;             # FIRST TIME SWITCH #
01423  M00S01419.sx3ucp  +++|      ITEM GRX        ;              # GROUP #
01424  M00S01420.sx3ucp  +++|      ITEM I          I;             # COUNTER #
01425  M00S01421.sx3ucp  +++|      ITEM NEWFCT     U;             # USED TO HOLD THE
01426  M00S01422.sx3ucp  +++|                                       OFF-CARTRIDGE-LINK *FCT* #
01427  M00S01423.sx3ucp  +++|      ITEM NEWAU      U;             # NEXT *AU* TO RELEASE #
01428  M00S01424.sx3ucp  +++|      ITEM ORD        I;             # *OCT* ORDINAL #
01429  M00S01425.sx3ucp  +++|      ITEM PRGDONE    B;             # SWITCH TO CONTROL MAIN LOOP #
01430  M00S01426.sx3ucp  +++|      ITEM RLSCNTL    B;             # SWITCH TO CONTROL FOLLOWING A
01431  M00S01427.sx3ucp  +++|                                       STREAM PATH WITHIN AN *FCT* #
01432  M00S01428.sx3ucp  +++|
01433  M00S01429.sx3ucp  +++|
01434  M00S01430.sx3ucp  +++|
01435  M00S01431.sx3ucp  +++|
01436  M00S01432.sx3ucp  +++|
01437  M00S01433.sx3ucp  +++|#
01438  M00S01434.sx3ucp  +++|*     GET THE ALLOCATION SUMMARY TABLE.
01439  M00S01435.sx3ucp  +++|#
01440  M00S01436.sx3ucp  +++|
01441  M00S01437.sx3ucp  +++|      LOANFCTQ(0);
01442  M00S01438.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
01443  M00S01439.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01444  M00S01440.sx3ucp  +++|      THEN
01445  M00S01441.sx3ucp  +++|        BEGIN
01446  M00S01442.sx3ucp  +++|        GOTO ERRORTN;
01447  M00S01443.sx3ucp  +++|        END
01448  M00S01444.sx3ucp  +++|
01449  M00S01445.sx3ucp  +++|#
01450  M00S01446.sx3ucp  +++|*     GET THE MAXIMUM *FCT* ORDINAL.
01451  M00S01447.sx3ucp  +++|#
01452  M00S01448.sx3ucp  +++|
01453  M00S01449.sx3ucp  +++|      OCTSRCH(CPR$FAM[0],CPR$SUB[0],ORD,0,ERRSTAT);
01454  M00S01450.sx3ucp  +++|
01455  M00S01451.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01456  M00S01452.sx3ucp  +++|      THEN
01457  M00S01453.sx3ucp  +++|        BEGIN
01458  M00S01454.sx3ucp  +++|        GOTO ERRORTN;
01459  M00S01455.sx3ucp  +++|        END
01460  M00S01456.sx3ucp  +++|
01461  M00S01457.sx3ucp  +++|      P<PREAMBLE> = OCT$PRMA[ORD];
01462  M00S01458.sx3ucp  +++|
01463  M00S01459.sx3ucp  +++|      IF PRM$SCW1[CPR$CSU[0]] EQ 0
01464  M00S01460.sx3ucp  +++|      THEN
01465  M00S01461.sx3ucp  +++|        BEGIN
01466  M00S01462.sx3ucp  +++|        ERRSTAT = CMASTAT"NOSUBCAT";
01467  M00S01463.sx3ucp  +++|        GOTO ERRORTN;
01468  M00S01464.sx3ucp  +++|        END
01469  M00S01465.sx3ucp  +++|
01470  M00S01466.sx3ucp  +++|#
01471  M00S01467.sx3ucp  +++|*     ESTABLISH THE NECESSARY BEGINNING CONTROLS FOR THE MAIN LOOP.
01472  M00S01468.sx3ucp  +++|#
01473  M00S01469.sx3ucp  +++|
01474  M00S01470.sx3ucp  +++|      FRSTTIME = TRUE;
01475  M00S01471.sx3ucp  +++|      PRGDONE = FALSE;
01476  M00S01472.sx3ucp  +++|      FCTNBR = CPR$FCT[0];
01477  M00S01473.sx3ucp  +++|      GRX = FCTNBR/MAXGRT;
01478  M00S01474.sx3ucp  +++|      FCTAU = CPR$AU[0];
01479  M00S01475.sx3ucp  +++|      P<AST> = ASTBADR;
01480  M00S01476.sx3ucp  +++|      FCTERR = FALSE;
01481  M00S01477.sx3ucp  +++|      FROZERR = FALSE;
01482  M00S01478.sx3ucp  +++|
01483  M00S01479.sx3ucp  +++|#
01484  M00S01480.sx3ucp  +++|*     GET THE *FCT* ENTRY.  FOLLOW THE AU PATH WITHIN THE *FCT*
01485  M00S01481.sx3ucp  +++|*     RELEASING AU-S.  THE AU PATH WILL TERMINATE WHEN
01486  M00S01482.sx3ucp  +++|*     EITHER A NON-BUSY AU OR THE LAST AU (AS DEFINED
01487  M00S01483.sx3ucp  +++|*     BY CHAIN CONTROL) IS FOUND.  WHENEVER THE AU PATH CROSSES
01488  M00S01484.sx3ucp  +++|*     *FCT*-S (DETERMINED BY THE OFF-CARTRIDGE-LINK CONTROL), THE
01489  M00S01485.sx3ucp  +++|*     AVAILABLE AU TABLE IS UPDATED TO REFLECT THE CURRENT
01490  M00S01486.sx3ucp  +++|*     CONDITION OF THE *FCT* AND THE MAIN LOOP IS REPEATED.
01491  M00S01487.sx3ucp  +++|*     IF A AU PATH DOES NOT CROSS *FCT* BOUNDARIES,
01492  M00S01488.sx3ucp  +++|*     THE MAIN LOOP WILL ONLY BE EXECUTED ONCE.
01493  M00S01489.sx3ucp  +++|#
01494  M00S01490.sx3ucp  +++|
01495  M00S01491.sx3ucp  +++|      REPEAT WHILE NOT PRGDONE
01496  M00S01492.sx3ucp  +++|      DO
01497  M00S01493.sx3ucp  +++|        BEGIN  # MAIN LOOP #
01498  M00S01494.sx3ucp  +++|
01499  M00S01495.sx3ucp  +++|#
01500  M00S01496.sx3ucp  +++|*     GET THE *FCT* ENTRY.
01501  M00S01497.sx3ucp  +++|#
01502  M00S01498.sx3ucp  +++|
01503  M00S01499.sx3ucp  +++|        ACQ$FCT(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],  ##
01504  M00S01500.sx3ucp  +++|          FCTNBR,FCTEADDR,0,ERRSTAT);
01505  M00S01501.sx3ucp  +++|        IF ERRSTAT NQ CMASTAT"NOERR"
01506  M00S01502.sx3ucp  +++|        THEN
01507  M00S01503.sx3ucp  +++|          BEGIN
01508  M00S01504.sx3ucp  +++|          FCTERR = TRUE;
01509  M00S01505.sx3ucp  +++|          PRGDONE = TRUE;
01510  M00S01506.sx3ucp  +++|          TEST DUMMY;
01511  M00S01507.sx3ucp  +++|          END
01512  M00S01508.sx3ucp  +++|
01513  M00S01509.sx3ucp  +++|        P<FCT> = FCTEADDR + FCTQHL;
01514  M00S01510.sx3ucp  +++|
01515  M00S01511.sx3ucp  +++|#
01516  M00S01512.sx3ucp  +++|*     FRAGMENTED AU-S MUST HAVE THE FIRST AU FROZEN.
01517  M00S01513.sx3ucp  +++|#
01518  M00S01514.sx3ucp  +++|
01519  M00S01515.sx3ucp  +++|        IF FRSTTIME AND CPR$RQC[0] EQ REQTYP3"PURG$FRAG"
01520  M00S01516.sx3ucp  +++|        THEN
01521  M00S01517.sx3ucp  +++|          BEGIN
01522  M00S01518.sx3ucp  +++|          FRSTTIME = FALSE;
01523  M00S01519.sx3ucp  +++|            IF FCT$FRCF(FCT$WD(CPR$AU[0]),FCT$WP(CPR$AU[0])) EQ OFF
01524  M00S01520.sx3ucp  +++|          THEN
01525  M00S01521.sx3ucp  +++|            BEGIN
01526  M00S01522.sx3ucp  +++|            ERRSTAT = RESPTYP3"NFROZ$FRAG";
01527  M00S01523.sx3ucp  +++|            FCTERR = TRUE;
01528  M00S01524.sx3ucp  +++|            PRGDONE = TRUE;
01529  M00S01525.sx3ucp  +++|            FROZERR = TRUE;
01530  M00S01526.sx3ucp  +++|            TEST DUMMY;
01531  M00S01527.sx3ucp  +++|            END
01532  M00S01528.sx3ucp  +++|
01533  M00S01529.sx3ucp  +++|          END
01534  M00S01530.sx3ucp  +++|
01535  M00S01531.sx3ucp  +++|#
01536  M00S01532.sx3ucp  +++|*     SEARCH THE VOLUME CHAIN RELEASING VOLUMES.
01537  M00S01533.sx3ucp  +++|#
01538  M00S01534.sx3ucp  +++|
01539  M00S01535.sx3ucp  +++|
01540  M00S01536.sx3ucp  +++|        RLSCNTL = FALSE;
01541  M00S01537.sx3ucp  +++|
01542  M00S01538.sx3ucp  +++|        SLOWFOR I = 0 WHILE NOT RLSCNTL
01543  M00S01539.sx3ucp  +++|        DO
01544  M00S01540.sx3ucp  +++|          BEGIN  # RELEASE LOOP #
01545  M00S01541.sx3ucp  +++|
01546  M00S01542.sx3ucp  +++|#
01547  M00S01543.sx3ucp  +++|*     A NONBUSY AU ENDS THE AU PATH SEARCH.
01548  M00S01544.sx3ucp  +++|#
01549  M00S01545.sx3ucp  +++|
01550  M00S01546.sx3ucp  +++|          IF FCT$FBF(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ OFF
01551  M00S01547.sx3ucp  +++|          THEN
01552  M00S01548.sx3ucp  +++|            BEGIN
01553  M00S01549.sx3ucp  +++|            RLSCNTL = TRUE;
01554  M00S01550.sx3ucp  +++|            PRGDONE = TRUE;
01555  M00S01551.sx3ucp  +++|            TEST I;
01556  M00S01552.sx3ucp  +++|            END
01557  M00S01553.sx3ucp  +++|
01558  M00S01554.sx3ucp  +++|          RLSCNTL =                  ##
01559  M00S01555.sx3ucp  +++|            FCT$LINK(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ 0  ##
01560  M00S01556.sx3ucp  +++|            OR FCT$CC(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ CHAINCON"LAST"##
01561  M00S01557.sx3ucp  +++|            OR FCT$CC(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ CHAINCON"ONLY";
01562  M00S01558.sx3ucp  +++|
01563  M00S01559.sx3ucp  +++|
01564  M00S01560.sx3ucp  +++|#
01565  M00S01561.sx3ucp  +++|*     DETERMINE WHETHER THE AU PATH CROSSES *FCT* BOUNDARIES.
01566  M00S01562.sx3ucp  +++|*     IF IT DOES, PICK UP THE NEW *FCT* TO USE.
01567  M00S01563.sx3ucp  +++|#
01568  M00S01564.sx3ucp  +++|
01569  M00S01565.sx3ucp  +++|          IF FCT$CLKOCL(FCT$WD(FCTAU),FCT$WP(FCTAU)) NQ 0
01570  M00S01566.sx3ucp  +++|          THEN
01571  M00S01567.sx3ucp  +++|            BEGIN  # OFF-CARTRIDGE LINK #
01572  M00S01568.sx3ucp  +++|            RLSCNTL = TRUE;
01573  M00S01569.sx3ucp  +++|            IF FCT$CLKOCL(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ 1
01574  M00S01570.sx3ucp  +++|            THEN
01575  M00S01571.sx3ucp  +++|              BEGIN
01576  M00S01572.sx3ucp  +++|              B<0,1>FCT$OCLF[0] = 0;
01577  M00S01573.sx3ucp  +++|              NEWFCT = GRX * 16 + FCT$OCL[0];
01578  M00S01574.sx3ucp  +++|              END
01579  M00S01575.sx3ucp  +++|
01580  M00S01576.sx3ucp  +++|            ELSE
01581  M00S01577.sx3ucp  +++|              BEGIN
01582  M00S01578.sx3ucp  +++|              IF FCT$CLKOCL(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ 2
01583  M00S01579.sx3ucp  +++|              THEN
01584  M00S01580.sx3ucp  +++|                BEGIN
01585  M00S01581.sx3ucp  +++|                B<1,1>FCT$OCLF[0] = 0;
01586  M00S01582.sx3ucp  +++|                NEWFCT = GRX * 16 + FCT$OCL1[0];
01587  M00S01583.sx3ucp  +++|                END
01588  M00S01584.sx3ucp  +++|
01589  M00S01585.sx3ucp  +++|              ELSE
01590  M00S01586.sx3ucp  +++|                BEGIN
01591  M00S01587.sx3ucp  +++|                B<2,1>FCT$OCLF[0] = 0;
01592  M00S01588.sx3ucp  +++|                NEWFCT = GRX * 16 + FCT$OCL2[0];
01593  M00S01589.sx3ucp  +++|                END
01594  M00S01590.sx3ucp  +++|
01595  M00S01591.sx3ucp  +++|              END
01596  M00S01592.sx3ucp  +++|
01597  M00S01593.sx3ucp  +++|            IF NEWFCT GR (PRM$ENTRC[CPR$CSU[0]] + 15) OR NEWFCT LS 16
01598  M00S01594.sx3ucp  +++|              THEN                   # *FCT* OUT OF RANGE #
01599  M00S01595.sx3ucp  +++|              BEGIN
01600  M00S01596.sx3ucp  +++|              RLSCNTL = TRUE;
01601  M00S01597.sx3ucp  +++|              PRGDONE = TRUE;
01602  M00S01598.sx3ucp  +++|              GOTO EXIT$RLS;
01603  M00S01599.sx3ucp  +++|              END
01604  M00S01600.sx3ucp  +++|
01605  M00S01601.sx3ucp  +++|            END  # OFF-CARTRIDGE LINK #
01606  M00S01602.sx3ucp  +++|
01607  M00S01603.sx3ucp  +++|
01608  M00S01604.sx3ucp  +++|          IF FCT$CLKOCL(FCT$WD(FCTAU),FCT$WP(FCTAU)) EQ 0  ##
01609  M00S01605.sx3ucp  +++|            AND RLSCNTL
01610  M00S01606.sx3ucp  +++|          THEN
01611  M00S01607.sx3ucp  +++|            BEGIN
01612  M00S01608.sx3ucp  +++|            PRGDONE = TRUE;
01613  M00S01609.sx3ucp  +++|            END
01614  M00S01610.sx3ucp  +++|
01615  M00S01611.sx3ucp  +++|
01616  M00S01612.sx3ucp  +++|
01617  M00S01613.sx3ucp  +++|          NEWAU = FCT$LINK(FCT$WD(FCTAU),FCT$WP(FCTAU));
01618  M00S01614.sx3ucp  +++|
01619  M00S01615.sx3ucp  +++|EXIT$RLS:                            # CLEAR AU DETAIL #
01620  M00S01616.sx3ucp  +++|          RLSVOL(0,FCTEADDR,FCTAU,   ##
01621  M00S01617.sx3ucp  +++|            FCT$LEN(FCT$WD(FCTAU),FCT$WP(FCTAU))+1);
01622  M00S01618.sx3ucp  +++|          FCTAU = NEWAU;
01623  M00S01619.sx3ucp  +++|          END  # RELEASE LOOP #
01624  M00S01620.sx3ucp  +++|
01625  M00S01621.sx3ucp  +++|
01626  M00S01622.sx3ucp  +++|#
01627  M00S01623.sx3ucp  +++|*     UPDATE *AST* AND PREAMBLE FOR TO MATCH *FCT*.
01628  M00S01624.sx3ucp  +++|#
01629  M00S01625.sx3ucp  +++|
01630  M00S01626.sx3ucp  +++|        UASTPRM(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],FCTEADDR,ERRSTAT);
01631  M00S01627.sx3ucp  +++|
01632  M00S01628.sx3ucp  +++|
01633  M00S01629.sx3ucp  +++|#
01634  M00S01630.sx3ucp  +++|*     UPDATE THE *FCT* ENTRY.
01635  M00S01631.sx3ucp  +++|#
01636  M00S01632.sx3ucp  +++|
01637  M00S01633.sx3ucp  +++|        RLS$FCT(FCTEADDR,0,ERRSTAT);
01638  M00S01634.sx3ucp  +++|        FCTNBR = NEWFCT;
01639  M00S01635.sx3ucp  +++|        END  # MAIN LOOP #
01640  M00S01636.sx3ucp  +++|
01641  M00S01637.sx3ucp  +++|#
01642  M00S01638.sx3ucp  +++|*     IF ANY ERRORS IN MAIN LOOP, PROCESSING DOES NOT CONTINUE.
01643  M00S01639.sx3ucp  +++|#
01644  M00S01640.sx3ucp  +++|
01645  M00S01641.sx3ucp  +++|      IF FCTERR
01646  M00S01642.sx3ucp  +++|      THEN
01647  M00S01643.sx3ucp  +++|        BEGIN
01648  M00S01644.sx3ucp  +++|        GOTO ERRORTN;
01649  M00S01645.sx3ucp  +++|        END
01650  M00S01646.sx3ucp  +++|
01651  M00S01647.sx3ucp  +++|#
01652  M00S01648.sx3ucp  +++|*     UPDATE THE DATE AND TIME ON THE PURGE ORPHAN REQUEST.
01653  M00S01649.sx3ucp  +++|#
01654  M00S01650.sx3ucp  +++|
Line S01651 Modification History
M01 (Removed by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01655  M01S01651.sx3ucp1 ---|      IF CPR$RQC[0] EQ REQTYP3"PURG$ORPH"
Line S00005 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01656  M01S00005.sx3ucp1 +++|      IF CPR$RQC[0] NQ REQTYP3"PURG$FRAG"
01657  M00S01652.sx3ucp  +++|      THEN
01658  M00S01653.sx3ucp  +++|        BEGIN
01659  M00S01654.sx3ucp  +++|        CPUTPD(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],0,ERRSTAT);
01660  M00S01655.sx3ucp  +++|        END
01661  M00S01656.sx3ucp  +++|
01662  M00S01657.sx3ucp  +++|ERRORTN:
01663  M00S01658.sx3ucp  +++|      IF NOT FROZERR
01664  M00S01659.sx3ucp  +++|      THEN
01665  M00S01660.sx3ucp  +++|        BEGIN
01666  M00S01661.sx3ucp  +++|        CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
01667  M00S01662.sx3ucp  +++|        END
01668  M00S01663.sx3ucp  +++|
01669  M00S01664.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
01670  M00S01665.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
01671  M00S01666.sx3ucp  +++|      LOANFCTQ(-1);
01672  M00S01667.sx3ucp  +++|      CFLUSH(CPR$FAM[0],CPR$SUB[0],0,ERRSTAT);
Line S01668 Modification History
M01 (Removed by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01673  M01S01668.sx3ucp1 ---|      UCP$RES;
Line S00006 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01674  M01S00006.sx3ucp1 +++|      IF CPR$RQC[0] EQ REQTYP3"PURG$FRAG"
01675  M01S00007.sx3ucp1 +++|      THEN                             # SSDEBUG CALL ENDS HERE #
01676  M01S00008.sx3ucp1 +++|        BEGIN
01677  M01S00009.sx3ucp1 +++|        UCP$RES;
01678  M01S00010.sx3ucp1 +++|        END
01679  M01S00011.sx3ucp1 +++|
01680  M00S01669.sx3ucp  +++|      RETURN;
01681  M00S01670.sx3ucp  +++|
01682  M00S01671.sx3ucp  +++|
01683  M00S01672.sx3ucp  +++|      END
01684  M00S01673.sx3ucp  +++|
01685  M00S01674.sx3ucp  +++|    TERM
Line S00012 Modification History
M01 (Added by) sx3ucp1
Seq #  *Modification Id* Act 
----------------------------+
01686  M01S00012.sx3ucp1 +++|PROC RESETUP;
01687  M01S00013.sx3ucp1 +++|#TITLE RESETUP - CATALOG RELEASE PROCESSING AND SETUP.                #
01688  M01S00014.sx3ucp1 +++|
01689  M01S00015.sx3ucp1 +++|      BEGIN # RESETUP #
01690  M01S00016.sx3ucp1 +++|
01691  M01S00017.sx3ucp1 +++|#
01692  M01S00018.sx3ucp1 +++|**    RESETUP - CATALOG RELEASE PROCESSING AND SETUP.
01693  M01S00019.sx3ucp1 +++|*
01694  M01S00020.sx3ucp1 +++|*     * RESETUP PROCESSES THE UCP REQUEST WHICH RELEASES *SFMCAT*
01695  M01S00021.sx3ucp1 +++|*     SPACE FOR A LIST OF FILES ON FILE *RELCOM* WHICH IS SENT
01696  M01S00022.sx3ucp1 +++|*     BY *SSVAL*.
01697  M01S00023.sx3ucp1 +++|*
01698  M01S00024.sx3ucp1 +++|*     PROC RESETUP
01699  M01S00025.sx3ucp1 +++|*
01700  M01S00026.sx3ucp1 +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
01701  M01S00027.sx3ucp1 +++|*               *CPR*. THE *LTCT* ENTRY FOR THE REQUESTING UCP IS
01702  M01S00028.sx3ucp1 +++|*               POINTED TO BY *LTCENTRY*. THIS REQUEST INDICATES
01703  M01S00029.sx3ucp1 +++|*               THAT A LIST OF FILES TO BE RELEASED IS AVAILABLE ON
01704  M01S00030.sx3ucp1 +++|*               FILE *RELCOM*.
01705  M01S00031.sx3ucp1 +++|*
01706  M01S00032.sx3ucp1 +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01707  M01S00033.sx3ucp1 +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01708  M01S00034.sx3ucp1 +++|*               OF THE REQUEST. THE CHAINS IN THE LIST HAVE BEEN
01709  M01S00035.sx3ucp1 +++|*               PUT ON THE FREE SPACE CHAIN.
01710  M01S00036.sx3ucp1 +++|*
01711  M01S00037.sx3ucp1 +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
01712  M01S00038.sx3ucp1 +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
01713  M01S00039.sx3ucp1 +++|*                    = OK3             OK
01714  M01S00040.sx3ucp1 +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
01715  M01S00041.sx3ucp1 +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
01716  M01S00042.sx3ucp1 +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
01717  M01S00043.sx3ucp1 +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
01718  M01S00044.sx3ucp1 +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
01719  M01S00045.sx3ucp1 +++|*
01720  M01S00046.sx3ucp1 +++|*     MESSAGES  * EXEC ABNORMAL, RESETUP. *
01721  M01S00047.sx3ucp1 +++|*
01722  M01S00048.sx3ucp1 +++|#
01723  M01S00049.sx3ucp1 +++|
01724  M01S00050.sx3ucp1 +++|#
01725  M01S00051.sx3ucp1 +++|****  PROC RESETUP LIST BEGIN.
01726  M01S00052.sx3ucp1 +++|#
01727  M01S00053.sx3ucp1 +++|
01728  M01S00054.sx3ucp1 +++|      XREF
01729  M01S00055.sx3ucp1 +++|        BEGIN
01730  M01S00056.sx3ucp1 +++|        PROC ABORT;                  # INTERFACE TO *ABORT* MACRO #
01731  M01S00057.sx3ucp1 +++|        PROC BZFILL;                 # ZERO BLANK FILL #
01732  M01S00058.sx3ucp1 +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
01733  M01S00059.sx3ucp1 +++|                                       *UCP* ERRORS #
01734  M01S00060.sx3ucp1 +++|        PROC CPUTPD;                 # PUT PURGE DATE #
01735  M01S00061.sx3ucp1 +++|        PROC MESSAGE;                # CALLS *MESSAGE* MACRO #
01736  M01S00062.sx3ucp1 +++|        PROC PFD;                    # PERMANENT FILE ACCESS #
01737  M01S00063.sx3ucp1 +++|        PROC PURGCHN;                # PUT CHAIN ON FREE SPACE #
01738  M01S00064.sx3ucp1 +++|        PROC READ;                   # READ *CIO* BUFFER #
01739  M01S00065.sx3ucp1 +++|        PROC READW;                  # READ TO WORKING BUFFER #
01740  M01S00066.sx3ucp1 +++|        PROC RETERN;                 # RETURN LOCAL FILE #
01741  M01S00067.sx3ucp1 +++|        PROC SETPFP;                 # SET PF PARAMETERS #
01742  M01S00068.sx3ucp1 +++|        PROC UASTPRM;                # UPDATE AST AND PREAMBLE #
01743  M01S00069.sx3ucp1 +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST
01744  M01S00070.sx3ucp1 +++|                                       COMPLETE #
01745  M01S00071.sx3ucp1 +++|        PROC ZSETFET;                # SET UP FILE *FET* #
01746  M01S00072.sx3ucp1 +++|        END
01747  M01S00073.sx3ucp1 +++|
01748  M01S00074.sx3ucp1 +++|#
01749  M01S00075.sx3ucp1 +++|****  PROC PURGCHN - XREF LIST END.
01750  M01S00076.sx3ucp1 +++|#
01751  M01S00077.sx3ucp1 +++|
01752  M01S00078.sx3ucp1 +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
01753  M01S00079.sx3ucp1 +++|*CALL COMBFAS
01754  M01S00080.sx3ucp1 +++|*CALL COMBBZF
01755  M01S00081.sx3ucp1 +++|*CALL COMBCPR
01756  M01S00082.sx3ucp1 +++|*CALL COMBMCT
01757  M01S00083.sx3ucp1 +++|*CALL COMBPFP
01758  M01S00084.sx3ucp1 +++|*CALL COMBPFS
01759  M01S00085.sx3ucp1 +++|*CALL COMSPFM
01760  M01S00086.sx3ucp1 +++|*CALL COMTVLD
01761  M01S00087.sx3ucp1 +++|*CALL COMTVLF
01762  M01S00088.sx3ucp1 +++|*CALL COMXFCQ
01763  M01S00089.sx3ucp1 +++|*CALL COMXLTC
01764  M01S00090.sx3ucp1 +++|*CALL COMXMSC
01765  M01S00091.sx3ucp1 +++|
01766  M01S00092.sx3ucp1 +++|      ITEM I          I;             # COUNTER #
01767  M01S00093.sx3ucp1 +++|      ITEM STATW      I;             # ERROR STATUS #
01768  M01S00094.sx3ucp1 +++|      ITEM SAVEPT     I;             # SAVE POINTER #
01769  M01S00095.sx3ucp1 +++|
01770  M01S00096.sx3ucp1 +++|      ARRAY CPRARRAY [0:0] S(CPRLEN);;
01771  M01S00097.sx3ucp1 +++|
01772  M01S00098.sx3ucp1 +++|
01773  M01S00099.sx3ucp1 +++|#
01774  M01S00100.sx3ucp1 +++|*     PROCESS SSDEBUG CALL, *PURGE FRAGMENT*.
01775  M01S00101.sx3ucp1 +++|#
01776  M01S00102.sx3ucp1 +++|
01777  M01S00103.sx3ucp1 +++|      IF CPR$RQC[0] EQ REQTYP3"PURG$FRAG"
01778  M01S00104.sx3ucp1 +++|      THEN                           # DELINK FRAGMENT #
01779  M01S00105.sx3ucp1 +++|        BEGIN
01780  M01S00106.sx3ucp1 +++|        PURGCHN;
01781  M01S00107.sx3ucp1 +++|        RETURN;
01782  M01S00108.sx3ucp1 +++|        END
01783  M01S00109.sx3ucp1 +++|
01784  M01S00110.sx3ucp1 +++|#
01785  M01S00111.sx3ucp1 +++|*     SWITCH TO SPECIFIED FAMILY.
01786  M01S00112.sx3ucp1 +++|#
01787  M01S00113.sx3ucp1 +++|
01788  M01S00114.sx3ucp1 +++|      PFP$WRD0[0] = 0;
01789  M01S00115.sx3ucp1 +++|      PFP$FAM[0]  = CPR$FAM[0];
01790  M01S00116.sx3ucp1 +++|      PFP$UI[0]   = DEF$UI;
01791  M01S00117.sx3ucp1 +++|      PFP$FG1[0]  = TRUE;
01792  M01S00118.sx3ucp1 +++|      PFP$FG4     = TRUE;
01793  M01S00119.sx3ucp1 +++|      SETPFP(PFP);
01794  M01S00120.sx3ucp1 +++|
01795  M01S00121.sx3ucp1 +++|      IF PFP$STAT NQ 0
01796  M01S00122.sx3ucp1 +++|      THEN                           # PROCESS ERROR #
01797  M01S00123.sx3ucp1 +++|        BEGIN
01798  M01S00124.sx3ucp1 +++|        FE$RTN[0] = "RESETUP.";
01799  M01S00125.sx3ucp1 +++|        MESSAGE(FEMSG[0],UDFL1);
01800  M01S00126.sx3ucp1 +++|        ABORT;
01801  M01S00127.sx3ucp1 +++|        END
01802  M01S00128.sx3ucp1 +++|
01803  M01S00129.sx3ucp1 +++|
01804  M01S00130.sx3ucp1 +++|#
01805  M01S00131.sx3ucp1 +++|*     ATTACH *RELCOM* FILE GENERATED BY SSVAL.
01806  M01S00132.sx3ucp1 +++|#
01807  M01S00133.sx3ucp1 +++|
01808  M01S00134.sx3ucp1 +++|      RELNAME = RELLFN;
01809  M01S00135.sx3ucp1 +++|      BZFILL(RELNAME,TYPFILL"ZFILL",7);
01810  M01S00136.sx3ucp1 +++|      PFD("ATTACH",RELNAME,0,"M","W","RC",STATW,0);
01811  M01S00137.sx3ucp1 +++|      IF STATW NQ OK
01812  M01S00138.sx3ucp1 +++|      THEN                           # ATTACH ERROR #
01813  M01S00139.sx3ucp1 +++|        BEGIN
01814  M01S00140.sx3ucp1 +++|        FE$MSG[0] = " FILE PROBLEM, ";
01815  M01S00141.sx3ucp1 +++|        FE$RTN[0] = "RESETUP.";
01816  M01S00142.sx3ucp1 +++|        MESSAGE(FEMSG[0],UDFL1);
01817  M01S00143.sx3ucp1 +++|        ABORT;
01818  M01S00144.sx3ucp1 +++|        END
01819  M01S00145.sx3ucp1 +++|
01820  M01S00146.sx3ucp1 +++|#
01821  M01S00147.sx3ucp1 +++|*     READ *RELCOM* FILE.
01822  M01S00148.sx3ucp1 +++|#
01823  M01S00149.sx3ucp1 +++|
01824  M01S00150.sx3ucp1 +++|      RELFADR = LOC(RELCFILE);
01825  M01S00151.sx3ucp1 +++|      RELBADR = LOC(RELCBUF);
01826  M01S00152.sx3ucp1 +++|      ZSETFET(RELFADR,RELLFN,RELBADR,LFIXBUF);
01827  M01S00153.sx3ucp1 +++|      READ(RELCFILE,RCL);
01828  M01S00154.sx3ucp1 +++|      SAVEPT = P<CPR>;
01829  M01S00155.sx3ucp1 +++|      P<CPR> = LOC(CPRARRAY);
01830  M01S00156.sx3ucp1 +++|
01831  M01S00157.sx3ucp1 +++|
01832  M01S00158.sx3ucp1 +++|#
01833  M01S00159.sx3ucp1 +++|*     PROCESS EACH ENTRY.
01834  M01S00160.sx3ucp1 +++|#
01835  M01S00161.sx3ucp1 +++|
01836  M01S00162.sx3ucp1 +++|
01837  M01S00163.sx3ucp1 +++|      SLOWFOR I = 0 STEP 1 WHILE STATW EQ OK
01838  M01S00164.sx3ucp1 +++|      DO
01839  M01S00165.sx3ucp1 +++|        BEGIN  # MAIN LOOP #
01840  M01S00166.sx3ucp1 +++|        READW(RELCFILE,CPRARRAY,CPRLEN,STATW);
01841  M01S00167.sx3ucp1 +++|        IF STATW NQ OK
01842  M01S00168.sx3ucp1 +++|        THEN
01843  M01S00169.sx3ucp1 +++|          BEGIN
01844  M01S00170.sx3ucp1 +++|          TEST I;
01845  M01S00171.sx3ucp1 +++|          END
01846  M01S00172.sx3ucp1 +++|
01847  M01S00173.sx3ucp1 +++|#
01848  M01S00174.sx3ucp1 +++|*      DELINK FILE CHAIN.
01849  M01S00175.sx3ucp1 +++|#
01850  M01S00176.sx3ucp1 +++|
01851  M01S00177.sx3ucp1 +++|        PURGCHN;
01852  M01S00178.sx3ucp1 +++|
01853  M01S00179.sx3ucp1 +++|        IF LTC$RQR[LTCENTRY] NQ OK
01854  M01S00180.sx3ucp1 +++|        THEN                            # ERROR IN PURGCHN #
01855  M01S00181.sx3ucp1 +++|          BEGIN
01856  M01S00182.sx3ucp1 +++|          STATW = O"777";
01857  M01S00183.sx3ucp1 +++|          TEST I;
01858  M01S00184.sx3ucp1 +++|          END
01859  M01S00185.sx3ucp1 +++|
01860  M01S00186.sx3ucp1 +++|#
01861  M01S00187.sx3ucp1 +++|*     WRITE TEMP FILE FOR DEBUGGING PURPOSES.
01862  M01S00188.sx3ucp1 +++|#
01863  M01S00189.sx3ucp1 +++|
01864  M01S00190.sx3ucp1 +++|
01865  M01S00191.sx3ucp1 +++|        END                             # MAIN LOOP #
01866  M01S00192.sx3ucp1 +++|
01867  M01S00193.sx3ucp1 +++|      RETERN(RELCFILE,RCL);
01868  M01S00194.sx3ucp1 +++|      P<CPR> = SAVEPT;
01869  M01S00195.sx3ucp1 +++|      CPR$RQR[0] = LTC$RQR[LTCENTRY];
01870  M01S00196.sx3ucp1 +++|      LTC$DATE[LTCENTRY] = I - 1;          # FILE RELEASE COUNT #
01871  M01S00197.sx3ucp1 +++|      UCP$RES;
01872  M01S00198.sx3ucp1 +++|      RETURN;
01873  M01S00199.sx3ucp1 +++|      END                               # RESETUP #
01874  M01S00200.sx3ucp1 +++|
01875  M01S00201.sx3ucp1 +++|    TERM
01876  M00S01675.sx3ucp  +++|PROC RMVCAR;
01877  M00S01676.sx3ucp  +++|# TITLE RMVCAR - REMOVE CARTRIDGE FROM SUB-FAMILY.                    #
01878  M00S01677.sx3ucp  +++|
01879  M00S01678.sx3ucp  +++|      BEGIN  # RMVCAR #
01880  M00S01679.sx3ucp  +++|
01881  M00S01680.sx3ucp  +++|#
01882  M00S01681.sx3ucp  +++|**    RMVCAR - REMOVE CARTRIDGE FROM SUB-FAMILY.
01883  M00S01682.sx3ucp  +++|*
01884  M00S01683.sx3ucp  +++|*     *RMVCAR* UPDATES THE *AST*, *FCT*, AND *SMMAP*
01885  M00S01684.sx3ucp  +++|*     TO REFLECT THAT THE GIVEN CARTRIDGE IS NO LONGER ASSIGNED TO
01886  M00S01685.sx3ucp  +++|*     THE SUB-FAMILY.
01887  M00S01686.sx3ucp  +++|*
01888  M00S01687.sx3ucp  +++|*     PROC RMVCAR
01889  M00S01688.sx3ucp  +++|*
01890  M00S01689.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
01891  M00S01690.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
01892  M00S01691.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
01893  M00S01692.sx3ucp  +++|*               *LTCENTRY*.
01894  M00S01693.sx3ucp  +++|*
01895  M00S01694.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
01896  M00S01695.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
01897  M00S01696.sx3ucp  +++|*               OF THE REQUEST.
01898  M00S01697.sx3ucp  +++|*
01899  M00S01698.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
01900  M00S01699.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
01901  M00S01700.sx3ucp  +++|*                    = OK3             OK
01902  M00S01701.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
01903  M00S01702.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
01904  M00S01703.sx3ucp  +++|*                    = NO$SUB$CAT      NO SUCH SUBCATALOG
01905  M00S01704.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
01906  M00S01705.sx3ucp  +++|*                    = MSC$NEMPTY      CARTRIDGE NOT EMPTY
01907  M00S01706.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
01908  M00S01707.sx3ucp  +++|#
01909  M00S01708.sx3ucp  +++|
01910  M00S01709.sx3ucp  +++|#
01911  M00S01710.sx3ucp  +++|****  PROC RMVCAR - XREF LIST BEGIN.
01912  M00S01711.sx3ucp  +++|#
01913  M00S01712.sx3ucp  +++|
01914  M00S01713.sx3ucp  +++|      XREF
01915  M00S01714.sx3ucp  +++|        BEGIN
01916  M00S01715.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
01917  M00S01716.sx3ucp  +++|                                     #
01918  M00S01717.sx3ucp  +++|        PROC ANLZAST;                # ANALYZE THE *AST* #
01919  M00S01718.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
01920  M00S01719.sx3ucp  +++|        PROC CNTFS;                  # COUNT FREE STREAMS #
01921  M00S01720.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
01922  M00S01721.sx3ucp  +++|                                       *UCP* ERRORS #
01923  M00S01722.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
01924  M00S01723.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
01925  M00S01724.sx3ucp  +++|        PROC LOANFCTQ;               # ADD OR RECLAIM *FCTQ* ENTRY #
01926  M00S01725.sx3ucp  +++|        PROC MFLUSH;                 # FLUSH MAP TO FILE #
01927  M00S01726.sx3ucp  +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
01928  M00S01727.sx3ucp  +++|                                       CALLER #
01929  M00S01728.sx3ucp  +++|        PROC MPUTENT;                # MAP ENTRY TO THE MAP FILE BUFFER
01930  M00S01729.sx3ucp  +++|                                     #
01931  M00S01730.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
01932  M00S01731.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
01933  M00S01732.sx3ucp  +++|                                     #
01934  M00S01733.sx3ucp  +++|        PROC UPDAST;                 # UPDATE THE *AST* #
01935  M00S01734.sx3ucp  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
01936  M00S01735.sx3ucp  +++|        END
01937  M00S01736.sx3ucp  +++|
01938  M00S01737.sx3ucp  +++|#
01939  M00S01738.sx3ucp  +++|****  PROC RMVCAR - XREF LIST END.
01940  M00S01739.sx3ucp  +++|#
01941  M00S01740.sx3ucp  +++|
01942  M00S01741.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
01943  M00S01742.sx3ucp  +++|*CALL COMBFAS
01944  M00S01743.sx3ucp  +++|*CALL COMBCMD
01945  M00S01744.sx3ucp  +++|*CALL COMBCMS
01946  M00S01745.sx3ucp  +++|*CALL COMBCPR
01947  M00S01746.sx3ucp  +++|*CALL COMBMAP
01948  M00S01747.sx3ucp  +++|*CALL COMBMCT
01949  M00S01748.sx3ucp  +++|*CALL COMXFCQ
01950  M00S01749.sx3ucp  +++|*CALL COMXLTC
01951  M00S01750.sx3ucp  +++|*CALL COMXMSC
01952  M00S01751.sx3ucp  +++|
01953  M00S01752.sx3ucp  +++|      ITEM ERRCONV    B;             # ERROR CODE CONVERSION FLAG #
01954  M00S01753.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS FROM
01955  M00S01754.sx3ucp  +++|                                       *ACQ$FCT* #
01956  M00S01755.sx3ucp  +++|      ITEM FXL        U;             # BEST ORDINAL FOR ALLOCATION #
01957  M00S01756.sx3ucp  +++|      ITEM FXS        U;             # BEST ORDINAL FOR ALLOCATION #
01958  M00S01757.sx3ucp  +++|      ITEM GPS        U;             # BEST GROUP ORDINAL #
01959  M00S01758.sx3ucp  +++|      ITEM GPX        U;             # BEST GROUP #
01960  M00S01759.sx3ucp  +++|      ITEM I          U;             # COUNTER #
01961  M00S01760.sx3ucp  +++|      ITEM ORD        I;             # *AST* ORDINAL #
01962  M00S01761.sx3ucp  +++|      ITEM SAVEY      U;             # SAVED Y COORDINATE #
01963  M00S01762.sx3ucp  +++|      ITEM SAVEZ      U;             # SAVED Z COORDINATE #
01964  M00S01763.sx3ucp  +++|
01965  M00S01764.sx3ucp  +++|
01966  M00S01765.sx3ucp  +++|
01967  M00S01766.sx3ucp  +++|
01968  M00S01767.sx3ucp  +++|
01969  M00S01768.sx3ucp  +++|#
01970  M00S01769.sx3ucp  +++|*     GET THE MAP ENTRY FOR THE REQUEST.
01971  M00S01770.sx3ucp  +++|#
01972  M00S01771.sx3ucp  +++|
01973  M00S01772.sx3ucp  +++|      LOANFCTQ(0);
01974  M00S01773.sx3ucp  +++|      ERRCONV = TRUE;
01975  M00S01774.sx3ucp  +++|      MGETENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
01976  M00S01775.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01977  M00S01776.sx3ucp  +++|      THEN
01978  M00S01777.sx3ucp  +++|        BEGIN
01979  M00S01778.sx3ucp  +++|        GOTO ERRORTN;
01980  M00S01779.sx3ucp  +++|        END
01981  M00S01780.sx3ucp  +++|
01982  M00S01781.sx3ucp  +++|#
01983  M00S01782.sx3ucp  +++|*     GET THE *FCTQ* ENTRY FOR THE REQUEST.
01984  M00S01783.sx3ucp  +++|#
01985  M00S01784.sx3ucp  +++|
01986  M00S01785.sx3ucp  +++|
01987  M00S01786.sx3ucp  +++|      ACQ$FCT(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],  ##
01988  M00S01787.sx3ucp  +++|        CPR$FCT[0],FCTEADDR,0,ERRSTAT);
01989  M00S01788.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
01990  M00S01789.sx3ucp  +++|      THEN
01991  M00S01790.sx3ucp  +++|        BEGIN
01992  M00S01791.sx3ucp  +++|        GOTO ERRORTN;
01993  M00S01792.sx3ucp  +++|        END
01994  M00S01793.sx3ucp  +++|
01995  M00S01794.sx3ucp  +++|
01996  M00S01795.sx3ucp  +++|#
01997  M00S01796.sx3ucp  +++|*     GET THE ALLOCATION SUMMARY TABLE.
01998  M00S01797.sx3ucp  +++|#
01999  M00S01798.sx3ucp  +++|
02000  M00S01799.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
02001  M00S01800.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
02002  M00S01801.sx3ucp  +++|      THEN
02003  M00S01802.sx3ucp  +++|        BEGIN
02004  M00S01803.sx3ucp  +++|        GOTO ERRORTN;
02005  M00S01804.sx3ucp  +++|        END
02006  M00S01805.sx3ucp  +++|
02007  M00S01806.sx3ucp  +++|
02008  M00S01807.sx3ucp  +++|      P<FCT> = FCTEADDR + FCTQHL;
02009  M00S01808.sx3ucp  +++|      P<AST> = ASTBADR;
02010  M00S01809.sx3ucp  +++|
02011  M00S01810.sx3ucp  +++|#
02012  M00S01811.sx3ucp  +++|*     VERIFY THAT THE CARTRIDGE IS FREE AND UPDATE *AST*.
02013  M00S01812.sx3ucp  +++|#
02014  M00S01813.sx3ucp  +++|
02015  M00S01814.sx3ucp  +++|      ORD = CPR$FCT[0];
02016  M00S01815.sx3ucp  +++|      IF (AST$AULF[ORD] + AST$AUSF[ORD] + AST$FLAWS[ORD]) NQ INAVOT
02017  M00S01816.sx3ucp  +++|        THEN                         # CARTRIDGE IS NOT FREE #
02018  M00S01817.sx3ucp  +++|        BEGIN
02019  M00S01818.sx3ucp  +++|        ERRSTAT = RESPTYP3"MSC$NEMPTY";
02020  M00S01819.sx3ucp  +++|        ERRCONV = FALSE;             # BYPASS CODE CONVERSION #
02021  M00S01820.sx3ucp  +++|        GOTO ERRORTN;
02022  M00S01821.sx3ucp  +++|        END
02023  M00S01822.sx3ucp  +++|
02024  M00S01823.sx3ucp  +++|#
02025  M00S01824.sx3ucp  +++|*     UPDATE PREAMBLE.
02026  M00S01825.sx3ucp  +++|#
02027  M00S01826.sx3ucp  +++|
02028  M00S01827.sx3ucp  +++|
02029  M00S01828.sx3ucp  +++|      AST$1ST[ORD] = 0;
02030  M00S01829.sx3ucp  +++|      AST$2ND[ORD] = 0;
02031  M00S01830.sx3ucp  +++|      AST$STAT[ORD] = ASTENSTAT"UNASS$CART";
02032  M00S01831.sx3ucp  +++|
02033  M00S01832.sx3ucp  +++|      ANLZAST(CPR$CSU[0],-1,-1,FXS,FXL,GPX,GPS);
02034  M00S01833.sx3ucp  +++|      PRM$MXAUS[CPR$CSU[0]] = AST$AUSF[FXS];
02035  M00S01834.sx3ucp  +++|      PRM$MXAUL[CPR$CSU[0]] = AST$AULF[FXL];
02036  M00S01835.sx3ucp  +++|      PRM$MXAUGR[CPR$CSU[0]] = GPS;
02037  M00S01836.sx3ucp  +++|
02038  M00S01837.sx3ucp  +++|
02039  M00S01838.sx3ucp  +++|      CWTAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
02040  M00S01839.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
02041  M00S01840.sx3ucp  +++|      THEN
02042  M00S01841.sx3ucp  +++|        BEGIN
02043  M00S01842.sx3ucp  +++|        GOTO ERRORTN;
02044  M00S01843.sx3ucp  +++|        END
02045  M00S01844.sx3ucp  +++|
02046  M00S01845.sx3ucp  +++|#
02047  M00S01846.sx3ucp  +++|*     REMOVE THE CARTRIDGE FROM THE *FCT* AND MAP (*CSN* = 0).
02048  M00S01847.sx3ucp  +++|#
02049  M00S01848.sx3ucp  +++|
02050  M00S01849.sx3ucp  +++|      ZFILL(FCT,FCTENTL);
02051  M00S01850.sx3ucp  +++|      FCT$CSND[0] = "      ";
02052  M00S01851.sx3ucp  +++|      P<SMUMAP> = LOC(MAPBUFR);
02053  M00S01852.sx3ucp  +++|      CM$CSND[0] = "      ";
02054  M00S01853.sx3ucp  +++|      CM$CCOD[0] = 0;
02055  M00S01854.sx3ucp  +++|      CM$FLAG1[0] = FALSE;           # CLEAR ERROR FLAG IN MAP ENTRY #
02056  M00S01855.sx3ucp  +++|      CM$FCTORD[0] = 0;
02057  M00S01856.sx3ucp  +++|
02058  M00S01857.sx3ucp  +++|      MPUTENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
02059  M00S01858.sx3ucp  +++|
02060  M00S01859.sx3ucp  +++|ERRORTN:
02061  M00S01860.sx3ucp  +++|      IF ERRCONV
02062  M00S01861.sx3ucp  +++|      THEN                           # CONVERT ERROR CODE #
02063  M00S01862.sx3ucp  +++|        BEGIN
02064  M00S01863.sx3ucp  +++|        CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
02065  M00S01864.sx3ucp  +++|        END
02066  M00S01865.sx3ucp  +++|
02067  M00S01866.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
02068  M00S01867.sx3ucp  +++|      RLS$FCT(FCTEADDR,0,ERRSTAT);
02069  M00S01868.sx3ucp  +++|      LOANFCTQ(-1);
02070  M00S01869.sx3ucp  +++|      MFLUSH;
02071  M00S01870.sx3ucp  +++|      CFLUSH(CPR$FAM[0],CPR$SUB[0],0,ERRSTAT);
02072  M00S01871.sx3ucp  +++|      UCP$RES;
02073  M00S01872.sx3ucp  +++|      RETURN;
02074  M00S01873.sx3ucp  +++|
02075  M00S01874.sx3ucp  +++|      END  # RMVCAR #
02076  M00S01875.sx3ucp  +++|
02077  M00S01876.sx3ucp  +++|    TERM
02078  M00S01877.sx3ucp  +++|PROC RMVCSU;
02079  M00S01878.sx3ucp  +++|# TITLE RMVCSU - REMOVES *SM* FROM SUB-FAMILY CATALOG.                #
02080  M00S01879.sx3ucp  +++|
02081  M00S01880.sx3ucp  +++|      BEGIN  # RMVCSU #
02082  M00S01881.sx3ucp  +++|
02083  M00S01882.sx3ucp  +++|#
02084  M00S01883.sx3ucp  +++|**    RMVCSU - REMOVES *SM* FROM SUB-FAMILY CATALOG.
02085  M00S01884.sx3ucp  +++|*
02086  M00S01885.sx3ucp  +++|*     *RMVCSU* REMOVES A *SM* FROM THE
02087  M00S01886.sx3ucp  +++|*     CATALOG FOR A SUB-FAMILY.
02088  M00S01887.sx3ucp  +++|*
02089  M00S01888.sx3ucp  +++|*     PROC RMVCSU
02090  M00S01889.sx3ucp  +++|*
02091  M00S01890.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
02092  M00S01891.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
02093  M00S01892.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
02094  M00S01893.sx3ucp  +++|*               *LTCENTRY*.
02095  M00S01894.sx3ucp  +++|*
02096  M00S01895.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
02097  M00S01896.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
02098  M00S01897.sx3ucp  +++|*               OF THE REQUEST.
02099  M00S01898.sx3ucp  +++|*
02100  M00S01899.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
02101  M00S01900.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
02102  M00S01901.sx3ucp  +++|*                    = OK3             OK
02103  M00S01902.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
02104  M00S01903.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
02105  M00S01904.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
02106  M00S01905.sx3ucp  +++|#
02107  M00S01906.sx3ucp  +++|
02108  M00S01907.sx3ucp  +++|#
02109  M00S01908.sx3ucp  +++|****  PROC RMVCSU - XREF LIST BEGIN.
02110  M00S01909.sx3ucp  +++|#
02111  M00S01910.sx3ucp  +++|
02112  M00S01911.sx3ucp  +++|      XREF
02113  M00S01912.sx3ucp  +++|        BEGIN
02114  M00S01913.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
02115  M00S01914.sx3ucp  +++|                                       *UCP* ERRORS #
02116  M00S01915.sx3ucp  +++|        PROC CRMVSC;                 # REMOVE SUBCATALOG #
02117  M00S01916.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
02118  M00S01917.sx3ucp  +++|                                     #
02119  M00S01918.sx3ucp  +++|        END
02120  M00S01919.sx3ucp  +++|
02121  M00S01920.sx3ucp  +++|#
02122  M00S01921.sx3ucp  +++|****  PROC RMVCSU - XREF LIST END.
02123  M00S01922.sx3ucp  +++|#
02124  M00S01923.sx3ucp  +++|
02125  M00S01924.sx3ucp  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
02126  M00S01925.sx3ucp  +++|*CALL COMBFAS
02127  M00S01926.sx3ucp  +++|*CALL COMBCMS
02128  M00S01927.sx3ucp  +++|*CALL COMBCPR
02129  M00S01928.sx3ucp  +++|*CALL COMBMAP
02130  M00S01929.sx3ucp  +++|*CALL COMXLTC
02131  M00S01930.sx3ucp  +++|
02132  M00S01931.sx3ucp  +++|
02133  M00S01932.sx3ucp  +++|
02134  M00S01933.sx3ucp  +++|
02135  M00S01934.sx3ucp  +++|
02136  M00S01935.sx3ucp  +++|      CRMVSC(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],0,ERRSTAT);
02137  M00S01936.sx3ucp  +++|      CONVER3(CPR$RQT[0],CPR$RQC[0],ERRSTAT,ERRSTAT);
02138  M00S01937.sx3ucp  +++|      LTC$RQR[LTCENTRY] = ERRSTAT;
02139  M00S01938.sx3ucp  +++|      UCP$RES;
02140  M00S01939.sx3ucp  +++|      RETURN;
02141  M00S01940.sx3ucp  +++|
02142  M00S01941.sx3ucp  +++|      END  # RMVCSU #
02143  M00S01942.sx3ucp  +++|
02144  M00S01943.sx3ucp  +++|    TERM
02145  M00S01944.sx3ucp  +++|PROC RMVCUBE;
02146  M00S01945.sx3ucp  +++|# TITLE RMVCUBE - REMOVE CUBICLE FROM FAMILY.                         #
02147  M00S01946.sx3ucp  +++|
02148  M00S01947.sx3ucp  +++|      BEGIN  # RMVCUBE #
02149  M00S01948.sx3ucp  +++|
02150  M00S01949.sx3ucp  +++|#
02151  M00S01950.sx3ucp  +++|**    RMVCUBE - REMOVE CUBICLE FROM FAMILY.
02152  M00S01951.sx3ucp  +++|*
02153  M00S01952.sx3ucp  +++|*     *RMVCUBE* UPDATES THE *AST*, *FCT* AND *SMMAP* (IN THAT
02154  M00S01953.sx3ucp  +++|*     ORDER) TO REFLECT THAT THE GIVEN CUBICLE IS NO LONGER
02155  M00S01954.sx3ucp  +++|*     ASSIGNED TO THE SUB-FAMILY.
02156  M00S01955.sx3ucp  +++|*
02157  M00S01956.sx3ucp  +++|*     PROC RMVCUBE
02158  M00S01957.sx3ucp  +++|*
02159  M00S01958.sx3ucp  +++|*     ENTRY     THE TYPE 3 UCP REQUEST TO BE PROCESSED IS IN ARRAY
02160  M00S01959.sx3ucp  +++|*               *CPR*.  THE BASE POINTER FOR *CPR* IS ALREADY SET.  THE
02161  M00S01960.sx3ucp  +++|*               *LTCT* ENTRY FOR THE REQUESTING UCP IS POINTED TO BY
02162  M00S01961.sx3ucp  +++|*               *LTCENTRY*.
02163  M00S01962.sx3ucp  +++|*
02164  M00S01963.sx3ucp  +++|*     EXIT      THE TYPE 3 REQUEST HAS BEEN PROCESSED AND A RESPONSE
02165  M00S01964.sx3ucp  +++|*               HAS BEEN SENT BACK TO THE UCP INDICATING COMPLETION
02166  M00S01965.sx3ucp  +++|*               OF THE REQUEST.
02167  M00S01966.sx3ucp  +++|*
02168  M00S01967.sx3ucp  +++|*               RESPONSES ARE RETURNED VIA LTC$RQR[LTCENTRY].
02169  M00S01968.sx3ucp  +++|*               THESE RESPONSE CODE VALUES ARE DEFINED IN *COMBCPR*.
02170  M00S01969.sx3ucp  +++|*                    = OK3             OK
02171  M00S01970.sx3ucp  +++|*                    = C$M$INTLCK      CATALOG/MAP INTERLOCKED
02172  M00S01971.sx3ucp  +++|*                    = C$M$NOPEN       CATALOG/MAP NOT OPEN
02173  M00S01972.sx3ucp  +++|*                    = PF$PROB         PERMANENT FILE PROBLEM
02174  M00S01973.sx3ucp  +++|*                    = ILLEG$ORD       ORDINAL OUT OF RANGE
02175  M00S01974.sx3ucp  +++|#
02176  M00S01975.sx3ucp  +++|
02177  M00S01976.sx3ucp  +++|#
02178  M00S01977.sx3ucp  +++|****  PROC RMVCUBE - XREF LIST BEGIN.
02179  M00S01978.sx3ucp  +++|#
02180  M00S01979.sx3ucp  +++|
02181  M00S01980.sx3ucp  +++|      XREF
02182  M00S01981.sx3ucp  +++|        BEGIN
02183  M00S01982.sx3ucp  +++|        PROC ACQ$FCT;                # FIND THE *FCTQ* ENTRY FOR CALLER
02184  M00S01983.sx3ucp  +++|                                     #
02185  M00S01984.sx3ucp  +++|        PROC CFLUSH;                 # FLUSHES THE CATALOG I/O BUFFER #
02186  M00S01985.sx3ucp  +++|        PROC CONVER3;                # CONVERT MAP/CATALOG ERRORS TO
02187  M00S01986.sx3ucp  +++|                                       *UCP* ERRORS #
02188  M00S01987.sx3ucp  +++|        PROC CRDAST;                 # READ ALLOCATION SUMMARY TABLE #
02189  M00S01988.sx3ucp  +++|        PROC CWTAST;                 # WRITE ALLOCATION SUMMARY TABLE #
02190  M00S01989.sx3ucp  +++|        PROC MFLUSH;                 # FLUSH MAP TO FILE #
02191  M00S01990.sx3ucp  +++|        PROC MGETENT;                # RETURN THE MAP ENTRY TO THE
02192  M00S01991.sx3ucp  +++|                                       CALLER #
02193  M00S01992.sx3ucp  +++|        PROC MPUTENT;                # MAP ENTRY TO THE MAP FILE BUFFER
02194  M00S01993.sx3ucp  +++|                                     #
02195  M00S01994.sx3ucp  +++|        PROC RLS$FCT;                # RELEASE *FCTQ* ENTRY #
02196  M00S01995.sx3ucp  +++|        PROC UCP$RES;                # NOTIFY *UCP* OF REQUEST COMPLETE
02197  M00S01996.sx3ucp  +++|                                     #
02198  M00S01997.sx3ucp  +++|        PROC UPDAST;                 # UPDATE THE *AST* #
02199  M00S01998.sx3ucp  +++|        END
02200  M00S01999.sx3ucp  +++|
02201  M00S02000.sx3ucp  +++|#
02202  M00S02001.sx3ucp  +++|****  PROC RMVCUBE - XREF LIST END.
02203  M00S02002.sx3ucp  +++|#
02204  M00S02003.sx3ucp  +++|
02205  M00S02004.sx3ucp  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
02206  M00S02005.sx3ucp  +++|*CALL COMBFAS
02207  M00S02006.sx3ucp  +++|*CALL COMBCMD
02208  M00S02007.sx3ucp  +++|*CALL COMBCMS
02209  M00S02008.sx3ucp  +++|*CALL COMBCPR
02210  M00S02009.sx3ucp  +++|*CALL COMBMAP
02211  M00S02010.sx3ucp  +++|*CALL COMBMCT
02212  M00S02011.sx3ucp  +++|*CALL COMXFCQ
02213  M00S02012.sx3ucp  +++|*CALL COMXLTC
02214  M00S02013.sx3ucp  +++|*CALL COMXMSC
02215  M00S02014.sx3ucp  +++|
02216  M00S02015.sx3ucp  +++|      ITEM FCTEADDR   U;             # *FCTQ* ENTRY ADDRESS #
02217  M00S02016.sx3ucp  +++|      ITEM I          U;             # COUNTER #
02218  M00S02017.sx3ucp  +++|      ITEM ORD        I;             # *AST* ORDINAL #
02219  M00S02018.sx3ucp  +++|
02220  M00S02019.sx3ucp  +++|
02221  M00S02020.sx3ucp  +++|
02222  M00S02021.sx3ucp  +++|
02223  M00S02022.sx3ucp  +++|
02224  M00S02023.sx3ucp  +++|#
02225  M00S02024.sx3ucp  +++|*     GET THE MAP ENTRY FOR THE REQUEST.
02226  M00S02025.sx3ucp  +++|#
02227  M00S02026.sx3ucp  +++|
02228  M00S02027.sx3ucp  +++|      MGETENT(CPR$CSU[0],SMORD,LOC(MAPBUFR),ERRSTAT);
02229  M00S02028.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
02230  M00S02029.sx3ucp  +++|      THEN
02231  M00S02030.sx3ucp  +++|        BEGIN
02232  M00S02031.sx3ucp  +++|        GOTO ERRORTN;
02233  M00S02032.sx3ucp  +++|        END
02234  M00S02033.sx3ucp  +++|
02235  M00S02034.sx3ucp  +++|
02236  M00S02035.sx3ucp  +++|#
02237  M00S02036.sx3ucp  +++|*     GET THE ALLOCATION SUMMARY TABLE.
02238  M00S02037.sx3ucp  +++|#
02239  M00S02038.sx3ucp  +++|
02240  M00S02039.sx3ucp  +++|      P<AST> = ASTBADR;
02241  M00S02040.sx3ucp  +++|      CRDAST(CPR$FAM[0],CPR$SUB[0],CPR$CSU[0],ASTBADR,0,ERRSTAT);
02242  M00S02041.sx3ucp  +++|      IF ERRSTAT NQ CMASTAT"NOERR"
02243  M00S02042.sx3ucp  +++|      THEN
02244  M00S02043.sx3ucp  +++|        BEGIN
02245  M00S02044.sx3ucp  +++|        GOTO ERRORTN;
02246  M00S02045.sx3ucp  +++|        END
02247  M00S02046.sx3ucp  +++|
02248  M00S02047.sx3ucp  +++|#
02249  M00S02048.sx3ucp  +++|*     UPDATE *AST* AND PREAMBLE.
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/sx3ucp.txt ยท Last modified: by 127.0.0.1