User Tools

Site Tools


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

Deck SSMOVE

Library Member Format: MODIFY

Listing Sections

Source

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