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 
----------------------------+
02256  M00S02255.ssmove  +++|        CCOK = CCOK AND (STAT EQ 0);
02257  M00S02256.ssmove  +++|        END
02258  M00S02257.ssmove  +++|
02259  M00S02258.ssmove  +++|      IF MVARG$LB[0] EQ LBNS
02260  M00S02259.ssmove  +++|      THEN                           # *LB* NOT SPECIFIED #
02261  M00S02260.ssmove  +++|        BEGIN
02262  M00S02261.ssmove  +++|        MVARG$LB[0] = DEFLB;
02263  M00S02262.ssmove  +++|        END
02264  M00S02263.ssmove  +++|
02265  M00S02264.ssmove  +++|      ELSE
02266  M00S02265.ssmove  +++|        BEGIN
02267  M00S02266.ssmove  +++|        STAT = XDXB(MVARG$LB[0],1,TMPI);
02268  M00S02267.ssmove  +++|        MVARG$LB[0] = TMPI;
02269  M00S02268.ssmove  +++|        IF STAT NQ 0
02270  M00S02269.ssmove  +++|        THEN
02271  M00S02270.ssmove  +++|          BEGIN
02272  M00S02271.ssmove  +++|          CCOK = FALSE;
02273  M00S02272.ssmove  +++|          MVARG$LB[0] = DEFLB;
02274  M00S02273.ssmove  +++|          END
02275  M00S02274.ssmove  +++|
02276  M00S02275.ssmove  +++|        END
02277  M00S02276.ssmove  +++|
02278  M00S02277.ssmove  +++|      IF MVARG$L[0] EQ 0
02279  M00S02278.ssmove  +++|      THEN
02280  M00S02279.ssmove  +++|        BEGIN
02281  M00S02280.ssmove  +++|        OUT$FETP = 0;
02282  M00S02281.ssmove  +++|        END
02283  M00S02282.ssmove  +++|
02284  M00S02283.ssmove  +++|      ELSE
02285  M00S02284.ssmove  +++|        BEGIN
02286  M00S02285.ssmove  +++|        OUT$FETP = LOC(OUT$FET[0]);
02287  M00S02286.ssmove  +++|        END
02288  M00S02287.ssmove  +++|
02289  M00S02288.ssmove  +++|      IF NOT CCOK
02290  M00S02289.ssmove  +++|      THEN
02291  M00S02290.ssmove  +++|        BEGIN
02292  M00S02291.ssmove  +++|        MVMSG$LN[0] = MSG1;
02293  M00S02292.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
02294  M00S02293.ssmove  +++|        RESTPFP(PFP$ABORT);
02295  M00S02294.ssmove  +++|        END
02296  M00S02295.ssmove  +++|
02297  M00S02296.ssmove  +++|      RPOPEN(MVARG$L[0],OUT$FETP,MVHEAD);  # OPEN REPORT FILE #
02298  M00S02297.ssmove  +++|
02299  M00S02298.ssmove  +++|#
02300  M00S02299.ssmove  +++|*     GET DEFAULT FAMILY AND SUBSYSTEM ID.
02301  M00S02300.ssmove  +++|#
02302  M00S02301.ssmove  +++|
02303  M00S02302.ssmove  +++|      SSID$MV = ATAS;
02304  M00S02303.ssmove  +++|      GETFAM(FAMT,NUM,LINK,DEFORD,SSID$MV);
02305  M00S02304.ssmove  +++|
02306  M00S02305.ssmove  +++|      IF MVARG$FM[0] EQ 0
02307  M00S02306.ssmove  +++|      THEN                           # FAMILY NOT SPECIFIED #
02308  M00S02307.ssmove  +++|        BEGIN
02309  M00S02308.ssmove  +++|        MVARG$FM[0] = FAM$NAME[DEFORD];
02310  M00S02309.ssmove  +++|        END
02311  M00S02310.ssmove  +++|
02312  M00S02311.ssmove  +++|      PFP$WRD0[0] = 0;               # SET FAMILY AND USER INDEX #
02313  M00S02312.ssmove  +++|      PFP$FAM[0] = MVARG$FM[0];
02314  M00S02313.ssmove  +++|      PFP$UI[0] = DEF$UI;
02315  M00S02314.ssmove  +++|      PFP$FG1[0] = TRUE;
02316  M00S02315.ssmove  +++|      PFP$FG4[0] = TRUE;
02317  M00S02316.ssmove  +++|      SETPFP(PFP[0]);
02318  M00S02317.ssmove  +++|      IF PFP$STAT[0] NQ 0
02319  M00S02318.ssmove  +++|      THEN                           # FAMILY NOT FOUND #
02320  M00S02319.ssmove  +++|        BEGIN
02321  M00S02320.ssmove  +++|        MVMSG$LN[0] = MSG4;
02322  M00S02321.ssmove  +++|        MESSAGE(MVMSG[0],SYSUDF1);
02323  M00S02322.ssmove  +++|        RESTPFP(PFP$ABORT);          # RESTORE USER-S *PFP* AND ABORT #
02324  M00S02323.ssmove  +++|        END
02325  M00S02324.ssmove  +++|
02326  M00S02325.ssmove  +++|#
02327  M00S02326.ssmove  +++|*     CALL PROCEDURE *MVDIR* TO PROCESS DIRECTIVES.
02328  M00S02327.ssmove  +++|#
02329  M00S02328.ssmove  +++|
02330  M00S02329.ssmove  +++|      MVDIR;
02331  M00S02330.ssmove  +++|
02332  M00S02331.ssmove  +++|#
02333  M00S02332.ssmove  +++|*     CALL *MVINDEV* TO INITIALIZE DEVICE STATUS ARRAYS.
02334  M00S02333.ssmove  +++|#
02335  M00S02334.ssmove  +++|
02336  M00S02335.ssmove  +++|      MVINDEV;
02337  M00S02336.ssmove  +++|
02338  M00S02337.ssmove  +++|#
02339  M00S02338.ssmove  +++|*     ATTACH COMMUNICATION FILE.
02340  M00S02339.ssmove  +++|#
02341  M00S02340.ssmove  +++|
02342  M00S02341.ssmove  +++|      COMNAME = MVOCOM;              # ZERO FILL FILE NAME #
02343  M00S02342.ssmove  +++|      NFILES = 0;
02344  M00S02343.ssmove  +++|      BZFILL(COMNAME,TYPFILL"ZFILL",7);
02345  M00S02344.ssmove  +++|      IF NOT (PX$A[0] AND PX$B[0] AND PX$S[0] AND PX$F[0])
02346  M00S02345.ssmove  +++|      THEN
02347  M00S02346.ssmove  +++|        BEGIN
02348  M00S02347.ssmove  +++|        PF("ATTACH",COMNAME,0,"M","W","RC",STAT,"NA",0,0);
02349  M00S02348.ssmove  +++|        IF STAT NQ OK
02350  M00S02349.ssmove  +++|        THEN
02351  M00S02350.ssmove  +++|          BEGIN  # PROCESS ATTACH ERROR FLAG #
02352  M00S02351.ssmove  +++|          IF STAT EQ FBS
02353  M00S02352.ssmove  +++|          THEN                       # COMMUNICATION FILE BUSY #
02354  M00S02353.ssmove  +++|            BEGIN
02355  M00S02354.ssmove  +++|            MVMSG$LN[0] = MSG2;      # ABORT WITH DAYFILE MESSAGE #
02356  M00S02355.ssmove  +++|            MESSAGE(MVMSG[0],SYSUDF1);
02357  M00S02356.ssmove  +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02358  M00S02357.ssmove  +++|            END
02359  M00S02358.ssmove  +++|
02360  M00S02359.ssmove  +++|          IF STAT EQ FNF
02361  M00S02360.ssmove  +++|          THEN                       # FILE DOES NOT EXIST #
02362  M00S02361.ssmove  +++|            BEGIN
02363  M00S02362.ssmove  +++|            PF("DEFINE",COMNAME,0,"BR","N","RC",STAT,0);
02364  M00S02363.ssmove  +++|            IF STAT NQ OK
02365  M00S02364.ssmove  +++|            THEN                     # PROCESS DEFINE ERROR #
02366  M00S02365.ssmove  +++|              BEGIN
02367  M00S02366.ssmove  +++|              MVMSG$LN[0] = MSG3;    # ABORT WITH DAYFILE MESSAGE #
02368  M00S02367.ssmove  +++|              MESSAGE(MVMSG[0],SYSUDF1);
02369  M00S02368.ssmove  +++|              RESTPFP(PFP$ABORT);    # RESTORE USER-S *PFP* AND ABORT #
02370  M00S02369.ssmove  +++|              END
02371  M00S02370.ssmove  +++|
02372  M00S02371.ssmove  +++|            END
02373  M00S02372.ssmove  +++|
02374  M00S02373.ssmove  +++|          ELSE                       # ABNORMAL TERMINATION #
02375  M00S02374.ssmove  +++|            BEGIN
02376  M00S02375.ssmove  +++|            MVMSG$PROC[0] = PROCNAME;
02377  M00S02376.ssmove  +++|            MESSAGE(MVMSG[0],SYSUDF1);
02378  M00S02377.ssmove  +++|            RESTPFP(PFP$ABORT);      # RESTORE USER-S *PFP* AND ABORT #
02379  M00S02378.ssmove  +++|            END
02380  M00S02379.ssmove  +++|
02381  M00S02380.ssmove  +++|          END  # PROCESS ATTACH ERROR FLAG #
02382  M00S02381.ssmove  +++|
02383  M00S02382.ssmove  +++|        END
02384  M00S02383.ssmove  +++|
02385  M00S02384.ssmove  +++|      PDATE(CURDT$MV);               # GET CURRENT DATE AND TIME #
02386  M00S02385.ssmove  +++|      TMPI = B<24,18>CURDT$MV;
02387  M00S02386.ssmove  +++|      CURAGE = MVRELAG(TMPI);        # ESTABLISH AGE OF TODAY #
02388  M00S02387.ssmove  +++|      CURTIME = B<42,18>CURDT$MV;    # ESTABLISH CURRENT TIME #
02389  M00S02388.ssmove  +++|
02390  M00S02389.ssmove  +++|      END  # MVINIT #
02391  M00S02390.ssmove  +++|
02392  M00S02391.ssmove  +++|    TERM
02393  M00S02392.ssmove  +++|PROC MVPASS3;
02394  M00S02393.ssmove  +++|# TITLE MVPASS3 - FINAL SELECTION OF FILES TO BE RELEASED.            #
02395  M00S02394.ssmove  +++|
02396  M00S02395.ssmove  +++|      BEGIN  # MVPASS3 #
02397  M00S02396.ssmove  +++|                                               CONTROL FTNCALL;
02398  M00S02397.ssmove  +++|
02399  M00S02398.ssmove  +++|#
02400  M00S02399.ssmove  +++|**    MVPASS3 - FINAL SELECTION OF FILES TO BE RELEASED.
02401  M00S02400.ssmove  +++|*
02402  M00S02401.ssmove  +++|*     THIS PROCEDURE DOES THE FINAL SELECTION OF THE FILES TO BE
02403  M00S02402.ssmove  +++|*     RELEASED FROM DISK AND PRODUCES A PASS 3 OUTPUT FILE FOR
02404  M00S02403.ssmove  +++|*     USE IN DOING OR DIRECTING *SSEXEC* TO DO THE SELECTED ACTIONS.
02405  M00S02404.ssmove  +++|*     THIS PASS 3 OUTPUT FILE IS SORTED SUCH THAT FILES TO BE
02406  M00S02405.ssmove  +++|*     DESTAGED ARE ORDERED BY SUBFAMILY AND THEN BY SIZE (SMALL,
02407  M00S02406.ssmove  +++|*     THEN LARGE).
02408  M00S02407.ssmove  +++|*
02409  M00S02408.ssmove  +++|*     PROC MVPASS3.
02410  M00S02409.ssmove  +++|*
02411  M00S02410.ssmove  +++|*     ENTRY.    1) THE PASS 1 OUTPUT FILE IS AVAILABLE ON DISK.
02412  M00S02411.ssmove  +++|*
02413  M00S02412.ssmove  +++|*               2) THE AMOUNT OF DISK SPACE NEEDED PER DEVICE AND
02414  M00S02413.ssmove  +++|*                  FILE TYPE IS IN THE *DEV$NEED* FIELD OF *DEV$STAT*.
02415  M00S02414.ssmove  +++|*
02416  M00S02415.ssmove  +++|*     EXIT.     1) THE PASS 3 OUTPUT FILE CONTAINS ALL FILES TO BE
02417  M00S02416.ssmove  +++|*                  DESTAGED, RELEASED, STAGED, OR FREED.  FILES TO BE
02418  M00S02417.ssmove  +++|*                  DESTAGED ARE SORTED BY SUBFAMILY AND THEN FILE SIZE.
02419  M00S02418.ssmove  +++|*
02420  M00S02419.ssmove  +++|*               2) THE NUMBER OF FILES AND AMOUNT OF MSAS SPACE NEEDED
02421  M00S02420.ssmove  +++|*                  IS PROVIDED IN THE *SFDS$NF* AND *SFDS$PRU* FIELDS
02422  M00S02421.ssmove  +++|*                  OF THE ARRAY *SF$STAT*.
02423  M00S02422.ssmove  +++|*
02424  M00S02423.ssmove  +++|*     NOTES.    THE PROCESSING LOGIC FOR THIS ROUTINE IS AS FOLLOWS..
02425  M00S02424.ssmove  +++|*
02426  M00S02425.ssmove  +++|*               1) SORT THE ENTRIES OF THE PASS 1 OUTPUT FILE BY
02427  M00S02426.ssmove  +++|*                  RELEASE VALUE.
02428  M00S02427.ssmove  +++|*
02429  M00S02428.ssmove  +++|*               2) DETERMINE WHICH OF THE FILES CONDITIONALLY SELECTED
02430  M00S02429.ssmove  +++|*                  TO BE RELEASED WILL ACTUALLY BE RELEASED.  SELECT
02431  M00S02430.ssmove  +++|*                  THOSE HAVING THE LARGEST RELEASE VALUE UNTIL THE
02432  M00S02431.ssmove  +++|*                  NEEDED AMOUNT OF SPACE FOR EACH FILE TYPE ON EACH
02433  M00S02432.ssmove  +++|*                  DEVICE IS OBTAINED.
02434  M00S02433.ssmove  +++|*
02435  M00S02434.ssmove  +++|*               3) WRITE THE ENTRY FOR ALL FILES THUS SELECTED TO THE
02436  M00S02435.ssmove  +++|*                  PASS 3 OUTPUT FILE.  ALSO, COPY THE ENTRIES FOR ALL
02437  M00S02436.ssmove  +++|*                  FILES PREVIOUSLY SELECTED FOR PROCESSING.
02438  M00S02437.ssmove  +++|#
02439  M00S02438.ssmove  +++|
02440  M00S02439.ssmove  +++|#
02441  M00S02440.ssmove  +++|****  PROC MVPASS3 - XREF LIST BEGIN.
02442  M00S02441.ssmove  +++|#
02443  M00S02442.ssmove  +++|
02444  M00S02443.ssmove  +++|      XREF
02445  M00S02444.ssmove  +++|        BEGIN
02446  M00S02445.ssmove  +++|        PROC CLOSEM;                 # CLOSE FILE #
02447  M00S02446.ssmove  +++|        PROC FILESQ;                 # ESTABLISH SEQUENTIAL FILE
02448  M00S02447.ssmove  +++|                                       ORGANIZATION #
02449  M00S02448.ssmove  +++|        PROC OPENM;                  # OPEN FILE #
02450  M00S02449.ssmove  +++|        PROC READ;                   # INITIATE FILE INPUT #
02451  M00S02450.ssmove  +++|        PROC RETERN;                 # RETURN FILE #
02452  M00S02451.ssmove  +++|        PROC READW;                  # READ NEXT RECORD #
Line S02452 Modification History
M01 (Removed by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02453  M01S02452.ssmove1 ---|        PROC SMEND;                  # S/M TERMINATION #
02454  M01S02453.ssmove1 ---|        PROC SMFILE;                 # S/M FILE DEFINITION #
02455  M01S02454.ssmove1 ---|        PROC SMKEY;                  # S/M KEY DEFINITION #
02456  M01S02455.ssmove1 ---|        PROC SMSORT;                 # S/M INITIALIZATION #
Line S00001 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02456.ssmove  +++|        PROC WRITER;                 # FLUSH FILE BUFFER #
02464  M00S02457.ssmove  +++|        PROC WRITEW;                 # WRITE RECORD #
02465  M00S02458.ssmove  +++|        PROC ZSETFET;                # INITIALIZE FET #
02466  M00S02459.ssmove  +++|        END
02467  M00S02460.ssmove  +++|
02468  M00S02461.ssmove  +++|#
02469  M00S02462.ssmove  +++|****  PROC MVPASS3 - XREF LIST END.
02470  M00S02463.ssmove  +++|#
02471  M00S02464.ssmove  +++|
02472  M00S02465.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
02473  M00S02466.ssmove  +++|      DEF SFITL      #35#;           # *FIT* BUFFER SIZE #
02474  M00S02467.ssmove  +++|
02475  M00S02468.ssmove  +++|*CALL,COMBFAS
02476  M00S02469.ssmove  +++|*CALL,COMBTDM
02477  M00S02470.ssmove  +++|*CALL,COMTMOV
02478  M00S02471.ssmove  +++|*CALL,COMTMVP
02479  M00S02472.ssmove  +++|
02480  M00S02473.ssmove  +++|      ITEM EOTDAM     B;             # SIGNAL EOF #
02481  M00S02474.ssmove  +++|      ITEM FLAG       I;             # STATUS FROM I/O CALLS #
02482  M00S02475.ssmove  +++|      ITEM IXLN       I;             # LARGE/SMALL INDEX #
02483  M00S02476.ssmove  +++|      ITEM NXTDAM     I;             # LOOP INDEX #
02484  M00S02477.ssmove  +++|
02485  M00S02478.ssmove  +++|      ARRAY FIT [1:2] S(SFITL);;     # USED TO SORT FILES #
02486  M00S02479.ssmove  +++|                                               CONTROL EJECT;
Line S02480 Modification History
M01 (Removed by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02487  M01S02480.ssmove1 ---|      FILESQ(FIT[1],"LFN",SCR1,"RT","F","BT","C","FL",90);
Line S00007 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02488  M01S00007.ssmove1 +++|      FILESQ(FIT[1],"LFN","SCR1","RT","F","BT","C","FL",90);
02489  M00S02481.ssmove  +++|      OPENM(FIT[1],"INPUT", "R");
02490  M00S02482.ssmove  +++|
02491  M00S02483.ssmove  +++|      FILESQ(FIT[2],"LFN","SCR2","RT","F","BT","C","FL",90);
02492  M00S02484.ssmove  +++|      OPENM(FIT[2],"OUTPUT","R");
02493  M00S02485.ssmove  +++|
Line S02486 Modification History
M01 (Removed by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02494  M01S02486.ssmove1 ---|      SMSORT(90);                    # 90 = BUFFER SIZE #
02495  M01S02487.ssmove1 ---|
02496  M01S02488.ssmove1 ---|      SMFILE("SORT",0,FIT[1]);
02497  M01S02489.ssmove1 ---|      SMFILE("OUTPUT",0,FIT[2]);
02498  M01S02490.ssmove1 ---|
02499  M01S02491.ssmove1 ---|      SMKEY(61,1,10,0,"D");          # SORT BY DECREASING RELEASE VALUE
02500  M01S02492.ssmove1 ---|                                     #
02501  M01S02493.ssmove1 ---|
02502  M01S02494.ssmove1 ---|      SMEND;                         # INITIATE SORT USING ONE KEY #
Line S00008 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02495.ssmove  +++|
02514  M00S02496.ssmove  +++|      CLOSEM(FIT[1]);
02515  M00S02497.ssmove  +++|      CLOSEM(FIT[2]);
02516  M00S02498.ssmove  +++|
02517  M00S02499.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
02518  M00S02500.ssmove  +++|      FETP = LOC(MV$FET[FILEMI]);
02519  M00S02501.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMI]);
02520  M00S02502.ssmove  +++|      ZSETFET(FETP,"SCR2",BUFP,MVBUFL,SFETL);
02521  M00S02503.ssmove  +++|
02522  M00S02504.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
02523  M00S02505.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
02524  M00S02506.ssmove  +++|      ZSETFET(FETP,"SCR3",BUFP,MVBUFL,SFETL);
Line S00018 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02525  M01S00018.ssmove1 +++|      REWIND(MV$FET[FILEMI],RCL);    # REWIND SCR2 #
02526  M00S02507.ssmove  +++|
02527  M00S02508.ssmove  +++|      READ(MV$FET[FILEMI],NRCL);     # PREPARE TO READ SORTED PASS 1
02528  M00S02509.ssmove  +++|                                       OUTPUT FILE #
02529  M00S02510.ssmove  +++|      EOTDAM = FALSE;
02530  M00S02511.ssmove  +++|
02531  M00S02512.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
02532  M00S02513.ssmove  +++|      P<EXT$TDAM> = LOC(MV$WBUF[0]) + TDAMLEN;
02533  M00S02514.ssmove  +++|
02534  M00S02515.ssmove  +++|      SLOWFOR NXTDAM = 0 STEP 1 WHILE NOT EOTDAM
02535  M00S02516.ssmove  +++|      DO
02536  M00S02517.ssmove  +++|        BEGIN  # NEXT TDAM #
02537  M00S02518.ssmove  +++|        READW(MV$FET[FILEMI],MV$WBUF[0],MVWBUFL,FLAG);
02538  M00S02519.ssmove  +++|
02539  M00S02520.ssmove  +++|        IF FLAG NQ 0
02540  M00S02521.ssmove  +++|        THEN
02541  M00S02522.ssmove  +++|          BEGIN
02542  M00S02523.ssmove  +++|          EOTDAM = TRUE;
02543  M00S02524.ssmove  +++|          TEST NXTDAM;
02544  M00S02525.ssmove  +++|          END
02545  M00S02526.ssmove  +++|
02546  M00S02527.ssmove  +++|#
02547  M00S02528.ssmove  +++|*     INITIALIZE FILE INDICES.
02548  M00S02529.ssmove  +++|#
02549  M00S02530.ssmove  +++|
02550  M00S02531.ssmove  +++|        DNX = EXT$DNX[0];
02551  M00S02532.ssmove  +++|        FTYPE = EXT$FTYPE[0];
02552  M00S02533.ssmove  +++|        SFX = TDAMSBF[0];
02553  M00S02534.ssmove  +++|
02554  M00S02535.ssmove  +++|#
02555  M00S02536.ssmove  +++|*     IF THE FILE IS TO BE RELEASED, UPDATE DEVICE STATISTICS
02556  M00S02537.ssmove  +++|*     AND PROCESSING ACTION FLAGS.
02557  M00S02538.ssmove  +++|#
02558  M00S02539.ssmove  +++|
02559  M00S02540.ssmove  +++|        IF ( EXT$CREL[0]             # CANDIDATE TO BE RELEASED #
02560  M00S02541.ssmove  +++|          AND (DEV$NEED[FTYPE,DNX] GR 0) )  # AND SPACE NEEDED #
02561  M00S02542.ssmove  +++|
02562  M00S02543.ssmove  +++|        THEN                         # FILE IS TO BE RELEASED #
02563  M00S02544.ssmove  +++|          BEGIN
02564  M00S02545.ssmove  +++|          EXT$REL[0] = TRUE;
02565  M00S02546.ssmove  +++|          DEV$NEED[FTYPE,DNX] = DEV$NEED[FTYPE,DNX] - TDAMFLN[0];
02566  M00S02547.ssmove  +++|          DEV$RELF[FTYPE,DNX] = DEV$RELF[FTYPE,DNX] + 1;
02567  M00S02548.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] - TDAMFLN[0];
02568  M00S02549.ssmove  +++|          IF FTYPE EQ IXIA
02569  M00S02550.ssmove  +++|          THEN
02570  M00S02551.ssmove  +++|            BEGIN
02571  M00S02552.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TDAMFLN[0];
02572  M00S02553.ssmove  +++|            END
02573  M00S02554.ssmove  +++|
02574  M00S02555.ssmove  +++|          ELSE
02575  M00S02556.ssmove  +++|            BEGIN
02576  M00S02557.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
02577  M00S02558.ssmove  +++|            TRUPRU = (((TDAMFLN[0]+1) / PRUTRK) + 1) * PRUTRK;
02578  M00S02559.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TRUPRU;
02579  M00S02560.ssmove  +++|            END
02580  M00S02561.ssmove  +++|
02581  M00S02562.ssmove  +++|          END
02582  M00S02563.ssmove  +++|
02583  M00S02564.ssmove  +++|#
02584  M00S02565.ssmove  +++|*     FOR FILES WHICH ARE TO BE DESTAGED, COUNT THE FILES AND
02585  M00S02566.ssmove  +++|*     ALLOCATION UNIT REQUIREMENTS PER SUBFAMILY AND FILE SIZE.
02586  M00S02567.ssmove  +++|#
02587  M00S02568.ssmove  +++|
02588  M00S02569.ssmove  +++|        IF EXT$DES[0]                # DESTAGE SELECTED UNCONDITIONALLY
02589  M00S02570.ssmove  +++|                                     #
02590  M00S02571.ssmove  +++|          OR (EXT$CDES[0] AND EXT$REL[0])
02591  M00S02572.ssmove  +++|
02592  M00S02573.ssmove  +++|        THEN                         # UPDATE DATA NEEDED BY *SSEXEC*
02593  M00S02574.ssmove  +++|                                       TO DESTAGE FILES #
02594  M00S02575.ssmove  +++|          BEGIN
02595  M00S02576.ssmove  +++|          IF TDAMFLN[0] LS MVARG$LB[0]
02596  M00S02577.ssmove  +++|          THEN                       # SMALL FILE #
02597  M00S02578.ssmove  +++|            BEGIN
02598  M00S02579.ssmove  +++|            IXLN = IXSM;
02599  M00S02580.ssmove  +++|            END
02600  M00S02581.ssmove  +++|
02601  M00S02582.ssmove  +++|          ELSE                       # LARGE FILE #
02602  M00S02583.ssmove  +++|            BEGIN
02603  M00S02584.ssmove  +++|            IXLN = IXLG;
02604  M00S02585.ssmove  +++|            END
02605  M00S02586.ssmove  +++|
02606  M00S02587.ssmove  +++|          EXT$DES[0] = TRUE;
02607  M00S02588.ssmove  +++|          EXT$IXLN[0] = IXLN;
02608  M00S02589.ssmove  +++|          SFDS$NF[FTYPE,SFX] = SFDS$NF[FTYPE,SFX] + 1;
02609  M00S02590.ssmove  +++|          SFDS$PRU[FTYPE,SFX] = SFDS$PRU[FTYPE,SFX] + TDAMFLN[0];
02610  M00S02591.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
02611  M00S02592.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + TDAMFLN[0];
02612  M00S02593.ssmove  +++|          END
02613  M00S02594.ssmove  +++|
02614  M00S02595.ssmove  +++|#
02615  M00S02596.ssmove  +++|*     COUNT THE NUMBER OF AND TOTAL LENGTH OF FILES TO BE STAGED.
02616  M00S02597.ssmove  +++|#
02617  M00S02598.ssmove  +++|
02618  M00S02599.ssmove  +++|        IF EXT$STG[0]
02619  M00S02600.ssmove  +++|        THEN
02620  M00S02601.ssmove  +++|          BEGIN
02621  M00S02602.ssmove  +++|          SFSG$NF[FTYPE,SFX] = SFSG$NF[FTYPE,SFX] + 1;
02622  M00S02603.ssmove  +++|          SFSG$PRU[FTYPE,SFX] = SFSG$PRU[FTYPE,SFX] + TDAMFLN[0];
02623  M00S02604.ssmove  +++|          SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] - 1;
02624  M00S02605.ssmove  +++|          SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] - TDAMFLN[0];
02625  M00S02606.ssmove  +++|          END
02626  M00S02607.ssmove  +++|
02627  M00S02608.ssmove  +++|        IF EXT$CLR[0] OR TDAMFFF[0]
02628  M00S02609.ssmove  +++|        THEN
02629  M00S02610.ssmove  +++|          BEGIN
02630  M00S02611.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] - 1;
02631  M00S02612.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] - TDAMFLN[0];
02632  M00S02613.ssmove  +++|          END
02633  M00S02614.ssmove  +++|
02634  M00S02615.ssmove  +++|        ELSE
02635  M00S02616.ssmove  +++|          BEGIN
02636  M00S02617.ssmove  +++|          IF EXT$REL[0]
02637  M00S02618.ssmove  +++|          THEN
02638  M00S02619.ssmove  +++|            BEGIN
02639  M00S02620.ssmove  +++|            SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] + 1;
02640  M00S02621.ssmove  +++|            SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] + TDAMFLN[0];
02641  M00S02622.ssmove  +++|            END
02642  M00S02623.ssmove  +++|
02643  M00S02624.ssmove  +++|          END
02644  M00S02625.ssmove  +++|
02645  M00S02626.ssmove  +++|#
02646  M00S02627.ssmove  +++|*     FOR FILES SELECTED FOR FURTHER PROCESSING
02647  M00S02628.ssmove  +++|*     (EXT$STG/REL/DES/CLR BIT SET), WRITE THE FILE-S ENTRY
02648  M00S02629.ssmove  +++|*     TO THE PASS 3 OUTPUT FILE.
02649  M00S02630.ssmove  +++|#
02650  M00S02631.ssmove  +++|
02651  M00S02632.ssmove  +++|        IF EXT$PA3[0] NQ 0
02652  M00S02633.ssmove  +++|        THEN
02653  M00S02634.ssmove  +++|          BEGIN
02654  M00S02635.ssmove  +++|          WRITEW(MV$FET[FILEMO],MV$WBUF[0],MVWBUFL,FLAG);
02655  M00S02636.ssmove  +++|          END
02656  M00S02637.ssmove  +++|
02657  M00S02638.ssmove  +++|        END  # NEXT TDAM #
02658  M00S02639.ssmove  +++|
02659  M00S02640.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
02660  M00S02641.ssmove  +++|
02661  M00S02642.ssmove  +++|#
02662  M00S02643.ssmove  +++|*     SORT THE ABOVE FILE BY SUBFAMILY, FILE SIZE (SMALL/LARGE),
02663  M00S02644.ssmove  +++|*     AND FILE LENGTH SO IT CAN BE PROCESSED BY THE NEXT ROUTINE.
02664  M00S02645.ssmove  +++|#
02665  M00S02646.ssmove  +++|
02666  M00S02647.ssmove  +++|      FILESQ(FIT[1],"LFN","SCR3","RT","F","BT","C","FL",90);
02667  M00S02648.ssmove  +++|      OPENM(FIT[1],"INPUT","R");
02668  M00S02649.ssmove  +++|
02669  M00S02650.ssmove  +++|      FILESQ(FIT[2],"LFN","SCR4","RT","F","BT","C","FL",90);
02670  M00S02651.ssmove  +++|      OPENM(FIT[2],"OUTPUT","R");
02671  M00S02652.ssmove  +++|
Line S02653 Modification History
M01 (Removed by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02672  M01S02653.ssmove1 ---|      SMSORT(90);
02673  M01S02654.ssmove1 ---|
02674  M01S02655.ssmove1 ---|      SMFILE("SORT",0,FIT[1]);       # DEFINE INPUT FILE #
02675  M01S02656.ssmove1 ---|
02676  M01S02657.ssmove1 ---|      SMFILE("OUTPUT",0,FIT[2]);     # DEFINE OUTPUT FILE #
02677  M01S02658.ssmove1 ---|
02678  M01S02659.ssmove1 ---|      SMKEY(30,4,0,3);               # KEY1 = SUBFAMILY #
02679  M01S02660.ssmove1 ---|
02680  M01S02661.ssmove1 ---|      SMKEY(73,1,1,0);               # KEY2 = FILE SIZE *IXLN* #
02681  M01S02662.ssmove1 ---|
02682  M01S02663.ssmove1 ---|      SMKEY(51,2,4,0,"D");           # KEY3 = FILE LENGTH #
02683  M01S02664.ssmove1 ---|
02684  M01S02665.ssmove1 ---|      SMEND;                         # INITIATE SORTING ON THE THREE
02685  M01S02666.ssmove1 ---|                                       KEYS #
Line S00019 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
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  M00S02667.ssmove  +++|
02701  M00S02668.ssmove  +++|      CLOSEM(FIT[1]);
02702  M00S02669.ssmove  +++|      CLOSEM(FIT[2]);
02703  M00S02670.ssmove  +++|      RETERN(MV$FET[FILEMI],RCL);
02704  M00S02671.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
02705  M00S02672.ssmove  +++|      END  # MVPASS3 #
02706  M00S02673.ssmove  +++|
02707  M00S02674.ssmove  +++|    TERM
02708  M00S02675.ssmove  +++|PROC MVPASS4;
02709  M00S02676.ssmove  +++|# TITLE MVPASS4 - SETS UP THE COMMUNICATION FILE.                     #
02710  M00S02677.ssmove  +++|
02711  M00S02678.ssmove  +++|      BEGIN  # MVPASS4 #
02712  M00S02679.ssmove  +++|
02713  M00S02680.ssmove  +++|#
02714  M00S02681.ssmove  +++|**    MVPASS4 - SETS UP THE COMMUNICATION FILE.
02715  M00S02682.ssmove  +++|*
02716  M00S02683.ssmove  +++|*     THIS PROCEDURE READS THE FILE CONTAINING AN ENTRY FOR
02717  M00S02684.ssmove  +++|*     EACH FILE SELECTED FOR PROCESSING AND EITHER DOES IT DIRECTLY,
02718  M00S02685.ssmove  +++|*     OR WRITES AN ENTRY ON THE *SSEXEC* COMMUNICATION FILE SO
02719  M00S02686.ssmove  +++|*     *SSEXEC* CAN DESTAGE THE FILE AND OPTIONALLY RELEASE IT FROM
02720  M00S02687.ssmove  +++|*     DISK.  FILES WHICH ARE PROCESSED DIRECTLY ARE PASSED TO
02721  M00S02688.ssmove  +++|*     PROCEDURE *MVDOIT* WHICH CALLS *PFM* TO PERFORM THE ACTION.
02722  M00S02689.ssmove  +++|*     THIS PROCEDURE ALSO WRITES A LINE ON THE OUTPUT FILE FOR EACH
02723  M00S02690.ssmove  +++|*     FILE SELECTED FOR PROCESSING, IF THE *LO=F* OPTION IS ON.
02724  M00S02691.ssmove  +++|*
02725  M00S02692.ssmove  +++|*     PROC MVPASS4.
02726  M00S02693.ssmove  +++|*
02727  M00S02694.ssmove  +++|*     ENTRY.   FILE *SCR4* CONTAINS ENTRIES FOR ALL FILES TO BE
02728  M00S02695.ssmove  +++|*              PROCESSED.  IT IS SORTED BY SUBFAMILY, FILE LENGTH
02729  M00S02696.ssmove  +++|*              (SHORT/LONG), AND FILE SIZE (BY PRU LENGTH, LARGEST
02730  M00S02697.ssmove  +++|*              FIRST).
02731  M00S02698.ssmove  +++|*
02732  M00S02699.ssmove  +++|*     EXIT.    1) CALLS TO *MVDOIT* ARE DONE TO CAUSE PROCESSING FOR
02733  M00S02700.ssmove  +++|*                 FILES TO BE STAGED, RELEASED OR FREED FROM A
02734  M00S02701.ssmove  +++|*                 CARTRIDGE.
02735  M00S02702.ssmove  +++|*
02736  M00S02703.ssmove  +++|*              2) ENTRIES FOR FILES TO BE DESTAGED OR DESTAGED AND
02737  M00S02704.ssmove  +++|*                 RELEASED ARE WRITTEN TO THE COMMUNICATION FILE.
02738  M00S02705.ssmove  +++|*
02739  M00S02706.ssmove  +++|*              3) THE OUTPUT FILE CONTAINS AN ENTRY FOR EACH FILE
02740  M00S02707.ssmove  +++|*                 SELECTED FOR PROCESSING.
02741  M00S02708.ssmove  +++|#
02742  M00S02709.ssmove  +++|
02743  M00S02710.ssmove  +++|#
02744  M00S02711.ssmove  +++|****  PROC MVPASS4 - XREF LIST BEGIN.
02745  M00S02712.ssmove  +++|#
02746  M00S02713.ssmove  +++|
02747  M00S02714.ssmove  +++|      XREF
02748  M00S02715.ssmove  +++|        BEGIN
02749  M00S02716.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
02750  M00S02717.ssmove  +++|        PROC MVDOIT;                 # PERFORM PROCESSING, EXCEPT
02751  M00S02718.ssmove  +++|                                       DESTAGES #
02752  M00S02719.ssmove  +++|        PROC MVPRNDT;                # PRINT DATE AND ACCESS COUNT #
02753  M00S02720.ssmove  +++|        PROC MVRPTDS;                # REPORT DEVICE STATUS #
02754  M00S02721.ssmove  +++|        PROC READ;                   # INITIATE DATA TRANSFER INTO A
02755  M00S02722.ssmove  +++|                                       BUFFER #
02756  M00S02723.ssmove  +++|        PROC READW;                  # READ A RECORD INTO WORKING
02757  M00S02724.ssmove  +++|                                       BUFFER #
02758  M00S02725.ssmove  +++|        PROC RETERN;                 # RETURN FILE #
Line S00033 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02759  M01S00033.ssmove1 +++|        PROC REWIND;                 # REWIND FILE #
02760  M00S02726.ssmove  +++|        PROC RPEJECT;                # ISSUE PAGE EJECT #
02761  M00S02727.ssmove  +++|        PROC RPLINE;                 # WRITE LINE ON OUTPUT FILE #
02762  M00S02728.ssmove  +++|        PROC WRITER;                 # FLUSH BUFFER TO FILE #
02763  M00S02729.ssmove  +++|        PROC WRITEW;                 # WRITE RECORD TO FILE BUFFER #
02764  M00S02730.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
02765  M00S02731.ssmove  +++|        PROC ZSETFET;                # INITIALIZE *FET* #
02766  M00S02732.ssmove  +++|        FUNC XCDD C(10);             # CONVERT BINARY TO DECIMAL
02767  M00S02733.ssmove  +++|                                       DISPLAY #
02768  M00S02734.ssmove  +++|        FUNC XCOD C(10);             # CONVERT BINARY TO OCTAL DISPLAY
02769  M00S02735.ssmove  +++|                                     #
02770  M00S02736.ssmove  +++|        END
02771  M00S02737.ssmove  +++|
02772  M00S02738.ssmove  +++|#
02773  M00S02739.ssmove  +++|****  PROC MVPASS4 - XREF LIST END.
02774  M00S02740.ssmove  +++|#
02775  M00S02741.ssmove  +++|
02776  M00S02742.ssmove  +++|
02777  M00S02743.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMMON DECKS #
02778  M00S02744.ssmove  +++|
02779  M00S02745.ssmove  +++|*CALL,COMBFAS
02780  M00S02746.ssmove  +++|*CALL,COMBBZF
02781  M00S02747.ssmove  +++|*CALL,COMBTDM
02782  M00S02748.ssmove  +++|*CALL,COMTMOV
02783  M00S02749.ssmove  +++|*CALL COMTMVP
02784  M00S02750.ssmove  +++|*CALL,COMTOUT
02785  M00S02751.ssmove  +++|
02786  M00S02752.ssmove  +++|
02787  M00S02753.ssmove  +++|      DEF FILEHDR1   #"NAME    TYPE     UI    LENGTH     DATE"#;
02788  M00S02754.ssmove  +++|      DEF FILEHDR2   #"  ACC-CT  ACTION(* = NOT DONE PER *PX* OPTION)"
02789  M00S02755.ssmove  +++|        #;
02790  M00S02756.ssmove  +++|      DEF FILEHDR3   #"DES-VAL   REL-VAL"#;
02791  M00S02757.ssmove  +++|      DEF MSGCLR     #"CLEAR *ASA* FIELD.   "#;
02792  M00S02758.ssmove  +++|      DEF MSGDES     #"DESTAGE FILE.        "#;
02793  M00S02759.ssmove  +++|      DEF MSGDSR     #"DESTAGE AND RELEASE. "#;
02794  M00S02760.ssmove  +++|      DEF MSGREL     #"RELEASE FROM DISK.   "#;
02795  M00S02761.ssmove  +++|      DEF MSGSCLR    #"STAGE, CLEAR *ASA*.  "#;
02796  M00S02762.ssmove  +++|      DEF MSGSTG     #"STAGE FILE TO DISK.  "#;
02797  M00S02763.ssmove  +++|
02798  M00S02764.ssmove  +++|      ITEM EOTDAM     B;             # SIGNALS END-OF-FILE #
02799  M00S02765.ssmove  +++|      ITEM FLAG       I;             # READ STATUS #
02800  M00S02766.ssmove  +++|      ITEM NXTDAM     U;             # LOOP INDEX #
02801  M00S02767.ssmove  +++|      ITEM PREVSF     I;             # PREVIOUS SUBFAMILY #
02802  M00S02768.ssmove  +++|      ITEM SKIP       B;             # CCNTROLS DOING SELECTED ACTION #
02803  M00S02769.ssmove  +++|      ITEM TMPC       C(10);         # TEMPORARY CELL #
02804  M00S02770.ssmove  +++|
02805  M00S02771.ssmove  +++|
02806  M00S02772.ssmove  +++|      ARRAY DTDAM [0:0] S(TDAMLEN);;  # DESTAGE HEADER FOR A SUBFAMILY
02807  M00S02773.ssmove  +++|                                      #
02808  M00S02774.ssmove  +++|                                               CONTROL EJECT;
02809  M00S02775.ssmove  +++|#
02810  M00S02776.ssmove  +++|*     DETERMINE WHETHER TO LIST EACH FILE FOR PROCESSING.
02811  M00S02777.ssmove  +++|#
02812  M00S02778.ssmove  +++|
02813  M00S02779.ssmove  +++|
02814  M00S02780.ssmove  +++|        IF LO$F[0]
02815  M00S02781.ssmove  +++|        THEN                         # FULL LISTING #
02816  M00S02782.ssmove  +++|          BEGIN
02817  M00S02783.ssmove  +++|          LISTFETP = OUT$FETP;
02818  M00S02784.ssmove  +++|          PX$FETP = OUT$FETP;
02819  M00S02785.ssmove  +++|          END
02820  M00S02786.ssmove  +++|
02821  M00S02787.ssmove  +++|        ELSE
02822  M00S02788.ssmove  +++|          BEGIN
02823  M00S02789.ssmove  +++|          IF LO$P[0]
02824  M00S02790.ssmove  +++|          THEN                       # PARTIAL LISTING #
02825  M00S02791.ssmove  +++|            BEGIN
02826  M00S02792.ssmove  +++|            LISTFETP = OUT$FETP;
02827  M00S02793.ssmove  +++|            PX$FETP = 0;
02828  M00S02794.ssmove  +++|            END
02829  M00S02795.ssmove  +++|
02830  M00S02796.ssmove  +++|          ELSE
02831  M00S02797.ssmove  +++|            BEGIN
02832  M00S02798.ssmove  +++|            LISTFETP = 0;
02833  M00S02799.ssmove  +++|            PX$FETP = 0;
02834  M00S02800.ssmove  +++|            END
02835  M00S02801.ssmove  +++|
02836  M00S02802.ssmove  +++|          END
02837  M00S02803.ssmove  +++|
02838  M00S02804.ssmove  +++|#
02839  M00S02805.ssmove  +++|*     INITIALIZE *FET* FOR THE FILES USED BY THIS PROCEDURE.
02840  M00S02806.ssmove  +++|#
02841  M00S02807.ssmove  +++|
02842  M00S02808.ssmove  +++|      FETP = LOC(MV$FET[FILEMI]);
02843  M00S02809.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMI]);
02844  M00S02810.ssmove  +++|      ZSETFET(FETP,SCR4,BUFP,MVBUFL,SFETL);
Line S00034 Modification History
M01 (Added by) ssmove1
Seq #  *Modification Id* Act 
----------------------------+
02845  M01S00034.ssmove1 +++|      REWIND(MV$FET[FILEMI],RCL);    # REWIND SCR4 #
02846  M00S02811.ssmove  +++|      READ(MV$FET[FILEMI],NRCL);
02847  M00S02812.ssmove  +++|
02848  M00S02813.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
02849  M00S02814.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
02850  M00S02815.ssmove  +++|      ZSETFET(FETP,MVOCOM,BUFP,MVBUFL,SFETL);
02851  M00S02816.ssmove  +++|
02852  M00S02817.ssmove  +++|      FETP = LOC(MV$FET[FILEAUX]);
02853  M00S02818.ssmove  +++|      BUFP = LOC(MV$BUF[FILEAUX]);
02854  M00S02819.ssmove  +++|      ZSETFET(FETP,MVLPROB,BUFP,MVBUFL,SFETL);
02855  M00S02820.ssmove  +++|
02856  M00S02821.ssmove  +++|#
02857  M00S02822.ssmove  +++|*     WRITE HEADER TO COMMUNICATION FILE.
02858  M00S02823.ssmove  +++|#
02859  M00S02824.ssmove  +++|
02860  M00S02825.ssmove  +++|      P<MVPREAM> = LOC(MV$WBUF[0]);
02861  M00S02826.ssmove  +++|      ZFILL(MVPREAM,MVPRML);
02862  M00S02827.ssmove  +++|      MVPR$FLNM[0] = MVOCOM;
02863  M00S02828.ssmove  +++|      BZFILL(MVPR$FLNM[0],TYPFILL"BFILL",6);
02864  M00S02829.ssmove  +++|      MVPR$DT[0] = CURDT$MV;
02865  M00S02830.ssmove  +++|      MVPR$LB[0] = MVARG$LB[0];
02866  M00S02831.ssmove  +++|
02867  M00S02832.ssmove  +++|      WRITEW(MV$FET[FILEMO],MVPREAM[0],MVPRML,FLAG);
02868  M00S02833.ssmove  +++|
02869  M00S02834.ssmove  +++|      PREVSF = 8;
02870  M00S02835.ssmove  +++|      EOTDAM = FALSE;
02871  M00S02836.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
02872  M00S02837.ssmove  +++|
02873  M00S02838.ssmove  +++|      RPEJECT(LISTFETP);
02874  M00S02839.ssmove  +++|      RPLINE(LISTFETP,FILEHDR1,2,38,1);
02875  M00S02840.ssmove  +++|      RPLINE(LISTFETP,FILEHDR2,42,46,1);
02876  M00S02841.ssmove  +++|      RPLINE(LISTFETP,FILEHDR3,90,17,0);
02877  M00S02842.ssmove  +++|      RPLINE(LISTFETP," ",1,1,0);
02878  M00S02843.ssmove  +++|
02879  M00S02844.ssmove  +++|      SLOWFOR NXTDAM = 0 STEP 1 WHILE NOT EOTDAM
02880  M00S02845.ssmove  +++|      DO
02881  M00S02846.ssmove  +++|        BEGIN  # NEXT TDAM REQUEST #
02882  M00S02847.ssmove  +++|        READW(MV$FET[FILEMI],MV$WBUF,MVWBUFL,FLAG);
02883  M00S02848.ssmove  +++|        IF FLAG NQ 0
02884  M00S02849.ssmove  +++|        THEN
02885  M00S02850.ssmove  +++|          BEGIN
02886  M00S02851.ssmove  +++|          EOTDAM = TRUE;
02887  M00S02852.ssmove  +++|          TEST NXTDAM;
02888  M00S02853.ssmove  +++|          END
02889  M00S02854.ssmove  +++|#
02890  M00S02855.ssmove  +++|*     SET OUTPUT FILE.
02891  M00S02856.ssmove  +++|#
02892  M00S02857.ssmove  +++|
02893  M00S02858.ssmove  +++|        IF LO$P[0]
02894  M00S02859.ssmove  +++|        THEN
02895  M00S02860.ssmove  +++|          BEGIN
02896  M00S02861.ssmove  +++|          LISTFETP = OUT$FETP;
02897  M00S02862.ssmove  +++|          END
02898  M00S02863.ssmove  +++|
02899  M00S02864.ssmove  +++|#
02900  M00S02865.ssmove  +++|*     SEND ALL REQUESTS WITH A DESTAGE TO *SSEXEC*.
02901  M00S02866.ssmove  +++|*     CALL *MVDOIT* TO PERFORM ALL OTHER REQUESTS.
02902  M00S02867.ssmove  +++|#
02903  M00S02868.ssmove  +++|
02904  M00S02869.ssmove  +++|        IF EXT$DES[0]
02905  M00S02870.ssmove  +++|        THEN                         # SEND TO *SSEXEC* #
02906  M00S02871.ssmove  +++|          BEGIN  # DESTAGE FILE #
02907  M00S02872.ssmove  +++|
02908  M00S02873.ssmove  +++|#
02909  M00S02874.ssmove  +++|*     WRITE SELECTED PROCESSING MESSAGE TO OUTPUT FILE FOR
02910  M00S02875.ssmove  +++|*     FILES TO BE DESTAGED OR DESTAGED AND RELEASED.
02911  M00S02876.ssmove  +++|#
02912  M00S02877.ssmove  +++|
02913  M00S02878.ssmove  +++|          IF EXT$REL[0]
02914  M00S02879.ssmove  +++|          THEN                       # DESTAGE AND RELEASE #
02915  M00S02880.ssmove  +++|            BEGIN
02916  M00S02881.ssmove  +++|            TDAMFC[0] = TDAMFCODE"DESTRLS";
02917  M00S02882.ssmove  +++|            SKIP = PX$A[0] OR PX$B[0];
02918  M00S02883.ssmove  +++|            IF SKIP
02919  M00S02884.ssmove  +++|            THEN
02920  M00S02885.ssmove  +++|              BEGIN
02921  M00S02886.ssmove  +++|              LISTFETP = PX$FETP;
02922  M00S02887.ssmove  +++|              END
02923  M00S02888.ssmove  +++|
02924  M00S02889.ssmove  +++|            RPLINE(LISTFETP,MSGDSR,54,20,1);
02925  M00S02890.ssmove  +++|            MVPRNDT(TDAMLAD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
02926  M00S02891.ssmove  +++|            END
02927  M00S02892.ssmove  +++|
02928  M00S02893.ssmove  +++|          ELSE                       # DESTAGE ONLY #
02929  M00S02894.ssmove  +++|            BEGIN
02930  M00S02895.ssmove  +++|            TDAMFC[0] = TDAMFCODE"DESTAGE";
02931  M00S02896.ssmove  +++|            SKIP = PX$B[0];
02932  M00S02897.ssmove  +++|            IF SKIP
02933  M00S02898.ssmove  +++|            THEN
02934  M00S02899.ssmove  +++|              BEGIN
02935  M00S02900.ssmove  +++|              LISTFETP = PX$FETP;
02936  M00S02901.ssmove  +++|              END
02937  M00S02902.ssmove  +++|
02938  M00S02903.ssmove  +++|            RPLINE(LISTFETP,MSGDES,54,20,1);
02939  M00S02904.ssmove  +++|            MVPRNDT(TDAMLMD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
02940  M00S02905.ssmove  +++|            END
02941  M00S02906.ssmove  +++|
02942  M00S02907.ssmove  +++|#
02943  M00S02908.ssmove  +++|*     WRITE OUTPUT LINE IDENTIFYING FILE.
02944  M00S02909.ssmove  +++|#
02945  M00S02910.ssmove  +++|
02946  M00S02911.ssmove  +++|          TMPC = TDAMPFN[0];
02947  M00S02912.ssmove  +++|          BZFILL(TMPC,TYPFILL"BFILL",7);
02948  M00S02913.ssmove  +++|          RPLINE(LISTFETP,TMPC,2,7,1);   # PFN #
02949  M00S02914.ssmove  +++|
02950  M00S02915.ssmove  +++|          TMPC = XCOD(TDAMUI[0]);
02951  M00S02916.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,10,1); # UI #
02952  M00S02917.ssmove  +++|
02953  M00S02918.ssmove  +++|          TMPC = XCDD(TDAMFLN[0]);
02954  M00S02919.ssmove  +++|          RPLINE(LISTFETP,TMPC,21,10,1); # LENGTH IN PRU #
02955  M00S02920.ssmove  +++|
02956  M00S02921.ssmove  +++|          IF EXT$FTYPE[0] EQ IXIA
02957  M00S02922.ssmove  +++|          THEN
02958  M00S02923.ssmove  +++|            BEGIN
02959  M00S02924.ssmove  +++|            TMPC = "IND.";
02960  M00S02925.ssmove  +++|            END
02961  M00S02926.ssmove  +++|
02962  M00S02927.ssmove  +++|          ELSE
02963  M00S02928.ssmove  +++|            BEGIN
02964  M00S02929.ssmove  +++|            TMPC = "DIR.";
02965  M00S02930.ssmove  +++|            END
02966  M00S02931.ssmove  +++|
02967  M00S02932.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,4,1);
02968  M00S02933.ssmove  +++|
02969  M00S02934.ssmove  +++|          IF SKIP
02970  M00S02935.ssmove  +++|          THEN
02971  M00S02936.ssmove  +++|            BEGIN
02972  M00S02937.ssmove  +++|            TMPC = "*";
02973  M00S02938.ssmove  +++|            END
02974  M00S02939.ssmove  +++|
02975  M00S02940.ssmove  +++|          ELSE
02976  M00S02941.ssmove  +++|            BEGIN
02977  M00S02942.ssmove  +++|            TMPC = " ";
02978  M00S02943.ssmove  +++|            WRITEW(MV$FET[FILEMO],MV$WBUF[0], TDAMLEN,FLAG);
02979  M00S02944.ssmove  +++|            NFILES = NFILES + 1;
02980  M00S02945.ssmove  +++|            END
02981  M00S02946.ssmove  +++|
02982  M00S02947.ssmove  +++|          RPLINE(LISTFETP,TMPC,53,1,0);
02983  M00S02948.ssmove  +++|          TEST NXTDAM;
02984  M00S02949.ssmove  +++|          END  # DESTAGE FILE #
02985  M00S02950.ssmove  +++|
02986  M00S02951.ssmove  +++|#
02987  M00S02952.ssmove  +++|*     ISSUE CORRECT PROCESSING ACTION TEXT TO THE REPORT LINE.
02988  M00S02953.ssmove  +++|*     CALL *MVDOIT* IF IT IS OK TO PERFORM THE SELECTED ACTION.
02989  M00S02954.ssmove  +++|#
02990  M00S02955.ssmove  +++|
02991  M00S02956.ssmove  +++|        IF EXT$STG[0]
02992  M00S02957.ssmove  +++|        THEN
02993  M00S02958.ssmove  +++|          BEGIN
02994  M00S02959.ssmove  +++|          IF EXT$CLR[0]
02995  M00S02960.ssmove  +++|          THEN
02996  M00S02961.ssmove  +++|            BEGIN
02997  M00S02962.ssmove  +++|            SKIP = PX$F[0] OR PX$S[0];
02998  M00S02963.ssmove  +++|            IF SKIP
02999  M00S02964.ssmove  +++|            THEN
03000  M00S02965.ssmove  +++|              BEGIN
03001  M00S02966.ssmove  +++|              LISTFETP = PX$FETP;
03002  M00S02967.ssmove  +++|              END
03003  M00S02968.ssmove  +++|
03004  M00S02969.ssmove  +++|            RPLINE(LISTFETP,MSGSCLR,54,20,1);
03005  M00S02970.ssmove  +++|            END
03006  M00S02971.ssmove  +++|
03007  M00S02972.ssmove  +++|          ELSE                       # STAGE ONLY #
03008  M00S02973.ssmove  +++|            BEGIN
03009  M00S02974.ssmove  +++|            SKIP = PX$S[0];
03010  M00S02975.ssmove  +++|            IF SKIP
03011  M00S02976.ssmove  +++|            THEN
03012  M00S02977.ssmove  +++|              BEGIN
03013  M00S02978.ssmove  +++|              LISTFETP = PX$FETP;
03014  M00S02979.ssmove  +++|              END
03015  M00S02980.ssmove  +++|
03016  M00S02981.ssmove  +++|            RPLINE(LISTFETP,MSGSTG,54,20,1);
03017  M00S02982.ssmove  +++|            END
03018  M00S02983.ssmove  +++|
03019  M00S02984.ssmove  +++|          END
03020  M00S02985.ssmove  +++|
03021  M00S02986.ssmove  +++|        ELSE                         # NO STAGE INVOLVED #
03022  M00S02987.ssmove  +++|          BEGIN
03023  M00S02988.ssmove  +++|          IF EXT$CLR[0]
03024  M00S02989.ssmove  +++|          THEN                       # CLEAR ASA DIRECTLY #
03025  M00S02990.ssmove  +++|            BEGIN
03026  M00S02991.ssmove  +++|            SKIP = PX$F[0];
03027  M00S02992.ssmove  +++|            IF SKIP
03028  M00S02993.ssmove  +++|            THEN
03029  M00S02994.ssmove  +++|              BEGIN
03030  M00S02995.ssmove  +++|              LISTFETP = PX$FETP;
03031  M00S02996.ssmove  +++|              END
03032  M00S02997.ssmove  +++|
03033  M00S02998.ssmove  +++|            RPLINE(LISTFETP,MSGCLR,54,20,1);
03034  M00S02999.ssmove  +++|            END
03035  M00S03000.ssmove  +++|
03036  M00S03001.ssmove  +++|          ELSE                       # MUST BE RELEASE #
03037  M00S03002.ssmove  +++|            BEGIN
03038  M00S03003.ssmove  +++|            SKIP = PX$A[0];
03039  M00S03004.ssmove  +++|            IF SKIP
03040  M00S03005.ssmove  +++|            THEN
03041  M00S03006.ssmove  +++|              BEGIN
03042  M00S03007.ssmove  +++|              LISTFETP = PX$FETP;
03043  M00S03008.ssmove  +++|              END
03044  M00S03009.ssmove  +++|
03045  M00S03010.ssmove  +++|            RPLINE(LISTFETP,MSGREL,54,20,1);
03046  M00S03011.ssmove  +++|            MVPRNDT(TDAMLAD[0],TDAMACC[0],EXT$DESV[0],EXT$RELV[0]);
03047  M00S03012.ssmove  +++|            END
03048  M00S03013.ssmove  +++|
03049  M00S03014.ssmove  +++|          END
03050  M00S03015.ssmove  +++|
03051  M00S03016.ssmove  +++|#
03052  M00S03017.ssmove  +++|*     WRITE OUTPUT LINE IDENTIFYING FILE.
03053  M00S03018.ssmove  +++|#
03054  M00S03019.ssmove  +++|
03055  M00S03020.ssmove  +++|          TMPC = TDAMPFN[0];
03056  M00S03021.ssmove  +++|          BZFILL(TMPC,TYPFILL"BFILL",7);
03057  M00S03022.ssmove  +++|          RPLINE(LISTFETP,TMPC,2,7,1);   # PFN #
03058  M00S03023.ssmove  +++|
03059  M00S03024.ssmove  +++|          TMPC = XCOD(TDAMUI[0]);
03060  M00S03025.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,10,1); # UI #
03061  M00S03026.ssmove  +++|
03062  M00S03027.ssmove  +++|          TMPC = XCDD(TDAMFLN[0]);
03063  M00S03028.ssmove  +++|          RPLINE(LISTFETP,TMPC,21,10,1); # LENGTH IN PRU #
03064  M00S03029.ssmove  +++|
03065  M00S03030.ssmove  +++|          IF EXT$FTYPE[0] EQ IXIA
03066  M00S03031.ssmove  +++|          THEN
03067  M00S03032.ssmove  +++|            BEGIN
03068  M00S03033.ssmove  +++|            TMPC = "IND.";
03069  M00S03034.ssmove  +++|            END
03070  M00S03035.ssmove  +++|
03071  M00S03036.ssmove  +++|          ELSE
03072  M00S03037.ssmove  +++|            BEGIN
03073  M00S03038.ssmove  +++|            TMPC = "DIR.";
03074  M00S03039.ssmove  +++|            END
03075  M00S03040.ssmove  +++|
03076  M00S03041.ssmove  +++|          RPLINE(LISTFETP,TMPC,11,4,1);
03077  M00S03042.ssmove  +++|
03078  M00S03043.ssmove  +++|        IF SKIP
03079  M00S03044.ssmove  +++|        THEN
03080  M00S03045.ssmove  +++|          BEGIN
03081  M00S03046.ssmove  +++|          TMPC = "*";
03082  M00S03047.ssmove  +++|          END
03083  M00S03048.ssmove  +++|
03084  M00S03049.ssmove  +++|        ELSE
03085  M00S03050.ssmove  +++|          BEGIN
03086  M00S03051.ssmove  +++|          TMPC = " ";
03087  M00S03052.ssmove  +++|          MVDOIT;
03088  M00S03053.ssmove  +++|          END
03089  M00S03054.ssmove  +++|
03090  M00S03055.ssmove  +++|        RPLINE(LISTFETP,TMPC,53,1,0);
03091  M00S03056.ssmove  +++|
03092  M00S03057.ssmove  +++|        TEST NXTDAM;
03093  M00S03058.ssmove  +++|        END  # NEXT TDAM REQUEST #
03094  M00S03059.ssmove  +++|
03095  M00S03060.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
03096  M00S03061.ssmove  +++|      WRITER(MV$FET[FILEAUX],RCL);
03097  M00S03062.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
03098  M00S03063.ssmove  +++|      RETERN(MV$FET[FILEMI],RCL);
03099  M00S03064.ssmove  +++|      RETERN(MV$FET[FILEAUX],RCL);
03100  M00S03065.ssmove  +++|
03101  M00S03066.ssmove  +++|#
03102  M00S03067.ssmove  +++|*     ISSUE FIRST CALL TO *MVRPTDS* TO PRODUCE THE REPORT PAGE
03103  M00S03068.ssmove  +++|*     SUMMARIZING THE STATUS OF EACH DEVICE AND SUBFAMILY.
03104  M00S03069.ssmove  +++|#
03105  M00S03070.ssmove  +++|
03106  M00S03071.ssmove  +++|      MVRPTDS(0);
03107  M00S03072.ssmove  +++|
03108  M00S03073.ssmove  +++|      END
03109  M00S03074.ssmove  +++|
03110  M00S03075.ssmove  +++|    TERM
03111  M00S03076.ssmove  +++|PROC MVPFRD;
03112  M00S03077.ssmove  +++|# TITLE MVPFRD - READ PFC.                                            #
03113  M00S03078.ssmove  +++|
03114  M00S03079.ssmove  +++|      BEGIN  # MVPFRD #
03115  M00S03080.ssmove  +++|
03116  M00S03081.ssmove  +++|#
03117  M00S03082.ssmove  +++|**    MVPFRD - READ PFC.
03118  M00S03083.ssmove  +++|*
03119  M00S03084.ssmove  +++|*     THIS PROCEDURE READS THE PFC, CREATES THE PASS 1 OUTPUT
03120  M00S03085.ssmove  +++|*     FILE AND DETERMINES THE AMOUNT OF DISK SPACE TO BE
03121  M00S03086.ssmove  +++|*     RELEASED ON EACH DEVICE.
03122  M00S03087.ssmove  +++|*
03123  M00S03088.ssmove  +++|*     PROC MVPFRD.
03124  M00S03089.ssmove  +++|*
03125  M00S03090.ssmove  +++|*     EXIT.      PASS 1 OUTPUT FILE SET UP.
03126  M00S03091.ssmove  +++|*
03127  M00S03092.ssmove  +++|*     MESSAGES.  INCORRECT DEVICE INDEX.
03128  M00S03093.ssmove  +++|*
03129  M00S03094.ssmove  +++|*     NOTES.     PERMANENT FILES ARE INCLUDED IN THE PASS 1
03130  M00S03095.ssmove  +++|*                OUTPUT FILE IF THEY MEET ANY OF THE FOLLOWING..
03131  M00S03096.ssmove  +++|*
03132  M00S03097.ssmove  +++|*                1) ARE SELECTED BY THE *SF* DIRECTIVE AND
03133  M00S03098.ssmove  +++|*                   THE SPECIFIED PROCESSING IS VALID TO DO.
03134  M00S03099.ssmove  +++|*
03135  M00S03100.ssmove  +++|*                2) HAVE THE FREE-FILE (AFFRE) FLAG SET IN THE
03136  M00S03101.ssmove  +++|*                   *PFC* ENTRY FOR THE FILE WHEN THE FILE HAS
03137  M00S03102.ssmove  +++|*                   A NON-ZERO *ASA* VALUE.
03138  M00S03103.ssmove  +++|*
03139  M00S03104.ssmove  +++|*                3) IF THE FILE SATISFIES THE DESTAGE CRITERIA.
03140  M00S03105.ssmove  +++|*
03141  M00S03106.ssmove  +++|*                4) IF THE FILE IS A CANDIDATE TO BE RELEASED.
03142  M00S03107.ssmove  +++|#
03143  M00S03108.ssmove  +++|
03144  M00S03109.ssmove  +++|#
03145  M00S03110.ssmove  +++|****  PROC MVPFRD - XREF LIST BEGIN.
03146  M00S03111.ssmove  +++|#
03147  M00S03112.ssmove  +++|
03148  M00S03113.ssmove  +++|      XREF
03149  M00S03114.ssmove  +++|        BEGIN
03150  M00S03115.ssmove  +++|        PROC BZFILL;                 # BLANK/ZERO FILL CHARACTER ITEM #
03151  M00S03116.ssmove  +++|        PROC GETDI;                  # GET DEVICE INHIBIT DATE/TIME #
03152  M00S03117.ssmove  +++|        PROC GETPFC;                 # GET NEXT PFC ENTRY #
03153  M00S03118.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
03154  M00S03119.ssmove  +++|        PROC MVCKSF;                 # SEARCH FOR SELECTED FILES #
03155  M00S03120.ssmove  +++|        PROC MVVALDS;                # CALCULATE DESTAGE VALUE #
03156  M00S03121.ssmove  +++|        PROC MVVALRL;                # CALCULATE RELEASE VALUE #
03157  M00S03122.ssmove  +++|        PROC RETERN;                 # RETURNS A FILE #
03158  M00S03123.ssmove  +++|        PROC REWIND;                 # REWINDS A FILE #
03159  M00S03124.ssmove  +++|        PROC UATTACH;                # UTILITY ATTACH #
03160  M00S03125.ssmove  +++|        PROC WRITER;                 # WRITES EOR ON A FILE #
03161  M00S03126.ssmove  +++|        PROC WRITEW;                 # DATA TRANSFER ROUTINE #
03162  M00S03127.ssmove  +++|        PROC XWOD;                   # CONVERT OCTAL TO DISPLAY #
03163  M00S03128.ssmove  +++|        PROC ZFILL;                  # ZERO FILL ARRAY #
03164  M00S03129.ssmove  +++|        PROC ZSETFET;                # SETS UP A FET #
03165  M00S03130.ssmove  +++|        END
03166  M00S03131.ssmove  +++|
03167  M00S03132.ssmove  +++|#
03168  M00S03133.ssmove  +++|****  PROC MVPFRD - XREF LIST END.
03169  M00S03134.ssmove  +++|#
03170  M00S03135.ssmove  +++|
03171  M00S03136.ssmove  +++|      DEF LISTCON   #0#;             # DO NOT LIST COMDECKS #
03172  M00S03137.ssmove  +++|*CALL,COMBFAS
03173  M00S03138.ssmove  +++|*CALL COMBSIT
03174  M00S03139.ssmove  +++|*CALL,COMBBZF
03175  M00S03140.ssmove  +++|*CALL,COMBTDM
03176  M00S03141.ssmove  +++|*CALL,COMSPFM
03177  M00S03142.ssmove  +++|*CALL,COMTCTW
03178  M00S03143.ssmove  +++|*CALL,COMTMOV
03179  M00S03144.ssmove  +++|*CALL,COMTMVD
03180  M00S03145.ssmove  +++|*CALL,COMTMVP
03181  M00S03146.ssmove  +++|
03182  M00S03147.ssmove  +++|      ITEM DISKIMAGE  B;             # TRUE IF DISK IMAGE EXISTS #
03183  M00S03148.ssmove  +++|      ITEM EOPFC      B;             # END OF PFC INDICATOR #
03184  M00S03149.ssmove  +++|      ITEM FAM        C(10);         # FAMILY NAME #
03185  M00S03150.ssmove  +++|      ITEM FLAG       I;             # ERROR STATUS #
03186  M00S03151.ssmove  +++|      ITEM GOAL       I;             # DESIRED PRU ON DISK #
03187  M00S03152.ssmove  +++|      ITEM I          I;             # LOOP INDUCTION VARIABLE #
03188  M00S03153.ssmove  +++|      ITEM INHBDT     U;             # DEVICE INHIBIT DATE/TIME #
03189  M00S03154.ssmove  +++|      ITEM LFNAME     C(10);         # LOCAL FILE NAME #
03190  M00S03155.ssmove  +++|      ITEM MV$DNX     I;             # SPECIFIED DEVICE INDEX #
03191  M00S03156.ssmove  +++|      ITEM NOREL      B;             # LEGALITY OF RELEASING FILE #
03192  M00S03157.ssmove  +++|      ITEM NUMMSS     I;             # NUMBER OF MSS IMAGES #
03193  M00S03158.ssmove  +++|      ITEM NXTPFC     I;             # FILE COUNTER #
03194  M00S03159.ssmove  +++|      ITEM PEOCNT     I;             # PFC ORDINAL #
03195  M00S03160.ssmove  +++|      ITEM PFNAME     C(10);         # PERMANENT FILE NAME #
03196  M00S03161.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
03197  M00S03162.ssmove  +++|      ITEM RES        I;             # FILE RESIDENCE CODE #
03198  M00S03163.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY #
03199  M00S03164.ssmove  +++|
03200  M00S03165.ssmove  +++|      ARRAY SCR$FET [0:0] S(SFETL);;  # SCRATCH FET #
03201  M00S03166.ssmove  +++|
03202  M00S03167.ssmove  +++|      ARRAY ERRMSG [0:0] P(3); ;     # *PFM* ERROR MESSAGES #
03203  M00S03168.ssmove  +++|
03204  M00S03169.ssmove  +++|      ARRAY DISASA  [0:0]  S(2);
03205  M00S03170.ssmove  +++|        BEGIN
03206  M00S03171.ssmove  +++|        ITEM DIS$ASA  C(00,48,12);   # ASA IN DISPLAY CODE #
03207  M00S03172.ssmove  +++|        END
03208  M00S03173.ssmove  +++|
03209  M00S03174.ssmove  +++|      ARRAY MSG1 [0:0]  S(3);       # *PFC* ERROR INFORMATION #
03210  M00S03175.ssmove  +++|        BEGIN
03211  M00S03176.ssmove  +++|        ITEM MSG1$SP   C(00,00,03) = ["   "];
03212  M00S03177.ssmove  +++|        ITEM MSG1$FN   C(00,18,07);   # FILE NAME #
03213  M00S03178.ssmove  +++|        ITEM MSG1$TXT  C(01,00,08) = ["  ASA = "];
03214  M00S03179.ssmove  +++|        ITEM MSG1$ASA  C(01,48,12);   # ALTERNATE STORAGE ADDRESS #
03215  M00S03180.ssmove  +++|        END
03216  M00S03181.ssmove  +++|                                               CONTROL EJECT;
03217  M00S03182.ssmove  +++|
03218  M00S03183.ssmove  +++|#
03219  M00S03184.ssmove  +++|*     SET UP FET FOR PASS 1 OUTPUT FILE.
03220  M00S03185.ssmove  +++|#
03221  M00S03186.ssmove  +++|
03222  M00S03187.ssmove  +++|      FETP = LOC(MV$FET[FILEMO]);
03223  M00S03188.ssmove  +++|      BUFP = LOC(MV$BUF[FILEMO]);
03224  M00S03189.ssmove  +++|      ZSETFET(FETP,SCR1,BUFP,MVBUFL,SFETL);
03225  M00S03190.ssmove  +++|      RETERN(MV$FET[FILEMO],RCL);
03226  M00S03191.ssmove  +++|
03227  M00S03192.ssmove  +++|      FAM = MVARG$FM[0];
03228  M00S03193.ssmove  +++|      LFNAME = "SCR";                # LOCAL FILE NAME #
03229  M00S03194.ssmove  +++|      BZFILL(LFNAME,TYPFILL"ZFILL",10);
03230  M00S03195.ssmove  +++|      BZFILL(FAM,TYPFILL"ZFILL",10);
03231  M00S03196.ssmove  +++|
03232  M00S03197.ssmove  +++|#
03233  M00S03198.ssmove  +++|*     READ PFC.
03234  M00S03199.ssmove  +++|#
03235  M00S03200.ssmove  +++|
03236  M00S03201.ssmove  +++|      P<TDAM> = LOC(MV$WBUF[0]);
03237  M00S03202.ssmove  +++|      P<EXT$TDAM> = LOC(MV$WBUF[0]) + TDAMLEN;
03238  M00S03203.ssmove  +++|      EOPFC = FALSE;
03239  M00S03204.ssmove  +++|      EXT$PAZ[0] = 0;
03240  M00S03205.ssmove  +++|
03241  M00S03206.ssmove  +++|#
03242  M00S03207.ssmove  +++|*     DETERMINE THE INDEX OF THE SPECIFIED DEVICE.
03243  M00S03208.ssmove  +++|#
03244  M00S03209.ssmove  +++|
03245  M00S03210.ssmove  +++|      IF MVARG$DN[0] EQ 0
03246  M00S03211.ssmove  +++|      THEN                           # NO DEVICE SPECIFIED #
03247  M00S03212.ssmove  +++|        BEGIN
03248  M00S03213.ssmove  +++|        MV$DNX = 0;
03249  M00S03214.ssmove  +++|        END
03250  M00S03215.ssmove  +++|
03251  M00S03216.ssmove  +++|      ELSE
03252  M00S03217.ssmove  +++|        BEGIN
03253  M00S03218.ssmove  +++|        MV$DNX = DN$TO$DNX[MVARG$DN[0]];
03254  M00S03219.ssmove  +++|        END
03255  M00S03220.ssmove  +++|
03256  M00S03221.ssmove  +++|#
03257  M00S03222.ssmove  +++|*     THE MAIN LOGIC OF THIS ROUTINE IS IN THE FOLLOWING LOOP.
03258  M00S03223.ssmove  +++|*     PROCESSING FOR EACH FILE OCCURS DURING TWO TRIPS THROUGH
03259  M00S03224.ssmove  +++|*     THIS LOOP.  THE TOP OF THE LOOP COMPLETES PROCESSING FOR
03260  M00S03225.ssmove  +++|*     A FILE.  THE BOTTOM OF THE LOOP INITIATES FILE PROCESSING.
03261  M00S03226.ssmove  +++|*     THE FOLLOWING STEPS COMPRISE THE LOGIC OF THIS MAIN LOOP.
03262  M00S03227.ssmove  +++|*
03263  M00S03228.ssmove  +++|*     1) (TOP OF THE LOOP).. WRITE THE FILE ENTRY TO THE PASS 1
03264  M00S03229.ssmove  +++|*        OUTPUT FILE IF ANY PROCESSING ACTION FLAGS WERE SET
03265  M00S03230.ssmove  +++|*        WHEN THE FILE WAS ANALYZED DURING THE BOTTOM PART
03266  M00S03231.ssmove  +++|*        OF THE PREVIOUS EXECUTION OF THIS LOOP.
03267  M00S03232.ssmove  +++|*
03268  M00S03233.ssmove  +++|*     2) GET THE PFC ENTRY FOR THE NEXT FILE TO BE ANALYZED BY
03269  M00S03234.ssmove  +++|*        THE REST OF THIS LOOP.  ESTABLISH THE FILE TYPE, SUBFAMILY
03270  M00S03235.ssmove  +++|*        AND DEVICE NUMBER INDICES.
03271  M00S03236.ssmove  +++|*
03272  M00S03237.ssmove  +++|*     3) GET THE FILE LENGTH, IF NECESSARY.
03273  M00S03238.ssmove  +++|*
03274  M00S03239.ssmove  +++|*     4) DETERMINE THE RESIDENCE OF THE FILE AND UPDATE DEVICE
03275  M00S03240.ssmove  +++|*        AND SUBFAMILY STATISTICS ACCORDINGLY.
03276  M00S03241.ssmove  +++|*
03277  M00S03242.ssmove  +++|*     5) IGNORE THE FILE IF IT IS EXCLUDED FROM PROCESSING DUE
03278  M00S03243.ssmove  +++|*        TO RUN-TIME PARAMETERS OR IF IT HAS A SPECIAL USER INDEX.
03279  M00S03244.ssmove  +++|*
03280  M00S03245.ssmove  +++|*     6) SELECT PROCESSING ACTIONS AS CONTROLLED BY THE *SF,FN=..*
03281  M00S03246.ssmove  +++|*        DIRECTIVE OR THE *AFFREE* FLAG IN THE PFC ENTRY.
03282  M00S03247.ssmove  +++|*
03283  M00S03248.ssmove  +++|*     7) EVALUATE THE DESTAGE AND RELEASE FORMULAS AND SET
03284  M00S03249.ssmove  +++|*        THE APPROPRIATE PROCESSING ACTION FLAGS.
03285  M00S03250.ssmove  +++|#
03286  M00S03251.ssmove  +++|
03287  M00S03252.ssmove  +++|      SLOWFOR NXTPFC = 0 STEP 1 WHILE NOT EOPFC
03288  M00S03253.ssmove  +++|      DO                             # FINISH PROCESSING OLD PFC ENTRY,
03289  M00S03254.ssmove  +++|                                       THEN START NEW ONE #
03290  M00S03255.ssmove  +++|        BEGIN  # NEXT PFC #
03291  M00S03256.ssmove  +++|        IF EXT$PA[0] NQ 0
03292  M00S03257.ssmove  +++|        THEN                         # SAVE ENTRY FOR NEXT STEP OF
03293  M00S03258.ssmove  +++|                                       ANALYSIS #
03294  M00S03259.ssmove  +++|          BEGIN
03295  M00S03260.ssmove  +++|          TDAMFLN[0] = PFC$LF[0];
03296  M00S03261.ssmove  +++|          TDAMASA[0] = PFC$AA[0];
03297  M00S03262.ssmove  +++|          TDAMAT[0] = PFC$AT[0];
03298  M00S03263.ssmove  +++|          TDAMPFN[0] = PFC$FN[0];
03299  M00S03264.ssmove  +++|          TDAMUI[0] = PFC$UI[0];
03300  M00S03265.ssmove  +++|          TDAMSBF[0] = PFC$SF[0];
03301  M00S03266.ssmove  +++|          TDAMFAM[0] = MVARG$FM[0];
03302  M00S03267.ssmove  +++|          TDAMCDT[0] = PFC$CD[0];
03303  M00S03268.ssmove  +++|          TDAMAL[0] = PFC$AL[0];
03304  M00S03269.ssmove  +++|          TDAMFFF[0] = PFC$AFFRE[0];
03305  M00S03270.ssmove  +++|          TDAMFFF[0] = PFC$AFFRE[0];
03306  M00S03271.ssmove  +++|          EXT$AFOBS[0] = PFC$AFOBS[0];
03307  M00S03272.ssmove  +++|          EXT$RES[0] = RES;
03308  M00S03273.ssmove  +++|          EXT$FTYPE[0] = FTYPE;
03309  M00S03274.ssmove  +++|
03310  M00S03275.ssmove  +++|#
03311  M00S03276.ssmove  +++|*     SAVE DATES AND ACCESS COUNT FOR THE REPORT FILE.
03312  M00S03277.ssmove  +++|#
03313  M00S03278.ssmove  +++|
03314  M00S03279.ssmove  +++|          TDAMLMD[0] = PFC$MDD[0];
03315  M00S03280.ssmove  +++|          TDAMLAD[0] = PFC$ADD[0];
03316  M00S03281.ssmove  +++|          TDAMACC[0] = PFC$AC[0];
03317  M00S03282.ssmove  +++|
03318  M00S03283.ssmove  +++|          WRITEW(MV$FET[FILEMO],MV$WBUF[0],MVWBUFL,FLAG);
03319  M00S03284.ssmove  +++|          END
03320  M00S03285.ssmove  +++|
03321  M00S03286.ssmove  +++|        ZFILL(EXT$TDAM,3);           # CLEAR FOR NEXT FILE #
03322  M00S03287.ssmove  +++|        FLAG = 0;
03323  M00S03288.ssmove  +++|        GETPFC(PEOCNT, FLAG);
03324  M00S03289.ssmove  +++|        IF FLAG NQ OK
03325  M00S03290.ssmove  +++|        THEN
03326  M00S03291.ssmove  +++|          BEGIN
03327  M00S03292.ssmove  +++|          EOPFC = TRUE;
03328  M00S03293.ssmove  +++|          TEST NXTPFC;
03329  M00S03294.ssmove  +++|          END
03330  M00S03295.ssmove  +++|
03331  M00S03296.ssmove  +++|#
03332  M00S03297.ssmove  +++|*     ESTABLISH FILE TYPE, SUBFAMILY AND DEVICE NUMBER INDICES.
03333  M00S03298.ssmove  +++|#
03334  M00S03299.ssmove  +++|
03335  M00S03300.ssmove  +++|        IF PFC$DA[0]
03336  M00S03301.ssmove  +++|        THEN
03337  M00S03302.ssmove  +++|          BEGIN
03338  M00S03303.ssmove  +++|          FTYPE = IXDA;
03339  M00S03304.ssmove  +++|          END
03340  M00S03305.ssmove  +++|
03341  M00S03306.ssmove  +++|        ELSE
03342  M00S03307.ssmove  +++|          BEGIN
03343  M00S03308.ssmove  +++|          FTYPE = IXIA;
03344  M00S03309.ssmove  +++|          END
03345  M00S03310.ssmove  +++|
03346  M00S03311.ssmove  +++|        TDAMIA[0] = NOT PFC$DA[0];
03347  M00S03312.ssmove  +++|        SFX = PFC$SF[0];
03348  M00S03313.ssmove  +++|
03349  M00S03314.ssmove  +++|        IF PFC$EO[0] EQ 0
03350  M00S03315.ssmove  +++|        THEN
03351  M00S03316.ssmove  +++|          BEGIN
03352  M00S03317.ssmove  +++|          DNX = DN$TO$DNX[CNTR$DN[0]];
03353  M00S03318.ssmove  +++|          END
03354  M00S03319.ssmove  +++|
03355  M00S03320.ssmove  +++|        ELSE
03356  M00S03321.ssmove  +++|          BEGIN
03357  M00S03322.ssmove  +++|          DNX = DN$TO$DNX[PFC$EO[0]];
03358  M00S03323.ssmove  +++|          END
03359  M00S03324.ssmove  +++|
03360  M00S03325.ssmove  +++|        EXT$DNX[0] = DNX;
03361  M00S03326.ssmove  +++|        TDAMDN[0] = CNTR$DN[0];
03362  M00S03327.ssmove  +++|
03363  M00S03328.ssmove  +++|#
03364  M00S03329.ssmove  +++|*     ISSUE DAYFILE MESSAGE IF ILLEGAL DEVICE INDEX.
03365  M00S03330.ssmove  +++|#
03366  M00S03331.ssmove  +++|
03367  M00S03332.ssmove  +++|        IF DNX EQ 0
03368  M00S03333.ssmove  +++|        THEN                         # IGNORE FILE #
03369  M00S03334.ssmove  +++|          BEGIN
03370  M00S03335.ssmove  +++|          MVMSG$LN[0] = " INCORRECT DEVICE INDEX.";
03371  M00S03336.ssmove  +++|          MESSAGE(MVMSG[0],UDFL1);
03372  M00S03337.ssmove  +++|          TEST NXTPFC;
03373  M00S03338.ssmove  +++|          END
03374  M00S03339.ssmove  +++|
03375  M00S03340.ssmove  +++|#
03376  M00S03341.ssmove  +++|*     SET UP PFID AND GET FILE LENGTH, IF NECESSARY.
03377  M00S03342.ssmove  +++|#
03378  M00S03343.ssmove  +++|
03379  M00S03344.ssmove  +++|        TDAMPEO[0] = PEOCNT;
03380  M00S03345.ssmove  +++|        TDAMTRACK[0] = CNTR$TRK[0];
03381  M00S03346.ssmove  +++|        TDAMSECTOR[0] = CNTR$SEC[0];
03382  M00S03347.ssmove  +++|
03383  M00S03348.ssmove  +++|        IF PFC$LF[0] EQ 0 AND PFC$DA[0]  ##
03384  M00S03349.ssmove  +++|          AND(PFC$UI[0] LS DEF$UI OR PFC$UI[0] GR DEF$UI+7)
03385  M00S03350.ssmove  +++|        THEN                         # GET FILE LENGTH #
03386  M00S03351.ssmove  +++|          BEGIN
03387  M00S03352.ssmove  +++|          PFNAME = PFC$FN[0];
03388  M00S03353.ssmove  +++|          BZFILL(PFNAME,TYPFILL"ZFILL",10);
03389  M00S03354.ssmove  +++|          UATTACH(LFNAME,FLAG,6,PFNAME,PTRD,PFC$UI[0],FAM,  ##
03390  M00S03355.ssmove  +++|            TDAMPFID[0],PFC[0],PFC$CD[0],LOC(ERRMSG));
03391  M00S03356.ssmove  +++|          FETP = LOC(SCR$FET[0]);
03392  M00S03357.ssmove  +++|          ZSETFET(FETP,LFNAME,0,0,SFETL);
03393  M00S03358.ssmove  +++|          RETERN(SCR$FET[0],RCL);    # RETURN THE FILE #
03394  M00S03359.ssmove  +++|          END
03395  M00S03360.ssmove  +++|
03396  M00S03361.ssmove  +++|#
03397  M00S03362.ssmove  +++|*     CALCULATE RESIDENCE OF THE FILE AND UPDATE
03398  M00S03363.ssmove  +++|*     DEVICE OR SUBFAMILY STATISTICS ACCORDINGLY.
03399  M00S03364.ssmove  +++|*
03400  M00S03365.ssmove  +++|*     DO NOT EXCLUDE ANY FILE HAVING *AFFRE* FLAG SET
03401  M00S03366.ssmove  +++|*     INCLUDING FILES LOCKED TO DISK AND FILES WITH AN
03402  M00S03367.ssmove  +++|*     OBSOLETE MSAS COPY.
03403  M00S03368.ssmove  +++|#
03404  M00S03369.ssmove  +++|
03405  M00S03370.ssmove  +++|        DISKIMAGE = (PFC$BT[0] NQ 0);
03406  M00S03371.ssmove  +++|        NUMMSS = 0;
03407  M00S03372.ssmove  +++|        IF PFC$AA[0] NQ 0
03408  M00S03373.ssmove  +++|        THEN                         # OBSOLETE COPY #
03409  M00S03374.ssmove  +++|          BEGIN
03410  M00S03375.ssmove  +++|          IF (PFC$AFOBS[0] AND NOT PFC$AFFRE[0])
03411  M00S03376.ssmove  +++|          THEN
03412  M00S03377.ssmove  +++|            BEGIN
03413  M00S03378.ssmove  +++|            NUMMSS = 0;
03414  M00S03379.ssmove  +++|            END
03415  M00S03380.ssmove  +++|
03416  M00S03381.ssmove  +++|          ELSE
03417  M00S03382.ssmove  +++|            BEGIN
03418  M00S03383.ssmove  +++|            NUMMSS = 1;
03419  M00S03384.ssmove  +++|            END
03420  M00S03385.ssmove  +++|
03421  M00S03386.ssmove  +++|          END
03422  M00S03387.ssmove  +++|
03423  M00S03388.ssmove  +++|        IF NUMMSS NQ 0 AND NOT DISKIMAGE
03424  M00S03389.ssmove  +++|        THEN                         # FILE RELEASED #
03425  M00S03390.ssmove  +++|          BEGIN
03426  M00S03391.ssmove  +++|          RES = RESIDENCE"RES$M86";
03427  M00S03392.ssmove  +++|          SFRL$NF[FTYPE,SFX] = SFRL$NF[FTYPE,SFX] + 1;
03428  M00S03393.ssmove  +++|          SFRL$PRU[FTYPE,SFX] = SFRL$PRU[FTYPE,SFX] + PFC$LF[0];
03429  M00S03394.ssmove  +++|          SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
03430  M00S03395.ssmove  +++|          SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + PFC$LF[0];
03431  M00S03396.ssmove  +++|          END
03432  M00S03397.ssmove  +++|
03433  M00S03398.ssmove  +++|        IF DISKIMAGE
03434  M00S03399.ssmove  +++|        THEN                         # FILE ON DISK #
03435  M00S03400.ssmove  +++|          BEGIN
03436  M00S03401.ssmove  +++|          RES = RESIDENCE"RES$RMS";
03437  M00S03402.ssmove  +++|          DEV$NF[FTYPE,DNX] = DEV$NF[FTYPE,DNX] + 1;
03438  M00S03403.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] + PFC$LF[0];
03439  M00S03404.ssmove  +++|          IF FTYPE EQ IXIA
03440  M00S03405.ssmove  +++|          THEN
03441  M00S03406.ssmove  +++|            BEGIN
03442  M00S03407.ssmove  +++|            DEV$PRU[FTYPE,DNX] = DEV$PRU[FTYPE,DNX] + PFC$LF[0];
03443  M00S03408.ssmove  +++|            END
03444  M00S03409.ssmove  +++|
03445  M00S03410.ssmove  +++|          ELSE
03446  M00S03411.ssmove  +++|            BEGIN
03447  M00S03412.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
03448  M00S03413.ssmove  +++|            TRUPRU = (((PFC$LF[0] + 1) / PRUTRK) + 1) * PRUTRK;
03449  M00S03414.ssmove  +++|            DEV$PRU[FTYPE,DNX] = DEV$PRU[FTYPE,DNX] + TRUPRU;
03450  M00S03415.ssmove  +++|            END
03451  M00S03416.ssmove  +++|
03452  M00S03417.ssmove  +++|          IF NUMMSS NQ 0
03453  M00S03418.ssmove  +++|          THEN                       # FILE ALSO ON MSAS #
03454  M00S03419.ssmove  +++|            BEGIN
03455  M00S03420.ssmove  +++|            RES = RESIDENCE"RES$RMS$MF";
03456  M00S03421.ssmove  +++|            SFDM$NF[FTYPE,SFX] = SFDM$NF[FTYPE,SFX] + 1;
03457  M00S03422.ssmove  +++|            SFDM$PRU[FTYPE,SFX] = SFDM$PRU[FTYPE,SFX] + PFC$LF[0];
03458  M00S03423.ssmove  +++|            END
03459  M00S03424.ssmove  +++|
03460  M00S03425.ssmove  +++|          END
03461  M00S03426.ssmove  +++|
03462  M00S03427.ssmove  +++|        IF FTYPE EQ IXDA
03463  M00S03428.ssmove  +++|          AND PFC$LF[0] NQ 0
03464  M00S03429.ssmove  +++|        THEN                         # IGNORE SYSTEM SECTOR #
03465  M00S03430.ssmove  +++|          BEGIN
03466  M00S03431.ssmove  +++|          PFC$LF[0] = PFC$LF[0] - 1;
03467  M00S03432.ssmove  +++|          END
03468  M00S03433.ssmove  +++|
Line S03434 Modification History
M01 (Removed by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
03469  M01S03434.ssmove2 ---|#
03470  M01S03435.ssmove2 ---|*     DO NOT PROCESS ZERO LENGTH FILES.
03471  M01S03436.ssmove2 ---|#
03472  M01S03437.ssmove2 ---|
03473  M01S03438.ssmove2 ---|        IF PFC$LF[0] EQ 0
03474  M01S03439.ssmove2 ---|        THEN
03475  M01S03440.ssmove2 ---|          BEGIN
03476  M01S03441.ssmove2 ---|          TEST NXTPFC;
03477  M01S03442.ssmove2 ---|          END
03478  M01S03443.ssmove2 ---|
03479  M00S03444.ssmove  +++|#
03480  M00S03445.ssmove  +++|*     SEE IF THE FILE IS TO BE EXCLUDED DUE TO RUN-TIME PARAMETERS
03481  M00S03446.ssmove  +++|*     (PX, UI OPTIONS), IF THE FILE IS IN A RESERVED USER INDEX,
03482  M00S03447.ssmove  +++|*     OR IF IT IS LOCKED TO DISK.
03483  M00S03448.ssmove  +++|#
03484  M00S03449.ssmove  +++|
03485  M00S03450.ssmove  +++|        IF (PFC$DA[0] AND PX$D[0] )  # DIRECT ACCESS FILE #
03486  M00S03451.ssmove  +++|          OR ( NOT PFC$DA[0] AND PX$I[0] )  # INDIRECT ACCESS FILE #
03487  M00S03452.ssmove  +++|
03488  M00S03453.ssmove  +++|          OR ( MVARG$UI[0] NQ 0      # NOT THE SELECTED #
03489  M00S03454.ssmove  +++|          AND PFC$UI[0] NQ MVARG$UI[0] )  # USER INDEX #
03490  M00S03455.ssmove  +++|
03491  M00S03456.ssmove  +++|          OR ( PFC$UI[0] GQ DEF$UI   # MSS USER INDICES #
03492  M00S03457.ssmove  +++|          AND PFC$UI[0] LQ DEF$UI+7 )  ##
03493  M00S03458.ssmove  +++|
03494  M00S03459.ssmove  +++|          OR ( PFC$UI[0] EQ SYS$UI )  # SYSTEM USER INDEX #
Line S00001 Modification History
M01 (Added by) ssmove3
Seq #  *Modification Id* Act 
----------------------------+
03495  M01S00001.ssmove3 +++|
03496  M01S00002.ssmove3 +++|          OR (PFC$UI[0] EQ FPF$UI)     # FLAWPF USER INDEX #
03497  M00S03460.ssmove  +++|
03498  M00S03461.ssmove  +++|          OR ( PFC$RS[0] EQ RSLK     # FILE LOCKED TO DISK #
03499  M00S03462.ssmove  +++|            AND NOT PFC$AFFRE[0])
03500  M00S03463.ssmove  +++|
03501  M00S03464.ssmove  +++|        THEN                         # DO NOT CONSIDER THIS FILE FOR
03502  M00S03465.ssmove  +++|                                       FURTHER PROCESSING #
03503  M00S03466.ssmove  +++|          BEGIN
03504  M00S03467.ssmove  +++|          TEST NXTPFC;
03505  M00S03468.ssmove  +++|          END
03506  M00S03469.ssmove  +++|
03507  M00S03470.ssmove  +++|#
03508  M00S03471.ssmove  +++|*     PROCESS THE SPECIAL FLAGS (*PO* OR FREE-UP FLAG IN *PFC*)
03509  M00S03472.ssmove  +++|*     AS FOLLOWS..
03510  M00S03473.ssmove  +++|*
03511  M00S03474.ssmove  +++|*     1)  PO=F  (FREE FILE FROM CARTRIDGE)
03512  M00S03475.ssmove  +++|*              IF THE ASA NQ 0 THEN SET *CLR*.  ALLOW FILE TO
03513  M00S03476.ssmove  +++|*              BE SELECTED TO BE STAGED.
03514  M00S03477.ssmove  +++|*
03515  M00S03478.ssmove  +++|*     2)  PO=A (ARCHIVE OR RELEASE FROM DISK)
03516  M00S03479.ssmove  +++|*              FORCE RELEASE BY SETTING *REL* UNLESS THE FILE
03517  M00S03480.ssmove  +++|*              IS ALREADY ARCHIVED.  THE CHECK TO VERIFY THAT
03518  M00S03481.ssmove  +++|*              THE *BR=Y* REQUIREMENT IS MET IS MADE FURTHER ON.
03519  M00S03482.ssmove  +++|*
03520  M00S03483.ssmove  +++|*     3)  PO=S OR *CLR* OR PFC$AFFRE SET (STAGE TO DISK)
03521  M00S03484.ssmove  +++|*              FORCE THE FILE TO BE STAGED TO DISK BY SETTING
03522  M00S03485.ssmove  +++|*              *STG* UNLESS THE FILE IS ALREADY ON DISK.  SET
03523  M00S03486.ssmove  +++|*              *NOREL* TO PROHIBIT THE FILE FROM BEING RELEASED
03524  M00S03487.ssmove  +++|*              FROM DISK.  IF THE FREE FILE FLAG IS SET IN THE
03525  M00S03488.ssmove  +++|*              *PFC* STAGER WILL CLEAR THE *ASA* AFTER STAGING
03526  M00S03489.ssmove  +++|*              THE FILE TO DISK.
03527  M00S03490.ssmove  +++|*
03528  M00S03491.ssmove  +++|*     4)  PO=B (BACKUP OR DESTAGE TO MSAS)
03529  M00S03492.ssmove  +++|*              SET THE *DES* FLAG IF THE FILE RESIDES ON DISK ONLY.
03530  M00S03493.ssmove  +++|#
03531  M00S03494.ssmove  +++|
03532  M00S03495.ssmove  +++|        MVCKSF(PFC$FN[0],PFC$UI[0],PO);  # SEE IF FILE SELECTED #
03533  M00S03496.ssmove  +++|
03534  M00S03497.ssmove  +++|        EXT$CLR[0] = (PFC$AA[0] NQ 0)  # CASE 1 #
03535  M00S03498.ssmove  +++|        AND ((RES EQ RESIDENCE"RES$RMS$MF" AND PFC$AFFRE[0])
03536  M00S03499.ssmove  +++|        OR (PO EQ "F"));
03537  M00S03500.ssmove  +++|
03538  M00S03501.ssmove  +++|        EXT$REL[0] = (PO EQ "A")     # CASE 2 #
03539  M00S03502.ssmove  +++|          AND (RES NQ RESIDENCE"RES$M86");
03540  M00S03503.ssmove  +++|
03541  M00S03504.ssmove  +++|        EXT$STG[0] = (PO EQ "S" OR EXT$CLR[0] OR PFC$AFFRE[0])  ##
03542  M00S03505.ssmove  +++|          AND (RES EQ RESIDENCE"RES$M86");
03543  M00S03506.ssmove  +++|        NOREL = EXT$STG[0] OR EXT$CLR[0];
03544  M00S03507.ssmove  +++|
03545  M00S03508.ssmove  +++|#
03546  M00S03509.ssmove  +++|*     IF ERROR FLAGS ARE SET IN THE *PFC* DO NOT ALLOW THE FILE
03547  M00S03510.ssmove  +++|*     TO BE STAGED.
03548  M00S03511.ssmove  +++|#
03549  M00S03512.ssmove  +++|
03550  M00S03513.ssmove  +++|        IF EXT$STG[0]
03551  M00S03514.ssmove  +++|        THEN
03552  M00S03515.ssmove  +++|          BEGIN  # CHECK *PFC* FOR ERRORS #
03553  M00S03516.ssmove  +++|          IF PFC$AFPDE[0]            # DATA ERROR #
03554  M00S03517.ssmove  +++|            OR PFC$AFPSE[0]          # SYSTEM ERROR #
03555  M00S03518.ssmove  +++|            OR PFC$AFTMP[0]          # TEMPORARY ERROR #
03556  M00S03519.ssmove  +++|          THEN
03557  M00S03520.ssmove  +++|            BEGIN
03558  M00S03521.ssmove  +++|            MSG1$FN[0] = PFC$FN[0];
03559  M00S03522.ssmove  +++|            XWOD(PFC$AA[0],DISASA);
03560  M00S03523.ssmove  +++|            MSG1$ASA[0] = DIS$ASA[0];
03561  M00S03524.ssmove  +++|            MVMSG$LN[0] = " PFC ERROR FLAGS SET";
03562  M00S03525.ssmove  +++|            MESSAGE(MVMSG[0],UDFL1);
03563  M00S03526.ssmove  +++|            MESSAGE(MSG1[0],UDFL1);
03564  M00S03527.ssmove  +++|            EXT$STG[0] = FALSE;      # PROHIBIT STAGING #
03565  M00S03528.ssmove  +++|            EXT$CLR[0] = FALSE;
03566  M00S03529.ssmove  +++|            TEST NXTPFC;
03567  M00S03530.ssmove  +++|            END
03568  M00S03531.ssmove  +++|          END   # CHECK *PFC* FOR ERRORS #
03569  M00S03532.ssmove  +++|
03570  M00S03533.ssmove  +++|#
03571  M00S03534.ssmove  +++|*     IF THE FILE RESIDES ON DISK, SELECT IT TO BE DESTAGED IF
03572  M00S03535.ssmove  +++|*     SPECIFIED BY THE FILE-S *PO* ATTRIBUTE, OR IF ITS DESTAGE
03573  M00S03536.ssmove  +++|*     VALUE EXCEEDS THE THRESHOLD.
03574  M00S03537.ssmove  +++|#
03575  M00S03538.ssmove  +++|
03576  M00S03539.ssmove  +++|        IF RES EQ RESIDENCE"RES$RMS"
03577  M00S03540.ssmove  +++|        THEN                         # SELECT DESTAGE IF APPROPRIATE #
03578  M00S03541.ssmove  +++|          BEGIN
03579  M00S03542.ssmove  +++|          IF PO EQ "B"
03580  M00S03543.ssmove  +++|          THEN                       # CASE 4 #
03581  M00S03544.ssmove  +++|            BEGIN
03582  M00S03545.ssmove  +++|            EXT$DES[0] = TRUE;
03583  M00S03546.ssmove  +++|            END
03584  M00S03547.ssmove  +++|
03585  M00S03548.ssmove  +++|          ELSE                       # CALCULATE DESTAGE VALUE AND
03586  M00S03549.ssmove  +++|                                       COMPARE TO THRESHOLD #
03587  M00S03550.ssmove  +++|            BEGIN
03588  M00S03551.ssmove  +++|            MVVALDS(TMPI,PO);        # CALCULATE DESTAGE VALUE #
03589  M00S03552.ssmove  +++|            EXT$DES[0] = TMPI GQ FR$VAL[FTYPE,IXDS,FRTH];
03590  M00S03553.ssmove  +++|            EXT$CDES[0] = NOT EXT$DES[0];  # IN CASE FILE IS RELEASED #
03591  M00S03554.ssmove  +++|            EXT$DESV[0] = TMPI;
03592  M00S03555.ssmove  +++|            END
03593  M00S03556.ssmove  +++|
03594  M00S03557.ssmove  +++|          END
03595  M00S03558.ssmove  +++|
03596  M00S03559.ssmove  +++|#
03597  M00S03560.ssmove  +++|*     CHECK TO SEE IF THE FILE CAN BE RELEASED.
03598  M00S03561.ssmove  +++|*       - VERIFY *BR=Y* REQUIREMENT SATISFIED.
03599  M00S03562.ssmove  +++|*       - VERIFY *DN* PARAMETER SATISFIED.
03600  M00S03563.ssmove  +++|*       - VERIFY FILE NOT ALREADY SELECTED FOR RELEASE.
03601  M00S03564.ssmove  +++|*       - CALCULATE RELEASE VALUE AND IF GREATER THAN
03602  M00S03565.ssmove  +++|*         THE THRESHOLD, SAVE IT FOR FUTURE USE IN
03603  M00S03566.ssmove  +++|*         SELECTING AMONG THE CANDIDATE FILES.
03604  M00S03567.ssmove  +++|#
03605  M00S03568.ssmove  +++|
03606  M00S03569.ssmove  +++|#
03607  M00S03570.ssmove  +++|*     IF A DUMP TAPE BACKUP IS REQUIRED, PROHIBIT
03608  M00S03571.ssmove  +++|*     RELEASING THE FILE.
03609  M00S03572.ssmove  +++|#
03610  M00S03573.ssmove  +++|
03611  M00S03574.ssmove  +++|        GETDI(CNTR$EQ[0],INHBDT);    # GET DEVICE INHIBIT DATE/TIME #
03612  M00S03575.ssmove  +++|        IF PFC$BR[0] EQ BRAL AND INHBDT LQ PFC$UD[0]
03613  M00S03576.ssmove  +++|        THEN                         # PROHIBIT RELEASING THE FILE #
03614  M00S03577.ssmove  +++|          BEGIN
03615  M00S03578.ssmove  +++|          EXT$REL[0] = FALSE;
03616  M00S03579.ssmove  +++|          NOREL = TRUE;
03617  M00S03580.ssmove  +++|          END
03618  M00S03581.ssmove  +++|
03619  M00S03582.ssmove  +++|        IF EXT$REL[0]
03620  M00S03583.ssmove  +++|        THEN                         # COUNT PRU TO BE RELEASED #
03621  M00S03584.ssmove  +++|          BEGIN
03622  M00S03585.ssmove  +++|          DEV$RELF[FTYPE,DNX] = DEV$RELF[FTYPE,DNX] + 1;
03623  M00S03586.ssmove  +++|          DEV$TRPRU[FTYPE,DNX] = DEV$TRPRU[FTYPE,DNX] - PFC$LF[0];
03624  M00S03587.ssmove  +++|          IF FTYPE EQ IXIA
03625  M00S03588.ssmove  +++|          THEN
03626  M00S03589.ssmove  +++|            BEGIN
03627  M00S03590.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + PFC$LF[0];
03628  M00S03591.ssmove  +++|            END
03629  M00S03592.ssmove  +++|
03630  M00S03593.ssmove  +++|          ELSE
03631  M00S03594.ssmove  +++|            BEGIN
03632  M00S03595.ssmove  +++|            PRUTRK = DEV$SECTR[IXDA,DNX];
03633  M00S03596.ssmove  +++|            TRUPRU = (((PFC$LF[0]+1) / PRUTRK) + 1) * PRUTRK;
03634  M00S03597.ssmove  +++|            DEV$RELP[FTYPE,DNX] = DEV$RELP[FTYPE,DNX] + TRUPRU;
03635  M00S03598.ssmove  +++|            END
03636  M00S03599.ssmove  +++|
03637  M00S03600.ssmove  +++|          TEST NXTPFC;
03638  M00S03601.ssmove  +++|          END
03639  M00S03602.ssmove  +++|
03640  M00S03603.ssmove  +++|        IF MV$DNX NQ 0               ##
03641  M00S03604.ssmove  +++|          AND MV$DNX NQ DNX          # FAILS *DN* PARAMETER #
03642  M00S03605.ssmove  +++|        THEN                         # DO NOT CONSIDER FILE FOR
03643  M00S03606.ssmove  +++|                                       DESTAGING OR RELEASING #
03644  M00S03607.ssmove  +++|          BEGIN
03645  M00S03608.ssmove  +++|          EXT$DES[0] = FALSE;        # DO NOT DESTAGE #
03646  M00S03609.ssmove  +++|          TEST NXTPFC;
03647  M00S03610.ssmove  +++|          END
03648  M00S03611.ssmove  +++|
03649  M00S03612.ssmove  +++|        IF NOREL
03650  M00S03613.ssmove  +++|        THEN                         # DO NOT RELEASE #
03651  M00S03614.ssmove  +++|          BEGIN
03652  M00S03615.ssmove  +++|          TEST NXTPFC;
03653  M00S03616.ssmove  +++|          END
03654  M00S03617.ssmove  +++|
03655  M00S03618.ssmove  +++|        IF RES NQ RESIDENCE"RES$M86"
03656  M00S03619.ssmove  +++|        THEN
03657  M00S03620.ssmove  +++|          BEGIN
03658  M00S03621.ssmove  +++|          MVVALRL(TMPI,PO);          # CALCULATE RELEASE VALUE #
03659  M00S03622.ssmove  +++|          EXT$CREL[0] = TMPI GQ FR$VAL[FTYPE,IXRL,FRTH];
03660  M00S03623.ssmove  +++|          EXT$RELV[0] = TMPI;
03661  M00S03624.ssmove  +++|          TEST NXTPFC;
03662  M00S03625.ssmove  +++|          END
03663  M00S03626.ssmove  +++|
03664  M00S03627.ssmove  +++|        END  # NEXT PFC #
03665  M00S03628.ssmove  +++|
03666  M00S03629.ssmove  +++|#
03667  M00S03630.ssmove  +++|*     AFTER PROCESSING ALL FILES,
03668  M00S03631.ssmove  +++|*       - FLUSH THE PASS 1 OUTPUT BUFFER TO DISK.
03669  M00S03632.ssmove  +++|*       - CALCULATE THE AMOUNT OF DISK SPACE NEEDED
03670  M00S03633.ssmove  +++|*         TO BE RELEASED ON EACH DEVICE.
03671  M00S03634.ssmove  +++|#
03672  M00S03635.ssmove  +++|
03673  M00S03636.ssmove  +++|      WRITER(MV$FET[FILEMO],RCL);
03674  M00S03637.ssmove  +++|      REWIND(MV$FET[FILEMO],RCL);
03675  M00S03638.ssmove  +++|
03676  M00S03639.ssmove  +++|#
03677  M00S03640.ssmove  +++|*     CALCULATE THE NUMBER OF PRU TO BE RELEASED ON EACH DEVICE.
03678  M00S03641.ssmove  +++|#
03679  M00S03642.ssmove  +++|
03680  M00S03643.ssmove  +++|      SLOWFOR I = 1 STEP 1 UNTIL MAXDEV
03681  M00S03644.ssmove  +++|      DO
03682  M00S03645.ssmove  +++|        BEGIN  # EACH DEVICE #
03683  M00S03646.ssmove  +++|        IF DEV$MAST[IXIA,I]
03684  M00S03647.ssmove  +++|        THEN                         # USE MASTER DEVICE GOALS #
03685  M00S03648.ssmove  +++|          BEGIN
03686  M00S03649.ssmove  +++|          TMPI = SMMG;
03687  M00S03650.ssmove  +++|          END
03688  M00S03651.ssmove  +++|
03689  M00S03652.ssmove  +++|        ELSE                         # USE SECONDARY DEVICE GOALS #
03690  M00S03653.ssmove  +++|          BEGIN
03691  M00S03654.ssmove  +++|          TMPI = SMSG;
03692  M00S03655.ssmove  +++|          END
03693  M00S03656.ssmove  +++|
03694  M00S03657.ssmove  +++|        SLOWFOR FTYPE = IXDA STEP IXIA-IXDA UNTIL IXIA
03695  M00S03658.ssmove  +++|        DO
03696  M00S03659.ssmove  +++|          BEGIN
03697  M00S03660.ssmove  +++|
03698  M00S03661.ssmove  +++|          GOAL = SM$VAL[FTYPE,IXRL,TMPI]*DEV$TPRU[IXIA,I]/100;
03699  M00S03662.ssmove  +++|          DEV$NEED[FTYPE,I] =        ##
03700  M00S03663.ssmove  +++|            DEV$PRU[FTYPE,I] - GOAL - DEV$RELP[FTYPE,I];
03701  M00S03664.ssmove  +++|          END
03702  M00S03665.ssmove  +++|
03703  M00S03666.ssmove  +++|        END  # EACH DEVICE #
03704  M00S03667.ssmove  +++|
03705  M00S03668.ssmove  +++|      RETURN;
03706  M00S03669.ssmove  +++|
03707  M00S03670.ssmove  +++|      END  # MVPFRD #
03708  M00S03671.ssmove  +++|
03709  M00S03672.ssmove  +++|    TERM
03710  M00S03673.ssmove  +++|PROC MVPRNDT(PDATE,ACC$CT,DVAL,RVAL);
03711  M00S03674.ssmove  +++|# TITLE MVPRNDT - PRINT DATE AND ACCESS COUNTS.                       #
03712  M00S03675.ssmove  +++|
03713  M00S03676.ssmove  +++|      BEGIN  # MVPRNDT #
03714  M00S03677.ssmove  +++|
03715  M00S03678.ssmove  +++|#
03716  M00S03679.ssmove  +++|**    MVPRNDT - PRINT DATE AND ACCESS COUNTS.
03717  M00S03680.ssmove  +++|*
03718  M00S03681.ssmove  +++|*     THIS PROCEDURE PRINTS THE DATE AND THE ACCESS COUNT FOR
03719  M00S03682.ssmove  +++|*     A FILE ON THE REPORT FILE.
03720  M00S03683.ssmove  +++|*
03721  M00S03684.ssmove  +++|*     PROC MVPRNDT.
03722  M00S03685.ssmove  +++|*
03723  M00S03686.ssmove  +++|*     ENTRY.     PDATE = *YYMMDD*.
03724  M00S03687.ssmove  +++|*                ACC$CT = ACCESS COUNT.
03725  M00S03688.ssmove  +++|*
03726  M00S03689.ssmove  +++|*     EXIT.      COL. 33-40 CONTAIN *YY.MM.DD*.
03727  M00S03690.ssmove  +++|*                COL. 42-48 CONTAIN ACCESS COUNT.
03728  M00S03691.ssmove  +++|#
03729  M00S03692.ssmove  +++|
03730  M00S03693.ssmove  +++|      ITEM PDATE      C(10);         # PACKED DATE #
03731  M00S03694.ssmove  +++|      ITEM ACC$CT     I;             # ACCESS COUNT #
03732  M00S03695.ssmove  +++|      ITEM DVAL       U;             # CALCULATED DESTAGE VALUE #
03733  M00S03696.ssmove  +++|      ITEM RVAL       U;             # CALCULATED RELEASE VALUE #
03734  M00S03697.ssmove  +++|
03735  M00S03698.ssmove  +++|#
03736  M00S03699.ssmove  +++|****  PROC MVPRNDT - XREF LIST BEGIN.
03737  M00S03700.ssmove  +++|#
03738  M00S03701.ssmove  +++|
03739  M00S03702.ssmove  +++|      XREF
03740  M00S03703.ssmove  +++|        BEGIN
03741  M00S03704.ssmove  +++|        PROC RPLINE;                 # WRITE LINE #
03742  M00S03705.ssmove  +++|        FUNC XCDD C(10);             # BINARY TO DECIMAL DISPLAY #
03743  M00S03706.ssmove  +++|        END
03744  M00S03707.ssmove  +++|
03745  M00S03708.ssmove  +++|#
03746  M00S03709.ssmove  +++|****  PROC MVPRNDT - XREF LIST END.
03747  M00S03710.ssmove  +++|#
03748  M00S03711.ssmove  +++|
03749  M00S03712.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
03750  M00S03713.ssmove  +++|
03751  M00S03714.ssmove  +++|*CALL,COMBFAS
03752  M00S03715.ssmove  +++|*CALL,COMTMOV
03753  M00S03716.ssmove  +++|
03754  M00S03717.ssmove  +++|      ITEM TMPC       C(10);         # TEMPORARY CHARACTER #
03755  M00S03718.ssmove  +++|                                               CONTROL EJECT;
03756  M00S03719.ssmove  +++|      TMPC = XCDD(ACC$CT);
03757  M00S03720.ssmove  +++|      RPLINE(LISTFETP,TMPC,40,10,1);  # WRITE ACCESS COUNT #
03758  M00S03721.ssmove  +++|
03759  M00S03722.ssmove  +++|      RPLINE(LISTFETP,"YY.MM.DD",34,8,1);
03760  M00S03723.ssmove  +++|
03761  M00S03724.ssmove  +++|      CHR$10[0] = XCDD(70+B<42,6>PDATE);  # YEAR #
03762  M00S03725.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],34,2,1);
03763  M00S03726.ssmove  +++|
03764  M00S03727.ssmove  +++|#
03765  M00S03728.ssmove  +++|*     FORCE LEADING ZERO ON DAY AND MONTH BY ADDING 100.
03766  M00S03729.ssmove  +++|#
03767  M00S03730.ssmove  +++|
03768  M00S03731.ssmove  +++|      CHR$10[0] = XCDD(100+B<48,6>PDATE);  # MONTH #
03769  M00S03732.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],37,2,1);
03770  M00S03733.ssmove  +++|
03771  M00S03734.ssmove  +++|      CHR$10[0] = XCDD(100+B<54,6>PDATE);  # DATE #
03772  M00S03735.ssmove  +++|      RPLINE(LISTFETP,CHR$R2[0],40,2,1);
03773  M00S03736.ssmove  +++|
03774  M00S03737.ssmove  +++|      IF DVAL GQ 0
03775  M00S03738.ssmove  +++|      THEN
03776  M00S03739.ssmove  +++|        BEGIN
03777  M00S03740.ssmove  +++|        CHR$10[0] = XCDD(DVAL);
03778  M00S03741.ssmove  +++|        RPLINE(LISTFETP,CHR$10[0],87,10,1);
03779  M00S03742.ssmove  +++|        END
03780  M00S03743.ssmove  +++|
03781  M00S03744.ssmove  +++|      ELSE                           # NEGATIVE VALUE #
03782  M00S03745.ssmove  +++|        BEGIN
03783  M00S03746.ssmove  +++|        RPLINE(LISTFETP,"-1",95,2,1);
03784  M00S03747.ssmove  +++|        END
03785  M00S03748.ssmove  +++|
03786  M00S03749.ssmove  +++|      IF RVAL GQ 0
03787  M00S03750.ssmove  +++|      THEN
03788  M00S03751.ssmove  +++|        BEGIN
03789  M00S03752.ssmove  +++|        CHR$10[0] = XCDD(RVAL);
03790  M00S03753.ssmove  +++|        RPLINE(LISTFETP,CHR$10[0],98,10,1);
03791  M00S03754.ssmove  +++|        END
03792  M00S03755.ssmove  +++|
03793  M00S03756.ssmove  +++|      ELSE                           # NEGATIVE VALUE #
03794  M00S03757.ssmove  +++|        BEGIN
03795  M00S03758.ssmove  +++|        RPLINE(LISTFETP,"-1",106,2,1);
03796  M00S03759.ssmove  +++|        END
03797  M00S03760.ssmove  +++|
03798  M00S03761.ssmove  +++|
03799  M00S03762.ssmove  +++|      RETURN;
03800  M00S03763.ssmove  +++|      END  # MVPRNDT #
03801  M00S03764.ssmove  +++|
03802  M00S03765.ssmove  +++|    TERM
03803  M00S03766.ssmove  +++|FUNC MVRELAG(RELDATE) U;
03804  M00S03767.ssmove  +++|# TITLE MVRELAG - CALCULATE RELATIVE AGE.                             #
03805  M00S03768.ssmove  +++|
03806  M00S03769.ssmove  +++|      BEGIN  # MVRELAG #
03807  M00S03770.ssmove  +++|
03808  M00S03771.ssmove  +++|#
03809  M00S03772.ssmove  +++|**    MVRELAG - CALCULATE RELATIVE AGE.
03810  M00S03773.ssmove  +++|*
03811  M00S03774.ssmove  +++|*     THIS FUNCTION CALCULATES THE RELATIVE AGE OF AN ITEM
03812  M00S03775.ssmove  +++|*     GIVEN A DATE IN PACKED FORMAT.  THIS AGE IS THE NUMBER
03813  M00S03776.ssmove  +++|*     OF DAYS SINCE JAN 01, 1970.
03814  M00S03777.ssmove  +++|*     THE ABSOLUTE AGE OF AN ITEM IS CALCULATED BY THE CALLING
03815  M00S03778.ssmove  +++|*     PROGRAMS WHICH SUBTRACT THE RELATIVE AGE OF THE ITEM
03816  M00S03779.ssmove  +++|*     FROM THE RELATIVE AGE OF THE CURRENT DATE.
03817  M00S03780.ssmove  +++|*     IF THE DIFFERENCE BETWEEN THE CURRENT DATE AND THE
03818  M00S03781.ssmove  +++|*     LAST ACCESS DATE OR MODIFY DATE IS LESS THAN 30 DAYS,
03819  M00S03782.ssmove  +++|*     THEIR DIFFERENCE AS CALCULATED BY THIS FUNCTION WILL
03820  M00S03783.ssmove  +++|*     BE CALCULATED CORRECTLY.  IF THE DIFFERENCE IS MORE
03821  M00S03784.ssmove  +++|*     THAN 30 DAYS, THEN A 1 DAY ERROR MAY BE INTRODUCED.
03822  M00S03785.ssmove  +++|*     IT IS ASSUMED THAT A 3 PERCENT ERROR IS NOT OF CONCERN
03823  M00S03786.ssmove  +++|*     FOR THE PURPOSES OF *SSMOVE*.
03824  M00S03787.ssmove  +++|*
03825  M00S03788.ssmove  +++|*     FUNC MVRELAG( (RELDATE) ).
03826  M00S03789.ssmove  +++|*
03827  M00S03790.ssmove  +++|*     ENTRY.    RELDATE = *YYMMDD* OF AN OBJECT.
03828  M00S03791.ssmove  +++|*
03829  M00S03792.ssmove  +++|*     EXIT.     MVRELAG = NUMBER OF DAYS SINCE 70/01/01.
03830  M00S03793.ssmove  +++|#
03831  M00S03794.ssmove  +++|
03832  M00S03795.ssmove  +++|      ITEM RELDATE    C(10);         # *YYMMDD* #
03833  M00S03796.ssmove  +++|
03834  M00S03797.ssmove  +++|
03835  M00S03798.ssmove  +++|      ITEM DAY        U;             # *DD* FROM *RELDATE* #
03836  M00S03799.ssmove  +++|      ITEM MONTH      U;             # *MM* FROM *RELDATE* #
03837  M00S03800.ssmove  +++|      ITEM TMPI       I;             # TEMPORARY #
03838  M00S03801.ssmove  +++|      ITEM YEAR       U;             # *YY* FROM *RELDATE* #
03839  M00S03802.ssmove  +++|
03840  M00S03803.ssmove  +++|      ARRAY MONTHS [1:12] S(1);      # TOTAL DAYS IN PREVIOUS MONTHS #
03841  M00S03804.ssmove  +++|        BEGIN
03842  M00S03805.ssmove  +++|        ITEM MON$TOT    I(00,00,60) = [  ##
03843  M00S03806.ssmove  +++|        0,
03844  M00S03807.ssmove  +++|        31,
03845  M00S03808.ssmove  +++|        59,
03846  M00S03809.ssmove  +++|        90,
03847  M00S03810.ssmove  +++|        120,
03848  M00S03811.ssmove  +++|        151,
03849  M00S03812.ssmove  +++|        181,
03850  M00S03813.ssmove  +++|        212,
03851  M00S03814.ssmove  +++|        243,
03852  M00S03815.ssmove  +++|        273,
03853  M00S03816.ssmove  +++|        304,
03854  M00S03817.ssmove  +++|        334];
03855  M00S03818.ssmove  +++|        END
03856  M00S03819.ssmove  +++|
03857  M00S03820.ssmove  +++|                                               CONTROL EJECT;
03858  M00S03821.ssmove  +++|      YEAR = B<42,6>RELDATE;
03859  M00S03822.ssmove  +++|      MONTH = B<48,6>RELDATE;
03860  M00S03823.ssmove  +++|      DAY = B<54,6>RELDATE;
03861  M00S03824.ssmove  +++|
03862  M00S03825.ssmove  +++|      TMPI = YEAR*365 + MON$TOT[MONTH] + DAY;
03863  M00S03826.ssmove  +++|
03864  M00S03827.ssmove  +++|      IF( (YEAR/4)*4 EQ YEAR) AND (MONTH EQ 3)
03865  M00S03828.ssmove  +++|      THEN
03866  M00S03829.ssmove  +++|        BEGIN
03867  M00S03830.ssmove  +++|        TMPI = TMPI + 1;
03868  M00S03831.ssmove  +++|        END
03869  M00S03832.ssmove  +++|
03870  M00S03833.ssmove  +++|      MVRELAG = TMPI;
03871  M00S03834.ssmove  +++|      RETURN;
03872  M00S03835.ssmove  +++|      END
03873  M00S03836.ssmove  +++|
03874  M00S03837.ssmove  +++|    TERM
03875  M00S03838.ssmove  +++|PROC MVRPTDS((ABNDN));
03876  M00S03839.ssmove  +++|# TITLE MVRPTDS - REPORT DEVICE STATUS.                               #
03877  M00S03840.ssmove  +++|
03878  M00S03841.ssmove  +++|      BEGIN  # MVRPTDS #
03879  M00S03842.ssmove  +++|
03880  M00S03843.ssmove  +++|#
03881  M00S03844.ssmove  +++|**    MVRPTDS - REPORT DEVICE STATUS.
03882  M00S03845.ssmove  +++|*
03883  M00S03846.ssmove  +++|*     THIS PROCEDURE PRINTS A PAGE SUMMARIZING THE SPACE
03884  M00S03847.ssmove  +++|*     AVAILABILITY ON EACH DEVICE.
03885  M00S03848.ssmove  +++|*
03886  M00S03849.ssmove  +++|*     PROC MVRPTDS( (ABNDN) ).
03887  M00S03850.ssmove  +++|*
03888  M00S03851.ssmove  +++|*     ENTRY.     THE ARRAY *DEVSTAT* CONTAINS DATA TO BE PRINTED.
03889  M00S03852.ssmove  +++|*
03890  M00S03853.ssmove  +++|*     EXIT.      THE RELEVANT INFORMATION IS PRINTED ON THE OUTPUT FILE.
03891  M00S03854.ssmove  +++|*
03892  M00S03855.ssmove  +++|*     MESSAGES.  DEVICE SPACE GOAL NOT MET.
03893  M00S03856.ssmove  +++|#
03894  M00S03857.ssmove  +++|
03895  M00S03858.ssmove  +++|      ITEM ABNDN      B;             # PROCESS ABANDONMENT REPORT #
03896  M00S03859.ssmove  +++|
03897  M00S03860.ssmove  +++|#
03898  M00S03861.ssmove  +++|****  PROC MVRPTDS - XREF LIST BEGIN.
03899  M00S03862.ssmove  +++|#
03900  M00S03863.ssmove  +++|
03901  M00S03864.ssmove  +++|      XREF
03902  M00S03865.ssmove  +++|        BEGIN
03903  M00S03866.ssmove  +++|        PROC MESSAGE;                # ISSUE DAYFILE MESSAGE #
03904  M00S03867.ssmove  +++|        PROC RPEJECT;                # PAGE EJECT #
03905  M00S03868.ssmove  +++|        PROC RPLINE;                 # WRITE LINE #
03906  M00S03869.ssmove  +++|        PROC RPSPACE;                # PRINT BLANK LINES #
03907  M00S03870.ssmove  +++|        FUNC XCDD C(10);             # BINARY TO DECIMAL DISPLAY CODE #
03908  M00S03871.ssmove  +++|        FUNC XCOD C(10);             # BINARY TO OCTAL DISPLAY CODE #
03909  M00S03872.ssmove  +++|        END
03910  M00S03873.ssmove  +++|
03911  M00S03874.ssmove  +++|#
03912  M00S03875.ssmove  +++|****  PROC MVRPTDS - XREF LIST END.
03913  M00S03876.ssmove  +++|#
03914  M00S03877.ssmove  +++|
03915  M00S03878.ssmove  +++|
03916  M00S03879.ssmove  +++|      DEF HDR11   #"   (BEFORE)   DEVICE STATUS   "#;
03917  M00S03880.ssmove  +++|      DEF HDR12      #" (AFTER)   PERCENTS "#;
03918  M00S03881.ssmove  +++|      DEF HDR21      #"EO  DN  DT-N  TYPE "#;
03919  M00S03882.ssmove  +++|      DEF HDR22      #"   FILES /     PRU  "#;
03920  M00S03883.ssmove  +++|      DEF HDR23      #"EXP. GOAL "#;
03921  M00S03884.ssmove  +++|      DEF HDR24      #"FLAG."#;
03922  M00S03885.ssmove  +++|
03923  M00S03886.ssmove  +++|      DEF LISTCON    #0#;            # DO NOT LIST COMMON DECKS #
03924  M00S03887.ssmove  +++|
03925  M00S03888.ssmove  +++|*CALL,COMBFAS
03926  M00S03889.ssmove  +++|*CALL COMBSIT
03927  M00S03890.ssmove  +++|*CALL,COMSPFM
03928  M00S03891.ssmove  +++|*CALL,COMTMOV
03929  M00S03892.ssmove  +++|*CALL,COMTMVD
03930  M00S03893.ssmove  +++|*CALL,COMTOUT
03931  M00S03894.ssmove  +++|
03932  M00S03895.ssmove  +++|
03933  M00S03896.ssmove  +++|      ITEM EXP$PER    I;             # EXPECTED PERCENT SPACE AVAILABLE
03934  M00S03897.ssmove  +++|                                     #
03935  M00S03898.ssmove  +++|      ITEM EXP$PRU    I;             # EXPECTED PRU AVAILABLE #
03936  M00S03899.ssmove  +++|      ITEM GOAL       I;             # PERCENT DESIRED DISK SPACE #
03937  M00S03900.ssmove  +++|      ITEM I          I;             # LOOP INDEX #
03938  M00S03901.ssmove  +++|      ITEM IX         I;             # FILE TYPE INDEX #
03939  M00S03902.ssmove  +++|      ITEM SUBFAM     I;             # LOOP INDEX #
03940  M00S03903.ssmove  +++|
03941  M00S03904.ssmove  +++|
03942  M00S03905.ssmove  +++|      ARRAY FILETYPE[IXDA:IXIA] S(1);
03943  M00S03906.ssmove  +++|        BEGIN
03944  M00S03907.ssmove  +++|        ITEM FILE$TYPE  C(00,00,04) = [  ##
03945  M00S03908.ssmove  +++|        "DIR.",
03946  M00S03909.ssmove  +++|        "IND."];
03947  M00S03910.ssmove  +++|        END
03948  M00S03911.ssmove  +++|
03949  M00S03912.ssmove  +++|                                               CONTROL EJECT;
03950  M00S03913.ssmove  +++|
03951  M00S03914.ssmove  +++|#
03952  M00S03915.ssmove  +++|*     PRINT HEADER LINES.
03953  M00S03916.ssmove  +++|#
03954  M00S03917.ssmove  +++|
03955  M00S03918.ssmove  +++|      RPEJECT(OUT$FETP);
03956  M00S03919.ssmove  +++|
03957  M00S03920.ssmove  +++|      IF ABNDN
03958  M00S03921.ssmove  +++|      THEN
03959  M00S03922.ssmove  +++|        BEGIN
03960  M00S03923.ssmove  +++|        RPLINE(OUT$FETP,"DESTAGE ABANDONMENT REPORT",5,26,0);
03961  M00S03924.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",1);
03962  M00S03925.ssmove  +++|        END
03963  M00S03926.ssmove  +++|
03964  M00S03927.ssmove  +++|      RPLINE(OUT$FETP,HDR11,21,30,1);
03965  M00S03928.ssmove  +++|      RPLINE(OUT$FETP,HDR12,51,20,0);
03966  M00S03929.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
03967  M00S03930.ssmove  +++|
03968  M00S03931.ssmove  +++|      RPLINE(OUT$FETP,HDR21,2,19,1);
03969  M00S03932.ssmove  +++|      RPLINE(OUT$FETP,HDR22,21,20,1);
03970  M00S03933.ssmove  +++|      RPLINE(OUT$FETP,HDR22,41,20,1);
03971  M00S03934.ssmove  +++|      RPLINE(OUT$FETP,HDR23,61,10,1);
03972  M00S03935.ssmove  +++|      RPLINE(OUT$FETP,HDR24,72,05,0);
03973  M00S03936.ssmove  +++|
03974  M00S03937.ssmove  +++|#
03975  M00S03938.ssmove  +++|*     PRINT DATA FOR DEVICES ABLE TO HOLD INDIRECT FILES (MASTER
03976  M00S03939.ssmove  +++|*     DEVICES), FOLLOWED BY DATA ON DEVICES ABLE TO HOLD DIRECT
03977  M00S03940.ssmove  +++|*     ACCESS FILES.
03978  M00S03941.ssmove  +++|#
03979  M00S03942.ssmove  +++|
03980  M00S03943.ssmove  +++|      SLOWFOR I = 1 STEP 1 UNTIL 2
03981  M00S03944.ssmove  +++|      DO
03982  M00S03945.ssmove  +++|        BEGIN  # REPORT ON BOTH FILE TYPES #
03983  M00S03946.ssmove  +++|        RPSPACE(OUT$FETP,SP"SPACE",2);  # 2 BLANK LINES AS A SEPARATOR
03984  M00S03947.ssmove  +++|                                        #
03985  M00S03948.ssmove  +++|
03986  M00S03949.ssmove  +++|        SLOWFOR DNX = 1 STEP 1 UNTIL MAXDEV
03987  M00S03950.ssmove  +++|        DO
03988  M00S03951.ssmove  +++|          BEGIN  # REPORT EACH DEVICE #
03989  M00S03952.ssmove  +++|
03990  M00S03953.ssmove  +++|          IF I EQ 1
03991  M00S03954.ssmove  +++|          THEN                       # ONLY DO MASTER DEVICES #
03992  M00S03955.ssmove  +++|            BEGIN
03993  M00S03956.ssmove  +++|            IX = IXIA;
03994  M00S03957.ssmove  +++|            GOAL = SM$VAL[IXIA,IXRL,SMMG];
03995  M00S03958.ssmove  +++|            IF NOT DEV$MAST[IXIA,DNX]
03996  M00S03959.ssmove  +++|            THEN                     # SKIP THIS DEVICE #
03997  M00S03960.ssmove  +++|              BEGIN
03998  M00S03961.ssmove  +++|              TEST DNX;
03999  M00S03962.ssmove  +++|              END
04000  M00S03963.ssmove  +++|
04001  M00S03964.ssmove  +++|            END
04002  M00S03965.ssmove  +++|
04003  M00S03966.ssmove  +++|          ELSE                       # ONLY DO DEVICES HOLDING DIRECT
04004  M00S03967.ssmove  +++|                                       ACCESS FILES #
04005  M00S03968.ssmove  +++|            BEGIN
04006  M00S03969.ssmove  +++|            IX = IXDA;
04007  M00S03970.ssmove  +++|            IF DEV$MAST[IXIA,DNX]
04008  M00S03971.ssmove  +++|            THEN
04009  M00S03972.ssmove  +++|              BEGIN
04010  M00S03973.ssmove  +++|              GOAL = SM$VAL[IXDA,IXRL,SMMG];
04011  M00S03974.ssmove  +++|              END
04012  M00S03975.ssmove  +++|
04013  M00S03976.ssmove  +++|            ELSE
04014  M00S03977.ssmove  +++|              BEGIN
04015  M00S03978.ssmove  +++|              GOAL = SM$VAL[IXDA,IXRL,SMSG];
04016  M00S03979.ssmove  +++|              END
04017  M00S03980.ssmove  +++|
04018  M00S03981.ssmove  +++|            IF NOT DEV$SEC[IXIA,DNX] OR  ##
04019  M00S03982.ssmove  +++|              DEV$NF[IXDA,DNX] EQ 0
04020  M00S03983.ssmove  +++|            THEN                     # SKIP THIS DEVICE #
04021  M00S03984.ssmove  +++|              BEGIN
04022  M00S03985.ssmove  +++|              TEST DNX;
04023  M00S03986.ssmove  +++|              END
04024  M00S03987.ssmove  +++|
04025  M00S03988.ssmove  +++|            END
04026  M00S03989.ssmove  +++|
04027  M00S03990.ssmove  +++|#
04028  M00S03991.ssmove  +++|*     PRINT EO, DN, DT-N, TYPE.
04029  M00S03992.ssmove  +++|#
04030  M00S03993.ssmove  +++|
04031  M00S03994.ssmove  +++|          CHR$10[0] = XCOD(DEV$EO[IXIA,DNX]);
04032  M00S03995.ssmove  +++|          RPLINE(OUT$FETP,CHR$R2[0],2,2,1);
04033  M00S03996.ssmove  +++|
04034  M00S03997.ssmove  +++|          CHR$10[0] = XCOD(DEV$DN[IXIA,DNX]);
04035  M00S03998.ssmove  +++|          RPLINE(OUT$FETP,CHR$R2[0],6,2,1);
04036  M00S03999.ssmove  +++|
04037  M00S04000.ssmove  +++|          CHR$10[0] = XCOD(DEV$NUM[IXIA,DNX]);
04038  M00S04001.ssmove  +++|          RPLINE(OUT$FETP,DEV$TYPE[IXIA,DNX],10,2,1);
04039  M00S04002.ssmove  +++|          RPLINE(OUT$FETP,"-",12,1,1);
04040  M00S04003.ssmove  +++|          RPLINE(OUT$FETP,CHR$R1[0],13,1,1);
04041  M00S04004.ssmove  +++|
04042  M00S04005.ssmove  +++|          RPLINE(OUT$FETP,FILE$TYPE[IX],16,4,1);
04043  M00S04006.ssmove  +++|
04044  M00S04007.ssmove  +++|#
04045  M00S04008.ssmove  +++|*     ISSUE BEFORE STATISTICS - NUM. FILES, PRU.
04046  M00S04009.ssmove  +++|#
04047  M00S04010.ssmove  +++|
04048  M00S04011.ssmove  +++|          CHR$10[0] = XCDD(DEV$NF[IX,DNX]);
04049  M00S04012.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],21,8,1);
04050  M00S04013.ssmove  +++|
04051  M00S04014.ssmove  +++|          CHR$10[0] = XCDD(DEV$PRU[IX,DNX]);
04052  M00S04015.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],31,8,1);
04053  M00S04016.ssmove  +++|
04054  M00S04017.ssmove  +++|#
04055  M00S04018.ssmove  +++|*     ISSUE AFTER STATISTICS - FILES, PRU.
04056  M00S04019.ssmove  +++|#
04057  M00S04020.ssmove  +++|
04058  M00S04021.ssmove  +++|          CHR$10[0] = XCDD(DEV$NF[IX,DNX] - DEV$RELF[IX,DNX]);
04059  M00S04022.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],41,8,1);
04060  M00S04023.ssmove  +++|
04061  M00S04024.ssmove  +++|          EXP$PRU = DEV$PRU[IX,DNX] - DEV$RELP[IX,DNX];
04062  M00S04025.ssmove  +++|          EXP$PER = (EXP$PRU*100 + DEV$TPRU[IXIA,DNX]/2)
04063  M00S04026.ssmove  +++|            /DEV$TPRU[IXIA,DNX];
04064  M00S04027.ssmove  +++|          CHR$10[0] = XCDD(EXP$PRU);
04065  M00S04028.ssmove  +++|          RPLINE(OUT$FETP,CHR$R8[0],51,8,1);
04066  M00S04029.ssmove  +++|
04067  M00S04030.ssmove  +++|#
04068  M00S04031.ssmove  +++|*     ISSUE PERCENTAGES.  IF SPACE GOAL NOT MET ISSUE WARNING
04069  M00S04032.ssmove  +++|*     FLAG AND DAYFILE MESSAGE.
04070  M00S04033.ssmove  +++|#
04071  M00S04034.ssmove  +++|
04072  M00S04035.ssmove  +++|          IF EXP$PER GR GOAL
04073  M00S04036.ssmove  +++|          THEN                       # SPACE GOAL NOT MET #
04074  M00S04037.ssmove  +++|            BEGIN
04075  M00S04038.ssmove  +++|            RPLINE(OUT$FETP,"**",72,2,1);
04076  M00S04039.ssmove  +++|            MVMSG$LN[0] = " DEVICE SPACE GOAL NOT MET.";
04077  M00S04040.ssmove  +++|            MESSAGE(MVMSG[0],UDFL1);
04078  M00S04041.ssmove  +++|            END
04079  M00S04042.ssmove  +++|
04080  M00S04043.ssmove  +++|          CHR$10[0] = XCDD(EXP$PER);
04081  M00S04044.ssmove  +++|          RPLINE(OUT$FETP,CHR$R3[0],61,3,1);
04082  M00S04045.ssmove  +++|
04083  M00S04046.ssmove  +++|          CHR$10[0] = XCDD(GOAL);
04084  M00S04047.ssmove  +++|          RPLINE(OUT$FETP,CHR$R3[0],66,3,0);  # WRITE LINE #
04085  M00S04048.ssmove  +++|          END  # REPORT EACH DEVICE #
04086  M00S04049.ssmove  +++|
04087  M00S04050.ssmove  +++|        END  # REPORT BOTH FILE TYPES #
04088  M00S04051.ssmove  +++|
04089  M00S04052.ssmove  +++|#
04090  M00S04053.ssmove  +++|*     ISSUE SUBFAMILY REPORT.  PRINT HEADER TO REPORT FILE.
04091  M00S04054.ssmove  +++|#
04092  M00S04055.ssmove  +++|
04093  M00S04056.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
04094  M00S04057.ssmove  +++|      RPLINE(OUT$FETP,"  ** - DEVICE SPACE GOAL NOT MET",2,32,0);
04095  M00S04058.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",2);
04096  M00S04059.ssmove  +++|      RPLINE(OUT$FETP,"SUBFAMILY REPORT",40,16,0);
04097  M00S04060.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
04098  M00S04061.ssmove  +++|
04099  M00S04062.ssmove  +++|      IF ABNDN
04100  M00S04063.ssmove  +++|      THEN
04101  M00S04064.ssmove  +++|        BEGIN
04102  M00S04065.ssmove  +++|        RPLINE(OUT$FETP,"FILES NOT DESTAGED",22,18,1);
04103  M00S04066.ssmove  +++|        END
04104  M00S04067.ssmove  +++|
04105  M00S04068.ssmove  +++|      ELSE
04106  M00S04069.ssmove  +++|        BEGIN
04107  M00S04070.ssmove  +++|        RPLINE(OUT$FETP,"FILES TO DESTAGE",22,16,1);
04108  M00S04071.ssmove  +++|        END
04109  M00S04072.ssmove  +++|
Line S04073 Modification History
M01 (Removed by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04110  M01S04073.ssmove2 ---|      RPLINE(OUT$FETP,"FILES ONLY ON M860",63,18,1);
04111  M01S04074.ssmove2 ---|      RPLINE(OUT$FETP,"FILES ON M860",108,13,0);
Line S00001 Modification History
M01 (Added by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
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  M00S04075.ssmove  +++|      RPLINE(OUT$FETP,"SUB             DIRECT",2,25,1);
04115  M00S04076.ssmove  +++|      RPLINE(OUT$FETP,"INDIRECT",37,8,1);
04116  M00S04077.ssmove  +++|      RPLINE(OUT$FETP,"DIRECT             INDIRECT",60,27,1);
04117  M00S04078.ssmove  +++|      RPLINE(OUT$FETP,"DIRECT             INDIRECT",102,27,0);
04118  M00S04079.ssmove  +++|      RPLINE(OUT$FETP,"FAMILY    NUMBER",2,16,1);
04119  M00S04080.ssmove  +++|      RPLINE(OUT$FETP,"PRU    NUMBER        PRU",26,24,1);
04120  M00S04081.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",54,17,1);
04121  M00S04082.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",75,17,1);
04122  M00S04083.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",96,17,1);
04123  M00S04084.ssmove  +++|      RPLINE(OUT$FETP,"NUMBER        PRU",117,17,0);
04124  M00S04085.ssmove  +++|      RPSPACE(OUT$FETP,SP"SPACE",1);
04125  M00S04086.ssmove  +++|
04126  M00S04087.ssmove  +++|#
04127  M00S04088.ssmove  +++|*     PROCESS EACH SUBFAMILY.
04128  M00S04089.ssmove  +++|#
04129  M00S04090.ssmove  +++|
04130  M00S04091.ssmove  +++|      SLOWFOR SUBFAM = 0 STEP 1 UNTIL MAXSF
04131  M00S04092.ssmove  +++|      DO
04132  M00S04093.ssmove  +++|        BEGIN  # FOR EACH SUBFAMILY #
04133  M00S04094.ssmove  +++|        SLOWFOR IX = IXDA STEP 1 UNTIL IXIA
04134  M00S04095.ssmove  +++|        DO
04135  M00S04096.ssmove  +++|          BEGIN  # REPORT BOTH FILE TYPES #
04136  M00S04097.ssmove  +++|          CHR$10[0] = XCDD(SUBFAM);
04137  M00S04098.ssmove  +++|          RPLINE(OUT$FETP,CHR$R1[0],3,1,1);
04138  M00S04099.ssmove  +++|          IF IX EQ IXDA
04139  M00S04100.ssmove  +++|          THEN
04140  M00S04101.ssmove  +++|            BEGIN  # DIRECT ACCESS #
04141  M00S04102.ssmove  +++|            CHR$10[0] = XCDD(SFDS$NF[IX,SUBFAM]);
04142  M00S04103.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],10,8,1);
04143  M00S04104.ssmove  +++|            CHR$10[0] = XCDD(SFDS$PRU[IX,SUBFAM]);
04144  M00S04105.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],21,8,1);
04145  M00S04106.ssmove  +++|            CHR$10[0] = XCDD(SFRL$NF[IX,SUBFAM]);
04146  M00S04107.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],52,8,1);
04147  M00S04108.ssmove  +++|            CHR$10[0] = XCDD(SFRL$PRU[IX,SUBFAM]);
04148  M00S04109.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],63,8,1);
04149  M00S04110.ssmove  +++|            CHR$10[0] = XCDD(SFDM$NF[IX,SUBFAM]);
04150  M00S04111.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],94,8,1);
04151  M00S04112.ssmove  +++|            CHR$10[0] = XCDD(SFDM$PRU[IX,SUBFAM]);
04152  M00S04113.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],105,8,1);
04153  M00S04114.ssmove  +++|            END  # DIRECT ACCESS #
04154  M00S04115.ssmove  +++|
04155  M00S04116.ssmove  +++|          ELSE
04156  M00S04117.ssmove  +++|            BEGIN  # INDIRECT ACCESS #
04157  M00S04118.ssmove  +++|            CHR$10[0] = XCDD(SFDS$NF[IX,SUBFAM]);
04158  M00S04119.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],31,8,1);
04159  M00S04120.ssmove  +++|            CHR$10[0] = XCDD(SFDS$PRU[IX,SUBFAM]);
04160  M00S04121.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],42,8,1);
04161  M00S04122.ssmove  +++|            CHR$10[0] = XCDD(SFRL$NF[IX,SUBFAM]);
04162  M00S04123.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],73,8,1);
04163  M00S04124.ssmove  +++|            CHR$10[0] = XCDD(SFRL$PRU[IX,SUBFAM]);
04164  M00S04125.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],84,8,1);
04165  M00S04126.ssmove  +++|            CHR$10[0] = XCDD(SFDM$NF[IX,SUBFAM]);
04166  M00S04127.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],115,8,1);
04167  M00S04128.ssmove  +++|            CHR$10[0] = XCDD(SFDM$PRU[IX,SUBFAM]);
04168  M00S04129.ssmove  +++|            RPLINE(OUT$FETP,CHR$R8[0],126,8,0);
04169  M00S04130.ssmove  +++|            END  # INDIRECT ACCESS #
04170  M00S04131.ssmove  +++|
04171  M00S04132.ssmove  +++|          END  # REPORT BOTH FILE TYPES #
04172  M00S04133.ssmove  +++|
04173  M00S04134.ssmove  +++|        END  # FOR EACH SUBFAMILY #
04174  M00S04135.ssmove  +++|
04175  M00S04136.ssmove  +++|      END  # MVRPTDS #
04176  M00S04137.ssmove  +++|
04177  M00S04138.ssmove  +++|    TERM
04178  M00S04139.ssmove  +++|PROC MVVALDS(DVAL,PO);
04179  M00S04140.ssmove  +++|# TITLE MVVALDS - CALCULATE DESTAGE VALUE.                            #
04180  M00S04141.ssmove  +++|
04181  M00S04142.ssmove  +++|      BEGIN  # MVVALDS #
04182  M00S04143.ssmove  +++|
04183  M00S04144.ssmove  +++|#
04184  M00S04145.ssmove  +++|**    MVVALDS - CALCULATE DESTAGE VALUE.
04185  M00S04146.ssmove  +++|*
04186  M00S04147.ssmove  +++|*     PROC MVVALDS(DVAL,PO).
04187  M00S04148.ssmove  +++|*
04188  M00S04149.ssmove  +++|*     ENTRY.    PO = PROCESSING OPTION FROM *SF* DIRECTIVE, OR 0.
04189  M00S04150.ssmove  +++|*
04190  M00S04151.ssmove  +++|*     EXIT.     DVAL = DESTAGE VALUE.
04191  M00S04152.ssmove  +++|#
04192  M00S04153.ssmove  +++|
04193  M00S04154.ssmove  +++|      ITEM DVAL       I;             # DESTAGE VALUE #
04194  M00S04155.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
04195  M00S04156.ssmove  +++|
04196  M00S04157.ssmove  +++|#
04197  M00S04158.ssmove  +++|****  PROC MVVALDS - XREF LIST BEGIN.
04198  M00S04159.ssmove  +++|#
04199  M00S04160.ssmove  +++|
04200  M00S04161.ssmove  +++|      XREF
04201  M00S04162.ssmove  +++|        BEGIN
04202  M00S04163.ssmove  +++|        FUNC MVRELAG U;              # RELATIVE AGE #
04203  M00S04164.ssmove  +++|        END
04204  M00S04165.ssmove  +++|
04205  M00S04166.ssmove  +++|#
04206  M00S04167.ssmove  +++|****  PROC MVVALDS - XREF LIST END.
04207  M00S04168.ssmove  +++|#
04208  M00S04169.ssmove  +++|
04209  M00S04170.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
04210  M00S04171.ssmove  +++|*CALL,COMBFAS
04211  M00S04172.ssmove  +++|*CALL COMBSIT
04212  M00S04173.ssmove  +++|*CALL,COMSPFM
04213  M00S04174.ssmove  +++|*CALL,COMTMOV
04214  M00S04175.ssmove  +++|*CALL,COMTMVD
04215  M00S04176.ssmove  +++|
04216  M00S04177.ssmove  +++|
04217  M00S04178.ssmove  +++|      ITEM AGE        I;             # DAYS SINCE LAST ACCESS #
04218  M00S04179.ssmove  +++|                                               CONTROL EJECT;
04219  M00S04180.ssmove  +++|      AGE = CURAGE - MVRELAG(PFC$MDD[0]);  # TIME SINCE LAST ACCESS #
04220  M00S04181.ssmove  +++|      IF PFC$MDT[0] GR CURTIME
04221  M00S04182.ssmove  +++|      THEN
04222  M00S04183.ssmove  +++|        BEGIN
04223  M00S04184.ssmove  +++|        AGE = AGE - 1;
04224  M00S04185.ssmove  +++|        END
04225  M00S04186.ssmove  +++|
04226  M00S04187.ssmove  +++|#
04227  M00S04188.ssmove  +++|*     VERIFY FILE MEETS AGE AND SIZE REQUIREMENTS.
04228  M00S04189.ssmove  +++|#
04229  M00S04190.ssmove  +++|
04230  M00S04191.ssmove  +++|      IF (AGE LS FR$VAL[FTYPE,IXDS,FRDD])  # TEST AGE #
04231  M00S04192.ssmove  +++|        OR (PFC$LF[0] LS FR$VAL[FTYPE,IXDS,FRMN])  # MINIMUM SIZE #
04232  M00S04193.ssmove  +++|        OR (PFC$LF[0] GR FR$VAL[FTYPE,IXDS,FRMX])  # MAXIMUM SIZE #
04233  M00S04194.ssmove  +++|      THEN                           # FILE FAILS REQUIREMENTS #
04234  M00S04195.ssmove  +++|        BEGIN
04235  M00S04196.ssmove  +++|        DVAL = -1;
04236  M00S04197.ssmove  +++|        RETURN;
04237  M00S04198.ssmove  +++|        END
04238  M00S04199.ssmove  +++|
04239  M00S04200.ssmove  +++|#
04240  M00S04201.ssmove  +++|*     EVALUATE DESTAGE VALUE FORMULA.
04241  M00S04202.ssmove  +++|#
04242  M00S04203.ssmove  +++|
04243  M00S04204.ssmove  +++|      DVAL =                         ##
04244  M00S04205.ssmove  +++|        (WA$VAL[FTYPE,IXDS,WMAG]+WM$VAL[FTYPE,IXDS,WMAG]*AGE)  ##
04245  M00S04206.ssmove  +++|        *(WA$VAL[FTYPE,IXDS,WMLN]+WM$VAL[FTYPE,IXDS,WMLN]*PFC$LF[0])##
04246  M00S04207.ssmove  +++|        *(PR$VAL[FTYPE,IXDS,PFC$RS[0]])  # *PR* FACTOR #
04247  M00S04208.ssmove  +++|        *(BR$VAL[FTYPE,IXDS,PFC$BR[0]])  # *BR* FACTOR #
Line S04209 Modification History
M01 (Removed by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04248  M01S04209.ssmove2 ---|        /(WA$VAL[FTYPE,IXDS,WAAC]+WM$VAL[FTYPE,IXDS,WMAC]*PFC$AC[0]);
Line S00003 Modification History
M01 (Added by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
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  M00S04210.ssmove  +++|
04252  M00S04211.ssmove  +++|
04253  M00S04212.ssmove  +++|
04254  M00S04213.ssmove  +++|      RETURN;
04255  M00S04214.ssmove  +++|      END  # MVVALDS #
04256  M00S04215.ssmove  +++|
04257  M00S04216.ssmove  +++|    TERM
04258  M00S04217.ssmove  +++|PROC MVVALRL(RVAL,PO);
04259  M00S04218.ssmove  +++|# TITLE MVVALRL - CALCULATE RELEASE VALUE.                            #
04260  M00S04219.ssmove  +++|      BEGIN  # MVVALRL #
04261  M00S04220.ssmove  +++|
04262  M00S04221.ssmove  +++|#
04263  M00S04222.ssmove  +++|**    MVVALRL - CALCULATE RELEASE VALUE.
04264  M00S04223.ssmove  +++|*
04265  M00S04224.ssmove  +++|*     PROC MVVALRL(RVAL,PO).
04266  M00S04225.ssmove  +++|*
04267  M00S04226.ssmove  +++|*     ENTRY.    PO = PROCESSING OPTION FROM *SF* DIRECTIVE, OR 0.
04268  M00S04227.ssmove  +++|*
04269  M00S04228.ssmove  +++|*     EXIT.     RVAL = RELEASE VALUE.
04270  M00S04229.ssmove  +++|#
04271  M00S04230.ssmove  +++|
04272  M00S04231.ssmove  +++|      ITEM PO         C(1);          # PROCESSING OPTION #
04273  M00S04232.ssmove  +++|      ITEM RVAL       I;             # RELEASE VALUE #
04274  M00S04233.ssmove  +++|
04275  M00S04234.ssmove  +++|#
04276  M00S04235.ssmove  +++|****  PROC MVVALRL - XREF LIST BEGIN.
04277  M00S04236.ssmove  +++|#
04278  M00S04237.ssmove  +++|
04279  M00S04238.ssmove  +++|      XREF
04280  M00S04239.ssmove  +++|        BEGIN
04281  M00S04240.ssmove  +++|        FUNC MVRELAG U;              # RELATIVE AGE #
04282  M00S04241.ssmove  +++|        END
04283  M00S04242.ssmove  +++|
04284  M00S04243.ssmove  +++|#
04285  M00S04244.ssmove  +++|****  PROC MVVALRL - XREF LIST END.
04286  M00S04245.ssmove  +++|#
04287  M00S04246.ssmove  +++|
04288  M00S04247.ssmove  +++|      DEF LISTCON #0#;               # DO NOT LIST COMMON DECKS #
04289  M00S04248.ssmove  +++|*CALL,COMBFAS
04290  M00S04249.ssmove  +++|*CALL COMBSIT
04291  M00S04250.ssmove  +++|*CALL,COMSPFM
04292  M00S04251.ssmove  +++|*CALL,COMTMOV
04293  M00S04252.ssmove  +++|*CALL,COMTMVD
04294  M00S04253.ssmove  +++|
04295  M00S04254.ssmove  +++|
04296  M00S04255.ssmove  +++|      ITEM AGE        I;             # DAYS SINCE LAST ACCESS #
04297  M00S04256.ssmove  +++|                                               CONTROL EJECT;
04298  M00S04257.ssmove  +++|      AGE = CURAGE - MVRELAG(PFC$ADD[0]);  # TIME SINCE LAST ACCESS #
04299  M00S04258.ssmove  +++|      IF PFC$ADT[0] GR CURTIME
04300  M00S04259.ssmove  +++|      THEN
04301  M00S04260.ssmove  +++|        BEGIN
04302  M00S04261.ssmove  +++|        AGE = AGE - 1;
04303  M00S04262.ssmove  +++|        END
04304  M00S04263.ssmove  +++|
04305  M00S04264.ssmove  +++|#
04306  M00S04265.ssmove  +++|*     VERIFY FILE MEETS AGE AND SIZE REQUIREMENTS.
04307  M00S04266.ssmove  +++|#
04308  M00S04267.ssmove  +++|
04309  M00S04268.ssmove  +++|      IF (AGE LS FR$VAL[FTYPE,IXRL,FRDD])  # TEST AGE #
04310  M00S04269.ssmove  +++|        OR (PFC$LF[0] LS FR$VAL[FTYPE,IXRL,FRMN])  # MINIMUM SIZE #
04311  M00S04270.ssmove  +++|        OR (PFC$LF[0] GR FR$VAL[FTYPE,IXRL,FRMX])  # MAXIMUM SIZE #
04312  M00S04271.ssmove  +++|      THEN                           # FILE FAILS REQUIREMENTS #
04313  M00S04272.ssmove  +++|        BEGIN
04314  M00S04273.ssmove  +++|        RVAL = -1;
04315  M00S04274.ssmove  +++|        RETURN;
04316  M00S04275.ssmove  +++|        END
04317  M00S04276.ssmove  +++|
04318  M00S04277.ssmove  +++|#
04319  M00S04278.ssmove  +++|*     EVALUATE RELEASE VALUE FORMULA.
04320  M00S04279.ssmove  +++|#
04321  M00S04280.ssmove  +++|
04322  M00S04281.ssmove  +++|      RVAL =                         ##
04323  M00S04282.ssmove  +++|        (WA$VAL[FTYPE,IXRL,WAAG]+WM$VAL[FTYPE,IXRL,WMAG]*AGE)  ##
04324  M00S04283.ssmove  +++|        *(WA$VAL[FTYPE,IXRL,WALN]+WM$VAL[FTYPE,IXRL,WMLN]*PFC$LF[0])##
04325  M00S04284.ssmove  +++|        *(PR$VAL[FTYPE,IXRL,PFC$RS[0]])  # *PR* FACTOR #
04326  M00S04285.ssmove  +++|        *(BR$VAL[FTYPE,IXRL,PFC$BR[0]])  # *BR* FACTOR #
Line S04286 Modification History
M01 (Removed by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04327  M01S04286.ssmove2 ---|        /(WA$VAL[FTYPE,IXRL,WAAC]+WM$VAL[FTYPE,IXRL,WMAC]*PFC$AC[0]);
Line S00005 Modification History
M01 (Added by) ssmove2
Seq #  *Modification Id* Act 
----------------------------+
04328  M01S00005.ssmove2 +++|        /((WA$VAL[FTYPE,IXRL,WAAC]+WM$VAL[FTYPE,IXRL,WMAC]     ##
04329  M01S00006.ssmove2 +++|        *PFC$AC[0])*WA$VAL[FTYPE,IXRL,WADV]);
04330  M00S04287.ssmove  +++|
04331  M00S04288.ssmove  +++|
04332  M00S04289.ssmove  +++|
04333  M00S04290.ssmove  +++|      RETURN;
04334  M00S04291.ssmove  +++|      END  # MVVALRL #
04335  M00S04292.ssmove  +++|
04336  M00S04293.ssmove  +++|    TERM
cdc/nos2.source/opl.opl871/deck/ssmove.001.txt ยท Last modified: (external edit)