%META:TOPICINFO{author="ChrisBartram" date="1149892923" format="1.1" version="1.1"}% %META:TOPICPARENT{name="Hp3000MpexXeqs"}%
(* Author: Leonard S. Berkowitz                                    *)

(* ACCDATE, a customized LISTF mode                                *)

(* This is a LISTF mode based upon MPEX's mode 3 that is sorted by *)
(* last access date and time in ascending order and then by number *)
(* of sectors in descending order.  After each "date" break, a     *)
(* faint separator line, a total line and a heavy separator line   *)
(* are printed.                                                    *)
(*                                                                 *)
(* N. B.  If this LISTF mode is executed in batch job or if in a   *)
(* session the output is redirected to a printer, the creator and  *)
(* number of sectors are printed for each file.                    *)
(*                                                                 *)
(* To 'compile' this file, the variable LISTF_TEST must exist.     *)
(* Therefore, SETVAR LISTF_TEST FALSE.                             *)
(*                                                                 *)
(* To 'compile' this file, the variable DESCRIPTION must exist.    *)
(* Therefore, SETVAR DESCRIPTION "SAMPLE".                         *)

(*                                                                 *)
(* *-------------------------------------------------------------* *)
(* *                                                             * *)
(* *                       Change Log                            * *)
(* *                                                             * *)
(* *   Date   by  Modification                                   * *)
(* * -------- --- -----------------------------------------------* *)
(* * 04/10/92 LSB Modified DATESORT from VECSL supplied with     * *)
(* *                MPEX 23.11115.                               * *)
(* * 05/28/92 LSB Added totals for each access-date group.       * *)
(* * 06/30/92 LSB Added CREATOR, SECTORS (in descending order)   * *)
(* *                and longer lines in batch-mode operation.    * *)
(* * 08/21/92 LSB Added revision information in output.          * *)
(* * 12/29/92 LSB Added ACCTIME as second-level sort key.        * *)
(* * 02/26/93 LSB Added optional description line in heading.    * *)
(* * 03/01/93 LSB Commented description line in heading because  * *)
(* *                prompt is printed in CIOR listing.           * *)
(* * 03/23/93 LSB Added CO_NAME plus name of LISTF mode in revi- * *)
(* *                sion information.                            * *)
(* *              Modified placement of 'revision' in redirected * *)
(* *                output file.                                 * *)
(* * 03/26/93 LSB Changed header to print ',' only if HPJOBNAME  * *)
(* *                has a value.                                 * *)
(* * 03/29/93 LSB Added variable END_OF_FILESET to prevent an    * *)
(* *                extra heading on last 'page'.                * *)
(* * 11/03/93 LSB Changed handling of CO_NAME so that it is      * *)
(* *                treated as an MPEX variable and not an       * *)
(* *                MPE/iX variable.                             * *)
(* *              Changed handling of LISTF_TEST so that it is   * *)
(* *                treated as an MPEX variable and not an       * *)
(* *                MPE/iX variable.                             * *)
(* *              Changed handling of WGLCPU so that it is       * *)
(* *                treated as an MPEX variable and not an       * *)
(* *                MPE/iX variable.                             * *)
(* * 04/25/95 LSB Added FMTCOMMA on number of files and sectors. * *)
(* * 05/14/96 LSB Changed revision display to use modification   * *)
(* *                date of source file rather than compiled     * *)
(* *                file.                                        * *)
(* * 05/18/98 LSB Commented out DESCRIPTION handling.            * *)
(* *                                                             * *)
(* *-------------------------------------------------------------* *)
(*                                                                 *)
(*SVARSET ("DESCRIPTION",                                          *)
(*            (READSTRING                                          *)
(*                ("Optional description? (max 72)",               *)
(*             "RTRIM",                                            *)
(*             72) ) );                                            *)

VAR LINE_WIDTH: INTEGER;

VAR AUSPICES: STRING [20];

SVARSET
    ("AUSPICES", (STR (HPPROMPT,1,(POS (" ",HPPROMPT) -1) ) ) );

IF OUTRECSIZE () < 132 THEN
    IVARSET ("LINE_WIDTH",79)
ELSE
    IVARSET ("LINE_WIDTH",100);

VAR END_OF_FILESET: BOOLEAN;

BVARSET ("END_OF_FILESET",FALSE);

IF OUTRECSIZE () < 132 THEN
  BEGIN
    MPEXHEADER1:=
        RPT (" ",27) +
        "File" +
        RPT (" ",3) +
        "Access" +
        RPT (" ",6) +
        "Modify" +
        RPT (" ",5) +
        "Creation" +
        RPT (" ",4) +
        "Allocation";

    MPEXHEADER2:=
        "<--- F i l e   N a m e --> " +
        "Code" +
        RPT (" ",4) +
        "Date" +
        RPT (" ",8) +
        "Date" +
        RPT (" ",8) +
        "Date" +
        RPT (" ",8) +
        "Date"
  END
ELSE
  BEGIN
    MPEXHEADER1:=
        RPT (" ",36) +
        "File" +
        RPT (" ",3) +
        "Access" +
        RPT (" ",6) +
        "Modify" +
        RPT (" ",5) +
        "Creation" +
        RPT (" ",4) +
        "Allocation";

    MPEXHEADER2:=
        "<--- F i l e   N a m e --> " +
        "Creator" +
        RPT (" ",2) +
        "Code" +
        RPT (" ",4) +
        "Date" +
        RPT (" ",8) +
        "Date" +
        RPT (" ",8) +
        "Date" +
        RPT (" ",8) +
        "Date" +
        RPT (" ",8) +
        "Sectors"
  END;

MPEXHEADER3:="";

FOR RFILE IN MPEXFILESET
  SORT (ACCDATE,ACCTIME,SECTORS:"DESC")

  PAGEHEAD
    BEGIN
      IF NOT BVAR ("END_OF_FILESET") THEN
          BEGIN
            WRITELN (" ");

            WRITELN
                (STRWRITE
                     (SVAR ("HPSYSNAME") +
                      " " +
                      UPS (SVAR ("MPEXFILESET") ):
                      IVAR ("LINE_WIDTH"):
                      "CENTER") );

            IF HPJOBNAME <> "" THEN
                WRITELN
                    (STRWRITE
                         (HPJOBNAME +
                          "," +
                          HPUSER +
                          "." +
                          HPACCOUNT +
                          ", " +
                          HPDATEF +
                          ", " +
                          HPTIMEF:
                          IVAR ("LINE_WIDTH"):
                          "CENTER") )
            ELSE
                WRITELN
                    (STRWRITE
                         (HPUSER +
                          "." +
                          HPACCOUNT +
                          ", " +
                          HPDATEF +
                          ", " +
                          HPTIMEF:
                          IVAR ("LINE_WIDTH"):
                          "CENTER") );

(*          IF LEN (SVAR ("DESCRIPTION") ) > 0 THEN                *)
(*            BEGIN                                                *)
(*              WRITELN (" ");                                     *)
(*                                                                 *)
(*              WRITELN ( (DESCRIPTION):                           *)
(*                       IVAR ("LINE_WIDTH"):                      *)
(*                       "CENTER");                                *)
(*            END;                                                 *)

            WRITELN (" ");

            WRITELN
                (STRWRITE
                     ("(Sorted by access date & time, ascending; "+
                      "then by sectors, descending)":
                      IVAR ("LINE_WIDTH"):
                      "CENTER") );

            IF OUTRECSIZE () < 132 THEN
                WRITELN
                    (STRWRITE
                        (" (creator and sectors omitted "+
                         "on terminal display)":
                         IVAR ("LINE_WIDTH"):
                         "CENTER") );

            WRITELN (" ");

            WRITELN (MPEXHEADER1);

            WRITELN (MPEXHEADER2);

            WRITELN (" ");
          END
    END

  ONBREAKAFTER 1
    BEGIN
      WRITELN
          (RPT (".",IVAR ("LINE_WIDTH") ) );

      WRITELN
          ("Totals for last access date of ",
           ACCDATE:'%0D %1M %0Y',
           ", ",
           FMTCOMMA (TOTAL (1,1) ):7:"R",
           " file(s), ",
           FMTCOMMA (TOTAL (1,SECTORS) ):10:"R",
           " sector(s)");

      WRITELN
          (RPT ("=",IVAR ("LINE_WIDTH") ) );

      WRITELN (" ");
    END

    DO
      BEGIN
        IF OUTRECSIZE () < 132 THEN
            WRITELN
                (FILE:8,
                 ".",
                 GROUP:8,
                 ".",
                 ACCOUNT:8,
                 " ",
                 CODE:5,
                 " ",
                 ACCDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 MODDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 CREDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 RSTDATE:'%0D %1M %0Y')
        ELSE
            WRITELN
                (FILE:8,
                 ".",
                 GROUP:8,
                 ".",
                 ACCOUNT:8,
                 " ",
                 CREATOR:8,
                 " ",
                 CODE:5,
                 " ",
                 ACCDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 MODDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 CREDATE:'%0D %1M %0Y',
                 RPT (" ",3),
                 RSTDATE:'%0D %1M %0Y',
                 RPT (" ",4),
                 FMTCOMMA (SECTORS):10:"R");
      END

  FINALLY
    BEGIN
      WRITELN
          ("Totals for all access dates",
           RPT (" ",15),
           FMTCOMMA (TOTAL (0,1) ):7:"R",
           " file(s), ",
           FMTCOMMA (TOTAL (0,SECTORS) ):10:"R",
           " sector(s)");

      BVARSET ("END_OF_FILESET",TRUE);

      WRITELN (" ");

      WRITELN (" ");

      WRITELN
          (RPT (" ", (IVAR ("LINE_WIDTH") - 48) ),
           SVAR ("AUSPICES"),
           "'s ACCDATE, revision: ",
           VEFINFO ("ACCDATE.LISTF.VESOFT").MODDATE,
           ", ",
           VEFINFO ("ACCDATE.LISTF.VESOFT").MODTIME);

(*    IF BVAR ("LISTF_TEST") = TRUE THEN                        *)
(*        BEGIN                                                 *)
(*          WRITELN (" ");                                      *)
(*                                                              *)
(*          WRITELN ("Start of debugging information");         *)
(*                                                              *)
(*          WRITELN (" ");                                      *)
(*                                                              *)
(*          WRITELN ("   LEN (OUTBUFFER) = ",                   *)
(*                   STRWRITE (LEN (OUTBUFFER):12),             *)
(*                   "   OUTRECSIZE () = ",                     *)
(*                   STRWRITE (OUTRECSIZE ():12) );             *)
(*                                                              *)
(*          WRITELN (" ");                                      *)
(*                                                              *)
(*          WRITELN ("   OUTBUFFER = ");                        *)
(*                                                              *)
(*          WRITELN (OUTBUFFER);                                *)
(*        END                                                   *)
    END
-- Main.ChrisBartram - 09 Jun 2006