User Tools

Site Tools


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

Deck SSMOVE Part 001

4 Modifications

Listing Sections

Source

Seq #  *Modification Id* Act 
----------------------------+
02259  M01S02258.ssmove  +++|      IF MVARG$LB[0] EQ LBNS
02260  M01S02259.ssmove  +++|      THEN                           # *LB* NOT SPECIFIED #
02261  M01S02260.ssmove  +++|        BEGIN
02262  M01S02261.ssmove  +++|        MVARG$LB[0] = DEFLB;
02263  M01S02262.ssmove  +++|        END
02264  M01S02263.ssmove  +++|
02265  M01S02264.ssmove  +++|      ELSE
02266  M01S02265.ssmove  +++|        BEGIN
02267  M01S02266.ssmove  +++|        STAT = XDXB(MVARG$LB[0],1,TMPI);
02268  M01S02267.ssmove  +++|        MVARG$LB[0] = TMPI;
02269  M01S02268.ssmove  +++|        IF STAT NQ 0
02270  M01S02269.ssmove  +++|        THEN
02271  M01S02270.ssmove  +++|          BEGIN
02272  M01S02271.ssmove  +++|          CCOK = FALSE;
02273  M01S02272.ssmove  +++|          MVARG$LB[0] = DEFLB;
02274  M01S02273.ssmove  +++|          END
02275  M01S02274.ssmove  +++|
02276  M01S02275.ssmove  +++|        END
02277  M01S02276.ssmove  +++|
02278  M01S02277.ssmove  +++|      IF MVARG$L[0] EQ 0
02279  M01S02278.ssmove  +++|      THEN
02280  M01S02279.ssmove  +++|        BEGIN
02281  M01S02280.ssmove  +++|        OUT$FETP = 0;
02282  M01S02281.ssmove  +++|        END
02283  M01S02282.ssmove  +++|
02284  M01S02283.ssmove  +++|      ELSE
02285  M01S02284.ssmove  +++|        BEGIN
02286  M01S02285.ssmove  +++|        OUT$FETP = LOC(OUT$FET[0]);
02287  M01S02286.ssmove  +++|        END
02288  M01S02287.ssmove  +++|
02289  M01S02288.ssmove  +++|      IF NOT CCOK
02290  M01S02289.ssmove  +++|      THEN
02291  M01S02290.ssmove  +++|        BEGIN
02292  M01S02291.ssmove  +++|        MVMSG$LN[0] = MSG1;
02293  M01S02292.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
02294  M01S02293.ssmove  +++|        RESTPFP(PFP$ABORT);
02295  M01S02294.ssmove  +++|        END
02296  M01S02295.ssmove  +++|
02297  M01S02296.ssmove  +++|      RPOPEN(MVARG$L[0],OUT$FETP,MVHEAD);  # OPEN REPORT FILE #
02298  M01S02297.ssmove  +++|
02299  M01S02298.ssmove  +++|#
02300  M01S02299.ssmove  +++|*     GET DEFAULT FAMILY AND SUBSYSTEM ID.
02301  M01S02300.ssmove  +++|#
02302  M01S02301.ssmove  +++|
02303  M01S02302.ssmove  +++|      SSID$MV = ATAS;
02304  M01S02303.ssmove  +++|      GETFAM(FAMT,NUM,LINK,DEFORD,SSID$MV);
02305  M01S02304.ssmove  +++|
02306  M01S02305.ssmove  +++|      IF MVARG$FM[0] EQ 0
02307  M01S02306.ssmove  +++|      THEN                           # FAMILY NOT SPECIFIED #
02308  M01S02307.ssmove  +++|        BEGIN
02309  M01S02308.ssmove  +++|        MVARG$FM[0] = FAM$NAME[DEFORD];
02310  M01S02309.ssmove  +++|        END
02311  M01S02310.ssmove  +++|
02312  M01S02311.ssmove  +++|      PFP$WRD0[0] = 0;               # SET FAMILY AND USER INDEX #
02313  M01S02312.ssmove  +++|      PFP$FAM[0] = MVARG$FM[0];
02314  M01S02313.ssmove  +++|      PFP$UI[0] = DEF$UI;
02315  M01S02314.ssmove  +++|      PFP$FG1[0] = TRUE;
02316  M01S02315.ssmove  +++|      PFP$FG4[0] = TRUE;
02317  M01S02316.ssmove  +++|      SETPFP(PFP[0]);
02318  M01S02317.ssmove  +++|      IF PFP$STAT[0] NQ 0
02319  M01S02318.ssmove  +++|      THEN                           # FAMILY NOT FOUND #
02320  M01S02319.ssmove  +++|        BEGIN
02321  M01S02320.ssmove  +++|        MVMSG$LN[0] = MSG4;
02322  M01S02321.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
02323  M01S02322.ssmove  +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
02324  M01S02323.ssmove  +++|        END
02325  M01S02324.ssmove  +++|
02326  M01S02325.ssmove  +++|#
02327  M01S02326.ssmove  +++|*     CALL PROCEDURE *MVDIR* TO PROCESS DIRECTIVES.
02328  M01S02327.ssmove  +++|#
02329  M01S02328.ssmove  +++|
02330  M01S02329.ssmove  +++|      MVDIR;
02331  M01S02330.ssmove  +++|
02332  M01S02331.ssmove  +++|#
02333  M01S02332.ssmove  +++|*     CALL *MVINDEV* TO INITIALIZE DEVICE STATUS ARRAYS.
02334  M01S02333.ssmove  +++|#
02335  M01S02334.ssmove  +++|
02336  M01S02335.ssmove  +++|      MVINDEV;
02337  M01S02336.ssmove  +++|
02338  M01S02337.ssmove  +++|#
02339  M01S02338.ssmove  +++|*     ATTACH COMMUNICATION FILE.
02340  M01S02339.ssmove  +++|#
02341  M01S02340.ssmove  +++|
02342  M01S02341.ssmove  +++|      COMNAME = MVOCOM;              # ZERO FILL FILE NAME #
02343  M01S02342.ssmove  +++|      NFILES = 0;
02344  M01S02343.ssmove  +++|      BZFILL(COMNAME,TYPFILL"ZFILL",7);
02345  M01S02344.ssmove  +++|      IF NOT (PX$A[0] AND PX$B[0] AND PX$S[0] AND PX$F[0])
02346  M01S02345.ssmove  +++|      THEN
02347  M01S02346.ssmove  +++|        BEGIN
02348  M01S02347.ssmove  +++|        PF("ATTACH",COMNAME,0,"M","W","RC",STAT,"NA",0,0);
02349  M01S02348.ssmove  +++|        IF STAT NQ OK
02350  M01S02349.ssmove  +++|        THEN
02351  M01S02350.ssmove  +++|          BEGIN  # PROCESS ATTACH ERROR FLAG #
02352  M01S02351.ssmove  +++|          IF STAT EQ FBS
02353  M01S02352.ssmove  +++|          THEN                       # COMMUNICATION FILE BUSY #
02354  M01S02353.ssmove  +++|            BEGIN
02355  M01S02354.ssmove  +++|            MVMSG$LN[0] = MSG2;      # ABORT WITH DAYFILE MESSAGE #
02356  M01S02355.ssmove  +++|            MESSAGE(MVMSG[0],SYSUDF1);
02357  M01S02356.ssmove  +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02358  M01S02357.ssmove  +++|            END
02359  M01S02358.ssmove  +++|
02360  M01S02359.ssmove  +++|          IF STAT EQ FNF
02361  M01S02360.ssmove  +++|          THEN                       # FILE DOES NOT EXIST #
02362  M01S02361.ssmove  +++|            BEGIN
02363  M01S02362.ssmove  +++|            PF("DEFINE",COMNAME,0,"BR","N","RC",STAT,0);
02364  M01S02363.ssmove  +++|            IF STAT NQ OK
02365  M01S02364.ssmove  +++|            THEN                     # PROCESS DEFINE ERROR #
02366  M01S02365.ssmove  +++|              BEGIN
02367  M01S02366.ssmove  +++|              MVMSG$LN[0] = MSG3;    # ABORT WITH DAYFILE MESSAGE #
02368  M01S02367.ssmove  +++|              MESSAGE(MVMSG[0],SYSUDF1);
02369  M01S02368.ssmove  +++|              RESTPFP(PFP$ABORT);    # RESTORE USER-S *PFP* AND ABORT #
02370  M01S02369.ssmove  +++|              END
02371  M01S02370.ssmove  +++|
02372  M01S02371.ssmove  +++|            END
02373  M01S02372.ssmove  +++|
02374  M01S02373.ssmove  +++|          ELSE                       # ABNORMAL TERMINATION #
02375  M01S02374.ssmove  +++|            BEGIN
02376  M01S02375.ssmove  +++|            MVMSG$PROC[0] = PROCNAME;
02377  M01S02376.ssmove  +++|            MESSAGE(MVMSG[0],SYSUDF1);
02378  M01S02377.ssmove  +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02379  M01S02378.ssmove  +++|            END
02380  M01S02379.ssmove  +++|
02381  M01S02380.ssmove  +++|          END  # PROCESS ATTACH ERROR FLAG #
02382  M01S02381.ssmove  +++|
02383  M01S02382.ssmove  +++|        END
02384  M01S02383.ssmove  +++|
02385  M01S02384.ssmove  +++|      PDATE(CURDT$MV);               # GET CURRENT DATE AND TIME #
02386  M01S02385.ssmove  +++|      TMPI = B<24,18>CURDT$MV;
02387  M01S02386.ssmove  +++|      CURAGE = MVRELAG(TMPI);        # ESTABLISH AGE OF TODAY #
02388  M01S02387.ssmove  +++|      CURTIME = B<42,18>CURDT$MV;    # ESTABLISH CURRENT TIME #
02389  M01S02388.ssmove  +++|
02390  M01S02389.ssmove  +++|      END  # MVINIT #
02391  M01S02390.ssmove  +++|
02392  M01S02391.ssmove  +++|    TERM
02393  M01S02392.ssmove  +++|PROC MVPASS3;
02394  M01S02393.ssmove  +++|# TITLE MVPASS3 - FINAL SELECTION OF FILES TO BE RELEASED.            #
02395  M01S02394.ssmove  +++|
02396  M01S02395.ssmove  +++|      BEGIN  # MVPASS3 #
02397  M01S02396.ssmove  +++|                                               CONTROL FTNCALL;
02398  M01S02397.ssmove  +++|
02399  M01S02398.ssmove  +++|#
02400  M01S02399.ssmove  +++|**    MVPASS3 - FINAL SELECTION OF FILES TO BE RELEASED.
02401  M01S02400.ssmove  +++|*
02402  M01S02401.ssmove  +++|*     THIS PROCEDURE DOES THE FINAL SELECTION OF THE FILES TO BE
02403  M01S02402.ssmove  +++|*     RELEASED FROM DISK AND PRODUCES A PASS 3 OUTPUT FILE FOR
02404  M01S02403.ssmove  +++|*     USE IN DOING OR DIRECTING *SSEXEC* TO DO THE SELECTED ACTIONS.
02405  M01S02404.ssmove  +++|*     THIS PASS 3 OUTPUT FILE IS SORTED SUCH THAT FILES TO BE
02406  M01S02405.ssmove  +++|*     DESTAGED ARE ORDERED BY SUBFAMILY AND THEN BY SIZE (SMALL,
02407  M01S02406.ssmove  +++|*     THEN LARGE).
02408  M01S02407.ssmove  +++|*
02409  M01S02408.ssmove  +++|*     PROC MVPASS3.
02410  M01S02409.ssmove  +++|*
02411  M01S02410.ssmove  +++|*     ENTRY.    1) THE PASS 1 OUTPUT FILE IS AVAILABLE ON DISK.
02412  M01S02411.ssmove  +++|*
02413  M01S02412.ssmove  +++|*               2) THE AMOUNT OF DISK SPACE NEEDED PER DEVICE AND
02414  M01S02413.ssmove  +++|*                  FILE TYPE IS IN THE *DEV$NEED* FIELD OF *DEV$STAT*.
02415  M01S02414.ssmove  +++|*
02416  M01S02415.ssmove  +++|*     EXIT.     1) THE PASS 3 OUTPUT FILE CONTAINS ALL FILES TO BE
02417  M01S02416.ssmove  +++|*                  DESTAGED, RELEASED, STAGED, OR FREED.  FILES TO BE
02418  M01S02417.ssmove  +++|*                  DESTAGED ARE SORTED BY SUBFAMILY AND THEN FILE SIZE.
02419  M01S02418.ssmove  +++|*
02420  M01S02419.ssmove  +++|*               2) THE NUMBER OF FILES AND AMOUNT OF MSAS SPACE NEEDED
02421  M01S02420.ssmove  +++|*                  IS PROVIDED IN THE *SFDS$NF* AND *SFDS$PRU* FIELDS
02422  M01S02421.ssmove  +++|*                  OF THE ARRAY *SF$STAT*.
02423  M01S02422.ssmove  +++|*
02424  M01S02423.ssmove  +++|*     NOTES.    THE PROCESSING LOGIC FOR THIS ROUTINE IS AS FOLLOWS..
02425  M01S02424.ssmove  +++|*
02426  M01S02425.ssmove  +++|*               1) SORT THE ENTRIES OF THE PASS 1 OUTPUT FILE BY
02427  M01S02426.ssmove  +++|*                  RELEASE VALUE.
02428  M01S02427.ssmove  +++|*
02429  M01S02428.ssmove  +++|*               2) DETERMINE WHICH OF THE FILES CONDITIONALLY SELECTED
02430  M01S02429.ssmove  +++|*                  TO BE RELEASED WILL ACTUALLY BE RELEASED.  SELECT
02431  M01S02430.ssmove  +++|*                  THOSE HAVING THE LARGEST RELEASE VALUE UNTIL THE
02432  M01S02431.ssmove  +++|*                  NEEDED AMOUNT OF SPACE FOR EACH FILE TYPE ON EACH
02433  M01S02432.ssmove  +++|*                  DEVICE IS OBTAINED.
02434  M01S02433.ssmove  +++|*
02435  M01S02434.ssmove  +++|*               3) WRITE THE ENTRY FOR ALL FILES THUS SELECTED TO THE
02436  M01S02435.ssmove  +++|*                  PASS 3 OUTPUT FILE.  ALSO, COPY THE ENTRIES FOR ALL
02437  M01S02436.ssmove  +++|*                  FILES PREVIOUSLY SELECTED FOR PROCESSING.
02438  M01S02437.ssmove  +++|#
02439  M01S02438.ssmove  +++|
02440  M01S02439.ssmove  +++|#
02441  M01S02440.ssmove  +++|****  PROC MVPASS3 - XREF LIST BEGIN.
02442  M01S02441.ssmove  +++|#
02443  M01S02442.ssmove  +++|
02444  M01S02443.ssmove  +++|      XREF
02445  M01S02444.ssmove  +++|        BEGIN
02446  M01S02445.ssmove  +++|        PROC CLOSEM;                 # CLOSE FILE #
02447  M01S02446.ssmove  +++|        PROC FILESQ;                 # ESTABLISH SEQUENTIAL FILE
02448  M01S02447.ssmove  +++|                                       ORGANIZATION #
02449  M01S02448.ssmove  +++|        PROC OPENM;                  # OPEN FILE #
02450  M01S02449.ssmove  +++|        PROC READ;                   # INITIATE FILE INPUT #
02451  M01S02450.ssmove  +++|        PROC RETERN;                 # RETURN FILE #
02452  M01S02451.ssmove  +++|        PROC READW;                  # READ NEXT RECORD #
Line S02452 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02453  M02S02452.ssmove1 ---|        PROC SMEND;                  # S/M TERMINATION #
Line S02453 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02454  M02S02453.ssmove1 ---|        PROC SMFILE;                 # S/M FILE DEFINITION #
Line S02454 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02455  M02S02454.ssmove1 ---|        PROC SMKEY;                  # S/M KEY DEFINITION #
Line S02455 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02456  M02S02455.ssmove1 ---|        PROC SMSORT;                 # S/M INITIALIZATION #
02457  M01S00001.ssmove1 +++|        PROC REWIND;                 # REWIND FILE #
02458  M01S00002.ssmove1 +++|        PROC SM5END;                 # S/M TERMINATION #
02459  M01S00003.ssmove1 +++|        PROC SM5FROM;                # S/M INPUT FILE DEFINITION #
02460  M01S00004.ssmove1 +++|        PROC SM5KEY;                 # S/M KEY DEFINITION #
02461  M01S00005.ssmove1 +++|        PROC SM5SORT;                # S/M INITIALIZATION #
02462  M01S00006.ssmove1 +++|        PROC SM5TO;                  # S/M OUTPUT FILE DEFINITION #
02463  M01S02456.ssmove  +++|        PROC WRITER;                 # FLUSH FILE BUFFER #
02464  M01S02457.ssmove  +++|        PROC WRITEW;                 # WRITE RECORD #
02465  M01S02458.ssmove  +++|        PROC ZSETFET;                # INITIALIZE FET #
02466  M01S02459.ssmove  +++|        END
02467  M01S02460.ssmove  +++|
02468  M01S02461.ssmove  +++|#
02469  M01S02462.ssmove  +++|****  PROC MVPASS3 - XREF LIST END.
02470  M01S02463.ssmove  +++|#
02471  M01S02464.ssmove  +++|
02472  M01S02465.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
02473  M01S02466.ssmove  +++|      DEF SFITL      #35#;           # *FIT* BUFFER SIZE #
02474  M01S02467.ssmove  +++|
02475  M01S02468.ssmove  +++|*CALL,COMBFAS
02476  M01S02469.ssmove  +++|*CALL,COMBTDM
02477  M01S02470.ssmove  +++|*CALL,COMTMOV
02478  M01S02471.ssmove  +++|*CALL,COMTMVP
02479  M01S02472.ssmove  +++|
02480  M01S02473.ssmove  +++|      ITEM EOTDAM     B;             # SIGNAL EOF #
02481  M01S02474.ssmove  +++|      ITEM FLAG       I;             # STATUS FROM I/O CALLS #
02482  M01S02475.ssmove  +++|      ITEM IXLN       I;             # LARGE/SMALL INDEX #
02483  M01S02476.ssmove  +++|      ITEM NXTDAM     I;             # LOOP INDEX #
02484  M01S02477.ssmove  +++|
02485  M01S02478.ssmove  +++|      ARRAY FIT [1:2] S(SFITL);;     # USED TO SORT FILES #
02486  M01S02479.ssmove  +++|                                               CONTROL EJECT;
Line S02480 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02487  M02S02480.ssmove1 ---|      FILESQ(FIT[1],"LFN",SCR1,"RT","F","BT","C","FL",90);
02488  M01S00007.ssmove1 +++|      FILESQ(FIT[1],"LFN","SCR1","RT","F","BT","C","FL",90);
02489  M01S02481.ssmove  +++|      OPENM(FIT[1],"INPUT", "R");
02490  M01S02482.ssmove  +++|
02491  M01S02483.ssmove  +++|      FILESQ(FIT[2],"LFN","SCR2","RT","F","BT","C","FL",90);
02492  M01S02484.ssmove  +++|      OPENM(FIT[2],"OUTPUT","R");
02493  M01S02485.ssmove  +++|
Line S02486 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02494  M02S02486.ssmove1 ---|      SMSORT(90);                    # 90 = BUFFER SIZE #
Line S02487 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02495  M02S02487.ssmove1 ---|
Line S02488 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02496  M02S02488.ssmove1 ---|      SMFILE("SORT",0,FIT[1]);
Line S02489 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02497  M02S02489.ssmove1 ---|      SMFILE("OUTPUT",0,FIT[2]);
Line S02490 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02498  M02S02490.ssmove1 ---|
Line S02491 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02499  M02S02491.ssmove1 ---|      SMKEY(61,1,10,0,"D");          # SORT BY DECREASING RELEASE VALUE
Line S02492 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02500  M02S02492.ssmove1 ---|                                     #
Line S02493 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02501  M02S02493.ssmove1 ---|
Line S02494 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02502  M02S02494.ssmove1 ---|      SMEND;                         # INITIATE SORT USING ONE KEY #
02503  M01S00008.ssmove1 +++|      SM5SORT(0);                    # NO STATISTICS RETURNED #
02504  M01S00009.ssmove1 +++|
02505  M01S00010.ssmove1 +++|      SM5FROM("SCR1");               # DEFINE INPUT FILE #
02506  M01S00011.ssmove1 +++|
02507  M01S00012.ssmove1 +++|      SM5TO("SCR2");                 # DEFINE OUTPUT FILE #
02508  M01S00013.ssmove1 +++|
02509  M01S00014.ssmove1 +++|      SM5KEY(61,10,"BINARY","D");    # SORT BY DECREASING RELEASE VALUE
02510  M01S00015.ssmove1 +++|                                     #
02511  M01S00016.ssmove1 +++|
02512  M01S00017.ssmove1 +++|      SM5END;                        # INITIATE SORT USING ONE KEY #
02513  M01S02495.ssmove  +++|
02514  M01S02496.ssmove  +++|      CLOSEM(FIT[1]);
02515  M01S02497.ssmove  +++|      CLOSEM(FIT[2]);
02516  M01S02498.ssmove  +++|
02517  M01S02499.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
02518  M01S02500.ssmove  +++|      FETP = LOC(MV$FET[FILEMI]);
02519  M01S02501.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMI]);
02520  M01S02502.ssmove  +++|      ZSETFET(FETP,"SCR2",BUFP,MVBUFL,SFETL);
02521  M01S02503.ssmove  +++|
02522  M01S02504.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
02523  M01S02505.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
02524  M01S02506.ssmove  +++|      ZSETFET(FETP,"SCR3",BUFP,MVBUFL,SFETL);
02525  M01S00018.ssmove1 +++|      REWIND(MV$FET[FILEMI],RCL);    # REWIND SCR2 #
02526  M01S02507.ssmove  +++|
02527  M01S02508.ssmove  +++|      READ(MV$FET[FILEMI],NRCL);     # PREPARE TO READ SORTED PASS 1
02528  M01S02509.ssmove  +++|                                       OUTPUT FILE #
02529  M01S02510.ssmove  +++|      EOTDAM = FALSE;
02530  M01S02511.ssmove  +++|
02531  M01S02512.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
02532  M01S02513.ssmove  +++|      P<EXT$TDAM> = LOC(MV$WBUF[0]) + TDAMLEN;
02533  M01S02514.ssmove  +++|
02534  M01S02515.ssmove  +++|      SLOWFOR NXTDAM = 0 STEP 1 WHILE NOT EOTDAM
02535  M01S02516.ssmove  +++|      DO
02536  M01S02517.ssmove  +++|        BEGIN  # NEXT TDAM #
02537  M01S02518.ssmove  +++|        READW(MV$FET[FILEMI],MV$WBUF[0],MVWBUFL,FLAG);
02538  M01S02519.ssmove  +++|
02539  M01S02520.ssmove  +++|        IF FLAG NQ 0
02540  M01S02521.ssmove  +++|        THEN
02541  M01S02522.ssmove  +++|          BEGIN
02542  M01S02523.ssmove  +++|          EOTDAM = TRUE;
02543  M01S02524.ssmove  +++|          TEST NXTDAM;
02544  M01S02525.ssmove  +++|          END
02545  M01S02526.ssmove  +++|
02546  M01S02527.ssmove  +++|#
02547  M01S02528.ssmove  +++|*     INITIALIZE FILE INDICES.
02548  M01S02529.ssmove  +++|#
02549  M01S02530.ssmove  +++|
02550  M01S02531.ssmove  +++|        DNX = EXT$DNX[0];
02551  M01S02532.ssmove  +++|        FTYPE = EXT$FTYPE[0];
02552  M01S02533.ssmove  +++|        SFX = TDAMSBF[0];
02553  M01S02534.ssmove  +++|
02554  M01S02535.ssmove  +++|#
02555  M01S02536.ssmove  +++|*     IF THE FILE IS TO BE RELEASED, UPDATE DEVICE STATISTICS
02556  M01S02537.ssmove  +++|*     AND PROCESSING ACTION FLAGS.
02557  M01S02538.ssmove  +++|#
02558  M01S02539.ssmove  +++|
02559  M01S02540.ssmove  +++|        IF ( EXT$CREL[0]             # CANDIDATE TO BE RELEASED #
02560  M01S02541.ssmove  +++|          AND (DEV$NEED[FTYPE,DNX] GR 0) )  # AND SPACE NEEDED #
02561  M01S02542.ssmove  +++|
02562  M01S02543.ssmove  +++|        THEN                         # FILE IS TO BE RELEASED #
02563  M01S02544.ssmove  +++|          BEGIN
02564  M01S02545.ssmove  +++|          EXT$REL[0] = TRUE;
02565  M01S02546.ssmove  +++|          DEV$NEED[FTYPE,DNX] = DEV$NEED[FTYPE,DNX] - TDAMFLN[0];
02566  M01S02547.ssmove  +++|          DEV$RELF[FTYPE,DNX] = DEV$RELF[FTYPE,DNX] + 1;
02567  M01S02548.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] - TDAMFLN[0];
02568  M01S02549.ssmove  +++|          IF FTYPE EQ IXIA
02569  M01S02550.ssmove  +++|          THEN
02570  M01S02551.ssmove  +++|            BEGIN
02571  M01S02552.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TDAMFLN[0];
02572  M01S02553.ssmove  +++|            END
02573  M01S02554.ssmove  +++|
02574  M01S02555.ssmove  +++|          ELSE
02575  M01S02556.ssmove  +++|            BEGIN
02576  M01S02557.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
02577  M01S02558.ssmove  +++|            TRUPRU = (((TDAMFLN[0]+1) / PRUTRK) + 1) * PRUTRK;
02578  M01S02559.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TRUPRU;
02579  M01S02560.ssmove  +++|            END
02580  M01S02561.ssmove  +++|
02581  M01S02562.ssmove  +++|          END
02582  M01S02563.ssmove  +++|
02583  M01S02564.ssmove  +++|#
02584  M01S02565.ssmove  +++|*     FOR FILES WHICH ARE TO BE DESTAGED, COUNT THE FILES AND
02585  M01S02566.ssmove  +++|*     ALLOCATION UNIT REQUIREMENTS PER SUBFAMILY AND FILE SIZE.
02586  M01S02567.ssmove  +++|#
02587  M01S02568.ssmove  +++|
02588  M01S02569.ssmove  +++|        IF EXT$DES[0]                # DESTAGE SELECTED UNCONDITIONALLY
02589  M01S02570.ssmove  +++|                                     #
02590  M01S02571.ssmove  +++|          OR (EXT$CDES[0] AND EXT$REL[0])
02591  M01S02572.ssmove  +++|
02592  M01S02573.ssmove  +++|        THEN                         # UPDATE DATA NEEDED BY *SSEXEC*
02593  M01S02574.ssmove  +++|                                       TO DESTAGE FILES #
02594  M01S02575.ssmove  +++|          BEGIN
02595  M01S02576.ssmove  +++|          IF TDAMFLN[0] LS MVARG$LB[0]
02596  M01S02577.ssmove  +++|          THEN                       # SMALL FILE #
02597  M01S02578.ssmove  +++|            BEGIN
02598  M01S02579.ssmove  +++|            IXLN = IXSM;
02599  M01S02580.ssmove  +++|            END
02600  M01S02581.ssmove  +++|
02601  M01S02582.ssmove  +++|          ELSE                       # LARGE FILE #
02602  M01S02583.ssmove  +++|            BEGIN
02603  M01S02584.ssmove  +++|            IXLN = IXLG;
02604  M01S02585.ssmove  +++|            END
02605  M01S02586.ssmove  +++|
02606  M01S02587.ssmove  +++|          EXT$DES[0] = TRUE;
02607  M01S02588.ssmove  +++|          EXT$IXLN[0] = IXLN;
02608  M01S02589.ssmove  +++|          SFDS$NF[FTYPE,SFX] = SFDS$NF[FTYPE,SFX] + 1;
02609  M01S02590.ssmove  +++|          SFDS$PRU[FTYPE,SFX] = SFDS$PRU[FTYPE,SFX] + TDAMFLN[0];
02610  M01S02591.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
02611  M01S02592.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + TDAMFLN[0];
02612  M01S02593.ssmove  +++|          END
02613  M01S02594.ssmove  +++|
02614  M01S02595.ssmove  +++|#
02615  M01S02596.ssmove  +++|*     COUNT THE NUMBER OF AND TOTAL LENGTH OF FILES TO BE STAGED.
02616  M01S02597.ssmove  +++|#
02617  M01S02598.ssmove  +++|
02618  M01S02599.ssmove  +++|        IF EXT$STG[0]
02619  M01S02600.ssmove  +++|        THEN
02620  M01S02601.ssmove  +++|          BEGIN
02621  M01S02602.ssmove  +++|          SFSG$NF[FTYPE,SFX] = SFSG$NF[FTYPE,SFX] + 1;
02622  M01S02603.ssmove  +++|          SFSG$PRU[FTYPE,SFX] = SFSG$PRU[FTYPE,SFX] + TDAMFLN[0];
02623  M01S02604.ssmove  +++|          SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] - 1;
02624  M01S02605.ssmove  +++|          SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] - TDAMFLN[0];
02625  M01S02606.ssmove  +++|          END
02626  M01S02607.ssmove  +++|
02627  M01S02608.ssmove  +++|        IF EXT$CLR[0] OR TDAMFFF[0]
02628  M01S02609.ssmove  +++|        THEN
02629  M01S02610.ssmove  +++|          BEGIN
02630  M01S02611.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] - 1;
02631  M01S02612.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] - TDAMFLN[0];
02632  M01S02613.ssmove  +++|          END
02633  M01S02614.ssmove  +++|
02634  M01S02615.ssmove  +++|        ELSE
02635  M01S02616.ssmove  +++|          BEGIN
02636  M01S02617.ssmove  +++|          IF EXT$REL[0]
02637  M01S02618.ssmove  +++|          THEN
02638  M01S02619.ssmove  +++|            BEGIN
02639  M01S02620.ssmove  +++|            SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] + 1;
02640  M01S02621.ssmove  +++|            SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] + TDAMFLN[0];
02641  M01S02622.ssmove  +++|            END
02642  M01S02623.ssmove  +++|
02643  M01S02624.ssmove  +++|          END
02644  M01S02625.ssmove  +++|
02645  M01S02626.ssmove  +++|#
02646  M01S02627.ssmove  +++|*     FOR FILES SELECTED FOR FURTHER PROCESSING
02647  M01S02628.ssmove  +++|*     (EXT$STG/REL/DES/CLR BIT SET), WRITE THE FILE-S ENTRY
02648  M01S02629.ssmove  +++|*     TO THE PASS 3 OUTPUT FILE.
02649  M01S02630.ssmove  +++|#
02650  M01S02631.ssmove  +++|
02651  M01S02632.ssmove  +++|        IF EXT$PA3[0] NQ 0
02652  M01S02633.ssmove  +++|        THEN
02653  M01S02634.ssmove  +++|          BEGIN
02654  M01S02635.ssmove  +++|          WRITEW(MV$FET[FILEMO],MV$WBUF[0],MVWBUFL,FLAG);
02655  M01S02636.ssmove  +++|          END
02656  M01S02637.ssmove  +++|
02657  M01S02638.ssmove  +++|        END  # NEXT TDAM #
02658  M01S02639.ssmove  +++|
02659  M01S02640.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
02660  M01S02641.ssmove  +++|
02661  M01S02642.ssmove  +++|#
02662  M01S02643.ssmove  +++|*     SORT THE ABOVE FILE BY SUBFAMILY, FILE SIZE (SMALL/LARGE),
02663  M01S02644.ssmove  +++|*     AND FILE LENGTH SO IT CAN BE PROCESSED BY THE NEXT ROUTINE.
02664  M01S02645.ssmove  +++|#
02665  M01S02646.ssmove  +++|
02666  M01S02647.ssmove  +++|      FILESQ(FIT[1],"LFN","SCR3","RT","F","BT","C","FL",90);
02667  M01S02648.ssmove  +++|      OPENM(FIT[1],"INPUT","R");
02668  M01S02649.ssmove  +++|
02669  M01S02650.ssmove  +++|      FILESQ(FIT[2],"LFN","SCR4","RT","F","BT","C","FL",90);
02670  M01S02651.ssmove  +++|      OPENM(FIT[2],"OUTPUT","R");
02671  M01S02652.ssmove  +++|
Line S02653 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02672  M02S02653.ssmove1 ---|      SMSORT(90);
Line S02654 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02673  M02S02654.ssmove1 ---|
Line S02655 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02674  M02S02655.ssmove1 ---|      SMFILE("SORT",0,FIT[1]);       # DEFINE INPUT FILE #
Line S02656 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02675  M02S02656.ssmove1 ---|
Line S02657 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02676  M02S02657.ssmove1 ---|      SMFILE("OUTPUT",0,FIT[2]);     # DEFINE OUTPUT FILE #
Line S02658 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02677  M02S02658.ssmove1 ---|
Line S02659 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02678  M02S02659.ssmove1 ---|      SMKEY(30,4,0,3);               # KEY1 = SUBFAMILY #
Line S02660 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02679  M02S02660.ssmove1 ---|
Line S02661 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02680  M02S02661.ssmove1 ---|      SMKEY(73,1,1,0);               # KEY2 = FILE SIZE *IXLN* #
Line S02662 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02681  M02S02662.ssmove1 ---|
Line S02663 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02682  M02S02663.ssmove1 ---|      SMKEY(51,2,4,0,"D");           # KEY3 = FILE LENGTH #
Line S02664 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02683  M02S02664.ssmove1 ---|
Line S02665 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02684  M02S02665.ssmove1 ---|      SMEND;                         # INITIATE SORTING ON THE THREE
Line S02666 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02685  M02S02666.ssmove1 ---|                                       KEYS #
02686  M01S00019.ssmove1 +++|      SM5SORT(0);                    # NO STATISTICS RETURNED #
02687  M01S00020.ssmove1 +++|
02688  M01S00021.ssmove1 +++|      SM5FROM("SCR3");               # DEFINE INPUT FILE #
02689  M01S00022.ssmove1 +++|
02690  M01S00023.ssmove1 +++|      SM5TO("SCR4");                 # DEFINE OUTPUT FILE #
02691  M01S00024.ssmove1 +++|
02692  M01S00025.ssmove1 +++|      SM5KEY(178,3,"BINARY_BITS");   # KEY1 = SUBFAMILY #
02693  M01S00026.ssmove1 +++|
02694  M01S00027.ssmove1 +++|      SM5KEY(73,1,"BINARY");         # KEY2 = FILE SIZE *IXLN* #
02695  M01S00028.ssmove1 +++|
02696  M01S00029.ssmove1 +++|      SM5KEY(302,23,"BINARY_BITS","D");  # KEY3 = FILE LENGTH #
02697  M01S00030.ssmove1 +++|
02698  M01S00031.ssmove1 +++|      SM5END;                        # INITIATE SORTING ON THE THREE
02699  M01S00032.ssmove1 +++|                                       KEYS #
02700  M01S02667.ssmove  +++|
02701  M01S02668.ssmove  +++|      CLOSEM(FIT[1]);
02702  M01S02669.ssmove  +++|      CLOSEM(FIT[2]);
02703  M01S02670.ssmove  +++|      RETERN(MV$FET[FILEMI],RCL);
02704  M01S02671.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
02705  M01S02672.ssmove  +++|      END  # MVPASS3 #
02706  M01S02673.ssmove  +++|
02707  M01S02674.ssmove  +++|    TERM
02708  M01S02675.ssmove  +++|PROC MVPASS4;
02709  M01S02676.ssmove  +++|# TITLE MVPASS4 - SETS UP THE COMMUNICATION FILE.                     #
02710  M01S02677.ssmove  +++|
02711  M01S02678.ssmove  +++|      BEGIN  # MVPASS4 #
02712  M01S02679.ssmove  +++|
02713  M01S02680.ssmove  +++|#
02714  M01S02681.ssmove  +++|**    MVPASS4 - SETS UP THE COMMUNICATION FILE.
02715  M01S02682.ssmove  +++|*
02716  M01S02683.ssmove  +++|*     THIS PROCEDURE READS THE FILE CONTAINING AN ENTRY FOR
02717  M01S02684.ssmove  +++|*     EACH FILE SELECTED FOR PROCESSING AND EITHER DOES IT DIRECTLY,
02718  M01S02685.ssmove  +++|*     OR WRITES AN ENTRY ON THE *SSEXEC* COMMUNICATION FILE SO
02719  M01S02686.ssmove  +++|*     *SSEXEC* CAN DESTAGE THE FILE AND OPTIONALLY RELEASE IT FROM
02720  M01S02687.ssmove  +++|*     DISK.  FILES WHICH ARE PROCESSED DIRECTLY ARE PASSED TO
02721  M01S02688.ssmove  +++|*     PROCEDURE *MVDOIT* WHICH CALLS *PFM* TO PERFORM THE ACTION.
02722  M01S02689.ssmove  +++|*     THIS PROCEDURE ALSO WRITES A LINE ON THE OUTPUT FILE FOR EACH
02723  M01S02690.ssmove  +++|*     FILE SELECTED FOR PROCESSING, IF THE *LO=F* OPTION IS ON.
02724  M01S02691.ssmove  +++|*
02725  M01S02692.ssmove  +++|*     PROC MVPASS4.
02726  M01S02693.ssmove  +++|*
02727  M01S02694.ssmove  +++|*     ENTRY.   FILE *SCR4* CONTAINS ENTRIES FOR ALL FILES TO BE
02728  M01S02695.ssmove  +++|*              PROCESSED.  IT IS SORTED BY SUBFAMILY, FILE LENGTH
02729  M01S02696.ssmove  +++|*              (SHORT/LONG), AND FILE SIZE (BY PRU LENGTH, LARGEST
02730  M01S02697.ssmove  +++|*              FIRST).
02731  M01S02698.ssmove  +++|*
02732  M01S02699.ssmove  +++|*     EXIT.    1) CALLS TO *MVDOIT* ARE DONE TO CAUSE PROCESSING FOR
02733  M01S02700.ssmove  +++|*                 FILES TO BE STAGED, RELEASED OR FREED FROM A
02734  M01S02701.ssmove  +++|*                 CARTRIDGE.
02735  M01S02702.ssmove  +++|*
02736  M01S02703.ssmove  +++|*              2) ENTRIES FOR FILES TO BE DESTAGED OR DESTAGED AND
02737  M01S02704.ssmove  +++|*                 RELEASED ARE WRITTEN TO THE COMMUNICATION FILE.
02738  M01S02705.ssmove  +++|*
02739  M01S02706.ssmove  +++|*              3) THE OUTPUT FILE CONTAINS AN ENTRY FOR EACH FILE
02740  M01S02707.ssmove  +++|*                 SELECTED FOR PROCESSING.
02741  M01S02708.ssmove  +++|#
02742  M01S02709.ssmove  +++|
02743  M01S02710.ssmove  +++|#
02744  M01S02711.ssmove  +++|****  PROC MVPASS4 - XREF LIST BEGIN.
02745  M01S02712.ssmove  +++|#
02746  M01S02713.ssmove  +++|
02747  M01S02714.ssmove  +++|      XREF
02748  M01S02715.ssmove  +++|        BEGIN
02749  M01S02716.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
02750  M01S02717.ssmove  +++|        PROC MVDOIT;                 # PERFORM PROCESSING, EXCEPT
02751  M01S02718.ssmove  +++|                                       DESTAGES #
02752  M01S02719.ssmove  +++|        PROC MVPRNDT;                # PRINT DATE AND ACCESS COUNT #
02753  M01S02720.ssmove  +++|        PROC MVRPTDS;                # REPORT DEVICE STATUS #
02754  M01S02721.ssmove  +++|        PROC READ;                   # INITIATE DATA TRANSFER INTO A
02755  M01S02722.ssmove  +++|                                       BUFFER #
02756  M01S02723.ssmove  +++|        PROC READW;                  # READ A RECORD INTO WORKING
02757  M01S02724.ssmove  +++|                                       BUFFER #
02758  M01S02725.ssmove  +++|        PROC RETERN;                 # RETURN FILE #
02759  M01S00033.ssmove1 +++|        PROC REWIND;                 # REWIND FILE #
02760  M01S02726.ssmove  +++|        PROC RPEJECT;                # ISSUE PAGE EJECT #
02761  M01S02727.ssmove  +++|        PROC RPLINE;                 # WRITE LINE ON OUTPUT FILE #
02762  M01S02728.ssmove  +++|        PROC WRITER;                 # FLUSH BUFFER TO FILE #
02763  M01S02729.ssmove  +++|        PROC WRITEW;                 # WRITE RECORD TO FILE BUFFER #
02764  M01S02730.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
02765  M01S02731.ssmove  +++|        PROC ZSETFET;                # INITIALIZE *FET* #
02766  M01S02732.ssmove  +++|        FUNC XCDD C(10);             # CONVERT BINARY TO DECIMAL
02767  M01S02733.ssmove  +++|                                       DISPLAY #
02768  M01S02734.ssmove  +++|        FUNC XCOD C(10);             # CONVERT BINARY TO OCTAL DISPLAY
02769  M01S02735.ssmove  +++|                                     #
02770  M01S02736.ssmove  +++|        END
02771  M01S02737.ssmove  +++|
02772  M01S02738.ssmove  +++|#
02773  M01S02739.ssmove  +++|****  PROC MVPASS4 - XREF LIST END.
02774  M01S02740.ssmove  +++|#
02775  M01S02741.ssmove  +++|
02776  M01S02742.ssmove  +++|
02777  M01S02743.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
02778  M01S02744.ssmove  +++|
02779  M01S02745.ssmove  +++|*CALL,COMBFAS
02780  M01S02746.ssmove  +++|*CALL,COMBBZF
02781  M01S02747.ssmove  +++|*CALL,COMBTDM
02782  M01S02748.ssmove  +++|*CALL,COMTMOV
02783  M01S02749.ssmove  +++|*CALL COMTMVP
02784  M01S02750.ssmove  +++|*CALL,COMTOUT
02785  M01S02751.ssmove  +++|
02786  M01S02752.ssmove  +++|
02787  M01S02753.ssmove  +++|      DEF FILEHDR1   #"NAME    TYPE     UI    LENGTH     DATE"#;
02788  M01S02754.ssmove  +++|      DEF FILEHDR2   #"  ACC-CT  ACTION(* = NOT DONE PER *PX* OPTION)"
02789  M01S02755.ssmove  +++|        #;
02790  M01S02756.ssmove  +++|      DEF FILEHDR3   #"DES-VAL   REL-VAL"#;
02791  M01S02757.ssmove  +++|      DEF MSGCLR     #"CLEAR *ASA* FIELD.   "#;
02792  M01S02758.ssmove  +++|      DEF MSGDES     #"DESTAGE FILE.        "#;
02793  M01S02759.ssmove  +++|      DEF MSGDSR     #"DESTAGE AND RELEASE. "#;
02794  M01S02760.ssmove  +++|      DEF MSGREL     #"RELEASE FROM DISK.   "#;
02795  M01S02761.ssmove  +++|      DEF MSGSCLR    #"STAGE, CLEAR *ASA*.  "#;
02796  M01S02762.ssmove  +++|      DEF MSGSTG     #"STAGE FILE TO DISK.  "#;
02797  M01S02763.ssmove  +++|
02798  M01S02764.ssmove  +++|      ITEM EOTDAM     B;             # SIGNALS END-OF-FILE #
02799  M01S02765.ssmove  +++|      ITEM FLAG       I;             # READ STATUS #
02800  M01S02766.ssmove  +++|      ITEM NXTDAM     U;             # LOOP INDEX #
02801  M01S02767.ssmove  +++|      ITEM PREVSF     I;             # PREVIOUS SUBFAMILY #
02802  M01S02768.ssmove  +++|      ITEM SKIP       B;             # CCNTROLS DOING SELECTED ACTION #
02803  M01S02769.ssmove  +++|      ITEM TMPC       C(10);         # TEMPORARY CELL #
02804  M01S02770.ssmove  +++|
02805  M01S02771.ssmove  +++|
02806  M01S02772.ssmove  +++|      ARRAY DTDAM [0:0] S(TDAMLEN);;  # DESTAGE HEADER FOR A SUBFAMILY
02807  M01S02773.ssmove  +++|                                      #
02808  M01S02774.ssmove  +++|                                               CONTROL EJECT;
02809  M01S02775.ssmove  +++|#
02810  M01S02776.ssmove  +++|*     DETERMINE WHETHER TO LIST EACH FILE FOR PROCESSING.
02811  M01S02777.ssmove  +++|#
02812  M01S02778.ssmove  +++|
02813  M01S02779.ssmove  +++|
02814  M01S02780.ssmove  +++|        IF LO$F[0]
02815  M01S02781.ssmove  +++|        THEN                         # FULL LISTING #
02816  M01S02782.ssmove  +++|          BEGIN
02817  M01S02783.ssmove  +++|          LISTFETP = OUT$FETP;
02818  M01S02784.ssmove  +++|          PX$FETP = OUT$FETP;
02819  M01S02785.ssmove  +++|          END
02820  M01S02786.ssmove  +++|
02821  M01S02787.ssmove  +++|        ELSE
02822  M01S02788.ssmove  +++|          BEGIN
02823  M01S02789.ssmove  +++|          IF LO$P[0]
02824  M01S02790.ssmove  +++|          THEN                       # PARTIAL LISTING #
02825  M01S02791.ssmove  +++|            BEGIN
02826  M01S02792.ssmove  +++|            LISTFETP = OUT$FETP;
02827  M01S02793.ssmove  +++|            PX$FETP = 0;
02828  M01S02794.ssmove  +++|            END
02829  M01S02795.ssmove  +++|
02830  M01S02796.ssmove  +++|          ELSE
02831  M01S02797.ssmove  +++|            BEGIN
02832  M01S02798.ssmove  +++|            LISTFETP = 0;
02833  M01S02799.ssmove  +++|            PX$FETP = 0;
02834  M01S02800.ssmove  +++|            END
02835  M01S02801.ssmove  +++|
02836  M01S02802.ssmove  +++|          END
02837  M01S02803.ssmove  +++|
02838  M01S02804.ssmove  +++|#
02839  M01S02805.ssmove  +++|*     INITIALIZE *FET* FOR THE FILES USED BY THIS PROCEDURE.
02840  M01S02806.ssmove  +++|#
02841  M01S02807.ssmove  +++|
02842  M01S02808.ssmove  +++|      FETP = LOC(MV$FET[FILEMI]);
02843  M01S02809.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMI]);
02844  M01S02810.ssmove  +++|      ZSETFET(FETP,SCR4,BUFP,MVBUFL,SFETL);
02845  M01S00034.ssmove1 +++|      REWIND(MV$FET[FILEMI],RCL);    # REWIND SCR4 #
02846  M01S02811.ssmove  +++|      READ(MV$FET[FILEMI],NRCL);
02847  M01S02812.ssmove  +++|
02848  M01S02813.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
02849  M01S02814.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
02850  M01S02815.ssmove  +++|      ZSETFET(FETP,MVOCOM,BUFP,MVBUFL,SFETL);
02851  M01S02816.ssmove  +++|
02852  M01S02817.ssmove  +++|      FETP = LOC(MV$FET[FILEAUX]);
02853  M01S02818.ssmove  +++|      BUFP = LOC(MV$BUF[FILEAUX]);
02854  M01S02819.ssmove  +++|      ZSETFET(FETP,MVLPROB,BUFP,MVBUFL,SFETL);
02855  M01S02820.ssmove  +++|
02856  M01S02821.ssmove  +++|#
02857  M01S02822.ssmove  +++|*     WRITE HEADER TO COMMUNICATION FILE.
02858  M01S02823.ssmove  +++|#
02859  M01S02824.ssmove  +++|
02860  M01S02825.ssmove  +++|      P<MVPREAM> = LOC(MV$WBUF[0]);
02861  M01S02826.ssmove  +++|      ZFILL(MVPREAM,MVPRML);
02862  M01S02827.ssmove  +++|      MVPR$FLNM[0] = MVOCOM;
02863  M01S02828.ssmove  +++|      BZFILL(MVPR$FLNM[0],TYPFILL"BFILL",6);
02864  M01S02829.ssmove  +++|      MVPR$DT[0] = CURDT$MV;
02865  M01S02830.ssmove  +++|      MVPR$LB[0] = MVARG$LB[0];
02866  M01S02831.ssmove  +++|
02867  M01S02832.ssmove  +++|      WRITEW(MV$FET[FILEMO],MVPREAM[0],MVPRML,FLAG);
02868  M01S02833.ssmove  +++|
02869  M01S02834.ssmove  +++|      PREVSF = 8;
02870  M01S02835.ssmove  +++|      EOTDAM = FALSE;
02871  M01S02836.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
02872  M01S02837.ssmove  +++|
02873  M01S02838.ssmove  +++|      RPEJECT(LISTFETP);
02874  M01S02839.ssmove  +++|      RPLINE(LISTFETP,FILEHDR1,2,38,1);
02875  M01S02840.ssmove  +++|      RPLINE(LISTFETP,FILEHDR2,42,46,1);
02876  M01S02841.ssmove  +++|      RPLINE(LISTFETP,FILEHDR3,90,17,0);
02877  M01S02842.ssmove  +++|      RPLINE(LISTFETP," ",1,1,0);
02878  M01S02843.ssmove  +++|
02879  M01S02844.ssmove  +++|      SLOWFOR NXTDAM = 0 STEP 1 WHILE NOT EOTDAM
02880  M01S02845.ssmove  +++|      DO
02881  M01S02846.ssmove  +++|        BEGIN  # NEXT TDAM REQUEST #
02882  M01S02847.ssmove  +++|        READW(MV$FET[FILEMI],MV$WBUF,MVWBUFL,FLAG);
02883  M01S02848.ssmove  +++|        IF FLAG NQ 0
02884  M01S02849.ssmove  +++|        THEN
02885  M01S02850.ssmove  +++|          BEGIN
02886  M01S02851.ssmove  +++|          EOTDAM = TRUE;
02887  M01S02852.ssmove  +++|          TEST NXTDAM;
02888  M01S02853.ssmove  +++|          END
02889  M01S02854.ssmove  +++|#
02890  M01S02855.ssmove  +++|*     SET OUTPUT FILE.
02891  M01S02856.ssmove  +++|#
02892  M01S02857.ssmove  +++|
02893  M01S02858.ssmove  +++|        IF LO$P[0]
02894  M01S02859.ssmove  +++|        THEN
02895  M01S02860.ssmove  +++|          BEGIN
02896  M01S02861.ssmove  +++|          LISTFETP = OUT$FETP;
02897  M01S02862.ssmove  +++|          END
02898  M01S02863.ssmove  +++|
02899  M01S02864.ssmove  +++|#
02900  M01S02865.ssmove  +++|*     SEND ALL REQUESTS WITH A DESTAGE TO *SSEXEC*.
02901  M01S02866.ssmove  +++|*     CALL *MVDOIT* TO PERFORM ALL OTHER REQUESTS.
02902  M01S02867.ssmove  +++|#
02903  M01S02868.ssmove  +++|
02904  M01S02869.ssmove  +++|        IF EXT$DES[0]
02905  M01S02870.ssmove  +++|        THEN                         # SEND TO *SSEXEC* #
02906  M01S02871.ssmove  +++|          BEGIN  # DESTAGE FILE #
02907  M01S02872.ssmove  +++|
02908  M01S02873.ssmove  +++|#
02909  M01S02874.ssmove  +++|*     WRITE SELECTED PROCESSING MESSAGE TO OUTPUT FILE FOR
02910  M01S02875.ssmove  +++|*     FILES TO BE DESTAGED OR DESTAGED AND RELEASED.
02911  M01S02876.ssmove  +++|#
02912  M01S02877.ssmove  +++|
02913  M01S02878.ssmove  +++|          IF EXT$REL[0]
02914  M01S02879.ssmove  +++|          THEN                       # DESTAGE AND RELEASE #
02915  M01S02880.ssmove  +++|            BEGIN
02916  M01S02881.ssmove  +++|            TDAMFC[0] = TDAMFCODE"DESTRLS";
02917  M01S02882.ssmove  +++|            SKIP = PX$A[0] OR PX$B[0];
02918  M01S02883.ssmove  +++|            IF SKIP
02919  M01S02884.ssmove  +++|            THEN
02920  M01S02885.ssmove  +++|              BEGIN
02921  M01S02886.ssmove  +++|              LISTFETP = PX$FETP;
02922  M01S02887.ssmove  +++|              END
02923  M01S02888.ssmove  +++|
02924  M01S02889.ssmove  +++|            RPLINE(LISTFETP,MSGDSR,54,20,1);
02925  M01S02890.ssmove  +++|            MVPRNDT(TDAMLAD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
02926  M01S02891.ssmove  +++|            END
02927  M01S02892.ssmove  +++|
02928  M01S02893.ssmove  +++|          ELSE                       # DESTAGE ONLY #
02929  M01S02894.ssmove  +++|            BEGIN
02930  M01S02895.ssmove  +++|            TDAMFC[0] = TDAMFCODE"DESTAGE";
02931  M01S02896.ssmove  +++|            SKIP = PX$B[0];
02932  M01S02897.ssmove  +++|            IF SKIP
02933  M01S02898.ssmove  +++|            THEN
02934  M01S02899.ssmove  +++|              BEGIN
02935  M01S02900.ssmove  +++|              LISTFETP = PX$FETP;
02936  M01S02901.ssmove  +++|              END
02937  M01S02902.ssmove  +++|
02938  M01S02903.ssmove  +++|            RPLINE(LISTFETP,MSGDES,54,20,1);
02939  M01S02904.ssmove  +++|            MVPRNDT(TDAMLMD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
02940  M01S02905.ssmove  +++|            END
02941  M01S02906.ssmove  +++|
02942  M01S02907.ssmove  +++|#
02943  M01S02908.ssmove  +++|*     WRITE OUTPUT LINE IDENTIFYING FILE.
02944  M01S02909.ssmove  +++|#
02945  M01S02910.ssmove  +++|
02946  M01S02911.ssmove  +++|          TMPC = TDAMPFN[0];
02947  M01S02912.ssmove  +++|          BZFILL(TMPC,TYPFILL"BFILL",7);
02948  M01S02913.ssmove  +++|          RPLINE(LISTFETP,TMPC,2,7,1);   # PFN #
02949  M01S02914.ssmove  +++|
02950  M01S02915.ssmove  +++|          TMPC = XCOD(TDAMUI[0]);
02951  M01S02916.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,10,1); # UI #
02952  M01S02917.ssmove  +++|
02953  M01S02918.ssmove  +++|          TMPC = XCDD(TDAMFLN[0]);
02954  M01S02919.ssmove  +++|          RPLINE(LISTFETP,TMPC,21,10,1); # LENGTH IN PRU #
02955  M01S02920.ssmove  +++|
02956  M01S02921.ssmove  +++|          IF EXT$FTYPE[0] EQ IXIA
02957  M01S02922.ssmove  +++|          THEN
02958  M01S02923.ssmove  +++|            BEGIN
02959  M01S02924.ssmove  +++|            TMPC = "IND.";
02960  M01S02925.ssmove  +++|            END
02961  M01S02926.ssmove  +++|
02962  M01S02927.ssmove  +++|          ELSE
02963  M01S02928.ssmove  +++|            BEGIN
02964  M01S02929.ssmove  +++|            TMPC = "DIR.";
02965  M01S02930.ssmove  +++|            END
02966  M01S02931.ssmove  +++|
02967  M01S02932.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,4,1);
02968  M01S02933.ssmove  +++|
02969  M01S02934.ssmove  +++|          IF SKIP
02970  M01S02935.ssmove  +++|          THEN
02971  M01S02936.ssmove  +++|            BEGIN
02972  M01S02937.ssmove  +++|            TMPC = "*";
02973  M01S02938.ssmove  +++|            END
02974  M01S02939.ssmove  +++|
02975  M01S02940.ssmove  +++|          ELSE
02976  M01S02941.ssmove  +++|            BEGIN
02977  M01S02942.ssmove  +++|            TMPC = " ";
02978  M01S02943.ssmove  +++|            WRITEW(MV$FET[FILEMO],MV$WBUF[0], TDAMLEN,FLAG);
02979  M01S02944.ssmove  +++|            NFILES = NFILES + 1;
02980  M01S02945.ssmove  +++|            END
02981  M01S02946.ssmove  +++|
02982  M01S02947.ssmove  +++|          RPLINE(LISTFETP,TMPC,53,1,0);
02983  M01S02948.ssmove  +++|          TEST NXTDAM;
02984  M01S02949.ssmove  +++|          END  # DESTAGE FILE #
02985  M01S02950.ssmove  +++|
02986  M01S02951.ssmove  +++|#
02987  M01S02952.ssmove  +++|*     ISSUE CORRECT PROCESSING ACTION TEXT TO THE REPORT LINE.
02988  M01S02953.ssmove  +++|*     CALL *MVDOIT* IF IT IS OK TO PERFORM THE SELECTED ACTION.
02989  M01S02954.ssmove  +++|#
02990  M01S02955.ssmove  +++|
02991  M01S02956.ssmove  +++|        IF EXT$STG[0]
02992  M01S02957.ssmove  +++|        THEN
02993  M01S02958.ssmove  +++|          BEGIN
02994  M01S02959.ssmove  +++|          IF EXT$CLR[0]
02995  M01S02960.ssmove  +++|          THEN
02996  M01S02961.ssmove  +++|            BEGIN
02997  M01S02962.ssmove  +++|            SKIP = PX$F[0] OR PX$S[0];
02998  M01S02963.ssmove  +++|            IF SKIP
02999  M01S02964.ssmove  +++|            THEN
03000  M01S02965.ssmove  +++|              BEGIN
03001  M01S02966.ssmove  +++|              LISTFETP = PX$FETP;
03002  M01S02967.ssmove  +++|              END
03003  M01S02968.ssmove  +++|
03004  M01S02969.ssmove  +++|            RPLINE(LISTFETP,MSGSCLR,54,20,1);
03005  M01S02970.ssmove  +++|            END
03006  M01S02971.ssmove  +++|
03007  M01S02972.ssmove  +++|          ELSE                       # STAGE ONLY #
03008  M01S02973.ssmove  +++|            BEGIN
03009  M01S02974.ssmove  +++|            SKIP = PX$S[0];
03010  M01S02975.ssmove  +++|            IF SKIP
03011  M01S02976.ssmove  +++|            THEN
03012  M01S02977.ssmove  +++|              BEGIN
03013  M01S02978.ssmove  +++|              LISTFETP = PX$FETP;
03014  M01S02979.ssmove  +++|              END
03015  M01S02980.ssmove  +++|
03016  M01S02981.ssmove  +++|            RPLINE(LISTFETP,MSGSTG,54,20,1);
03017  M01S02982.ssmove  +++|            END
03018  M01S02983.ssmove  +++|
03019  M01S02984.ssmove  +++|          END
03020  M01S02985.ssmove  +++|
03021  M01S02986.ssmove  +++|        ELSE                         # NO STAGE INVOLVED #
03022  M01S02987.ssmove  +++|          BEGIN
03023  M01S02988.ssmove  +++|          IF EXT$CLR[0]
03024  M01S02989.ssmove  +++|          THEN                       # CLEAR ASA DIRECTLY #
03025  M01S02990.ssmove  +++|            BEGIN
03026  M01S02991.ssmove  +++|            SKIP = PX$F[0];
03027  M01S02992.ssmove  +++|            IF SKIP
03028  M01S02993.ssmove  +++|            THEN
03029  M01S02994.ssmove  +++|              BEGIN
03030  M01S02995.ssmove  +++|              LISTFETP = PX$FETP;
03031  M01S02996.ssmove  +++|              END
03032  M01S02997.ssmove  +++|
03033  M01S02998.ssmove  +++|            RPLINE(LISTFETP,MSGCLR,54,20,1);
03034  M01S02999.ssmove  +++|            END
03035  M01S03000.ssmove  +++|
03036  M01S03001.ssmove  +++|          ELSE                       # MUST BE RELEASE #
03037  M01S03002.ssmove  +++|            BEGIN
03038  M01S03003.ssmove  +++|            SKIP = PX$A[0];
03039  M01S03004.ssmove  +++|            IF SKIP
03040  M01S03005.ssmove  +++|            THEN
03041  M01S03006.ssmove  +++|              BEGIN
03042  M01S03007.ssmove  +++|              LISTFETP = PX$FETP;
03043  M01S03008.ssmove  +++|              END
03044  M01S03009.ssmove  +++|
03045  M01S03010.ssmove  +++|            RPLINE(LISTFETP,MSGREL,54,20,1);
03046  M01S03011.ssmove  +++|            MVPRNDT(TDAMLAD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
03047  M01S03012.ssmove  +++|            END
03048  M01S03013.ssmove  +++|
03049  M01S03014.ssmove  +++|          END
03050  M01S03015.ssmove  +++|
03051  M01S03016.ssmove  +++|#
03052  M01S03017.ssmove  +++|*     WRITE OUTPUT LINE IDENTIFYING FILE.
03053  M01S03018.ssmove  +++|#
03054  M01S03019.ssmove  +++|
03055  M01S03020.ssmove  +++|          TMPC = TDAMPFN[0];
03056  M01S03021.ssmove  +++|          BZFILL(TMPC,TYPFILL"BFILL",7);
03057  M01S03022.ssmove  +++|          RPLINE(LISTFETP,TMPC,2,7,1);   # PFN #
03058  M01S03023.ssmove  +++|
03059  M01S03024.ssmove  +++|          TMPC = XCOD(TDAMUI[0]);
03060  M01S03025.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,10,1); # UI #
03061  M01S03026.ssmove  +++|
03062  M01S03027.ssmove  +++|          TMPC = XCDD(TDAMFLN[0]);
03063  M01S03028.ssmove  +++|          RPLINE(LISTFETP,TMPC,21,10,1); # LENGTH IN PRU #
03064  M01S03029.ssmove  +++|
03065  M01S03030.ssmove  +++|          IF EXT$FTYPE[0] EQ IXIA
03066  M01S03031.ssmove  +++|          THEN
03067  M01S03032.ssmove  +++|            BEGIN
03068  M01S03033.ssmove  +++|            TMPC = "IND.";
03069  M01S03034.ssmove  +++|            END
03070  M01S03035.ssmove  +++|
03071  M01S03036.ssmove  +++|          ELSE
03072  M01S03037.ssmove  +++|            BEGIN
03073  M01S03038.ssmove  +++|            TMPC = "DIR.";
03074  M01S03039.ssmove  +++|            END
03075  M01S03040.ssmove  +++|
03076  M01S03041.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,4,1);
03077  M01S03042.ssmove  +++|
03078  M01S03043.ssmove  +++|        IF SKIP
03079  M01S03044.ssmove  +++|        THEN
03080  M01S03045.ssmove  +++|          BEGIN
03081  M01S03046.ssmove  +++|          TMPC = "*";
03082  M01S03047.ssmove  +++|          END
03083  M01S03048.ssmove  +++|
03084  M01S03049.ssmove  +++|        ELSE
03085  M01S03050.ssmove  +++|          BEGIN
03086  M01S03051.ssmove  +++|          TMPC = " ";
03087  M01S03052.ssmove  +++|          MVDOIT;
03088  M01S03053.ssmove  +++|          END
03089  M01S03054.ssmove  +++|
03090  M01S03055.ssmove  +++|        RPLINE(LISTFETP,TMPC,53,1,0);
03091  M01S03056.ssmove  +++|
03092  M01S03057.ssmove  +++|        TEST NXTDAM;
03093  M01S03058.ssmove  +++|        END  # NEXT TDAM REQUEST #
03094  M01S03059.ssmove  +++|
03095  M01S03060.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
03096  M01S03061.ssmove  +++|      WRITER(MV$FET[FILEAUX],RCL);
03097  M01S03062.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
03098  M01S03063.ssmove  +++|      RETERN(MV$FET[FILEMI],RCL);
03099  M01S03064.ssmove  +++|      RETERN(MV$FET[FILEAUX],RCL);
03100  M01S03065.ssmove  +++|
03101  M01S03066.ssmove  +++|#
03102  M01S03067.ssmove  +++|*     ISSUE FIRST CALL TO *MVRPTDS* TO PRODUCE THE REPORT PAGE
03103  M01S03068.ssmove  +++|*     SUMMARIZING THE STATUS OF EACH DEVICE AND SUBFAMILY.
03104  M01S03069.ssmove  +++|#
03105  M01S03070.ssmove  +++|
03106  M01S03071.ssmove  +++|      MVRPTDS(0);
03107  M01S03072.ssmove  +++|
03108  M01S03073.ssmove  +++|      END
03109  M01S03074.ssmove  +++|
03110  M01S03075.ssmove  +++|    TERM
03111  M01S03076.ssmove  +++|PROC MVPFRD;
03112  M01S03077.ssmove  +++|# TITLE MVPFRD - READ PFC.                                            #
03113  M01S03078.ssmove  +++|
03114  M01S03079.ssmove  +++|      BEGIN  # MVPFRD #
03115  M01S03080.ssmove  +++|
03116  M01S03081.ssmove  +++|#
03117  M01S03082.ssmove  +++|**    MVPFRD - READ PFC.
03118  M01S03083.ssmove  +++|*
03119  M01S03084.ssmove  +++|*     THIS PROCEDURE READS THE PFC, CREATES THE PASS 1 OUTPUT
03120  M01S03085.ssmove  +++|*     FILE AND DETERMINES THE AMOUNT OF DISK SPACE TO BE
03121  M01S03086.ssmove  +++|*     RELEASED ON EACH DEVICE.
03122  M01S03087.ssmove  +++|*
03123  M01S03088.ssmove  +++|*     PROC MVPFRD.
03124  M01S03089.ssmove  +++|*
03125  M01S03090.ssmove  +++|*     EXIT.      PASS 1 OUTPUT FILE SET UP.
03126  M01S03091.ssmove  +++|*
03127  M01S03092.ssmove  +++|*     MESSAGES.  INCORRECT DEVICE INDEX.
03128  M01S03093.ssmove  +++|*
03129  M01S03094.ssmove  +++|*     NOTES.     PERMANENT FILES ARE INCLUDED IN THE PASS 1
03130  M01S03095.ssmove  +++|*                OUTPUT FILE IF THEY MEET ANY OF THE FOLLOWING..
03131  M01S03096.ssmove  +++|*
03132  M01S03097.ssmove  +++|*                1) ARE SELECTED BY THE *SF* DIRECTIVE AND
03133  M01S03098.ssmove  +++|*                   THE SPECIFIED PROCESSING IS VALID TO DO.
03134  M01S03099.ssmove  +++|*
03135  M01S03100.ssmove  +++|*                2) HAVE THE FREE-FILE (AFFRE) FLAG SET IN THE
03136  M01S03101.ssmove  +++|*                   *PFC* ENTRY FOR THE FILE WHEN THE FILE HAS
03137  M01S03102.ssmove  +++|*                   A NON-ZERO *ASA* VALUE.
03138  M01S03103.ssmove  +++|*
03139  M01S03104.ssmove  +++|*                3) IF THE FILE SATISFIES THE DESTAGE CRITERIA.
03140  M01S03105.ssmove  +++|*
03141  M01S03106.ssmove  +++|*                4) IF THE FILE IS A CANDIDATE TO BE RELEASED.
03142  M01S03107.ssmove  +++|#
03143  M01S03108.ssmove  +++|
03144  M01S03109.ssmove  +++|#
03145  M01S03110.ssmove  +++|****  PROC MVPFRD - XREF LIST BEGIN.
03146  M01S03111.ssmove  +++|#
03147  M01S03112.ssmove  +++|
03148  M01S03113.ssmove  +++|      XREF
03149  M01S03114.ssmove  +++|        BEGIN
03150  M01S03115.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
03151  M01S03116.ssmove  +++|        PROC GETDI;                  # GET DEVICE INHIBIT DATE/TIME #
03152  M01S03117.ssmove  +++|        PROC GETPFC;                 # GET NEXT PFC ENTRY #
03153  M01S03118.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
03154  M01S03119.ssmove  +++|        PROC MVCKSF;                 # SEARCH FOR SELECTED FILES #
03155  M01S03120.ssmove  +++|        PROC MVVALDS;                # CALCULATE DESTAGE VALUE #
03156  M01S03121.ssmove  +++|        PROC MVVALRL;                # CALCULATE RELEASE VALUE #
03157  M01S03122.ssmove  +++|        PROC RETERN;                 # RETURNS A FILE #
03158  M01S03123.ssmove  +++|        PROC REWIND;                 # REWINDS A FILE #
03159  M01S03124.ssmove  +++|        PROC UATTACH;                # UTILITY ATTACH #
03160  M01S03125.ssmove  +++|        PROC WRITER;                 # WRITES EOR ON A FILE #
03161  M01S03126.ssmove  +++|        PROC WRITEW;                 # DATA TRANSFER ROUTINE #
03162  M01S03127.ssmove  +++|        PROC XWOD;                   # CONVERT OCTAL TO DISPLAY #
03163  M01S03128.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
03164  M01S03129.ssmove  +++|        PROC ZSETFET;                # SETS UP A FET #
03165  M01S03130.ssmove  +++|        END
03166  M01S03131.ssmove  +++|
03167  M01S03132.ssmove  +++|#
03168  M01S03133.ssmove  +++|****  PROC MVPFRD - XREF LIST END.
03169  M01S03134.ssmove  +++|#
03170  M01S03135.ssmove  +++|
03171  M01S03136.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03172  M01S03137.ssmove  +++|*CALL,COMBFAS
03173  M01S03138.ssmove  +++|*CALL COMBSIT
03174  M01S03139.ssmove  +++|*CALL,COMBBZF
03175  M01S03140.ssmove  +++|*CALL,COMBTDM
03176  M01S03141.ssmove  +++|*CALL,COMSPFM
03177  M01S03142.ssmove  +++|*CALL,COMTCTW
03178  M01S03143.ssmove  +++|*CALL,COMTMOV
03179  M01S03144.ssmove  +++|*CALL,COMTMVD
03180  M01S03145.ssmove  +++|*CALL,COMTMVP
03181  M01S03146.ssmove  +++|
03182  M01S03147.ssmove  +++|      ITEM DISKIMAGE  B;             # TRUE IF DISK IMAGE EXISTS #
03183  M01S03148.ssmove  +++|      ITEM EOPFC      B;             # END OF PFC INDICATOR #
03184  M01S03149.ssmove  +++|      ITEM FAM        C(10);         # FAMILY NAME #
03185  M01S03150.ssmove  +++|      ITEM FLAG       I;             # ERROR STATUS #
03186  M01S03151.ssmove  +++|      ITEM GOAL       I;             # DESIRED PRU ON DISK #
03187  M01S03152.ssmove  +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
03188  M01S03153.ssmove  +++|      ITEM INHBDT     U;             # DEVICE INHIBIT DATE/TIME #
03189  M01S03154.ssmove  +++|      ITEM LFNAME     C(10);         # LOCAL FILE NAME #
03190  M01S03155.ssmove  +++|      ITEM MV$DNX     I;             # SPECIFIED DEVICE INDEX #
03191  M01S03156.ssmove  +++|      ITEM NOREL      B;             # LEGALITY OF RELEASING FILE #
03192  M01S03157.ssmove  +++|      ITEM NUMMSS     I;             # NUMBER OF MSS IMAGES #
03193  M01S03158.ssmove  +++|      ITEM NXTPFC     I;             # FILE COUNTER #
03194  M01S03159.ssmove  +++|      ITEM PEOCNT     I;             # PFC ORDINAL #
03195  M01S03160.ssmove  +++|      ITEM PFNAME     C(10);         # PERMANENT FILE NAME #
03196  M01S03161.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
03197  M01S03162.ssmove  +++|      ITEM RES        I;             # FILE RESIDENCE CODE #
03198  M01S03163.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY #
03199  M01S03164.ssmove  +++|
03200  M01S03165.ssmove  +++|      ARRAY SCR$FET [0:0] S(SFETL);;  # SCRATCH FET #
03201  M01S03166.ssmove  +++|
03202  M01S03167.ssmove  +++|      ARRAY ERRMSG [0:0] P(3); ;     # *PFM* ERROR MESSAGES #
03203  M01S03168.ssmove  +++|
03204  M01S03169.ssmove  +++|      ARRAY DISASA  [0:0]  S(2);
03205  M01S03170.ssmove  +++|        BEGIN
03206  M01S03171.ssmove  +++|        ITEM DIS$ASA  C(00,48,12);   # ASA IN DISPLAY CODE #
03207  M01S03172.ssmove  +++|        END
03208  M01S03173.ssmove  +++|
03209  M01S03174.ssmove  +++|      ARRAY MSG1 [0:0]  S(3);       # *PFC* ERROR INFORMATION #
03210  M01S03175.ssmove  +++|        BEGIN
03211  M01S03176.ssmove  +++|        ITEM MSG1$SP   C(00,00,03) = ["   "];
03212  M01S03177.ssmove  +++|        ITEM MSG1$FN   C(00,18,07);   # FILE NAME #
03213  M01S03178.ssmove  +++|        ITEM MSG1$TXT  C(01,00,08) = ["  ASA = "];
03214  M01S03179.ssmove  +++|        ITEM MSG1$ASA  C(01,48,12);   # ALTERNATE STORAGE ADDRESS #
03215  M01S03180.ssmove  +++|        END
03216  M01S03181.ssmove  +++|                                               CONTROL EJECT;
03217  M01S03182.ssmove  +++|
03218  M01S03183.ssmove  +++|#
03219  M01S03184.ssmove  +++|*     SET UP FET FOR PASS 1 OUTPUT FILE.
03220  M01S03185.ssmove  +++|#
03221  M01S03186.ssmove  +++|
03222  M01S03187.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
03223  M01S03188.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
03224  M01S03189.ssmove  +++|      ZSETFET(FETP,SCR1,BUFP,MVBUFL,SFETL);
03225  M01S03190.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
03226  M01S03191.ssmove  +++|
03227  M01S03192.ssmove  +++|      FAM = MVARG$FM[0];
03228  M01S03193.ssmove  +++|      LFNAME = "SCR";                # LOCAL FILE NAME #
03229  M01S03194.ssmove  +++|      BZFILL(LFNAME,TYPFILL"ZFILL",10);
03230  M01S03195.ssmove  +++|      BZFILL(FAM,TYPFILL"ZFILL",10);
03231  M01S03196.ssmove  +++|
03232  M01S03197.ssmove  +++|#
03233  M01S03198.ssmove  +++|*     READ PFC.
03234  M01S03199.ssmove  +++|#
03235  M01S03200.ssmove  +++|
03236  M01S03201.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
03237  M01S03202.ssmove  +++|      P<EXT$TDAM> = LOC(MV$WBUF[0]) + TDAMLEN;
03238  M01S03203.ssmove  +++|      EOPFC = FALSE;
03239  M01S03204.ssmove  +++|      EXT$PAZ[0] = 0;
03240  M01S03205.ssmove  +++|
03241  M01S03206.ssmove  +++|#
03242  M01S03207.ssmove  +++|*     DETERMINE THE INDEX OF THE SPECIFIED DEVICE.
03243  M01S03208.ssmove  +++|#
03244  M01S03209.ssmove  +++|
03245  M01S03210.ssmove  +++|      IF MVARG$DN[0] EQ 0
03246  M01S03211.ssmove  +++|      THEN                           # NO DEVICE SPECIFIED #
03247  M01S03212.ssmove  +++|        BEGIN
03248  M01S03213.ssmove  +++|        MV$DNX = 0;
03249  M01S03214.ssmove  +++|        END
03250  M01S03215.ssmove  +++|
03251  M01S03216.ssmove  +++|      ELSE
03252  M01S03217.ssmove  +++|        BEGIN
03253  M01S03218.ssmove  +++|        MV$DNX = DN$TO$DNX[MVARG$DN[0]];
03254  M01S03219.ssmove  +++|        END
03255  M01S03220.ssmove  +++|
03256  M01S03221.ssmove  +++|#
03257  M01S03222.ssmove  +++|*     THE MAIN LOGIC OF THIS ROUTINE IS IN THE FOLLOWING LOOP.
03258  M01S03223.ssmove  +++|*     PROCESSING FOR EACH FILE OCCURS DURING TWO TRIPS THROUGH
03259  M01S03224.ssmove  +++|*     THIS LOOP.  THE TOP OF THE LOOP COMPLETES PROCESSING FOR
03260  M01S03225.ssmove  +++|*     A FILE.  THE BOTTOM OF THE LOOP INITIATES FILE PROCESSING.
03261  M01S03226.ssmove  +++|*     THE FOLLOWING STEPS COMPRISE THE LOGIC OF THIS MAIN LOOP.
03262  M01S03227.ssmove  +++|*
03263  M01S03228.ssmove  +++|*     1) (TOP OF THE LOOP).. WRITE THE FILE ENTRY TO THE PASS 1
03264  M01S03229.ssmove  +++|*        OUTPUT FILE IF ANY PROCESSING ACTION FLAGS WERE SET
03265  M01S03230.ssmove  +++|*        WHEN THE FILE WAS ANALYZED DURING THE BOTTOM PART
03266  M01S03231.ssmove  +++|*        OF THE PREVIOUS EXECUTION OF THIS LOOP.
03267  M01S03232.ssmove  +++|*
03268  M01S03233.ssmove  +++|*     2) GET THE PFC ENTRY FOR THE NEXT FILE TO BE ANALYZED BY
03269  M01S03234.ssmove  +++|*        THE REST OF THIS LOOP.  ESTABLISH THE FILE TYPE, SUBFAMILY
03270  M01S03235.ssmove  +++|*        AND DEVICE NUMBER INDICES.
03271  M01S03236.ssmove  +++|*
03272  M01S03237.ssmove  +++|*     3) GET THE FILE LENGTH, IF NECESSARY.
03273  M01S03238.ssmove  +++|*
03274  M01S03239.ssmove  +++|*     4) DETERMINE THE RESIDENCE OF THE FILE AND UPDATE DEVICE
03275  M01S03240.ssmove  +++|*        AND SUBFAMILY STATISTICS ACCORDINGLY.
03276  M01S03241.ssmove  +++|*
03277  M01S03242.ssmove  +++|*     5) IGNORE THE FILE IF IT IS EXCLUDED FROM PROCESSING DUE
03278  M01S03243.ssmove  +++|*        TO RUN-TIME PARAMETERS OR IF IT HAS A SPECIAL USER INDEX.
03279  M01S03244.ssmove  +++|*
03280  M01S03245.ssmove  +++|*     6) SELECT PROCESSING ACTIONS AS CONTROLLED BY THE *SF,FN=..*
03281  M01S03246.ssmove  +++|*        DIRECTIVE OR THE *AFFREE* FLAG IN THE PFC ENTRY.
03282  M01S03247.ssmove  +++|*
03283  M01S03248.ssmove  +++|*     7) EVALUATE THE DESTAGE AND RELEASE FORMULAS AND SET
03284  M01S03249.ssmove  +++|*        THE APPROPRIATE PROCESSING ACTION FLAGS.
03285  M01S03250.ssmove  +++|#
03286  M01S03251.ssmove  +++|
03287  M01S03252.ssmove  +++|      SLOWFOR NXTPFC = 0 STEP 1 WHILE NOT EOPFC
03288  M01S03253.ssmove  +++|      DO                             # FINISH PROCESSING OLD PFC ENTRY,
03289  M01S03254.ssmove  +++|                                       THEN START NEW ONE #
03290  M01S03255.ssmove  +++|        BEGIN  # NEXT PFC #
03291  M01S03256.ssmove  +++|        IF EXT$PA[0] NQ 0
03292  M01S03257.ssmove  +++|        THEN                         # SAVE ENTRY FOR NEXT STEP OF
03293  M01S03258.ssmove  +++|                                       ANALYSIS #
03294  M01S03259.ssmove  +++|          BEGIN
03295  M01S03260.ssmove  +++|          TDAMFLN[0] = PFC$LF[0];
03296  M01S03261.ssmove  +++|          TDAMASA[0] = PFC$AA[0];
03297  M01S03262.ssmove  +++|          TDAMAT[0] = PFC$AT[0];
03298  M01S03263.ssmove  +++|          TDAMPFN[0] = PFC$FN[0];
03299  M01S03264.ssmove  +++|          TDAMUI[0] = PFC$UI[0];
03300  M01S03265.ssmove  +++|          TDAMSBF[0] = PFC$SF[0];
03301  M01S03266.ssmove  +++|          TDAMFAM[0] = MVARG$FM[0];
03302  M01S03267.ssmove  +++|          TDAMCDT[0] = PFC$CD[0];
03303  M01S03268.ssmove  +++|          TDAMAL[0] = PFC$AL[0];
03304  M01S03269.ssmove  +++|          TDAMFFF[0] = PFC$AFFRE[0];
03305  M01S03270.ssmove  +++|          TDAMFFF[0] = PFC$AFFRE[0];
03306  M01S03271.ssmove  +++|          EXT$AFOBS[0] = PFC$AFOBS[0];
03307  M01S03272.ssmove  +++|          EXT$RES[0] = RES;
03308  M01S03273.ssmove  +++|          EXT$FTYPE[0] = FTYPE;
03309  M01S03274.ssmove  +++|
03310  M01S03275.ssmove  +++|#
03311  M01S03276.ssmove  +++|*     SAVE DATES AND ACCESS COUNT FOR THE REPORT FILE.
03312  M01S03277.ssmove  +++|#
03313  M01S03278.ssmove  +++|
03314  M01S03279.ssmove  +++|          TDAMLMD[0] = PFC$MDD[0];
03315  M01S03280.ssmove  +++|          TDAMLAD[0] = PFC$ADD[0];
03316  M01S03281.ssmove  +++|          TDAMACC[0] = PFC$AC[0];
03317  M01S03282.ssmove  +++|
03318  M01S03283.ssmove  +++|          WRITEW(MV$FET[FILEMO],MV$WBUF[0],MVWBUFL,FLAG);
03319  M01S03284.ssmove  +++|          END
03320  M01S03285.ssmove  +++|
03321  M01S03286.ssmove  +++|        ZFILL(EXT$TDAM,3);           # CLEAR FOR NEXT FILE #
03322  M01S03287.ssmove  +++|        FLAG = 0;
03323  M01S03288.ssmove  +++|        GETPFC(PEOCNT, FLAG);
03324  M01S03289.ssmove  +++|        IF FLAG NQ OK
03325  M01S03290.ssmove  +++|        THEN
03326  M01S03291.ssmove  +++|          BEGIN
03327  M01S03292.ssmove  +++|          EOPFC = TRUE;
03328  M01S03293.ssmove  +++|          TEST NXTPFC;
03329  M01S03294.ssmove  +++|          END
03330  M01S03295.ssmove  +++|
03331  M01S03296.ssmove  +++|#
03332  M01S03297.ssmove  +++|*     ESTABLISH FILE TYPE, SUBFAMILY AND DEVICE NUMBER INDICES.
03333  M01S03298.ssmove  +++|#
03334  M01S03299.ssmove  +++|
03335  M01S03300.ssmove  +++|        IF PFC$DA[0]
03336  M01S03301.ssmove  +++|        THEN
03337  M01S03302.ssmove  +++|          BEGIN
03338  M01S03303.ssmove  +++|          FTYPE = IXDA;
03339  M01S03304.ssmove  +++|          END
03340  M01S03305.ssmove  +++|
03341  M01S03306.ssmove  +++|        ELSE
03342  M01S03307.ssmove  +++|          BEGIN
03343  M01S03308.ssmove  +++|          FTYPE = IXIA;
03344  M01S03309.ssmove  +++|          END
03345  M01S03310.ssmove  +++|
03346  M01S03311.ssmove  +++|        TDAMIA[0] = NOT PFC$DA[0];
03347  M01S03312.ssmove  +++|        SFX = PFC$SF[0];
03348  M01S03313.ssmove  +++|
03349  M01S03314.ssmove  +++|        IF PFC$EO[0] EQ 0
03350  M01S03315.ssmove  +++|        THEN
03351  M01S03316.ssmove  +++|          BEGIN
03352  M01S03317.ssmove  +++|          DNX = DN$TO$DNX[CNTR$DN[0]];
03353  M01S03318.ssmove  +++|          END
03354  M01S03319.ssmove  +++|
03355  M01S03320.ssmove  +++|        ELSE
03356  M01S03321.ssmove  +++|          BEGIN
03357  M01S03322.ssmove  +++|          DNX = DN$TO$DNX[PFC$EO[0]];
03358  M01S03323.ssmove  +++|          END
03359  M01S03324.ssmove  +++|
03360  M01S03325.ssmove  +++|        EXT$DNX[0] = DNX;
03361  M01S03326.ssmove  +++|        TDAMDN[0] = CNTR$DN[0];
03362  M01S03327.ssmove  +++|
03363  M01S03328.ssmove  +++|#
03364  M01S03329.ssmove  +++|*     ISSUE DAYFILE MESSAGE IF ILLEGAL DEVICE INDEX.
03365  M01S03330.ssmove  +++|#
03366  M01S03331.ssmove  +++|
03367  M01S03332.ssmove  +++|        IF DNX EQ 0
03368  M01S03333.ssmove  +++|        THEN                         # IGNORE FILE #
03369  M01S03334.ssmove  +++|          BEGIN
03370  M01S03335.ssmove  +++|          MVMSG$LN[0] = " INCORRECT DEVICE INDEX.";
03371  M01S03336.ssmove  +++|          MESSAGE(MVMSG[0],UDFL1);
03372  M01S03337.ssmove  +++|          TEST NXTPFC;
03373  M01S03338.ssmove  +++|          END
03374  M01S03339.ssmove  +++|
03375  M01S03340.ssmove  +++|#
03376  M01S03341.ssmove  +++|*     SET UP PFID AND GET FILE LENGTH, IF NECESSARY.
03377  M01S03342.ssmove  +++|#
03378  M01S03343.ssmove  +++|
03379  M01S03344.ssmove  +++|        TDAMPEO[0] = PEOCNT;
03380  M01S03345.ssmove  +++|        TDAMTRACK[0] = CNTR$TRK[0];
03381  M01S03346.ssmove  +++|        TDAMSECTOR[0] = CNTR$SEC[0];
03382  M01S03347.ssmove  +++|
03383  M01S03348.ssmove  +++|        IF PFC$LF[0] EQ 0 AND PFC$DA[0]  ##
03384  M01S03349.ssmove  +++|          AND(PFC$UI[0] LS DEF$UI OR PFC$UI[0] GR DEF$UI+7)
03385  M01S03350.ssmove  +++|        THEN                         # GET FILE LENGTH #
03386  M01S03351.ssmove  +++|          BEGIN
03387  M01S03352.ssmove  +++|          PFNAME = PFC$FN[0];
03388  M01S03353.ssmove  +++|          BZFILL(PFNAME,TYPFILL"ZFILL",10);
03389  M01S03354.ssmove  +++|          UATTACH(LFNAME,FLAG,6,PFNAME,PTRD,PFC$UI[0],FAM,  ##
03390  M01S03355.ssmove  +++|            TDAMPFID[0],PFC[0],PFC$CD[0],LOC(ERRMSG));
03391  M01S03356.ssmove  +++|          FETP = LOC(SCR$FET[0]);
03392  M01S03357.ssmove  +++|          ZSETFET(FETP,LFNAME,0,0,SFETL);
03393  M01S03358.ssmove  +++|          RETERN(SCR$FET[0],RCL);    # RETURN THE FILE #
03394  M01S03359.ssmove  +++|          END
03395  M01S03360.ssmove  +++|
03396  M01S03361.ssmove  +++|#
03397  M01S03362.ssmove  +++|*     CALCULATE RESIDENCE OF THE FILE AND UPDATE
03398  M01S03363.ssmove  +++|*     DEVICE OR SUBFAMILY STATISTICS ACCORDINGLY.
03399  M01S03364.ssmove  +++|*
03400  M01S03365.ssmove  +++|*     DO NOT EXCLUDE ANY FILE HAVING *AFFRE* FLAG SET
03401  M01S03366.ssmove  +++|*     INCLUDING FILES LOCKED TO DISK AND FILES WITH AN
03402  M01S03367.ssmove  +++|*     OBSOLETE MSAS COPY.
03403  M01S03368.ssmove  +++|#
03404  M01S03369.ssmove  +++|
03405  M01S03370.ssmove  +++|        DISKIMAGE = (PFC$BT[0] NQ 0);
03406  M01S03371.ssmove  +++|        NUMMSS = 0;
03407  M01S03372.ssmove  +++|        IF PFC$AA[0] NQ 0
03408  M01S03373.ssmove  +++|        THEN                         # OBSOLETE COPY #
03409  M01S03374.ssmove  +++|          BEGIN
03410  M01S03375.ssmove  +++|          IF (PFC$AFOBS[0] AND NOT PFC$AFFRE[0])
03411  M01S03376.ssmove  +++|          THEN
03412  M01S03377.ssmove  +++|            BEGIN
03413  M01S03378.ssmove  +++|            NUMMSS = 0;
03414  M01S03379.ssmove  +++|            END
03415  M01S03380.ssmove  +++|
03416  M01S03381.ssmove  +++|          ELSE
03417  M01S03382.ssmove  +++|            BEGIN
03418  M01S03383.ssmove  +++|            NUMMSS = 1;
03419  M01S03384.ssmove  +++|            END
03420  M01S03385.ssmove  +++|
03421  M01S03386.ssmove  +++|          END
03422  M01S03387.ssmove  +++|
03423  M01S03388.ssmove  +++|        IF NUMMSS NQ 0 AND NOT DISKIMAGE
03424  M01S03389.ssmove  +++|        THEN                         # FILE RELEASED #
03425  M01S03390.ssmove  +++|          BEGIN
03426  M01S03391.ssmove  +++|          RES = RESIDENCE"RES$M86";
03427  M01S03392.ssmove  +++|          SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] + 1;
03428  M01S03393.ssmove  +++|          SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] + PFC$LF[0];
03429  M01S03394.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
03430  M01S03395.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + PFC$LF[0];
03431  M01S03396.ssmove  +++|          END
03432  M01S03397.ssmove  +++|
03433  M01S03398.ssmove  +++|        IF DISKIMAGE
03434  M01S03399.ssmove  +++|        THEN                         # FILE ON DISK #
03435  M01S03400.ssmove  +++|          BEGIN
03436  M01S03401.ssmove  +++|          RES = RESIDENCE"RES$RMS";
03437  M01S03402.ssmove  +++|          DEV$NF[FTYPE,DNX] = DEV$NF[FTYPE,DNX] + 1;
03438  M01S03403.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] + PFC$LF[0];
03439  M01S03404.ssmove  +++|          IF FTYPE EQ IXIA
03440  M01S03405.ssmove  +++|          THEN
03441  M01S03406.ssmove  +++|            BEGIN
03442  M01S03407.ssmove  +++|            DEV$PRU[FTYPE,DNX] = DEV$PRU[FTYPE,DNX] + PFC$LF[0];
03443  M01S03408.ssmove  +++|            END
03444  M01S03409.ssmove  +++|
03445  M01S03410.ssmove  +++|          ELSE
03446  M01S03411.ssmove  +++|            BEGIN
03447  M01S03412.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
03448  M01S03413.ssmove  +++|            TRUPRU = (((PFC$LF[0] + 1) / PRUTRK) + 1) * PRUTRK;
03449  M01S03414.ssmove  +++|            DEV$PRU[FTYPE,DNX] = DEV$PRU[FTYPE,DNX] + TRUPRU;
03450  M01S03415.ssmove  +++|            END
03451  M01S03416.ssmove  +++|
03452  M01S03417.ssmove  +++|          IF NUMMSS NQ 0
03453  M01S03418.ssmove  +++|          THEN                       # FILE ALSO ON MSAS #
03454  M01S03419.ssmove  +++|            BEGIN
03455  M01S03420.ssmove  +++|            RES = RESIDENCE"RES$RMS$MF";
03456  M01S03421.ssmove  +++|            SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
03457  M01S03422.ssmove  +++|            SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + PFC$LF[0];
03458  M01S03423.ssmove  +++|            END
03459  M01S03424.ssmove  +++|
03460  M01S03425.ssmove  +++|          END
03461  M01S03426.ssmove  +++|
03462  M01S03427.ssmove  +++|        IF FTYPE EQ IXDA
03463  M01S03428.ssmove  +++|          AND PFC$LF[0] NQ 0
03464  M01S03429.ssmove  +++|        THEN                         # IGNORE SYSTEM SECTOR #
03465  M01S03430.ssmove  +++|          BEGIN
03466  M01S03431.ssmove  +++|          PFC$LF[0] = PFC$LF[0] - 1;
03467  M01S03432.ssmove  +++|          END
03468  M01S03433.ssmove  +++|
Line S03434 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03469  M02S03434.ssmove2 ---|#
Line S03435 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03470  M02S03435.ssmove2 ---|*     DO NOT PROCESS ZERO LENGTH FILES.
Line S03436 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03471  M02S03436.ssmove2 ---|#
Line S03437 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03472  M02S03437.ssmove2 ---|
Line S03438 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03473  M02S03438.ssmove2 ---|        IF PFC$LF[0] EQ 0
Line S03439 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03474  M02S03439.ssmove2 ---|        THEN
Line S03440 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03475  M02S03440.ssmove2 ---|          BEGIN
Line S03441 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03476  M02S03441.ssmove2 ---|          TEST NXTPFC;
Line S03442 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03477  M02S03442.ssmove2 ---|          END
Line S03443 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03478  M02S03443.ssmove2 ---|
03479  M01S03444.ssmove  +++|#
03480  M01S03445.ssmove  +++|*     SEE IF THE FILE IS TO BE EXCLUDED DUE TO RUN-TIME PARAMETERS
03481  M01S03446.ssmove  +++|*     (PX, UI OPTIONS), IF THE FILE IS IN A RESERVED USER INDEX,
03482  M01S03447.ssmove  +++|*     OR IF IT IS LOCKED TO DISK.
03483  M01S03448.ssmove  +++|#
03484  M01S03449.ssmove  +++|
03485  M01S03450.ssmove  +++|        IF (PFC$DA[0] AND PX$D[0] )  # DIRECT ACCESS FILE #
03486  M01S03451.ssmove  +++|          OR ( NOT PFC$DA[0] AND PX$I[0] )  # INDIRECT ACCESS FILE #
03487  M01S03452.ssmove  +++|
03488  M01S03453.ssmove  +++|          OR ( MVARG$UI[0] NQ 0      # NOT THE SELECTED #
03489  M01S03454.ssmove  +++|          AND PFC$UI[0] NQ MVARG$UI[0] )  # USER INDEX #
03490  M01S03455.ssmove  +++|
03491  M01S03456.ssmove  +++|          OR ( PFC$UI[0] GQ DEF$UI   # MSS USER INDICES #
03492  M01S03457.ssmove  +++|          AND PFC$UI[0] LQ DEF$UI+7 )  ##
03493  M01S03458.ssmove  +++|
03494  M01S03459.ssmove  +++|          OR ( PFC$UI[0] EQ SYS$UI )  # SYSTEM USER INDEX #
03495  M01S00001.ssmove3 +++|
03496  M01S00002.ssmove3 +++|          OR (PFC$UI[0] EQ FPF$UI)     # FLAWPF USER INDEX #
03497  M01S03460.ssmove  +++|
03498  M01S03461.ssmove  +++|          OR ( PFC$RS[0] EQ RSLK     # FILE LOCKED TO DISK #
03499  M01S03462.ssmove  +++|            AND NOT PFC$AFFRE[0])
03500  M01S03463.ssmove  +++|
03501  M01S03464.ssmove  +++|        THEN                         # DO NOT CONSIDER THIS FILE FOR
03502  M01S03465.ssmove  +++|                                       FURTHER PROCESSING #
03503  M01S03466.ssmove  +++|          BEGIN
03504  M01S03467.ssmove  +++|          TEST NXTPFC;
03505  M01S03468.ssmove  +++|          END
03506  M01S03469.ssmove  +++|
03507  M01S03470.ssmove  +++|#
03508  M01S03471.ssmove  +++|*     PROCESS THE SPECIAL FLAGS (*PO* OR FREE-UP FLAG IN *PFC*)
03509  M01S03472.ssmove  +++|*     AS FOLLOWS..
03510  M01S03473.ssmove  +++|*
03511  M01S03474.ssmove  +++|*     1)  PO=F  (FREE FILE FROM CARTRIDGE)
03512  M01S03475.ssmove  +++|*              IF THE ASA NQ 0 THEN SET *CLR*.  ALLOW FILE TO
03513  M01S03476.ssmove  +++|*              BE SELECTED TO BE STAGED.
03514  M01S03477.ssmove  +++|*
03515  M01S03478.ssmove  +++|*     2)  PO=A (ARCHIVE OR RELEASE FROM DISK)
03516  M01S03479.ssmove  +++|*              FORCE RELEASE BY SETTING *REL* UNLESS THE FILE
03517  M01S03480.ssmove  +++|*              IS ALREADY ARCHIVED.  THE CHECK TO VERIFY THAT
03518  M01S03481.ssmove  +++|*              THE *BR=Y* REQUIREMENT IS MET IS MADE FURTHER ON.
03519  M01S03482.ssmove  +++|*
03520  M01S03483.ssmove  +++|*     3)  PO=S OR *CLR* OR PFC$AFFRE SET (STAGE TO DISK)
03521  M01S03484.ssmove  +++|*              FORCE THE FILE TO BE STAGED TO DISK BY SETTING
03522  M01S03485.ssmove  +++|*              *STG* UNLESS THE FILE IS ALREADY ON DISK.  SET
03523  M01S03486.ssmove  +++|*              *NOREL* TO PROHIBIT THE FILE FROM BEING RELEASED
03524  M01S03487.ssmove  +++|*              FROM DISK.  IF THE FREE FILE FLAG IS SET IN THE
03525  M01S03488.ssmove  +++|*              *PFC* STAGER WILL CLEAR THE *ASA* AFTER STAGING
03526  M01S03489.ssmove  +++|*              THE FILE TO DISK.
03527  M01S03490.ssmove  +++|*
03528  M01S03491.ssmove  +++|*     4)  PO=B (BACKUP OR DESTAGE TO MSAS)
03529  M01S03492.ssmove  +++|*              SET THE *DES* FLAG IF THE FILE RESIDES ON DISK ONLY.
03530  M01S03493.ssmove  +++|#
03531  M01S03494.ssmove  +++|
03532  M01S03495.ssmove  +++|        MVCKSF(PFC$FN[0],PFC$UI[0],PO);  # SEE IF FILE SELECTED #
03533  M01S03496.ssmove  +++|
03534  M01S03497.ssmove  +++|        EXT$CLR[0] = (PFC$AA[0] NQ 0)  # CASE 1 #
03535  M01S03498.ssmove  +++|        AND ((RES EQ RESIDENCE"RES$RMS$MF" AND PFC$AFFRE[0])
03536  M01S03499.ssmove  +++|        OR (PO EQ "F"));
03537  M01S03500.ssmove  +++|
03538  M01S03501.ssmove  +++|        EXT$REL[0] = (PO EQ "A")     # CASE 2 #
03539  M01S03502.ssmove  +++|          AND (RES NQ RESIDENCE"RES$M86");
03540  M01S03503.ssmove  +++|
03541  M01S03504.ssmove  +++|        EXT$STG[0] = (PO EQ "S" OR EXT$CLR[0] OR PFC$AFFRE[0])  ##
03542  M01S03505.ssmove  +++|          AND (RES EQ RESIDENCE"RES$M86");
03543  M01S03506.ssmove  +++|        NOREL = EXT$STG[0] OR EXT$CLR[0];
03544  M01S03507.ssmove  +++|
03545  M01S03508.ssmove  +++|#
03546  M01S03509.ssmove  +++|*     IF ERROR FLAGS ARE SET IN THE *PFC* DO NOT ALLOW THE FILE
03547  M01S03510.ssmove  +++|*     TO BE STAGED.
03548  M01S03511.ssmove  +++|#
03549  M01S03512.ssmove  +++|
03550  M01S03513.ssmove  +++|        IF EXT$STG[0]
03551  M01S03514.ssmove  +++|        THEN
03552  M01S03515.ssmove  +++|          BEGIN  # CHECK *PFC* FOR ERRORS #
03553  M01S03516.ssmove  +++|          IF PFC$AFPDE[0]            # DATA ERROR #
03554  M01S03517.ssmove  +++|            OR PFC$AFPSE[0]          # SYSTEM ERROR #
03555  M01S03518.ssmove  +++|            OR PFC$AFTMP[0]          # TEMPORARY ERROR #
03556  M01S03519.ssmove  +++|          THEN
03557  M01S03520.ssmove  +++|            BEGIN
03558  M01S03521.ssmove  +++|            MSG1$FN[0] = PFC$FN[0];
03559  M01S03522.ssmove  +++|            XWOD(PFC$AA[0],DISASA);
03560  M01S03523.ssmove  +++|            MSG1$ASA[0] = DIS$ASA[0];
03561  M01S03524.ssmove  +++|            MVMSG$LN[0] = " PFC ERROR FLAGS SET";
03562  M01S03525.ssmove  +++|            MESSAGE(MVMSG[0],UDFL1);
03563  M01S03526.ssmove  +++|            MESSAGE(MSG1[0],UDFL1);
03564  M01S03527.ssmove  +++|            EXT$STG[0] = FALSE;      # PROHIBIT STAGING #
03565  M01S03528.ssmove  +++|            EXT$CLR[0] = FALSE;
03566  M01S03529.ssmove  +++|            TEST NXTPFC;
03567  M01S03530.ssmove  +++|            END
03568  M01S03531.ssmove  +++|          END   # CHECK *PFC* FOR ERRORS #
03569  M01S03532.ssmove  +++|
03570  M01S03533.ssmove  +++|#
03571  M01S03534.ssmove  +++|*     IF THE FILE RESIDES ON DISK, SELECT IT TO BE DESTAGED IF
03572  M01S03535.ssmove  +++|*     SPECIFIED BY THE FILE-S *PO* ATTRIBUTE, OR IF ITS DESTAGE
03573  M01S03536.ssmove  +++|*     VALUE EXCEEDS THE THRESHOLD.
03574  M01S03537.ssmove  +++|#
03575  M01S03538.ssmove  +++|
03576  M01S03539.ssmove  +++|        IF RES EQ RESIDENCE"RES$RMS"
03577  M01S03540.ssmove  +++|        THEN                         # SELECT DESTAGE IF APPROPRIATE #
03578  M01S03541.ssmove  +++|          BEGIN
03579  M01S03542.ssmove  +++|          IF PO EQ "B"
03580  M01S03543.ssmove  +++|          THEN                       # CASE 4 #
03581  M01S03544.ssmove  +++|            BEGIN
03582  M01S03545.ssmove  +++|            EXT$DES[0] = TRUE;
03583  M01S03546.ssmove  +++|            END
03584  M01S03547.ssmove  +++|
03585  M01S03548.ssmove  +++|          ELSE                       # CALCULATE DESTAGE VALUE AND
03586  M01S03549.ssmove  +++|                                       COMPARE TO THRESHOLD #
03587  M01S03550.ssmove  +++|            BEGIN
03588  M01S03551.ssmove  +++|            MVVALDS(TMPI,PO);        # CALCULATE DESTAGE VALUE #
03589  M01S03552.ssmove  +++|            EXT$DES[0] = TMPI GQ FR$VAL[FTYPE,IXDS,FRTH];
03590  M01S03553.ssmove  +++|            EXT$CDES[0] = NOT EXT$DES[0];  # IN CASE FILE IS RELEASED #
03591  M01S03554.ssmove  +++|            EXT$DESV[0] = TMPI;
03592  M01S03555.ssmove  +++|            END
03593  M01S03556.ssmove  +++|
03594  M01S03557.ssmove  +++|          END
03595  M01S03558.ssmove  +++|
03596  M01S03559.ssmove  +++|#
03597  M01S03560.ssmove  +++|*     CHECK TO SEE IF THE FILE CAN BE RELEASED.
03598  M01S03561.ssmove  +++|*       - VERIFY *BR=Y* REQUIREMENT SATISFIED.
03599  M01S03562.ssmove  +++|*       - VERIFY *DN* PARAMETER SATISFIED.
03600  M01S03563.ssmove  +++|*       - VERIFY FILE NOT ALREADY SELECTED FOR RELEASE.
03601  M01S03564.ssmove  +++|*       - CALCULATE RELEASE VALUE AND IF GREATER THAN
03602  M01S03565.ssmove  +++|*         THE THRESHOLD, SAVE IT FOR FUTURE USE IN
03603  M01S03566.ssmove  +++|*         SELECTING AMONG THE CANDIDATE FILES.
03604  M01S03567.ssmove  +++|#
03605  M01S03568.ssmove  +++|
03606  M01S03569.ssmove  +++|#
03607  M01S03570.ssmove  +++|*     IF A DUMP TAPE BACKUP IS REQUIRED, PROHIBIT
03608  M01S03571.ssmove  +++|*     RELEASING THE FILE.
03609  M01S03572.ssmove  +++|#
03610  M01S03573.ssmove  +++|
03611  M01S03574.ssmove  +++|        GETDI(CNTR$EQ[0],INHBDT);    # GET DEVICE INHIBIT DATE/TIME #
03612  M01S03575.ssmove  +++|        IF PFC$BR[0] EQ BRAL AND INHBDT LQ PFC$UD[0]
03613  M01S03576.ssmove  +++|        THEN                         # PROHIBIT RELEASING THE FILE #
03614  M01S03577.ssmove  +++|          BEGIN
03615  M01S03578.ssmove  +++|          EXT$REL[0] = FALSE;
03616  M01S03579.ssmove  +++|          NOREL = TRUE;
03617  M01S03580.ssmove  +++|          END
03618  M01S03581.ssmove  +++|
03619  M01S03582.ssmove  +++|        IF EXT$REL[0]
03620  M01S03583.ssmove  +++|        THEN                         # COUNT PRU TO BE RELEASED #
03621  M01S03584.ssmove  +++|          BEGIN
03622  M01S03585.ssmove  +++|          DEV$RELF[FTYPE,DNX] = DEV$RELF[FTYPE,DNX] + 1;
03623  M01S03586.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] - PFC$LF[0];
03624  M01S03587.ssmove  +++|          IF FTYPE EQ IXIA
03625  M01S03588.ssmove  +++|          THEN
03626  M01S03589.ssmove  +++|            BEGIN
03627  M01S03590.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + PFC$LF[0];
03628  M01S03591.ssmove  +++|            END
03629  M01S03592.ssmove  +++|
03630  M01S03593.ssmove  +++|          ELSE
03631  M01S03594.ssmove  +++|            BEGIN
03632  M01S03595.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
03633  M01S03596.ssmove  +++|            TRUPRU = (((PFC$LF[0]+1) / PRUTRK) + 1) * PRUTRK;
03634  M01S03597.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TRUPRU;
03635  M01S03598.ssmove  +++|            END
03636  M01S03599.ssmove  +++|
03637  M01S03600.ssmove  +++|          TEST NXTPFC;
03638  M01S03601.ssmove  +++|          END
03639  M01S03602.ssmove  +++|
03640  M01S03603.ssmove  +++|        IF MV$DNX NQ 0               ##
03641  M01S03604.ssmove  +++|          AND MV$DNX NQ DNX          # FAILS *DN* PARAMETER #
03642  M01S03605.ssmove  +++|        THEN                         # DO NOT CONSIDER FILE FOR
03643  M01S03606.ssmove  +++|                                       DESTAGING OR RELEASING #
03644  M01S03607.ssmove  +++|          BEGIN
03645  M01S03608.ssmove  +++|          EXT$DES[0] = FALSE;        # DO NOT DESTAGE #
03646  M01S03609.ssmove  +++|          TEST NXTPFC;
03647  M01S03610.ssmove  +++|          END
03648  M01S03611.ssmove  +++|
03649  M01S03612.ssmove  +++|        IF NOREL
03650  M01S03613.ssmove  +++|        THEN                         # DO NOT RELEASE #
03651  M01S03614.ssmove  +++|          BEGIN
03652  M01S03615.ssmove  +++|          TEST NXTPFC;
03653  M01S03616.ssmove  +++|          END
03654  M01S03617.ssmove  +++|
03655  M01S03618.ssmove  +++|        IF RES NQ RESIDENCE"RES$M86"
03656  M01S03619.ssmove  +++|        THEN
03657  M01S03620.ssmove  +++|          BEGIN
03658  M01S03621.ssmove  +++|          MVVALRL(TMPI,PO);          # CALCULATE RELEASE VALUE #
03659  M01S03622.ssmove  +++|          EXT$CREL[0] = TMPI GQ FR$VAL[FTYPE,IXRL,FRTH];
03660  M01S03623.ssmove  +++|          EXT$RELV[0] = TMPI;
03661  M01S03624.ssmove  +++|          TEST NXTPFC;
03662  M01S03625.ssmove  +++|          END
03663  M01S03626.ssmove  +++|
03664  M01S03627.ssmove  +++|        END  # NEXT PFC #
03665  M01S03628.ssmove  +++|
03666  M01S03629.ssmove  +++|#
03667  M01S03630.ssmove  +++|*     AFTER PROCESSING ALL FILES,
03668  M01S03631.ssmove  +++|*       - FLUSH THE PASS 1 OUTPUT BUFFER TO DISK.
03669  M01S03632.ssmove  +++|*       - CALCULATE THE AMOUNT OF DISK SPACE NEEDED
03670  M01S03633.ssmove  +++|*         TO BE RELEASED ON EACH DEVICE.
03671  M01S03634.ssmove  +++|#
03672  M01S03635.ssmove  +++|
03673  M01S03636.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
03674  M01S03637.ssmove  +++|      REWIND(MV$FET[FILEMO],RCL);
03675  M01S03638.ssmove  +++|
03676  M01S03639.ssmove  +++|#
03677  M01S03640.ssmove  +++|*     CALCULATE THE NUMBER OF PRU TO BE RELEASED ON EACH DEVICE.
03678  M01S03641.ssmove  +++|#
03679  M01S03642.ssmove  +++|
03680  M01S03643.ssmove  +++|      SLOWFOR I = 1 STEP 1 UNTIL MAXDEV
03681  M01S03644.ssmove  +++|      DO
03682  M01S03645.ssmove  +++|        BEGIN  # EACH DEVICE #
03683  M01S03646.ssmove  +++|        IF DEV$MAST[IXIA,I]
03684  M01S03647.ssmove  +++|        THEN                         # USE MASTER DEVICE GOALS #
03685  M01S03648.ssmove  +++|          BEGIN
03686  M01S03649.ssmove  +++|          TMPI = SMMG;
03687  M01S03650.ssmove  +++|          END
03688  M01S03651.ssmove  +++|
03689  M01S03652.ssmove  +++|        ELSE                         # USE SECONDARY DEVICE GOALS #
03690  M01S03653.ssmove  +++|          BEGIN
03691  M01S03654.ssmove  +++|          TMPI = SMSG;
03692  M01S03655.ssmove  +++|          END
03693  M01S03656.ssmove  +++|
03694  M01S03657.ssmove  +++|        SLOWFOR FTYPE = IXDA STEP IXIA-IXDA UNTIL IXIA
03695  M01S03658.ssmove  +++|        DO
03696  M01S03659.ssmove  +++|          BEGIN
03697  M01S03660.ssmove  +++|
03698  M01S03661.ssmove  +++|          GOAL = SM$VAL[FTYPE,IXRL,TMPI]*DEV$TPRU[IXIA,I]/100;
03699  M01S03662.ssmove  +++|          DEV$NEED[FTYPE,I] =        ##
03700  M01S03663.ssmove  +++|            DEV$PRU[FTYPE,I] - GOAL - DEV$RELP[FTYPE,I];
03701  M01S03664.ssmove  +++|          END
03702  M01S03665.ssmove  +++|
03703  M01S03666.ssmove  +++|        END  # EACH DEVICE #
03704  M01S03667.ssmove  +++|
03705  M01S03668.ssmove  +++|      RETURN;
03706  M01S03669.ssmove  +++|
03707  M01S03670.ssmove  +++|      END  # MVPFRD #
03708  M01S03671.ssmove  +++|
03709  M01S03672.ssmove  +++|    TERM
03710  M01S03673.ssmove  +++|PROC MVPRNDT(PDATE,ACC$CT,DVAL,RVAL);
03711  M01S03674.ssmove  +++|# TITLE MVPRNDT - PRINT DATE AND ACCESS COUNTS.                       #
03712  M01S03675.ssmove  +++|
03713  M01S03676.ssmove  +++|      BEGIN  # MVPRNDT #
03714  M01S03677.ssmove  +++|
03715  M01S03678.ssmove  +++|#
03716  M01S03679.ssmove  +++|**    MVPRNDT - PRINT DATE AND ACCESS COUNTS.
03717  M01S03680.ssmove  +++|*
03718  M01S03681.ssmove  +++|*     THIS PROCEDURE PRINTS THE DATE AND THE ACCESS COUNT FOR
03719  M01S03682.ssmove  +++|*     A FILE ON THE REPORT FILE.
03720  M01S03683.ssmove  +++|*
03721  M01S03684.ssmove  +++|*     PROC MVPRNDT.
03722  M01S03685.ssmove  +++|*
03723  M01S03686.ssmove  +++|*     ENTRY.     PDATE = *YYMMDD*.
03724  M01S03687.ssmove  +++|*                ACC$CT = ACCESS COUNT.
03725  M01S03688.ssmove  +++|*
03726  M01S03689.ssmove  +++|*     EXIT.      COL. 33-40 CONTAIN *YY.MM.DD*.
03727  M01S03690.ssmove  +++|*                COL. 42-48 CONTAIN ACCESS COUNT.
03728  M01S03691.ssmove  +++|#
03729  M01S03692.ssmove  +++|
03730  M01S03693.ssmove  +++|      ITEM PDATE      C(10);         # PACKED DATE #
03731  M01S03694.ssmove  +++|      ITEM ACC$CT     I;             # ACCESS COUNT #
03732  M01S03695.ssmove  +++|      ITEM DVAL       U;             # CALCULATED DESTAGE VALUE #
03733  M01S03696.ssmove  +++|      ITEM RVAL       U;             # CALCULATED RELEASE VALUE #
03734  M01S03697.ssmove  +++|
03735  M01S03698.ssmove  +++|#
03736  M01S03699.ssmove  +++|****  PROC MVPRNDT - XREF LIST BEGIN.
03737  M01S03700.ssmove  +++|#
03738  M01S03701.ssmove  +++|
03739  M01S03702.ssmove  +++|      XREF
03740  M01S03703.ssmove  +++|        BEGIN
03741  M01S03704.ssmove  +++|        PROC RPLINE;                 # WRITE LINE #
03742  M01S03705.ssmove  +++|        FUNC XCDD C(10);             # BINARY TO DECIMAL DISPLAY #
03743  M01S03706.ssmove  +++|        END
03744  M01S03707.ssmove  +++|
03745  M01S03708.ssmove  +++|#
03746  M01S03709.ssmove  +++|****  PROC MVPRNDT - XREF LIST END.
03747  M01S03710.ssmove  +++|#
03748  M01S03711.ssmove  +++|
03749  M01S03712.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
03750  M01S03713.ssmove  +++|
03751  M01S03714.ssmove  +++|*CALL,COMBFAS
03752  M01S03715.ssmove  +++|*CALL,COMTMOV
03753  M01S03716.ssmove  +++|
03754  M01S03717.ssmove  +++|      ITEM TMPC       C(10);         # TEMPORARY CHARACTER #
03755  M01S03718.ssmove  +++|                                               CONTROL EJECT;
03756  M01S03719.ssmove  +++|      TMPC = XCDD(ACC$CT);
03757  M01S03720.ssmove  +++|      RPLINE(LISTFETP,TMPC,40,10,1);  # WRITE ACCESS COUNT #
03758  M01S03721.ssmove  +++|
03759  M01S03722.ssmove  +++|      RPLINE(LISTFETP,"YY.MM.DD",34,8,1);
03760  M01S03723.ssmove  +++|
03761  M01S03724.ssmove  +++|      CHR$10[0] = XCDD(70+B<42,6>PDATE);  # YEAR #
03762  M01S03725.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],34,2,1);
03763  M01S03726.ssmove  +++|
03764  M01S03727.ssmove  +++|#
03765  M01S03728.ssmove  +++|*     FORCE LEADING ZERO ON DAY AND MONTH BY ADDING 100.
03766  M01S03729.ssmove  +++|#
03767  M01S03730.ssmove  +++|
03768  M01S03731.ssmove  +++|      CHR$10[0] = XCDD(100+B<48,6>PDATE);  # MONTH #
03769  M01S03732.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],37,2,1);
03770  M01S03733.ssmove  +++|
03771  M01S03734.ssmove  +++|      CHR$10[0] = XCDD(100+B<54,6>PDATE);  # DATE #
03772  M01S03735.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],40,2,1);
03773  M01S03736.ssmove  +++|
03774  M01S03737.ssmove  +++|      IF DVAL GQ 0
03775  M01S03738.ssmove  +++|      THEN
03776  M01S03739.ssmove  +++|        BEGIN
03777  M01S03740.ssmove  +++|        CHR$10[0] = XCDD(DVAL);
03778  M01S03741.ssmove  +++|        RPLINE(LISTFETP,CHR$10[0],87,10,1);
03779  M01S03742.ssmove  +++|        END
03780  M01S03743.ssmove  +++|
03781  M01S03744.ssmove  +++|      ELSE                           # NEGATIVE VALUE #
03782  M01S03745.ssmove  +++|        BEGIN
03783  M01S03746.ssmove  +++|        RPLINE(LISTFETP,"-1",95,2,1);
03784  M01S03747.ssmove  +++|        END
03785  M01S03748.ssmove  +++|
03786  M01S03749.ssmove  +++|      IF RVAL GQ 0
03787  M01S03750.ssmove  +++|      THEN
03788  M01S03751.ssmove  +++|        BEGIN
03789  M01S03752.ssmove  +++|        CHR$10[0] = XCDD(RVAL);
03790  M01S03753.ssmove  +++|        RPLINE(LISTFETP,CHR$10[0],98,10,1);
03791  M01S03754.ssmove  +++|        END
03792  M01S03755.ssmove  +++|
03793  M01S03756.ssmove  +++|      ELSE                           # NEGATIVE VALUE #
03794  M01S03757.ssmove  +++|        BEGIN
03795  M01S03758.ssmove  +++|        RPLINE(LISTFETP,"-1",106,2,1);
03796  M01S03759.ssmove  +++|        END
03797  M01S03760.ssmove  +++|
03798  M01S03761.ssmove  +++|
03799  M01S03762.ssmove  +++|      RETURN;
03800  M01S03763.ssmove  +++|      END  # MVPRNDT #
03801  M01S03764.ssmove  +++|
03802  M01S03765.ssmove  +++|    TERM
03803  M01S03766.ssmove  +++|FUNC MVRELAG(RELDATE) U;
03804  M01S03767.ssmove  +++|# TITLE MVRELAG - CALCULATE RELATIVE AGE.                             #
03805  M01S03768.ssmove  +++|
03806  M01S03769.ssmove  +++|      BEGIN  # MVRELAG #
03807  M01S03770.ssmove  +++|
03808  M01S03771.ssmove  +++|#
03809  M01S03772.ssmove  +++|**    MVRELAG - CALCULATE RELATIVE AGE.
03810  M01S03773.ssmove  +++|*
03811  M01S03774.ssmove  +++|*     THIS FUNCTION CALCULATES THE RELATIVE AGE OF AN ITEM
03812  M01S03775.ssmove  +++|*     GIVEN A DATE IN PACKED FORMAT.  THIS AGE IS THE NUMBER
03813  M01S03776.ssmove  +++|*     OF DAYS SINCE JAN 01, 1970.
03814  M01S03777.ssmove  +++|*     THE ABSOLUTE AGE OF AN ITEM IS CALCULATED BY THE CALLING
03815  M01S03778.ssmove  +++|*     PROGRAMS WHICH SUBTRACT THE RELATIVE AGE OF THE ITEM
03816  M01S03779.ssmove  +++|*     FROM THE RELATIVE AGE OF THE CURRENT DATE.
03817  M01S03780.ssmove  +++|*     IF THE DIFFERENCE BETWEEN THE CURRENT DATE AND THE
03818  M01S03781.ssmove  +++|*     LAST ACCESS DATE OR MODIFY DATE IS LESS THAN 30 DAYS,
03819  M01S03782.ssmove  +++|*     THEIR DIFFERENCE AS CALCULATED BY THIS FUNCTION WILL
03820  M01S03783.ssmove  +++|*     BE CALCULATED CORRECTLY.  IF THE DIFFERENCE IS MORE
03821  M01S03784.ssmove  +++|*     THAN 30 DAYS, THEN A 1 DAY ERROR MAY BE INTRODUCED.
03822  M01S03785.ssmove  +++|*     IT IS ASSUMED THAT A 3 PERCENT ERROR IS NOT OF CONCERN
03823  M01S03786.ssmove  +++|*     FOR THE PURPOSES OF *SSMOVE*.
03824  M01S03787.ssmove  +++|*
03825  M01S03788.ssmove  +++|*     FUNC MVRELAG( (RELDATE) ).
03826  M01S03789.ssmove  +++|*
03827  M01S03790.ssmove  +++|*     ENTRY.    RELDATE = *YYMMDD* OF AN OBJECT.
03828  M01S03791.ssmove  +++|*
03829  M01S03792.ssmove  +++|*     EXIT.     MVRELAG = NUMBER OF DAYS SINCE 70/01/01.
03830  M01S03793.ssmove  +++|#
03831  M01S03794.ssmove  +++|
03832  M01S03795.ssmove  +++|      ITEM RELDATE    C(10);         # *YYMMDD* #
03833  M01S03796.ssmove  +++|
03834  M01S03797.ssmove  +++|
03835  M01S03798.ssmove  +++|      ITEM DAY        U;             # *DD* FROM *RELDATE* #
03836  M01S03799.ssmove  +++|      ITEM MONTH      U;             # *MM* FROM *RELDATE* #
03837  M01S03800.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY #
03838  M01S03801.ssmove  +++|      ITEM YEAR       U;             # *YY* FROM *RELDATE* #
03839  M01S03802.ssmove  +++|
03840  M01S03803.ssmove  +++|      ARRAY MONTHS [1:12] S(1);      # TOTAL DAYS IN PREVIOUS MONTHS #
03841  M01S03804.ssmove  +++|        BEGIN
03842  M01S03805.ssmove  +++|        ITEM MON$TOT    I(00,00,60) = [  ##
03843  M01S03806.ssmove  +++|        0,
03844  M01S03807.ssmove  +++|        31,
03845  M01S03808.ssmove  +++|        59,
03846  M01S03809.ssmove  +++|        90,
03847  M01S03810.ssmove  +++|        120,
03848  M01S03811.ssmove  +++|        151,
03849  M01S03812.ssmove  +++|        181,
03850  M01S03813.ssmove  +++|        212,
03851  M01S03814.ssmove  +++|        243,
03852  M01S03815.ssmove  +++|        273,
03853  M01S03816.ssmove  +++|        304,
03854  M01S03817.ssmove  +++|        334];
03855  M01S03818.ssmove  +++|        END
03856  M01S03819.ssmove  +++|
03857  M01S03820.ssmove  +++|                                               CONTROL EJECT;
03858  M01S03821.ssmove  +++|      YEAR = B<42,6>RELDATE;
03859  M01S03822.ssmove  +++|      MONTH = B<48,6>RELDATE;
03860  M01S03823.ssmove  +++|      DAY = B<54,6>RELDATE;
03861  M01S03824.ssmove  +++|
03862  M01S03825.ssmove  +++|      TMPI = YEAR*365 + MON$TOT[MONTH] + DAY;
03863  M01S03826.ssmove  +++|
03864  M01S03827.ssmove  +++|      IF( (YEAR/4)*4 EQ YEAR) AND (MONTH EQ 3)
03865  M01S03828.ssmove  +++|      THEN
03866  M01S03829.ssmove  +++|        BEGIN
03867  M01S03830.ssmove  +++|        TMPI = TMPI + 1;
03868  M01S03831.ssmove  +++|        END
03869  M01S03832.ssmove  +++|
03870  M01S03833.ssmove  +++|      MVRELAG = TMPI;
03871  M01S03834.ssmove  +++|      RETURN;
03872  M01S03835.ssmove  +++|      END
03873  M01S03836.ssmove  +++|
03874  M01S03837.ssmove  +++|    TERM
03875  M01S03838.ssmove  +++|PROC MVRPTDS((ABNDN));
03876  M01S03839.ssmove  +++|# TITLE MVRPTDS - REPORT DEVICE STATUS.                               #
03877  M01S03840.ssmove  +++|
03878  M01S03841.ssmove  +++|      BEGIN  # MVRPTDS #
03879  M01S03842.ssmove  +++|
03880  M01S03843.ssmove  +++|#
03881  M01S03844.ssmove  +++|**    MVRPTDS - REPORT DEVICE STATUS.
03882  M01S03845.ssmove  +++|*
03883  M01S03846.ssmove  +++|*     THIS PROCEDURE PRINTS A PAGE SUMMARIZING THE SPACE
03884  M01S03847.ssmove  +++|*     AVAILABILITY ON EACH DEVICE.
03885  M01S03848.ssmove  +++|*
03886  M01S03849.ssmove  +++|*     PROC MVRPTDS( (ABNDN) ).
03887  M01S03850.ssmove  +++|*
03888  M01S03851.ssmove  +++|*     ENTRY.     THE ARRAY *DEVSTAT* CONTAINS DATA TO BE PRINTED.
03889  M01S03852.ssmove  +++|*
03890  M01S03853.ssmove  +++|*     EXIT.      THE RELEVANT INFORMATION IS PRINTED ON THE OUTPUT FILE.
03891  M01S03854.ssmove  +++|*
03892  M01S03855.ssmove  +++|*     MESSAGES.  DEVICE SPACE GOAL NOT MET.
03893  M01S03856.ssmove  +++|#
03894  M01S03857.ssmove  +++|
03895  M01S03858.ssmove  +++|      ITEM ABNDN      B;             # PROCESS ABANDONMENT REPORT #
03896  M01S03859.ssmove  +++|
03897  M01S03860.ssmove  +++|#
03898  M01S03861.ssmove  +++|****  PROC MVRPTDS - XREF LIST BEGIN.
03899  M01S03862.ssmove  +++|#
03900  M01S03863.ssmove  +++|
03901  M01S03864.ssmove  +++|      XREF
03902  M01S03865.ssmove  +++|        BEGIN
03903  M01S03866.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
03904  M01S03867.ssmove  +++|        PROC RPEJECT;                # PAGE EJECT #
03905  M01S03868.ssmove  +++|        PROC RPLINE;                 # WRITE LINE #
03906  M01S03869.ssmove  +++|        PROC RPSPACE;                # PRINT BLANK LINES #
03907  M01S03870.ssmove  +++|        FUNC XCDD C(10);             # BINARY TO DECIMAL DISPLAY CODE #
03908  M01S03871.ssmove  +++|        FUNC XCOD C(10);             # BINARY TO OCTAL DISPLAY CODE #
03909  M01S03872.ssmove  +++|        END
03910  M01S03873.ssmove  +++|
03911  M01S03874.ssmove  +++|#
03912  M01S03875.ssmove  +++|****  PROC MVRPTDS - XREF LIST END.
03913  M01S03876.ssmove  +++|#
03914  M01S03877.ssmove  +++|
03915  M01S03878.ssmove  +++|
03916  M01S03879.ssmove  +++|      DEF HDR11   #"   (BEFORE)   DEVICE STATUS   "#;
03917  M01S03880.ssmove  +++|      DEF HDR12      #" (AFTER)   PERCENTS "#;
03918  M01S03881.ssmove  +++|      DEF HDR21      #"EO  DN  DT-N  TYPE "#;
03919  M01S03882.ssmove  +++|      DEF HDR22      #"   FILES /     PRU  "#;
03920  M01S03883.ssmove  +++|      DEF HDR23      #"EXP. GOAL "#;
03921  M01S03884.ssmove  +++|      DEF HDR24      #"FLAG."#;
03922  M01S03885.ssmove  +++|
03923  M01S03886.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
03924  M01S03887.ssmove  +++|
03925  M01S03888.ssmove  +++|*CALL,COMBFAS
03926  M01S03889.ssmove  +++|*CALL COMBSIT
03927  M01S03890.ssmove  +++|*CALL,COMSPFM
03928  M01S03891.ssmove  +++|*CALL,COMTMOV
03929  M01S03892.ssmove  +++|*CALL,COMTMVD
03930  M01S03893.ssmove  +++|*CALL,COMTOUT
03931  M01S03894.ssmove  +++|
03932  M01S03895.ssmove  +++|
03933  M01S03896.ssmove  +++|      ITEM EXP$PER    I;             # EXPECTED PERCENT SPACE AVAILABLE
03934  M01S03897.ssmove  +++|                                     #
03935  M01S03898.ssmove  +++|      ITEM EXP$PRU    I;             # EXPECTED PRU AVAILABLE #
03936  M01S03899.ssmove  +++|      ITEM GOAL       I;             # PERCENT DESIRED DISK SPACE #
03937  M01S03900.ssmove  +++|      ITEM I          I;             # LOOP INDEX #
03938  M01S03901.ssmove  +++|      ITEM IX         I;             # FILE TYPE INDEX #
03939  M01S03902.ssmove  +++|      ITEM SUBFAM     I;             # LOOP INDEX #
03940  M01S03903.ssmove  +++|
03941  M01S03904.ssmove  +++|
03942  M01S03905.ssmove  +++|      ARRAY FILETYPE[IXDA:IXIA] S(1);
03943  M01S03906.ssmove  +++|        BEGIN
03944  M01S03907.ssmove  +++|        ITEM FILE$TYPE  C(00,00,04) = [  ##
03945  M01S03908.ssmove  +++|        "DIR.",
03946  M01S03909.ssmove  +++|        "IND."];
03947  M01S03910.ssmove  +++|        END
03948  M01S03911.ssmove  +++|
03949  M01S03912.ssmove  +++|                                               CONTROL EJECT;
03950  M01S03913.ssmove  +++|
03951  M01S03914.ssmove  +++|#
03952  M01S03915.ssmove  +++|*     PRINT HEADER LINES.
03953  M01S03916.ssmove  +++|#
03954  M01S03917.ssmove  +++|
03955  M01S03918.ssmove  +++|      RPEJECT(OUT$FETP);
03956  M01S03919.ssmove  +++|
03957  M01S03920.ssmove  +++|      IF ABNDN
03958  M01S03921.ssmove  +++|      THEN
03959  M01S03922.ssmove  +++|        BEGIN
03960  M01S03923.ssmove  +++|        RPLINE(OUT$FETP,"DESTAGE ABANDONMENT REPORT",5,26,0);
03961  M01S03924.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
03962  M01S03925.ssmove  +++|        END
03963  M01S03926.ssmove  +++|
03964  M01S03927.ssmove  +++|      RPLINE(OUT$FETP,HDR11,21,30,1);
03965  M01S03928.ssmove  +++|      RPLINE(OUT$FETP,HDR12,51,20,0);
03966  M01S03929.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
03967  M01S03930.ssmove  +++|
03968  M01S03931.ssmove  +++|      RPLINE(OUT$FETP,HDR21,2,19,1);
03969  M01S03932.ssmove  +++|      RPLINE(OUT$FETP,HDR22,21,20,1);
03970  M01S03933.ssmove  +++|      RPLINE(OUT$FETP,HDR22,41,20,1);
03971  M01S03934.ssmove  +++|      RPLINE(OUT$FETP,HDR23,61,10,1);
03972  M01S03935.ssmove  +++|      RPLINE(OUT$FETP,HDR24,72,05,0);
03973  M01S03936.ssmove  +++|
03974  M01S03937.ssmove  +++|#
03975  M01S03938.ssmove  +++|*     PRINT DATA FOR DEVICES ABLE TO HOLD INDIRECT FILES (MASTER
03976  M01S03939.ssmove  +++|*     DEVICES), FOLLOWED BY DATA ON DEVICES ABLE TO HOLD DIRECT
03977  M01S03940.ssmove  +++|*     ACCESS FILES.
03978  M01S03941.ssmove  +++|#
03979  M01S03942.ssmove  +++|
03980  M01S03943.ssmove  +++|      SLOWFOR I = 1 STEP 1 UNTIL 2
03981  M01S03944.ssmove  +++|      DO
03982  M01S03945.ssmove  +++|        BEGIN  # REPORT ON BOTH FILE TYPES #
03983  M01S03946.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",2);  # 2 BLANK LINES AS A SEPARATOR
03984  M01S03947.ssmove  +++|                                        #
03985  M01S03948.ssmove  +++|
03986  M01S03949.ssmove  +++|        SLOWFOR DNX = 1 STEP 1 UNTIL MAXDEV
03987  M01S03950.ssmove  +++|        DO
03988  M01S03951.ssmove  +++|          BEGIN  # REPORT EACH DEVICE #
03989  M01S03952.ssmove  +++|
03990  M01S03953.ssmove  +++|          IF I EQ 1
03991  M01S03954.ssmove  +++|          THEN                       # ONLY DO MASTER DEVICES #
03992  M01S03955.ssmove  +++|            BEGIN
03993  M01S03956.ssmove  +++|            IX = IXIA;
03994  M01S03957.ssmove  +++|            GOAL = SM$VAL[IXIA,IXRL,SMMG];
03995  M01S03958.ssmove  +++|            IF NOT DEV$MAST[IXIA,DNX]
03996  M01S03959.ssmove  +++|            THEN                     # SKIP THIS DEVICE #
03997  M01S03960.ssmove  +++|              BEGIN
03998  M01S03961.ssmove  +++|              TEST DNX;
03999  M01S03962.ssmove  +++|              END
04000  M01S03963.ssmove  +++|
04001  M01S03964.ssmove  +++|            END
04002  M01S03965.ssmove  +++|
04003  M01S03966.ssmove  +++|          ELSE                       # ONLY DO DEVICES HOLDING DIRECT
04004  M01S03967.ssmove  +++|                                       ACCESS FILES #
04005  M01S03968.ssmove  +++|            BEGIN
04006  M01S03969.ssmove  +++|            IX = IXDA;
04007  M01S03970.ssmove  +++|            IF DEV$MAST[IXIA,DNX]
04008  M01S03971.ssmove  +++|            THEN
04009  M01S03972.ssmove  +++|              BEGIN
04010  M01S03973.ssmove  +++|              GOAL = SM$VAL[IXDA,IXRL,SMMG];
04011  M01S03974.ssmove  +++|              END
04012  M01S03975.ssmove  +++|
04013  M01S03976.ssmove  +++|            ELSE
04014  M01S03977.ssmove  +++|              BEGIN
04015  M01S03978.ssmove  +++|              GOAL = SM$VAL[IXDA,IXRL,SMSG];
04016  M01S03979.ssmove  +++|              END
04017  M01S03980.ssmove  +++|
04018  M01S03981.ssmove  +++|            IF NOT DEV$SEC[IXIA,DNX] OR  ##
04019  M01S03982.ssmove  +++|              DEV$NF[IXDA,DNX] EQ 0
04020  M01S03983.ssmove  +++|            THEN                     # SKIP THIS DEVICE #
04021  M01S03984.ssmove  +++|              BEGIN
04022  M01S03985.ssmove  +++|              TEST DNX;
04023  M01S03986.ssmove  +++|              END
04024  M01S03987.ssmove  +++|
04025  M01S03988.ssmove  +++|            END
04026  M01S03989.ssmove  +++|
04027  M01S03990.ssmove  +++|#
04028  M01S03991.ssmove  +++|*     PRINT EO, DN, DT-N, TYPE.
04029  M01S03992.ssmove  +++|#
04030  M01S03993.ssmove  +++|
04031  M01S03994.ssmove  +++|          CHR$10[0] = XCOD(DEV$EO[IXIA,DNX]);
04032  M01S03995.ssmove  +++|          RPLINE(OUT$FETP,CHR$R2[0],2,2,1);
04033  M01S03996.ssmove  +++|
04034  M01S03997.ssmove  +++|          CHR$10[0] = XCOD(DEV$DN[IXIA,DNX]);
04035  M01S03998.ssmove  +++|          RPLINE(OUT$FETP,CHR$R2[0],6,2,1);
04036  M01S03999.ssmove  +++|
04037  M01S04000.ssmove  +++|          CHR$10[0] = XCOD(DEV$NUM[IXIA,DNX]);
04038  M01S04001.ssmove  +++|          RPLINE(OUT$FETP,DEV$TYPE[IXIA,DNX],10,2,1);
04039  M01S04002.ssmove  +++|          RPLINE(OUT$FETP,"-",12,1,1);
04040  M01S04003.ssmove  +++|          RPLINE(OUT$FETP,CHR$R1[0],13,1,1);
04041  M01S04004.ssmove  +++|
04042  M01S04005.ssmove  +++|          RPLINE(OUT$FETP,FILE$TYPE[IX],16,4,1);
04043  M01S04006.ssmove  +++|
04044  M01S04007.ssmove  +++|#
04045  M01S04008.ssmove  +++|*     ISSUE BEFORE STATISTICS - NUM. FILES, PRU.
04046  M01S04009.ssmove  +++|#
04047  M01S04010.ssmove  +++|
04048  M01S04011.ssmove  +++|          CHR$10[0] = XCDD(DEV$NF[IX,DNX]);
04049  M01S04012.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],21,8,1);
04050  M01S04013.ssmove  +++|
04051  M01S04014.ssmove  +++|          CHR$10[0] = XCDD(DEV$PRU[IX,DNX]);
04052  M01S04015.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],31,8,1);
04053  M01S04016.ssmove  +++|
04054  M01S04017.ssmove  +++|#
04055  M01S04018.ssmove  +++|*     ISSUE AFTER STATISTICS - FILES, PRU.
04056  M01S04019.ssmove  +++|#
04057  M01S04020.ssmove  +++|
04058  M01S04021.ssmove  +++|          CHR$10[0] = XCDD(DEV$NF[IX,DNX] - DEV$RELF[IX,DNX]);
04059  M01S04022.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],41,8,1);
04060  M01S04023.ssmove  +++|
04061  M01S04024.ssmove  +++|          EXP$PRU = DEV$PRU[IX,DNX] - DEV$RELP[IX,DNX];
04062  M01S04025.ssmove  +++|          EXP$PER = (EXP$PRU*100 + DEV$TPRU[IXIA,DNX]/2)
04063  M01S04026.ssmove  +++|            /DEV$TPRU[IXIA,DNX];
04064  M01S04027.ssmove  +++|          CHR$10[0] = XCDD(EXP$PRU);
04065  M01S04028.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],51,8,1);
04066  M01S04029.ssmove  +++|
04067  M01S04030.ssmove  +++|#
04068  M01S04031.ssmove  +++|*     ISSUE PERCENTAGES.  IF SPACE GOAL NOT MET ISSUE WARNING
04069  M01S04032.ssmove  +++|*     FLAG AND DAYFILE MESSAGE.
04070  M01S04033.ssmove  +++|#
04071  M01S04034.ssmove  +++|
04072  M01S04035.ssmove  +++|          IF EXP$PER GR GOAL
04073  M01S04036.ssmove  +++|          THEN                       # SPACE GOAL NOT MET #
04074  M01S04037.ssmove  +++|            BEGIN
04075  M01S04038.ssmove  +++|            RPLINE(OUT$FETP,"**",72,2,1);
04076  M01S04039.ssmove  +++|            MVMSG$LN[0] = " DEVICE SPACE GOAL NOT MET.";
04077  M01S04040.ssmove  +++|            MESSAGE(MVMSG[0],UDFL1);
04078  M01S04041.ssmove  +++|            END
04079  M01S04042.ssmove  +++|
04080  M01S04043.ssmove  +++|          CHR$10[0] = XCDD(EXP$PER);
04081  M01S04044.ssmove  +++|          RPLINE(OUT$FETP,CHR$R3[0],61,3,1);
04082  M01S04045.ssmove  +++|
04083  M01S04046.ssmove  +++|          CHR$10[0] = XCDD(GOAL);
04084  M01S04047.ssmove  +++|          RPLINE(OUT$FETP,CHR$R3[0],66,3,0);  # WRITE LINE #
04085  M01S04048.ssmove  +++|          END  # REPORT EACH DEVICE #
04086  M01S04049.ssmove  +++|
04087  M01S04050.ssmove  +++|        END  # REPORT BOTH FILE TYPES #
04088  M01S04051.ssmove  +++|
04089  M01S04052.ssmove  +++|#
04090  M01S04053.ssmove  +++|*     ISSUE SUBFAMILY REPORT.  PRINT HEADER TO REPORT FILE.
04091  M01S04054.ssmove  +++|#
04092  M01S04055.ssmove  +++|
04093  M01S04056.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
04094  M01S04057.ssmove  +++|      RPLINE(OUT$FETP,"  ** - DEVICE SPACE GOAL NOT MET",2,32,0);
04095  M01S04058.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
04096  M01S04059.ssmove  +++|      RPLINE(OUT$FETP,"SUBFAMILY REPORT",40,16,0);
04097  M01S04060.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
04098  M01S04061.ssmove  +++|
04099  M01S04062.ssmove  +++|      IF ABNDN
04100  M01S04063.ssmove  +++|      THEN
04101  M01S04064.ssmove  +++|        BEGIN
04102  M01S04065.ssmove  +++|        RPLINE(OUT$FETP,"FILES NOT DESTAGED",22,18,1);
04103  M01S04066.ssmove  +++|        END
04104  M01S04067.ssmove  +++|
04105  M01S04068.ssmove  +++|      ELSE
04106  M01S04069.ssmove  +++|        BEGIN
04107  M01S04070.ssmove  +++|        RPLINE(OUT$FETP,"FILES TO DESTAGE",22,16,1);
04108  M01S04071.ssmove  +++|        END
04109  M01S04072.ssmove  +++|
Line S04073 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04110  M02S04073.ssmove2 ---|      RPLINE(OUT$FETP,"FILES ONLY ON M860",63,18,1);
Line S04074 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04111  M02S04074.ssmove2 ---|      RPLINE(OUT$FETP,"FILES ON M860",108,13,0);
04112  M01S00001.ssmove2 +++|      RPLINE(OUT$FETP,"FILES ONLY ON 7990",63,18,1);
04113  M01S00002.ssmove2 +++|      RPLINE(OUT$FETP,"FILES ON 7990",108,13,0);
04114  M01S04075.ssmove  +++|      RPLINE(OUT$FETP,"SUB             DIRECT",2,25,1);
04115  M01S04076.ssmove  +++|      RPLINE(OUT$FETP,"INDIRECT",37,8,1);
04116  M01S04077.ssmove  +++|      RPLINE(OUT$FETP,"DIRECT             INDIRECT",60,27,1);
04117  M01S04078.ssmove  +++|      RPLINE(OUT$FETP,"DIRECT             INDIRECT",102,27,0);
04118  M01S04079.ssmove  +++|      RPLINE(OUT$FETP,"FAMILY    NUMBER",2,16,1);
04119  M01S04080.ssmove  +++|      RPLINE(OUT$FETP,"PRU    NUMBER        PRU",26,24,1);
04120  M01S04081.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",54,17,1);
04121  M01S04082.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",75,17,1);
04122  M01S04083.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",96,17,1);
04123  M01S04084.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",117,17,0);
04124  M01S04085.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
04125  M01S04086.ssmove  +++|
04126  M01S04087.ssmove  +++|#
04127  M01S04088.ssmove  +++|*     PROCESS EACH SUBFAMILY.
04128  M01S04089.ssmove  +++|#
04129  M01S04090.ssmove  +++|
04130  M01S04091.ssmove  +++|      SLOWFOR SUBFAM = 0 STEP 1 UNTIL MAXSF
04131  M01S04092.ssmove  +++|      DO
04132  M01S04093.ssmove  +++|        BEGIN  # FOR EACH SUBFAMILY #
04133  M01S04094.ssmove  +++|        SLOWFOR IX = IXDA STEP 1 UNTIL IXIA
04134  M01S04095.ssmove  +++|        DO
04135  M01S04096.ssmove  +++|          BEGIN  # REPORT BOTH FILE TYPES #
04136  M01S04097.ssmove  +++|          CHR$10[0] = XCDD(SUBFAM);
04137  M01S04098.ssmove  +++|          RPLINE(OUT$FETP,CHR$R1[0],3,1,1);
04138  M01S04099.ssmove  +++|          IF IX EQ IXDA
04139  M01S04100.ssmove  +++|          THEN
04140  M01S04101.ssmove  +++|            BEGIN  # DIRECT ACCESS #
04141  M01S04102.ssmove  +++|            CHR$10[0] = XCDD(SFDS$NF[IX,SUBFAM]);
04142  M01S04103.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],10,8,1);
04143  M01S04104.ssmove  +++|            CHR$10[0] = XCDD(SFDS$PRU[IX,SUBFAM]);
04144  M01S04105.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],21,8,1);
04145  M01S04106.ssmove  +++|            CHR$10[0] = XCDD(SFRL$NF[IX,SUBFAM]);
04146  M01S04107.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],52,8,1);
04147  M01S04108.ssmove  +++|            CHR$10[0] = XCDD(SFRL$PRU[IX,SUBFAM]);
04148  M01S04109.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],63,8,1);
04149  M01S04110.ssmove  +++|            CHR$10[0] = XCDD(SFDM$NF[IX,SUBFAM]);
04150  M01S04111.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],94,8,1);
04151  M01S04112.ssmove  +++|            CHR$10[0] = XCDD(SFDM$PRU[IX,SUBFAM]);
04152  M01S04113.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],105,8,1);
04153  M01S04114.ssmove  +++|            END  # DIRECT ACCESS #
04154  M01S04115.ssmove  +++|
04155  M01S04116.ssmove  +++|          ELSE
04156  M01S04117.ssmove  +++|            BEGIN  # INDIRECT ACCESS #
04157  M01S04118.ssmove  +++|            CHR$10[0] = XCDD(SFDS$NF[IX,SUBFAM]);
04158  M01S04119.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],31,8,1);
04159  M01S04120.ssmove  +++|            CHR$10[0] = XCDD(SFDS$PRU[IX,SUBFAM]);
04160  M01S04121.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],42,8,1);
04161  M01S04122.ssmove  +++|            CHR$10[0] = XCDD(SFRL$NF[IX,SUBFAM]);
04162  M01S04123.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],73,8,1);
04163  M01S04124.ssmove  +++|            CHR$10[0] = XCDD(SFRL$PRU[IX,SUBFAM]);
04164  M01S04125.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],84,8,1);
04165  M01S04126.ssmove  +++|            CHR$10[0] = XCDD(SFDM$NF[IX,SUBFAM]);
04166  M01S04127.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],115,8,1);
04167  M01S04128.ssmove  +++|            CHR$10[0] = XCDD(SFDM$PRU[IX,SUBFAM]);
04168  M01S04129.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],126,8,0);
04169  M01S04130.ssmove  +++|            END  # INDIRECT ACCESS #
04170  M01S04131.ssmove  +++|
04171  M01S04132.ssmove  +++|          END  # REPORT BOTH FILE TYPES #
04172  M01S04133.ssmove  +++|
04173  M01S04134.ssmove  +++|        END  # FOR EACH SUBFAMILY #
04174  M01S04135.ssmove  +++|
04175  M01S04136.ssmove  +++|      END  # MVRPTDS #
04176  M01S04137.ssmove  +++|
04177  M01S04138.ssmove  +++|    TERM
04178  M01S04139.ssmove  +++|PROC MVVALDS(DVAL,PO);
04179  M01S04140.ssmove  +++|# TITLE MVVALDS - CALCULATE DESTAGE VALUE.                            #
04180  M01S04141.ssmove  +++|
04181  M01S04142.ssmove  +++|      BEGIN  # MVVALDS #
04182  M01S04143.ssmove  +++|
04183  M01S04144.ssmove  +++|#
04184  M01S04145.ssmove  +++|**    MVVALDS - CALCULATE DESTAGE VALUE.
04185  M01S04146.ssmove  +++|*
04186  M01S04147.ssmove  +++|*     PROC MVVALDS(DVAL,PO).
04187  M01S04148.ssmove  +++|*
04188  M01S04149.ssmove  +++|*     ENTRY.    PO = PROCESSING OPTION FROM *SF* DIRECTIVE, OR 0.
04189  M01S04150.ssmove  +++|*
04190  M01S04151.ssmove  +++|*     EXIT.     DVAL = DESTAGE VALUE.
04191  M01S04152.ssmove  +++|#
04192  M01S04153.ssmove  +++|
04193  M01S04154.ssmove  +++|      ITEM DVAL       I;             # DESTAGE VALUE #
04194  M01S04155.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
04195  M01S04156.ssmove  +++|
04196  M01S04157.ssmove  +++|#
04197  M01S04158.ssmove  +++|****  PROC MVVALDS - XREF LIST BEGIN.
04198  M01S04159.ssmove  +++|#
04199  M01S04160.ssmove  +++|
04200  M01S04161.ssmove  +++|      XREF
04201  M01S04162.ssmove  +++|        BEGIN
04202  M01S04163.ssmove  +++|        FUNC MVRELAG U;              # RELATIVE AGE #
04203  M01S04164.ssmove  +++|        END
04204  M01S04165.ssmove  +++|
04205  M01S04166.ssmove  +++|#
04206  M01S04167.ssmove  +++|****  PROC MVVALDS - XREF LIST END.
04207  M01S04168.ssmove  +++|#
04208  M01S04169.ssmove  +++|
04209  M01S04170.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
04210  M01S04171.ssmove  +++|*CALL,COMBFAS
04211  M01S04172.ssmove  +++|*CALL COMBSIT
04212  M01S04173.ssmove  +++|*CALL,COMSPFM
04213  M01S04174.ssmove  +++|*CALL,COMTMOV
04214  M01S04175.ssmove  +++|*CALL,COMTMVD
04215  M01S04176.ssmove  +++|
04216  M01S04177.ssmove  +++|
04217  M01S04178.ssmove  +++|      ITEM AGE        I;             # DAYS SINCE LAST ACCESS #
04218  M01S04179.ssmove  +++|                                               CONTROL EJECT;
04219  M01S04180.ssmove  +++|      AGE = CURAGE - MVRELAG(PFC$MDD[0]);  # TIME SINCE LAST ACCESS #
04220  M01S04181.ssmove  +++|      IF PFC$MDT[0] GR CURTIME
04221  M01S04182.ssmove  +++|      THEN
04222  M01S04183.ssmove  +++|        BEGIN
04223  M01S04184.ssmove  +++|        AGE = AGE - 1;
04224  M01S04185.ssmove  +++|        END
04225  M01S04186.ssmove  +++|
04226  M01S04187.ssmove  +++|#
04227  M01S04188.ssmove  +++|*     VERIFY FILE MEETS AGE AND SIZE REQUIREMENTS.
04228  M01S04189.ssmove  +++|#
04229  M01S04190.ssmove  +++|
04230  M01S04191.ssmove  +++|      IF (AGE LS FR$VAL[FTYPE,IXDS,FRDD])  # TEST AGE #
04231  M01S04192.ssmove  +++|        OR (PFC$LF[0] LS FR$VAL[FTYPE,IXDS,FRMN])  # MINIMUM SIZE #
04232  M01S04193.ssmove  +++|        OR (PFC$LF[0] GR FR$VAL[FTYPE,IXDS,FRMX])  # MAXIMUM SIZE #
04233  M01S04194.ssmove  +++|      THEN                           # FILE FAILS REQUIREMENTS #
04234  M01S04195.ssmove  +++|        BEGIN
04235  M01S04196.ssmove  +++|        DVAL = -1;
04236  M01S04197.ssmove  +++|        RETURN;
04237  M01S04198.ssmove  +++|        END
04238  M01S04199.ssmove  +++|
04239  M01S04200.ssmove  +++|#
04240  M01S04201.ssmove  +++|*     EVALUATE DESTAGE VALUE FORMULA.
04241  M01S04202.ssmove  +++|#
04242  M01S04203.ssmove  +++|
04243  M01S04204.ssmove  +++|      DVAL =                         ##
04244  M01S04205.ssmove  +++|        (WA$VAL[FTYPE,IXDS,WMAG]+WM$VAL[FTYPE,IXDS,WMAG]*AGE)  ##
04245  M01S04206.ssmove  +++|        *(WA$VAL[FTYPE,IXDS,WMLN]+WM$VAL[FTYPE,IXDS,WMLN]*PFC$LF[0])##
04246  M01S04207.ssmove  +++|        *(PR$VAL[FTYPE,IXDS,PFC$RS[0]])  # *PR* FACTOR #
04247  M01S04208.ssmove  +++|        *(BR$VAL[FTYPE,IXDS,PFC$BR[0]])  # *BR* FACTOR #
Line S04209 Modification History
M01 (Added by) ssmove
M02 (Updated by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04248  M02S04209.ssmove2 ---|        /(WA$VAL[FTYPE,IXDS,WAAC]+WM$VAL[FTYPE,IXDS,WMAC]*PFC$AC[0]);
04249  M01S00003.ssmove2 +++|        /((WA$VAL[FTYPE,IXDS,WAAC]+WM$VAL[FTYPE,IXDS,WMAC]   ##
04250  M01S00004.ssmove2 +++|        *PFC$AC[0])*WA$VAL[FTYPE,IXDS,WADV]);
04251  M01S04210.ssmove  +++|
04252  M01S04211.ssmove  +++|
04253  M01S04212.ssmove  +++|
04254  M01S04213.ssmove  +++|      RETURN;
04255  M01S04214.ssmove  +++|      END  # MVVALDS #
04256  M01S04215.ssmove  +++|
04257  M01S04216.ssmove  +++|    TERM
04258  M01S04217.ssmove  +++|PROC MVVALRL(RVAL,PO);
04259  M01S04218.ssmove  +++|# TITLE MVVALRL - CALCULATE RELEASE VALUE.                            #
04260  M01S04219.ssmove  +++|      BEGIN  # MVVALRL #
04261  M01S04220.ssmove  +++|
04262  M01S04221.ssmove  +++|#
04263  M01S04222.ssmove  +++|**    MVVALRL - CALCULATE RELEASE VALUE.
04264  M01S04223.ssmove  +++|*
04265  M01S04224.ssmove  +++|*     PROC MVVALRL(RVAL,PO).
04266  M01S04225.ssmove  +++|*
04267  M01S04226.ssmove  +++|*     ENTRY.    PO = PROCESSING OPTION FROM *SF* DIRECTIVE, OR 0.
04268  M01S04227.ssmove  +++|*
04269  M01S04228.ssmove  +++|*     EXIT.     RVAL = RELEASE VALUE.
04270  M01S04229.ssmove  +++|#
04271  M01S04230.ssmove  +++|
04272  M01S04231.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
04273  M01S04232.ssmove  +++|      ITEM RVAL       I;             # RELEASE VALUE #
04274  M01S04233.ssmove  +++|
04275  M01S04234.ssmove  +++|#
04276  M01S04235.ssmove  +++|****  PROC MVVALRL - XREF LIST BEGIN.
04277  M01S04236.ssmove  +++|#
04278  M01S04237.ssmove  +++|
04279  M01S04238.ssmove  +++|      XREF
04280  M01S04239.ssmove  +++|        BEGIN
04281  M01S04240.ssmove  +++|        FUNC MVRELAG U;              # RELATIVE AGE #
04282  M01S04241.ssmove  +++|        END
04283  M01S04242.ssmove  +++|
04284  M01S04243.ssmove  +++|#
04285  M01S04244.ssmove  +++|****  PROC MVVALRL - XREF LIST END.
04286  M01S04245.ssmove  +++|#
04287  M01S04246.ssmove  +++|
04288  M01S04247.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
04289  M01S04248.ssmove  +++|*CALL,COMBFAS
04290  M01S04249.ssmove  +++|*CALL COMBSIT
04291  M01S04250.ssmove  +++|*CALL,COMSPFM
04292  M01S04251.ssmove  +++|*CALL,COMTMOV
04293  M01S04252.ssmove  +++|*CALL,COMTMVD
04294  M01S04253.ssmove  +++|
04295  M01S04254.ssmove  +++|
04296  M01S04255.ssmove  +++|      ITEM AGE        I;             # DAYS SINCE LAST ACCESS #
04297  M01S04256.ssmove  +++|                                               CONTROL EJECT;
04298  M01S04257.ssmove  +++|      AGE = CURAGE - MVRELAG(PFC$ADD[0]);  # TIME SINCE LAST ACCESS #
04299  M01S04258.ssmove  +++|      IF PFC$ADT[0] GR CURTIME
04300  M01S04259.ssmove  +++|      THEN
04301  M01S04260.ssmove  +++|        BEGIN
04302  M01S04261.ssmove  +++|        AGE = AGE - 1;
04303  M01S04262.ssmove  +++|        END
04304  M01S04263.ssmove  +++|
04305  M01S04264.ssmove  +++|#
04306  M01S04265.ssmove  +++|*     VERIFY FILE MEETS AGE AND SIZE REQUIREMENTS.
04307  M01S04266.ssmove  +++|#
04308  M01S04267.ssmove  +++|
04309  M01S04268.ssmove  +++|      IF (AGE LS FR$VAL[FTYPE,IXRL,FRDD])  # TEST AGE #
04310  M01S04269.ssmove  +++|        OR (PFC$LF[0] LS FR$VAL[FTYPE,IXRL,FRMN])  # MINIMUM SIZE #
04311  M01S04270.ssmove  +++|        OR (PFC$LF[0] GR FR$VAL[FTYPE,IXRL,FRMX])  # MAXIMUM SIZE #
04312  M01S04271.ssmove  +++|      THEN                           # FILE FAILS REQUIREMENTS #
04313  M01S04272.ssmove  +++|        BEGIN
04314  M01S04273.ssmove  +++|        RVAL = -1;
04315  M01S04274.ssmove  +++|        RETURN;
04316  M01S04275.ssmove  +++|        END
Proceed to Part 2
cdc/nos2.source/opl.opl871/deck/ssmove.001.txt ยท Last modified: by 127.0.0.1