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 '<' operators. - 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 months. - 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 calendar. 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 catalogued. - Add two new types of days: online and batch. 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 predicate. 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) backwards. - Allow early exit from display (of facts or prerequisites). - 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 long. - 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 simulate. 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 SSG. 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 feature. - 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 changes. ******************************************************************************** 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: WEEK=i/j 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): SIMULATE SIMULATE/DETAIL QUERY CALGEN - Adds new elements: INIT/SKEL : generates and executes background run initialization ECL EXIT/SKEL : asks the AUTO background run to terminate normally 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 inspection. ******************************************************************************* 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 used. - Modify skeletons to use the two new date format parameters: AUTO/SKEL, FACT/SKEL, MAIN/SKEL, UPDATE-FACTS. - Use new version of SSG *COPY proc SHOW-ID-LINE from the Group W Toolset, which uses these two new parameters to control date formatting. - 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 Toolset. - 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 schedule. - 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 ; BATCH=NO,FILE=SJM*F1 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 ; DATE<19990601,FACT=JOB2/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 @AUTO,R 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: MONTH_WORK_DAY>n MONTH_BANK_DAY>n MONTH_BATCH_DAY>n MONTH_ONLINE_DAY>n MONTH_WORK_DAY<n MONTH_BANK_DAY<n MONTH_BATCH_DAY<n MONTH_ONLINE_DAY<n 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 testing. - 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={YES|NO}, MULTI_HOST_STAT={UP|DN|RV|NC} and 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 @FREEing. - 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 final.) - 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 systems. - 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 *WAIT). - 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 display. - 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: - New II keyins "II AUTO SLPMIN", "II AUTO SLPMAX" and "II AUTO SLPDEF" 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.