User Tools

Site Tools


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

Deck SSMOVE

4 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.ssmove  +++|PRGM SSMOVE;
00002  M01S00002.ssmove  +++|# TITLE SSMOVE - INITIALIZES *SSMOVE* UTILITY.                        #
00003  M01S00003.ssmove  +++|
00004  M01S00004.ssmove  +++|      BEGIN  # SSMOVE #
00005  M01S00005.ssmove  +++|
00006  M01S00006.ssmove  +++|#
00007  M01S00007.ssmove  +++|***   SSMOVE - INITIALIZES *SSMOVE* UTILITY.
00008  M01S00008.ssmove  +++|*
00009  M01S00009.ssmove  +++|*     THIS PRGM INITIALIZES THE *SSMOVE* UTILITY BY CRACKING
00010  M01S00010.ssmove  +++|*     THE CONTROL CARD AND SYNTAX CHECKING THE PARAMETERS.
00011  M01S00011.ssmove  +++|*
00012  M01S00012.ssmove  +++|*     SSMOVE,I,L,FM,LO,DN,NW,UI,PX,SB.
00013  M01S00013.ssmove  +++|*
00014  M01S00014.ssmove  +++|*     PRGM SSMOVE.
00015  M01S00015.ssmove  +++|*
00016  M01S00016.ssmove  +++|*     ENTRY.    INPUTS TO *SSMOVE* ARE
00017  M01S00017.ssmove  +++|*
00018  M01S00018.ssmove  +++|*               I            INPUT DIRECTIVES ON FILE *INPUT*.
00019  M01S00019.ssmove  +++|*               I = FLNM     INPUT DIRECTIVES ON FILE *FLNM*.
00020  M01S00020.ssmove  +++|*               I = 0        NO INPUT DIRECTIVES.  DEFAULT PARAMETERS
00021  M01S00021.ssmove  +++|*                            WILL BE USED.
00022  M01S00022.ssmove  +++|*               I OMITTED    SAME AS *I*.
00023  M01S00023.ssmove  +++|*
00024  M01S00024.ssmove  +++|*               L            LISTABLE OUTPUT IS ON FILE *OUTPUT*.
00025  M01S00025.ssmove  +++|*               L = LFN      LISTABLE OUTPUT IS ON FILE *LFN*.
00026  M01S00026.ssmove  +++|*               L = 0        NO OUTPUT FILE GENERATED.
00027  M01S00027.ssmove  +++|*               L OMITTED    SAME AS *L*.
00028  M01S00028.ssmove  +++|*
00029  M01S00029.ssmove  +++|*
00030  M01S00030.ssmove  +++|*               NW           NO WAIT - DO NOT WAIT FOR EXEC TO PROCESS
00031  M01S00031.ssmove  +++|*                            THE *SSMOVE* REQUEST FILE.
00032  M01S00032.ssmove  +++|*               NW OMITTED   WAIT FOR COMPLETION OF *SSMOVE* REQUEST
00033  M01S00033.ssmove  +++|*                            PROCESSING BY EXEC.
00034  M01S00034.ssmove  +++|*
00035  M01S00035.ssmove  +++|*               FM           USE DEFAULT FAMILY.
00036  M01S00036.ssmove  +++|*               FM = FAMILY  FAMILY TO BE PROCESSED.
00037  M01S00037.ssmove  +++|*               FM OMITTED   SAME AS *FM*.
00038  M01S00038.ssmove  +++|*
00039  M01S00039.ssmove  +++|*               LO           INDIVIDUAL FILES ARE NOT TO BE LISTED IN
00040  M01S00040.ssmove  +++|*                            THE REPORT FILE.
00041  M01S00041.ssmove  +++|*               LO = F       ALL FILES SELECTED FOR STAGING, DESTAGING,
00042  M01S00042.ssmove  +++|*                            OR RELEASING ARE LISTED IN THE REPORT FILE.
00043  M01S00043.ssmove  +++|*               LO = P       LIST ONLY FILES ACTUALLY PROCESSED IN
00044  M01S00044.ssmove  +++|*                            REPORT FILE (PER *PX* PARAMETER).
00045  M01S00045.ssmove  +++|*               LO OMITTED   SAME AS *LO*.
00046  M01S00046.ssmove  +++|*
00047  M01S00047.ssmove  +++|*               DN           FILES FROM ALL DEVICES IN A SPECIFIED
00048  M01S00048.ssmove  +++|*                            FAMILY ARE ELIGIBLE FOR DESTAGE AND
00049  M01S00049.ssmove  +++|*                            RELEASE.
00050  M01S00050.ssmove  +++|*               DN = DEVICE  DEVICE NUMBER OF THE ONLY DISK FROM
00051  M01S00051.ssmove  +++|*                            WHICH FILES ARE ELIGIBLE FOR DESTAGE AND
00052  M01S00052.ssmove  +++|*                            RELEASE.
00053  M01S00053.ssmove  +++|*               DN OMITTED   SAME AS *DN*.
00054  M01S00054.ssmove  +++|*
00055  M01S00055.ssmove  +++|*               LB = N       LARGE FILE BOUNDARY, USED WHEN
00056  M01S00056.ssmove  +++|*                            SORTING FILES FOR DESTAGING.  ALL FILES
00057  M01S00057.ssmove  +++|*                            SMALLER THAN *N* PRU-S ARE CONSIDERED
00058  M01S00058.ssmove  +++|*                            SMALL FILES.
00059  M01S00059.ssmove  +++|*               LB           DEFAULT LARGE FILE BOUNDARY IS USED.
00060  M01S00060.ssmove  +++|*               LB OMITTED   SAME AS *LB*.
00061  M01S00061.ssmove  +++|*
00062  M01S00062.ssmove  +++|*               UI           ALL USER INDICES ARE PROCESSED.
00063  M01S00063.ssmove  +++|*               UI = N       RESTRICT PROCESSING TO FILES HAVING
00064  M01S00064.ssmove  +++|*                            USER INDEX *N*.
00065  M01S00065.ssmove  +++|*               UI OMITTED   SAME AS *UI*.
00066  M01S00066.ssmove  +++|*
00067  M01S00067.ssmove  +++|*               PX           ALL SELECTED PROCESSING WILL BE DONE.
00068  M01S00068.ssmove  +++|*               PX = XXX     *XXX* IS A CHARACTER STRING IDENTIFYING
00069  M01S00069.ssmove  +++|*                            WHICH TYPES OF PROCESSING ARE TO BE
00070  M01S00070.ssmove  +++|*                            EXCLUDED.  EACH CHARACTER OF *XXX* CAN BE
00071  M01S00071.ssmove  +++|*                            ONE OF THE LETTERS *ABDFIS*.
00072  M01S00072.ssmove  +++|*                            *I* INHIBITS PROCESSING OF INDIRECT ACCESS
00073  M01S00073.ssmove  +++|*                            FILES.
00074  M01S00074.ssmove  +++|*                            *D* INHIBITS PROCESSING OF DIRECT ACCESS
00075  M01S00075.ssmove  +++|*                            FILES.
00076  M01S00076.ssmove  +++|*                            *A* CONTROLS RELEASING OF DISK SPACE
00077  M01S00077.ssmove  +++|*                            (ARCHIVING).
00078  M01S00078.ssmove  +++|*                            *B* CONTROLS DESTAGING A FILE FROM DISK TO
00079  M01S00079.ssmove  +++|*                            M860 (BACK-UP).
00080  M01S00080.ssmove  +++|*                            *S* CONTROLS STAGING A FILE TO DISK.
00081  M01S00081.ssmove  +++|*                            *F* CONTROLS FREEING A FILE FROM M860 BY
00082  M01S00082.ssmove  +++|*                            CLEARING ITS ASA VALUE FROM THE FILES
00083  M01S00083.ssmove  +++|*                            *PFC* ENTRY.
00084  M01S00084.ssmove  +++|*                            (E.G. PX = ABFS REPORTS THE RESULTS OF A
00085  M01S00085.ssmove  +++|*                            *SSMOVE* RUN WITHOUT ACTUALLY PERFORMING
00086  M01S00086.ssmove  +++|*                            THE SELECTED ACTIONS.)
00087  M01S00087.ssmove  +++|*               PX OMITTED   SAME AS *PX*.
00088  M01S00088.ssmove  +++|*
00089  M01S00089.ssmove  +++|*     EXIT.     *SSMOVE* PROCESSED OR AN ERROR CONDITION
00090  M01S00090.ssmove  +++|*               ENCOUNTERED.
00091  M01S00091.ssmove  +++|*
00092  M01S00092.ssmove  +++|*     MESSAGES. SSMOVE - MUST BE SYSTEM ORIGIN.
00093  M01S00093.ssmove  +++|*               SSMOVE COMPLETE.
00094  M01S00094.ssmove  +++|*               SSMOVE ABNORMAL, SSMOVE.
00095  M01S00095.ssmove  +++|*               UNABLE TO CONNECT WITH EXEC.
00096  M01S00096.ssmove  +++|*
00097  M01S00097.ssmove  +++|*     NOTES.    PRGM *SSMOVE* INITIALIZES *SSMOVE* UTILITY BY
00098  M01S00098.ssmove  +++|*               CRACKING AND SYNTAX CHECKING THE CONTROL CARD
00099  M01S00099.ssmove  +++|*               PARAMETERS.  ANY ERROR IN THE CONTROL CARD OR
00100  M01S00100.ssmove  +++|*               IN *SSMOVE* PROCESSING CAUSES THE UTILITY TO
00101  M01S00101.ssmove  +++|*               ABORT.  PRGM *SSMOVE* IS THE MAIN MODULE FROM
00102  M01S00102.ssmove  +++|*               WHICH ALL THE OTHER ROUTINES ARE CALLED.  THE LIVE
00103  M01S00103.ssmove  +++|*               PFC IS READ AND THE ENTRIES FOR THE FILES CANDIDATE
00104  M01S00104.ssmove  +++|*               FOR *DESTAGE AND RELEASE* OR *DESTAGE ONLY* ARE
00105  M01S00105.ssmove  +++|*               WRITTEN TO TEMPORARY FILES.  THE FILES CANDIDATE
00106  M01S00106.ssmove  +++|*               FOR *RELEASE ONLY* ARE RELEASED DIRECTLY.  THE
00107  M01S00107.ssmove  +++|*               TEMPORARY FILES ARE THEN USED TO GENERATE THE
00108  M01S00108.ssmove  +++|*               COMMUNICATION FILE FOR EXEC.  IF THE *REPORT
00109  M01S00109.ssmove  +++|*               ONLY* OPTION HAS NOT BEEN SELECTED, THE COMM-
00110  M01S00110.ssmove  +++|*               UNICATION FILE IS SENT TO EXEC VIA A UCP TYPE 2
00111  M01S00111.ssmove  +++|*               REQUEST.  A SUMMARY OF ALL THE FILES SELECTED
00112  M01S00112.ssmove  +++|*               FOR *RELEASE ONLY*, *DESTAGE AND RELEASE* AND
00113  M01S00113.ssmove  +++|*               FOR *DESTAGE ONLY* IS WRITTEN TO THE REPORT FILE.
00114  M01S00114.ssmove  +++|*
Line S00115 Modification History
M01 (Added by) ssmove
M02 (Updated by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00115  M02S00115.281l803 ---|*     COPYRIGHT CONTROL DATA CORP., 1983.
00116  M01S00001.281l803 +++|*     COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00117  M01S00116.ssmove  +++|#
00118  M01S00117.ssmove  +++|
00119  M01S00118.ssmove  +++|#
00120  M01S00119.ssmove  +++|****  PRGM SSMOVE - XREF LIST BEGIN.
00121  M01S00120.ssmove  +++|#
00122  M01S00121.ssmove  +++|
00123  M01S00122.ssmove  +++|      XREF
00124  M01S00123.ssmove  +++|        BEGIN
00125  M01S00124.ssmove  +++|        PROC ABORT;                  # CALLS *ABORT* MACRO #
00126  M01S00125.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
00127  M01S00126.ssmove  +++|        PROC GETSPS;                 # GET SYSTEM ORIGIN STATUS #
00128  M01S00127.ssmove  +++|        PROC MESSAGE;                # DISPLAYS A MESSAGE IN DAYFILE #
00129  M01S00128.ssmove  +++|        PROC MVABDS;                 # PROCESS DESTAGE ABANDONMENT #
00130  M01S00129.ssmove  +++|        PROC MVCALL;                 # ISSUES TYPE 1, 2 UCP REQUEST #
00131  M01S00130.ssmove  +++|        PROC MVINIT;                 # DECODES *SSMOVE* CONTROL
00132  M01S00131.ssmove  +++|                                       STATEMENT #
00133  M01S00132.ssmove  +++|        PROC MVPASS3;                # SETS UP "DESTAGE AND RELEASE"
00134  M01S00133.ssmove  +++|                                       AND "DESTAGE" TEMP FILES #
00135  M01S00134.ssmove  +++|        PROC MVPASS4;                # SETS UP COMMUNICATION FILE #
00136  M01S00135.ssmove  +++|        PROC MVPFRD;                 # READS PFC #
00137  M01S00136.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
00138  M01S00137.ssmove  +++|                                       OR RETURN #
00139  M01S00138.ssmove  +++|        PROC RETERN;                 # RETURN A FILE #
00140  M01S00139.ssmove  +++|        PROC RPCLOSE;                # CLOSE REPORT FILE #
00141  M01S00140.ssmove  +++|        PROC ZSETFET;                # INITIALIZE A FET #
00142  M01S00141.ssmove  +++|        END
00143  M01S00142.ssmove  +++|
00144  M01S00143.ssmove  +++|#
00145  M01S00144.ssmove  +++|****  PRGM SSMOVE - XREF LIST END.
00146  M01S00145.ssmove  +++|#
00147  M01S00146.ssmove  +++|
00148  M01S00147.ssmove  +++|#
00149  M01S00148.ssmove  +++|*     DAYFILE MESSAGES.
00150  M01S00149.ssmove  +++|#
00151  M01S00150.ssmove  +++|
00152  M01S00151.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00153  M01S00152.ssmove  +++|      DEF RSLEN      #1#;            # RETURN STATUS WORD LENGTH L #
00154  M01S00153.ssmove  +++|      DEF MSG1       #" SSMOVE - MUST BE SYSTEM ORIGIN."#;
00155  M01S00154.ssmove  +++|      DEF MSG2       #" SSMOVE COMPLETE."#;
00156  M01S00155.ssmove  +++|      DEF MSG3       #" UNABLE TO CONNECT WITH EXEC."#;
00157  M01S00156.ssmove  +++|      DEF PROCNAME   #"SSMOVE"#;     # PROC NAME #
00158  M01S00157.ssmove  +++|
00159  M01S00158.ssmove  +++|                                               CONTROL PRESET;
00160  M01S00159.ssmove  +++|*CALL,COMBFAS
00161  M01S00160.ssmove  +++|*CALL,COMBBZF
00162  M01S00161.ssmove  +++|*CALL,COMBCPR
00163  M01S00162.ssmove  +++|*CALL,COMBUCR
00164  M01S00163.ssmove  +++|*CALL,COMTMOV
00165  M01S00164.ssmove  +++|*CALL,COMTMVP
00166  M01S00165.ssmove  +++|*CALL,COMTOUT
00167  M01S00166.ssmove  +++|
00168  M01S00167.ssmove  +++|      ITEM RESPCODE   I;             # RESPONSE FROM EXEC #
00169  M01S00168.ssmove  +++|
00170  M01S00169.ssmove  +++|      ARRAY CALL$SS [0:0] P(CPRLEN);;  # CALLSS PARAMETER BLOCK #
00171  M01S00170.ssmove  +++|
00172  M01S00171.ssmove  +++|      ARRAY SPSSTAT[0:0]  S(RSLEN);
00173  M01S00172.ssmove  +++|        BEGIN
00174  M01S00173.ssmove  +++|        ITEM SPS$STATUS U(00,48,12);  # RETURN STATUS #
00175  M01S00174.ssmove  +++|        END
00176  M01S00175.ssmove  +++|
00177  M01S00176.ssmove  +++|                                               CONTROL EJECT;
00178  M01S00177.ssmove  +++|
00179  M01S00178.ssmove  +++|      REQID$MV = REQNAME"RQIMOVE";   # SET UP REQUESTOR ID #
00180  M01S00179.ssmove  +++|
00181  M01S00180.ssmove  +++|#
00182  M01S00181.ssmove  +++|*     CHECK FOR SYSTEM ORIGIN PRIVILEGES.
00183  M01S00182.ssmove  +++|#
00184  M01S00183.ssmove  +++|
00185  M01S00184.ssmove  +++|      GETSPS(SPSSTAT);               # GET SYSTEM ORIGIN STATUS #
00186  M01S00185.ssmove  +++|      IF SPS$STATUS NQ 0
00187  M01S00186.ssmove  +++|      THEN
00188  M01S00187.ssmove  +++|        BEGIN
00189  M01S00188.ssmove  +++|        MVMSG$LN[0] = MSG1;
00190  M01S00189.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
00191  M01S00190.ssmove  +++|        ABORT;
00192  M01S00191.ssmove  +++|        END
00193  M01S00192.ssmove  +++|
00194  M01S00193.ssmove  +++|#
00195  M01S00194.ssmove  +++|*     INITIALIZE *SSMOVE* BY DECODING RUN-TIME PARAMETERS AND
00196  M01S00195.ssmove  +++|*     BY DECODING RUN-TIME DIRECTIVES.
00197  M01S00196.ssmove  +++|*
00198  M01S00197.ssmove  +++|*     WRITE THE FIRST TWO SECTIONS OF THE *SSMOVE* REPORT
00199  M01S00198.ssmove  +++|*     TO THE REPORT FILE - DIRECTIVES, AND RUN-TIME WEIGHTS.
00200  M01S00199.ssmove  +++|#
00201  M01S00200.ssmove  +++|
00202  M01S00201.ssmove  +++|      MVINIT;
00203  M01S00202.ssmove  +++|
00204  M01S00203.ssmove  +++|#
00205  M01S00204.ssmove  +++|*     READ THE PFC AND GENERATE TEMPORARY DECISION FILE.
00206  M01S00205.ssmove  +++|#
00207  M01S00206.ssmove  +++|
00208  M01S00207.ssmove  +++|      MVPFRD;
00209  M01S00208.ssmove  +++|
00210  M01S00209.ssmove  +++|#
00211  M01S00210.ssmove  +++|*     GENERATE *DESTAGE AND RELEASE* AND *DESTAGE* TEMP FILES
00212  M01S00211.ssmove  +++|*     AND RELEASE THE FILES CANDIDATE FOR RELEASE ONLY.
00213  M01S00212.ssmove  +++|#
00214  M01S00213.ssmove  +++|
00215  M01S00214.ssmove  +++|      MVPASS3;
00216  M01S00215.ssmove  +++|
00217  M01S00216.ssmove  +++|#
00218  M01S00217.ssmove  +++|*     GENERATE COMMUNICATION FILE.
00219  M01S00218.ssmove  +++|*     THE REPORT PRODUCED BY THIS STEP IS A LISTING OF THE FILES
00220  M01S00219.ssmove  +++|*     SELECTED FOR PROCESSING AND THE EXPECTED STATUS OF EACH
00221  M01S00220.ssmove  +++|*     DEVICE AND SUBFAMILY UPON COMPLETION OF THE SELECTED.
00222  M01S00221.ssmove  +++|*     PROCESSING.
00223  M01S00222.ssmove  +++|#
00224  M01S00223.ssmove  +++|
00225  M01S00224.ssmove  +++|      MVPASS4;
00226  M01S00225.ssmove  +++|
00227  M01S00226.ssmove  +++|#
00228  M01S00227.ssmove  +++|*     IF *REPORT ONLY* OPTION IS NOT SELECTED-
00229  M01S00228.ssmove  +++|*     AND COMMUNICATION FILE NOT EMPTY-
00230  M01S00229.ssmove  +++|*       1.  CONNECT WITH EXEC.
00231  M01S00230.ssmove  +++|*       2.  INFORM EXEC THAT COMMUNICATION FILE IS READY.
00232  M01S00231.ssmove  +++|*       3.  DISCONNECT.
00233  M01S00232.ssmove  +++|#
00234  M01S00233.ssmove  +++|
00235  M01S00234.ssmove  +++|      IF NOT (PX$A[0] AND PX$B[0] AND PX$S[0] AND PX$F[0])  ##
00236  M01S00235.ssmove  +++|        AND NFILES NQ 0
00237  M01S00236.ssmove  +++|      THEN
00238  M01S00237.ssmove  +++|        BEGIN  # SEND COMMUNICATION FILE TO EXEC #
00239  M01S00238.ssmove  +++|        P<CPR> = LOC(CALL$SS[0]);
00240  M01S00239.ssmove  +++|        MVCALL(TYP"TYP1",REQTYP1"CONNECT",RESPCODE);
00241  M01S00240.ssmove  +++|        IF RESPCODE NQ RESPTYP1"OK1"
00242  M01S00241.ssmove  +++|        THEN                         # CONNECT NOT DONE #
00243  M01S00242.ssmove  +++|          BEGIN
00244  M01S00243.ssmove  +++|          MVMSG$LN[0] = MSG3;
00245  M01S00244.ssmove  +++|          MESSAGE(MVMSG[0],SYSUDF1);
00246  M01S00245.ssmove  +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
00247  M01S00246.ssmove  +++|          END
00248  M01S00247.ssmove  +++|
00249  M01S00248.ssmove  +++|        MVCALL(TYP"TYP2",REQTYP2"FILE$READY",RESPCODE);
00250  M01S00249.ssmove  +++|
00251  M01S00250.ssmove  +++|        IF RESPCODE NQ RESPTYP2"OK2"
00252  M01S00251.ssmove  +++|        THEN                         # ABNORMAL TERMINATION #
00253  M01S00252.ssmove  +++|          BEGIN
00254  M01S00253.ssmove  +++|          MVMSG$PROC[0] = PROCNAME;
00255  M01S00254.ssmove  +++|          MESSAGE(MVMSG[0],SYSUDF1);
00256  M01S00255.ssmove  +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
00257  M01S00256.ssmove  +++|          END
00258  M01S00257.ssmove  +++|
00259  M01S00258.ssmove  +++|        MVCALL(TYP"TYP1",REQTYP1"DISCONNECT",RESPCODE);
00260  M01S00259.ssmove  +++|        IF RESPCODE NQ RESPTYP1"OK1"
00261  M01S00260.ssmove  +++|        THEN                         # ABNORMAL TERMINATION #
00262  M01S00261.ssmove  +++|          BEGIN
00263  M01S00262.ssmove  +++|          MVMSG$PROC[0] = PROCNAME;
00264  M01S00263.ssmove  +++|          MESSAGE(MVMSG[0],SYSUDF1);
00265  M01S00264.ssmove  +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
00266  M01S00265.ssmove  +++|          END
00267  M01S00266.ssmove  +++|
00268  M01S00267.ssmove  +++|#
00269  M01S00268.ssmove  +++|*     PRODUCE REPORT OF ANY DESTAGES WHICH WERE ABANDONED.
00270  M01S00269.ssmove  +++|#
00271  M01S00270.ssmove  +++|
00272  M01S00271.ssmove  +++|        IF NOT MVARG$NW[0]
00273  M01S00272.ssmove  +++|        THEN
00274  M01S00273.ssmove  +++|          BEGIN
00275  M01S00274.ssmove  +++|          MVABDS;
00276  M01S00275.ssmove  +++|          END
00277  M01S00276.ssmove  +++|
00278  M01S00277.ssmove  +++|        END  # SEND COMMUNICATION FILE TO EXEC #
00279  M01S00278.ssmove  +++|
00280  M01S00279.ssmove  +++|#
00281  M01S00280.ssmove  +++|*     CLOSE REPORT FILE.
00282  M01S00281.ssmove  +++|#
00283  M01S00282.ssmove  +++|
00284  M01S00283.ssmove  +++|      RPCLOSE(OUT$FETP);
00285  M01S00284.ssmove  +++|
00286  M01S00285.ssmove  +++|#
00287  M01S00286.ssmove  +++|*     RETURN *MVOCOM* FILE AND *CATS* FILE.
00288  M01S00287.ssmove  +++|#
00289  M01S00288.ssmove  +++|
00290  M01S00289.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
00291  M01S00290.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
00292  M01S00291.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
00293  M01S00292.ssmove  +++|      COMNAME = CATS;
00294  M01S00293.ssmove  +++|      BZFILL(COMNAME,TYPFILL"ZFILL",7);
00295  M01S00294.ssmove  +++|      ZSETFET(FETP,COMNAME,BUFP,MVBUFL,SFETL);
00296  M01S00295.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
00297  M01S00296.ssmove  +++|
00298  M01S00297.ssmove  +++|#
00299  M01S00298.ssmove  +++|*     ISSUE FINAL DAYFILE MESSAGE.
00300  M01S00299.ssmove  +++|#
00301  M01S00300.ssmove  +++|
00302  M01S00301.ssmove  +++|      MVMSG$LN[0] = MSG2;            # STOP WITH DAYFILE MESSAGE #
00303  M01S00302.ssmove  +++|      MESSAGE(MVMSG[0],SYSUDF1);
00304  M01S00303.ssmove  +++|      RESTPFP(PFP$END);              # RESTORE USER-S *PFP* #
00305  M01S00304.ssmove  +++|
00306  M01S00305.ssmove  +++|      END  # SSMOVE #
00307  M01S00306.ssmove  +++|
00308  M01S00307.ssmove  +++|    TERM
00309  M01S00308.ssmove  +++|PROC GETPFC(PEO,FLAG);
00310  M01S00309.ssmove  +++|# TITLE GETPFC - GET NEXT PFC ENTRY.                                  #
00311  M01S00310.ssmove  +++|
00312  M01S00311.ssmove  +++|      BEGIN  # GETPFC #
00313  M01S00312.ssmove  +++|
00314  M01S00313.ssmove  +++|#
00315  M01S00314.ssmove  +++|**    GETPFC - GET NEXT PFC ENTRY.
00316  M01S00315.ssmove  +++|*
00317  M01S00316.ssmove  +++|*     PROC GETPFC(PEO,FLAG).
00318  M01S00317.ssmove  +++|*
00319  M01S00318.ssmove  +++|*     ENTRY.    (PEO) = ORDINAL OF PREVIOUS PFC ENTRY.
00320  M01S00319.ssmove  +++|*
00321  M01S00320.ssmove  +++|*     EXIT.     (PEO)       = ORDINAL OF CURRENT PFC ENTRY.
00322  M01S00321.ssmove  +++|*               P<CNTRWORD> = FWA OF CONTROL WORD.
00323  M01S00322.ssmove  +++|*               P<PFC>      = FWA OF CURRENT PFC ENTRY.
00324  M01S00323.ssmove  +++|*               (FLAG)      = ERROR STATUS.
00325  M01S00324.ssmove  +++|*                             0, MORE PFC ENTRIES TO GO.
00326  M01S00325.ssmove  +++|*                             1, END OF PFC.
00327  M01S00326.ssmove  +++|*
00328  M01S00327.ssmove  +++|*     MESSAGES. NO DEVICES IN THE FAMILY.
00329  M01S00328.ssmove  +++|*               SSMOVE ABNORMAL, GETPFC.
00330  M01S00329.ssmove  +++|*
00331  M01S00330.ssmove  +++|*     NOTES.    A CATALOG SECTOR IS READ IN ALONG WITH THE CONTROL
00332  M01S00331.ssmove  +++|*               WORD.  THE ORDINAL OF THE NON ZERO PFC ENTRY IN THE
00333  M01S00332.ssmove  +++|*               SECTOR IS RETURNED TO THE CALLING PROCEDURE.
00334  M01S00333.ssmove  +++|#
00335  M01S00334.ssmove  +++|
00336  M01S00335.ssmove  +++|      ITEM PEO        I;             # PFC ENTRY ORDINAL #
00337  M01S00336.ssmove  +++|      ITEM FLAG       I;             # ERROR STATUS #
00338  M01S00337.ssmove  +++|
00339  M01S00338.ssmove  +++|#
00340  M01S00339.ssmove  +++|****  PROC GETPFC - XREF LIST BEGIN.
00341  M01S00340.ssmove  +++|#
00342  M01S00341.ssmove  +++|
00343  M01S00342.ssmove  +++|      XREF
00344  M01S00343.ssmove  +++|        BEGIN
00345  M01S00344.ssmove  +++|        PROC MESSAGE;                # DISPLAYS MESSAGE IN DAYFILE #
00346  M01S00345.ssmove  +++|        PROC RDPFC;                  # READ *PFC* ENTRY #
00347  M01S00346.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
00348  M01S00347.ssmove  +++|                                       OR RETURN #
00349  M01S00348.ssmove  +++|        END
00350  M01S00349.ssmove  +++|
00351  M01S00350.ssmove  +++|#
00352  M01S00351.ssmove  +++|****  PROC GETPFC - XREF LIST END.
00353  M01S00352.ssmove  +++|#
00354  M01S00353.ssmove  +++|
00355  M01S00354.ssmove  +++|      DEF MSF$NODEV  #"NO DEVICES IN THE FAMILY."#;  # MESSAGE TEST #
00356  M01S00355.ssmove  +++|      DEF PROCNAME   #"GETPFC."#;    # PROC NAME #
00357  M01S00356.ssmove  +++|
00358  M01S00357.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00359  M01S00358.ssmove  +++|*CALL,COMBFAS
00360  M01S00359.ssmove  +++|*CALL COMBSIT
00361  M01S00360.ssmove  +++|*CALL,COMTCTW
00362  M01S00361.ssmove  +++|*CALL,COMSPFM
00363  M01S00362.ssmove  +++|*CALL,COMTMOV
00364  M01S00363.ssmove  +++|*CALL,COMTMVP
00365  M01S00364.ssmove  +++|
00366  M01S00365.ssmove  +++|      ITEM FIRST      B = TRUE;      # FIRST CALL TO PROCEDURE #
00367  M01S00366.ssmove  +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
00368  M01S00367.ssmove  +++|      ITEM LIMIT      I;             # LIMIT ON PFC ORDINAL #
00369  M01S00368.ssmove  +++|      ITEM WRDCNT     I;             # WORD COUNT #
00370  M01S00369.ssmove  +++|
00371  M01S00370.ssmove  +++|                                               CONTROL EJECT;
00372  M01S00371.ssmove  +++|
00373  M01S00372.ssmove  +++|      SLOWFOR DUMMY = DUMMY
00374  M01S00373.ssmove  +++|      DO
00375  M01S00374.ssmove  +++|        BEGIN  # GET NON ZERO PFC ENTRY #
00376  M01S00375.ssmove  +++|        IF PEO GQ LIMIT OR FIRST
00377  M01S00376.ssmove  +++|        THEN
00378  M01S00377.ssmove  +++|          BEGIN  # READ NEXT SECTOR #
00379  M01S00378.ssmove  +++|          RDPFC(MVARG$FM[0],0,PFC$SEC[0],WRDCNT,FLAG);
00380  M01S00379.ssmove  +++|          IF FLAG NQ OK
00381  M01S00380.ssmove  +++|          THEN
00382  M01S00381.ssmove  +++|            BEGIN  # PROCESS ERROR STATUS #
00383  M01S00382.ssmove  +++|            IF FLAG EQ 1
00384  M01S00383.ssmove  +++|            THEN                     # END OF PFC #
00385  M01S00384.ssmove  +++|              BEGIN
00386  M01S00385.ssmove  +++|              RETURN;
00387  M01S00386.ssmove  +++|              END
00388  M01S00387.ssmove  +++|
00389  M01S00388.ssmove  +++|            IF FLAG EQ 2
00390  M01S00389.ssmove  +++|            THEN                     # NO DEVICES IN THE FAMILY #
00391  M01S00390.ssmove  +++|              BEGIN
00392  M01S00391.ssmove  +++|              MVMSG$LN[0] = MSF$NODEV;
00393  M01S00392.ssmove  +++|              MESSAGE(MVMSG[0],UDFL1);
00394  M01S00393.ssmove  +++|              RESTPFP(PFP$ABORT);    # RESTORE USER-S *PFP* AND ABORT #
00395  M01S00394.ssmove  +++|              END
00396  M01S00395.ssmove  +++|
00397  M01S00396.ssmove  +++|            IF FLAG EQ 3 OR FLAG EQ 4
00398  M01S00397.ssmove  +++|            THEN                     # IGNORE BAD SECTOR OR ERROR IDLE
00399  M01S00398.ssmove  +++|                                       OR PF UTILITY ACTIVE ON DEVICE #
00400  M01S00399.ssmove  +++|              BEGIN
00401  M01S00400.ssmove  +++|              TEST DUMMY;
00402  M01S00401.ssmove  +++|              END
00403  M01S00402.ssmove  +++|
00404  M01S00403.ssmove  +++|            MVMSG$PROC[0] = PROCNAME;  # ABNORMAL TERMINATION #
00405  M01S00404.ssmove  +++|            MESSAGE(MVMSG[0],UDFL1);
00406  M01S00405.ssmove  +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
00407  M01S00406.ssmove  +++|            END  # PROCESS ERROR STATUS #
00408  M01S00407.ssmove  +++|
00409  M01S00408.ssmove  +++|          IF FIRST
00410  M01S00409.ssmove  +++|          THEN
00411  M01S00410.ssmove  +++|            BEGIN
00412  M01S00411.ssmove  +++|            FIRST = FALSE;
00413  M01S00412.ssmove  +++|            END
00414  M01S00413.ssmove  +++|
00415  M01S00414.ssmove  +++|          P<CNTRWORD> = LOC(PFC$SEC[0]) + WRDCNT;
00416  M01S00415.ssmove  +++|
00417  M01S00416.ssmove  +++|#
00418  M01S00417.ssmove  +++|*     CALCULATE LIMIT ON PFC ENTRY ORDINAL.
00419  M01S00418.ssmove  +++|#
00420  M01S00419.ssmove  +++|
00421  M01S00420.ssmove  +++|          LIMIT = WRDCNT/PFCENTL;
00422  M01S00421.ssmove  +++|          LIMIT = LIMIT - 1;
00423  M01S00422.ssmove  +++|          PEO = -1;
00424  M01S00423.ssmove  +++|          END  # READ NEXT SECTOR #
00425  M01S00424.ssmove  +++|
00426  M01S00425.ssmove  +++|#
00427  M01S00426.ssmove  +++|*     SEARCH FOR NON ZERO PFC ENTRY.
00428  M01S00427.ssmove  +++|#
00429  M01S00428.ssmove  +++|
00430  M01S00429.ssmove  +++|        PEO = PEO + 1;
00431  M01S00430.ssmove  +++|        SLOWFOR I = PEO STEP 1 WHILE I LQ LIMIT
00432  M01S00431.ssmove  +++|        DO
00433  M01S00432.ssmove  +++|          BEGIN
00434  M01S00433.ssmove  +++|          PEO = I;
00435  M01S00434.ssmove  +++|          P<PFC> = LOC(PFC$SEC[0]) + PEO*PFCENTL;
00436  M01S00435.ssmove  +++|          IF PFC$UI[0] NQ 0
00437  M01S00436.ssmove  +++|          THEN
00438  M01S00437.ssmove  +++|            BEGIN
00439  M01S00438.ssmove  +++|            RETURN;
00440  M01S00439.ssmove  +++|            END
00441  M01S00440.ssmove  +++|
00442  M01S00441.ssmove  +++|          END
00443  M01S00442.ssmove  +++|
00444  M01S00443.ssmove  +++|        END  # GET NON ZERO PFC ENTRY #
00445  M01S00444.ssmove  +++|
00446  M01S00445.ssmove  +++|      END  # GETPFC #
00447  M01S00446.ssmove  +++|
00448  M01S00447.ssmove  +++|    TERM
00449  M01S00448.ssmove  +++|PROC MVABDS;
00450  M01S00449.ssmove  +++|# TITLE MVABDS - PROCESS DESTAGE ABANDONMENT.                         #
00451  M01S00450.ssmove  +++|
00452  M01S00451.ssmove  +++|      BEGIN  # MVABDS #
00453  M01S00452.ssmove  +++|
00454  M01S00453.ssmove  +++|#
00455  M01S00454.ssmove  +++|**    MVABDS - PROCESS DESTAGE ABANDONMENT INFORMATION.
00456  M01S00455.ssmove  +++|*
00457  M01S00456.ssmove  +++|*     PROC MVABDS.
00458  M01S00457.ssmove  +++|*
00459  M01S00458.ssmove  +++|*     MESSAGES   1) UNABLE TO ATTACH COMMUNICATION FILE.
00460  M01S00459.ssmove  +++|*                2) UNABLE TO READ COMMUNICATION FILE.
00461  M01S00460.ssmove  +++|*
00462  M01S00461.ssmove  +++|*     NOTES      PROC *MVABDS* PRODUCES A REPORT PAGE LISTING EACH
00463  M01S00462.ssmove  +++|*                DESTAGE ABANDONMENT CODE, THE REASON FOR ABANDONMENT,
00464  M01S00463.ssmove  +++|*                AND THE NUMBER OF FILES ABANDONED FOR THAT REASON.
00465  M01S00464.ssmove  +++|*                IF *LO=F* IS SPECIFIED EACH ABANDONED FILE AND THE
00466  M01S00465.ssmove  +++|*                CORRESPONDING ABANDONMENT CODE IS LISTED.  *MVRPTDS*
00467  M01S00466.ssmove  +++|*                IS CALLED TO REPRODUCE THE DEVICE STATUS REPORT AND
00468  M01S00467.ssmove  +++|*                THE SUBFAMILY REPORT REFLECTING ONLY THE DESTAGES
00469  M01S00468.ssmove  +++|*                WHICH ACTUALLY OCCURRED.
00470  M01S00469.ssmove  +++|#
00471  M01S00470.ssmove  +++|
00472  M01S00471.ssmove  +++|#
00473  M01S00472.ssmove  +++|****  PROC MVABDS - XREF LIST BEGIN.
00474  M01S00473.ssmove  +++|#
00475  M01S00474.ssmove  +++|
00476  M01S00475.ssmove  +++|      XREF
00477  M01S00476.ssmove  +++|        BEGIN
00478  M01S00477.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
00479  M01S00478.ssmove  +++|        PROC MESSAGE;                # ISSUE MESSAGE TO DAYFILE #
00480  M01S00479.ssmove  +++|        PROC MVRPTDS;                # REPORT DEVICE STATUS #
00481  M01S00480.ssmove  +++|        PROC PF;                     # *PFM* REQUEST INTERFACE #
00482  M01S00481.ssmove  +++|        PROC READ;                   # INITIATE INPUT TO A BUFFER #
00483  M01S00482.ssmove  +++|        PROC READW;                  # READ DATA TO WORKING BUFFER #
00484  M01S00483.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S FAMILY AND UI. #
00485  M01S00484.ssmove  +++|        PROC RPEJECT;                # PAGE EJECTS REPORT FILE #
00486  M01S00485.ssmove  +++|        PROC RPLINE;                 # WRITE LINE TO REPORT FILE #
00487  M01S00486.ssmove  +++|        PROC RPSPACE;                # PUTS BLANK LINE ON REPORT FILE #
00488  M01S00487.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
00489  M01S00488.ssmove  +++|        PROC ZSETFET;                # INITIALIZE A FET #
00490  M01S00489.ssmove  +++|        FUNC XCDD  C(10);            # CONVERT DECIMAL TO DISPLAY #
00491  M01S00490.ssmove  +++|        FUNC XCOD C(10);             # BINARY TO DECIMAL DISPLAY #
00492  M01S00491.ssmove  +++|        END
00493  M01S00492.ssmove  +++|
00494  M01S00493.ssmove  +++|#
00495  M01S00494.ssmove  +++|****  PROC MVABDS - XREF LIST END.
00496  M01S00495.ssmove  +++|#
00497  M01S00496.ssmove  +++|
00498  M01S00497.ssmove  +++|      DEF MSG1       #" UNABLE TO ATTACH COMMUNICATION FILE."#;
00499  M01S00498.ssmove  +++|      DEF MSG2       #" UNABLE TO READ COMMUNICATION FILE."#;
00500  M01S00499.ssmove  +++|      DEF MSG3       #"NO SPACE"#;
00501  M01S00500.ssmove  +++|      DEF MSG4       #"NO STORAGE MODULE AVAILABLE"#;
00502  M01S00501.ssmove  +++|      DEF MSG5       #"NO CARTRIDGE OR GROUP AVAILABLE"#;
00503  M01S00502.ssmove  +++|      DEF MSG6       #"FILE ALREADY DESTAGED"#;
00504  M01S00503.ssmove  +++|      DEF MSG7       #"FILE BUSY / PFM PROBLEM"#;
00505  M01S00504.ssmove  +++|      DEF MSG8       #"CATALOG ACCESS ERROR"#;
00506  M01S00505.ssmove  +++|      DEF MSG9       #"OVERFLOW NOT LEGAL"#;
00507  M01S00506.ssmove  +++|      DEF MSG10      #"GROUP FULL"#;
00508  M01S00507.ssmove  +++|      DEF MSG11      #"DISK READ ERROR"#;
00509  M01S00508.ssmove  +++|      DEF MSG12      #"CARTRIDGE LOST"#;
00510  M01S00509.ssmove  +++|      DEF MS613      #"CLOSED DESTAGE"#;
00511  M01S00510.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00512  M01S00511.ssmove  +++|*CALL COMBFAS
00513  M01S00512.ssmove  +++|*CALL COMBBZF
00514  M01S00513.ssmove  +++|*CALL COMBFET
00515  M01S00514.ssmove  +++|*CALL COMBTDM
00516  M01S00515.ssmove  +++|*CALL COMTMOV
00517  M01S00516.ssmove  +++|*CALL COMTOUT
00518  M01S00517.ssmove  +++|*CALL COMXMFD
00519  M01S00518.ssmove  +++|
00520  M01S00519.ssmove  +++|      ITEM ABR        S:ABANDON;     # ABANDONMENT CODE #
00521  M01S00520.ssmove  +++|      ITEM ABNDN      B=TRUE;        # PRODUCE ABANDONMENT REPORT #
00522  M01S00521.ssmove  +++|      ITEM IX         I;             # FILE TYPE INDEX #
00523  M01S00522.ssmove  +++|      ITEM J          I;             # FET ADDRESS #
00524  M01S00523.ssmove  +++|      ITEM STAT       I;             # STATUS #
00525  M01S00524.ssmove  +++|      ITEM SUBFAM     I;             # SUBFAMILY INDEX #
00526  M01S00525.ssmove  +++|      ITEM TMPC       C(10);         # TEMPORARY CHARACTER #
00527  M01S00526.ssmove  +++|
00528  M01S00527.ssmove  +++|      ARRAY ABNDNF   [1:11]  S(1);
00529  M01S00528.ssmove  +++|        BEGIN
00530  M01S00529.ssmove  +++|        ITEM ABND$NF    I(00,00,60);  # FILE COUNT #
00531  M01S00530.ssmove  +++|        END
00532  M01S00531.ssmove  +++|
00533  M01S00532.ssmove  +++|                                               CONTROL EJECT;
00534  M01S00533.ssmove  +++|
00535  M01S00534.ssmove  +++|#
00536  M01S00535.ssmove  +++|*     ATTACH COMMUNICATION FILE.
00537  M01S00536.ssmove  +++|#
00538  M01S00537.ssmove  +++|
00539  M01S00538.ssmove  +++|      COMNAME = MVOCOM;
00540  M01S00539.ssmove  +++|      BZFILL(COMNAME,TYPFILL"ZFILL",7);
00541  M01S00540.ssmove  +++|
00542  M01S00541.ssmove  +++|      PF("ATTACH",COMNAME,0,"M","W","RC",STAT,"NA",0,0);
00543  M01S00542.ssmove  +++|
00544  M01S00543.ssmove  +++|      IF STAT NQ OK
00545  M01S00544.ssmove  +++|      THEN
00546  M01S00545.ssmove  +++|        BEGIN
00547  M01S00546.ssmove  +++|        MVMSG$LN[0] = MSG1;
00548  M01S00547.ssmove  +++|        MESSAGE(MVMSG[0],UDFL1);
00549  M01S00548.ssmove  +++|        RESTPFP(PFP$ABORT);
00550  M01S00549.ssmove  +++|        END
00551  M01S00550.ssmove  +++|
00552  M01S00551.ssmove  +++|#
00553  M01S00552.ssmove  +++|*     DETERMINE WHETHER TO LIST EACH FILE.
00554  M01S00553.ssmove  +++|#
00555  M01S00554.ssmove  +++|
00556  M01S00555.ssmove  +++|      IF LO$F[0] OR LO$P[0]
00557  M01S00556.ssmove  +++|      THEN
00558  M01S00557.ssmove  +++|        BEGIN
00559  M01S00558.ssmove  +++|        LISTFETP = OUT$FETP;
00560  M01S00559.ssmove  +++|        END
00561  M01S00560.ssmove  +++|
00562  M01S00561.ssmove  +++|#
00563  M01S00562.ssmove  +++|*     CLEAR DESTAGE INFORMATION FROM SUBFAMILY STATUS ARRAY.
00564  M01S00563.ssmove  +++|#
00565  M01S00564.ssmove  +++|
00566  M01S00565.ssmove  +++|      SLOWFOR IX = IXDA STEP 1 UNTIL IXIA
00567  M01S00566.ssmove  +++|      DO
00568  M01S00567.ssmove  +++|        BEGIN
00569  M01S00568.ssmove  +++|        SLOWFOR SUBFAM = 0 STEP 1 UNTIL MAXSF
00570  M01S00569.ssmove  +++|        DO
00571  M01S00570.ssmove  +++|          BEGIN
00572  M01S00571.ssmove  +++|          SFDS$NF[IX,SUBFAM] = 0;
00573  M01S00572.ssmove  +++|          SFDS$PRU[IX,SUBFAM] = 0;
00574  M01S00573.ssmove  +++|          END
00575  M01S00574.ssmove  +++|
00576  M01S00575.ssmove  +++|        END
00577  M01S00576.ssmove  +++|
00578  M01S00577.ssmove  +++|#
00579  M01S00578.ssmove  +++|*     READ PREAMBLE OF COMMUNICATION FILE.
00580  M01S00579.ssmove  +++|#
00581  M01S00580.ssmove  +++|
00582  M01S00581.ssmove  +++|      J = LOC(MCF$FET[0]);
00583  M01S00582.ssmove  +++|      ZSETFET(J,COMNAME,LOC(MCF$BUF[0]),MCFBUFL,SFETL);
00584  M01S00583.ssmove  +++|      FET$EP[0] = TRUE;
00585  M01S00584.ssmove  +++|
00586  M01S00585.ssmove  +++|      READ(MCF$FET[0],NRCL);
00587  M01S00586.ssmove  +++|      READW(MCF$FET[0],MCF$PRM[0],MVPRML,STAT);
00588  M01S00587.ssmove  +++|
00589  M01S00588.ssmove  +++|      IF STAT NQ OK
00590  M01S00589.ssmove  +++|      THEN
00591  M01S00590.ssmove  +++|        BEGIN
00592  M01S00591.ssmove  +++|        MVMSG$LN[0] = MSG2;
00593  M01S00592.ssmove  +++|        MESSAGE(MVMSG[0],UDFL1);
00594  M01S00593.ssmove  +++|        RESTPFP(PFP$ABORT);
00595  M01S00594.ssmove  +++|        END
00596  M01S00595.ssmove  +++|
00597  M01S00596.ssmove  +++|                                               CONTROL EJECT;
00598  M01S00597.ssmove  +++|
00599  M01S00598.ssmove  +++|#
00600  M01S00599.ssmove  +++|*     WRITE HEADER TO REPORT FILE.
00601  M01S00600.ssmove  +++|#
00602  M01S00601.ssmove  +++|
00603  M01S00602.ssmove  +++|      RPEJECT(OUT$FETP);
00604  M01S00603.ssmove  +++|      RPLINE(OUT$FETP,"DESTAGE ABANDONMENT REPORT",5,26,0);
00605  M01S00604.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
00606  M01S00605.ssmove  +++|      RPLINE(LISTFETP,"FILENAME           UI     CODE",9,30,0);
00607  M01S00606.ssmove  +++|      RPSPACE(LISTFETP,SP"SPACE",1);
00608  M01S00607.ssmove  +++|
00609  M01S00608.ssmove  +++|#
00610  M01S00609.ssmove  +++|*     PROCESS EACH *TDAM* ENTRY.
00611  M01S00610.ssmove  +++|#
00612  M01S00611.ssmove  +++|
00613  M01S00612.ssmove  +++|      REPEAT WHILE STAT EQ 0
00614  M01S00613.ssmove  +++|      DO
00615  M01S00614.ssmove  +++|        BEGIN  # PROCESS EACH *TDAM* #
00616  M01S00615.ssmove  +++|
00617  M01S00616.ssmove  +++|        READW(MCF$FET[0],MCF$REQ[0],TDAMLEN,STAT);
00618  M01S00617.ssmove  +++|
00619  M01S00618.ssmove  +++|        IF STAT EQ CIOERR
00620  M01S00619.ssmove  +++|        THEN
00621  M01S00620.ssmove  +++|          BEGIN
00622  M01S00621.ssmove  +++|          MVMSG$LN[0] = MSG2;
00623  M01S00622.ssmove  +++|          MESSAGE(MVMSG[0],UDFL1);
00624  M01S00623.ssmove  +++|          RESTPFP(PFP$ABORT);
00625  M01S00624.ssmove  +++|          END
00626  M01S00625.ssmove  +++|
00627  M01S00626.ssmove  +++|        IF STAT NQ OK
00628  M01S00627.ssmove  +++|        THEN
00629  M01S00628.ssmove  +++|          BEGIN
00630  M01S00629.ssmove  +++|          TEST DUMMY;
00631  M01S00630.ssmove  +++|          END
00632  M01S00631.ssmove  +++|
00633  M01S00632.ssmove  +++|        P<TDAM> = LOC(MCF$REQ[0]);
00634  M01S00633.ssmove  +++|        DNX = DN$TO$DNX[TDAMDN[0]];
00635  M01S00634.ssmove  +++|        SFX = TDAMSBF[0];
00636  M01S00635.ssmove  +++|
00637  M01S00636.ssmove  +++|#
00638  M01S00637.ssmove  +++|*     CHECK FOR VALID ABANDONMENT CODE.
00639  M01S00638.ssmove  +++|#
00640  M01S00639.ssmove  +++|
00641  M01S00640.ssmove  +++|        IF TDAMABR[0] LQ ABANDON"OK"  ##
00642  M01S00641.ssmove  +++|          OR TDAMABR[0] GQ ABANDON"ENDAB"
00643  M01S00642.ssmove  +++|        THEN                         # INVALID ABANDON CODE #
00644  M01S00643.ssmove  +++|          BEGIN
00645  M01S00644.ssmove  +++|          TEST DUMMY;
00646  M01S00645.ssmove  +++|          END
00647  M01S00646.ssmove  +++|
00648  M01S00647.ssmove  +++|#
00649  M01S00648.ssmove  +++|*     DETERMINE FILE TYPE.
00650  M01S00649.ssmove  +++|#
00651  M01S00650.ssmove  +++|
00652  M01S00651.ssmove  +++|        IF TDAMIA[0]
00653  M01S00652.ssmove  +++|        THEN
00654  M01S00653.ssmove  +++|          BEGIN
00655  M01S00654.ssmove  +++|          FTYPE = IXIA;
00656  M01S00655.ssmove  +++|          END
00657  M01S00656.ssmove  +++|
00658  M01S00657.ssmove  +++|        ELSE
00659  M01S00658.ssmove  +++|          BEGIN
00660  M01S00659.ssmove  +++|          FTYPE = IXDA;
00661  M01S00660.ssmove  +++|          END
00662  M01S00661.ssmove  +++|
00663  M01S00662.ssmove  +++|#
00664  M01S00663.ssmove  +++|*     UPDATE COUNTS FOR *MVRPTDS* REPORT.
00665  M01S00664.ssmove  +++|#
00666  M01S00665.ssmove  +++|
00667  M01S00666.ssmove  +++|        IF TDAMFC[0] EQ TDAMFCODE"DESTRLS"
00668  M01S00667.ssmove  +++|        THEN                         # FILE WAS NOT RELEASED #
00669  M01S00668.ssmove  +++|          BEGIN
00670  M01S00669.ssmove  +++|          DEV$RELF[FTYPE,DNX] = DEV$RELF[FTYPE,DNX] - 1;
00671  M01S00670.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] + TDAMFLN[0];
00672  M01S00671.ssmove  +++|          IF FTYPE EQ IXIA
00673  M01S00672.ssmove  +++|          THEN
00674  M01S00673.ssmove  +++|            BEGIN
00675  M01S00674.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] - TDAMFLN[0];
00676  M01S00675.ssmove  +++|            END
00677  M01S00676.ssmove  +++|
00678  M01S00677.ssmove  +++|          ELSE
00679  M01S00678.ssmove  +++|            BEGIN
00680  M01S00679.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
00681  M01S00680.ssmove  +++|            TRUPRU = (((TDAMFLN[0]+1) / PRUTRK) + 1) * PRUTRK;
00682  M01S00681.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] - TRUPRU;
00683  M01S00682.ssmove  +++|            END
00684  M01S00683.ssmove  +++|
00685  M01S00684.ssmove  +++|          END
00686  M01S00685.ssmove  +++|
00687  M01S00686.ssmove  +++|        SFDS$NF[FTYPE,SFX] = SFDS$NF[FTYPE,SFX] + 1;
00688  M01S00687.ssmove  +++|        SFDS$PRU[FTYPE,SFX] = SFDS$PRU[FTYPE,SFX] + TDAMFLN[0];
00689  M01S00688.ssmove  +++|        SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] - 1;
00690  M01S00689.ssmove  +++|        SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] - TDAMFLN[0];
00691  M01S00690.ssmove  +++|        SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] - 1;
00692  M01S00691.ssmove  +++|        SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] - TDAMFLN[0];
00693  M01S00692.ssmove  +++|
00694  M01S00693.ssmove  +++|#
00695  M01S00694.ssmove  +++|*     INCREMENT FILE COUNT.
00696  M01S00695.ssmove  +++|#
00697  M01S00696.ssmove  +++|
00698  M01S00697.ssmove  +++|        ABR = TDAMABR[0];
00699  M01S00698.ssmove  +++|        ABND$NF[ABR] = ABND$NF[ABR] + 1;
00700  M01S00699.ssmove  +++|
00701  M01S00700.ssmove  +++|#
00702  M01S00701.ssmove  +++|*     WRITE EACH FILE TO REPORT FILE.
00703  M01S00702.ssmove  +++|#
00704  M01S00703.ssmove  +++|
00705  M01S00704.ssmove  +++|        TMPC = TDAMPFN[0];
00706  M01S00705.ssmove  +++|        BZFILL(TMPC,TYPFILL"BFILL",7);
00707  M01S00706.ssmove  +++|        RPLINE(LISTFETP,TMPC,10,7,1);
00708  M01S00707.ssmove  +++|        TMPC = XCOD(TDAMUI[0]);
00709  M01S00708.ssmove  +++|        RPLINE(LISTFETP,TMPC,20,10,1);
00710  M01S00709.ssmove  +++|        CHR$10[0] = XCDD(TDAMABR[0]);
00711  M01S00710.ssmove  +++|        RPLINE(LISTFETP,CHR$R2[0],37,2,0);
00712  M01S00711.ssmove  +++|
00713  M01S00712.ssmove  +++|        END  # PROCESS EACH *TDAM* #
00714  M01S00713.ssmove  +++|
00715  M01S00714.ssmove  +++|#
00716  M01S00715.ssmove  +++|*     LIST CODE, NUMBER OF FILES, AND EXPLANATION.
00717  M01S00716.ssmove  +++|#
00718  M01S00717.ssmove  +++|
00719  M01S00718.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
00720  M01S00719.ssmove  +++|      RPLINE(OUT$FETP,"CODE       FILES       REASON",9,29,0);
00721  M01S00720.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
00722  M01S00721.ssmove  +++|
00723  M01S00722.ssmove  +++|      ABR = ABANDON"NOSPACE";
00724  M01S00723.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00725  M01S00724.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00726  M01S00725.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00727  M01S00726.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00728  M01S00727.ssmove  +++|      RPLINE(OUT$FETP,MSG3,30,8,0);
00729  M01S00728.ssmove  +++|
00730  M01S00729.ssmove  +++|      ABR = ABANDON"NOSM";
00731  M01S00730.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00732  M01S00731.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00733  M01S00732.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00734  M01S00733.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00735  M01S00734.ssmove  +++|      RPLINE(OUT$FETP,MSG4,30,27,0);
00736  M01S00735.ssmove  +++|
00737  M01S00736.ssmove  +++|      ABR = ABANDON"NOCARGP";
00738  M01S00737.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00739  M01S00738.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00740  M01S00739.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00741  M01S00740.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00742  M01S00741.ssmove  +++|      RPLINE(OUT$FETP,MSG5,30,31,0);
00743  M01S00742.ssmove  +++|
00744  M01S00743.ssmove  +++|      ABR = ABANDON"NEWASA";
00745  M01S00744.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00746  M01S00745.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00747  M01S00746.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00748  M01S00747.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00749  M01S00748.ssmove  +++|      RPLINE(OUT$FETP,MSG6,30,21,0);
00750  M01S00749.ssmove  +++|
00751  M01S00750.ssmove  +++|      ABR = ABANDON"PFMERR";
00752  M01S00751.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00753  M01S00752.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00754  M01S00753.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00755  M01S00754.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00756  M01S00755.ssmove  +++|      RPLINE(OUT$FETP,MSG7,30,23,0);
00757  M01S00756.ssmove  +++|
00758  M01S00757.ssmove  +++|      ABR = ABANDON"CATIOERR";
00759  M01S00758.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00760  M01S00759.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00761  M01S00760.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00762  M01S00761.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00763  M01S00762.ssmove  +++|      RPLINE(OUT$FETP,MSG8,30,20,0);
00764  M01S00763.ssmove  +++|
00765  M01S00764.ssmove  +++|      ABR = ABANDON"NOOVERF";
00766  M01S00765.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00767  M01S00766.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00768  M01S00767.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00769  M01S00768.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00770  M01S00769.ssmove  +++|      RPLINE(OUT$FETP,MSG9,30,18,0);
00771  M01S00770.ssmove  +++|
00772  M01S00771.ssmove  +++|      ABR = ABANDON"GRFULL";
00773  M01S00772.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00774  M01S00773.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00775  M01S00774.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00776  M01S00775.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00777  M01S00776.ssmove  +++|      RPLINE(OUT$FETP,MSG10,30,10,0);
00778  M01S00777.ssmove  +++|
00779  M01S00778.ssmove  +++|      ABR = ABANDON"DSKRDERR";
00780  M01S00779.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00781  M01S00780.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00782  M01S00781.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00783  M01S00782.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00784  M01S00783.ssmove  +++|      RPLINE(OUT$FETP,MSG11,30,15,0);
00785  M01S00784.ssmove  +++|
00786  M01S00785.ssmove  +++|      ABR = ABANDON"LOST";
00787  M01S00786.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00788  M01S00787.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00789  M01S00788.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00790  M01S00789.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00791  M01S00790.ssmove  +++|      RPLINE(OUT$FETP,MSG12,30,14,0);
00792  M01S00791.ssmove  +++|
00793  M01S00792.ssmove  +++|      ABR = ABANDON"CLOSEDS";
00794  M01S00793.ssmove  +++|      CHR$10[0] = XCDD(ABR);
00795  M01S00794.ssmove  +++|      RPLINE(OUT$FETP,CHR$R2[0],11,2,1);
00796  M01S00795.ssmove  +++|      CHR$10[0] = XCDD(ABND$NF[ABR]);
00797  M01S00796.ssmove  +++|      RPLINE(OUT$FETP,CHR$R8[0],17,8,1);
00798  M01S00797.ssmove  +++|      RPLINE(OUT$FETP,MS613,30,14,0);
00799  M01S00798.ssmove  +++|
00800  M01S00799.ssmove  +++|#
00801  M01S00800.ssmove  +++|*     GENERATE AN UPDATED *DEVICE REPORT* AND *SUBFAMILY REPORT*.
00802  M01S00801.ssmove  +++|#
00803  M01S00802.ssmove  +++|
00804  M01S00803.ssmove  +++|      MVRPTDS(ABNDN);
00805  M01S00804.ssmove  +++|
00806  M01S00805.ssmove  +++|
00807  M01S00806.ssmove  +++|      END  # MVABDS #
00808  M01S00807.ssmove  +++|
00809  M01S00808.ssmove  +++|    TERM
00810  M01S00809.ssmove  +++|PROC MVALCS(CS,VCS,NBS,KEY,FLAG);
00811  M01S00810.ssmove  +++|# TITLE MVALCS - ANALYZES CHARACTER STRING.                           #
00812  M01S00811.ssmove  +++|
00813  M01S00812.ssmove  +++|      BEGIN  # MVALCS #
00814  M01S00813.ssmove  +++|
00815  M01S00814.ssmove  +++|#
00816  M01S00815.ssmove  +++|**    MVALCS - ANALYZES CHARACTER STRING.
00817  M01S00816.ssmove  +++|*
00818  M01S00817.ssmove  +++|*     THIS PROCEDURE ANALYZES AN INPUT CHARACTER STRING (CS)
00819  M01S00818.ssmove  +++|*     TO VERIFY THAT EACH CHARACTER IS IN THE STRING
00820  M01S00819.ssmove  +++|*     SPECIFIED BY *VCS*.  EACH VALID CHARACTER RESULTS IN THE
00821  M01S00820.ssmove  +++|*     CORRESPONDING BIT IN *NBS* BEING SET TO 1 (TRUE).  THESE BITS
00822  M01S00821.ssmove  +++|*     IN *NBS* MAY THEN BE TESTED AS BOOLEAN ITEMS TO DETERMINE
00823  M01S00822.ssmove  +++|*     IF THE ASSOCIATED CHARACTER WAS SUPPLIED OR NOT.
00824  M01S00823.ssmove  +++|*
00825  M01S00824.ssmove  +++|*     PROC MVALCS(CS,VCS,NBS,KEY,FLAG).
00826  M01S00825.ssmove  +++|*
00827  M01S00826.ssmove  +++|#
00828  M01S00827.ssmove  +++|
00829  M01S00828.ssmove  +++|      ITEM CS         C(10);         # INPUT CHARACTER STRING #
00830  M01S00829.ssmove  +++|      ITEM VCS        C(10);         # VALID CHARACTERS #
00831  M01S00830.ssmove  +++|      ITEM NBS        I;             # OUTPUT BIT STRING #
00832  M01S00831.ssmove  +++|      ITEM KEY        C(2);          # OPTION BEING TESTED #
00833  M01S00832.ssmove  +++|      ITEM FLAG       I;             # NON-ZERO FOR ERRORS #
00834  M01S00833.ssmove  +++|
00835  M01S00834.ssmove  +++|
00836  M01S00835.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
00837  M01S00836.ssmove  +++|
00838  M01S00837.ssmove  +++|*CALL,COMBFAS
00839  M01S00838.ssmove  +++|*CALL COMBSIT
00840  M01S00839.ssmove  +++|
00841  M01S00840.ssmove  +++|
00842  M01S00841.ssmove  +++|      ITEM C          C(1);          # CHARACTER BEING ANALYZED #
00843  M01S00842.ssmove  +++|      ITEM I          I;             # LOOP INDEX #
00844  M01S00843.ssmove  +++|      ITEM J          I;             # LOOP INDEX #
00845  M01S00844.ssmove  +++|
00846  M01S00845.ssmove  +++|                                               CONTROL EJECT;
00847  M01S00846.ssmove  +++|
00848  M01S00847.ssmove  +++|      NBS = 0;
00849  M01S00848.ssmove  +++|      FLAG = 0;
00850  M01S00849.ssmove  +++|      SLOWFOR I = 0 STEP 1 UNTIL 9
00851  M01S00850.ssmove  +++|      DO
00852  M01S00851.ssmove  +++|        BEGIN  # CS LOOP #
00853  M01S00852.ssmove  +++|        C = C<I,1>CS;
00854  M01S00853.ssmove  +++|        IF C EQ " " OR C EQ 0
00855  M01S00854.ssmove  +++|        THEN
00856  M01S00855.ssmove  +++|          RETURN;
00857  M01S00856.ssmove  +++|        SLOWFOR J = 0 STEP 1 UNTIL 9
00858  M01S00857.ssmove  +++|        DO
00859  M01S00858.ssmove  +++|          BEGIN  # SEARCH FOR MATCH #
00860  M01S00859.ssmove  +++|          IF C<J,1>VCS EQ C
00861  M01S00860.ssmove  +++|          THEN
00862  M01S00861.ssmove  +++|            BEGIN
00863  M01S00862.ssmove  +++|            B<J,1>NBS = 1;
00864  M01S00863.ssmove  +++|            TEST I;
00865  M01S00864.ssmove  +++|            END
00866  M01S00865.ssmove  +++|
00867  M01S00866.ssmove  +++|          END  # SEARCH FOR MATCH #
00868  M01S00867.ssmove  +++|
00869  M01S00868.ssmove  +++|        FLAG = I+1;
00870  M01S00869.ssmove  +++|        RETURN;
00871  M01S00870.ssmove  +++|        END  # CS LOOP #
00872  M01S00871.ssmove  +++|
00873  M01S00872.ssmove  +++|      END  # MVALCS #
00874  M01S00873.ssmove  +++|
00875  M01S00874.ssmove  +++|    TERM
00876  M01S00875.ssmove  +++|PROC MVCALL((REQTYPE),(REQCODE),RESPCODE);
00877  M01S00876.ssmove  +++|# TITLE MVCALL - ISSUES TYPE 1 OR 2 UCP REQUEST TO EXEC.              #
00878  M01S00877.ssmove  +++|
00879  M01S00878.ssmove  +++|      BEGIN  # MVCALL #
00880  M01S00879.ssmove  +++|
00881  M01S00880.ssmove  +++|#
00882  M01S00881.ssmove  +++|**    MVCALL - ISSUES A TYPE 1 OR 2 UCP REQUEST TO EXEC.
00883  M01S00882.ssmove  +++|*
00884  M01S00883.ssmove  +++|*     PROC MVCALL((REQTYPE),(REQCODE),RESPCODE).
00885  M01S00884.ssmove  +++|*
00886  M01S00885.ssmove  +++|*     ENTRY.    (REQTYPE)   = REQUEST TYPE.
00887  M01S00886.ssmove  +++|*               (REQCODE)   = REQUEST CODE.
00888  M01S00887.ssmove  +++|*               (MVARG$FM)  = FAMILY NAME.
00889  M01S00888.ssmove  +++|*               (REQID$MV)  = REQUESTOR ID.
00890  M01S00889.ssmove  +++|*               (SSID$MV)   = SUBSYSTEM ID.
00891  M01S00890.ssmove  +++|*               P<CPR>      = FWA OF CALLSS PARAMETER BLOCK.
00892  M01S00891.ssmove  +++|*
00893  M01S00892.ssmove  +++|*     EXIT.     (RESPCODE) = RESPONSE FROM EXEC.
00894  M01S00893.ssmove  +++|*
00895  M01S00894.ssmove  +++|*     MESSAGES. SSMOVE ABNORMAL, MVCALL.
00896  M01S00895.ssmove  +++|*
00897  M01S00896.ssmove  +++|*     NOTES.    THE CALLSS PARAMETER REQUEST BLOCK IS SET
00898  M01S00897.ssmove  +++|*               UP FOR A TYPE 1 OR TYPE 2 UCP REQUEST AND
00899  M01S00898.ssmove  +++|*               THE REQUEST IS ISSUED TO EXEC.
00900  M01S00899.ssmove  +++|#
00901  M01S00900.ssmove  +++|
00902  M01S00901.ssmove  +++|      ITEM REQTYPE    I;             # REQUEST TYPE #
00903  M01S00902.ssmove  +++|      ITEM REQCODE    I;             # REQUEST CODE #
00904  M01S00903.ssmove  +++|      ITEM RESPCODE   I;             # RESPONSE FROM EXEC #
00905  M01S00904.ssmove  +++|
00906  M01S00905.ssmove  +++|#
00907  M01S00906.ssmove  +++|****  PROC MVCALL - XREF LIST BEGIN.
00908  M01S00907.ssmove  +++|#
00909  M01S00908.ssmove  +++|
00910  M01S00909.ssmove  +++|      XREF
00911  M01S00910.ssmove  +++|        BEGIN
00912  M01S00911.ssmove  +++|        PROC ABORT;                  # STOPS PROCESSING #
00913  M01S00912.ssmove  +++|        PROC CALLSS;                 # ISSUES A UCP/SCP REQUEST #
00914  M01S00913.ssmove  +++|        PROC MESSAGE;                # DISPLAYS MESSAGE IN DAYFILE #
00915  M01S00914.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
00916  M01S00915.ssmove  +++|                                       OR RETURN #
00917  M01S00916.ssmove  +++|        END
00918  M01S00917.ssmove  +++|
00919  M01S00918.ssmove  +++|#
00920  M01S00919.ssmove  +++|****  PROC MVCALL - XREF LIST END.
00921  M01S00920.ssmove  +++|#
00922  M01S00921.ssmove  +++|
00923  M01S00922.ssmove  +++|      DEF PROCNAME   #"MVCALL."#;    # PROC NAME #
00924  M01S00923.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
00925  M01S00924.ssmove  +++|*CALL,COMBFAS
00926  M01S00925.ssmove  +++|*CALL,COMBCPR
00927  M01S00926.ssmove  +++|*CALL,COMTMOV
00928  M01S00927.ssmove  +++|*CALL,COMTMVP
00929  M01S00928.ssmove  +++|
00930  M01S00929.ssmove  +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
00931  M01S00930.ssmove  +++|
00932  M01S00931.ssmove  +++|                                               CONTROL EJECT;
00933  M01S00932.ssmove  +++|
00934  M01S00933.ssmove  +++|#
00935  M01S00934.ssmove  +++|*     ZERO FILL CALLSS PARAMETER BLOCK.
00936  M01S00935.ssmove  +++|#
00937  M01S00936.ssmove  +++|
00938  M01S00937.ssmove  +++|      FASTFOR I = 0 STEP 1 UNTIL CPRLEN-1
00939  M01S00938.ssmove  +++|      DO
00940  M01S00939.ssmove  +++|        BEGIN
00941  M01S00940.ssmove  +++|        CPR1[I] = 0;
00942  M01S00941.ssmove  +++|        END
00943  M01S00942.ssmove  +++|
00944  M01S00943.ssmove  +++|      CPR$RQT[0] = REQTYPE;          # SET UP PARAMETER BLOCK #
00945  M01S00944.ssmove  +++|      CPR$RQC[0] = REQCODE;
00946  M01S00945.ssmove  +++|      CPR$RQI[0] = REQID$MV;
00947  M01S00946.ssmove  +++|      CPR$SSPFLG[0] = TRUE;
00948  M01S00947.ssmove  +++|      CPR$FAM[0] = MVARG$FM[0];
00949  M01S00948.ssmove  +++|
00950  M01S00949.ssmove  +++|      IF REQTYPE EQ TYP"TYP1"
00951  M01S00950.ssmove  +++|      THEN                           # TYPE 1 REQUEST #
00952  M01S00951.ssmove  +++|        BEGIN
00953  M01S00952.ssmove  +++|        CPR$WC[0] = TYP1$WC;
00954  M01S00953.ssmove  +++|        END
00955  M01S00954.ssmove  +++|
00956  M01S00955.ssmove  +++|      ELSE
00957  M01S00956.ssmove  +++|        BEGIN  # TYPE 2 OR ILLEGAL REQUEST #
00958  M01S00957.ssmove  +++|        IF REQTYPE EQ TYP"TYP2"
00959  M01S00958.ssmove  +++|        THEN                         # TYPE 2 REQUEST #
00960  M01S00959.ssmove  +++|          BEGIN
00961  M01S00960.ssmove  +++|          CPR$WC[0] = TYP2$WC;
00962  M01S00961.ssmove  +++|          CPR$NW[0] = MVARG$NW[0];
00963  M01S00962.ssmove  +++|          END
00964  M01S00963.ssmove  +++|
00965  M01S00964.ssmove  +++|        ELSE                         # ILLEGAL REQUEST TYPE #
00966  M01S00965.ssmove  +++|          BEGIN
00967  M01S00966.ssmove  +++|          MVMSG$PROC[0] = PROCNAME;
00968  M01S00967.ssmove  +++|          MESSAGE(MVMSG[0],SYSUDF1);
00969  M01S00968.ssmove  +++|          RESTPFP(PFP$ABORT);        # RESTORE USER-S *PFP* AND ABORT #
00970  M01S00969.ssmove  +++|          END
00971  M01S00970.ssmove  +++|
00972  M01S00971.ssmove  +++|        END  # TYPE 2 OR ILLEGAL REQUEST #
00973  M01S00972.ssmove  +++|
00974  M01S00973.ssmove  +++|      CALLSS(SSID$MV,CPR[0],RCL);
00975  M01S00974.ssmove  +++|      IF REQTYPE EQ TYP"TYP2"
00976  M01S00975.ssmove  +++|      THEN
00977  M01S00976.ssmove  +++|        BEGIN
00978  M01S00977.ssmove  +++|        RESPCODE = CPR$RQR[0];       # RETURN RESPONSE FROM EXEC #
00979  M01S00978.ssmove  +++|        END
00980  M01S00979.ssmove  +++|
00981  M01S00980.ssmove  +++|      ELSE
00982  M01S00981.ssmove  +++|        BEGIN
00983  M01S00982.ssmove  +++|        RESPCODE = CPR$ES[0];        # RETURN RESPONSE FROM SYSTEM #
00984  M01S00983.ssmove  +++|        END
00985  M01S00984.ssmove  +++|
00986  M01S00985.ssmove  +++|      RETURN;
00987  M01S00986.ssmove  +++|
00988  M01S00987.ssmove  +++|      END  # MVCALL #
00989  M01S00988.ssmove  +++|
00990  M01S00989.ssmove  +++|    TERM
00991  M01S00990.ssmove  +++|PROC MVCKSF((FN),(UI),PO);
00992  M01S00991.ssmove  +++|# TITLE MVCKSF - CHECK IF SPECIAL FILE.                               #
00993  M01S00992.ssmove  +++|
00994  M01S00993.ssmove  +++|      BEGIN  # MVCKSF #
00995  M01S00994.ssmove  +++|
00996  M01S00995.ssmove  +++|#
00997  M01S00996.ssmove  +++|**    MVCKSF - CHECK IF SPECIAL FILE.
00998  M01S00997.ssmove  +++|*
00999  M01S00998.ssmove  +++|*     THIS PROCEDURE DETERMINES WHETHER THE FILE SPECIFIED BY
01000  M01S00999.ssmove  +++|*     THE *FN* AND *UI* PARAMETERS WAS SPECIFIED VIA THE
01001  M01S01000.ssmove  +++|*     *SF,FN=...* DIRECTIVE.
01002  M01S01001.ssmove  +++|*
01003  M01S01002.ssmove  +++|*     PROC MVCKSF( (FN), (UI), PO).
01004  M01S01003.ssmove  +++|*
01005  M01S01004.ssmove  +++|*     ENTRY.    (FN) = NAME OF A PERMANENT FILE
01006  M01S01005.ssmove  +++|*               (UI) = USER INDEX OF THIS FILE
01007  M01S01006.ssmove  +++|*
01008  M01S01007.ssmove  +++|*     EXIT.     (PO) = 0, IF THE FILE WAS NOT SPECIFIED BY A
01009  M01S01008.ssmove  +++|*                         *SF,FN=...* DIRECTIVE.
01010  M01S01009.ssmove  +++|*                    = Q, IF IT WAS SPECIFIED BY THE DIRECTIVE
01011  M01S01010.ssmove  +++|*                         *SF,FN,...PO=Q.*.
01012  M01S01011.ssmove  +++|#
01013  M01S01012.ssmove  +++|
01014  M01S01013.ssmove  +++|      ITEM FN         C(7);          # FILE NAME #
01015  M01S01014.ssmove  +++|      ITEM UI         I;             # USER INDEX #
01016  M01S01015.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
01017  M01S01016.ssmove  +++|
01018  M01S01017.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
01019  M01S01018.ssmove  +++|*CALL,COMBFAS
01020  M01S01019.ssmove  +++|*CALL,COMTMOV
01021  M01S01020.ssmove  +++|
01022  M01S01021.ssmove  +++|      ITEM I          I;             # LOOP INDEX #
01023  M01S01022.ssmove  +++|
01024  M01S01023.ssmove  +++|      ARRAY CKSFILES  [0:0]  S(3);   # CHECK FOR SPECIAL FILES #
01025  M01S01024.ssmove  +++|        BEGIN
01026  M01S01025.ssmove  +++|        ITEM CK$WRD1    U(00,00,60);  # WORD 1 #
01027  M01S01026.ssmove  +++|        ITEM CK$FN      C(00,00,07);  # FILE NAME #
01028  M01S01027.ssmove  +++|        ITEM CK$WRD2    U(01,00,60);  # WORD 2 #
01029  M01S01028.ssmove  +++|        ITEM CK$FNC     C(01,00,07);  # SELECTED FILE NAME #
01030  M01S01029.ssmove  +++|        ITEM CK$WRD3    U(02,00,60);  # WORD 3 #
01031  M01S01030.ssmove  +++|        ITEM CK$MASK    U(02,00,42);  # MASK FOR FILE NAME #
01032  M01S01031.ssmove  +++|        END
01033  M01S01032.ssmove  +++|
01034  M01S01033.ssmove  +++|                                               CONTROL EJECT;
01035  M01S01034.ssmove  +++|      PO = 0;
01036  M01S01035.ssmove  +++|
01037  M01S01036.ssmove  +++|      SLOWFOR I = 1 STEP 1 UNTIL IDXFN
01038  M01S01037.ssmove  +++|      DO
01039  M01S01038.ssmove  +++|        BEGIN  # SEARCH FOR FILE MATCH #
01040  M01S01039.ssmove  +++|        IF UI LS SF$UI[I]
01041  M01S01040.ssmove  +++|        THEN                         # NO MATCH #
01042  M01S01041.ssmove  +++|          BEGIN
01043  M01S01042.ssmove  +++|          RETURN;
01044  M01S01043.ssmove  +++|          END
01045  M01S01044.ssmove  +++|
01046  M01S01045.ssmove  +++|        IF UI GR SF$UI[I]
01047  M01S01046.ssmove  +++|        THEN
01048  M01S01047.ssmove  +++|          BEGIN
01049  M01S01048.ssmove  +++|          TEST I;
01050  M01S01049.ssmove  +++|          END
01051  M01S01050.ssmove  +++|
01052  M01S01051.ssmove  +++|        CK$FN[0] = FN;
01053  M01S01052.ssmove  +++|        CK$FNC[0] = SF$FNC[I];
01054  M01S01053.ssmove  +++|        CK$MASK[0] = SF$MASK[I];
01055  M01S01054.ssmove  +++|        IF ( (CK$FN[0] LXR CK$FNC[0])  # COMPARE FILE NAMES #
01056  M01S01055.ssmove  +++|          LAN CK$WRD3[0] )           # EXCLUDE WILD-CARD CHARACTERS #
01057  M01S01056.ssmove  +++|          EQ 0
01058  M01S01057.ssmove  +++|        THEN                         # FOUND A MATCH #
01059  M01S01058.ssmove  +++|          BEGIN
01060  M01S01059.ssmove  +++|          PO = SF$PO[I];
01061  M01S01060.ssmove  +++|          RETURN;
01062  M01S01061.ssmove  +++|          END
01063  M01S01062.ssmove  +++|
01064  M01S01063.ssmove  +++|        END  # SEARCH FOR FILE MATCH #
01065  M01S01064.ssmove  +++|
01066  M01S01065.ssmove  +++|      END  # MVCKSF #
01067  M01S01066.ssmove  +++|
01068  M01S01067.ssmove  +++|    TERM
01069  M01S01068.ssmove  +++|PROC MVDIR;
01070  M01S01069.ssmove  +++|# TITLE MVDIR - PROCESS DIRECTIVES .                                  #
01071  M01S01070.ssmove  +++|
01072  M01S01071.ssmove  +++|      BEGIN  # MVDIR #
01073  M01S01072.ssmove  +++|
01074  M01S01073.ssmove  +++|#
01075  M01S01074.ssmove  +++|**    THIS PROCEDURE PROCESSES THE DIRECTIVES.
01076  M01S01075.ssmove  +++|*
01077  M01S01076.ssmove  +++|*     PROC MVDIR.
01078  M01S01077.ssmove  +++|*
01079  M01S01078.ssmove  +++|*     MESSAGES. DIRECTIVE ERROR - REPORT ONLY.
01080  M01S01079.ssmove  +++|*
01081  M01S01080.ssmove  +++|*     NOTES.    THIS PROCEDURE READS EACH DIRECTIVE AND CHECKS
01082  M01S01081.ssmove  +++|*               THAT IT IS VALID.  IF IT IS NOT A VALID DIRECTIVE
01083  M01S01082.ssmove  +++|*               A MESSAGE IS ISSUED TO THE DAYFILE AND THE REPORT
01084  M01S01083.ssmove  +++|*               FILE.  *SSMOVE* THEN CONTINUES IN REPORT ONLY
01085  M01S01084.ssmove  +++|*               MODE.  FOR THE *FR*,*WM*,*WA*,*PR*,*BR*,
01086  M01S01085.ssmove  +++|*               AND *SM* DIRECTIVES THE DEFAULT VALUES ARE REPLACED
01087  M01S01086.ssmove  +++|*               WITH THE SPECIFIED VALUES.  THE DIRECTIVES AND
01088  M01S01087.ssmove  +++|*               RUN-TIME PARAMETER VALUES ARE WRITTEN TO THE REPORT
01089  M01S01088.ssmove  +++|*               FILE.
01090  M01S01089.ssmove  +++|#
01091  M01S01090.ssmove  +++|
01092  M01S01091.ssmove  +++|#
01093  M01S01092.ssmove  +++|****  PROC MVDIR - XREF LIST BEGIN.
01094  M01S01093.ssmove  +++|#
01095  M01S01094.ssmove  +++|
01096  M01S01095.ssmove  +++|      XREF
01097  M01S01096.ssmove  +++|        BEGIN
01098  M01S01097.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
01099  M01S01098.ssmove  +++|        PROC MESSAGE;                # DISPLAYS A MESSAGE IN DAYFILE #
01100  M01S01099.ssmove  +++|        PROC READ;                   # INITIATE INPUT TO A BUFFER #
01101  M01S01100.ssmove  +++|        PROC READC;                  # COPY LINE TO WORKING BUFFER #
01102  M01S01101.ssmove  +++|        PROC RPEJECT;                # PAGE EJECT #
01103  M01S01102.ssmove  +++|        PROC RPLINE;                 # WRITE LINE TO REPORT FILE #
01104  M01S01103.ssmove  +++|        PROC RPSPACE;                # WRITE BLANK LINE TO REPORT FILE
01105  M01S01104.ssmove  +++|                                     #
01106  M01S01105.ssmove  +++|        PROC XARG;                   # DECODE PARAMETERS PER *ARG*
01107  M01S01106.ssmove  +++|                                       TABLE #
01108  M01S01107.ssmove  +++|        PROC ZFILL;                  # ZERO OUT AN ARRAY #
01109  M01S01108.ssmove  +++|        PROC ZSETFET;                # INITIALIZE A FET #
01110  M01S01109.ssmove  +++|        FUNC XCDD C(10);             # CONVERT BINARY TO DECIMAL #
01111  M01S01110.ssmove  +++|        FUNC XDXB I;                 # CONVERT DISPLAY TO BINARY #
01112  M01S01111.ssmove  +++|        END
01113  M01S01112.ssmove  +++|
01114  M01S01113.ssmove  +++|#
01115  M01S01114.ssmove  +++|****  PROC MVDIR - XREF LIST END.
01116  M01S01115.ssmove  +++|#
01117  M01S01116.ssmove  +++|
01118  M01S01117.ssmove  +++|      DEF MSK77   #O"77"#;           # MASK #
01119  M01S01118.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
01120  M01S01119.ssmove  +++|
01121  M01S01120.ssmove  +++|                                               CONTROL PRESET;
01122  M01S01121.ssmove  +++|*CALL,COMBFAS
01123  M01S01122.ssmove  +++|*CALL COMBSIT
01124  M01S01123.ssmove  +++|*CALL,COMBBZF
01125  M01S01124.ssmove  +++|*CALL,COMSPFM
01126  M01S01125.ssmove  +++|*CALL,COMTMOV
01127  M01S01126.ssmove  +++|*CALL,COMTMVD
01128  M01S01127.ssmove  +++|*CALL,COMTMVP
01129  M01S01128.ssmove  +++|*CALL,COMTOUT
01130  M01S01129.ssmove  +++|
01131  M01S01130.ssmove  +++|      ITEM ARGLIST    I;             # ARGUMENT LIST ADDRESS #
01132  M01S01131.ssmove  +++|      ITEM COL        I;             # COLUMN NUMBER #
01133  M01S01132.ssmove  +++|      ITEM DIRLINE    C(90);         # DIRECTIVE TEXT LINE #
01134  M01S01133.ssmove  +++|      ITEM DIRNUM     I;             # DIRECTIVE NUMBER #
01135  M01S01134.ssmove  +++|      ITEM EOR        B;             # END-OF-RECORD FLAG #
01136  M01S01135.ssmove  +++|      ITEM FATALERR   B;             # FATAL ERROR, IF TRUE #
01137  M01S01136.ssmove  +++|      ITEM FOUND      B;             # LOOP EXIT CONTROL #
01138  M01S01137.ssmove  +++|      ITEM I          I;             # LOOP INDEX #
01139  M01S01138.ssmove  +++|      ITEM J          I;             # LOOP INDEX #
01140  M01S01139.ssmove  +++|      ITEM K          I;             # LOOP INDEX #
01141  M01S01140.ssmove  +++|      ITEM KEY        C(2);          # DIRECTIVE KEYWORD #
01142  M01S01141.ssmove  +++|      ITEM KEYOK      B;             # CONTROL VARIABLE #
01143  M01S01142.ssmove  +++|      ITEM L          I;             # LOOP INDEX #
01144  M01S01143.ssmove  +++|      ITEM LFN        C(7);          # FILE NAME #
01145  M01S01144.ssmove  +++|      ITEM MASK       I;             # MASK FOR SPECIAL FILE NAMES #
01146  M01S01145.ssmove  +++|      ITEM MAXARG     I;             # MAXIMUM NUMBER OF ARGUMENTS #
01147  M01S01146.ssmove  +++|      ITEM STAT       I;             # STATUS OF PROCEDURE CALL #
01148  M01S01147.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY INTEGER #
01149  M01S01148.ssmove  +++|
01150  M01S01149.ssmove  +++|
01151  M01S01150.ssmove  +++|      ARRAY SFDEF [1:SFMX] S(1);
01152  M01S01151.ssmove  +++|        BEGIN
01153  M01S01152.ssmove  +++|        ITEM SFD$I      I(00,00,60);  # DEFAULT VALUES FOR *SF*
01154  M01S01153.ssmove  +++|                                        DIRECTIVE #
01155  M01S01154.ssmove  +++|        END
01156  M01S01155.ssmove  +++|
01157  M01S01156.ssmove  +++|      BASED
01158  M01S01157.ssmove  +++|      ARRAY PARM [1:2,1:2,1:1] S(1);
01159  M01S01158.ssmove  +++|        BEGIN
01160  M01S01159.ssmove  +++|        ITEM PARM$V     U(00,00,60);  # PARAMETER VALUE #
01161  M01S01160.ssmove  +++|        END
01162  M01S01161.ssmove  +++|
01163  M01S01162.ssmove  +++|      BASED
01164  M01S01163.ssmove  +++|      ARRAY XXARG[1:1] S(1);
01165  M01S01164.ssmove  +++|        BEGIN
01166  M01S01165.ssmove  +++|        ITEM XX$KEY     C(00,00,02);  # PARAMETER KEY #
01167  M01S01166.ssmove  +++|        ITEM XX$C2      C(00,06,01);  # SECOND CHARACTER OF KEY #
01168  M01S01167.ssmove  +++|        END
01169  M01S01168.ssmove  +++|
01170  M01S01169.ssmove  +++|      BASED
01171  M01S01170.ssmove  +++|      ARRAY SFPARM [1:1] S(1);
01172  M01S01171.ssmove  +++|        BEGIN
01173  M01S01172.ssmove  +++|        ITEM SF$C       C(00,00,10);  # *SF* PARAMETER (CHARACTER) #
01174  M01S01173.ssmove  +++|        ITEM SF$I       I(00,00,60);  # *SF* PARAMETER (INTEGER) #
01175  M01S01174.ssmove  +++|        END
01176  M01S01175.ssmove  +++|
01177  M01S01176.ssmove  +++|      ARRAY SFTMP [0:0] S(1);
01178  M01S01177.ssmove  +++|        BEGIN
01179  M01S01178.ssmove  +++|        ITEM SFT$VAL    U(00,00,60);  # ENTIRE WORD #
01180  M01S01179.ssmove  +++|        ITEM SFT$UI     U(00,00,18);  # USER INDEX #
01181  M01S01180.ssmove  +++|        ITEM SFT$FNC    C(00,18,07);  # FILE NAME #
01182  M01S01181.ssmove  +++|        ITEM SFT$FNI    I(00,18,42);  # FILE NAME #
01183  M01S01182.ssmove  +++|        END
01184  M01S01183.ssmove  +++|
01185  M01S01184.ssmove  +++|      BASED
01186  M01S01185.ssmove  +++|      ARRAY ZR [0:0];;               # ARRAY TO BE ZEROED #
01187  M01S01186.ssmove  +++|
01188  M01S01187.ssmove  +++|
01189  M01S01188.ssmove  +++|      ITEM ADDR       U;             # PARAMETER LIST ADDRESS #
01190  M01S01189.ssmove  +++|
01191  M01S01190.ssmove  +++|
01192  M01S01191.ssmove  +++|      ARRAY LU [1:2] P(2);
01193  M01S01192.ssmove  +++|        BEGIN
01194  M01S01193.ssmove  +++|        ITEM LL         I(00,00,60);  # LOWER LIMIT #
01195  M01S01194.ssmove  +++|        ITEM UL         I(01,00,60);  # UPPER LIMIT #
01196  M01S01195.ssmove  +++|        END
01197  M01S01196.ssmove  +++|
01198  M01S01197.ssmove  +++|      BASED
01199  M01S01198.ssmove  +++|      ARRAY TQ[1:1] S(1);
01200  M01S01199.ssmove  +++|        BEGIN
01201  M01S01200.ssmove  +++|        ITEM TQ$VAL     I(00,00,60);  # DIRECTIVE PARAMETERS #
01202  M01S01201.ssmove  +++|        END
01203  M01S01202.ssmove  +++|
01204  M01S01203.ssmove  +++|      BASED
01205  M01S01204.ssmove  +++|      ARRAY KWTEXT[1:1] S(2);
01206  M01S01205.ssmove  +++|        BEGIN
01207  M01S01206.ssmove  +++|        ITEM KW$TEXT    C(00,00,20);  # TEXT FOR DIRECTIVE KEYWORD #
01208  M01S01207.ssmove  +++|        END
01209  M01S01208.ssmove  +++|
01210  M01S01209.ssmove  +++|
01211  M01S01210.ssmove  +++|
01212  M01S01211.ssmove  +++|                                               CONTROL EJECT;
01213  M01S01212.ssmove  +++|      P<TQ> = ARG$TAB[0];
01214  M01S01213.ssmove  +++|
01215  M01S01214.ssmove  +++|#
01216  M01S01215.ssmove  +++|*     INITIALIZE TO READ THE DIRECTIVE FILE.
01217  M01S01216.ssmove  +++|#
01218  M01S01217.ssmove  +++|
01219  M01S01218.ssmove  +++|      IF MVARG$I[0] NQ 0
01220  M01S01219.ssmove  +++|      THEN
01221  M01S01220.ssmove  +++|        BEGIN
01222  M01S01221.ssmove  +++|        IDXFN = 0;
01223  M01S01222.ssmove  +++|        LFN = MVARG$I[0];
01224  M01S01223.ssmove  +++|        FETP = LOC(MV$FET[FILEMI]);
01225  M01S01224.ssmove  +++|        BUFP = LOC(MV$BUF[FILEMI]);
01226  M01S01225.ssmove  +++|        ZSETFET(FETP,LFN,BUFP,MVBUFL,SFETL);
01227  M01S01226.ssmove  +++|        READ(MV$FET[FILEMI],NRCL);
01228  M01S01227.ssmove  +++|        EOR = FALSE;
01229  M01S01228.ssmove  +++|        END
01230  M01S01229.ssmove  +++|
01231  M01S01230.ssmove  +++|      ELSE                           # NO DIRECTIVE FILE #
01232  M01S01231.ssmove  +++|        BEGIN
01233  M01S01232.ssmove  +++|        EOR = TRUE;
01234  M01S01233.ssmove  +++|        END
01235  M01S01234.ssmove  +++|
01236  M01S01235.ssmove  +++|#
01237  M01S01236.ssmove  +++|*     READ AND PROCESS EACH DIRECTIVE.  ISSUE A NON-FATAL
01238  M01S01237.ssmove  +++|*     ERROR MESSAGE FOR ANY DIRECTIVE ERRORS.
01239  M01S01238.ssmove  +++|#
01240  M01S01239.ssmove  +++|
01241  M01S01240.ssmove  +++|      FOR DIRNUM = 1 STEP 1 WHILE NOT EOR
01242  M01S01241.ssmove  +++|      DO
01243  M01S01242.ssmove  +++|        BEGIN  # PROCESS NEXT DIRECTIVE #
01244  M01S01243.ssmove  +++|        DIRLINE = " ";               # ERASE PREVIOUS DIRECTIVE #
01245  M01S01244.ssmove  +++|        READC(MV$FET[FILEMI],DIRLINE,9,STAT);
01246  M01S01245.ssmove  +++|        BZFILL(DIRLINE,TYPFILL"BFILL",90);
01247  M01S01246.ssmove  +++|        C<89,1>DIRLINE = ".";        # FORCE DIRECTIVE TERMINATOR #
01248  M01S01247.ssmove  +++|        IF STAT NQ 0
01249  M01S01248.ssmove  +++|        THEN
01250  M01S01249.ssmove  +++|          BEGIN
01251  M01S01250.ssmove  +++|          EOR = TRUE;
01252  M01S01251.ssmove  +++|          TEST DIRNUM;
01253  M01S01252.ssmove  +++|          END
01254  M01S01253.ssmove  +++|
01255  M01S01254.ssmove  +++|        CHR$10[0] = XCDD(DIRNUM);
01256  M01S01255.ssmove  +++|        RPLINE(OUT$FETP,CHR$R3[0],3,3,1);  # PRINT DIRECTIVE NUMBER #
01257  M01S01256.ssmove  +++|        RPLINE(OUT$FETP,DIRLINE,8,80,0);  # PRINT DIRECTIVE #
01258  M01S01257.ssmove  +++|
01259  M01S01258.ssmove  +++|        IF C<0,1>DIRLINE EQ "*"
01260  M01S01259.ssmove  +++|        THEN                         # FOUND COMMENT #
01261  M01S01260.ssmove  +++|          BEGIN
01262  M01S01261.ssmove  +++|          TEST DIRNUM;
01263  M01S01262.ssmove  +++|          END
01264  M01S01263.ssmove  +++|
01265  M01S01264.ssmove  +++|
01266  M01S01265.ssmove  +++|#
01267  M01S01266.ssmove  +++|*     VERIFY DIRECTIVE KEYWORD IS OK.
01268  M01S01267.ssmove  +++|*     LOCATE *ARGLIST* FOR THIS DIRECTIVE.
01269  M01S01268.ssmove  +++|#
01270  M01S01269.ssmove  +++|
01271  M01S01270.ssmove  +++|        KEY = C<0,2>DIRLINE;
01272  M01S01271.ssmove  +++|        KEYOK = FALSE;
01273  M01S01272.ssmove  +++|        FOR I = 1 STEP 1 WHILE (NOT KEYOK) AND (I LQ NUMDIR)
01274  M01S01273.ssmove  +++|        DO
01275  M01S01274.ssmove  +++|          BEGIN
01276  M01S01275.ssmove  +++|          IF ARG$KEY[I] NQ KEY
01277  M01S01276.ssmove  +++|          THEN
01278  M01S01277.ssmove  +++|            BEGIN
01279  M01S01278.ssmove  +++|            TEST I;
01280  M01S01279.ssmove  +++|            END
01281  M01S01280.ssmove  +++|
01282  M01S01281.ssmove  +++|          KEYOK = TRUE;
01283  M01S01282.ssmove  +++|          MAXARG = ARG$MX[I];
01284  M01S01283.ssmove  +++|          ADDR = ARG$VAL[I];
01285  M01S01284.ssmove  +++|          ARGLIST = ARG$TAB[I];
01286  M01S01285.ssmove  +++|          END
01287  M01S01286.ssmove  +++|
01288  M01S01287.ssmove  +++|#
01289  M01S01288.ssmove  +++|*     IF A DIRECTIVE ERROR OR DIRECTIVE PARAMETER ERROR EXISTS
01290  M01S01289.ssmove  +++|*     IGNORE THIS DIRECTIVE.
01291  M01S01290.ssmove  +++|#
01292  M01S01291.ssmove  +++|
01293  M01S01292.ssmove  +++|        IF NOT KEYOK
01294  M01S01293.ssmove  +++|        THEN                         # DIRECTIVE ERROR #
01295  M01S01294.ssmove  +++|          BEGIN
01296  M01S01295.ssmove  +++|          RPLINE(OUT$FETP,"** UNRECOGNIZED DIRECTIVE - IGNORED.",8,36
01297  M01S01296.ssmove  +++|            ,0);
01298  M01S01297.ssmove  +++|          RPSPACE(OUT$FETP,SP"SPACE",1);
01299  M01S01298.ssmove  +++|          FATALERR = TRUE;
01300  M01S01299.ssmove  +++|          TEST DIRNUM;
01301  M01S01300.ssmove  +++|          END
01302  M01S01301.ssmove  +++|
01303  M01S01302.ssmove  +++|#
01304  M01S01303.ssmove  +++|*     CRACK PARAMETERS FOR THE DIRECTIVE AND SAVE THEM APPROPRIATELY.
01305  M01S01304.ssmove  +++|#
01306  M01S01305.ssmove  +++|
01307  M01S01306.ssmove  +++|        P<ZR> = ARG$TAB[0];
01308  M01S01307.ssmove  +++|        ZFILL(ZR[0],ARG$MX[0]);
01309  M01S01308.ssmove  +++|        XARG(ARGLIST,DIRLINE,STAT);
01310  M01S01309.ssmove  +++|        IF STAT NQ 0
01311  M01S01310.ssmove  +++|        THEN                         # DIRECTIVE PARAMETER ERROR #
01312  M01S01311.ssmove  +++|          BEGIN
01313  M01S01312.ssmove  +++|          RPLINE(OUT$FETP,"PARAM ERROR - DIRECTIVE IGNORED",12,31,0);
01314  M01S01313.ssmove  +++|          RPSPACE(OUT$FETP,SP"SPACE",1);
01315  M01S01314.ssmove  +++|          FATALERR = TRUE;
01316  M01S01315.ssmove  +++|          TEST DIRNUM;
01317  M01S01316.ssmove  +++|          END
01318  M01S01317.ssmove  +++|
01319  M01S01318.ssmove  +++|                                               CONTROL EJECT;
01320  M01S01319.ssmove  +++|
01321  M01S01320.ssmove  +++|#
01322  M01S01321.ssmove  +++|**    PROCESS THE *PR*, *BR*, *FR*, *WA*, *WM*, *SM* DIRECTIVES
01323  M01S01322.ssmove  +++|*     BY REPLACING DEFAULT VALUES WITH SPECIFIED VALUES.
01324  M01S01323.ssmove  +++|#
01325  M01S01324.ssmove  +++|
01326  M01S01325.ssmove  +++|        IF KEY NQ "SF"
01327  M01S01326.ssmove  +++|        THEN
01328  M01S01327.ssmove  +++|          BEGIN
01329  M01S01328.ssmove  +++|          FOR I = 1 STEP 1 UNTIL 2
01330  M01S01329.ssmove  +++|          DO
01331  M01S01330.ssmove  +++|            BEGIN  # ESTABLISH LIMITS PER *TQ* #
01332  M01S01331.ssmove  +++|            LL[I] = 1;
01333  M01S01332.ssmove  +++|            UL[I] = 2;
01334  M01S01333.ssmove  +++|            IF TQ$VAL[2*I-1] NQ TQ$VAL[2*I]
01335  M01S01334.ssmove  +++|            THEN
01336  M01S01335.ssmove  +++|              BEGIN  # NOT 1,2 #
01337  M01S01336.ssmove  +++|              IF TQ$VAL[2*I-1] NQ 0
01338  M01S01337.ssmove  +++|              THEN
01339  M01S01338.ssmove  +++|                BEGIN
01340  M01S01339.ssmove  +++|                LL[I] = 2;
01341  M01S01340.ssmove  +++|                END
01342  M01S01341.ssmove  +++|
01343  M01S01342.ssmove  +++|              ELSE
01344  M01S01343.ssmove  +++|                BEGIN
01345  M01S01344.ssmove  +++|                UL[I] = 1;
01346  M01S01345.ssmove  +++|                END
01347  M01S01346.ssmove  +++|
01348  M01S01347.ssmove  +++|              END  # NOT 1,2 #
01349  M01S01348.ssmove  +++|
01350  M01S01349.ssmove  +++|            END  # ESTABLISH LIMITS PER *TQ* #
01351  M01S01350.ssmove  +++|
01352  M01S01351.ssmove  +++|          STAT = 0;
01353  M01S01352.ssmove  +++|          P<PARM> = ADDR;
01354  M01S01353.ssmove  +++|          FOR I = 1 STEP 1 UNTIL MAXARG
01355  M01S01354.ssmove  +++|          DO
01356  M01S01355.ssmove  +++|            BEGIN
01357  M01S01356.ssmove  +++|            IF TQ$VAL[I+5] EQ 0
01358  M01S01357.ssmove  +++|            THEN
01359  M01S01358.ssmove  +++|              BEGIN
01360  M01S01359.ssmove  +++|              TEST I;
01361  M01S01360.ssmove  +++|              END
01362  M01S01361.ssmove  +++|
01363  M01S01362.ssmove  +++|            STAT = XDXB(TQ$VAL[I+5],1,TMPI);
01364  M01S01363.ssmove  +++|            IF STAT NQ 0
01365  M01S01364.ssmove  +++|            THEN
01366  M01S01365.ssmove  +++|              BEGIN
01367  M01S01366.ssmove  +++|              RPLINE(OUT$FETP,"INCORRECT VALUE - DIRECTIVE IGNORED."
01368  M01S01367.ssmove  +++|                ,8,35,0);
01369  M01S01368.ssmove  +++|              FATALERR = TRUE;
01370  M01S01369.ssmove  +++|              TEST I;
01371  M01S01370.ssmove  +++|              END
01372  M01S01371.ssmove  +++|
01373  M01S01372.ssmove  +++|            FOR J = LL[1] STEP 1 UNTIL UL[1]
01374  M01S01373.ssmove  +++|            DO
01375  M01S01374.ssmove  +++|              BEGIN  # J #
01376  M01S01375.ssmove  +++|              FOR K = LL[2] STEP 1 UNTIL UL[2]
01377  M01S01376.ssmove  +++|              DO
01378  M01S01377.ssmove  +++|                BEGIN  # K #
01379  M01S01378.ssmove  +++|                PARM$V[J,K,I] = TMPI;
01380  M01S01379.ssmove  +++|                END
01381  M01S01380.ssmove  +++|
01382  M01S01381.ssmove  +++|              END  # J #
01383  M01S01382.ssmove  +++|
01384  M01S01383.ssmove  +++|            END  # I #
01385  M01S01384.ssmove  +++|
01386  M01S01385.ssmove  +++|          TEST DIRNUM;
01387  M01S01386.ssmove  +++|          END
01388  M01S01387.ssmove  +++|
01389  M01S01388.ssmove  +++|#
01390  M01S01389.ssmove  +++|**    PROCESS THE *SF* DIRECTIVE WITHOUT THE *FN* PARAMETER
01391  M01S01390.ssmove  +++|*     BY SAVING THE OTHER PARAMETERS AS DEFAULTS FOR USE WHEN
01392  M01S01391.ssmove  +++|*     THE *FN* PARAMETER IS PROVIDED.
01393  M01S01392.ssmove  +++|#
01394  M01S01393.ssmove  +++|
01395  M01S01394.ssmove  +++|        P<SFPARM> = ARG$VAL[0];
01396  M01S01395.ssmove  +++|        IF SF$I[SFFN] EQ 0
01397  M01S01396.ssmove  +++|        THEN
01398  M01S01397.ssmove  +++|          BEGIN  # ESTABLISH *SF* DEFAULTS #
01399  M01S01398.ssmove  +++|          FOR I = 1 STEP 1 UNTIL SFMX
01400  M01S01399.ssmove  +++|          DO
01401  M01S01400.ssmove  +++|            BEGIN
01402  M01S01401.ssmove  +++|            IF SF$I[I] NQ 0
01403  M01S01402.ssmove  +++|            THEN
01404  M01S01403.ssmove  +++|              BEGIN
01405  M01S01404.ssmove  +++|              SFD$I[I] = SF$I[I];
01406  M01S01405.ssmove  +++|              END
01407  M01S01406.ssmove  +++|
01408  M01S01407.ssmove  +++|            END
01409  M01S01408.ssmove  +++|
01410  M01S01409.ssmove  +++|          TEST DIRNUM;
01411  M01S01410.ssmove  +++|          END  # ESTABLISH *SF* DEFAULTS #
01412  M01S01411.ssmove  +++|
01413  M01S01412.ssmove  +++|#
01414  M01S01413.ssmove  +++|**    PROCESS THE *SF* DIRECTIVE HAVING THE *FN* PARAMETER AS FOLLOWS..
01415  M01S01414.ssmove  +++|*       1)  SUBSTITUTE THE DEFAULT PARAMETERS FOR ANY MISSING
01416  M01S01415.ssmove  +++|*           PARAMETER.  DECLARE AN ERROR IF EITHER THE *UI* OR
01417  M01S01416.ssmove  +++|*           *PO* PARAMETER IS MISSING.
01418  M01S01417.ssmove  +++|*
01419  M01S01418.ssmove  +++|*       2)  IGNORE DIRECTIVE IF THE *UI* OR *PO* PARAMETER IS INVALID.
01420  M01S01419.ssmove  +++|*
01421  M01S01420.ssmove  +++|*       3)  SAVE THE *FN*, *UI*, *PO* VALUES AND THE FILE MASK IN THE
01422  M01S01421.ssmove  +++|*           ARRAY OF SELECTED FILES.
01423  M01S01422.ssmove  +++|#
01424  M01S01423.ssmove  +++|
01425  M01S01424.ssmove  +++|        KEYOK = TRUE;
01426  M01S01425.ssmove  +++|        FOR I = SFUI STEP 1 UNTIL SFPO
01427  M01S01426.ssmove  +++|        DO
01428  M01S01427.ssmove  +++|          BEGIN  # STEP 1 #
01429  M01S01428.ssmove  +++|          IF SF$I[I] EQ 0
01430  M01S01429.ssmove  +++|          THEN
01431  M01S01430.ssmove  +++|            BEGIN
01432  M01S01431.ssmove  +++|            SF$I[I] = SFD$I[I];
01433  M01S01432.ssmove  +++|            END
01434  M01S01433.ssmove  +++|
01435  M01S01434.ssmove  +++|          IF SF$I[I] EQ 0
01436  M01S01435.ssmove  +++|          THEN
01437  M01S01436.ssmove  +++|            BEGIN
01438  M01S01437.ssmove  +++|            KEYOK = FALSE;
01439  M01S01438.ssmove  +++|            END
01440  M01S01439.ssmove  +++|
01441  M01S01440.ssmove  +++|          END  # STEP 1 #
01442  M01S01441.ssmove  +++|
01443  M01S01442.ssmove  +++|        STAT = XDXB(SF$C[SFUI],0,TMPI);
01444  M01S01443.ssmove  +++|        KEYOK = KEYOK AND (STAT EQ 0) AND  ##
01445  M01S01444.ssmove  +++|          (TMPI GR 0) AND (TMPI LQ SYS$UI);
01446  M01S01445.ssmove  +++|        SFT$UI[0] = TMPI;
01447  M01S01446.ssmove  +++|        KEY = C<0,1>SF$C[SFPO];
01448  M01S01447.ssmove  +++|        IF KEY NQ "A" AND KEY NQ "B" AND KEY NQ "S"  ##
01449  M01S01448.ssmove  +++|          AND KEY NQ "F" AND KEY NQ "X"
01450  M01S01449.ssmove  +++|        THEN
01451  M01S01450.ssmove  +++|          BEGIN
01452  M01S01451.ssmove  +++|          KEYOK = FALSE;
01453  M01S01452.ssmove  +++|          END
01454  M01S01453.ssmove  +++|
01455  M01S01454.ssmove  +++|        IF NOT KEYOK
01456  M01S01455.ssmove  +++|        THEN
01457  M01S01456.ssmove  +++|          BEGIN
01458  M01S01457.ssmove  +++|          RPLINE(OUT$FETP,"*PO* OR *UI* PARAMETER MISSING OR INVALID"
01459  M01S01458.ssmove  +++|            ,8,41,0);
01460  M01S01459.ssmove  +++|          FATALERR = TRUE;
01461  M01S01460.ssmove  +++|          TEST DIRNUM;
01462  M01S01461.ssmove  +++|          END
01463  M01S01462.ssmove  +++|
01464  M01S01463.ssmove  +++|        IF IDXFN EQ MXSPF
01465  M01S01464.ssmove  +++|        THEN
01466  M01S01465.ssmove  +++|          BEGIN
01467  M01S01466.ssmove  +++|          RPLINE(OUT$FETP,"TOO MANY FILES SPECIFIED - EXCESS IGNORED."
01468  M01S01467.ssmove  +++|            ,8,42,0);
01469  M01S01468.ssmove  +++|          RPSPACE(OUT$FETP,SP"SPACE",1);
01470  M01S01469.ssmove  +++|          END
01471  M01S01470.ssmove  +++|
01472  M01S01471.ssmove  +++|        IDXFN = IDXFN+1;
01473  M01S01472.ssmove  +++|        IF IDXFN GR MXSPF
01474  M01S01473.ssmove  +++|        THEN
01475  M01S01474.ssmove  +++|          BEGIN
01476  M01S01475.ssmove  +++|          TEST DIRNUM;
01477  M01S01476.ssmove  +++|          END
01478  M01S01477.ssmove  +++|
01479  M01S01478.ssmove  +++|        SFT$FNC[0] = SF$C[SFFN];
01480  M01S01479.ssmove  +++|        MASK = -1;
01481  M01S01480.ssmove  +++|        FOR I = 0 STEP 1 UNTIL 6
01482  M01S01481.ssmove  +++|        DO
01483  M01S01482.ssmove  +++|          BEGIN  # FIND ASTERISKS IN FILE NAME #
01484  M01S01483.ssmove  +++|          IF C<I,1>SFT$FNC[0] NQ "*"
01485  M01S01484.ssmove  +++|          THEN
01486  M01S01485.ssmove  +++|            BEGIN
01487  M01S01486.ssmove  +++|            TEST I;
01488  M01S01487.ssmove  +++|            END
01489  M01S01488.ssmove  +++|
01490  M01S01489.ssmove  +++|          C<I,1>SFT$FNC[0] = MSK77;
01491  M01S01490.ssmove  +++|          C<I,1>MASK = 0;
01492  M01S01491.ssmove  +++|          END  # FIND ASTERISKS #
01493  M01S01492.ssmove  +++|
01494  M01S01493.ssmove  +++|#
01495  M01S01494.ssmove  +++|*     INSERT THE FILE PARAMETERS AND MASK INTO THE ARRAY
01496  M01S01495.ssmove  +++|*     SUCH THAT THE USER INDEX AND FILE NAME ARE IN ASCENDING ORDER.
01497  M01S01496.ssmove  +++|#
01498  M01S01497.ssmove  +++|
01499  M01S01498.ssmove  +++|        FOUND = FALSE;
01500  M01S01499.ssmove  +++|        SLOWFOR I = IDXFN STEP -1 WHILE (NOT FOUND)
01501  M01S01500.ssmove  +++|        DO
01502  M01S01501.ssmove  +++|          BEGIN
01503  M01S01502.ssmove  +++|          IF (SFT$VAL[0] LS SF$W1[I-1]) AND (I GR 1)
01504  M01S01503.ssmove  +++|          THEN
01505  M01S01504.ssmove  +++|            BEGIN
01506  M01S01505.ssmove  +++|            SF$W1[I] = SF$W1[I-1];
01507  M01S01506.ssmove  +++|            SF$W2[I] = SF$W2[I-1];
01508  M01S01507.ssmove  +++|            TEST I;
01509  M01S01508.ssmove  +++|            END
01510  M01S01509.ssmove  +++|
01511  M01S01510.ssmove  +++|          ELSE
01512  M01S01511.ssmove  +++|            BEGIN
01513  M01S01512.ssmove  +++|            FOUND = TRUE;
01514  M01S01513.ssmove  +++|            SF$W1[I] = SFT$VAL[0];
01515  M01S01514.ssmove  +++|            SF$PO[I] = KEY;
01516  M01S01515.ssmove  +++|            SF$MASK[I] = B<0,42>MASK;
01517  M01S01516.ssmove  +++|            END
01518  M01S01517.ssmove  +++|
01519  M01S01518.ssmove  +++|          END
01520  M01S01519.ssmove  +++|
01521  M01S01520.ssmove  +++|        TEST DIRNUM;
01522  M01S01521.ssmove  +++|        END  # DIRECTIVE PROCESSING #
01523  M01S01522.ssmove  +++|
01524  M01S01523.ssmove  +++|#
01525  M01S01524.ssmove  +++|*     IF A FATAL DIRECTIVE ERROR OR DIRECTIVE PARAMETER ERROR
01526  M01S01525.ssmove  +++|*     HAS OCCURRED THEN ISSUE A DAYFILE MESSAGE AND CONTINUE
01527  M01S01526.ssmove  +++|*     IN REPORT ONLY MODE.
01528  M01S01527.ssmove  +++|#
01529  M01S01528.ssmove  +++|
01530  M01S01529.ssmove  +++|      IF FATALERR
01531  M01S01530.ssmove  +++|      THEN
01532  M01S01531.ssmove  +++|        BEGIN
01533  M01S01532.ssmove  +++|        MVMSG$LN[0] = " DIRECTIVE ERROR - REPORT ONLY.";
01534  M01S01533.ssmove  +++|        MESSAGE(MVMSG[0],UDFL1);
01535  M01S01534.ssmove  +++|        PX$A[0] = TRUE;
01536  M01S01535.ssmove  +++|        PX$B[0] = TRUE;
01537  M01S01536.ssmove  +++|        PX$F[0] = TRUE;
01538  M01S01537.ssmove  +++|        PX$S[0] = TRUE;
01539  M01S01538.ssmove  +++|        END
01540  M01S01539.ssmove  +++|
01541  M01S01540.ssmove  +++|#
01542  M01S01541.ssmove  +++|*     WRITE RESULTANT VALUES OF RUN-TIME PARAMETERS.
01543  M01S01542.ssmove  +++|#
01544  M01S01543.ssmove  +++|
01545  M01S01544.ssmove  +++|
01546  M01S01545.ssmove  +++|#
01547  M01S01546.ssmove  +++|*      WRITE HEADER.
01548  M01S01547.ssmove  +++|#
01549  M01S01548.ssmove  +++|
01550  M01S01549.ssmove  +++|      RPEJECT(OUT$FETP);
01551  M01S01550.ssmove  +++|
01552  M01S01551.ssmove  +++|      RPLINE(OUT$FETP,               ##
01553  M01S01552.ssmove  +++|        "RUN-TIME PARAMETER VALUES    ",  ##
01554  M01S01553.ssmove  +++|        17,27,0);
01555  M01S01554.ssmove  +++|
01556  M01S01555.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
01557  M01S01556.ssmove  +++|
01558  M01S01557.ssmove  +++|      RPLINE(OUT$FETP,               ##
01559  M01S01558.ssmove  +++|        "   * D E S T A G E *     * R E L E A S E *",  ##
01560  M01S01559.ssmove  +++|        15,42,0);
01561  M01S01560.ssmove  +++|
01562  M01S01561.ssmove  +++|      RPLINE(OUT$FETP,               ##
01563  M01S01562.ssmove  +++|        "   DIRECT   INDIRECT     DIRECT   INDIRECT",  ##
01564  M01S01563.ssmove  +++|        15,42,0);
01565  M01S01564.ssmove  +++|
01566  M01S01565.ssmove  +++|
01567  M01S01566.ssmove  +++|#
01568  M01S01567.ssmove  +++|*     WRITE PARAMETER VALUES
01569  M01S01568.ssmove  +++|#
01570  M01S01569.ssmove  +++|
01571  M01S01570.ssmove  +++|      FOR I = 2 STEP 1 UNTIL NUMDIR
01572  M01S01571.ssmove  +++|      DO
01573  M01S01572.ssmove  +++|        BEGIN  # I #
01574  M01S01573.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",2);
01575  M01S01574.ssmove  +++|        P<KWTEXT> = ARG$TEXT[I];
01576  M01S01575.ssmove  +++|        RPLINE(OUT$FETP,KWTEXT[1],3,20,0);
01577  M01S01576.ssmove  +++|
01578  M01S01577.ssmove  +++|        KEY = ARG$KEY[I];
01579  M01S01578.ssmove  +++|        P<XXARG> = ARG$TAB[I]+5;
01580  M01S01579.ssmove  +++|        P<PARM> = ARG$VAL[I];
01581  M01S01580.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
01582  M01S01581.ssmove  +++|        RPLINE(OUT$FETP,KEY,8,2,1);  # PRINT DIRECTIVE KEY #
01583  M01S01582.ssmove  +++|
01584  M01S01583.ssmove  +++|        FOR J = 1 STEP 1 UNTIL ARG$MX[I]
01585  M01S01584.ssmove  +++|        DO
01586  M01S01585.ssmove  +++|          BEGIN  # J #
01587  M01S01586.ssmove  +++|          KEY = XX$KEY[J];
01588  M01S01587.ssmove  +++|          IF XX$C2[J] EQ 0
01589  M01S01588.ssmove  +++|          THEN                       # SPACE FILL KEY #
01590  M01S01589.ssmove  +++|            BEGIN
01591  M01S01590.ssmove  +++|            C<1,1>KEY = " ";
01592  M01S01591.ssmove  +++|            END
01593  M01S01592.ssmove  +++|
01594  M01S01593.ssmove  +++|          COL = 16;                  # STARTING COLUMN FOR PARAMETER
01595  M01S01594.ssmove  +++|                                       VALUES #
01596  M01S01595.ssmove  +++|          FOR K = 1 STEP 1 UNTIL 2
01597  M01S01596.ssmove  +++|          DO
01598  M01S01597.ssmove  +++|            BEGIN  # K #
01599  M01S01598.ssmove  +++|            FOR L = 1 STEP 1 UNTIL 2
01600  M01S01599.ssmove  +++|            DO
01601  M01S01600.ssmove  +++|              BEGIN  # L #
01602  M01S01601.ssmove  +++|              TMPI = PARM$V[L,K,J];
01603  M01S01602.ssmove  +++|              CHR$10[0] = XCDD(TMPI);  # CONVERT VALUE TO DECIMAL #
01604  M01S01603.ssmove  +++|              RPLINE(OUT$FETP,CHR$R8[0],COL,8,1);  # PRINT VALUE #
01605  M01S01604.ssmove  +++|              COL = COL + 11;        # MOVE TO NEXT COLUMN #
01606  M01S01605.ssmove  +++|              END  # L #
01607  M01S01606.ssmove  +++|
01608  M01S01607.ssmove  +++|            END  # K #
01609  M01S01608.ssmove  +++|
01610  M01S01609.ssmove  +++|          RPLINE(OUT$FETP,KEY,12,2,0);  # PRINT PARAM KEY AND VALUES #
01611  M01S01610.ssmove  +++|          END  # J #
01612  M01S01611.ssmove  +++|
01613  M01S01612.ssmove  +++|        END  # I #
01614  M01S01613.ssmove  +++|
01615  M01S01614.ssmove  +++|      END  # MVDIR #
01616  M01S01615.ssmove  +++|
01617  M01S01616.ssmove  +++|    TERM
01618  M01S01617.ssmove  +++|PROC MVDOIT;
01619  M01S01618.ssmove  +++|# TITLE MVDOIT - PERFORM SELECTED PROCESSING.                         #
01620  M01S01619.ssmove  +++|
01621  M01S01620.ssmove  +++|      BEGIN  # MVDOIT #
01622  M01S01621.ssmove  +++|
01623  M01S01622.ssmove  +++|#
01624  M01S01623.ssmove  +++|**    MVDOIT - PERFORM SELECTED PROCESSING.
01625  M01S01624.ssmove  +++|*
01626  M01S01625.ssmove  +++|*     THIS PROCEDURE ISSUES THE CALLS TO STAGE A FILE, CLEAR
01627  M01S01626.ssmove  +++|*     AN *ASA*, AND DROP DISK SPACE.
01628  M01S01627.ssmove  +++|*
01629  M01S01628.ssmove  +++|*     PROC MVDOIT.
01630  M01S01629.ssmove  +++|*
01631  M01S01630.ssmove  +++|*     ENTRY.    PROCESSING ACTION FLAGS ARE SET IN ARRAY
01632  M01S01631.ssmove  +++|*               *EXT$TDAM*.
01633  M01S01632.ssmove  +++|*
01634  M01S01633.ssmove  +++|*     EXIT.     SELECTED PROCESSING OCCURS OR ERRORS ARE
01635  M01S01634.ssmove  +++|*               PROCESSED.
01636  M01S01635.ssmove  +++|*
01637  M01S01636.ssmove  +++|*     NOTES.    1) IF THE FILE IS TO BE STAGED, A CALL IS MADE TO
01638  M01S01637.ssmove  +++|*                  *CALPFU* TO STAGE THE FILE.
01639  M01S01638.ssmove  +++|*
01640  M01S01639.ssmove  +++|*               2) IF THE FILE-S *ASA* IS TO BE CLEARED, A CALL IS
01641  M01S01640.ssmove  +++|*                  MADE TO *SETAF* TO CLEAR THE *ASA* IN THE FILE-S
01642  M01S01641.ssmove  +++|*                  *PFC* ENTRY.
01643  M01S01642.ssmove  +++|*
01644  M01S01643.ssmove  +++|*               3) IF THE FILE IS TO BE RELEASED *DROPDS* (FOR
01645  M01S01644.ssmove  +++|*                  DIRECT ACCESS FILES) OR *DROPIDS* ( FOR
01646  M01S01645.ssmove  +++|*                  INDIRECT ACCESS FILES) IS CALLED TO RELEASE
01647  M01S01646.ssmove  +++|*                  THE DISK SPACE FOR THE FILE.
01648  M01S01647.ssmove  +++|#
01649  M01S01648.ssmove  +++|
01650  M01S01649.ssmove  +++|#
01651  M01S01650.ssmove  +++|****  PROC MVDOIT - XREF LIST BEGIN.
01652  M01S01651.ssmove  +++|#
01653  M01S01652.ssmove  +++|
01654  M01S01653.ssmove  +++|      XREF
01655  M01S01654.ssmove  +++|        BEGIN
01656  M01S01655.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
01657  M01S01656.ssmove  +++|        PROC CALPFU;                 # CALL *PFU* TO STAGE FILE #
01658  M01S01657.ssmove  +++|        PROC DROPDS;                 # DROP DIRECT FILE DISK SPACE #
01659  M01S01658.ssmove  +++|        PROC DROPIDS;                # DROP INDIRECT FILE DISK SPACE #
01660  M01S01659.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
01661  M01S01660.ssmove  +++|        PROC MVERRP;                 # PROCESS *SSMOVE* ERRORS #
01662  M01S01661.ssmove  +++|        PROC RECALL;                 # RECALL #
01663  M01S01662.ssmove  +++|        PROC RETERN;                 # RETURN FILE #
01664  M01S01663.ssmove  +++|        PROC SETAF;                  # SET ALTERNATE STORAGE ADDRESS #
01665  M01S01664.ssmove  +++|        PROC UATTACH;                # UTILITY ATTACH #
01666  M01S01665.ssmove  +++|        PROC UGET;                   # UTILITY GET #
01667  M01S01666.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
01668  M01S01667.ssmove  +++|        END
01669  M01S01668.ssmove  +++|
01670  M01S01669.ssmove  +++|#
01671  M01S01670.ssmove  +++|****  PROC MVDOIT - XREF LIST END.
01672  M01S01671.ssmove  +++|#
01673  M01S01672.ssmove  +++|
01674  M01S01673.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
01675  M01S01674.ssmove  +++|
01676  M01S01675.ssmove  +++|*CALL COMBFAS
01677  M01S01676.ssmove  +++|*CALL COMBBZF
01678  M01S01677.ssmove  +++|*CALL COMBTDM
01679  M01S01678.ssmove  +++|*CALL COMSPFM
01680  M01S01679.ssmove  +++|*CALL COMTMOV
01681  M01S01680.ssmove  +++|
01682  M01S01681.ssmove  +++|      DEF ZEROASA     #0#;           # ZERO *ASA* #
01683  M01S01682.ssmove  +++|
01684  M01S01683.ssmove  +++|      ITEM CTSR       U;             # STAGE REQUEST #
01685  M01S01684.ssmove  +++|      ITEM FAMILY     C(10);         # FAMILY NAME #
01686  M01S01685.ssmove  +++|      ITEM FILENAME   C(10);         # FILE NAME #
01687  M01S01686.ssmove  +++|      ITEM FLAG       I;             # ERROR FLAG #
01688  M01S01687.ssmove  +++|      ITEM I          I;             # LOOP VARIABLE #
01689  M01S01688.ssmove  +++|      ITEM J          I;             # LOOP VARIABLE #
01690  M01S01689.ssmove  +++|      ITEM LFN        C(10);         # LOCAL FILE NAME #
01691  M01S01690.ssmove  +++|      ITEM MORE       B;             # ISSUE STAGE REQUEST AGAIN #
01692  M01S01691.ssmove  +++|      ITEM UFLAG      I;             # UTILITY ERROR FLAG #
01693  M01S01692.ssmove  +++|
01694  M01S01693.ssmove  +++|      ARRAY DOIT$PFC[0:0]S(PFCENTL);;  # PFC INFORMATION FOR *PFU* #
01695  M01S01694.ssmove  +++|
01696  M01S01695.ssmove  +++|      ARRAY STG$REQ [0:0] S(5);      # STAGE REQUEST INFORMATION #
01697  M01S01696.ssmove  +++|        BEGIN
01698  M01S01697.ssmove  +++|        ITEM STG$FAM    C(00,00,07);  # FAMILY NAME #
01699  M01S01698.ssmove  +++|        ITEM STG$DN     U(01,54,06);  # DEVICE NUMBER #
01700  M01S01699.ssmove  +++|        ITEM STG$TN     U(02,48,12);  # TRACK NUMBER #
01701  M01S01700.ssmove  +++|        ITEM STG$SN     U(03,48,12);  # SECTOR NUMBER #
01702  M01S01701.ssmove  +++|        ITEM STG$PEO    U(04,58,02);  # PFC ENTRY ORDINAL #
01703  M01S01702.ssmove  +++|        END
01704  M01S01703.ssmove  +++|
01705  M01S01704.ssmove  +++|      ARRAY SG$CW   [0:0] S(1);      # STAGE REQUEST CONTROL WORD #
01706  M01S01705.ssmove  +++|        BEGIN
01707  M01S01706.ssmove  +++|        ITEM SG$WORD    U(00,00,60);  # STAGE CONTROL WORD #
01708  M01S01707.ssmove  +++|        ITEM SG$PE      U(00,00,18);  # PFC ENTRY IMAGE #
01709  M01S01708.ssmove  +++|        ITEM SG$REQ     U(00,18,18);  # INFORMATION LIST #
01710  M01S01709.ssmove  +++|        ITEM SG$STAT    U(00,36,24);  # STATUS #
01711  M01S01710.ssmove  +++|        ITEM SG$ERR     U(00,36,12);  # ERROR STATUS #
01712  M01S01711.ssmove  +++|        ITEM SG$COMP    U(00,59,01);  # REQUEST COMPLETE #
01713  M01S01712.ssmove  +++|        END
01714  M01S01713.ssmove  +++|
01715  M01S01714.ssmove  +++|      ARRAY ERRMSG [0:0] P(3);;      # *PFM* ERROR MESSAGE #
01716  M01S01715.ssmove  +++|
01717  M01S01716.ssmove  +++|                                               CONTROL EJECT;
01718  M01S01717.ssmove  +++|
01719  M01S01718.ssmove  +++|#
01720  M01S01719.ssmove  +++|*     IF THE FILE IS TO BE STAGED, SET UP THE STAGE REQUEST
01721  M01S01720.ssmove  +++|*     ARRAYS.  CALL *CALPFU* TO STAGE THE FILE.
01722  M01S01721.ssmove  +++|#
01723  M01S01722.ssmove  +++|
01724  M01S01723.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
01725  M01S01724.ssmove  +++|      P<PFC> = LOC(DOIT$PFC[0]);
01726  M01S01725.ssmove  +++|      ZFILL(SG$CW,1);
01727  M01S01726.ssmove  +++|      MORE = TRUE;
01728  M01S01727.ssmove  +++|
01729  M01S01728.ssmove  +++|      IF EXT$STG[0]
01730  M01S01729.ssmove  +++|      THEN
01731  M01S01730.ssmove  +++|        BEGIN  # STAGE FILE #
01732  M01S01731.ssmove  +++|        IF EXT$CLR[0]
01733  M01S01732.ssmove  +++|        THEN                         # HAVE *STAGER* CLEAR *ASA* #
01734  M01S01733.ssmove  +++|          BEGIN
01735  M01S01734.ssmove  +++|          TDAMFFF[0] = TRUE;
01736  M01S01735.ssmove  +++|          END
01737  M01S01736.ssmove  +++|
01738  M01S01737.ssmove  +++|        STG$FAM[0] = TDAMFAM[0];
01739  M01S01738.ssmove  +++|        STG$DN[0] = TDAMDN[0];
01740  M01S01739.ssmove  +++|        STG$TN[0] = TDAMTRACK[0];
01741  M01S01740.ssmove  +++|        STG$SN[0] = TDAMSECTOR[0];
01742  M01S01741.ssmove  +++|        STG$PEO[0] = TDAMPEO[0];
01743  M01S01742.ssmove  +++|        SG$WORD = 1;
01744  M01S01743.ssmove  +++|        PFC$AFFRE[0] = TDAMFFF[0];
01745  M01S01744.ssmove  +++|        PFC$AA[0] = TDAMASA[0];
01746  M01S01745.ssmove  +++|        PFC$AT[0] = TDAMAT[0];
01747  M01S01746.ssmove  +++|        PFC$FN[0] = TDAMPFN[0];
01748  M01S01747.ssmove  +++|        PFC$UI[0] = TDAMUI[0];
01749  M01S01748.ssmove  +++|        PFC$CD[0] = TDAMCDT[0];
01750  M01S01749.ssmove  +++|        PFC$DA[0] = NOT TDAMIA[0];
01751  M01S01750.ssmove  +++|
01752  M01S01751.ssmove  +++|        IF PFC$DA[0]
01753  M01S01752.ssmove  +++|        THEN
01754  M01S01753.ssmove  +++|          BEGIN
01755  M01S01754.ssmove  +++|          PFC$LF[0] = TDAMFLN[0] + 1;
01756  M01S01755.ssmove  +++|          END
01757  M01S01756.ssmove  +++|
01758  M01S01757.ssmove  +++|        ELSE
01759  M01S01758.ssmove  +++|          BEGIN
01760  M01S01759.ssmove  +++|          PFC$LF[0] = TDAMFLN[0];
01761  M01S01760.ssmove  +++|          END
01762  M01S01761.ssmove  +++|
01763  M01S01762.ssmove  +++|        SG$PE[0] = LOC(PFC[0]);
01764  M01S01763.ssmove  +++|        SG$REQ[0] = LOC(STG$REQ[0]);
01765  M01S01764.ssmove  +++|MVDOIT1:
01766  M01S01765.ssmove  +++|
01767  M01S01766.ssmove  +++|        REPEAT WHILE SG$COMP EQ 0
01768  M01S01767.ssmove  +++|        DO
01769  M01S01768.ssmove  +++|          BEGIN
01770  M01S01769.ssmove  +++|          RECALL;                    # WAIT FOR REQUEST TO COMPLETE #
01771  M01S01770.ssmove  +++|          END
01772  M01S01771.ssmove  +++|
01773  M01S01772.ssmove  +++|        CALPFU(SG$CW,CTSR);
01774  M01S01773.ssmove  +++|        IF SG$ERR[0] EQ 0
01775  M01S01774.ssmove  +++|        THEN
01776  M01S01775.ssmove  +++|          BEGIN
01777  M01S01776.ssmove  +++|          GOTO MVDOIT2;
01778  M01S01777.ssmove  +++|          END
01779  M01S01778.ssmove  +++|
01780  M01S01779.ssmove  +++|        ELSE
01781  M01S01780.ssmove  +++|          BEGIN
01782  M01S01781.ssmove  +++|          SG$STAT[0] = 1;
01783  M01S01782.ssmove  +++|          GOTO MVDOIT1;
01784  M01S01783.ssmove  +++|          END
01785  M01S01784.ssmove  +++|
01786  M01S01785.ssmove  +++|        END  # STAGE FILE #
01787  M01S01786.ssmove  +++|
01788  M01S01787.ssmove  +++|MVDOIT2:
01789  M01S01788.ssmove  +++|
01790  M01S01789.ssmove  +++|#
01791  M01S01790.ssmove  +++|*     CLEAR THE *ASA* BY "SETTING" THE *AFOBS* FLAG.
01792  M01S01791.ssmove  +++|#
01793  M01S01792.ssmove  +++|
01794  M01S01793.ssmove  +++|      IF EXT$CLR[0] AND NOT EXT$STG[0]
01795  M01S01794.ssmove  +++|      THEN
01796  M01S01795.ssmove  +++|        BEGIN
01797  M01S01796.ssmove  +++|        FILENAME = TDAMPFN[0];
01798  M01S01797.ssmove  +++|        BZFILL(FILENAME,TYPFILL"ZFILL",10);
01799  M01S01798.ssmove  +++|
01800  M01S01799.ssmove  +++|        LFN = MVULFN;
01801  M01S01800.ssmove  +++|        BZFILL(LFN,TYPFILL"ZFILL",10);
01802  M01S01801.ssmove  +++|
01803  M01S01802.ssmove  +++|        FAMILY = TDAMFAM[0];
01804  M01S01803.ssmove  +++|        BZFILL(FAMILY,TYPFILL"ZFILL",10);
01805  M01S01804.ssmove  +++|
01806  M01S01805.ssmove  +++|        SETAF(LFN,FLAG,6,TDAMUI[0],FAMILY,TDAMPFID[0],
01807  M01S01806.ssmove  +++|          TDAMASI[0],TDAMCDT[0],AFOBS,LOC(ERRMSG));
01808  M01S01807.ssmove  +++|
01809  M01S01808.ssmove  +++|        RETERN(MVULFN,RCL);
01810  M01S01809.ssmove  +++|        END  # CLEAR ASA #
01811  M01S01810.ssmove  +++|
01812  M01S01811.ssmove  +++|#
01813  M01S01812.ssmove  +++|*     IF THE FILE IS TO BE RELEASED FROM DISK,
01814  M01S01813.ssmove  +++|*     CALL *DROPDS* FOR DIRECT ACCESS FILES OR *DROPIDS* FOR
01815  M01S01814.ssmove  +++|*     INDIRECT ACCESS FILES TO RELEASE THE DISK SPACE FOR THE FILE.
01816  M01S01815.ssmove  +++|#
01817  M01S01816.ssmove  +++|
01818  M01S01817.ssmove  +++|      IF EXT$REL[0]
01819  M01S01818.ssmove  +++|      THEN
01820  M01S01819.ssmove  +++|        BEGIN  # RELEASE DISK SPACE #
01821  M01S01820.ssmove  +++|        FILENAME = TDAMPFN[0];
01822  M01S01821.ssmove  +++|        BZFILL(FILENAME,TYPFILL"ZFILL",10);
01823  M01S01822.ssmove  +++|        FAMILY = TDAMFAM[0];
01824  M01S01823.ssmove  +++|        BZFILL(FAMILY,TYPFILL"ZFILL",10);
01825  M01S01824.ssmove  +++|
01826  M01S01825.ssmove  +++|        IF NOT TDAMIA[0]
01827  M01S01826.ssmove  +++|        THEN                         # RELEASE DIRECT FILE DISK SPACE #
01828  M01S01827.ssmove  +++|          BEGIN
01829  M01S01828.ssmove  +++|          DROPDS(FILENAME,FLAG,6,TDAMUI[0],FAMILY,TDAMPFID[0],  ##
01830  M01S01829.ssmove  +++|          TDAMASI[0],TDAMCDT[0],LOC(ERRMSG));
01831  M01S01830.ssmove  +++|          END
01832  M01S01831.ssmove  +++|
01833  M01S01832.ssmove  +++|        ELSE                         # RELEASE INDIRECT FILE DISK SPACE
01834  M01S01833.ssmove  +++|                                     #
01835  M01S01834.ssmove  +++|          BEGIN
01836  M01S01835.ssmove  +++|          DROPIDS(FILENAME,FLAG,6,TDAMUI[0],FAMILY,TDAMPFID[0],
01837  M01S01836.ssmove  +++|          TDAMASI[0],TDAMCDT[0],LOC(ERRMSG));
01838  M01S01837.ssmove  +++|          END
01839  M01S01838.ssmove  +++|
01840  M01S01839.ssmove  +++|        END  # RELEASE DISK SPACE #
01841  M01S01840.ssmove  +++|
01842  M01S01841.ssmove  +++|#
01843  M01S01842.ssmove  +++|*     IF *SETAF*, *DROPDS*, OR *DROPIDS* RETURNED A NON-ZERO
01844  M01S01843.ssmove  +++|*     STATUS, CALL PROCEDURE *MVERRP* TO WRITE THE TDAM TO THE
01845  M01S01844.ssmove  +++|*     LOCAL PROBLEM FILE.
01846  M01S01845.ssmove  +++|#
01847  M01S01846.ssmove  +++|
01848  M01S01847.ssmove  +++|      IF FLAG NQ 0
01849  M01S01848.ssmove  +++|      THEN
01850  M01S01849.ssmove  +++|        BEGIN
01851  M01S01850.ssmove  +++|        MVERRP;
01852  M01S01851.ssmove  +++|        END
01853  M01S01852.ssmove  +++|
01854  M01S01853.ssmove  +++|      END  # MVDOIT #
01855  M01S01854.ssmove  +++|
01856  M01S01855.ssmove  +++|    TERM
01857  M01S01856.ssmove  +++|PROC MVERRP;
01858  M01S01857.ssmove  +++|# TITLE MVERRP - PROCESS ERRORS.                                      #
01859  M01S01858.ssmove  +++|
01860  M01S01859.ssmove  +++|      BEGIN  # MVERRP #
01861  M01S01860.ssmove  +++|
01862  M01S01861.ssmove  +++|#
01863  M01S01862.ssmove  +++|**    MVERRP - *SSMOVE* ERROR PROCESSOR.
01864  M01S01863.ssmove  +++|*
01865  M01S01864.ssmove  +++|*     THIS PROCEDURE PROCESSES ANY ERRORS RESULTING FROM A
01866  M01S01865.ssmove  +++|*     CLEAR ASA, OR RELEASE REQUEST BY WRITING THE TDAM TO A FILE
01867  M01S01866.ssmove  +++|*     OF PROBLEMS.
01868  M01S01867.ssmove  +++|*
01869  M01S01868.ssmove  +++|*     PROC MVERRP.
01870  M01S01869.ssmove  +++|#
01871  M01S01870.ssmove  +++|
01872  M01S01871.ssmove  +++|#
01873  M01S01872.ssmove  +++|****  PROC MVERRP - XREF LIST BEGIN.
01874  M01S01873.ssmove  +++|#
01875  M01S01874.ssmove  +++|
01876  M01S01875.ssmove  +++|      XREF
01877  M01S01876.ssmove  +++|        BEGIN
01878  M01S01877.ssmove  +++|        PROC WRITEW;                 # WRITE RECORD TO FILE BUFFER #
01879  M01S01878.ssmove  +++|        END
01880  M01S01879.ssmove  +++|
01881  M01S01880.ssmove  +++|#
01882  M01S01881.ssmove  +++|****  PROC MVERRP - XREF LIST END.
01883  M01S01882.ssmove  +++|#
01884  M01S01883.ssmove  +++|
01885  M01S01884.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
01886  M01S01885.ssmove  +++|
01887  M01S01886.ssmove  +++|*CALL COMBFAS
01888  M01S01887.ssmove  +++|*CALL COMBTDM
01889  M01S01888.ssmove  +++|*CALL COMTMOV
01890  M01S01889.ssmove  +++|
01891  M01S01890.ssmove  +++|      ITEM FLAG       I;             # ERROR FLAG #
01892  M01S01891.ssmove  +++|
01893  M01S01892.ssmove  +++|                                               CONTROL EJECT;
01894  M01S01893.ssmove  +++|
01895  M01S01894.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
01896  M01S01895.ssmove  +++|      WRITEW(MV$FET[FILEAUX],MV$WBUF[0],TDAMLEN,FLAG);
01897  M01S01896.ssmove  +++|
01898  M01S01897.ssmove  +++|      RETURN;
01899  M01S01898.ssmove  +++|
01900  M01S01899.ssmove  +++|      END  # MVERRP #
01901  M01S01900.ssmove  +++|
01902  M01S01901.ssmove  +++|    TERM
01903  M01S01902.ssmove  +++|PROC MVHEAD((FETP));
01904  M01S01903.ssmove  +++|# TITLE MVHEAD - PRINTS HEADER ON *SSMOVE* REPORT FILE.               #
01905  M01S01904.ssmove  +++|
01906  M01S01905.ssmove  +++|      BEGIN  # MVHEAD #
01907  M01S01906.ssmove  +++|
01908  M01S01907.ssmove  +++|#
01909  M01S01908.ssmove  +++|**    MVHEAD - PRINTS HEADER ON *SSMOVE* REPORT FILE.
01910  M01S01909.ssmove  +++|*
01911  M01S01910.ssmove  +++|*     PROC MVHEAD((FETP)).
01912  M01S01911.ssmove  +++|*
01913  M01S01912.ssmove  +++|*     ENTRY.    (FETP) = FWA OF FET.
01914  M01S01913.ssmove  +++|*
01915  M01S01914.ssmove  +++|*     EXIT.     HEADER PRINTED.
01916  M01S01915.ssmove  +++|*
01917  M01S01916.ssmove  +++|*     NOTES.    REPORT FORMATTER IS USED TO PRINT THE HEADER LINE.
01918  M01S01917.ssmove  +++|*               THE CONTROL CARD IMAGE IS WRITTEN TO THE
01919  M01S01918.ssmove  +++|*               REPORT FILE ON THE FIRST EXECUTION OF THE PROC.
01920  M01S01919.ssmove  +++|#
01921  M01S01920.ssmove  +++|
01922  M01S01921.ssmove  +++|      ITEM FETP       I;             # FWA OF FET #
01923  M01S01922.ssmove  +++|
01924  M01S01923.ssmove  +++|#
01925  M01S01924.ssmove  +++|****  PROC MVHEAD - XREF LIST BEGIN.
01926  M01S01925.ssmove  +++|#
01927  M01S01926.ssmove  +++|
01928  M01S01927.ssmove  +++|      XREF
01929  M01S01928.ssmove  +++|        BEGIN
01930  M01S01929.ssmove  +++|        PROC BZFILL;                 # BLANK OR ZERO FILLS A BUFFER #
01931  M01S01930.ssmove  +++|        PROC RPLINEX;                # WRITES A REPORT LINE #
01932  M01S01931.ssmove  +++|        END
01933  M01S01932.ssmove  +++|
01934  M01S01933.ssmove  +++|#
01935  M01S01934.ssmove  +++|****  PROC MVHEAD - XREF LIST END.
01936  M01S01935.ssmove  +++|#
01937  M01S01936.ssmove  +++|
01938  M01S01937.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
01939  M01S01938.ssmove  +++|*CALL,COMBFAS
01940  M01S01939.ssmove  +++|*CALL COMBSIT
01941  M01S01940.ssmove  +++|*CALL,COMBBZF
01942  M01S01941.ssmove  +++|
01943  M01S01942.ssmove  +++|      ITEM FIRST      B = TRUE;      # FIRST EXECUTION OF PROC #
01944  M01S01943.ssmove  +++|
01945  M01S01944.ssmove  +++|      BASED
01946  M01S01945.ssmove  +++|      ARRAY RA [0:0];;               # TO ACCESS RA AREA #
01947  M01S01946.ssmove  +++|
01948  M01S01947.ssmove  +++|                                               CONTROL EJECT;
01949  M01S01948.ssmove  +++|
01950  M01S01949.ssmove  +++|#
01951  M01S01950.ssmove  +++|*     PRINT THE HEADER.
01952  M01S01951.ssmove  +++|#
01953  M01S01952.ssmove  +++|
01954  M01S01953.ssmove  +++|      RPLINEX(FETP,"SSMOVE REPORT.",2,14,0);
01955  M01S01954.ssmove  +++|      RPLINEX(FETP," ",1,1,0);
01956  M01S01955.ssmove  +++|
01957  M01S01956.ssmove  +++|      IF FIRST
01958  M01S01957.ssmove  +++|      THEN                           # WRITE CONTROL CARD IMAGE #
01959  M01S01958.ssmove  +++|        BEGIN
01960  M01S01959.ssmove  +++|        FIRST = FALSE;
01961  M01S01960.ssmove  +++|        P<RA> = 0;
01962  M01S01961.ssmove  +++|        BZFILL(RA[O"70"],TYPFILL"BFILL",80);
01963  M01S01962.ssmove  +++|        RPLINEX(FETP,RA[O"70"],2,80,0);
01964  M01S01963.ssmove  +++|        RPLINEX(FETP," ",1,1,0);
01965  M01S01964.ssmove  +++|        END
01966  M01S01965.ssmove  +++|
01967  M01S01966.ssmove  +++|      RETURN;
01968  M01S01967.ssmove  +++|
01969  M01S01968.ssmove  +++|      END  # MVHEAD #
01970  M01S01969.ssmove  +++|
01971  M01S01970.ssmove  +++|    TERM
01972  M01S01971.ssmove  +++|PROC MVINDEV;
01973  M01S01972.ssmove  +++|# TITLE MVINDEV - INITIALIZE *DEVSTAT* ARRAY.                         #
01974  M01S01973.ssmove  +++|      BEGIN  # MVINDEV #
01975  M01S01974.ssmove  +++|
01976  M01S01975.ssmove  +++|#
01977  M01S01976.ssmove  +++|**    MVINDEV - INITIALIZE *DEVSTAT* ARRAY.
01978  M01S01977.ssmove  +++|*
01979  M01S01978.ssmove  +++|*     *MVINDEV* INITIALIZES TABLE ENTRIES FOR EACH PERMANENT FILE
01980  M01S01979.ssmove  +++|*     DEVICE BELONGING TO THE FAMILY BEING ANALYZED.
01981  M01S01980.ssmove  +++|*
01982  M01S01981.ssmove  +++|*     ARRAYS *DNTODNX*, *SFSTAT* AND *DEVSTAT* ARE ALL ZEROED.
01983  M01S01982.ssmove  +++|*
01984  M01S01983.ssmove  +++|*     ARRAY *DNTODNX* IS INITIALIZED SO THAT *DNX = DN$TO$DNX[DN]*
01985  M01S01984.ssmove  +++|*     CAN BE USED TO DETERMINE THE INDEX FOR A DEVICE GIVEN ITS
01986  M01S01985.ssmove  +++|*     DEVICE NUMBER.
01987  M01S01986.ssmove  +++|*
01988  M01S01987.ssmove  +++|*     ARRAY *DEVSTAT* IS INITIALIZED TO CONTAIN INFORMATION
01989  M01S01988.ssmove  +++|*     OBTAINED FROM THE *EST* AND *MST* ENTRIES FOR EACH DEVICE.
01990  M01S01989.ssmove  +++|*
01991  M01S01990.ssmove  +++|*     PROC MVINDEV.
01992  M01S01991.ssmove  +++|*
01993  M01S01992.ssmove  +++|*     ENTRY.     MVARG$FM[0] IDENTIFIES THE FAMILY TO BE ANALYZED
01994  M01S01993.ssmove  +++|*                BY THIS *SSMOVE* RUN.
01995  M01S01994.ssmove  +++|*
01996  M01S01995.ssmove  +++|*     EXIT.      ARRAYS *DNTODNX, *SFSTAT* AND *DEVSTAT* ARE
01997  M01S01996.ssmove  +++|*                INITIALIZED.
01998  M01S01997.ssmove  +++|*
01999  M01S01998.ssmove  +++|*     MESSAGES.  *MAXDEV* TOO SMALL.
02000  M01S01999.ssmove  +++|#
02001  M01S02000.ssmove  +++|
02002  M01S02001.ssmove  +++|#
02003  M01S02002.ssmove  +++|****  PROC MVINDEV - XREF LIST BEGIN.
02004  M01S02003.ssmove  +++|#
02005  M01S02004.ssmove  +++|
02006  M01S02005.ssmove  +++|      XREF
02007  M01S02006.ssmove  +++|        BEGIN
02008  M01S02007.ssmove  +++|        PROC GETMST;                 # GETS DATA FROM *EST* AND *MST*
02009  M01S02008.ssmove  +++|                                       ENTRIES #
02010  M01S02009.ssmove  +++|        PROC MESSAGE;                # DISPLAYS MESSAGE IN DAYFILE #
02011  M01S02010.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S *PFP* AND ABORT
02012  M01S02011.ssmove  +++|                                       OR RETURN #
02013  M01S02012.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
02014  M01S02013.ssmove  +++|        END
02015  M01S02014.ssmove  +++|
02016  M01S02015.ssmove  +++|#
02017  M01S02016.ssmove  +++|****  PROC MVINDEV - XREF LIST END.
02018  M01S02017.ssmove  +++|#
02019  M01S02018.ssmove  +++|
02020  M01S02019.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
02021  M01S02020.ssmove  +++|*CALL,COMBFAS
02022  M01S02021.ssmove  +++|*CALL,COMTMOV
02023  M01S02022.ssmove  +++|*CALL,COMTMVP
02024  M01S02023.ssmove  +++|
02025  M01S02024.ssmove  +++|      ITEM DEVERR     B;             # INVALID DEVICE SPECIFIED #
02026  M01S02025.ssmove  +++|      ITEM DN         I;             # DEVICE NUMBER #
02027  M01S02026.ssmove  +++|      ITEM ESTX       I;             # INDEX TO NEXT *EST* ENTRY #
02028  M01S02027.ssmove  +++|      ITEM FAM        C(7);          # FAMILY FROM *MST* #
02029  M01S02028.ssmove  +++|      ITEM MASKP      I;             # PRIMARY MASK FROM *MST* #
02030  M01S02029.ssmove  +++|      ITEM MASKS      I;             # SECONDARY MASK FROM *MST* #
02031  M01S02030.ssmove  +++|      ITEM NUM        I;             # NUMBER OF DRIVES FOR THIS DEVICE
02032  M01S02031.ssmove  +++|                                     #
02033  M01S02032.ssmove  +++|      ITEM SECT       I;             # PRUS PER TRACK #
02034  M01S02033.ssmove  +++|      ITEM STAT       I;             # STATUS FROM *GETMST* #
02035  M01S02034.ssmove  +++|      ITEM TPRU       I;             # TOTAL PRU FOR A DEVICE #
02036  M01S02035.ssmove  +++|      ITEM TYPE       C(2);          # DEVICE TYPE #
02037  M01S02036.ssmove  +++|
02038  M01S02037.ssmove  +++|                                               CONTROL EJECT;
02039  M01S02038.ssmove  +++|
02040  M01S02039.ssmove  +++|#
02041  M01S02040.ssmove  +++|*     INITIALIZE THE VARIOUS ARRAYS TO ZERO.
02042  M01S02041.ssmove  +++|#
02043  M01S02042.ssmove  +++|
02044  M01S02043.ssmove  +++|      ZFILL(DEVSTAT,8*MAXDEV);
02045  M01S02044.ssmove  +++|      ZFILL(SF$STAT,10*MAXSF);
02046  M01S02045.ssmove  +++|      ZFILL(DNTODNX,64);
02047  M01S02046.ssmove  +++|
02048  M01S02047.ssmove  +++|      DNX = 1;
02049  M01S02048.ssmove  +++|      DEVERR = TRUE;
02050  M01S02049.ssmove  +++|
02051  M01S02050.ssmove  +++|#
02052  M01S02051.ssmove  +++|*     LOOK AT EACH *EST* AND CORRESPONDING *MST* ENTRY TO
02053  M01S02052.ssmove  +++|*     FIND DEVICES BELONGING TO THE FAMILY BEING ANALYZED.
02054  M01S02053.ssmove  +++|#
02055  M01S02054.ssmove  +++|
02056  M01S02055.ssmove  +++|      SLOWFOR ESTX = 1 STEP 1 WHILE STAT GQ 0
02057  M01S02056.ssmove  +++|      DO
02058  M01S02057.ssmove  +++|        BEGIN  # ANALYZE EACH *EST* AND *MST* ENTRY #
02059  M01S02058.ssmove  +++|        GETMST(ESTX,STAT,TYPE,FAM,DN,NUM,TPRU,SECT,MASKP,MASKS);
02060  M01S02059.ssmove  +++|
02061  M01S02060.ssmove  +++|        IF STAT NQ 0 OR              ##
02062  M01S02061.ssmove  +++|          FAM NQ MVARG$FM[0]
02063  M01S02062.ssmove  +++|        THEN
02064  M01S02063.ssmove  +++|          BEGIN
02065  M01S02064.ssmove  +++|          TEST ESTX;
02066  M01S02065.ssmove  +++|          END
02067  M01S02066.ssmove  +++|
02068  M01S02067.ssmove  +++|        IF DNX GR MAXDEV
02069  M01S02068.ssmove  +++|        THEN
02070  M01S02069.ssmove  +++|          BEGIN
02071  M01S02070.ssmove  +++|          MESSAGE(" *MAXDEV* TOO SMALL ");
02072  M01S02071.ssmove  +++|          TEST ESTX;
02073  M01S02072.ssmove  +++|          END
02074  M01S02073.ssmove  +++|
02075  M01S02074.ssmove  +++|        IF MVARG$DN[0] NQ 0   ##
02076  M01S02075.ssmove  +++|          AND MVARG$DN[0] EQ DN
02077  M01S02076.ssmove  +++|        THEN                         # SPECIFIED DEVICE FOUND #
02078  M01S02077.ssmove  +++|          BEGIN
02079  M01S02078.ssmove  +++|          DEVERR = FALSE;
02080  M01S02079.ssmove  +++|          END
02081  M01S02080.ssmove  +++|
02082  M01S02081.ssmove  +++|#
02083  M01S02082.ssmove  +++|*     FOR EACH DEVICE, ESTABLISH THE INDEX (*DN$TO$DNX[DN]*) FOR
02084  M01S02083.ssmove  +++|*     THE DISKS DEVICE NUMBER FIELD IN THE CORRESPONDING *DEVSTAT*
02085  M01S02084.ssmove  +++|*     ENTRY.
02086  M01S02085.ssmove  +++|#
02087  M01S02086.ssmove  +++|
02088  M01S02087.ssmove  +++|        DN$TO$DNX[DN] = DNX;
02089  M01S02088.ssmove  +++|        DEV$EO[IXIA,DNX] = ESTX;
02090  M01S02089.ssmove  +++|        DEV$TPRU[IXIA,DNX] = TPRU;
02091  M01S02090.ssmove  +++|        DEV$TYPE[IXIA,DNX] = TYPE;
02092  M01S02091.ssmove  +++|        DEV$NUM[IXIA,DNX] = NUM;
02093  M01S02092.ssmove  +++|        DEV$MAST[IXIA,DNX] = MASKP NQ 0;
02094  M01S02093.ssmove  +++|        DEV$SEC[IXIA,DNX] = MASKS NQ 0;
02095  M01S02094.ssmove  +++|        DEV$DN[IXIA,DNX] = DN;
02096  M01S02095.ssmove  +++|        DEV$SECTR[IXDA,DNX] = SECT;
02097  M01S02096.ssmove  +++|        DEV$EXIST[IXIA,DNX] = TRUE;
02098  M01S02097.ssmove  +++|        DNX = DNX+1;
02099  M01S02098.ssmove  +++|        TEST ESTX;
02100  M01S02099.ssmove  +++|        END  # ANALYZE EACH *EST* AND *MST* ENTRY #
02101  M01S02100.ssmove  +++|
02102  M01S02101.ssmove  +++|#
02103  M01S02102.ssmove  +++|*     ABORT WITH MESSAGE IF INVALID DEVICE SPECIFIED.
02104  M01S02103.ssmove  +++|#
02105  M01S02104.ssmove  +++|
02106  M01S02105.ssmove  +++|      IF MVARG$DN[0] NQ 0   ##
02107  M01S02106.ssmove  +++|        AND DEVERR
02108  M01S02107.ssmove  +++|      THEN
02109  M01S02108.ssmove  +++|        BEGIN
02110  M01S02109.ssmove  +++|        MVMSG$LN[0] = " INVALID DEVICE SPECIFIED.";
02111  M01S02110.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
02112  M01S02111.ssmove  +++|        RESTPFP(PFP$ABORT);
02113  M01S02112.ssmove  +++|        END
02114  M01S02113.ssmove  +++|
02115  M01S02114.ssmove  +++|      END  # MVINDEV #
02116  M01S02115.ssmove  +++|
02117  M01S02116.ssmove  +++|    TERM
02118  M01S02117.ssmove  +++|PROC MVINIT;
02119  M01S02118.ssmove  +++|# TITLE MVINIT - DECODES *SSMOVE* CONTROL STATEMENT.                  #
02120  M01S02119.ssmove  +++|
02121  M01S02120.ssmove  +++|      BEGIN  # MVINIT #
02122  M01S02121.ssmove  +++|
02123  M01S02122.ssmove  +++|#
02124  M01S02123.ssmove  +++|**    MVINIT - DECODES *SSMOVE* CONTROL STATEMENT.
02125  M01S02124.ssmove  +++|*
02126  M01S02125.ssmove  +++|*     *MVINIT* DECODES THE PARAMETERS ON THE *SSMOVE* CONTROL
02127  M01S02126.ssmove  +++|*     STATEMENT.  INVALID PARAMETERS ARE REPORTED VIA DAYFILE MESSAGES.
02128  M01S02127.ssmove  +++|*     PROCEDURE *MVDIR* IS CALLED TO PROCESS THE DIRECTIVE FILE.
02129  M01S02128.ssmove  +++|*
02130  M01S02129.ssmove  +++|*     PROC MVINIT.
02131  M01S02130.ssmove  +++|*
02132  M01S02131.ssmove  +++|*     ENTRY.    CONTROL CARD IMAGE IN RA+70B.
02133  M01S02132.ssmove  +++|*
02134  M01S02133.ssmove  +++|*     EXIT.     PARAMETERS IN THE *MVARG* ARRAY.
02135  M01S02134.ssmove  +++|*               THE *OPTLO* AND *OPTPX* ARRAYS ARE UPDATED
02136  M01S02135.ssmove  +++|*               TO REFLECT ANY RUN-TIME PARAMETERS.
02137  M01S02136.ssmove  +++|*
02138  M01S02137.ssmove  +++|*     MESSAGES. 1) SSMOVE - PARAMETER ERROR.
02139  M01S02138.ssmove  +++|*               2) COMMUNICATION FILE BUSY.
02140  M01S02139.ssmove  +++|*               3) UNABLE TO DEFINE COMMUNICATION FILE.
02141  M01S02140.ssmove  +++|*               4) FAMILY NOT FOUND.
02142  M01S02141.ssmove  +++|#
02143  M01S02142.ssmove  +++|
02144  M01S02143.ssmove  +++|#
02145  M01S02144.ssmove  +++|****  PROC MVINIT - XREF LIST BEGIN.
02146  M01S02145.ssmove  +++|#
02147  M01S02146.ssmove  +++|
02148  M01S02147.ssmove  +++|      XREF
02149  M01S02148.ssmove  +++|        BEGIN
02150  M01S02149.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
02151  M01S02150.ssmove  +++|        PROC GETFAM;                 # GET DEFAULT FAMILY #
02152  M01S02151.ssmove  +++|        PROC GETPFP;                 # GET USER-S FAMILY AND UI. #
02153  M01S02152.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
02154  M01S02153.ssmove  +++|        PROC MVALCS;                 # ANALYZE CHARACTER STRING #
02155  M01S02154.ssmove  +++|        PROC MVDIR;                  # PROCESS DIRECTIVES #
02156  M01S02155.ssmove  +++|        PROC MVHEAD;                 # WRITES HEADER ON OUTPUT FILE #
02157  M01S02156.ssmove  +++|        PROC MVINDEV;                # INITIALIZE DEVICE STATUS ARRAYS
02158  M01S02157.ssmove  +++|                                     #
02159  M01S02158.ssmove  +++|        PROC MVTAB;                  # PROVIDES ADDRESS OF PARAMETER
02160  M01S02159.ssmove  +++|                                       DECODING TABLE #
02161  M01S02160.ssmove  +++|        PROC PDATE;                  # GET CURRENT DATE/TIME #
02162  M01S02161.ssmove  +++|        PROC PF;                     # *PFM* REQUEST INTERFACE #
02163  M01S02162.ssmove  +++|        PROC RESTPFP;                # RESTORE USER-S FAMILY AND UI. #
02164  M01S02163.ssmove  +++|        PROC RPOPEN;                 # OPENS OUTPUT FILE #
02165  M01S02164.ssmove  +++|        PROC SETPFP;                 # SET FAMILY/USER INDEX #
02166  M01S02165.ssmove  +++|        PROC XARG;                   # DECODES PARAMETERS PER DECODING
02167  M01S02166.ssmove  +++|                                       TABLE #
02168  M01S02167.ssmove  +++|        FUNC MVRELAG U;              # CALCULATE RELATIVE AGE #
02169  M01S02168.ssmove  +++|        FUNC XDXB I;                 # CONVERTS DISPLAY TO BINARY #
02170  M01S02169.ssmove  +++|        END
02171  M01S02170.ssmove  +++|
02172  M01S02171.ssmove  +++|#
02173  M01S02172.ssmove  +++|****  PROC MVINIT - XREF LIST END.
02174  M01S02173.ssmove  +++|#
02175  M01S02174.ssmove  +++|
02176  M01S02175.ssmove  +++|      DEF MSG1       #" SSMOVE - PARAMETER ERROR."#;
02177  M01S02176.ssmove  +++|      DEF MSG2       #" COMMUNICATION FILE BUSY."#;
02178  M01S02177.ssmove  +++|      DEF MSG3       #" UNABLE TO DEFINE COMMUNICATION FILE."#;
02179  M01S02178.ssmove  +++|      DEF MSG4       #" FAMILY NOT FOUND."#;
02180  M01S02179.ssmove  +++|
02181  M01S02180.ssmove  +++|      DEF PROCNAME   #"SSMOVE."#;    # PROCEDURE NAME #
02182  M01S02181.ssmove  +++|
02183  M01S02182.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMDECKS #
02184  M01S02183.ssmove  +++|*CALL,COMBFAS
02185  M01S02184.ssmove  +++|*CALL COMBSIT
02186  M01S02185.ssmove  +++|*CALL,COMBBZF
02187  M01S02186.ssmove  +++|*CALL,COMBPFP
02188  M01S02187.ssmove  +++|*CALL,COMBTDM
02189  M01S02188.ssmove  +++|*CALL,COMSPFM
02190  M01S02189.ssmove  +++|*CALL,COMTMOV
02191  M01S02190.ssmove  +++|*CALL,COMTMVP
02192  M01S02191.ssmove  +++|*CALL,COMTOUT
02193  M01S02192.ssmove  +++|
02194  M01S02193.ssmove  +++|
02195  M01S02194.ssmove  +++|      ITEM ARGLIST    I;             # ADDRESS OF ARGUMENT TABLE #
02196  M01S02195.ssmove  +++|      ITEM CCOK       B=TRUE;        # CONTROL CARD STATUS #
02197  M01S02196.ssmove  +++|      ITEM DEFORD     I;             # ORDINAL OF DEFAULT FAMILY #
02198  M01S02197.ssmove  +++|      ITEM LINK       I;             # ORDINAL OF LINK DEVICE #
02199  M01S02198.ssmove  +++|      ITEM NUM        I;             # NUMBER OF FAMILIES #
02200  M01S02199.ssmove  +++|      ITEM STAT       I;             # ERROR STATUS #
02201  M01S02200.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY INTEGER #
02202  M01S02201.ssmove  +++|                                               CONTROL EJECT;
02203  M01S02202.ssmove  +++|
02204  M01S02203.ssmove  +++|#
02205  M01S02204.ssmove  +++|*     SAVE ORIGINAL FAMILY AND USER INDEX FOR RESTORING.
02206  M01S02205.ssmove  +++|#
02207  M01S02206.ssmove  +++|
02208  M01S02207.ssmove  +++|      GETPFP(PFP[0]);
02209  M01S02208.ssmove  +++|      USER$FAM[0] = PFP$FAM[0];
02210  M01S02209.ssmove  +++|      USER$UI[0] = PFP$UI[0];
02211  M01S02210.ssmove  +++|
02212  M01S02211.ssmove  +++|#
02213  M01S02212.ssmove  +++|*     CRACK PARAMETERS ON *SSMOVE* PROGRAM CALL.
02214  M01S02213.ssmove  +++|#
02215  M01S02214.ssmove  +++|
02216  M01S02215.ssmove  +++|      MVTAB(ARGLIST);
02217  M01S02216.ssmove  +++|      XARG(ARGLIST,0,STAT);
02218  M01S02217.ssmove  +++|      CCOK = STAT EQ 0;
02219  M01S02218.ssmove  +++|
02220  M01S02219.ssmove  +++|      MVALCS(MVARG$LO[0],VCSLO,LOOPT[0],"LO",STAT);
02221  M01S02220.ssmove  +++|      CCOK = CCOK AND (STAT EQ 0);
02222  M01S02221.ssmove  +++|
02223  M01S02222.ssmove  +++|      MVALCS(MVARG$PX[0],VCSPX,PXOPT[0],"PX",STAT);
02224  M01S02223.ssmove  +++|      CCOK = CCOK AND (STAT EQ 0);
02225  M01S02224.ssmove  +++|
02226  M01S02225.ssmove  +++|#
02227  M01S02226.ssmove  +++|*     CRACK NW, UI, DN, LB AND SET UP REPORT FILE.
02228  M01S02227.ssmove  +++|#
02229  M01S02228.ssmove  +++|
02230  M01S02229.ssmove  +++|      IF MVARG$ZNW[0] NQ 0
02231  M01S02230.ssmove  +++|      THEN
02232  M01S02231.ssmove  +++|        BEGIN
02233  M01S02232.ssmove  +++|        MVARG$ZNW[0] = 0;
02234  M01S02233.ssmove  +++|        MVARG$NW[0] = TRUE;
02235  M01S02234.ssmove  +++|        END
02236  M01S02235.ssmove  +++|
02237  M01S02236.ssmove  +++|      ELSE
02238  M01S02237.ssmove  +++|        BEGIN
02239  M01S02238.ssmove  +++|        MVARG$NW[0] = FALSE;
02240  M01S02239.ssmove  +++|        END
02241  M01S02240.ssmove  +++|
02242  M01S02241.ssmove  +++|      IF MVARG$ZUI[0] NQ 0
02243  M01S02242.ssmove  +++|      THEN
02244  M01S02243.ssmove  +++|        BEGIN
02245  M01S02244.ssmove  +++|        STAT = XDXB(MVARG$UI[0],0,TMPI);
02246  M01S02245.ssmove  +++|        MVARG$ZUI[0] = TMPI;
02247  M01S02246.ssmove  +++|        CCOK = CCOK AND (STAT EQ 0)  ##
02248  M01S02247.ssmove  +++|          AND (TMPI GR 0) AND (TMPI LQ SYS$UI);
02249  M01S02248.ssmove  +++|        END
02250  M01S02249.ssmove  +++|
02251  M01S02250.ssmove  +++|      IF MVARG$DN[0] NQ 0
02252  M01S02251.ssmove  +++|      THEN
02253  M01S02252.ssmove  +++|        BEGIN
02254  M01S02253.ssmove  +++|        STAT = XDXB(MVARG$DN[0],0,TMPI);
02255  M01S02254.ssmove  +++|        MVARG$DN[0] = TMPI;
02256  M01S02255.ssmove  +++|        CCOK = CCOK AND (STAT EQ 0);
02257  M01S02256.ssmove  +++|        END
02258  M01S02257.ssmove  +++|
Proceed to Part 1
cdc/nos2.source/opl.opl871/deck/ssmove.txt · Last modified: by 127.0.0.1