AUTO Release History
                           AUTO Release History

     Level    Date    Pgm            D e s c r i p t i o n

      1.0    Jan 93   SJM    Initial release.

      1.1    Feb 93   SJM    Add a keyword to TASK SGS indicating how the
                             command on the SGS should be processed:
                              - value of ADD indicates that the command
                                should be @ADDed.
                              - value of AMS indicates that the command
                                should be sent to AMS via:
                                  *DISPLAY,O 'AMS PLEASE TYPE: command'

      2.0    Mar 93   SJM    Re-design the day selection criteria on the
                             WHEN SGS:
                             - allow multiple criteria (ANDed together).
                             - change all criteria to a 'keyword op value'
                               approach.  All keywords allow the '='
                               operator and some allow the '>' and '<'
                             - allow specification of the calendar date
                               (01 to 31) so that tasks may be done only
                               on some days during the month.
                             - allow specifcation of the month (01 to 12)
                               so that tasks may be done only during some
                             - add new criteria for n'th or last working
                               or banking day of the week or month, plus
                               last calendar day of the month.
                             - allow specification of all non-working or
                               non-banking days.
                             - allow these specifications for yesterday
                               and tomorrow.
                             - add edits of DAY, WHEN and TASK SGSs when
                               the skeleton is first called.
                             - add ability to simulate any date in the

      2.1    Mar 93   SJM    - Add a new keyword on the TASK SGS:  "MSG"
                             causes a message to be sent to the console
                             (without the script-triggering prefix that
                             the AMS keyword causes to be included).
                             - Add ability to perform a task based on a
                             given probability (PROB=).  The probability
                             is expresssed as a percentage (1 to 99) and
                             is evaluated using the time in milliseconds.
                             - In simulation mode, allow user to enter a
                             null date.  The first time it's taken to mean
                             'today'; subsequently it's taken to mean
                             'next day'.  This allows the user to walk
                             through successive days by transmitting.
                             - Add screen paging for non-breakpointed
                             demand users in simulation mode.

      2.2    Apr 93   SJM    - Minor corrections and cosmetic changes.
                             - Tighten up edit of time (previously, some
                             illegal times were not caught).
                             - There are no functional differences from
                             the previous version.

      3.0    Jun 93   SJM    - Add 'FACT=' specification to the WHEN SGSs
                             to allow waiting for prerequiste conditions
                             to be @ASSERTed.
                             - Add 'FILE=' specification to the WHEN SGSs
                             to allow waiting for a prerequiste file to be
                             - Add two new types of days:  online and

      3.1    Jul 93   SJM    - Add expiry time to WHEN SGS (used in
                             conjunction with 'FACT=' and 'FILE=').
                             - Move specification of the time to wait
                             between checks of the schedule from this
                             skeleton to AUTO/CONFIG.
                             - Add the STRT action type to the TASK SGS.
                             - Allow DOMAIN SGS to specify numeric ranges
                             (this change is invisible to users).

      3.2    Aug 93   SJM    - Add "not equals" ('~') operator for some
                             expressions on WHEN SGSs.
                             - Minor improvements to the edits of WHEN
                             SGS expressions and to the format of their
                             associated error messages.

      3.3    Aug 93   SJM    - Add W_TASK_EXP as the fourth field on the
                             WHEN SGS to allow performance of an alternate
                             task if the given task expires.  This
                             requires conversion of previous WHEN SGSs.
                             - Add VERSION SGS to AUTO/CONFIG to record
                             AUTO's release level in one place.
                             - Rename 'x_NAME' fields to 'x_TASK' on WHEN,
                             TASK and PREREQ SGSs (invisible to user).

      4.0    Sep 93   SJM    - Add ASSERT and DENY action types to TASK
                             SGS.  These assert and deny facts in the fact
                             database without exiting this skeleton.  Part
                             of FACTSKEL has been made into a seperate
                             *COPY proc to serve both skeletons.
                             - Add HALT action type to TASK SGS to force
                             AUTO background run to terminate.
                             - Add Julian date to calendar (DAY SGSs) and
                             add JULIAN keyword to WHEN SGSs.
                             - Fix several bugs in edit of subject and

      4.1    May 94   SJM    Bring documentation, default calendar, and
                             AMS scripts up to date.

      5.0    May 94   SJM    - Take advantage of SSG 23R1's extended date
                             support.  It now provides a full four-digit
                             date and also provides a date SGS (DATE$)
                             that's updated each time it's referenced.
                             Thus, the CENTURY SGS is no longer needed,
                             and it is no longer necessary to exit and
                             re-invoke this skeleton at midnight in order
                             to pick up the new date.
                             - *LOOP syntax such as '*LOOP X' is changed
                             to '*LOOP . X'.  Although SSG does not
                             generate a syntax error, the *LOOP directive
                             does not provide for an optional variable
                             name (unlike *ITERATE and *EXIT, which do).
                             So the variable name on *LOOPs is commented,
                             in case future SSG releases enforce *LOOP
                             syntax as the manual specifies it.
                             - This version requires SSG 23R1 (or above).

      5.1    Jul 94   SJM    - Use new version of DAY-OF-WEEK to generate
                             the calendar.  This version works until 2099
                             (the old version only worked until 1999).
                             - Update GENERIC to version 2.0 .
                             - Update PIPELINE to version 1.2 .
                             - Move description of AUTO releases from
                             AUTOSKEL to RELEASE/HISTORY.

      5.2    Oct 94   SJM    - Add T option to @ASSERT to allow user to
                             specify date and time to be recorded in the
                             fact file.
                             - Upgrade @ASSERT, @DENY, and @PREREQ
                             processors to use GENERIC 2.1.

      5.3    May 95   SJM    - Allow user to exit early from the simulation
                             of a day's schedule.
                             - Edit user input SGS labels to ensure that only
                             expected labels are provided at fire-up time.
                             The (new) METALABEL SGSs describes acceptable
                             user-supplied labels for fire-up time.
                             - Several improvements are made to QUERYSKEL:
                               - Allow display (of facts or prerequisites)
                               - Allow early exit from display (of facts or
                               - Allow use in batch, and don't prompt user for
                                 transmit if run is batch or breakpointed.
                             - Default calendar (CALENDAR/SGS) now contains
                             DAY SGSs for 1995, 1996, and 1997.
                             - Upgrade @ASSERT, @DENY, and @PREREQ processors
                             to use GENERIC 3.0.
                             - Upgrade RUNINFO subroutine (called by GENERIC)
                             to version 3.0.  This contains correct PCT
                             definitions up to SB 5R3.

      5.4    Jun 95   SJM    Many small improvements:
                             Bug fixes:
                             - *SET IMGLEN$ = 132 in AUTOSKEL to fix bug where
                               *CREATE creates SGS greater than 80 characters
                             - Properly display error message when a TASK SGS
                               has fields.
                             - Properly set date in simulator after user's
                               first attempt is illegal and he then elects to a
                               accept the default.
                             Editing enhancements:
                             - Set maximum task name length to 16 characters
                               and edit user input for this (previously there
                               was no maximum).
                             - Provide warning message for a task that can
                               never be scheduled (i.e., a task not mentioned
                               on any WHEN SGS).
                             Simulator enhancements:
                             - Replace keyword=value display with headings at
                               top of screen.
                             - Add expiry time and expiry replacement task to
                               the display.
                             - Allow user specification of start time to
                             Query enhancements:
                             - Show all 16 characters of task names (previously
                               task names were truncated to 11 characters).
                             - Improve readability of the screen by omitting
                               seconds when displaying times.
                             Scheduling enhancements:
                             - Allow optional TASKID SGS to supply description
                               of a task.  Example:
                               TASKID  DBSAVE  ''Save the production database''
                             - On task expiry where SHOWEXPIRY config tag is
                               set to YES, display on the console the
                               description of the expiring task (from the
                               TASKID SGS, if available).
                             - Add timestamp to several important console
                               messages.  Useful for auditing.
                             Fact database enhancements:
                             - Display upon printer the subject/predicate for
                               each fact that changes (via @ASSERT or @DENY,
                               or via the ASSERT or DENY action types in
                               AUTOSKEL).  This provides an audit trail of
                               fact database changes.
                             Documentation enhancements:
                             - Discuss the impact of the year 2000 on AUTO and
                             Internal changes:
                             - Move all SGS specifications from @SSG call to
                               SGS cards following the call.  This decreases
                               the chance of an element being overwritten
                               due to incorrect number of commas on the @SSG
                               call, and is more readable.
                             - Upgrade RUNINFO subroutine to version 4.0, which
                               works on Exec up to and including 44R4 (SB 5R4).

      5.5    Oct 95   SJM    - Add detailed simulation feature.  This provides
                               a detailed report of what AUTO will do on a
                               given date.
                             - Add new configuration parameter PAGELINES.
                               This is needed only for the detailed simulation
                             - Upgrade @ASSERT, @DENY, and @PREREQ processors
                               to use PIPELINE 2.0 and GENERIC 5.0.  (These
                               no longer use the RIBUFDEF and RUNINFO elements,
                               which have been deleted from AUTO.)
                             - Minor changes to backround run (AUTO):  don't
                               leave SYS$LIB$*FURPUR assigned; small cosmetic

Release 6.0    Jan 1996   SJM

  -  Drops the ADD action type from the TASK SGS.  This was an
     undesirable feature that added to the complexity of AUTO.

  -  Adds a "relative day index" attribute to the calendar (DAY
     SGSs).  January 1, 1964 was day zero.  One is added to this
     number for each subsequent day.

  -  Adds file placement attribute to the FACTFILE and PREREQFILE
     configuration parameters.

  -  Adds to the WHEN SGS the ability to specify that a task is
     performed every i'th week.  AUTO uses the relative day index
     (see previous point) to compute a relative week number,
     where Monday, January 6, 1964 began week #1.  The WHEN SGS
     parameter is specified as follows:
     In the above, i and j represent whole numbers where j is
     greater than or equal to i.  The not equals ('~') operator
     is also allowed, as are the yesterday (YES_) and tomorrow
     (TOM_) prefixes.  A 'WEEK=i/j' parameter will evaluate to
     true iff:
          i  =  ( ( week# mod j ) + 1 )
     Example:  WEEK=1/2 specifies that the task is to be
     performed during the first week of every two-week cycle
     (i.e., during odd-numbered weeks).

  -  The order of fields #1 and #2 on the WHEN SGS is reversed.
     The scheduled time now becomes field #1.  The task name now
     becomes field #2.  I find this more intuitive and it's
     consistent with the ordering of fields #3 and #4 (expiry
     time and task).

  -  Changes the evaluation of 'WEEK_x_DAY<n' and 'MONTH_x_DAY<n'
     expressions on WHEN SGSs such that they will never evaluate
     to true on non-x days (where x = WORK, BANK, BATCH, ONLINE).
     In previous versions, such expressions were true on non-x
     days even though those using the equals ('=') or greater
     than ('>') operators were false.  This change means only the
     not equals operator will return true in this case.  This
     change may require the addition of 'x=NO' parameters to WHEN
     SGSs that relied on 'WEEK_x_DAY<n' or 'MONTH_x_DAY<n' to
     disqualify non-x days!

  -  Upon initialization, AUTO runs tasks missed because AUTO or
     the system was down.  This feature uses a new (third) file--
     the control file.  The expiry feature can be used to
     suppress subsequent running of tasks.  Thus, even tasks
     without prerequisites can now use the expiry time and task
     fields on WHEN SGSs.  In addition, global suppression of
     this feature can be accomplished by starting AUTO with a
     condition code (4) that will initialize the control file.
     The CONTROLFILE config parameter names and places the
     control file.

  -  Adds a normal termination function whereby a user can
     request (via @AUTO,X) that AUTO terminate normally the next
     time it wakes up.  This removes the need to E AUTO.

  -  Splits AUTO/CONFIG element into DICTIONARY (not site-
     modifiable) and CONFIG (site-modifiable).

  -  Renames elements:
        Old Element Name         New Element Name
          CALENDAR/SGS             CALENDAR
          AUTO/TASKS               SCHEDULE
          AUTOSKEL                 MAIN/SKEL
          FACTSKEL                 FACT/SKEL
          CALSKEL                  CALENDAR/SKEL
          QUERYSKEL                QUERY/SKEL
          AUTOSKEL                 MAIN/SKEL

  -  Adds a new processor (@AUTO with elements AUTO/ADD and
     AUTO/SKEL) that performs the following functions:
       @AUTO,H : give help for @AUTO (and do nothing else)
       @AUTO,B : generates background run ECL
       @AUTO,C : generates CALENDAR element in TPF$
       @AUTO,Q : generates and executes query ECL
       @AUTO,S : generates and executes simulation ECL
       @AUTO,X : requests background run normal termination

  -  Deletes elements that have been replaced by @AUTO (see
     previous point):

  -  Adds new elements:
      INIT/SKEL  :  generates and executes background run
                    initialization ECL
      EXIT/SKEL  :  asks the AUTO background run to terminate
      FILE-SPEC  :  standard SSG *COPY proc used by AUTO/SKEL

  -  Most of the ECL in the background run (element AUTO) is
     replaced with '@AUTO,B'.

Release 6.1    Oct 1996   SJM

  - Minor enhancements:
    - Upgrade processors to use version 2.2 of PIPELINE subroutine.
    - Change AUTO to use the new-and-improved DAY-OF-WEEK (aka
      FIND_THE_DAY) from the Group W Toolset.
    - When generating a calendar (@AUTO,C), explicitly edit that
      the input year is between 1964 and 2099 (inclusive).
      Previously, AUTO relied on FIND_THE_DAY's error status
      should the user supply an out-of-range year.  This worked
      but was ugly.
    - Take advantage of the new FIND_THE_DAY's ability to set
      ERRCNT$ if it finds an error:  after calling FIND_THE_DAY,
      check that ERRCNT$ is clear and *ABORT if it's not.
    - Console messages for scheduling start, scheduling restart,
      and AUTO termination now include the date in ISO 8601
      external format.  (This uses new element GET-ISO-DATE.)
    - When AUTO is restarted, it validates its most recent
      scheduling date/time (from the control file) and aborts
      if any of the following conditions obtain:
      - The date in the control file is not found in the calendar.
      - AUTO has been down for more than 24 hours.
      - The current date/time is less than the most recent
        scheduling date/time.  This means that the clock has
        been moved backwards.
      In these situations, AUTO cannot restart properly because
      restart only applies to outages of less than 24 hours (due
      to prerequisite expiry limitations).  It's better to abort
      than schedule tasks improperly.  The problem can be corrected
      by initializing the control file; depending on the nature of
      the outage and the desired recovery, it might also be best to
      initialize the fact and prerequisite files (this must be a
      site decision based on knowledge of how AUTO is used).

  - Adds new element:
      - GET-ISO-DATE (used by MAIN/SKEL).

  - Bug fixes:
    - The date to be simulated is never solicited from the
      console.  This allows batch jobs to supply dates in their
      input card deck.
    - The MN options are included on the @SSG call to suppress
      SSG's standard fire-up messages and page headings.  This
      is helpful when simulating in batch or breakpointed mode.
    - MAIN/SKEL is changed to keep AUTO*CONTROL assigned
      exclusively while AUTO is processing its schedule (i.e.,
      during steps 1 to 4 in the previous log entry).
      Previously, since AUTO*CONTROL was not assigned to the
      run, SSG would assign it for the duration of the *RESTORE
      and *SAVE commands and free it afterwards.  Now it will
      be assigned exclusively from just before the *RESTORE
      until just after the *SAVE.
    - EXIT/SKEL (used by @AUTO,X) is changed to add date and
      time as fields on the HALT SGS.  This will not affect what
      AUTO does, but will make it easy to determine the age of a
      HALT SGS when dumping AUTO*CONTROL.
    - When restarting, check whether a task expired while AUTO
      was down only after ensuring that the task is to run that
      day.  Previously, AUTO could falsely report an expiry for
      a task that does not run that day.
    - Corrects several bugs in restart logic where AUTO could
      incorrectly expire a task or incorrectly fail to expire
      a task (by granting an additional 24 hours) when AUTO
      re-starts after being down over midnight.
      These bugs were never reported; they were found during
      code inspection.
    - Corrects bug whereby AUTO could pick up inconsistent
      date and time if midnight occurred between neighboring
      DATE$ and TIME$ SGS references during start-up.
      This bug was never reported; it was found during code

Release 6.2    Nov 1997   SJM

  - Minor enhancements:
    - Bring the output date format shown by AUTO under user control
      (input and internal date formats remain YYYYMMDD):
       - Add the SITE_DATE_FORMAT and SITE_DATE_SEP_CHAR parameters
         to the CONFIG element.  Default external date format is ISO
         8601 (YYYY-MM-DD), which is what previous releases of AUTO
       - Modify skeletons to use the two new date format parameters:
       - Use new version of SSG *COPY proc SHOW-ID-LINE from the Group
         W Toolset, which uses these two new parameters to control date
       - Replace GET-ISO-DATE element with GET-EXT-DATE, and modify
         MAIN/SKEL to *COPY the new element and to call its *DEFINE.
    - Upgrade processors to use version 2.3 of PIPELINE subroutine
      and version 6.0 of GENERIC.
    - Use new version of SSG *COPY proc FILE-SPEC from Group W
    - Set element subtype for SSG *COPY procedures to 'SSG'.  This
      simplifies finding *COPY procs with Table of Contents search
      utilities such as @TOCED.
    - Replace old @DOC-based documentation elements (AUTO/DOC and
      AUTO/SYM) with Hypertext Markup Language (HTML) element called
      called AUTO/HTM.  This can be downloaded to a PC disk (or Web
      server) and viewed with a Web browser.

Release 6.3    Jul 1998   SJM

  - New feature:
    - A new configuration parameter, SYSID, allow specification of a unique
      system-id.  If omitted (the default), then AUTO will get the system-id
      from the Exec.  The WHEN statement is enhanced to allow specification
      of the system-id (via SYSID=xxxxxx).  This feature allows different
      scheduling needs for multiple systems to be controlled by a single

  - Bug fixes:
    - Remove reference to AUTO02 ACR from CONFIG element.  This was a local
      modification that never should have been in the released version.
      Thanks to Erich Staubringer for noticing this.
    - Fix two bugs in one line of code (!) whereby AUTO could fail to properly
      recognize that a file had arrived.  Faulty facility bits check on
      @ASG,AZ of file for which it's waiting:
      - failed to recognize that various facility warning bits can be set (it
        had allowed the disabled bit but no others); this could cause AUTO to
        never recgonize that the file was there.
      - failed to ensure that the file was not assigned to anyone else; this
        could cause AUTO to proceed while the file is not yet fully created.
      Thanks to Andrew Williams for finding and fixing this mess.

  - Minor Enhancements:
    - Default CALENDAR now contains 1998, 1999 and 2000.  (Previous
      version had 1996, 1997 and 1998.)
    - Remove Nasdaq-specific code from SHOW-ID-LINE *COPY proc.
    - Several minor changes to AUTO/HTM.

Release 7.0    Sep 1999   SJM

  - New features:

    - There are new computed day attributes for field #5 (and
      beyond) of the WHEN SGS:
        SINCE_WORK       :  # of days since last work       day
        SINCE_BANK       :  # of days since last bank       day
        SINCE_BATCH      :  # of days since last batch      day
        SINCE_ONLINE     :  # of days since last online     day
        SINCE_NON_WORK   :  # of days since last non-work   day
        SINCE_NON_BANK   :  # of days since last non-bank   day
        SINCE_NON_BATCH  :  # of days since last non-batch  day
        SINCE_NON_ONLINE :  # of days since last non-online day
      These provide schedule control based on the number of days
      since the last day of the given type.  Values will be GE 1
      (e.g., if the day immediately preceding the day in question
      was a batch day, then SINCE_BATCH_YES will be 1).  These
      counters can be used with yesterday ("YES_") and tomorrow
      ("TOM_") prefixes and with all AUTO relational operators

    - Adds OR capability to WHEN SGSs.  Fields 5 and higher can now
      specify multiple subfields.  As before, fields specify AND
      conditions.  Subfields, which were previously prohibited, now
      specify OR conditions.  The AND operator always has higher
      precedence.  Examples:
        WHEN  22:45:00  TASK1  \  \         DAY=MON,DAY=TUE
        WHEN  22:45:00  TASK2   \ 23:45:00  ONLINE=YES  ;
      TASK1 will be performed IFF it's Monday OR Tuesday.
      TASK2 will be performed IFF it's an on-line day AND
      (EITHER it's a non-batch day OR SJM*F1 arrives before
      23:45).  Note that on non-batch days, TASK2 will not wait
      for SJM*F1 because there is no need:  BATCH=NO is true
      and so it can proceed immediately.
      Compatibility Considerations:
        The format of the prerequisite file (AUTO*PREREQS) has
        changed:  A new field is added.  This field contains a
        timestamp used to link all prereqs that are part of an
        OR (satisfying any of them satisfies them all).  The
        first time AUTO starts after release 7 is installed, it
        automatically upgrades any entries in this file by
        adding a unique dummy timestamp (no old prereqs can be
        part of an OR because the feature did not exist).
      Fallback Considerations:
        - If prereq file contains no prereqs that are part of an
          OR, there are no fallback issues with it.  The extra
          field will remain but is ignored by the previous release.
        - If prereq file contains prereqs that are part of an OR,
          then falling back will turn them into part of an AND
          (which is all that the previous release supports).  This
          could cause a task not to be executed when desired.  You
          may need to workaround with a manual procedure.  Note:
          Falling back with "ST* AUTO,1" (re-create prereq file)
          would guarantee that all new prereqs are trashed, and so
          is recommended if feasible.

    - New YYYYMMDD keyword on WHEN SGSs provides ability to schedule
      tasks before, on, or after a specific date.  Example:
        WHEN  22:45:00  TASK1  \  \  DATE>19990419
      Task TASK1 will be performed on 1999-04-20 and beyond.  In
      conjunction with the OR feature, this feature can be used to turn
      prerequisites on or off starting at a given date:
        WHEN  22:45:00  TASK2 \ \ FACT=JOB1/FIN  ;
     Beginning on June 1, 1999, TASK2 will wait on JOB2/FIN.

    - Time fields on WHEN SGSs can now be expressed without the seconds
      portion (which will be assumed to be zero when omitted).  Thus,
      these four SGSs are equivalent:
        WHEN  13:00:00  TASK1  13:15:00  \  DAY=ALL
        WHEN  13:00     TASK1  13:15     \  DAY=ALL
        WHEN  13:00:00  TASK1  13:15     \  DAY=ALL
        WHEN  13:00     TASK1  13:15:00  \  DAY=ALL

    - Expiry time field on WHEN SGSs can now be specified as a forward
      relative time.  This is indicated by a leading plus sign ('+').
      Thus, these two WHEN SGSs are equivalent:
        WHEN  13:00:00  TASK1  13:15:00  \  DAY=ALL
        WHEN  13:00:00  TASK1  +15       \  DAY=ALL
      The forward relative time must be an integer from 0 (immediate
      expiry) to 1440.

    - A single WHEN SGSs can now schedule a task repetitively.  Field 1
      has optional subfields:  Subfield 2 specifies that the task is to
      be repeated every N minutes.  Subfield 3 specifies a cessation
      time for the repetition.  For example:
        WHEN  08:00:00,30,17:00:00  TASK1   +10  \  DAY=ALL
      TASK1 is executed every 30 minutes between 8 a.m. and 5 p.m. (and
      exprires at 8:10 to 5:10, respectively).
      Please note:
      - If subfield 2 is omitted, then it defaults to zero.  This
        means no repetition and so would work exactly as in
        previous releases.  If supplied, it must be an integer
        between 1 and 1440.
      - Subfield 3 is meaningful only if subfield 2 is specified.
        If subfield 2 is specified but subfield 3 is omitted, then
        it defaults to the subfield 1 time (i.e., repeat around
        the clock).  Subfield 3 can be expressed in any of the
        supported time formats (HH:MM, HH:MM:SS or +MIN).
      - Use of this feature requires that an internal sort be done
        to order the items by ascending schedule time.  This sort
        uses the original WHEN occurrence number as a tiebreaker
        when multiple WHENs have the same scheduled time.  This
        preserves the input order of user-created WHEN SGSs.  It
        also controls the order of scheduling internally-created
        items for repetition:  The occurrence number of the WHEN
        SGS that specified the repetition will be used.  This means
        that, when multiple WHENs specify the same schedule time,
        items generated for repetition will be scheduled before
        user-submitted items if the time is later than the original
        WHEN time; otherwise, they will be scheduled after.  You
        are strongly advised not to count on any specific behavior
        as to the order that repetitive items will be scheduled
        when several items are to be scheduled at the same time.
        All that is guaranteed is that repetitive items will be
        scheduled at the specified time.

    - AUTO can now refresh its schedule, calendar, configuration and
      all software used by the background run without terminating.
      This can be down on a scheduled basis via
        TASK  taskname  REFRESH
      or forced externally via
      These are analogous to the HALT keyword and @AUTO,X.  But instead
      of terminating, the refresh forces AUTO to exit MAIN/SKEL and then
      @ADD TPF$.AUTOECL (which will re-copy all elements to TPF$ and
      re-invoke MAIN/SKEL).

  - Bug Fixes:

    - Fix bug whereby these WHEN SGS clauses were incorrectly evaluated
      when number of digits in the operands differed:
      This bug was never reported (found during code inspection).
    - Fix bug whereby production AUTO files could be initialized by
      non-production version of AUTO.  This bug was never reported
      (found during AUTO 7 testing).

    - Fix bug whereby assertions performed by the ASSERT keyword on
      the TASK SGS had an incorrect time of assertion recorded in
      AUTO's fact file.  The time that MAIN/SKEL started was used
      rather than the actual time of the assertion.  This time
      serves as documentation only; it does not affect AUTO's
      processing.  The date was correct.  Assertions made with
      @ASSERT were correct.

    - Fix bug in the handling of the SHOWEXPIRY configuration SGS.
      AUTO should show task expiry info on the console iff
      "[SHOWEXPIRY,1,1,1,UCSTR$] = YES."  But it was showing it iff
      [SHOWEXPIRY] existed.

  - Minor Enhancements:

    - A new edit displays a warning if a WHEN SGS specifies both no
      expiry time and an expiry replacement task:  It warns that the
      replacement task can never be executed.

    - Upgrade GENERIC processor from version 6.0 to 6.1.

    - Default CALENDAR now contains 1999, 2000 and 2001.  (Previous
      version had 1998, 1999 and 2000.)

Release 7.1    Nov 2002   SJM

  - New features:

    - New 'NOW_FACT' and 'NOW_FILE' keywords on the WHEN SGS cause
      immediate rejection of the clause if false.  Unlike the similar
      'FACT' and 'FILE' keywords, there will be no waiting (i.e.,
      prerequisite will not be created).  Thanks to Andrew Williams for
      the suggestion and initial development.

    - New optional configuration SGS (KEYIN_OK) supplies list of
      acceptable keyins for AMS action on TASK SGSs.  If no KEYIN_OK
      SGSs are supplied, then all keyins are allowed.  If one or more
      KEYIN_OK SGSs are supplied, then only those keyins are allowed.
      Note that a 'keyin' is defined here as the string of characters
      which precedes the first space or comma (e.g., 'ST JOB1' and
      'ST,/U JOB1' are both ST keyins).  Thanks to Erich Staubringer
      for the suggestion.

    - Allow main task name on WHEN SGS to be null (\).  This is useful
      when you wish to do something only upon expiry.  A warning is
      issued if both task names on a WHEN SGS are null.  An error is
      issued if the task name on a TASK SGS is null.

    - Enhance console display of expiry to show the original schedule
      time (in format HH:MM or HH:MM:SS, as supplied on the WHEN SGS).
      This makes it easier to determine exactly which  task expired.
      Site-local Smart Console scripts which trap expiry messages may
      need to be modified.

  - Bug Fixes:

    - Fix bug whereby AUTO would encounter SSG "no find" when user does
      long simulation (S and L options) and answers 'END' when asked
      for the initial date.

    - Fix bug whereby detailed simulation (@AUTO,SL) report #2 showed
      heading "Definition of AUTO Tasks in Chronological Order".  This
      is corrected to "Definition of AUTO Tasks in Alphabetical Order".
      Bug affected versions 5.5 to 7.0, was never reported (found
      during code inspection), and was cosmetic.

  - Minor Enhancements:

    - Default CALENDAR now contains 2002, 2003 and 2004.  (Previous
      version had 1999, 2000 and 2001.)

Release 7.1a   May 2004   SJM

  - Minor Enhancements:

    - @AUTO,C (build calendar) now displays date of Easter Sunday.  This
      is for the convenience of the AUTO administrator and does not affect
      scheduling logic.

    - Author contact information has been updated in documentation.

    - Default CALENDAR now contains 2004, 2005 and 2006.  (Previous
      version had 2002, 2003 and 2004.)

Release 8.0    Jun 2004   SJM

  - License Status:

    - This version is released under the GNU General Public License
      (GPL) version 2.  New element LICENSE contains complete license.

    - This version is OSI Certified Open Source Software.

    - @AUTO,O will show brief license information.

    - New required dictionary SGS (COPYRIGHT) supplies copyright notice.

  - Minor Enhancements:

    - SOLAR$SGS element changed to install AUTO file as WRITEABLE.

Release 8.1    Oct 2007   SJM

  Thanks to Erich Staubringer for bug reports, feature suggestions and

  - License Status:

    - This version is released under the GNU General Public License
      (GPL) version 2.

  - New Features:

    - New optional field #4 of TASK SGS allows specification of a delay
      in seconds before the action is taken.  Delays are cumulative within
      a TASK set, that is, each delay is since the previous TASK SGS was
      acted upon.  A new optional configuration parameter, MAXDELAY,
      controls the maximum allowable delay.

    - Three new scheduling controls are added for the multi-host feature:
      MULTI_HOST_ID=<hostid>.  These can also use the '~' (not equals)
      operator.  A new optional, multiply-occurring configuration
      parameter, HOST, controls the names of the hosts that can be
      specified on MULTI_HOST_ID.

  - Bug Fixes:

    - @AUTO,R (request for refresh) and @AUTO,X (request for exit) did
      not take into account whether AUTO was active or whether such a
      request has already been made.  This could lead to AUTO background
      run starting and immediately terminating or refreshing due to
      @AUTO,R or @AUTO,X that was done while AUTO was down.  @AUTO,R
      and @AUTO,X are no longer allowed if one of these is already in
      progress or if AUTO background run is not running.

    - @AUTO with various options could generate @qual*file(cycle).SSG call
      with absolute cycle number of SSG absolute file.  If SSG was installed
      during the very short time between generation of this ECL and its
      execution, the execution of the ECL could fail because the given
      absolute cycle does not now exist.  This call will no longer specify
      the absolute cycle number.

    - So that it does not remain assigned to the background run, AUTO @FREEs
      the file from which SSG was invoked.  However, at some sites this will
      be SYS$*LIB$ and it is never desirable to @FREE this file.  So AUTO
      now checks to ensure that SSG was not invoked from SYS$*LIB$ before

    - Upon start-up or refresh, AUTO would incorrectly remove null tasks
      (i.e., tasks of form "WHEN <time> \") from the prerequisite file.
      This is because it checked that all tasks in the prereq file are
      still included in its schedule, which might have changed.  But it
      should not check that null tasks exist because, by definition, they
      will not.

    - Upon start-up or refresh, AUTO did not check to ensure that expiry
      tasks stored in the prerequisite file still exist in the schedule.
      This could cause a fatal error later if the task expired.  The fix
      is to check for this condition upon start-up or refresh, and to
      remove the prereq and display a console message if it occurs.

    - On WHEN SGS clauses that use 'FACT=' or 'FILE=', AUTO could try
      to *CREATE an SGS that exceeds SSG's 133 character maximum.  This
      could happen if sum of the lengths of task name, expiry task name
      and right-hand side of 'FACT=' or 'FILE=' (i.e., subject/predicate
      or file name) exceed 50 characters.  Rather than erring at
      run-time, an edit is added to consider this to be a syntax error.
      Removing this restriction would require some re-design.

    - AUTO would err at run-time if text in field #3 of TASK SGSs had a
      single-quote character.  This is now caught at edit time and an
      error message issued.

  - Minor Enhancements:

    - Default CALENDAR now contains 2007, 2008 and 2009.  (Previous
      version had 2004, 2005 and 2006.)

Release 8.2    Nov 2009   SJM

  Thanks to Erich Staubringer for feature suggestions and testing.

  - License Status:

    - This version is released under the GNU General Public License
      (GPL) version 2.

  - New Features:

    - On TASK SGS, STRT function has new optional subfields, which may
      be specified in any combination:
      - Subfield 2 specifies how many times to try @START if error 2
        (file access denied) occurs.
      - Subfield 3 specifies how many seconds to wait between tries.
      - Subfield 4 specifies whether to show warning message on the
        console if there are more tries remaining.  (An error message
        will always be shown when @START fails and that failure is

    - New optional configuration parameters STARTMAX, STARTWAIT and
      STARTWARN provide site defaults that are used if the STRT function
      does not specify these values.

  - Bug Fixes:

    - Fixed a minor bug whereby in simulation mode display of the @START
      command sometimes lacked a space after '@START'.

  - Minor Enhancements:

    - New COPYRIGHT element contains copyright information.  Most other
      elements have their previous copyright notice removed and now
      instead refer to the COPYRIGHT element.

    - Default CALENDAR now contains 2009, 2010 and 2011.  (Previous
      version had 2007, 2008 and 2009.)

Release 8.3    Dec 2010   SJM

  - License Status:

    - This version is released under the GNU General Public License
      (GPL) version 2.

  - New Feature:

    - @ASSERT has new Y and Z options, which are effective if and only
      if the R option is set, and are mutually exclusive:
      - The Y specifies that the predicate asserted will be FIN-T2-nnnn
        (where nnnn is the current value of condition word T2 as four
        octal numbers).
      - The Z specifies that the predicate asserted will be FIN-T3-nnnn
        (where nnnn is the current value of condition word T2 as four
        octal numbers).
      For example, if original run-id is STEVEM and it has condition
      code T2 = zero and condition code T3 = 1:
        @ASSERT,R  asserts STEVEM/FIN
        @ASSERT,RY asserts STEVEM/FIN-T2-0000
        @ASSERT,RZ asserts STEVEM/FIN-T3-0001

  - Bug Fixes:

    - None

  - Minor Enhancements:

    - AUTO now checks the built-in variable ERRCNT$ once per sleep/wake
      cycle.  This will catch serious skeleton errors that SSG, in its
      wisdom, does not consider to be fatal.  Previously, AUTO checked
      ERRCNT$ only before MAIN/SKEL terminated; this check remains.

    - 'Warning: TASK SGS #<n> "<taskname>" is never scheduled' message
      now goes to the console in batch mode.  This makes it consistent
      with other warning messages.

    - The format of the messages produced by @ASSERT, @DENY, and the
      ASSERT and DENY action types has changed.  Messages begin with
      current date and time, which makes them more useful when they
      are in AUTO background run's print file.

    - Default CALENDAR now contains 2010, 2011 and 2012.  (Previous
      version had 2009, 2010 and 2011.)

Release 9.0    Feb 2014   SJM

  Thanks to Erich Staubringer for feature suggestions and testing.

  - License Status:

    - This version is released under the GNU General Public License
      (GPL) version 2.

  - New Features:

    - AUTO now keeps basic operational counts of how many tasks and
      subtasks it performs, how many tasks expire (and how many of these
      are replaced), and how many error and warning messages it issues.
      AUTO will show these counters on the console in response to the
      II grunid STATUS keyin.  AUTO will display these counters on the
      printer at the top of each breakpoint part, before processing
      II grunid RESET keyin, and whenever MAIN/SKEL exits (i.e.,
      refreshes or terminates).  Alas, these counters are NOT
      remembered across MAIN/SKEL invocations.  New optional config
      parameter COUNTWIDTH describes the width of the counter field
      when shown on the console or printer; this width includes a comma
      every 3 digits.

    - If SSG 24R2 or higher is used to run AUTO and new optional
      configuration parameter IIKEYIN is set to YES ("IIKEYIN YES"),
      then AUTO will accept these II console keyins (except when in
      simulation mode):
      - II grunid HALT     (same functionality as @AUTO,X)
      - II grunid TERM     (synonym for II grunid HALT)
      - II grunid REFR     (same functionality as @AUTO,R)
      - II grunid BRKPT    (breakpoints print and prints counters)
      - II grunid RESET    (prints and then resets counters)
      - II grunid STAT     (shows config highlights and counters--short)
      - II grunid STATUS   (shows config highlights and counters--long)
      - II grunid HELP     (shows available II keyins)
      AUTO checks for II keyins each time it awakes.  So it can take
      up to SLEEPTIME seconds for it to receive an II keyin.  SSG
      will not allow another II keyin for a skeleton until the previous
      one is processed.  Oh, how I wish Unisys had used ER KEYIN$.

  - Bug Fixes:

    - None

  - Minor Enhancements:

    - Default CALENDAR now contains 2014, 2015 and 2016.  (Previous
      version had 2010, 2011 and 2012.)

Release 9.1    Mar 2016   SJM

  - License Status:

    - This version is released under the MIT License.  This is the first
      release under this license.  See the LICENSE element for details.

  - New Features:

    - A new configuration parameter, MCN, allows specification of a unique
      Manufacturing Control Number.  If this is omitted (as in the default
      config), then AUTO will get the MCN from the Exec.  Getting MCN from
      Exec requires SSG 24R2 or higher.  If MCN config parameter is not
      supplied and AUTO cannot get MCN from Exec, then it will use "NONE".

    - The WHEN statement is enhanced to allow specification of the MCN
      (via MCN=xxxxxxxx).  This feature provides another method for a
      single schedule to support different scheduling needs for multiple

  - Bug Fixes:

    - None

  - Minor Enhancements:

    - ID line for processor calls is changed to show the time zone iff
      it is available on the DATIME$ SGS.

    - Documentation is changed to note that AUTO works in local time,
      not UTC.

    - Default CALENDAR now contains 2016, 2017 and 2018.  (Previous
      version had 2014, 2015 and 2016.)

Release 9.2    Aug 2020   SJM

  - License Status:

    - This version is released under the MIT License.  See the LICENSE
      element for details.

  - New Features:

    - A new configuration parameter, UTC, determines whether AUTO schedules
      in UTC or local time.  If this is omitted (as in the default config),
      then scheduling will be in local time.  Use of this feature requires
      SSG 24R3 or higher.  If you change the value of this parameter, you
      must intialize AUTO's control, fact and prerequisite files (that is,
      start AUTO comma 7).

    - A new configuration parameter, SLEEPMIN, specifies the minimum value
      in seconds to which AUTO's SLEEPTIME parameter may be set.  If
      omitted, default is 1 (which is the minimum allowed by SSG's *WAIT).

    - A new configuration parameter, SLEEPMAX, specifies the maximum value
      in seconds to which AUTO's SLEEPTIME parameter may be set.  If
      omitted, default is 86400 (which is the maximum allowed by SSG's

    - A new configuration parameter, SCREENLINES, specifies how many lines
      to show before solicting user to press ENTER when in non-breakpointed
      demand.  If this is omitted, default is 24.

    - The TASK statement is enhanced to support change of number of
      seconds to sleep via, for example:  TASK  SLEEP  60

    - New "II grunid SLEEP+" and "II grunid SLEEP-" keyins allow dynamic
      change of number of seconds to sleep, doubling and halving the
      current value, respectively.

  - Bug Fixes:

    - Fix a bug whereby when computing counters for a day, AUTO did not
      go back far enough in the calendar.  It only went back 33 days,
      but this could compute incorrect values for SINCE_ counters if a
      particular type of day (work, bank, batch, online) has more than
      33 consecutive days with the same value (YES or NO).  The fix is
      to go back through the entire calendar.

  - Minor Enhancements:

    - In the simulator (@AUTO,S), after showing info for yesterday,
      today and tomorrow, allow user to type NEXT or PREV to move
      to yesterday or tomorrow, respectively, without viewing the
      the tasks for today.

    - When showing facts for @AUTO,Q, the format is changed so that
      a 12-character user-id will not use the 80th character of the

    - Show CPU (User IP) consumption of AUTO initialization and
      configuration/calendar/schedule edit.

    - Default CALENDAR now contains 2020, 2021 and 2022.  (Previous
      version had 2016, 2017 and 2018.)

Release 9.3    Apr 2022   SJM

  - License Status:

    - This version is released under the MIT License.  See the LICENSE
      element for details.

  - New Features:

    - None.

  - Bug Fixes:

    - Iff one or more "TASK SLEEP <n>" SGSs exist, on startup or refresh
      AUTO would use value on the last such SGS, rather than the
      configured SLEEPTIME value.

    - @AUTO,R or @AUTO,X caused AUTO to show a misleading message saying
      that AUTO background run would refresh/exit within (configured)
      SLEEPTIME seconds.  This would be wrong if sleep time had been
      changed dynamically.  Fix is to say "when it next wakes up" which
      is vague but never wrong.

    - Fix typos in comments at the top of GET-EXT-DATE.

  - Minor Enhancements:

    - Default CALENDAR now contains 2022, 2023 and 2024.  (Previous
      version had 2020, 2021 and 2022.)