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.) 

Release 9.4    Feb 2023   SJM   

  - License Status: 

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

  - New Features:   

      change AUTO's sleep time to minimum, maximum and configured default   
      seconds, respectively.

    - "II AUTO STATUS" keyin now shows time zone.   

  - Bug Fixes:  

    - None. 

  - Minor Enhancements: 

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

Release 9.5    Aug 2023   SJM   

  - License Status: 

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

  - New Features:   

    - None. 

  - Bug Fixes:  

    - Fix bug whereby PROB= clause was ignored unless it was the final  
      scheduling clause on the WHEN card.   

    - Fix bug in GET_UNIQUE_TIMESTAMP whereby there is a very small 
      window when midnight could be crossed between getting the date
      and getting the time. 

  - Minor Enhancements: 

   - Add a display in PRINT$ when a task is skipped because of PROB=.   

   - Simulator display now right-justifies the probability percentage.  

   - ECL now explicitly specifies TPF$ rather than relying on it being  
     the default.   

   - Processors are re-compiled to remove ER TDATE$ references. 

   - Documention is now in HTML.  Elements are renamed: 
     - AUTO/HTM is renamed to USER-GUIDE/HTML.  
     - READ-THIS is renamed to READ-THIS/HTML.  
     - RELEASE/HIST is renamed to RELEASE-HIST/HTML.