Any slot which is tanking will be aborted. If ControllerQ (fed by reportlogentry) starts tanking Supervisor will quit. These changes will ensure that Supervisor never continues tanking even in the event of a flood of log entries, combined with inefficient Opal code. This behaviour is controlled by a new Supervisor Option :SO + NOTANKING.
Version 630.11 was too aggressive in reporting these errors. Only errors where the result of the call is 3 (LargeMessage) will be reported and result in a programdump.
A very rare error "REMOVE_IF_ONE_WORD" has proved difficult to pin down. This change will force a program dump when it occurs.
An ODTS which used the WFL Function to participate in Remote File I/O could cause an infinite loop in SUPERVISOR while searching for the STATIONNAME.
Fixes three unlikely string protect errors. One at 80467500 ,One at 76183500, the other at 41463000.
Code left in Version 630.08 caused any attempt to change Maxslots to cause Supervisor to fault when restarted.
Redefining an ODTS with very many versions active could cause Supervisor to fault with an invalid index. The message reporting which slots it was active in will now be truncated.
If an odts was redefined from an enter and was active ,it was possible for Supervisor to fault with a read schedule error. This was due to a very small timing window. The action causing the fault will now issue a warning and the action will be retried.
New log entries 'Liq' are now added to help identify the source of Remove_If_One_Word errors.
This change fixes two problems.
After a Supervior restart a the first eval for a MX=w When may miss some waiting entries. Lasteval (Extraentry) would not be recognied in a time based MX slot after any WAIT,TT or KEYIN was executed.
Version 630.06 was corrupted when removing debug code. Mix =w situations linking to ODTS using WAIT or TT would not catch waiting entries.
A Situ linked to an ODTS using a TT function could miss a waiting entry if the wating entry arrived while in the TT code.
Version 630.04 left a window where some waiting entries could be missed
If a MX ODTS used the TT function, the first 'free eval' when it started could miss some entries.
When removing debug lines in version 630.02 a critical line was also removed. This has been restored. Pdumps from Supervisor are almost useless if the version of Supervisor is not the latest. Supervisor will now override the PDTODISK system option and produce a taskfile for programdumps.
A TT TRIGGER command scheduled in the same minute as a normal command would cause the normal command to be ignored unless the TT TRIGGER was later in the list.
Two EV(METALOG:... commands scheduled in the same minute would cause both to fail with LOGICAL ASSERTION errors.
Using EXTRAENTRY (or LASTEVAL) in a METALOG ODTS would fail with a LOGICAL ASSERTION error. Lasteval will now process the last METALOG entry scanned. This will be the last entry seen by the SITU not necessarily the most recent processed by the ODTS
If an ODTS which preformed a TT("DO...) was redefined while it was running, a read schedule error could occur.
TT FLEX LC CLOSE may now be used to close the Flex Log.
For a PD context do or eval with no Flex options, the scan stops after 255 files. This is now logged as PD LIMIT reached.
If the first level of a non usercoded container was longer than 17 charcters, Supervisor would truncate the level and PDT would not find the container.
When using the TERM USER command to switch usercodes on a Supervisor window, passwords will no longer be upcased.
If a Fault in SetMeUp of a Custom Context was trapped by a Try Exception, a STRING PROTECT occurred at 23239000 in SMErr because the Error Message was not in the correct format.
In rare cases it was possible to receive a duplicate eoj notice for a job started using the WFL funtion. If this happend it could cause a subsequent string protect failure. A warning will now be logged and the duplicate ignored.
Supports the new Opal function NAMEID.
Corrects a problem that when SO MONITORRING was OFF logging to the Supervisor log for slots starting or finishing was disabled.
If stopping an active when locked by a Usercode it was easy to have an extra colon in the command. Espec Ex FOR MYUSER/<pw> :WHEN MYSITU DO This would give no obvious error but would treat :WHEN SIDU DO as if is was valid WFL syntax which would fail with a sytax error. In this situation the colon will now be ignored.
Version 620.01 left a bug which could cause Supervisor to fail when updating the use time of a Logcontext ODTS used in a CALL DO.
Frequent Call DO statements for one ODTS could occasionally cause a spurious schedule read error.
Accessing FI attributes via a .MX method in a loop with a wait statement could cause an invalid index.
A General LOG ODTS may now CallDO an odts of any other log context, as long as the LogMajor and LogMinor attributes are valid for the new context.
A new system attribute LOGCONTEXT is available to identify contexts matching particular logmajor and logminor values. Ex
LOGCONTEXT(1,2) or LOGCONTEXT (1,4) would both return LOGEOJ.
If a call do is executed with the wrong major and minor types, it will be terminated with an error: "Invalid log record for this Call DO"
In rare circumstances Supervisor could hang with a spurious schedule validation error. This would happen if an ODTS, which waited for any reason, was redefined while it was waiting. The attribute Term(LogonStation), if called from an ODTS run via Externalcommand, will now return the mix number of the program which called externalcommand.
An Eval of a PD context situ requires a parameter of a Title or Directory If none was provided, an error was displayed but a slot was left in use in a queued state.
Additional text may now be passed with the trigger command.
If there is a trigger which does a DO of a message ODTS:
AF TRIGGER LESH TT DO TRIGGER_PARAM
Then TRIGGER LESH 123456789
will do TRIGGER_PARAM with the TEXT 123456789
The online help for SO MONITORING has been improved.
Version 610.03 Incorrectly used the Supervisor usercode instead of the ODTS usercode for Coms functions.
In some cases the COMS function could produce non fatal security violations, depending on Coms secuity options. The Coms function will now run under the usercode of the calling ODTS. This allows any ODTS hitting the problem to be run USING TT FOR <user>/<password> to avoid the problem. A descriptions of the MON log category has been added to HELP LOG.
When an ODTS faulted while executing an Input statement it was hard to determine exactly what the problem was. More information is now logged to help determine the problem.
When the maximum number of Supervisor slots has been exceeded it can be difficult, after the fact, to determine what caused the problem. Now a slight variant of the EV ? response is logged when this occurs. It will only be logged the first time the error happens unless the waiting entry warning of the error has been AXed.
MYSELF(COUNTRY) Returns the country identifier associated with the Supervisor task, which is normally the same as SYSOPS COUNTRY.
An Invalid Index fault occurred in GetStringAttValue at 16819000 when more than 96 attributes were referenced within the same Custom Context ODTS.
If a when slot had been started For a usercode and an attempt was made to stop it without specifying a prefix, the error mesage was not very helpful. Instead of reporting that the slot was not active, a message indicating that the slot is running under a usercode is returned.
Input from Externalcommand occasionally fails with a "WHEN CANCELLED" error. This change logs Externalcommand input and adds an extra debug display when the error happens.
When a Custom Context is linked, a dependent asynchronous task is initiated to perform the LINKLIBRARY, to avoid hanging SUPERVISOR. If the LINKLIBRARY is not completed within 1 second, the task is DSED. To allow that wait timeout to be modified, the syntax for invoking a Custom Context has been enhanced. The syntax currently allows a "... ,<eval limit>]" after the library specification. The new syntax is "... ,<modifier list>]", which includes that syntax.
<modifier list> ::=<modifier> | <modifier list> , <modifier>
<modifier> ::= <eval limit> | <wait limit>
<eval limit> ::= <integer> | MAXEVAL = <integer>
<wait limit> ::= MAXWAIT = <integer>
A call DO from a Custom context would sometimes fail. The was most likely if a TT("DO ... had been done.
Update for MCP 60 Some preparation for 2035 changes to time(6) format
Dynamic variable errors are now reported as DYNAMIC VARIABLES instead of 'FUNCTION VARIABLES'. A DYNAMIC VARIABLE longer than 17 characters will now produce a slot dump.
On mcp59 the formatting of messages returned to Supervisor from the MSG command changed. This meant that if TT TERM TRUNCATE was TRUE , a message with one word followed by a long string of characters with no spaces, would be truncated after the first word.
A SLOT command for a slot which had never been used would cause Supervisor to fault with an 'illegal stackswap' error.
Now an error of ODT SEQUENCE NOT RUNNING will be returned.
If the AF trigger command was used to schedule a START command, the job was not correctely checked for Syntax. Valid jobs could be flagged as having syntax errors and jobs with syntax errors allowd. Both problems have been corrected
In most cases passwords are suppressed in the Supervisor Log. An exception, which is now fixed, was for commands entered from a Supervisor window with an ODT prefix.
Ex. ODT USER=USER/PASSWORD;COPY .....
The inuse flag for an ODTS (as seen as a * in a DEF ? ...= response) was left on for an ODTS Called from another ODTS. It is now only on for a Called ODTS which is active and not cached.
Protects against a possible string protect error when using a .PD method on a file with a large number of rows.
Logging of the TERM + command would show a corruped prefix and could fault with an invalid index.
The log entries of type Mon (Monitor) could have the first 16 characters deleted. This would happen for ODT statements where the parent ODTS was not running from a Usercode.
A WHEN context WHEN slot could fault if too many concurrent WFL jobs were started from an ODTS.
An eval of a PD context situation which required Flex support, when no Flex key was present would correctly return the error FLEX REQUIRED, but would leave an entry in the wheN slots, marked QUEUED. Ex
EV (PD:SEGMENTS>1000) DISP (TITLE,,SEGMENTS) (BOB)= on DEV:FL
The when Slot is now correctly cleared out in this situation. In some cases an attempt to stop the slot could cause Supervisor to fault with an 'illegal stackswap' error. The only way to clear such a 'Queued' slot is to quit and restart Supervisor.
A particularly long Supervisor Log entry could cause a string protect error. The string passed to the WFL function could cause a string protect error for some lengths.
Version 580.10 introduced a bug where a Log command of more than 252 characters would cause an invalid index. Spurious log commands may now be entered with impunity
Version 560.15 introduced a bug which prevented the CONTEXT attribute from returning consistent values.
A DO,DISP or EVAL of a PD context Opal which used Flex options could fail with an invalid index in Flex. This would happen if the total number of such calls since Supervisor Started was > 32767.
Version 580.16 contained some code which wrote unnecessary messages to the Supervisor log file.
Previously a command prefixed with a 'FOR Clause' was logged twice.
Ex 11:08:26 Odt:WIN(22)FOR BOB TT DO BOB 11:08:26 Odt:WIN(22)FOR BOB TT DO BOB
This is no longer the case.
It is now possible to delete an entry in todays schedule without specifying and workday or holiday qualifiers.
Ex. AF -1000 START WFL Instead of AF - 1000 TODAY IF WORKDAY START WFL
This change support the Opal patch which corrects the fault.
Version 580.01 of Opal introduced a bug which would cause Supervisor to fault if the USERDATA(RU) attribute was used. This change support the Opal patch which corrects the fault.
Previously messages reporting opals in use during a rebuild were written to the system log. Now, if the Supervisor logging option (SO + 47) is set, they are written to the Supervisor log with a category of ENT.
If SO 47 is not set, logging is still done to the System log. Also fixed a bug introduced in 580.05 which suppressed some rebuild messages. They were displayed as messages but not written to the screen.
The after context attribute, nextactivityday, now returns the correct value for after entries scheduled on a specific day of the month.
Ex
AF 2300 ON 5th Day .............................
If a call on the DBS function was made on a database which was just starting the call might fail with an 'UNABLE TO FIND DMSUPPORT' error. The function will now try three times to link to DMSUPPORT. Any failures will be logged with a category of Dbs.
Ex. 09:18:29 Dbs:ERROR 1:UNABLE TO FIND DMSUPPORT:DBS #3388
The number following ERROR is the count of the tries.
If the user reported in the TT USE command for 'USER for TAPELIB' did not exist then the DBS function would fail, generating a Security violation. This has been corrected.
The Copy generated by the TT SAVE USERDATA or TT RELOAD USERDATA would fail if the Supervisor usercode did not have Secadmin privilege. Supervisor now checks this and does not allow the command if the secadmin privilege is not set.
The help for TT SAVE and TT RELOAD has been brought up to date.
If the response to a LOG command is truncated, due to the record limit, the record limit is now reported along with the date and time of the last record scanned.
A new 'time spec' option MORE has been added which allows a new log command to continue from where the previous one stopped.
Ex.
LOG MSG + will stop after 500 entries have been found. LOG MSG MORE will continue from the minute where the previous command stopped.
This change corrects a bug introduced in Version 570.11. The check to ensure AF entries did not go into past times, only worked when there was already something scheduled for that time.
If the TT TL command is used and the log files should be moved (DL LOGS Neq Supervisor's Family for Logs) the Supervisor usedcode must have SECADMIN privilege to be able to copy the Secuitylog. If this is not the case then the copy will abort with a security violation.
Although it would be possible for Supervisor to give the Usercode Secadmin privilege, it was decided that this was best left in control of a human secadmin.
Supervisor will now return an error on a TT TL command and TT USE Family command if it would mean moving log files when the Supervisor usercode does not have Secadmin privilege.
Ex Usercode SUPERVISOR must have SECADMIN privilege when Logs are to be moved
Also fixes a bug introduced in version 54.021 which prevented and OBJECTS call with a limit parameter from truncating the result.
Ex OBJECTS(PRINTS:TRUE,1) would return all print request numbers not just the first one.
Version 560.05 introduced a bug which would occur in quite rare situations.
If an ExternalCommand of TT FOR USER1 DO ODTS1 was entered and ODTS1 included a command of ODT("TT FOR USER2 DO ODTS2") then if USER1 was not the ODT security user an 'invalid user USER2' error would occur. If USER1 was privileged and User2 was not privlieged this should have been allowed. It is again allowed. The problem could be detoured by changing the ODT("TT FOR USER2.. to TT("FOR USER2 DO ...
If the number of usable lines on a Supervisor window was changed after the first AA, A, or PER command was entered then no continuation screen would be offered for subsequent responses to these commands. The usable lines are determined by TERM LINES - TERM FIRST. Any other Supervisor window with a differnt number of usable lines than on the original window at the time of the first command would have the same problem.
Ex. On a Window with TERM FIRST 2 and LINEs 47 Enter an AA command (it will have continuation pages) TERM FIRST 3 A subsequent AA command will have no continuation.
An AA command on a Window where TERM LINES-TERM FIRST is not 45 will have no continuation
If a DO with a very long parameter was running at the time a SAVE AS was executed, DECOMPILE/SCHEDULE would fault. This change also corrects a bug where the save parameter would have been incorrectly upcased.
If a dynamic variable key was > 17 characters for a non .perm variable the internal variable tables would be corrupted and unexpected values could be returned. In particular if a long name was used for a global variable then a SHOW GLOBAL command would fault. This change will kill any ODTS using a dynamic variable > 17 chars with the error: Function variable key cannot be > 17 chars in ODTSEQUENCE. This restriction does not apply to .perm variables.
Ex. DO($S:="123456789012345678";$$S:="TEST") would get the new error DO($S:="123456789012345678";$$S.Perm:="TEST") would be fine
Version 560.18 introduced a bug in the Ping function. Any ODTS which executed a ping would not finish. It would stay in the state Wait(Switch). This change corrects the problem.
Fixes a bug which caused the first log in the *Sumlog directory to be processed last when running LOG based eval. If any of the *Sumlogs before it were outside the range specified in the eval then it was never processed.
If USE SILO was set to DSI+UNISYS and a SEND TM QUIT was done, it was possible that Supervisor/Tapelibupdater would quit. This could cause problems on Slave systems (OPALTAPELIB:NO MATCHING PORT TLPORT [1]). A TT DELINK DSILIB could cause the same problem. Supervisor/Tapelibupdater will no longer quit in those situations.
The Help Attributes command when passed a pattern, lists the attributes in two columns. Depending on the length of the longest attribute name to be displayed and the width of the screen, some data could be truncated. Now if either an entry in the first column or the second column would be truncated, only the entry in the first column is show.
Previously PRINT ATTRIBUTES would indent each entry by the length of the longest attribute name. Now only entries with a name longer than 15 characters are indented more than 15 characters and then only by one character more than the attribute length.
This fixes a bug where FP could fail with an invalid index. The problem would only happen if the number of units scanned by FP was 1024 + a multiple of 100. Ex. 1124,1224,1324 etc
When converting schedules older than version 19 to later versions it was possible that some corruption of AFter entries could occur. �This would cause Supervisor to fault when interrogating these entries or when using the SAVE SCHDULE AS command. This version checks for such corruption and corrects it.
This change fixes a problem when the sumlog index (the last level of old sumlog titles) wrapped from 65535 to 1.
Supervisor would not 'see' sumlogs with an index higher than the current log. �This caused problem in the SHOW LOGS command and in an EVAL which scanned the log with a time range in one of those logs.
It also protects against an MCP bug which could cause a System DUMP on multi processor systems when AN ODTS executed a WFL("CHANGE or WFL("REMOVE statement and did not use the ON JOBMESSAGE DO; statement to wait for the remove to finish. �The dump would happen when the ODTS finished at exactly the same time as the Remove or Change finished. This is a very rare occurrence.
A convenient way to skip a scheduled entry on a specific day is to use the AF LOAD syntax to schedule a particular entry to be skipped.
Ex. If there is a scheduled entry TT DO TEST set to run a 0700 every Friday then we could skip Friday August 8 by entering: AF LOAD ON DATE 8/8/14 TT AF - 0700 TT DO TEST.
As soon as the schedule is loaded on Friday Aug 8 the 'TODAY' entry for 0700 TT DO TEST would be deleted.
This mechanism is used the the Advanced Scheduling Opals to skip a specific scheduled entry.
Unfortunately the mechanism did not work for a time of 0000, it now does.
The Supervisor DBSHANDLER task is used to handle requests for DMSII attributes. On occasion the DMS call will hang and the only option to get things going again is to DE the DBSHANLER. When the DS of DBSHANDLER is done by Supervisor for a suspected hang, a program dump is no longer taken.
When a tape was SNed on an FMTLT05 drive the density set in the notice passed to the Tape Library Database was set to 0. This caused such tapes to appear as BPI800 tapes in the Database.
Version 570.06 introduced an error when the TL_DEBUG config was set. Any TM command returning a response longer than about 225 characters would cause a seg array error.
Detours a problem where DSI COMMANDER unexpectedly returns an error when the command seems to complete normally. We now return the expected response but log that an error was returned.
Fixed a bug where after a restart TM did not report that silo was set.
Related Tapemanager changes. Corrected a bug where output tapes with a DSIPOOL were not passed to DDI to be mounted. If an INSILO tape is requested then SCNONE is assigned as a serial number. Requests to load this tape are no longer passed to Unisys or DSI. Added new debug code controlled by TL_DEBUG config variable.
Detours a problem when calling DSI Commander entry point where TM CONFIG HOST messages seemed to be ignored.
Added a Config option to allow an alternative to DSI CSCLIB to be called
TT ($TL_DSISUPPORT.Config:="DSISUPPORT")
to change from CSCLIB to DSISUPPORTTT ($TL_DSISUPPORT.Config:=Empty)
To return to CSCLIB
Added new debug capabilities controlled by Config variable TL_DEBUG. Turn on debug with TT / ($TL_DEBUG.CONFIG:="TRUE") Turn off debug with TT / ($TL_DEBUG.CONFIG:=Empty) Test debug with TT / ('"',$TL_DEBUG.CONFIG,'"')
An empty response means OFFIf TL_DEBUG is set:
Extra information is logged when calling DSI entry point COMMANDER
Related Tapemanager changes:
Tapemanager will now pass input tape requests to DSI when appropriate. If a tape mount is to be handled by DSI, a flag is now set to prevent TapeServer from handling the same request.
When TAPEMANAGER receive a SEND TM QUIT when DSI libraries are active Supervisor will delink from DSI Libraries.
New TM DSIQUIT and TM DSISTART commands allow stopping and starting DSI without quitting TapeManager. Useful in a mixed DSI,UNISYS environment. See HELP TM for details.
Adds some features to the TM command. This command is only valid when METALOGIC/TAPEMANAGER is SLed as TAPEMANAGER. See HELP TM for details.
Fixes a bug in the VDBS context, where on a multi processor system with many active databases the DBSHANDLER task was sometimes incorrectly identified as being frozen and was subsequently DSed.
Fixes an infrequent problem where the change of day at midnight could be missed if Supervisor was very busy with running Opal code in the minutes before and after midnight.
Also adds the missing help to the SO NOTTLOGGING option.
A new Version of Metalogic/Tapemanager has been released at this time. It is now possible to have Metalogic/Tapemanager call the entrypoint Check_Tape_Assignment in a local copy of Tapemanager before calling the Metalogic Check_Tape_Assignment. This is controlled by a config variable TL_LocalTM. If this variable is set to the SLed name of a library then we will call the entrypoint in that library first. The variable can be easily set from Supervisor.
Ex TT / ($TL_LOCALTM.Config:="MYMANAGER")
The Getscratch call in Tapemanager may now be suppressed for selected scratchpools even if TT USE GETSCRATCH is set. This is controlled by the config variable TL_EXPOOLS which should be set to a list of pools to be excluded from Getscratch calls. Ex TT / ($TL_EXPOOLS.COnfig:="NONSILO,"AUTOLOADER")
Corrects a bug introduced by Version 541.55. It prevented the 'ON nth' variant of the AFTER command from working correctly. Ex AF 1000 ON 5th DAY ..... would appear in the schedule as expected but would not run.
This change also relaxes the restriction that a colon is not allowed in a time in the After command.
AF 10:20 ....... is now valid. It has a potential problem in very unlikely cases.
If an attempt is made to schedule the command 59OK at a time before 00:12 then the syntax AF 12:59OK will schedule the command OK at 12:59 For the desired command to work enter 0012:59OK or 00:12:59 OK
A WHEN (LOG:TRUE) DO (SHOW(LOGTEXT)) [20] which failed with the message 'Major 255 is out of range 0..38' should now work.
Ex.
AF 0900 on 1st workday: TT DO TEST
AF ? ON DATE 2/12/13 (or 12/2/13 with US dates)
Would not show the scheduled entry.
Only scheduled entries which fell on the 1st of any month would be correctly reported.
A new option , GetScratch, has been added to the USE command.
+- GETSCRATCH -+- NONE -----+--+--------+------+ | |- REPORTED -| +- SILO -+ | | |- CREATED --| | | +- USED -----+ |HELP USE GETSCRATCH
---------- SUPERVISOR HELP ----------USE GETSCRATCH variant of the USE Command:
---- USE --- GETSCRATCH -+- NONE -----+----------+----------| |- REPORTED -+-- SILO --+ |- CREATED --| +- USED -----+
This variant is only valid on Trim systems and will only have an effect on Systems using the Metalogic Tapemanager. If set to a value other that NONE then TAPEMANAGER will attempt to assign scratch tapes to tasks requesting output tapes. If SILO is set then only tapes in the tape silo will be assigned. If no tapes are available in the silo the serial 'SCNONE' will be assigned. If SILO is not specified then if a Silo is available and contains scratchable tapes then a tape will be assigned from the silo, otherwise any scratchable tape will be assigned. The main parameter determines how scratchable tapes are selected. REPORTED means select the tape with the oldest SendDate. CREATED means select the tape with the oldest creation date. USED means select the tape with the lowest use count.
Fixed a problem where messages could be incorrectly queued for an ODTS which was waiting for the result of a WFL function call. The ODTS would run as normal but an EV ? could eventually report queued messages.
Minor changes to correct previous patch not being saved before release.
This change improves the WFL function and related attributes.
If an optional ID is passed to the WFL function it it may now be the same ID as used with a previous WFL call as long as the previous Job has terminated.
There are four WHEN context attributes related to the WFL function.
WFLFREE (WHEN)
Returns INTEGER
Semantics : Returns the number of slots available to start jobs via
the WFL function.
WFLIDS (WHEN)
Returns STRING
Semantics : Returns an identity list, delimited by comma, of all
jobs with a WFL identity. This is a parallel list that
matches WFLS. Job entries without an identity will be
shown as '*'.
WFLS (WHEN)
Returns STRING
Semantics : Returns a list of all active jobs or jobs started with
an Id, as a jobnumber list, invoked by the WFL function from
this slot. Inactive Jobs return -ve Job Numbers. The list
returned is parallel to the list from WFLIDs
WFLSACTIVE (WHEN)
Returns INTEGER
Semantics : Returns the number of active jobs processed by this
slot using the WFL function.
Four matching options have been added to the MYSELF/WHENID attribute.
MySelf(WFLS)
String - A list of all active jobs or jobs started with an Id, as a
jobnumber list, invoked by the WFL function from this slot.
Inactive Jobs return -ve Job Numbers. The list returned is
parallel to the list from WFLIDs.
Myself(WFLSACTIVE)
Integer - The number of active jobs or jobs with an id
processed by this slot using the WFL function.
Myself(WFLIDS)
String - an identity list, delimited by comma,of all jobs
with a WFL identity. This is a parallel list that matches WFLS.
Job entries without an identity will be shown as '*'
Myself(WFLFREE)
Integer - The number of slots avilable to start jobs via
the WFL function.
A new system attribute has been added:
WFLERRORTEXT (SYSTEM)
Returns STRING
Parameters : 1. INTEGER
Semantics : The parameter is the value returned by the WFL
function. Returns the error text for that value. Returns
the empty string if there is no error (Value Geq 0).
This change reinstates the SAVE USERDATA command broken by version 550.23.
Previously, an attempt to define an OPAL Log Program would fail if the Major or Minor Type were not valid. This protected both WHENs and EVALs, but meant that an EVAL of a Log from a newer MCP might not be accessible. Now, an OPAL Log Program may define any Major and Minor Type, and the check for validity is only done when attempting to initiate a WHEN. An EVAL can select any Log Record Type which exists in the Log.
Allows monitoring of DBACCESS Log Entries (Major type 1 Minor type 35).
See HELP ATT =:DBACCESS for details of available attributes
The new Define attribute OpalId returns a identifier which can be used to link to this define.
This change corrects an invalid index fault which could occur if an FP command was entered on a system with more than 1023 packs.
Add USECOPYWRITE Option as SO(45). This option can only be set when there is a valid CopyWrite Key. When set, SUPERVISOR will use CopyWrite to access files that are at a Remote Host, instead of BNA.
Add the ReleaseID from the PRODUCT attribute of the codefile to the WS page.
The totals in the '>' column for multiple families and all packs showed the maximum available space value. Conversely when using the :Max option the max available space summary colums showed totals.
A SEG ARRAY error could occur with an EXTERNALCOMMAND because INPUTMESSAGE thought it had found a USERCODE in the message, but it should not have been looking for one, since the USERCODE was stored in the TERM tables by EXTERNALCOMMAND. What it thought was a USERCODE was not in fact a USERCODE but some left over rubbish, which made the formatting procedure fault.
Accessing a Tape Library attribute such as TLVOLUMEID(SERIALNO) on a SLAVE system could cause an Invalid Index fault if SERIALNO was not valid, for example the Tape was unlabelled or rewinding.
If a Connection Library Procedure faulted, the attempt to delink the Library in the ANYFAULT block hung SUPERVISOR. DelinkLibrary is now called with DONTWAIT set for an SMTP DO.
If an SMTP DO was done with no parameter, it faulted and left the slot hung.
It was possible for Supervisor to fail on start up if too many Command Opals had been defined.
First release of the SMTP context.
The SMTP Context may be used to process RFC822 messages from several sources.
An SMTP WHEN processes RFC822 messages received by the SMTP Server from the network using the SMTP Protocol.
An SMTP DO processes RFC822 messages received from the POP Server using the POP3 Protocol, or by scanning a directory on disk for files with a MIMETYPE (FORMID) of "message/rfc822".
SMTP Server - WHEN <smtp situ> DO <smtp odts>
The SMTP Server is implemented by SL SMTP = *METALOGIC/SMTP. It is a DSS and it is initiated by the MCP when a connection is made on Port 25. It may be installed by RUN *METALOGIC/SMTP.
When an SMTP connection is opened, the SMTP Server attempts to link to a SUPERVISOR SMTP Context WHEN. If there are no SMTP WHENs running, the linkage fails, and the incoming mail is rejected.
If there is an SMTP WHEN running, the SMTP Server receives the incoming mail, in the (QUARANTINE) area, but before finally accepting it, sends an SMTP Object to the WHEN. The SMTP Object contains the attributes of the RFC822 message (HELP ATT = : SMTP), which includes the Envelope, the Headers and a reference to the Mail Body.
If the SMTP OPAL code decides to accept the mail, it is responsible for delivering it to the recipients, or forwarding it using MAIL if relaying, and then issuing a RESPOND(SMTP,"OK") command.
The SMTP OPAL is also responsible for delivering a failure notification to any recipients for whom mail was not able to be delivered.
The SMTP OPAL can reject the Mail using a RESPOND(SMTP,"ERR"), or RESPOND(SMTP,"<statusCode> <status message>"). In this case, no delivery failure notification is needed.
POP Client - DO <smtp odts> [<limits>] pop://<popserver>
The POP Client is implemented by SL POPCLIENT = *METALOGIC/POPCLIENT.
When a DO is done, the POP Client uses the pop: URL to open a connection to a POP Server.
An RFC822 message retrieved from the POP Server is sent to the DO as an SMTP Object, as described above. The <limits> may be used to request that the messages be deleted from the POP Server (DELETE), and to limit the number of lines of each message retrieved (TOP=<lines>).
POP Directory - DO <smtp odts> <flex specification>
The POP Client also provides the capability to search for RFC822 messages on disk. The <flex specification> is provided to FLEX in the same way as a SUPERVISOR PD context. Each RFC822 message selected is returned to the DO as an SMTP Object.
RFC822 Message
An RFC822 message may be thought of as a type of file container. It contains the mail headers (*"headers.txt") and the mail body (*"body.txt"), which may be structured with additional attached files according to MIME.
MAILIOH
Access to an RFC822 message is provided by the CopyWrite MAIL I/O Handler, SL MAILIOH = *METALOGIC/COPYWRITE/MAILIOH. This library is used by CopyWrite, but may also be used by programs or OPALs using normal File I/O. File "#0." is a file which contains the Directory as for other IOHs.
FLEX
The RFC822 message may be explored using the FILES command of *OBJECT/FLEX, or using a SUPERVISOR PD context. There are always at least two files, one called *"headers.txt" and the other *"body.txt", and there may be other files which represent the MIME attachments. For Example:
U Flex Files (*)= IN Mail/20120818/230904/4726904811 on Nucleus *"headers.txt" : DATA >3< *"body.txt" : DATA >1< #Found 2 files [from 2 files]
File Attributes
An RFC822 message is contained within a file, and these MCP file attributes are used to store information which may be useful when searching.
PRODUCT - Contains the From: NOTE - Contains the Subject: RELEASEID - Contains a UUID which uniquely identifies the message. This is used by POP Clients to detect duplicate messages. USERINFO - Set to 0 by SMTP. It is set to a TIME(6) TimeStamp when the file has been retrieved by a POP Client, to indicate that it is no longer a candidate for download by the POP Server.
CopyWrite
Files may be copied out of an RFC822 message using the LIBRARY/MAINTENANCE extensions provided by CopyWrite. For Example:
WFL Task T;T(File Mail( Title=Mail/20120818/230904/4726904811 on NUCLEUS)); COPY *"headers.txt" As H From Mail(CD,HostName=Local,LockedFile)[T] #4850 <1> *"headers.txt" copied as (NFT)H to NUCLEUS
OBI
The RFC822 messages can be explored using OBI, providing Browser access to the headers and attached files.
POP Server
The POP Server is implemented by SL POPSERVER = *METALOGIC/POPSERVER. It is a DSS and it is initiated by the MCP when a connection is made on Port 110. It may be installed by RUN *METALOGIC/POPSERVER.
The POPSERVER is independent from SUPERVISOR.
A client logs onto the POP Server using their MCP UserCode/Password. The POP Server scans their MAIL/= directory for any files which have not been downloaded (FILES MAIL/= ON <family> WHERE USERINFO = 0) and builds a list of the files in the mail drop. The POP Client may then retrieve the RFC822 messages or information about them and it may also delete them using the POP3 protocol.
File Naming Conventions
RFC822 messages received from the SMTP Server are stored under the MAIL/= directory.
RFC822 messages retrieved by an OPAL POP Client are stored under the POP/= directory, unless only a sample was retrieved using the TOP=<lines> limit, in which case they are stored under the TOP/= directory.
SMTP Server MAGUS Configuration Options
SMTP_USERCODE
The SMTP_USERCODE is the name of the usercode which is where incoming mail is quarantined before being rejected or delivered to the recipients.
If not specified the default is QUARANTINE.
The FAMILY statement of the usercode defines where the files will be stored. If the usercode is not defined, the files are stored on the same family as the SL SMTP.
SMTP_AUTH
If SMTP_AUTH is set to "NONE", then no authentication will be required. This means that mail from any source will be received, and passed to the SMTP OPAL context, which can decide what to do with it.
SMTP_GATEKEEPER
If SMTP_GATEKEEPER is set to "ON", then a USERDATA RU check will be performed before a MAIL FROM command is accepted. If SMTP_AUTH = NONE, then the SMTP_USERCODE is used as the Remote UserName, otherwise the authenticated UserName is used. For Example: + RU QUARANTINE OF *ANYHOST
Security
This first release is intended only for use on a private network since only AUTH LOGIN,PLAIN are fully implemented.
AUTH CRAM-MD5 is implemented but no secure method of keeping the shared secret has been implemented.
The intention is for a later release to provide a secure connection using SSL/TLS.
Operations
- The default Port for the SMTP Server is 25, but this may be changed by modifying the TARGET attribute of METALOGIC/SMTP to a value > 1024.
- The default Port for the POP Server is 110, but this may be changed by modifying the TARGET attribute of METALOGIC/POPSERVER to a value > 1024.
- The POPSERVER, POPCLIENT and SMTP processes will terminate if sent a HI 99 and there are no open connections.
SUPERVISOR DEBUG
TT DEBUG + 38 will set SMTP debugging which is written into the SUPERVISOR Log.
Mail Clients
These Mail Clients have been used in testing,
ThunderBird (12.0) Mail (5.2 OS X 10.7.4) OutLook Express 6 (Windows 2000)
If an enter file contained entries with a FOR prefix and a selective enter was done from that file then all of the FOR prefixed entries would be processed, even if they did not match the selection.
Examples of selective enters: ENTER DEF BOB= FROM .... ENTER ODTS BOB_TEST FROM .....
This change also fixes a bug where if a SAVE SCHEDULE AS command was entered from a TT function then only SYSTEM context Opals would be saved.
EX. In an ODTS
TT("SAVE SCHEDULE AS *SYMBOL/SCHEDULE ON SAVES") would not save any Opals which were not of type system.
Add TK INVENTORY command for sites using Unisys tape silos.
The TK <serialno> Eject command only queues a volume to be ejected.
A new command TK EJECTNOW has been added to tell the ACSLS to process the eject queue.
If Supervisor was started with a config setting for the Schedule Family pointing to a non resident Family it would hang. It will now warn that the family is not available and try to use the DL Jobs family.
The USE FAMILY <fam> for SCHEDULE command fails if *SCHEDULE is already on the new Family. It now gives a clearer error message.
Help for USE FAMILY has been updated to warn that the command will fail if *SCHEDULE is resident on the new Family.
The after command now accepts the IF WOrkday,IF Holiday,EXCEPT HOLIDAY phrases for TODAY. EX.
AF 0900 TODAY IF WORKDAY:..... AF - 0900 TODAY IF WORKDAY: .....
Supervisor Logging is now turned on during Initalisation until the Supervisor Options are loaded from the schedule, where it will turn off if SO LOGGING is not set.
This change fixes a bug where WINDOW_HANDLER would fault on messages send to a Supervisor window which were exact multiples of 6 characters long.
This change makes some improvements to the DBS function. DBS will now link to databases with non standard DMSUPPORT titles. If a DBS call has not responded within 5 seconds it is assumed to be blocked and will return an error. This 5 second time limit may be altered by setting a config variable SUP_DBSTIMEOUT. This may be set using an inline Opal. Ex. /($SUP_DBSTIMEOUT.CONFIG:="10") This change also fixes a problem where Supervisor would hang on: NO FILE *SYSTEM/BACKUPFILELIST if DLBACK was changed without a Halt/Load.
The RSTCONTEXT is a SUPERVISOR Custom Context for processing the MCP RESIZE TRACE Diagnostic Information.
When the ODT Command DO + RST is entered, the MCP initializes its Resize Trace Tables. When a program does a RESIZE, diagnostic information is stored in the tables. The RSTCONTEXT provides access to this information.
The DO - RST ODT Command disables the RESIZE Trace and deallocates the Resize Trace Tables.
An RSTCONTEXT ODTS is a Custom Context ODTS.
Define + ODTS RST(CUSTOM):
Display(ToString);
An RSTCONTEXT ODTS is initiated as a DO or an EVAL, and the Object returned is an entry from the RESIZE Trace Table.
DO <odts>[RST ( {path} ) IN SL RSTCONTEXT] {pattern}
The optional <path> may be used to specify the family substitution which will be used to find any codefile which does not have a family name. For Example, DO <odts>[RST(DISK = NUCLEUS ONLY) IN SL ...
The optional <pattern> may be used to filter the CodeFile of the caller of RESIZE. It behaves the same way as the EQW (WildCard Equals) Operator in OPAL.
These attributes are defined for the RSTCONTEXT:
ATTLIST
Returns a list of the Attributes in the RST Context.
CALLERCODE
Returns the CodeFileName that contains the code of the caller of the function that did the RESIZE.
CALLERCODETS
Returns the CREATIONTIMESTAMP of the CALLERCODE file.
CALLERLINE
If available, it returns the LINEINFO for the CALLERRCW.
CALLERRCW
Returns the RCW to the caller of the function that did the RESIZE.
HELP
Returns Attribute Information for the RST Context.
RESIZECODE
Returns the CodeFileName that contains the code that called the RESIZE function.
RESIZECODETS
Returns the CREATIONTIMESTAMP of the RESIZECODE.
RESIZECOUNT
The count of the times that the RESIZE function was called from the same code sequence.
RESIZELINE
If available, it returns the LINEINFO for the RESIZERCW.
RESIZERCW
Returns the RCW to the call on the RESIZE function.
TOTALRESIZES
The total number of calls on RESIZE since the last Halt/Load.
TOSTRING
Returns a summary of the RESIZE information.
Note: The Resize Trace Tables do not contain the FAMILYNAME of
the CodeFiles associated with a RESIZE, so the <path> and <pattern> may be used to locate a specific codefile.
The VTContext is intended for use with the SUPERVISOR Remote File Scripting capability, which is implemented by the OPAL WFL function.
When a program writes to a Remote File, the message is interpreted by the TD830 Terminal Emulator and presented on the Screen. When Scripting, the Terminal Emulator function is provided by the VTContext.
A message sent to a Terminal through a Remote File is received within the SUPERVISOR JOB Context as a WFLOUT message. This message can be sent to the VTContext to be interpreted.
There are 2 Interfaces to the VTContext.
DO | EVAL <odts>[EDIT IN SL VTCONTEXT] '<td830 message>'
The EDIT interface interprets a message destined for a TD830 Terminal Emulator. The text and control codes are interpreted to create a Virtual Screen.
The <td830 message> must be enclosed in single quotes (') or double quotes ("), and may be preceded by a <string code>, either 7 for ASCII or 8 for EBCDIC.
When the VTCONTEXT has loaded the <td830 message> it sends Message Objects to the ODTS. The type of Message Object is given by the MSGTYPE attribute. %
These MSGTYPEs may be received.
"LOADED" - The <td830 message> was loaded and the Virtual Screen
and its attributes are available.
"STARTFORM" - Only sent if the <td830 message> contains a valid
formed screen and the ODTS was started by an EVAL.
"FIELD" - If a STARTFORM was received, it is followed by a FIELD
message for each field in the form. The index of the first field is 0.
"ENDFORM" - Indicates the end of FIELD messages.
"TRANSMIT" - This message indicates that an ESC ( (Transmit Page)
command was embedded in the <td830 message>. The MSGTEXT contains the text that would have been transmitted at that time.
"READSCRATCHPAD" - This message indicates that an ESC RTaaaann
(Read ScratchPad Memory) command was embedded in the <td830 message>. The MSGTEXT contains the scratchpad memory read from the configuration.
"WRITESTATUSLINE" - This message indicates that the <td830 message>
wrote to the Status Line, the text of which is in MSGTEXT. The STATUSLINE attribute can be read at any time to retrieve the current Statue Line text.
"VERSION" - This message indicates that an ESC sp V (Transmit Version)
command was found in the <td830 message>. The MSGTEXT contains the version information, so that it may be transmitted using the OPAL Transmit Function.
"ASTERISKS" - This message indicates that an ESC RC
(Transmit Asterisks) command was found. The MSGTEXT contains the uniquely crafted asterisks.
This is an example of a VTContext ODTS using the MSGTYPE.
Define + ODTSequence VTF_HELP(CUSTOM): % Called for each Field in the Instructions Form Case MsgType Of Begin "STARTFORM": $S:=FillIn("0","FILES"); Display(SaveAs("FLEXFILESHELP","20")); "FIELD": Display("[",FieldIndex,"] ",LocationOf(FieldStart),"..", LocationOf(FieldEnd)," (",FieldWidth,") ", FieldType,,",Text=",FieldText); "ENDFORM": $FormData:=FormData; Else:; End;
These attributes are defined for the EDIT Interface of the VTContext.
ATTLIST Returns a list of the Attributes in the EDIT Interface. COLUMNOF COLUMNOF(Index) returns the COLUMN (1..COLUMNS) of the character at Index. COLUMNS The number of Columns 1..COLUMNS in the Virtual Screen. COPY The COPY(START,END) copies the data beginning at the index given by START up to and including the index specified by END. CURSOR The index 0..PAGESIZE-1 of the Cursor. FIELDEND The index 0..PAGESIZE-1 of the last data character in the current or specified Field. FIELDINDEX The Index of the Field in the Form -1..FIELDS-1. FIELDS The number of Fields 0..FIELDS. FIELDSTART The index 0..PAGESIZE-1 of the last data character in the current or specified Field. FIELDTEXT The text in the current or specified Field. FIELDTYPE The type of the current or specified Field. LEFT - Left Justified Unprotected, RIGHT - Right Justified Unprotected, PROTECTED - Transmittable Protected FIELDWIDTH The width in characters of the current or specified Field. FILLIN FILLIN(FIELDINDEX,TEXT) fills in the specified field with the TEXT supplied. FIND The FIND(TARGET,START) Method searches the Virtual Screen, starting at the index given by START for the specified TARGET. It returns the Index 0..PAGESIZE-1 of the TARGET or -1 if Not Found. It searches for an exact match. FORM Returns TRUE if the Virtual Screen is in Forms Mode, otherwise EMPTY. FORMDATA Returns the Form data that would be sent to the Host were the Transmit Key pressed with the Cursor at the Home Position. HELP Returns Attribute Information for the VTContext. LOCATIONOF LOCATION(Index) returns the location of the character at Index as a Co-ordinate (ROW,COLUMN). MSGTEXT The Object Message types TRANSMIT,READSCRATCHPAD,WRITESTATUSLINE, VERSION and ASTERISKS have associated text, which is returned as EBCDIC. MSGTYPE The Type of Object Message is one of LOADED,STARTFORM,FIELD,ENDFORM,TRANSMIT,READSCRATCHPAD, WRITESTATUSLINE,VERSION,ASTERISKS. PAGES The number of Pages configured. PAGESIZE The page size (ROWS x COLUMNS) of the Virtual Screen. ROWOF ROWOF(Index) returns the ROW (1..ROWS) of the character at Index. ROWS The number of rows 1..ROWS in the Virtual Screen. SAVEAS SAVEAS(TITLE). The current page is formatted as HTML and saved in a file with the specified TITLE. If any error occurs, the function returns ERROR:<reason> otherwise EMPTY. SPCFY Location. SPCFY(INDEX) moves the Cursor to Index, returns the escape sequence for that location. The escape sequence is returned in EBCDIC. STATUSLINE STATUSLINE returns the text of the Status Line.
The 2nd VTContext Interface is BUILD.
DO <odts>[BUILD IN SL VTCONTEXT]
The BUILD interface may be used to create a Virtual Screen, using Text and TD830 Control Codes.
When the VTCONTEXT has loaded the <td830 message> it sends a LOADED object (MSGTYPE="LOADED").
These attributes are defined,
ATTLIST Returns a list of the Attributes in the BUILD Interface. BLINK BRIGHT CLEAREOL CLEAREOP Return Control Codes. COLUMNS The number of Columns 1..COLUMNS in the Virtual Screen. CR DELETE DELETELINE DOWN Return Control Codes. EDIT Take the TD830 formatted message in P1, translate it to ASCII and send it to the EDIT Interface. Return the Virtual Screen created in EBCDIC. ENDFIELD or EFIELD ENDHIGHLIGHT ENTERFORM ESC EXITFORM FF Return Control Codes. GOTO GOTO(ROW,COLUMN) returns the Control Codes for moving the Cursor to the specified location. HELP Returns Attribute Information for the VTContext. HOME HOMECLEAR INSERT INSERTLINE LEFT LF LEFTFIELD or LFIELD MOVELINEDOWN MOVELINEUP Return Control Codes. MSGTYPE The Type of Object Message is LOADED. PROTECTEDFIELD or PFIELD REVERSE RIGHTFIELD or RFIELD RIGHT ROLLDOWN ROLLUP SECURE UNDERLINE UP Return Control Codes. WRITE Returns the text provided in P1.
There is an example of using the EDIT Interface to script *OBJECT/FLEX in the file *SUPERVISOR/VTCONTEXT/EXAMPLE, which is available from Metalogic on request.
If Supervisor encountered a very big entry (>2100 words)in the Userdata file when evaluating a USER context it would fault with a string protect error. Big entries are usually the result of very long accesscode lists.
CONTROLLER allows multiple commands, separated by CR to be entered. This is disallowed for the TT function, so that a parameter for an ODTS that contains a CR is not truncated. The TT function is meant to be used for a single activity, with a result being returned in the function value.
The FILEHANDLE attribute was corrupted if a TT function was used within an ON JOBMESSAGE block and A was modified.
WFL Stations were incorrectly deleted from the Station Table when any Slot terminated.
Use the PrepareForDetach Station Detach Variant when the Station is being used by a Remote File.
If a big log record was being processed it was possible that Supervisor would get a recoverable String Protect error @79174500
Change to use new MetaLogHelp procedure.
A timing problem could cause the HTTP library to fail while linking to Supervisor. This problem has been corrected.
A Bounds Error occurred in SiloHandler because the calculation of the Tape Manager message size was incorrect, and the message ended on a word boundary, so there was no null terminator, the other condition for terminating the scan.
If a LicenseKey warning waiting entry is present at midnight it was possible in rare circumstances for supervisor to DS and restart.
CUSTOM Context removed the UserCode from SUPERVISOR instead of assuming the SUPERVISOR MyUserCode value.
If a CUSTOM Context failed linkage, the assumed UserCode was not removed from SUPERVISOR.
As well as supporting the new WHEN context attribute CONTEXT, this change also enhances the SITUCONTEXT attribute to also returns the sub context.
A Custom Context Slot executes code in the Custom Library, which should run under the Usercode of the Slot. When a Custom Context Slot is reactivated by WaitAndGo, the UserCode is Assumed by Supervisor, and when the Slot is swapped out, the UserCode is removed.
The POST(<slotno>,<text>) function may be used to post a message to a CUSTOM Context Slot.
The USE(SESSION) attribute would sometimes return the wrong value.
Two new WHEN context attribtes have been added. SITUATION gives the name of the situation with a prefix of the command used to invoke it. Ex EVAL MY_SITU. ACTIVITY give the name of the ODTS,COMMAND or DISPLAY with a prefix of the command used to invoke it. Ex DO MY_ODTS.
ODTSequences of type DEFINE now require a type before the name and wildcards are no longer allowed. EX DO MYDEF ODTS MY_ODT. In order to be able to accept input derived from the new attributes above DO MYDEF DO MY_ODT is also allowed. DO is a synonym for ODTS WHEN or EVAL are synonyms for situ. If the parameter passed refers to an Inline Opal then a skeleton entry is returned with only the TYPE,Name and Source attribues valid. Defines with long sources no longer return an empty source attribute.
A bug where stand alone evals would fail when the STRICTODT supervisor option was set has been corrected
TT DELINK HWERRORSUPPORT will now delink Supervisor from the SLed HWERRORSUPPORT library.
The Opal LOG statement will now not include originating SLOT(n) information in the the text of the log entry. To retain the original behaviour, ADD #("Slot(",Myself(slot),"):") to the beginning of the text to be logged.
If the family specified to be 'Used for Logs' was no the same as DLLog and was not available then a TL coming from the Schedule would loop repeatedly releasing logs. This problem has been corrected.
The same problem would have happened with SAVE SCHEDULE in the schedule if the 'Family for Saves' was not available.
The TM,TK,TP and MAIL commands are now logged in the Supervisor log.
If a string passed to the ODT statement or WFL function is intended to be treated as a WFL command it is always safest if it starts with "BEGIN JOB;" This tells the ODTS statement that this is a WFL Job. Without BEGIN JOB Supervisor has to guess if the command is for CONTROLLER or for a JOB.
If sent to controller the usercode is not passed. Controller recognises some commands as being WFL commands and adds a "BEGIN JOB;" to the front and passes the message to controlcard. The reserved words recognised by controller as of MCP 54.1 are: RESTORE,ADD,PASSWORD,SECURITY,STARTJOB,EXECUTE,COMPILE,PROCESS,DISPLAY, ARCHIVE,CATALOG,REMOVE,CHANGE,UNWRAP,ACCESS,VOLUME,MODIFY,BEGIN,RERUN, ABORT,PRINT,ALTER,MKDIR,CLASS,QUEUE,BIND,COPY,USER,END,PTD
Supervisor uses this same list to determine WFL commands.
This change corrects a small bug in Supervisor. When checking for WFL reserved words it expected the word to be terminated by a space so class =2 would have worked but not class=2.
The special syntax used to delete old 'ON DATE' entries from the schedule was broken by version 540.96. It now works again:
AF - 0-2359 ON DATE < <dd/mm/yy> @=
A new warning message has been added to report the number of entries skipped because they are locked under a usercode.
The HELP for the PRINT modifier has been improved.
The KEYSCONTEXT is a SUPERVISOR Custom Context which allows an OPAL script to process a KEYSFILE.
DEFINE + ODTS KEYS(CUSTOM):
If Expired="TRUE" then Show(Name,,ExpiryDate);
DO KEYS[KEYS IN SL KEYSCONTEXT] { <filetitle> }
If a <filetitle> is not provided, then *SYSTEM/KEYSFILE ON <hlfamily> is assumed.
Both EVAL and DO are supported for the Keys Context.
The KeysFile must have a FILEKIND of KEYSFILE.
The Object for the KEYSCONTEXT is a Key Record from a KEYSFILE.
The attributes defined include,
ALLOWREKEY,ALLOWRELICENSE,EXPIRED,EXPIRYDATE,HEXKEY,INSTALLTYPE, LICENSEID,NAME,PASSWORD,VERSION.
A Keys Item has been added to the Operating System Group in OBI. It can be used to produce a report on the SYSTEM/KEYSFILE.
The EXPLORE Action in a PD Report on a KEYSFILE produces a Keys Report using the selected Keys File.
This change extends the facility described in dnote 541.67. If the ODTS defined the the installation data String1 field is preceeded by () then the ODTS will run under the usercode of the window. Without a () prefix the ODTS run with no usercode.
If an ODTS is invoked via the Marc TTINTERFACE then any output is returned when the ODTS waits or ends. If the ODTS waits then no further output will be sent.
Ex. WAIT(.1);SHOW("Test");
if in an ODTS started via TTInterface would not return "TEST" to the MARC station.
This restriction has been relaxed slightly. If a wait is for time and the total time waited is less than 10 seconds then the output will not be sent until the end of the ODTS, any non timed wait or a timed wait which takes the total waited time above 10 seconds.
Ex. SHOW("ONE");WAIT(5);SHOW("TWO");WAIT(6);SHOW("THREE")
if in an ODTS started via TT Interface would return ONE TWO
This change fixes a bug introduced in Version 541.74 which stopped code protected by IF ExtraEntry from working on an Eval with a SORT clause.
The number of days in a date range specified in the eval specs of an eval of and AFTER context Situation was previously restricted to 40. This has been increased to 42 to allow scanning up to 6 weeks. Ex. EVAL (AFTER:TRUE) [@25/9/2011-5/11/2011] DO AF is now valid.
This change detours a bug in DSI's DSISUPPORT library which prevented the TM command from working.
It also corrects a bug which cased a program dump out of Supervisor/Windows if an ODT command longer than 255 characters (when multiple embedded spaces had been deleted) was entered.
If the SITU and ODTS/DISP specifications of a MX-based EVAL or WHEN were both in-line (i.e. not previously DEFINEd) then the MX context was not automatically assumed by the DISP or ODTS and had to be manually supplied. No other contexts were affected. This problem, introduced by SUPERVISOR 541.74, has been corrected.
Further, using the TITLE modifier with a LOG-based EVAL command to specify an individual SUMLOG did not always work correctly, causing SUPERVISOR to continue processing other SUMLOGs in the same directory, if they were present. This problem has also been fixed.
It is now possible to pass the name of an alternate CATALOG file to an EVAL context script using the same syntax as LOG EVALs:
EVAL (VL:TRUE) [TITLE=(TEST)SYSTEM/CAT210711 ON DEV] DO VL
In this case, SUPERVISOR will extract the Volume Library from the non-live CATALOG and process all volumes found. Further, if a FLEX STATISTICS file is available with the same directory as the alternate CATALOG then that STATISTICS file will be used. In the above case, the STATISTICS file would have to be named:
(TEST)SYSTEM/CAT210711/STATISTICS ON DEV
A new SUPERVISOR Option called COMPRESSDEFINE has been implemented. If this option is set (SO+COMPRESSDEFINE) then SUPERVISOR will use Metalogic's MZIP technology to compress Opal DEFINE sources as they are written into the SCHEDULE file. Although there is a CPU overhead associated with deflation (DEFINE +) and inflation (DEFINE ? and SAVE DEFINE), most DEFINE sources can compress to 20-25% of the original size or better for larger Opals.
Since the SO COMPRESSDEFINE setting applies to all DEFINE + or ENTER actions, it is possible to override the default action by using the SET or RESET COMPRESS directive with an individual DEFINE:
DEFINE + ODTSSEQUENCE TEST(MX) SET COMPRESS:
DEFINE + ODTSEQUENCE TEST2(PER) RESET COMPRESS:
Note that SUPERVISOR does not compress Opal sources that are less than 2 segments (360 chars) in length.
With the recent increase in the size of OPAL scripts that can be stored in the SCHEDULE from 255 to 2184 segments (see SUPERVISOR DNote 541.74) then even larger scripts can be stored if they are compressed with MZIP.
Previously, the combined size (source+generated code lengths) of an Opal program held in the SCHEDULE file could not exceed 255 30-word segments. Although this could be detoured by using ENTER REFERENCE or DEFINE FROM (both of which store the original source file title and not OPAL source), this meant that the original source file would always have to be present to recreate the DEFINE.
This 255-segment restriction has now been removed and combined Opal source+code now has a maximum value of 2184 segments, allowing very large Opal scripts to be stored (8x the previous limit). A SCHEDULE conversion to Version 22 will be performed on the site SCHEDULE file when this SUPERVISOR is installed.
The C74CONTEXT is a SUPERVISOR Custom Context which allows an OPAL script to process a COBOL74 Data Definition.
DEFINE + ODTS C74(CUSTOM):
If (ELEMENTARY="TRUE" AND FILLER="FALSE") then Display(LEVEL,,NAME,,PICTURE,,USAGE);
DO C74[C74(TITLE="*SUPERVISOR/C74CONTEXT/TESTDATA ON DEV")
IN SL C74CONTEXT]
The Object for the C74CONTEXT is a Data Item Definition.
These attributes are defined:
BLANKWHENZERO,BYCONTENT,BYREFERENCE,COLUMNSPECIFIED, ELEMENTARY,FILLER,JUSTIFIED,LEADINGSIGN,LEVEL,NAME,OCCURS, OCCURSMAX,OCCURSMIN,OFFSET,PICTURE,REDEFINE,SCOPE,SEPARATESIGN, SIGN,SIZE,SYNCHRONIZE,USAGE,WITHLOWERBOUNDS.
The OFFSET attribute gives the offset in 4-Bit Digits.
The SIZE attribute gives the size in Bits.
The XMLCONTEXT is a SUPERVISOR Custom Context which allows an OPAL script to process an XML Data File.
Define + ODTS RSS_Test(Custom):
If (EVENTTYPE = "STARTELEMENT") AND (LOCALNAME="link") then #Link:=1; If (EVENTTYPE = "ENDELEMENT") AND (LOCALNAME="link") then #Link:=0; If (EVENTTYPE = "CHARACTERS") AND (#Link = 1) then Display(TEXT);
DO RSS_Test[XML IN SL XMLCONTEXT] (TEST)RSSTEST ON NUCLEUS
In this example, an RSS feed was downloaded into the file (TEST)RSSTEST using an HTTP(XHR) OPAL, and then processed using the XML OPAL RSS_Test, defined above.
The XML Context only supports a DO or an EVAL.
The Parameter to the XML DO or EVAL may be either a file which contains an XML Document, or an XML Document which begins with <?xml..., however in this case the XML Document is restricted to fewer than MAX_DCMESSAGE_SIZE bytes.
The XML Context interface is based on the SAX ContentHandler Interface.
The EVENTTYPE attribute specifies the type of Object, and it corresponds to a method of the SAX ContentHandler interface.
The EVENTTYPEs and their associated attributes are,
"STARTDOCUMENT" - "STARTELEMENT" - (NamespaceURI,LocalName,QualifiedName, Prefix,Attributes) "ENDELEMENT" - (NamespaceURI,LocalName,QualifiedName, Prefix) "CHARACTERS" - (Text) "PROCESSINGINSTRUCTION" - (Text)
Non-SAX EVENTTYPEs
"PARSEERROR" - (Text)
These attributes are defined,
EVENTTYPE - The type of object being processed by the OPAL code. LEVEL - The hierarchical level of the element being processed. The Document is Level 0, and the Root Tag is Level 1. NAMESPACEURI - The NameSpace URI either on the element, or inherited by the element, if specified. LOCALNAME - The local name of the Tag, without any NameSpace Prefix. QUALIFIEDNAME - The local name of the tag, with a NameSpace Prefix, if specified. PREFIX - The NameSpace Prefix if specified. ATTRIBUTES - The list of attributes and their values if specified on a Tag. It is returned in JSON Format, suitable for use with the Distribute(",",JSONObject) OPAL Function. TEXT - For "CHARACTERS" it is the text content of the tag, including any WhiteSpace. For a "PROCESSINGINSTRUCTION" it is the content of the Processing Instruction. For a "PARSEERROR" it gives the reason.
DTD Entities are not decoded. The Translate(EntityDecode) OPAL Function may be used for intrinsic entities such as ampersand.
SUPERVISOR will now display a waiting entry whenever an attempted WHEN or DO command causes the maximum number of WHEN slots to be exceeded. The waiting entry shown below will persist until manually acknowledged or SUPERVISOR is restarted.
ACCEPT:WARNING!!No slots available, WHEN Limit[40] has been exceeded!!
The waiting tasks is called:
(SUPERVISOR)SUPERVISOR/WHENLIMIT/EXCEEDED
Also, an EVAL of a WHEN context script will now respect the use of the LASTEVAL/EXTRAENTRY attribute instead of ignoring it.
A new feature has been added to Supervisor to allow restricted access to Supervisor Windows.
First define an Installation Data item where String1 is set to the ODTS you will use to process input from the window. EX.
ID - INSTALLATION DATA ACTIVITY COMS Action: INQUIRE CReate MOdify INquire DElete GO HOme (Press .. SEarch FIrst LAst NExt PRevious DUmp Installation Data Name . . . . SCHED Valid Window Name ALL Integer1 . . . . . . . . . . . 0 Integer2 0 Integer3 . . . . . . . . . . . 0 Integer4 0 Hexadecimal1 . . . . . . . . . NONE Hexadecimal2 NONE String1 . . . . . . . . . . . . ASMN_MENU String2 NONE String3 . . . . . . . . . . . . NONE String4 NONE Installation Data Link Name . . NONE
Then DEfine a new MCS window with Supervisor as the MCS and your new Installation Data.
EX.
W - WINDOW ACTIVITY (MCS) COMS Action: INQUIRE CReate MOdify INquire DElete GO HOme (Press SPCFY for help) SEarch FIrst LAst NExt PRevious DUmp Window Name. . . . . . . . SCHED Subaddress Window Type. . . . . . . . M D - Direct R - Remote-File M - MCS Virtual Terminal Name DEFAULT Maximum Users. . . . . . . 0 Maximum Dialogs. . . . . . 1 Notify Open (Y/N) and Text N Notify On (Y/N) and Text . Y REFRESH Installation Data Name SCHED MCS Window specific fields: Truncated Results (Y/N). N Hostname or Domain Name NONE MCS Title METALOGIC/SUPERVISOR Remote Window Name . . . Single Window (Y/N). . . . N
With this setup ?ON SCHED will open a Supervisor window (without checking Supervisor Window Security). It will then DO ASMN_MENU (or whatever ODTS you specified in the Installation Data). The ODTS will communicate using SHOW and INPUT. Any data entered when there is no Input function waiting will be ignored and "Station busy" will be sent to the last line of the window.
The intent of this change is to give more precisely controlled access to Supervisor by allowing the defined ODTS to filter the commands allowed.
Previously, a maximum of 4000 entries was enforced for any EVAL of a METALOG context script, regardless of time range. This restriction has been removed but, as a consequence, all METALOG EVAL calls will now use the EVALREADER mechanism (as with LOG context EVALs). This change means that there is effectively no limit to the number of log records scanned so very long time-range EVALS can be performed if the relevant log files are present.
If no time specification is provided then a mandatory maximum of 500 evaluated log records is applied.
The HO command will now highlight files that have been opened by an application with EXCLUSIVE=TRUE. From a normal HO interrogation, such file entries appear with 'x' following the user count:
HO DEV SCHED=
-Tmp--Users----Size----------------- Name ------------------- 1x 57600 *SCHEDULE
Or for an individual file:
HO DEV SCHEDULE
--------------------- File is in *Exclusive* use by 1 User ------ 35707\35707 *METALOGIC/SUPERVISOR
For EVALs of the METALOG context, it is now possible to pass a list of categories in the time specification parameter by using the CATEGORY modifier:
-- CATEGORY -+-----+---+-- <Category> --+---------------- +- = -+ +<<--- , ------+
Only log entries that have match categories in this list are returned to the caller. Each category must be 3-characters in length using commas to separate individual types in the list. The use of CATEGORY is only available to the METALOG context. Some examples:
EVAL (METALOG=TRIM:TRUE) [CAT MSG] DO TRIM_LOG EVAL (METALOG:TRUE) [@BACK 20 CAT=MSG,WHN,ODT] DO SUPER_LOG
With certain T27 emulators on faster systems, users going onto new SUPERVISOR windows would occasionally see the message UNRECOGNISED REQUEST appear. This change attempts to resolve this problem.
If a TT function was called from an AFTER, SL, METALOG or SESSIONS Opal script and TT executed a script of the same context then indeterminate results would occur, causing the calling Opal to use corrupted attribute information. This behaviour has been corrected.
Deny File Assignment if a program attempts to open a Remote File to a non WFL Function Supervisor Station.
Previously, usage of the CHARGE modifier with commands that used multiple FORs could have caused those commands to fail to inherit the appropriate CHARGECODE. Note that this would only happen if both FORs specified a CHARGE. For example:
FOR META/PW CHARGE FRED DO (TT("FOR TEST CHARGE BERT DO ZZ"))
The above would have intended the ZZ ODTSequence to be run with a CHARGE of BERT but, in reality, it would have executed with no CHARGECODE. The activity would then have failed if CHARGECODENEEDED was set on the TEST usercode. These inconsistencies have been corrected.
WFL requests that are handled by SUPERVISOR will now correctly log any CHARGE usage into the SUPERVISOR log whereas it was omitted before.
This change fixes a bug where adding a new AF entry using AFTER +, for Workdays , would not go into today's schedule if an existing matching entry for 'ON HOLIDAYS' was already present. Deletion of an entry 'ON WORKDAYS' could incorrectly delete an entry in TODAY for 'ON HOLIDAYS'.
SUPERVISOR will now issue a waiting entry after initialisation, or the load of a new day's Schedule at midnight, if the Metalogic licence keys for any of its modules have expired or are due to expire within the next 30 days. Keys for Supervisor, Trim and Advanced Scheduling are all checked.
The following waiting entry shows that the Advanced Scheduling module will expire in 6 days:
---Job--Task-Pri---Elapsed------ 1 WAITING ENTRY --------------------*60353/60362 95 :04 (SUPERVISOR) (SUPERVISOR)SUPERVISOR/
LICENCEKEY/WARNING SUPERVISOR:ACCEPT:Metalogic Keys:ADVSCHED:6 days left.
Note that even if a module appears as EXPIRED, it will continue to operate normally until the MAGUS library is restarted.
The AFTER attribute NEXTACTIVITYDAY will now return correct values for AFTER activities that use modifiers such as 'ON nTH DAY' and its been processing overhead has been reduced.
Also, activities such as 'ON nTH DAY EXCEPT HOLIDAYS' would not have been displayed correctly by an AF ? or written by a 'SAVE SCHEDULE AS..' command.
A new attribute, VALIDEMAIL, is available to SUPERVISOR allowing the caller to validate an email address passed in as a parameter. VALIDEMAIL is implemented using an entrypoint in the MAILLIB library. An address without a hostname (i.e. no '@' part) is accepted and VALIDEMAIL will automatically use the default domain set from MAILLIB. The guidelines referred to in RFC 822 are used in the address check and VALIDEMAIL will return a mnemonic value if an error is found. Various error conditions are returned to the caller. Please see HELP ATTR VALIDEMAIL for more information.
Previously, an ON JOBMESSAGE block would have used a scheduled entry notification to store information about a new job invoked from an active job (instead of the actual BOJ) triggered by the Opal WFL function.
If the scheduled entry was actually a library invocation then SUPERVISOR would erroneously record the library as a new job entry for which it would subsequently never see an EOJ. This caused the slot calling the WFL function to hang indefinitely. This behaviour has been corrected.
Entering ?CLose on a supervisor window will no longer cause an ODTS, waiting on Input via the INPUT function, to fault. The ODTS will terminate normally.
When a Supervisor window is closed using the WINDOW - command a simple "Window closed" message is shown instead of "SUPERVISOR: Your Window Session has been terminated".
After a release of the system SUMLOG, SUPERVISOR will now automatically find and copy the associated SECURITYLOG regardless of the location of DL LOG. Previously, only DL LOG set to DISK was guaranteed to work.
A variety of fixes have been provided with this change:
1. Interrogating a SHOW UTIL command after any RELOAD SCHEDULE command
would cause an INTEGER OVERFLOW at 49866000 and the command to fail. A SUPERVISOR restart would be required to fix this issue.
2. If an in-line WHEN or EVAL was locked under a usercode, then any
attempt to disable the slot by its name (with a FOR modifier) would fault with an INVALID INDEX at 66003000. A SUPERVISOR restart would be required to clear the slot.
3. Attempting to DO or EVAL a PD Opal script without a valid FLEXLIB in
the SL function table would cause a SEG ARRAY at 23235000 instead of generating an error message.
4. When an OPAL script faulted because of an programmatic issue,
SUPERVISOR showed an incorrect message to all SUPERVISOR sessions instead of the expected 'SUPERVISOR <fault details>, RECOVERY INITIATED' message.
Previously, the ENTER command which used wild-cards to select DEFINE names from an external file would have failed to compile any DEFINEs that were locked with a FOR usercode. For example, if the following DEFINE was held in a file:
FOR META DEFINE + ODTSEQUENCE TEST_DEF:
The command 'FOR META/pw ENTER DEF T= FROM <file>' would have failed to find and compile the DEFINE. This problem is now fixed.
The change described in DNote 541.45 still did not totally resolve all issues with the use of the 'EXCEPT HOLIDAYS n' modifier with the AFTER command. In particular, certain combinations of ON CUSTOM and EXCEPT caused some activities to not be activated on the appropriate date. These issues have been corrected.
The show statement now correctly handles lines exactly the length of the output terminal.
Ex If A terminal was 80 characters wide the following would give the expected answer:
TT / (REPEAT("1",80),/,Repeat("2",80))
But
TT DO (SHOW(REPEAT("1",80),/,Repeat("2",80)))would display an extra blank line and would not push down the correct number of lines
The use of ON CUSTOM with EXCEPT HOLIDAYS n DAYS AFTER modifiers did not correctly schedule activities that should have been executed on days that were not holidays. Further, multiple custom activities that were scheduled using 'ON <dayofweek> IF CUSTOM...EXCEPT HOLIDAYS n' would cause the activities to be unexpectedly executed on days that they should not have run. Both these problems have been fixed.
AFTER LOAD entries were not being returned by an AFTER context EVAL if a specific date or date range was provided. This problem has been corrected.
The DO commands in the symbolic schedule file created by
SAVE SCHEDULE AS ....
will now include the original parameter passed to the ODTS.
Previously, the logging of TT commands from a MCP REMOTESPO station would have generated a STRING PROTECT fault at 88680400 if the originating station name was longer than 18 characters. This problem has been fixed.
A new dates command called CUSTOM has been implemented. Similar to WORKDAYS and HOLIDAYS, CUSTOM allows multiple special dates to be assigned for regular site usage throughout the year. These dates are available for AFTER scheduling activities and OPAL scripting.
---- CUSTOM ------+--------- ? -------------------------+----I -- +----+-----+-- <gregorian date> ------+ +<<---------- , ----------------------+
Similar to ON HOLIDAY and ON WORKDAY, a new AFTER modifier called ON CUSTOM has been implemented. Similar to ON HOLIDAY and ON WORKDAY, AFTER activities armed with ON CUSTOM are only executed on dates that are in the CUSTOM days list. For example:
AFTER + 0001 ON CUSTOM:TT DO CUSTOM_SCRIPT
The above AFTER will cause activity entries written into the SCHEDULE file for today (if the time is in the future) and for all 7 days of the week, SUNDAY to SATURDAY.
A major change with ON CUSTOM is the ability to offset a CUSTOM by a value of 15 days in the future. This allows a site to perform special actions on specified days later than a CUSTOM date. The ON CUSTOM syntax has been modified to allow an optional '+' clause.
AFTER + 0001 ON CUSTOM+2:TT DO CUSTOM_SCRIPT
In the above case, this AFTER will only be triggered two days after any CUSTOM date. The same feature has been extended for the ON HOLIDAY modifier:
AFTER + 0030 ON HOLIDAY+3:TT DO HOL_3DAYS_AFTER
Here, this AFTER will be executed 3 days after any HOLIDAY specified in SUPERVISOR's holidays list.
More complex handling has been implemented with both ON CUSTOM and ON HOLIDAY combinations and also permit AND HOLIDAY or EXCEPT HOLIDAY clauses:
AFTER + 0001 ON CUSTOM+2 AND HOLIDAY+1:TT DO CUST_HOL
For the above, if two days after a CUSTOM date is NOT a holiday then this activity will be executed. If CUSTOM+2 is, however, a holiday then the activity will be shifted a further day forward i.e. effectively CUSTOM+3.
AFTER + 0001 ON CUSTOM+1 EXCEPT HOLIDAY 2:TT DO CUST_HOL
EXCEPT HOLIDAYS, when following ON CUSTOM or ON HOLIDAY, now allows an optional numeric value. If the CUSTOM+1 date is not a HOLIDAY, then the activity will be executed; if, however, CUSTOM+1 maps to a SUPERVISOR holiday then the activity is postponed 2 days into the future. So, where CUSTOM+1 is a holiday, the activity is effectively scheduled as CUSTOM+3.
Similarly, EXCEPT HOLIDAYS can be used with ON HOLIDAY+n:
AFTER + 0030 ON HOLIDAY+1 EXCEPT HOLIDAYS:TT DO HOL2 AFTER + 0030 ON HOLIDAY+1 EXCEPT HOLIDAYS 2:TT DO HOL2
In the first case, the activity will be actioned one day after any holiday UNLESS that day is also a holiday in which case the activity will not be done. It should be noted that EXCEPT HOLIDAY n is only permitted where 'ON HOLIDAY+n' has a non-zero offset.
In case two, the activity will be performed one day after any holiday UNLESS that day is a holiday in which case the activity will be performed 2 days later i.e. effectively ON HOLIDAY+3.
Optionally, the 'EXCEPT HOLIDAYS n' clause will accept 'DAYS' or 'DAYS AFTER' following the number. This will automatically be appended by a 'SAVE SCHEDULE AS' command.
AFTER + 0030 ON HOLIDAY+1 EXCEPT HOLIDAYS 2 DAYS AFTER:TT DO HOL2
The syntactical enhancements to the ON CUSTOM and ON HOLIDAY clauses are shown below:
-- ON -+- CUSTOM -+-+---------+--+-----------------------------+--| +- HOLIDAY -+ +- + <n> -+ +--- AND HOLIDAY --+----------+ | +- + <n> -+ +--- <except holidays> -------+
<except holidays>
-- EXCEPT --- HOLIDAYS --+------------------------------+----| +-- n --+----------------------+ +-- DAYS - +-----------+ +-- AFTER --+
Similarly, 'EXCEPT HOLIDAYS + n' is also permitted with other AFTER day modifiers such as 'ON MONDAY', 'ON THURSDAY', 'ON WEEKENDS' etc.
Previously, using the '@=' modifier for deleting AFTER activities (permitted only with a privileged usercode) would previously have just shown the message ALL ACTIVITIES FOR THE SPECIFIED MINUTE HAVE BEEN DELETED'. Since time ranges can be included in the command, this message was misleading and has been changed:
FOR PU/PRIV AF - 1900-2000: @=
96 activities deleted from 28 time slots
The METALOG context is no longer restricted to Full Supervisor.
When saving the SCHEDULE or AFTERS to a symbol file, After statements longer than 80 characters would be wrapped at the nearest 'splitable' character to the end of a record. 'Splitable' characters are space,;:/() This could cause problems on reinput where extra spaces, the padding added to lines when wrapping, could be added to the command. Lines are now wrapped at exactly 80 characters.
The FTPCONTEXT is a SUPERVISOR Custom Context which allows an OPAL script to send commands and receive replies from an FTP Server.
An FTP context OPAL ODTS and SITU are defined in the example below,
DEF + SITU IC(CUSTOM): TRUE
DEF + ODTS IC(CUSTOM): Show(ToString);
In this example, the only attribute referenced is the TOSTRING Custom Context attribute which returns a description of the current FTP response.
A Directory Scan can be initiated with an EVAL.
EVAL IC[DIRECTORY IN SL FTPCONTEXT] DO IC ftp://user:pass@192.168.1.31/DO/
- The usercode and password may need to be supplied, depending on the FTP Server. If the FTP Server allows anonymous access, the usercode should be anonymous. The FTP context puts in the user@hostname as the password if a password is required.
- The port defaults to 21, but may be specified after the hostname, for example 192.168.1.1:1234
- If the ftp url ends with a /, then by default a list of the filenames is returned using the NLST command. Each file name is returned in a separate response with a message type of FILE.
- If the ftp url does not end with a /, then the STAT verb is used which returns either the details of a single file, or all the files in the directory, in a single response, with logical lines separated by a CRLF.
- The FTPCONTEXT only supports IMAGE Mode, and all responses are returned in EBCDIC. Data provided to FTP interface attributes are treated as binary.
- An EVAL will terminate at the end of the directory scan. An FTP dialog can be scripted using a DO.
- The initial command used by the DIRECTORY interface may be specified as a Library Parameter, and may be either LIST,NLST or STAT, as in this example, EVAL IC[DIRECTORY(STAT) IN SL FTPCONTEXT]... A LIST command returns a formatted directory listing suitable for people to read. An NLST command returns only the names of the files or directories, suitable for a computer to read. The STAT command, when used with a directory returns a formatted directory listing, over the control port.
A Directory Scan can be initiated with a DO in which case the FTPCONTEXT is in scripting mode. As FTP responses are received from the FTP Server, the OPAL script can issue further FTP commands.
DO IC[DIRECTORY IN SL FTPCONTEXT] DO IC ftp://user:pass@192.168.1.31/DO/
- As for an EVAL, if a directory is specified (a trailing /) then an NLST command is executed, otherwise a STAT command.
- A DO will not terminate at the end of the directory scan. The FTPAPI sends NOOP commands to the FTP Server while it awaits further FTP commands. The OPAL receives the response to the NOOP commands, until the slot terminates, either by using the CLOSE method, or by DO-#<slotid>.
The initial url is used to navigate to some level within the directory structure. The names of files give in a path parameter should therefore be relative to the initial directory.
The current path is requested during the LOGON sequence, and whenever the SETPATH request is made. The command is PWD (Print Working Directory), and the response is received by the script.
These methods are provided for a dialog with an FTP Server. A method is an attribute with parameters, which returns a result. These methods queue requests to the FTPCONTEXT. All methods return a string value, which is either ERROR:<text> to indicate an error, or <integer> which is the REQUESTID, and may be used to identify responses returned by the FTP Server.
CLOSE() Sends an end of objects indication to the slot, so that the LASTEVAL, if defined, should occur.
DELETEFILE(Path) Requests the deletion of the file with the specified path.
FTPHELP(Key) If Key is empty, general help is request from the FTP Server, otherwise specific help for the Key.
FTPSITE(Command) Sends a site specific command to the FTP Server.
FTPSTATUS(Path) If the path is empty, the current path is used, otherwise the file information for the specified path is requested.
GETBYTES(Path) Requests the file specified by path as a byte string. This is limited by the Algol string size of 65535 bytes (MCP 54).
GETDIRECTORY(Path,AsFile) Requests the directory listing in a file if an AsFile title is specified, otherwise as a string.
GETFILE(Path,AsFile) Requests the file specified by the path. If an AsFile title is not specified, then a unique MCP TITLE is created.
MAKEDIRECTORY(Path) Requests that the specified directory, with reference to the current path, be created.
PUTBYTES(Data,AsPath) Stores the Data with the given AsPath. The Data is only limited by the size of an OPAL string, which is currently 2 MB.
PUTFILE(Title,AsPath) Stores the file specified by the Title with the AsPath. Only Byte Stream Files are accepted.
REMOVEDIRECTORY(Path) Requests removal of the specified directory, with reference to current path.
RENAMEFILE(FromPath,ToPath) Requests the renaming of the file FromPath to ToPath.
SETPATH(Path) Changes the current path to an absolute or relative pathname.
When a method is invoked, one or more FTP Commands are sent to the FTP Server. These commands make up a Request, which is bounded by a BOT and an EOT or ERROR message.
Requests are stored and executed in the order they are received. A new Request may be queued at any time within the OPAL script.
These are the attributes which are available each time the OPAL script is entered, because of a response from the FTP Server.
COMMANDNAME The actual FTP command name which generated the response, in UPPER case.
COPIEDDATA Returns the string TRUE if there is data associated with this request, for example after a GETBYTES request. Otherwise it returns EMPTY.
COPIEDFILE Returns the string TRUE if a file was created to contain the data returned from the FTP Server, for example after a GETFILE request. Otherwise it returns EMPTY.
COPYDATA If COPIEDDATA, then this attribute returns the data from the FTP server.
FILENO Returns the File Number of the file in the original request if a / directory NLST request was performed.
FILESTATE Returns the Port FILESTATE of the Data Transfer PortFile (DTP).
LASTFILE Returns the string TRUE if this is the last file in an NLST of a directory request.
MSGSIZE Returns the length in bytes of the response message.
MORETEXT If the response is longer than a DCALGOL MESSAGE, it is segmented and this attribute returns the string TRUE, to indicate that more text follows. Apart from the MSGSIZE and MSGTEXT attributes, all other attributes for each segment are identical. If the response is not segmented, the attribute returns EMPTY.
MSGTYPE Returns the name of the type of this response message. BOT - Indicates the start of a request. CONNECTED - The FTP Server has accepted the logon. REPLY - An FTP command reply. EOT - Indicates the end of the request. ERROR - Indicates the end of the request, which failed due to an error. PROGRESS - A progress response giving the amount of data sent or received so far. FILE - For an NLST directory request, this is a File Name. USER - This is a message generated by a User application such as FTPCONTEXT.
REPLYCODE The numeric reply code as a string, for the associated FTP command.
REQUESTID The name of the original request. It is one of LOGON, GETDIRECTORY, GETFILE, PUTFILE, GETBYTES, PUTBYTES, SETPATH, DELETEFILE, REMOVEDIRECTORY, MAKEDIRECTORY, RENAMEFILE, HELP, SITE or STATUS. It is in upper case.
REQUESTNO The request number for this request, which corresponds to the number returned from the request method.
TAG A tag associated with the request.
If there is a collision with OPAL attributes, then all the FTP attributes above have a synonym of FTP_<attname>.
These custom attributes are also available,
TOSTRING Returns a string which gives a general description of the response from the FTP Server.
MYSELF(INPUTPARAM) This provides the original url provided with the DO or EVAL.
LIBPARAMETER This returns the library parameter provided with the DO or EVAL (Empty,NLST,STAT or LIST).
When storing or retrieving files from an FTP Server, the FTPAPI attempts to use MODE-Z, which provides for ZLib (Deflate) compression. Some FTP Servers such as FileZilla implement MODE-Z, however many do not. In this case, the FTPAPI will revert to MODE-I.
The SL FTPCONTEXT = *METALOGIC/SUPERVISOR/FTPCONTEXT requires the SL FTPAPI = *METALOGIC/COPYWRITE/FTPAPI and the SL TELNETAPI = *METALOGIC/COPYWRITE/TELNETAPI Libraries.
There is an example of a custom FTPCONTEXT Script called IC in,
*EXAMPLES/SUPERVISOR/IC
This example scans the Unisys FTP Server for new ICs (Interim Corrections), which are then downloaded and unzipped and unwrapped to release the component files.
It uses the scripting features of the FTPCONTEXT so it is started as a DO,
FOR USER/PASS DO IC[DIRECTORY(STAT) IN SL FTPCONTEXT] ftp://anonymous@ftp.support.unisys.com/pub/aseries/CONTAINER/054.1A
The use of the AF TRIGGER command, as described in SUPERVISOR Dnote 540.96, now works correctly where the associated command is a WFL action e.g. 'AF + TRIGGER (META)TEST: START J' would have previously failed with a WFL syntax error. Trigger identities will now always be held in upper case when created, deleted or actioned.
This changes documents the addition of the NEXTACTIVITYDAY attribute to the AFTER context. This attribute returns the date of the next scheduled occurrence of the selected AF activity allowing for holiday exceptions etc. For scheduled activities already processed in TODAY's schedule, a value of zero will be returned.
If the initial keyword of the text passed to the WFL function (such as 'START','FOR', 'RUN' etc.) contained any lower case characters then SUPERVISOR would not recognise the keyword and would prefix the text with 'START' causing the job or WFL command to fail syntax. This problem has been corrected.
Some changes have been made to improve the logging of WFL requests in the SUPEERVISOR log file.
If a command passed to the Coms function contained an non graphic character the the Grinder stack which processes Coms request would go into a processor intensive loop. Supervisor would eventually DS the looping grinder stack and the Coms function would return a Grinder fault. This could easily happen when using FIRST/NEXT commands to parse all of the items of one type.
EX. COMS("FIRST PROCESSING_ITEM_LIST") could return FIRST PROCESSING_ITEM_LIST UTILITYITEMLIST =UTILITYITEM If this response was used to generate a NEXT command without stripping off the second line , grinder would fault.
With this version installed the response would be.
Invalid element name format, scanning UTILITYITEMLIST4"0D"
The non graphic <carriage return> character is shown in hexadecimal encoding 4"0D".
Certain calls on the Coms Function (Ex. COMS("FIRST DEVICE TYPE_LIST")) would cause a Coms resize error and return "Grinder Faulted". This problem has been corrected.
Using a wildcard filter with the ENTER command to restrict the DEFINES that are compiled, SUPERVISOR will now only log the compilation of those DEFINEs that were successfully filtered. Previously, all DEFINES processed from the ENTER file were logged regardless of the filter.
Due to problems caused by SUPERVISOR change 540.29, certain DEFINE actions caused DEFINER faults when logging messages into SUPERVISOR's log file. These problems have been resolved.
The use of a WAIT statement after Opal WFL function calls that used the REMOVE, CHANGE or REMOVE statements will now pause for the correct delay instead of ignoring the wait.
The COMS window information returned by the 'STATS FULL' request could return some window entries with an extra comma appearing in the CSV data. This problem has been fixed.
Messages generated by the ENTER are now better logged in the SUPERVISOR log. In particular, error messages are consistently logged with a prefix of 'RB' and the ENTER task number.
The following is an extract from the SUPERVISOR log:
15:58:05 Msg:RB(43329):Rebuild:4 Defines Found,2 Compiled,
1 did not compile15:58:05 Msg:RB(43329):Rebuild:Processed, 13 records, 4 commands 15:58:05 Odt:RB(43329):DEFINE + ODTSEQUENCE X2 15:58:05 Err:RB(43329):NAME OF AN ODT SEQUENCE EXPECTED:MSG_SUPPRESS 15:58:05 Odt:RB(43329):DEFINE - ODTSEQUENCE MSG_SUPPRESS 15:58:05 Msg:RB(43329):ODT SEQUENCE DEFINITION DELETED 15:58:05 Odt:RB(43329):DEFINE - ODTSEQUENCE X 15:58:05 Msg:RB(43329):Rebuild:Amending schedule from (IPP)EX ON DEV 15:58:05 Msg:SUPERVISOR:INITIATING ENTER FROM (IPP)EX ON DEV
If the SUPERVISOR option NOENTERLIST is set then no TASKFILE from the ENTER process will ever be produced, regardless of errors. This is because the error will also logged in the SUPERVISOR log.
SUPERVISOR is now permitted to access the FLEX logging system by using the FLEX LOG command. As with the MAIL and TP equivalents, the full range of LOG modifiers is available. However, the FLEX LC command is not permitted from a SUPERVISOR environment.
A Custom EVAL would finish when the WhenEvQ became empty instead of waiting until the End Message had been received.
Previously, EVALS of the LOG context could have failed to process correctly if the request forced SUPERVISOR to access more than one SUMLOG. The problme caused the EVALs to continually reprocess the same log file and required manual termination. This problem is now fixed.
Internal DNote OPAL/BINDLIB 540.12.
A Count Function which followed an OBJECTS function which had specified limits would inherit those limits.
Ex OBJECTS(MX:true,1); %returns one mixnumber
COUNT(MX:TRUE) %will now return 1
This problem has been corrected
Messages displayed when commands are rejected due to missing software key have been improved.
An eval limit of 0 used to test When and Eval commands now works for the Custom context.
This change extends 541.21 to remove all key restrictions when deleting Opal Programs.
Situations may now be deleted when running without a full Supervisor key.
Previously, executing a COMMAND via the programmatic EXTERNALCOMMAND library entrypoint could terminate early after the execution of the first CALL DO within the COMMAND script. This meant that EXTERNALCOMMAND could exit before the COMMAND had terminated. This behaviour has been corrected.
For DO or COMMAND requests issued from an EXTERNALCOMMAND call, the TERM(LOGONUSER) Opal attribute will now return the usercode of the program calling this entrypoint.
This change corrects a problem with SUPERVISOR DNote 541.13 when defining and using LOGEOJ Opals when only an Advanced Scheduling key is present.
Improvements have been made to the tracking of jobs using the Opal WFL function. Previously, if WFL identities were not used, tracking would cease inside an ON JOBMESSAGE block upon receipt of any EOJ regardless of job number. This could occur if other jobs were spawned and completed before the parent job had terminated. Now ON JOBMESSAGE will wait until all detected BOJs have matched EOJs.
By default, any slot can run a maximum of 100 WFL jobs, including active and completed jobs (with WFL identities). If attempts are made to exceed this limit, SUPERVISOR will still process messages in an ON JOBMESSAGE block but its activity will be ignored when the time comes to exit because all other monitored jobs have completed.
The SLOT command will now show how many WFL jobs are being tracked by a particular WHEN slot.
This change also supports the new WHEN attributes which provide slot information about active or completed jobs (with WFL identities) that have been processed by the WFL function. See OPAL GSTABLEGEN DNote 540.33 for more information.
The WHEN statement could randomly fail depending on the previous WHEN DO or EVAL command processed.
Myself(InputParam) and the When context attribute are now valid after a restart.
If an Advanced Scheduling licence key is active but no full SUPERVISOR licence is present then SUPERVISOR is now permitted to DEFINE and execute (via EVAL and WHEN) LOGEOJ-context Opal scripts.
If an empty string is passed to the Opal WAIT(<text>, OK) statement, then SUPERVISOR will not issue any of the usual "ENTER 'TT OK ....' TO <text>" messages nor will a RSVP task appear if SO WAITOKTASK is set. This special behaviour is intended for internal OPAL scripting purposes only.
Lastly, the OK #<n> command, where <n> is a WHEN slot number, does not now need a FOR command modifier if the referenced slot is running under a usercode and is waiting on WAIT(..,OK).
Previously, activities such as TT DO commands that were scheduled by an AFTER to be executed at 23:59 were not executed until after midnight, when the next days schedule had been loaded. This was caused by an enforced delay that required SUPERVISOR to wait until midnight instead of completing the command processing. Other AF activities such as SAVE SCHEDULE and PRINT SCHEDULE were unaffected. This problem has now been fixed.
The Opal LOG statement when used with the SITE modifier will now not include originating SLOT(n) information in the the text of the log entry.
The Interface for the Custom Context SetUp Function has been changed to add a new parameter called MaxObjects. This corresponds to the Eval Limit of an EVAL or the Do Limit of a standalone DO.
Boolean PROCEDURE SetUp(SlotNo,WhenType,UserName,
Situation,ODTSequence, LibParameter,WhenParameter, MaxObjects,Options,Reason);
Change to the GetStringAtt function semantics in the Custom Context.
The AttInfo parameter of the GetStringAtt function is now set to the AttIndex returned by the BindStringAtt function, so that the Procedure associated with the Attribute can know its own Index. This parameter was previously set to 0.
The SUPERVISOR library entrypoint, EXTERNALCOMMAND, may now be called by programs which have MP SECADMIN capability. If set, SUPERVISOR does not require the usercode of the caller to be PU or SYSTEMUSER, allowing callers which have no associated usercode. If MP PU or MP TASKING is set and SECADMIN is reset, EXTERNALCOMMAND will continue to require a usercode with the appropriate privilege.
The DO command has been modified to allow a following '& PRINT' variant which forces all SHOW statements to be redirected to printer backup instead of the source station or ODT. The change applies to both the DO and WHEN..DO commands and is preserved after SUPERVISOR restarts and to decompiled SCHEDULE files.
DO & PRINT (SHOW("This is a test")) WHEN SITU DO&PRINT ODTS
Initial release of Custom Context.
A Custom Context is a Context which is implemented by a customized Library external to Supervisor. There may be many Custom Contexts, each Context being selected by an Interface in an SL Library.
For example, a Custom Context WHEN might wait for some event which is triggered from another computer. A Custom Context EVAL or DO might process a proprietary file or database and return selected records.
A Custom Context SITUATION, ODTS or DISPLAY is defined using the DEFINE command,
DEFINE + SITU TESTSITU(CUSTOM) : TRUE DEFINE + ODTS TESTODTS(CUSTOM) : Display(ToString); DEFINE + DISPLAY TESTDISP(CUSTOM) : ToString;
A Custom Specification is used to define the INTERFACENAME and the Library FUNCTIONNAME of a Custom Context Library, as well as a string parameter which may be used for initialization.
A Custom Specification has the syntax,
<interfacename> ( <parameter> ) IN SL <functionname>
The <interfacename> is used to connect to a Connection Library referenced by the SL <functionname>.
The <parameter> may contain any text, except a <right parenthesis>. If a <right parenthesis> is required, the item of which it is part must be enclosed in double quotes. For example FILE="(A)B ON C".
The only required item is <interfacename>. The ( <parameter> ) may be omitted. If the IN SL <functionname> is omitted, then the <functionname> defaults to the reserved functionname, METACONTEXTS.
The Custom Specification is provided when the WHEN, EVAL or DO is initiated.
WHEN TESTSITU [TEST IN SL TESTCONTEXT] DO TESTODTS <text> WHEN TESTSITU [TEST IN SL TESTCONTEXT] DISPLAY TESTDISP <text> EVAL TESTSITU [TEST IN SL TESTCONTEXT] DO TESTODTS <text> DO TESTODTS [TEST IN SL TESTCONTEXT] <text> DISPLAY TESTDISP [TEST IN SL TESTCONTEXT] <text>
The <text> is passed to the Custom Context Library during the setup of the slot.
There are currently 7 predefined attributes in the Custom Context.
TOSTRING - Implemented by the Custom Context, it returns the current
object as text.
LASTERRORTEXT - If an attribute which was accessed was not valid,
this attribute may contain the reason.
HELP - Binds to an attribute called HELP in the Custom Context
Library and by convention, returns information about the Custom Context.
ATTLIST - Binds to an attribute called ATTLIST in the Custom Context
Library and by convention, returns a list of attributes either comma separated, HTML or JSON, depending on an optional parameter.
FUNCTIONNAME - The SL FUNCTIONNAME for the Context Library.
INTERFACENAME - The INTERFACENAME for the Context.
LIBPARAMETER - The parameter passed with the Custom Specification.
The MYSELF(INPUTPARAM) function returns the WHEN,EVAL,DO or DISPLAY parameter. The MYSELF(USER) function returns the associated UserCode.
The capability to reference dynamically defined attributes in Custom Context OPALs will be released later.
The DEBUG + 34 Option may be used to assist in debugging Custom Contexts, with the messages being stored in the SUPERVISOR Log.
The Custom Context Library must implement a Connection Library which exports the following entrypoints,
Boolean PROCEDURE SetUp(SlotNo,WhenType,UserName,
Situation,ODTSequence, LibParameter,WhenParameter, Options,Reason); If the SetUp function returns TRUE, then the Custom Context Library may start inserting objects into the WhenEvQ. SetUp MUST NOT wait on anything as this will hang SUPERVISOR.
String PROCEDURE ToString(A);
Returns a string text representation of the current object (A).
String PROCEDURE Reference Array GetStringAtt[0:MaxAttributes]
(A,ID,AttInfo,P1,P2,P3,P4,P5); Called to return a string attribute value. A is the current Object, originally provided by the Custom Context. ID is the uppercase name of the attribute. P1 through P5 are parameters to the attribute or EMPTY.
Integer PROCEDURE BindStringAtt(ID,AttInfo,Semantics,Reason);
Called to return the Index in GetStringAtt of the Procedure which implements the code for the string attribute called ID. If the Index < 0 then the Reason is logged to the SUPERVISOR Log and the attribute returns EMPTY.
PROCEDURE LogOff(WhenType,Why);
Called to notify the Custom Context Library that its all over and no further messages should be inserted into the WhenEvQ.
The Custom Context Library generates Objects (DCALGOL Messages) and inserts them in the WhenEvQ of the OPAL Slot. The layout of the Object is defined by the Custom Context Library, with the restriction that it must be more than 1 WORD.
If SUPERVISOR receives an Object which is 1 WORD in size, then it indicates the End of Objects. The convention is that if the 1 WORD IS 0, the OPAL finished successfully, otherwise there was an error and the contents of the 1 WORD are logged to the SUPERVISOR Log.
There is an example Custom Context Library called
*TESTCONTEXT/LIBRARY/NEWTAPE
The limit on the number of nested CALL DO statements where the called ODTS includes a WAIT has been increased to 10.
This change fixes a problem where linking a situation to an inline ODTS would occasionally give an invalid 'type mismatch' error.
Previously, it was possible to cause SCHEDULE file corruption under the following conditions:
1. An active OPAL script running as a WHEN was updated with the
DEFINE command. The WHEN is marked with a 't' (Temporary) in a WHEN ? response.2. SUPERVISOR was then abnormally terminated by a DS or H/L within 1
minute of the DEFINE update.
When SUPERVISOR restarts, any temporary WHEN that satisfies the above condition causes a SCHEDULE CHECKSUM ERROR or SCHEDULE TEXT VALIDITY ERROR and SUPERVISOR halts with a waiting entry.
The above SCHEDULE corruption is now fixed; it is believed that other circumstances can cause the above problem but these are not known for definite. Because of this, SUPERVISOR now detects faulty entries in the list of WHENs and will discard them during its initialisation instead of forcing the corrupt SCHEDULE wait. Messages are displayed and written into the SUPERVISOR log:
SCHEDULE TEXT VALIDITY ERROR:ADDRESS=1122 FOR 15 DISCARDING SLOT #6 DUE TO BAD SITU DESC
SUPERVISOR will continue normally: any of the discarded WHENs must be manually restarted.
SUPERVISOR's HELP LOG command will now use the revised HELP information held locally by the MAGUS library instead of using its own help data. This change allows future MAGUS changes to the logging mechanism to be transparent (and thus the HELP content) to SUPERVISOR. Please see MAGUS DNote 540.35 for more details.
If the SHOW PERM command was used to view a Permanent string variable which contained more than 255 characters then the output was truncated.
SHOW Perm with wildcards worked correctly.
When a Supervisor window is forced to close the message
'Press Spcfy to return to MARC' will no longer be displayed.
AFTER changes: New Pseudo time 'TRIGGER' added. Trigger is followed by an identifier with an optional usercode. Ex. FOR LIVE/PW AF TRIGGER (BOB)TEST DAILY:START BOB/TEST Once this is in the schedule, entering TT TRIGGER (BOB)TEST will cause BOB/TEST to be started under the usercode LIVE. The intent of this change is to allow jobs to be stored in the schedule with appropriate Usecode and accesscode and then be 'Triggered' by a subsequent event, perhaps the successful completion of another Job. A now modifier WHERE has been added. WHERE is followed by the name of a system situation. If all other conditions for the after are true then the situation is evaluated. If it returns true the AFTER will run. Ex. AF 1000 ON WORKDAYS WHERE Hol_Yesterday START MY/JOB If Hol_Yesterday is defined as: TT DEFINE + SITUATION Hol_YESTERDAY: Holiday(NewdateTStoday,-1))
Then the above AF would only run on Workdays where yesterday was a holiday.
SHOW PERM has be improved to allow better wild card matching.
There were some cases where AF- @ <num> would not find the correct entry to delete. This problem has been corrected.
Previously, the INPUT process, invoked by the SUPERVISOR LOAD command, would hang on a NO FILE if the file to be loaded was unavailable. This in turn caused SUPERVISOR to wait indefinitely until the waiting entry had been handled.
This behaviour has been changed: SUPERVISOR will now terminate the LOAD with the error message:
'LOAD file is unavailable (OPEN error=n)'
Also, the HELP ATTR command, filtered by context, would previously have returned incomplete information for contexts that were subtypes. For example, both LOGBOJ and FILECLOSE are subtypes of the LOG context so HELP ATTR =:LOGBOJ and HELP ATTR =:FILECLOSE only returned basic LOG attributes. This problem has been corrected.
A new OPAL context, MAIL, has been implemented. This is an event-only context that captures notices generated by the Metalogic MAILLIB library. These notices essentially reflect the information that appears in the MAILLIB log file but are much more detailed. The event notices are subdivided into a number of categories denoted by the EVENT and EVENTTYPE attributes. These types are:
SND, RCV, ERR, MSG, FLT, QUE, ATT, INC
Available attributes are dictated by the various event types and can be checked by using the VALID function. For example, the SMTPFILENAME attribute is only valid for EVENTTYPE=QUE. Email-specific attributes such as TO, FROM, CC, FROM and MESSAGESIZE are only relevant for notices whose EVENTTYPE is SND, QUE or RCV.
Example:
DEFINE + SITUATION MAILQ(MAIL): EVENTTYPE=QUE
DEFINE + ODTSEQUENCE MAILQ(MAIL): RECORD[SNMP] ("Warning! EMAIL queued, Error=",ERRORNO,":",TEXT);
In this simple case, the TEXT attribute returns the message entry that is written into the MAILLIB log file.
The WHEN is invoked by:
WHEN MAILQ DO MAILQ
Note that MAIL Opal scripts may only be used by the WHEN command. The METALOG context should be used to retrieve retrospective MAILLIB information but this is not as detailed as event-based info.
Each MAIL notice, regardless of EVENTYPE, contains a subset of MAILLIB configuration attributes that can be used in a MAIL script. Originally, these attributes were generally available in the SYSTEM ML attribute group but this set has now been renamed and each attribute name is now prefixed by 'MAIL'. For example the SYSTEM ML attribute 'POSTMASTER' is now called 'MAILPOSTMASTER' so any scripts that use these attributes will have to be recompiled with corrected names, though existing compiled code will continue to run.
If MAILLIB is terminated whilst any MAIL WHENs are active, SUPERVISOR will be forcibly delinked from the MAILLIB library but the WHENs will continue to remain active. When MAILLIB is restarted (by whatever means), MAILLIB will send a notice to SUPERVISOR to cause automatic re-linkage to the MAILLIB library to continue notice processing. If no WHENs are active, the request is ignored.
In addition, the logging of several MAILLIB commands such as UNLOAD was previously omitted; this oversight has been corrected.
Previously, printed SLOT dumps to non-email print destinations did not show the correct headings in the output; this problem has been fixed.
The SLOT command will now accept a '+' modifier; this option suppresses the display of the contents of the variable heap and shows 'WHEN STATE INFO' environment information normally only seen in a PRINT SLOT n report. An example of the command for WHEN slot 3 would be 'SLOT 3 +'.
The '+' modifier is not significant for printed SLOT requests.
Select least busy slot, if all slots are busy, when trying to decide into which HTTP slot to queue a request.
See OPAL D-Note 540.54 "WFL Restart".
From SUPERVISOR windows only, it is now possible to override the USERDATA-assigned email default normally retrieved by SUPERVISOR from the usercode PRINTDEFAULTS or EMAIL attributes.
This override uses an extension to the TERM command:
TERM EMAIL support@metalogic.eu.com TERM EMAIL *
In the first example, the provided email address temporarily overrides the usual default usercode email. The assignment remains in force until the window is closed by the user or a SUPERVISOR restart. No validation is performed on the email address and it must be less than 60 characters in length. Both the usual and override email addresses are shown in a TERM response.
The temporary email address can be removed by using the TERM EMAIL * command.
Previously, any ENTER command using a specific program name or wildcard selection without a program type modifier, such as DEF, ODTS, SITU etc, would cause SUPERVISOR to enter all commands and DEFINES from the source file. For example:
ENTER MYOPAL FROM *SCHEDULE/SOURCE ON DEV
This problem has been addressed by changing the way ENTER handles such requests. If the program keyword (i.e. DEF, ODTS, SITU) is absent and SUPERVISOR detects a valid ENTER command with a name or wildcard and followed by a FROM clause, SUPERVISOR will automatically assign the DEFINE program type. The following commands are now identical:
ENTER MYOPAL= FROM SCHED ENTER DEF MYOPAL= FROM SCHED
Also, ENTER will now permit an AFTER command group to be entered alone from an external file:
ENTER AFTER FROM *SCHEDULE/SOURCE
The generated ENTER command summary will show how many AFTER commands were successfully entered or those that failed.
The ASAP LOG command has been deimplemented; all Advanced Scheduling logging will now be handled using the SITE LOG and SITE LC commands.
Previously, use of the HS+ command would cause an INVALID OPERAND fault @ 57759500 if the Supervisor LOGGING option was set.
Also, changes to the log-in usercode for a WINDOWS stations using the TERM USER command were not being logged in the SUPERVISOR log. Now, all successful log-ins are recorded along with error messages for any security violations that may occur during the log-in process.
12:48:36 Msg:User FLEX & Access RULES logged in to LSN 183 12:48:32 Err:LSN 183 User FLEX Access RULES log-in failure 12:48:26 Err:LSN 183 User FLEX log-in failure 12:48:22 Odt:WIN(183):TERM USER
Passing a wild-card pattern to a DO of type DEFINE will now again return all matching OPAL defines instead of just the last one. This feature was inadvertently broken by SUPERVISOR change 540.70.
Previously, if a DO was waiting for a TT function to terminate (marked as 'WAIT TT'), SUPERVISOR could subsequently fault with an INVALID INDEX at 94299000 if this slot was manually terminated by a 'DO -' command. The fault would only occur when the slot executing the TT subsequently terminated and would be followed by repeated fault messages requiring a QUIT of SUPERVISOR to clear. These problems have now been fixed.
With NOTTLOGGING set, some TERM USER commands issued from TT functions caused corrupted messages to be recorded in SUPERVISOR's log. This problem has been fixed.
A new SUPERVISOR option, NOTTLOGGING, has been implemented to control the logging of commands issued from the Opal TT function. If the option is set (SO+NOTTLOGGING) then all command and response logging is suppressed from any TT function call.
The TERM USER + command will again correctly assign the current station usercode to any usercode-sensitive SUPERVISOR command such as DEFINE, WHEN or DO. This resolves a problem introduced by SUPERVISOR change 540.77.
If an HTTP DO is executed without a FOR, SUPERVISOR will automatically assign the current TERm usercode and accesscode to the slot, if available. This allows HTTP DOs to be considered authorised.
An HTTP ODTS which is initiated by a DO must have an associated USERCODE. The USERCODE can be associated by starting the ODTS with a FOR <usercode/<password>, or by starting the ODTS from a SUPERVISOR Window (whether or not it is logged in). This is the Initiator's USERCODE and it dictates where files which have been retrieved are stored and where files that are to be sent can be found.
The parameter to an HTTP ODTS DO may need to specify a <usercode>/ <password> to access a remote system's resource, for example a web site that uses Basic Authentication.
The Metalogic HTTP Server provides an MCP based authentication called RU Authentication, which uses the MCP's UserDataFile RU mechanism.
If the parameter to an HTTP ODTS DO does not provide both a <usercode> and <password>, so either nothing or just a <usercode>, and the remote host supports RU Authentication then the <usercode> is checked against the RU tables in the UserDataFile for the IP address and Domain Name.
DO of an HTTP ODTS has been implemented. It can be used to fetch resources from remote HTTP Servers.
It requires the SL XHR = *METALOGIC/XHR Library, which implements the XMLHttpRequest Object defined by the W3C at http://www.w3.org/TR/XMLHttpRequest.
The parameter to the HTTP ODTS defines the XMLHttpRequest, and has this syntax.
<method> <url> <user> <sync> [ <header>\<header...] ;<body> <method> ::= <text> <url> ::= "<http url>" | <http url> <sync> ::= SYNC | ASYNC | <empty> <user> ::= FOR <usercode>/<password> | <empty> <header> ::= <headerid> : <header value> <body> ::= <bytes>
Example: GET http://192.168.1.31:80/main.htm?type=test FOR NFT/NFT sync [Content-type:plain/text\accept:gzip]
The internal change applied by DNote 540.76 caused ENTER commands to fail with 'Text overflow' errors if issued from screens with column widths greater than 80 characters, This behaviour has been corrected.
A FOR modifier used in the TT or Keyin function can now inherit privilege from Usercode and Accesscode of the initiating Window.
Error messages for bad FOR syntax are now more descriptive.
The change applied by DNote 540.67 caused the Asgard and Infoconnect T27 emulators to fail to detect terminal page dimensions and to display a confusing error message. This problem has been corrected.
Previously, the CPU and elapsed times recorded for a standalone DO that was terminated because of an OPAL processor loop would be incorrect when seen in the SUPERVISOR log. This behaviour has been corrected.
The WS display has been changed to show the Advanced Scheduling key information correctly.
Lastly, an issue with the specification of ACCESSCODEs with multiple FOR modifiers used with AF commands has been corrected.
In order to make it make it easier to distinguish between any qualifiers and the action in an AF ? response a colon is now added after any qualifier. Ex. 1: BEGIN JOB TEST;DISPLAY "TEST" 2: FOR (PRIV0000) :TT DO ASMN_BASIC (PRIV0000)ASAPMIDNIGHT 3: ON 1ST DAY :TT DO ASMN_BASIC (SYSW0000) ABLOGIT_PTODB1
Using a colon in an AF command is optional but if used will now ensure that the time specification is valid. Previously it was possible for a bad entry in the time spec to be mistaken for an action.
Conditional Adds and Deletes using AFTER now check time qualifications more rigorously.
In some circumstances an AF+ or AF- command which did not find a matching entry could cause an invalid index fault at 89019000. This problem has been corrected.
The attribute PINGAVGTIME will now return valid timings for all PING requests that issue only one message. This change addresses a bug that caused very large time values to be returned for some hostnames.
Also, if a PING was issued from a DO with a context of MSG then SUPERVISOR did not forget the SCHEDULE space used to hold the MSG parameter passed to the DO. This caused subsequent SUPERVISOR restarts or SAVE SCHEDULE commands to show 'SCHEDULE UNMARKED AVAIL' warning messages.
Previously, the SOURCE attribute returned for very large OPAL DEFINEs (greater than 180 lines) would be truncated and could subsequently cause a STRING PROTECT fault at 95330000. This problem is now fixed.
The update to SCHEDULE version 19 described by DNote 540.68 could have caused 'SCHEDULE UNMARKED AVAIL AT nnnnn THROUGH nnnnn' errors during the next SAVE SCHEDULE command procedure. This issue has been fixed.
The version of the SCHEDULE file has been updated to 19; this change allows for future enhancements to the management of AFTER activities.
SUPERVISOR will now correctly handle COMS transferred stations which have Notify Text associated with the SUPERVISOR window. Previously, the command could have been lost. Further, the handling of older terminal emulators, as described by SUPERVISOR DNote 540.62, has been much improved and no residual screen messages will now be seen.
Previously, use of the FOR modifier for SUPERVISOR commands from MARC did not always work correctly. In particular, non-privileged MARC users, allowed access to SUPERVISOR commands via the TTINTERFACE directive, would not be able to use FOR commands for their own usercode giving the error 'ONLY ONE USERCODE ALLOWED'.
Previously, the REMOVE and CHANGE WFL functions, when called by the Opal WFL statement, were always forced through the system queues to enable better tracking of job messages otherwise WFL always returned a job number of zero. This is because single REMOVE or CHANGE requests do not generate a WFL job.
This behaviour has been changed: SUPERVISOR now does not force REMOVE or CHANGE through a queue but will generate a pseudo EOJ to signal that the action is complete. The WFL function result will always return the job number of METALOGIC/SUPERVISOR and the task number of the calling CONTROLCARD.
The pseudo station allocated to the METALOGIC/SUPERVISOR MCS is now given the name 'SUPERVISOR' instead of "PSEUDOnnnnn".
Previously, some memory components of a terminated WHEN slot environment were not being deallocated correctly causing problems when the slot was subsequently re-used. This issue has been corrected.
Some diagnostic code used to debug the ZIPFILE and UNZIPFILE functions has been removed.
SUPERVISOR's handling of older T27 emulators has been change to avoid problems where the emulator is unable to respond to a request for the terminal page layout (columns and rows numbers). This would cause the station to return the text "008402" and then unresponsive. Although the user still sees this text when using the window for the first time, the station will thereafter perform normally.
Previously, on certain MCP 53.1 levels, responses to the IK SHOW command would be truncated (typically limited to 2 screens) and would show an additional heading line on each page. This behaviour is due to MCP returning less lines than expected per page and is now detoured by SUPERVISOR.
The AFTER command has been extended to allow AFTER LOAD. Anything scheduled at this 'pseudo time' will be done whenever the new day's schedule is loaded.
The WFL function and the ON JOBMESSAGE context now allow an ODTS to participate in Remote File I/O.
Example:
#JobNo:=WFL('BEGIN JOB;STATIONNAME=A;RUN OBJECT/REM', 'MYID(STATIONNAME=A,MYUSE=OUT)');
If the <id> part of the WFL function is followed by an open parenthesis, then a comma separated list of attributes is expected, followed by a closing parenthesis. These attributes define how the ODTS will participate in Remote File I/O.
The attributes are,
STATIONNAME=<filename> (Required) PAGE=<integer> (Optional,Default 24) WIDTH=<integer> (Optional,Default 80) MYUSE=IN|OUT|IO (Optional,Default OUT)
The STATIONNAME specified in the attribute list must match the STATIONNAME attribute in the WFL Job ,for participation in Remote File I/O.
If MYUSE is OUT, then a Pseudo Station with the specified STATIONNAME is allocated.
The ON JOBMESSAGE context receives a WFLOPEN message when the Remote File is opened, a WFLOUT message when the programs writes to the Remote File, and a WFLCLOSE message when the Remote File is closed.
The JOBTEXT attribute contains information about the Remote File, or the data written, depending on the JOBMSGTYPE.
If MYUSE is IN or IO, then a Schedule Station is allocated, and the STATIONNAME attribute in the Job is changed to be a STATION attribute with the LSN of the Schedule Station.
When the Program Reads from the Remote File a WFLIN message is received by the ODTS and the Program waits for Input.
Input can be sent to the Remote File using the OPAL Transmit Function. This function requires an FRSN, which is available from the FRSN attribute of the JOB Context Object.
The LSN and FRSN attributes have been added to the JOB Context, and are valid for WFLOPEN, WFLOUT, WFLIN and WFLCLOSE messages.
The syntax AF <time> ON HOLIDAYS may now be used to schedule activities which should only be run on holidays.
This change also fixes a bug in the AFTER context where entries with the verb attribute = QUALIFIED returned some attributes from the previous entry.
The changes described by DNOte 540.54 caused multi-page LOG command responses to be handled correctly, only showing the first page. This problem has been corrected.
The LC CLOSE command now works correctly for the ASAP and SITE log files.
Log entries returned by the METALOG context now respect lower-case text and will deblank multi-line records.
This change supports several new attributes relevant for the MAILLIB environment:
MYSELF(TRANSNO) is a system attribute returning the transaction number of the last MAIL function call from this slot.
NICKLNAMELIST is a new SYSTEM ML attribute returning MAILLIB nickname information as a delimited list of entities, terminated by a semi-colon. Each entry has the nickname, mapped to a 'friendly name' followed by an email address list e.g:
:STIRLING=Local Metalogic Mail:Test1@metalog.com,Test2@metalog.com;"
The TRANSNO attribute in the METALOG context returns the relevant MAILLIB transaction number, if applicable, for the MAIL subcontext.
Previously, the generation of the LOGTEXT attribute by LOG-based EVALs caused significant initial pbit overhead for the SUPERVISOR stack. This overhead has now been eliminated allowing improved EVAL elapsed and CPU times.
All ZIP, UNZIP, ZIPFILE and UNZIPFILE requests will now be serviced by a new SUPERVISOR process called ZIPHANDLER instead of using the GRINDER task. This avoids GRINDER from being delayed by large ZIP requests.
By using indirect variables is is possible to create permanent variables with names longer than 17 characters. If any such variables existed then a SHOW PERM would cause supervisor to fault and restart. This problem has been corrected.
IF FOR <user1> FOR <USER 2> was entered and <User1> was the log on user for the Supervisor window and <user1> has accesscode needed then and ACCESS CODE required error was reported. The log on accesscode will now be correctly used.
Myself(Entries) now works in Actions entered from a SORT.
Recent changes to allow the new 'ASAP' mode in Supervisor did not allow the use of the FOR modifier in a WFL function. This restriction has been relaxed.
Although FOR <priv user> FOR <Non priv user> allowed the <non priv user> to be entered with no password, accesscodes still required passswords. This restriction has been relaxed.
Internal change to support SUPERVISOR logging facilities to ASAP and SITE log files.
In is now possible to enter from a symbol file which is in a container. In fact even from a container in a container.
Ex ENTER FROM OPALS/TEST IN "OPALS.CON" IN "META.CON" ON MYFAM ENTER REF OPALS/TEST IN "REF.CON" ENTER ODTS BOB_TEST FROM OPALS/BOB IN "BOB.CON"
The change described in SUPERVISOR DNote 540.35 did not allow dictionary names that were reserved words such as FROM, AS, FP or wild-card requests that started with such text e.g AS_=, FROM= etc. This problem is now fixed.
Further changes to the ZIPFILE and UNZIPFILE functions. Documentation as yet unavailable.
Preliminary support for ZIP and UNZIP functions, ZIPFILE and UNZIPFILE methods in both SUPERVISOR and FLEX.
A parametrised DO of the DEFINE context has been changed in two ways to allow faster and enhanced searches of the DEFINE dictionary.
1. The definition name passed to the DO may now be a wild-card,
allowing multiple DEFINE names to be processed in a single request.
2. An optional modifier of ODTS, SITU, DISP, MEMO, COMMAND or DEFINE
can be used as a filter for the dictionary search. The filter prefixes the definition name.
Some examples:
DO (DEFINE:SHOW(NAME)) OPALNAME DO (DEFINE:SHOW(NAME)) ODTS OPALNAME DO (DEFINE:SHOW(NAME)) ODTS OP= DO (DEFINE:SHOW(NAME)) SITU =
SAVE WHENS APPEND ... SAVE AFTERS ... AND SAVE DEF APPEND.... would overwrite the specified file instead of appending to it. The more commonly used SAVE DEF <pattern> APPEND.... worked correctly.
A new variant of the ENTER command is available. ENTER TRUSTED FROM ... will enter all commands from the specified file but any WFL command in AFTERs will not be checked. This allows the saved schedule from another system to be added even if some families specified in After commands are not yet available.
SUPERVISOR will no longer always automatically run the LOGREADER utility after a QUIT or restart. This used to occur unconditionally even if the SO TAPELIB was reset or the TRIM key was absent/expired.
Previously, long LOG CONFIG records greater than 1500 words received by a LOG-based WHEN could have caused SUPERVISOR to fault with a variety of errors including PROCESSOR LOOP. EVAL-based LOG requests were not affected by this problem which has now been fixed.
The change described by DNote 540.26 had the inadvertent side-effect of generic LOG-based WHENs or EVALs that used filtering by Major and Minor Types to ignore that filtering. For example, a SITUATION defined as LOG=27,6 would have received all LOG records instead of just Major Type 27,Minor Type 6.
It was also possible for certain LOG-based WHENs to stop receiving log events once the associated ODTS executed any WAIT statement. This was caused by SUPERVISOR failing to reinstate REPORT_LOG_ENTRIES capabilities for the slot after the WAIT had been satisfied.
Further, any PD EVALs that passed a very long directory request (or a corrupted request) would have caused SUPERVISOR to fault with a STRING PROTECT at 72092850. This problem also caused the attempted EVAL to appear in a WHEN ? response marked as 'Pending'.
All the above problems are now fixed.
Processor loop detection within the OPAL machine now provides extra information for determining the causes of unusual loop detection and generates both a programdump and timing information in the SUPERVISOR log. As part of the change, SUPERVISOR logging of various errors and displays generated out of the OPAL machine has been improved.
The ExternalCommand interface to Supervisor requires the caller to be running from a privileged or system user and for the codefile calling ExternalCommand to be MPed PU or Taking. The checks for codefile privilege were done in the ExternalCommand procedure but the checks for User privilege were done by Supervisor when processing the command. This had the unfortunate side effect that if an ODTS had been started via external command using a FOR prefix then any Supervisor commands issued by that ODTS would be checked as if they had been entered from External command. If the 'For Usercode' was neither System nor PU the command would be rejected with a 'Not Allowed' message.
All security checking has now been moved into ExternalCommand. If the calling task is not MPed PU or Tasking or if the calling usercode is not PU or SYSTEMUSER then the task will be dsed with no error message. If the Supervisor logging option is enabled then an 'Err' entry will be made in the Supervisor log giving the mix number of the task which attempted an unauthorised call on ExternalCommand with the reason that it failed.
If a DO of an individual SESSIONS context request was invoked after an earlier EVAL of a DEFINE context, then SUPERVISOR would give a STRING PROTECT fault at 92403600. This problem is now fixed.
Additional protection has been provided to ensure that failures in the contexts such as SL, SESSIONS and STATIONS are properly terminated and that resulting SLOT dumps do not fault too.
The change described in DNote 540.26 caused LOGICAL ASSERTION errors at sequence 97062000 for various EVAL contexts such as PER and MX.
Previously, EVAL/SORT requests for the PD context would fail to sort correctly if the attributes used to define the SORT were not used in either the associated Situation or Odtsequence. This problem is now fixed.
The ODTSCONTEXT attribute in the WHEN context now returns correct values after being broken by the change applied by SUPERVISOR DNote 540.24.
The SHIFT BEGIN command will now assign a default shift period of 8 hours if the command is not qualified by time. Previously, a SHIFT END command would have been scheduled for the same time as the SHIFT BEGIN and may have caused the shift to terminate immediately.
The SHOW GLOBALS command would have missed displaying a variable if it was a real and its name sorted alphabetically first.
Previously, TT function calls executed by Opal code from another TT were not logged in the SUPERVISOR log. This behaviour has been changed: it should be note that TT functions can still only be nested to one level.
The MYSELF(INPUTPARAM) or WHENID(INPUTPARAM) attributes now return the correct parameter when used in a PD context where the command is not passed to Flex.
HELP ATT :<Context> will now be treated as HElP ATT =:<context>
MYSELF and WHENID are now Synonyms.
When changing usercodes using the TERM USER command the most common next action was to enter TERM USER - to prevent the new usercode being used on all commands. This allowed the use of FOR <user> to be used selectively. The default behaviour for TERM USER has now been changed so that the new usercode is not active. To get the old behaviour a TERM USER + is required after a TERM USER.
If a system is running with the security option 'SECADMIN Authorized' then Supervisor now requires a SECADMIN usercode to set the USER for ODTSECURITY. As before to change or delete the USER for ODTSECURITY the current user must be used.
Error messages associated with the USE command are now more descriptive than the previous "Not Allowed".
The LOGTEXT and PRODUCT attributes in all variants of the METALOG context now return correct values.
Use of the LC command will now cause only one entry to be written into the SUPERVISOR log instead of two. The log record will include source information:
11:55:56 Lgc:Via ODT(1):Logged from the ODT
The original case and spacing of any LC text is now preserved though LC commands from an ODT are always upcased by the MCP unless quoted. Also, all SUPERVISOR commands issued from the ODT will now be logged without the 'TT' prefix into the log.
Occurrences of various 'SEND_ARY' messages seen during PD EVAL requests and instances of hung PD slots, marked as 'WAIT (FLEX)', have been corrected.
An unfortunate side effect of the changes in version 540.19 was that A DO of an ODTS where a parameter was passed would fail for some contexts. The contexts affected were MX,PRINTS and WHEN.
This change fixes a bug when using WHENID(INPUTPARAM) in a PD context.
WHENID(INPUTPARAM) now works correctly in the PD and After contexts. A 'bounds error' when entering a DO of an ODTS with context AFter has been corrected;
The use of FOR * in the WFL function would cause a security violation to be logged. The WFL function would proceed correctly. This problem has been corrected
The handling and reporting of errors for 'IN' files searches has been improved to provide more information about the failure. In particular, failed Supervisor PD searches did not always get an error returned in a timely manner.
An internal change has been made to prevent SUPERVISOR from overriding any external program STACK assignment.
The change documented in SUPERVISOR DNote 540.05 caused all TT commands used from an ODT to be subsequently ignored if an earlier TT command had generated a TT NS (because the output exceeded a page). This problem has been fixed.
Also with this change, the MAILERROR attribute will now return correct MAILLIB messages, causing the MAILLIB library to be invoked if needed. Previously, if the library was inactive, the text 'Unknown message error' would have been returned.
If a PD EVAL or DO request uses a ':' options modifier then FLEX utility will always be invoked. If the PD request is then called from a TT function and the ':' option is invalid, FLEX will return an error and the TT call is terminated.
Unfortunately, two error messages were returned to the TT - these were '<SITU> returned FALSE' and 'FLEX Option expected' - where only one was expected. The second message caused SUPERVISOR to handle it as an event notice and caused several possible subsequent failures. These were either INVALID OPERATOR at 91619520 or SUPERVISOR could hang indefinitely waiting for further message fragments for what it believed an incomplete notice. The only resolution in the latter case was to manually DS Supervisor.
The above problem has been resolved. SUPERVISOR will now return and log errors such as 'FLEX Option expected' without queuing a second message. The handling of incomplete notices has been improved to timeout after 10 seconds if no further message fragments are received. In such case, the following message will be displayed: 'Warning! Slot #nn time-out waiting for last message chunk'.
Previously, it was possible for SUPERVISOR to fault with an INVALID INDEX at 93704000 under the following unusual circumstances.
1. SUPERVISOR had been DS-ed or fault terminated whilst executing a TT function from within a CALL DO executed from a WHEN.
2. On SUPERVISOR restart, the WHEN too was restarted and the main ODTSequence was then recompiled and reloaded whilst running.
This sequence of events caused Supervisors' internal ODTS caching tables to become corrupted and attempted to execute new OPAL code from the wrong location. This problem is now fixed.
The TERM(EMAIL) and TERM(PRINTDEFAULTS) attributes now respectively return an empty string when neither EMAIL or PRINTDEFAULTS are set for the referenced usercode instead of a string of NULs.
Version540.08 corrected the When status display for active system ODTS nut not MSG ODTS. This change corrects that omission.
The change described by DNote 540.09 caused the Opal USERFN function to fault in the GRINDER process leaving the calling slot waiting on 'WAIT USERFN'. This fault has been corrected.
This changes moves heap data areas from the local slot environment to globally within Supervisors' stack. Opal functions such as KEYIN and DUMAP now run with improved performance especially where large data content is returned. This change is also necessary to support the forthcoming ZIP and UNZIP Opal functions.
The information returned by the WHEN ? command was invalid if entered from an ODTSeqence using the Keyin or TT functions. The ODTS which executed the command would be marked as "Waiting on time". It will now be marked as Active.
Previously, when using the AF - command to delete scheduled activities that were either WFL or operator commands, an extraneous message would always be displayed:
AF - 1100 ON TUESDAY:PER PK
DELETED FROM 1 TODAY SLOT, 1 TUESDAY SLOT NOT DELETED FROM 1 TODAY SLOT, 1 TUESDAY SLOT:ACTIVITY NOT FOUND
The above behaviour has been corrected.
Previously, any errors incurred by failed FOR commands were not being logged in the Metalogic LOG file because they were regarded as interrogatory. This behaviour has been corrected and all FOR modifier usage is now logged regardless of the command.
This change supports an extension to the OPAL WHENID attribute. A new mnemonic INPUTPARAM has been added.
WHENID(INPUTPARAM) returns the text of any parameter passed to thisSlot. EX. TT DO MIX_ODTS 1234,5678 WHENID (INPUTPARAM) would return '1234,5678'
TT EV PD_SITU DO PD_ODTS (*)=AX= IN "XYZ.CON" WHENID(INPUTPARAM) would return '(*)=AX= IN "XYZ.CON"'
MYSELF(FIRST) Returns the value of the TERM FIRST setting
The ODT COMPILERTARGET command was rejected when entered from a Supervisor window. It was treated as a Supervisor COM command. This problem has been corrected.
The Opal statement SHOW did not properly honour the terminals TERM FIRST setting. The last line of the first setting would be cleared. i.e. If TERM FIRST was 2 line 2 would be cleared.
The MAIL LOG will no longer return a multi-page response if the 'LOG' modifier was provided in lower case.
Previously, on busy systems, it was possible for a PD context DO to skip the first file returned by the requested search. This behaviour has been observed to occur particularly with file searches in wrapped containers and caused by a timing issue between the FLEX utility and the DO being ready to receive file information. This timing hole has been closed.
Also, a diagnostic change has been applied to SUPERVISOR's WINDOWS task to capture possible empty messages destined for a COMS SUPERVISOR window. If such a message is captured, the display "WINDOWS discarded empty type 14 message" will be seen and, on the first occurrence, a programdump will be taken.
This change fixes a bug seen when using AF - with the ON DATE modifier. If there were two or more entries which were identical apart from the date then the first ON DATE entry would be deleted no matter what date was specified.
Previously, on 54.1 Field Test MCP, a HO command request for a specific file would be unable to return the list of mixnumbers currently using that file. Instead, SUPERVISOR would return the error 'In use by MCP or unknown program'. This problem is now resolved and file user information will be correctly returned.
SUPERVISOR will now provide the correct diagnostic messages when a NAP Statistics Library problem is encountered: previously, an unhelpful UNKNON(32768) message would have been shown instead of the real reason. The undocumented NSL error 0 will now cause the calling script to be terminated and a library delink forced between the Metalogic NAPINTERFACE library and NSL.
Previously, if a <mixno>THAW was applied to SUPERVISOR, any attempt to then use any of its library entrypoints, such as those used by FLEX for PD requests, would fail. Because it is not possible for SUPERVISOR to re-FREEZE itself in its current incarnation, , SUPERVISOR will now automatically forcibly restart itself displaying the message:
SUPERVISOR RESTARTING DUE TO LIBRARY THAW
It is recommended that THAW commands are never passed to SUPERVISOR.
A new MAGUS configuration variable called SYS_LOGALL has been implemented to support a customer enhancement. This variable, supported by INSTALL's SYSTEM CONFIG menu, expects a usercode list (separated by commas) that is checked each time a LOG command is used from a logged-on remote station, typically a SUPERVISOR window.
If the logged-on usercode is in the list, SUPERVISOR appends '+' to all LOG commands (unless '+' is already present) so that each command can return more than one page of information. Any changes to the usercode list assigned to SYS_LOGALL will require a SUPERVISOR restart. This feature applies for all LOG commands for SUPERVISOR, TRIM and MAILLIB.
The change to the generation of NOT DELETED messages when deleting activities with the AF- command, as described in DNote 531.67, did not handle all situations. In particular, deleting an activity for a time that had no other activities scheduled would have not included all those inactive days in the 'NOT DELETED' counts.
The format of messages returned when attempting to delete items from the schedule when the item does not exist on all of the days specified has been improved.
Ex.
If TT DO TEST is only scheduled on Mondays at 1700 then AF - 1700 DAILY:TT DO TEST will return a better message.
Version 530.30 of Supervisor stopped the AF syntax ON nTH DAY or ON nTH WORKDAY from working if n was greater than 5. This problem has been corrected.
A quick way of changing TERM TRUNCATE settings for a SUPERVISOR COMS window or remotespo is now available. It is now possible to use 'TERM -' to perform 'TERM TRUNCATE FALSE' or 'TERM +' instead of 'TERM TRUNCATE TRUE'. It is still possible to provided additional TERM modifiers after the '-' or '+'.
Also, SUPERVISOR will no longer use its local unit tables to try and retrieve unit information for a tape that was created from a foreign SUMLOG. This could have caused an incorrect owner to be assigned or various run-time problems for SUPERVISOR.
SUPERVISOR will no longer display confusing configuration warning messages during its initialisation phase if the USE FAMILY .. FOR DUMP did not have a current setting. An unnecessary display message when LOGREADER is run with a specific SUMLOG has been removed.
The change described by DNote 531.60 caused OPAL functions such as PING, WFL and TT, when used as standalone statements, to generate the error message 'LOGICAL ASSERTION UNTRUE AT SEQUENCE 94231000' and a slot dump. This problem has been fixed.
A new USE FAMILY variant has been implemented to allow sites to change the location of SUPERVISOR's taskfiles (used for programdumps, debug tracing and ENTER listings) to a family other than DL BACKUP. This provides a mechanism for preserving Supervisor fault information which otherwise might have been missed and removed from normal housekeeping of the DL BACKUP family.
---- USE ---- FAMILY ---+-- <FamilyName> --+-- FOR --- DUMPs -----|
The setting is not applied immediately and a SUPERVISOR restart is required. Any pending status can be seen in the usual USE screen response. The '-' modifer can be used to cancel the current DUMPS setting (restart required) or a current pending assignment.
Although the location of the taskfile has been changed, there are no other effects on print request generation.
The EXTERNALCOMMAND library entrypoint is available for external programs to send commands to SUPERVISOR and wait for responses, including SHOW output from DO commands. This change enforces stricter controls on its usage.
SUPERVISOR now requires that not only must the invoking usercode be marked PU in the USERDATAFILE but also the codefile must be marked MP + PU or MP + TASKING. Any other caller will be DS-ed.
The TT function will now correctly inherit the 'LOG-ON' USERCODE. Therefore if a supervisor window is logged on as BOB then and ODTS started from that window could use TT("FOR BOB .....). i.e. with no password supplied.
This change also detours an MCP bug which stopped some IK IPSHOW METER commands from working from Supervisor Windows.
Previously, the PING function was not tracked correctly if it failed because of a TCPIP negative message response because of a semantic or syntax error. Because these responses were not detected, the slot executing the PING would then hang indefinitely. These failures are now detected correctly.
SUPERVISOR now requests its GRINDER process to handle the DCKEYIN of the NW TCPIP PING instead of being executed on the main stack. This was problematic because Supervisor's own usercode was associated with the PING request and could have failed NW AUTHORISE restrictions that caused a SEMANTIC ERROR: SECURITY VIOLATION. Issuing the NW TCPIP PING via GRINDER means that no usercode will be associated with the command (unless the PING function is executed from a slot which has a FOR usercode).
Two new PINGRESULT categories have been added to reflect the above changes: these are PINGSECURITYERROR and PINGCOMMANDERROR. The former is the special SEMANTIC ERROR/SECURITY VIOLATION case. The PINGTEXT attribute has been modified to incorporate these two error conditions and will show if PINGCOMMANDERROR is a semantic or syntactic error.
The Define context attribute Unsafe did not return correct values for Command programs. This has been corrected.
TT EV META_FIXCOM DO META_FIXCOM
will recompile all Commands marked as unsafe.
Where META_FIXCOM is define as
TT DEFINE + SITUATION META_FIXCOM(DEFINE): TYPE=COMMAND AND UNSAFE TT DEFINE + ODTSEQUENCE META_FIXCOM(DEFINE): IF NOT EXTRAENTRY THEN
ODT("TT SAVE COM ",NAME," APPEND OPALS/UNSAFE/COMMANDS")ELSE
ODT("TT ENTER FROM OPALS/UNSAFE/COMMANDS")
If a Supervisor window was defined in Utility to have 'Notify Open Text' then the text sent on Open was sometimes discarded. This would happen depending on the speed of the system and how busy it was. This timing problem has been resolved.
If an ODTS is waiting for input (i.e. using the INPUT function) and the user enters ?END then the Supervisor window will now be closed in addition to the ODTS being terminated.
Any Supervisor command Opal with a context other than System was incorrectly flagged as unsafe. This problem has been corrected but any 'unsafe' commands will need to be recompiled to remove the flag.
At TRIM-only sites, the capability to DEFINE PER scripts had been inadvertently disabled. This feature has been reinstated.
Previously, certain very rare SUPERVISOR faults could have caused multiple continuous 'PROGRAMDUMP #N .. NOT TAKEN' messages to be generated requiring SUPERVISOR, in one case, to be manually DS-ed. Now, if SUPERVISOR is able to trace such faults to an active WHEN slot then the slot will be immediately terminated stopping the flood of programdump messages.
Previously, the LOG command would be interpreted as the ODT LOG command, causing SYSTEM/LOGANALYZER to be run, when SO 47 (Logging) was reset. This behaviour has been changed; SUPERVISOR will now display the message "LOGGING (SO 47) is currently disabled" in the above circumstances. Note that SUPERVISOR allows LOGANALYZER to be executed from any remote station using the SYSLOG command.
Also, the special lookup string '#[LFA]' will now be translated to the hex string 48"0A" (Ascii LF) in Opal string expressions.
Version 520.93 introduced a change which allowed the use of a prefix of FOR <user> without a password, if the <user> matched the logged on usercode or if the logged on usercode is the ODT Security usercode.
Unfortunately this only worked for usercodes of 5 characters or less. This problem has been corrected.
This change relates to commands entered from a Supervisor window with both a user code and access code specified. If the command entered would invoke the WFL compiler and was not BEGIN JOB or START (ex COPY,ADD,ARCHIVE) then the resultant job would not inherit the access code and if ACCESSCODENEEDED was set for the user the job would fail syntax. This problem has been corrected.
If the Logon user was not active (TERM USER -) and the short cut prefix FOR <user> was used, where <user> is the log on user, the accesscode was not passed to any command. This caused similar problems as described above. This problem has been corrected.
When the log on user is active (Term User +) some system commands behave differently. Ex PD will only show files for the log on user. This can be overridden by prefixing the command with FOR *.
Ex FOR * PD BD/=
Supports new attributes VSVER,VSORIGINALREFS and ORIGINALREFS.
SUPERVISOR could have faulted with a STRING PROTECT at 80018000 when attempting to remove spaces from an in-line OPAL command causing the script to fail. This problem, which depended on the length of the command entry and previous usage in the requested WHEN slot, is now fixed.
The LC command will now be correctly logged in SUPERVISOR's log file with the correct category ('Lgc') instead of 'Odt'.
Regarding SLOT command responses or dumps, in-line OPALs will now show the size of the code currently used by the slot. Also, string variables dumped by a non-printing SLOT command will now only show the first 500 characters of each string.
After termination of all EVAL or WHEN scripts, the number of SITU and ODTS entries will be written into the SUPERVISOR log. For example:
OPAL scripts that attempt to use integer functions with numbers greater than 2**38-1 would fail with an INTEGER OVERFLOW fault. The OPAL machine will now give the fatal error:
"Value greater than 2**39-1 passed to INTEGER function"
The change applied by SUPERVISOR Dnote 531.18 caused the Opal PING function to stop working causing the executing slot to be marked as 'WAIT PING' even though the PING had completed. This problem has been fixed.
Two new attributes, SLOTMEMORY and VARIABLES, have been added to the WHEN context. These return, respectively, the amount of memory used by the slot for heap variable data, its internal data structures plus code size and the number of OPAL variables used.
In addition, SUPERVISOR will now record the SLOTMEMORY used into its log file when the slot has completed (if SO LOGGING is set). A typical log entry might be:
14:12:07 Whn:SLOT#9[64627] CP=0.09,IO=0.01,ET=55:32.80,MEM=20.5 Kb 14:12:07 Whn:OBI_HTTP+OBI_HTTP[64627] COMPLETED
SUPERVISOR will now unconditionally log the above information for any terminated WHEN; previously, this was not done.
OPAL now supports several ways to get attribute information for a specific file (using the PD context) from any contexts. The mechanisms are described below:
Firstly, the VIA function has been extended to allow attributes that are defined as 'LINK to PD' or 'LINK to USER' in other semantics to be used as references to the PD and USER contexts respectively.
HELP ATTR CODEFILETITLE
---- HELP ATTRIBUTES ---- CODEFILETITLE (SL) Returns STRING Link to PD in the form of File title Semantics : Returns the active codefile name for this SL.
For example, the CODETITLE attribute in the MX context returns the title of the codefile used by this process. Because this attribute is linked to the PD context, it is possible to easily return information about the file:
DEFINE + ODTSEQUENCE MXPD(MX): #SEG:= VIA(CODETITLE:SEGMENTS)
The SEGMENTS attribute is a member of the PD context and, if the codefile is resident, VIA allows the file size to be retrieved. Multiple attributes can be returned by using the #(..) function with VIA; in this example, the USERCODE attribute in the LOGBOJ context allows Userdata information about the job usercode to be retrieved:
DEFINE + ODTSEQUENCE BOJUSER(LOGBOJ): $UINFO:=VIA(USERCODE:#(FAMILY,,MAXPW,,MINPW))
To return the file size of the CM-ed MCP codefile:
DO (SHOW("MCP FILE SIZE: ",VIA(WM:SEGMENTS)))
Since there is only a small subset of LINK or reference attributes, a list of eligible attributes for SUPERVISOR can be viewed using the a HELP variant which uses the keyword REF instead of ATTR:
HELP REF =:MX HELP REF CODE=
The other two methods may be used from any context and do not use LINK attributes.
A new string variable method called PD has been implemented. Similar to the MX, PER, TAPEDB methods, a string expression can be used instead of a reference attribute and means that its usage is unrestricted. For example:
DEFINE + ODTSEQUENCE PDTEST: $FILE:= "*SYSTEM/FILEDATA ON DISK"; SHOW("INFO = ",$FILE.PD(#(RELEASEID,,CREATIONDATE)))
Alternatively, the PDKEY attribute, used with VIA, similarly allows a file title to be specified by a string expression. This has been provided to be compatible with the current VIA implementation but the PD method is preferred. The above example is shown below using PDKEY:
DEFINE + ODTSEQUENCE PDTEST: $FILE:= "*SYSTEM/FILEDATA ON DISK"; SHOW("INFO = ",VIA(PDKEY($FILE):#(RELEASEID,,CREATIONDATE)))
Reference attributes that LINK to the VL context now work correctly.
This change updates the help for the REC command to include details for the VER and WHO modifiers.
Previously, use of an Opal TT function from within another TT function, either directly or indirectly, had unpredictable results and caused any referenced heap data to be unreliable. SUPERVISOR will now correctly handle such calls but only to allow a nesting of one additional TT call.
Any attempts to use more than 1 nested TT call will cause the calling slot to fail with the error "Only one nested TT call allowed". Also, any DO commands executed from a nested TT function call will not be logged in the SUPERVISOR log or the SUMLOG, regardless of the setting of LOGMINIMAL and MONITORING, to aid performance.
Lastly, if a stand-alone DO of a PD Opal was attempted for for a non-existent file or directory, the failed DO slot would be marked as in-use and not reusable until the next SUPERVISOR restart. This problem has been fixed.
The Holiday ? and Workdays ? commands have been extended to accept an optional year parameter. If a year is specified, only holidays in that year are reported and a total of the holidays for that year is shown. This is intended to make it easier to confirm that all of the holidays for the year supplied have been specified.
Ex. HOLIDAYS ? 2009
JANUARY 1 JANUARY 2 APRIL 10, 2009 APRIL 13, 2009 MAY 4, 2009 DECEMBER 25 DECEMBER 26 Total Holidays :7
WORKDAYS ? 09
MARCH 21, 2009 APRIL 12, 2009 Total Workdays :2
This change supports a new SUPERVISOR context called STATIONS. The STATIONS context allows access to all active and inactive MCP datacom station information similar to that returned by the SYSTEM/DCSTATUS utility. These MCP datacom tables include both pseudo and physical stations and, where a station is in-use by a MCS, additional session information is provided.
STATIONS context scripts may only be used with the EVAL or DO commands. Information returned to the script includes detailed information about physical stations (as declared in the NIF) and MCP pseudo stations used to provide sessions for all MCS activity such as CANDE and COMS.
The STATIONS context accepts two subcontexts called NIF and PSEUDO allowing an EVAL to search either datacom station subset. In reality, the PSEUDO subcontext is of more interest since these stations are generally used by COMS and CANDE sessions. By default, if no subcontext is present, EVAL will return all station information.
Examples:
EVAL(STATIONS=PSEUDO:TRUE) DO (SHOW(LSN 5,,STATIONNAME 40,,MCSNAME)) EVAL(STATIONS:VALID(CURRENTWINDOW)) DO (SHOW(LSN,,CURRENTWINDOW)) DO (STATION:SHOW(LSN,,LASTLOGONDAY)) 16384
Note that the MCP allocates pseudo stations in two different LSN ranges; the first range appears immediately after NIF-declared physical stations and is used by DATACOMSUPPORT for its own station allocation. The second range is an expanded pool of pseudostations, allocated in blocks of 100 stations and starting at LSN 16384, which is controlled by the MCP.
The EXTERNALSTATUS attribute, if valid, provides additional information provided by Protocol Specific Handlers (PSH), such as CCF and TELNET, and will show connection details, IP address etc.
If the station is active with COMS, additional information such as current COMS window and MCS name plus usercode, accesscode and chargecode if present. Please see HELP ATTR =:STATIONS for a complete list of available attributes.
OBJECT/FLEX runs, invoked by :FLAT requests from PD scripts, will now not use a MCS session created by SUPERVISOR. SUPERVISOR will now write additional information into its own log file for any in-line OPAL that has been compiled from a TT function and has failed syntax. This change, in association with that described by MAGUS DNote 530.22, allows better diagnostics for in-line compiles that unexpectedly syntax.
Further, resource utilisation figures are now available in the SUPERVISOR log file at completion time for all WHENs, DOs or EVALs. For example:
12:09:49 Whn:SLOT#5 [49283] CPU=0.01,IO=0.00,ET=1:39.02 12:09:49 Whn:DO INLINE_5[49283] COMPLETED 12:08:10 Whn:DO INLINE_5[49283] RUNNING (SLOT 5)
This change supports another new SUPERVISOR context called SESSIONS. The SESSIONS context allows access to information about all MCP job and MCS sessions currently active in the system. This feature is made possible due to the new SESSIONS ODT command now available in MCP 53.1 and later versions of 52.1.
SESSIONS context scripts may only be used with the EVAL or DO commands. Information about the session include LSN, MCS number and name, Station name and log-on time.
Examples:
EVAL (SESSIONS:TRUE) DO (SHOW(SESSION 5,,STATIONNAME 40,,MCSNO))
DO (SESSIONS:SHOW(SESSION,,LSN)) 240,255,256
The latter would show session information for sessions 240,255 and 256 assuming that they are valid.
IN addition, SUPERVISOR now shows meaningful station names for all of its own MCS sessions. Any WHEN, EVAL or DO slot that is active will include slot information e.g. SUPERVISOR/SLOT_3/WHEN would indicate a WHEN run in slot 3. Previously, all SUPERVISOR session station names were indistinguishable with the name SUPERVISOR/SESSION.
A problem where some SUPERVISOR sessions, used to run the OBJECT/FLEX utility for PD context scripts, were not being released after FLEX has terminated has been resolved.
A complete list of SESSIONS attributes may be viewed by using the HELP ATTR =:SESSIONS command.
A bug introduced in version 510.66 meant that only the last holiday specified in a list to the HOLIDAY command was entered. The correct behaviour has been restored.
The commands DISP and HOLIDAY were not recognised as Supervisor commands from a Supervisor window and therefore required a TT prefix. This has been corrected.
Note that this correction means that where DISPLAY "TEST" could be entered from a Supervisor window to generate a test message, it now must be entered as ODT DISPLAY "TEST".
A new modifier has been added to the COMS function STATS will return statistical information for WINDOWS and PROGRAMS. For Direct Windows and REMOTE FILE Windows the information returned is for the associated Program. For MCS windows the information is for the Window. Cumulative information is maintained for subsequent calls from the same slot. COMS("STATS") return basic data, COMS("STATS FULL") more complete data. The data are returned in a comma separated list for each Program/Window with the Program/Window name as the First item. Each list is separated by a new line.
The items returned are as follows with an X indicating if the value is returned for STATS or STATS FULL.
Field "STATS" "STATS FULL" Name X X Type X Trans X X TotTrans X QDepth X X LastResp X RespTime X X TotResp X
The Fields above return the following:
Name Program name for Direct or Remote windows, Window name for MCS windows. Type DIRECT,MCS or REMOTE Trans Number of transactions since last call in this slot, blank if first call TotTrans Number of transactions since Coms started. Qdepth Blank for non Direct windows. QDepth at time of call LastResp Blank for non Direct windows. Last response time in milli seconds. Blank if no transaction in this period. RespTime Blank for non Direct windows. Total response time in milli seconds since the last call in this slot. Blank if first call. TotResp Blank for non Direct windows. Total response time in milli seconds since Coms started.
We are working on example ODTseqences to collect Coms stats in a .CSV file which could be opened by EXCELL. If you are interested in monitoring COMS in this way please contact METALOGIC for an example.
On later releases of MCP 52.1 and 53.1 ICs, the Metalogic RESTRICT command mechanism caused all operator commands issued from SUPERVISOR sources associated with the ODTSECURITY usercode to fail with the error 'INVALID SESSION NUMBER NNNN'(where NNNNN is SUPERVISOR's mix number).
These sources include:
- SUPERVISOR window with a TERM USER logged-in to the ODTSECURITY user - Any commands issued from an active WHEN or DO running with a FOR modifier set to the ODTSECURITY usercode
This problem is now fixed. Note that only SUPERVISOR installations with a valid ODTCONTROL key may use the RESTRICT implementation.
The string result values returned by DO calls that now fail or return missed results, when invoked by the TT function, will now return more informative messages and new TTLASTERROR values. This is true where a list of entities is passed to the DO and one or more of the calls fails e.g. invalid mix number or unit number.
'All Do parameters invalid' TTLASTERROR -> TTDONONEFOUND 'Warning: 2 DO parameter(s) invalid' TTLASTERROR -> TTDOWARNING
In the event that a standalone DO called from a TT is successful, the TT result will now be an empty string.
This changes supports a new SUPERVISOR context called SHOWOPEN. The SHOWOPEN context allow the retrieval of information about all open, in-use files on a specified disk family and includes both temporary and permanent files. If the family is the DL JOBS family, then Job File header information will additionally be returned.
SHOWOPEN context scripts may only be used by the EVAL command; there is no support for the DO or WHEN commands. Any EVAL command can be passed a valid disk family name, with optional familyindex, after the full EVAL command. The familyindex should be preceded by the '#' character e.g. DISK #3
Some EVAL examples are shown below:
EVAL (SHOWOPEN:TRUE) DO (SHOW(TITLE 50,,SECTORS)) [20] CDIMAGE EVAL (SHOPWOPEN:TEMPORARY) DO SHOW_TEMP DISK #3
If no family name is provided then SUPERVISOR assumes the systems file family that it uses (as assigned by USE FAMILY..FOR SYSTEM).
If the DL JOBS family is selected then SHOWOPEN will information about any Job Files that are active. Typically, in the MCP SHOWOPEN response, these appear as 'Job File for NNNNN' entries; for these entries, SUPERVISOR sets the JOBFILE attribute to TRUE and assigns the job number to the JOBNUMBER attribute. This can then be used to return additional information about the job file owner:
EVAL(SHOWOPEN:JOBFILE) DISP (#J:=JOBNUMBER 5,,#J.MX(NAME)) DEV #1
Previously, if the SLOT command was invoked from a TT function call, the response constructed by SUPERVISOR was not correctly returned to the caller, usually returning an earlier TT or KEYIN response. This behaviour occurred because the SLOT command was executed much later by the individual slot causing the caller to miss the response.
A formatting issue with SLOT responses generated by TT functions has been fixed;some minor enhancements have been made to the printed reports generated by a DUMP or PRINT SLOT command.
The deimplementation of default SUPERVISOR-assigned CHARGECODEs, first described by DNote 520.16, was intended to remove any CHARGECODEs from internal SUPERVISOR processes such as SAVE SCHEDULE etc. if no default USE CHARGE setting applied. This was unfortunately not the case and this behaviour has been corrected; SUPERVISOR processes will now run without a CHARGECODE if USE CHARGE is not set.
The USE command will now show 'Not assigned' if no default CHARGE has been applied.
The ASSIGNCHARGE subprogram is now not automatically bound into the METALOGIC/SUPERVISOR codefile. In the unlikely event that a site may wish to use its own scheme for SUPERVISOR billing, then this can still be performed by compiling a tailored version of the SUPERVISOR/ASSIGNCHARGE source and rebinding SUPERVISOR with the supplied SUPERVISOR/BIND job file.
In rare circumstances on multi processor system Supervisor could mistakenly treat the Grinder stack as being hung and DS it. Any task being performed by grinder would already have completed, so no work would be lost. This loophole has been closed.
Supports the changes made in Opal Gstablegen 530.40.
There was an unintended restriction when processing Supervisor defined commands. (i.e. Created using TT DEFIME COMMAND ...) If the total length of the name of the command and any mixnumber prefix was greater than 15 characters the command was not recognised. This restriction has been removed.
Previously, running a generic LOG-based WHEN could have faulted with an INVALID INDEX at 24945020 depending on the nature of other active WHENs. This problem is now fixed.
The change described by DNote 531.25 had the unintended side-effect of suppressing the restart of all WHENs after any SUPERVISOR restart. This problem has been corrected.
Previously, various errors returned by an EVAL of a PD context scripts were not handled correctly when invalid directory requests were passed. Illegal directory names passed to a PD EVAL caused SUPERVISOR to fail to report the error and would leave the EVAL frozen for some time, with zero evaluations instead of immediate termination.
If a PD context DO was passed a file or directory request that did not exist and the search was not :FLAT, the error 'File/Dir Not Found' would be correctly returned but the affected DO slot would not be terminated but remain in the WHEN list marked as 'Pending' and 'Queued'. These slots could only be cleared by a SUPERVISOR restart.
Both of these problems have been fixed.
After a TL, SUPERVISOR will now automatically copy the associated *SECURITYLOG file that is released as well as the SUMLOG. Upon successful completion of the COPY, the SECURITY will be removed from the DL family. This mechanism also applies if SO+AUTOTL is set and the SUMLOG is released manually by an ODT TL command or due to log size.
The example WFL job file *METALOGIC/JOB/ANALYSE/LOG, supplied with every SUPERVISOR release, has been changed to show optional processing of any SECURITYLOG file.
Previously, the GRINDER process could have faulted with a BOUNDS ERROR @ 41498600 under the following circumstances:
1. An OPAL DO executes a TT function call that performs a PD search
on a selected directory and returns 'NO FILES'.2. A subsequent OPAL executes in the same slot as the above TT call and
issues a WFL statement via an ODT statement.
The TT failure to find any files causes an internal WHEN slot array to be corrupted which remains until the slot is reused. The second OPAL references the corrupt value and causes GRINDER, which is attempting to execute the WFL request, to fault.
GRINDER faults will now display more detailed history information in the SUPERVISOR log as well as system messages when a fault occurs.
This change introduces a new mechanism for the handling of the LOGREADER utility. A new SUPERVISOR command called LR has been implemented which has the following syntax:
---- LR ----- +-- UPDATE -------+----------------------------| +-- <Log No> ------+ +-- <File title> --+
The UPDATE modifier allows SUPERVISOR to request processing of the relevant SUMLOG(s) since the last known update of the TRIM database. This is implicitly performed after every SUPERVISOR restart due to a QUIT SUPERVISOR command or H/L. The latest TRIM update timestamp can always be seen in a SHOW command response.
The LR command also allows the simple processing of any resident SUMLOG file. An individual SUMLOG can be specified by using the MCP log sequence number or its full title, including family name. If a log number is specified, LOGREADER will search for the first available SUMLOG, matching the log number with the last level of the title. Both the DL family and SUPERVISOR's USE FAMILY FOR LOGS setting are searched.
If the SO LOGGING option is set, LOGREADER will write log entries with a category of 'Lgr' into SUPERVISOR's log file. This includes any error and progress messages generated by LOGREADER.
As part of this change, the restart time for SUPERVISOR after a QUIT has been reduced though the observed reduction is affected by various factors including the AF RESTART schedule, number of active WHENs etc.
Support for the SUPERVISOR-FPORT port file interface, used primarily by LOGREADER but also available for external program agents, , has been deimplemented. Other mechanisms now exist to allow external commands to be passed to SUPERVISOR such as the library entrypoint EXTERNALCOMMAND. Further, support for older MCPs (pre-45.1) and Metalogic MCP METAPATCH files have also been deimplemented.
A new SUPERVISOR context, METALOG, has been implemented. This context allows retrieval of log entries from Metalogic's internal log files maintained by SUPERVISOR, MAILLIB and TRIM. Unlike SUMLOG-based scripts, METALOG Opals can only be used with the EVAL command as no event support is available.
The context has three subcontexts: SUPERVISOR, MAILLIB or TRIM. If no subcontext if given, SUPERVISOR is assumed by default; only one subcontext may be assigned. A small subset of attributes is available, similar to those available to the LOG context. The attributes can be viewed with the command HELP ATTR =:METALOG.
The implementation of METALOG log file browsing uses the same EVAL mechanism adopted by all LOG contexts. This allows start and end timestamps to be passed to the EVAL to filter the data returned. The EVENT attribute is particularly useful since this string value maps to the log entry category e.g. 'Err', 'Flt', 'Msg', Odt' etc.
For example:
EVAL (METALOG:EVENT="Err") DO (SHOW(LOGTEXT)) [12]
EVAL (METALOG=SUPERVISOR:TRUE) [@BACK 12 HRS FOR 20 MINS] DO META
However, it is not yet possible to use TITLE or LOGNO in the EVAL specification nor are some log-based MYSELF attributes (such as LASTLOGNO,LASTLOGTIME or LOGRECORDS) currently available.
This changes supports a new SUPERVISOR context called SL. The SL context allow the retrieval of information for all MCP SL functions from OPAL scripts using EVAL. The collection of SL attributes currently available can be seen in the response to a HELP ATTR =:SL command.
SL context scripts may only be used with the EVAL or DO commands; in the latter case, the SL function name must be passed as a parameter. For example, a simple scan of all SL functions whose name begins with the letter 'E':
EV (SL:FUNCTION Hdis "E") DO (SHOW(FUNCTION 17,,CODEFILETITLE))
To show which SL-ed functions have non-resident codefiles:
EV (SL:NOT PD(CODEFILETITLE)) DO (SHOW(FUNCTION 17,,CODEFILETITLE))
ONCRPCSUPPORT *SYSTEM/ONC/RPCSUPPORT ON DISK NCSDBSUPPORT (NAU)SYSTEM/NCSDB/LIBRARY ON DISK METAWEBLINK *METALOGIC/WEBLINK ON DEV MCPSUPPORT ">> CURRENT MCP <<" LANPRTSUPPORT *SYSTEM/LANPRT/SUPPORT ON DISK JAVACOMSSUPPORT *SYSTEM/JAVACOMSSUPPORT ON DISK HLCNTLISUPPORT *SYSTEM/HLCN/TLISUPPORT ON DISK
MCPSUPPORT can be excluded from the EVAL by changing the in-line:
EV (SL:NOT MCPLIB And Not PD(CODEFILETITLE) ...
For a standalone DO:
DO (SL:(SHOW(FUNCTION 17,,LIBRARYMIXLIST))) TADSSUPPORT
TADSUPPORT 12345,12444
Where LIBRARYMIXLIST returns the mix number(s) of the SL-ed library. This can then be used to determine all SL-users of the codefile. Note that the same codefile instance can be assigned to multiple SL-ed functions or the library may be SHARING=PRIVATE; either condition means that LIBRARYMIXLIST can return multiple mix numbers.
Some new attributes for the DEFINE context have been added to provide additional information concerning the method used to compile an individual DEFINE. These attributes include REFERENCE, REMOTESOURCE, SOURCEKIND and SOURCEHOSTNAME. Note that EXTERNAL is TRUE if an OPAL has been compiled from either DEFINE..FROM or ENTER REFERENCE.
These attributes allow a useful method for determining if an external OPAL files used with DEFINE...FROM or compiled from an ENTER REFERENCE is not resident. These external files are necessary to recreate a SCHEDULE from its saved symbolic.
For example:
EVAL (DEFINE:EXTERNAL AND NOT PD(FILENAME)) DO (SHOW(TYPE,,NAME))
The above EVAL would find all missing external symbolic files used to compile OPALs currently in the SCHEDULE.
A new lookup function, #[NOLOOK], allows text strings that have embedded lookups to be displayed to the screen or printed without SUPERVISOR or FLEX performing substitution. This is particularly useful for displaying or printing the SOURCE attribute in the DEFINE context.
For example:
SHOW("#[NOLOOK] #[SUB] #[MX=MARC]") would show
#[SUB] #[MX=MARC] instead of screen highlight and MARC mixnumbers.
Changes described in SUPERVISOR DNote 530.97 caused problems for MSG based Opal scripts that used the INPUT function. While the DO was waiting for user response to INPUT, it was possible for INPUT to return an empty string result because SUPERVISOR would also send any system message notices to the waiting slot (as if it was a WHEN). This caused the INPUT response to be added to the end of the message queue and subsequently ignored.
An interrogation of the WHEN slot using the SLOT command might then show:
Entered by : DO ABORT Handled 0 Restarts Times: CPU= 0:00:00.07, IO= 0:00:00.01, Elapsed= 0:00:43.40 Depth: 0 Originated from WINDOW 334 Session 4671 25 messages in WHENEVQ Grinder state is INPUT waiting for 0:00:07.45
In the above example, the ABORT script of type MESSAGE is waiting for user INPUT but has 25 messages already queued ahead of any INPUT response. This problem is now fixed.
Support new When context attributes TIMEDPER,SOURCE,WAITSECS.
A new OPAL context, called DEFINE, is now available for use. The DEFINE contexts enables access to the SUPERVISOR Opal program dictionary and detailed information about all DEFINEs and MEMOs held in the SCHEDULE file. Opal scripts that use DEFINE may only be executed by the EVAL or DO command and no WHEN variant is permitted. A complete list of the attributes can be seen:
HELP ATTR =:DEFINE
The DEFINE context may use subcontexts to filter the dictionary; these subcontexts are SITU,ODTS,DISP,COMMAND and MEMO. If one or more subcontexts are specified, only those DEFINES of the correct type will be returned. These program types also map to the TYPE attribute.
EVAL (DEFINE=ODTS,DISP:NAME HDIS "A")
The above EVAL will examine all ODTSEQUENCE and DISPLAY programs in the dictionary additionally filtering them by using the NAME attribute to those whose id starts with 'A'. Note that, in the present implementation, the list of DEFINES returned is unsorted and reflects the order in which they were entered into the SCHEDULE dictionary.
Useful attributes include information about the program context (CONTEXT), the source of the DEFINE (SOURCE), whether it is currently in-use by a WHEN slot (INUSE, CALLED) and creation and access timestamp information.
When a DEFINE script is executed by a DO, SUPERVISOR expects a single level identifier that denotes the name of a DEFINE. All instances of that DEFINE will be returned and executed by the script and no filtering by program type is performed. For example:
DO (DEFINE:SHOW(TYPE,,NAME 17,,CACHEDSLOTS) OBI_EXAMPLE
SITU OBI_EXAMPLE 0 ODTS OBI_EXAMPLE 2 DISP OBI_EXAMPLE 0
In the above case, OBI_EXAMPLE has three occurrences in the SCHEDULE and the ODTS is currently active and cached by 2 WHEN slots. Note that SITU and MEMO program types can never be cached.
By default, all privileged users can view the entire DEFIEN dictionary but non-privileged users may only view DEFINES locked under their own usercode or normal, unprotected DEFINES.
The GRINDER process will no longer have a default CHARGECODE assigned automatically by SUPERVISOR. Previously, the value "GRINDER" caused problems when GRINDER was used to start certain jobs or run MCS programs.
The SUPERVISOR BNALINKER process will no longer occasionally suspend with a "NO FILE FPORT" condition after a restart, prior to the running of the LOGREADER utility.
For commands entered from a Supervisor window where the response need more than one page Supervisor adds a TT + command to the home position of the screen. After the last page is displayed Supervisor restores the original command, overwritten by the TT +. If a TT prefix was used in the original command or a number of spaces preceeded the original command then the original command was not correctly restored.
Previously, SUPERVISOR would occasionally fail with a variety of faults during the execution of multiple Opal WFL function calls that used FOR clauses, typically using an Accesscodes as well as Usercodes. These faults included jobs failing incorrectly with errors such as 'INV CHARGE' or 'ONLY ONE USERCODE ALLOWED' and faults such as 'STRING PROTECT AT 76353000'. This problem is now fixed.
This change fixes bugs which could cause problems in an ODTS attached to a Situ of type SQ in an Eval.
If the ODTS included a Wait statement or an implied wait caused by a DCKeyIn or TT function, Supervisor would fault with an illegal swap.
If the ODTS performed an ODT command the ODTS would occasionally fault with an invalid index.
The 1200 card 1984 Attablegen output with its large Value Arrays will no longer be included in Supervisor.
If the DISPLAY program or inline OPAL used as a SORT clause generates a key that exceeds 255 bytes then the associated EVAL will now be automatically cancelled; previously, any sorting was disabled and the EVAL would have run. The error message is shown below:
"SORT clause key is invalid or exceeds 255 characters""
The TTLASTERROR attribute will return the new mnemonic TTSORTCANCEL if an EVAL with a SORT clause fails because of an invalid key inside a TT function.
If multiple SORT-based PD or LOG EVALs were run in parallel then it was likely that only the first EVAL to complete would have had the SORT criteria applied; other SORT clauses would be discarded. This problem is now fixed.
A WHEN ? will now correctly show the status of any EVAL run with a SORT clause.
If SUPERVISOR's USE DESTINATION is set to a MAIL server, SUPERVISOR will now automatically assign that destination to all printfile reports generated by users who have an EMAIL attribute associated with their usercode. Previously, no DESTINATION would have been assigned.
TT HELP ATT = : SYSTEM selects basic SYSTEM attributes only. TT HELP ATT = : SYSTEM ALL selects basic SYSTEM attributes and
extended SYSTEM attributes for PD, VL, NAP, METER and MAIL.TT HELP ATT = : ALL selects attributes for all contexts.
TT HELP ATT = : <context or ALL> (DETAIL) returns full attribute information for the selected attributes.
Time based MX and Per situations were evaluated twice when first started. This problem has been corrected.
If the WFLJOBREASON attribute was used in the same expression as any of the attributes WFLJobStatus,WflTimeStamp, WFLJobNo or WFLElapsed then the retuned value would be truncated to the length of the identity passed as a parameter to the attribute.
EV ...[@back..] [@After...] and [@Before...] now work with the MSG context.
The change described in DNote 530.98 occasionally caused a COMS VALIDATION_FILE error when attempting to send messages to stations that were active prior to a restart. This problem also caused the generated status message to occasionally have corrupt text appended. Both these problems have been addressed.
The objects found by a Situation in an EV command can now be sorted before being passed to the Display or ODTSequence. A <Sort Clause> is added to the command, where:
<Sort Clause>:
------- SORT ----+-----+--+------- <Display id> -----------+--! +- + -+ +-- ( -- <Inline Display> -- ) --+Examples: EV ALLMX DISP (MIXNO,,TIME(PROCTIME)) SORT - (PROCTIME)
EV (PD:TRUE) DISP (SEGMENTS 8,,TITLE) [24] SORT (SEGMENTS) (*)= ON =:FL
SORT - means "sort descendinh", SORT + "sort ascending". If neither "+" or "-" is specified, it defaults to 'descending". By using the new OPAL function, COMPLEMENT, multiple keys can be sorted in different directions. The Display given in the <Sort Clause> returns a String, which is used as a key for the sort.
There is a slight difference in the way the Display is evaluated, compared with normal use. In a Sort, an <OPAL String> element has a fixed width. If none is specified, then for a String, it is assumed to be 64, and for an arithmetic or mnemonic, it is assumed to be 12. The Display may not contain a new line (/) delimiter or have a key length of more than 256 chars. Literal strings and the ",," delimiter are allowed, but are unlikely to be useful.
If an entry limit is specified, this is only applied after the Sort, so all of the objects will be passed to the Situation. However, to keep the overheads in control, an entry limit of 256 is imposed, even if a greater value is specified.
Significant improvements have been made to the time taken for SUPERVISOR to restart and allow access to a COMS window. Previously, delays were caused by the following:
- cancellation of pending I/Os to unavailable ODTs - unnecessary QUIT and restart of the RECORDER library - delayed release of MCS privilege to the new instance of SUPERVISOR
During a restart, SUPERVISOR will now send a COMS message to the status line of all SUPERVISOR COMS windows, that were active at the time of the QUIT, indicating that the restart is complete.
This 50-card negative patch removes another unnecessary IO for EV/WHEN commands, and simplifies the code to prepare for sorting.
Previously, it was possible for TRIM to scratch a tape in the database even though the Volume Purge had actually failed because of a media or hardware error. This caused a discrepancy between the physical tape label (now not purged) and the database, causing problems if the tape was to be purged in the future. This occurred because SUPERVISOR was not checking the status flags of the attempted tape volume purge provided in the log entry.
This problem is now fixed; any failed Volume Purge will be detected and logged in the TRIM log as an error:
12:16:06 Err:MT 180 Volume [001302] UNLABELLED error during Vol Purge
Version 53.189.8008 of SYSTEM/PRINT/SUPPORT changed the interface to one of the Procedures used by Eval, Count and Objects to retrieve print requests. This change caused Supervisor to get a request number of zero in these commands.
Supervisor will now handle all current versions of printsupport correctly.
Move MEMORY (used for heap) out of Environment as precursor to improving handling of TT function.
The optimisation referred to by DNote 530.87 caused an intermittent problem where LOGEOJ WHENs could stop receiving EOJ notices, usually seen after a SUPERVISOR restart. The problem depended on the presence of a LOGBOJ WHEN and the order in which they were invoked after the restart. This problem is now fixed.
This change fixes WAIT(<msg boolean expression>) when in a message ODTS called with a parameter where the length of the parameter is less than the length of the message waited on. Previously random results could occur.
During periods of intense browser client activity, it wass possible for an HTTP WHEN to fault with an INVALID INDEX @ 95280000 when handling requests for a HTTP dialog that had already been delinked. This problem has been fixed and improved tracing of HTTP requests has been applied.
Version 530.58 allowed an ODTS of type MSG to be the subject of a call of a non MSG type. It was possible that if the called ODTS performed as WAIT based on a message attribute (ex. WAIT("BOB" IsIn TEXT) that an invalid index error could occur. This problem has been corrected.
Previously, it was possible for LOGBOJ WHENs to stop receiving BOJ or BOT notices from the MCP if other previously active Log Major Type=1 WHENs had all been subsequently deactivated. This behaviour has been corrected.
An issue where SUPERVISOR incurred additional CPU overhead during the handling of MCP events has been addressed.
Previously, it was possible for possible for valid CALL DOs to randomly fail with a 'NON EXECUTABLE CALL OR WHEN STATEMENT' error whilst a PD context script, that was linked to FLEX utility, was running in parallel. This problem could also have caused such PD scripts to generate spurious SEND_ARY displays at the same time and has now been resolved.
Opal programs with a context of VL will now return a KIND of TAPE for volumes that were originally entered into the Volume Library with a KIND of TAPEPE, TAPE9 or TAPE7. These old KIND mnemonics are no longer supported by most MCP levels.
SUPERVISOR will now automatically search multiple SUMLOGs when handling log-based EVALs if non-zero EVAL or DO limits have been applied. Previously in these circumstances, only the current SUMLOG would have been searched.
A new DEBUG option (31) is now available. If set, this option will unconditionally generate a compile printer listing for all in-line OPAL expressions compilations, invoked by any TT function, that fail to compile. This can helps in the diagnostics of large OPAL in-line compilations that are otherwise difficult to check for syntax errors. The generated print file will be automatically released to the Print System.
The TT function will now not return an EVAL response message to the originating station as this is already included in the TT function result and therefore under the control of the caller.
Previously, it was possible for SUPERVISOR to fault with a BUFFER IN USE error, reading or writing the *SCHEDULE file, when handling WFL jobs invoked via AFTER concurrently with a SAVE SCHEDULE command. This timing problem was observed with multiple WFL jobs all scheduled in the same AFTER minute as a SAVE AS command and now has been fixed.
Previously, SUPERVISOR would have faulted with REQUESTED MEMORY SIZE GREATER THAN 65535 WORDS at 25544000 or 95892500 when handling a very large KEYIN response from a MAIL LOG interrogation. This change, in conjunction with MAILLIB change 530.07, now fixes this problem.
PD context EV commands which implicitly use FLEX will no longer be limited to 256 evaluations.
For a certain combination of usercoded and non-usercoded activities specified in the same minute of SUPERVISOR's AFTER schedule, it was possible for BACKUPSCHEDULE to go into a processor loop when backtracking the schedule. The problem could have also occurred to SUPERVISOR when handling the same minute during its normal scheduling operations. This problem has been fixed.
Version 530.58 introduced a bug in CALL DO. A Call DO of a message type ODTS would fault if an empty parameter was passed.
Ex. CALL DO "TEST" ""
This problem has been corrected.
SUPERVISOR could have faulted with an INVALID INDEX @ 63103000 during the check of an AFTER command that was scheduling a START job with a FOR modifier. In such circumstances, the problem occurred when SUPERVISOR's check failed with an error such as WFL NOT AVAILABLE or SYNTAX ERROR. This fault has now been corrected.
Previously, it was possible for certain DEFINES with comments that extended to column 80 to become corrupted when written to a source file by the SAVE .. AS command. The corruption, caused by incorrect line wrapping, could then cause the DEFINE to fail to compile when it was re-ENTERED. This problem is now fixed.
Very old compiled MX=BOT SITUATIONs would not decompile correctly when written to disk by the SAVE.. AS command or displayed by a DEFINE ? command. The context and subcontext for these OPALs would have shown as empty. When executed, any WHEN or EVAL attempting to use an old MX=BOT SITU will now fail with 'MX=BOT SITU CODE TOO OLD: RECOMPILE NEEDED'. Both DEFINE ? and SAVE will now show the correct context.
SUPERVISOR will now not give a command error when entering a SO+ option list from an ENTER file should any of the option numbers be invalid. The offending options will be ignored.
The LC CLOSE command will now correctly close the current SUPERVISOR log file; previously no action was taken.
The behaviour of the SUPERVISOR SO command has been changed. SUPERVISOR will now automatically reset any options that were set on an earlier release but have since been deimplemented. Secondly, changes using SO+ or SO- will now return only those options that have been altered by the command. This makes SO identical in behaviour to the MCP's OP command.
Various minor fixes concerning the logging of commands by SUPERVISOR have also been applied.
This change supports the new Opal PING function as described in OPAL DNote 530.25.
Previously, SUPERVISOR did not restart correctly after certain HISTORYCAUSE reasons such as fatal I/O or datacom errors. In the case of an OPAL script receiving a fatal I/O error using the OPAL WRITE method, SUPERVISOR did not disable the slot prior to termination and did not restart. This bahaviour has been fixed: SUPERVISOR will now automatically terminate the faulting slot and restart in such circumstances. The handling of fatal WRITE failures has been made more resilient by the change described in OPAL Dnote 530.26.
The mechanism using the NODEFAULTUSE setting on the Supervisor usercode to control password validation on the FOR command has been changed. This feature is now controlled by a new USE variant called NOPASSWORDS which can only be set by a FOR usercode that has both PU and SECADMIN privilege. The setting of the NODEFAULTUSE attribute on Supervisor's usercode now has no effect.
A modifier of '+' or '-' must be specified with the command:
FOR META/PW USE NOPASSWORDS +
If this NOPASSWORDS has been set, additional text will appear in the USE response:
PASSWORD VALIDATION: NOT ACTIVE
SUPERVISOR's utility commands such as JAM will now not generate an unnecessary Userdata security violation when executed from a SUPERVISOR window.
The changes applied by SUPERVISOR DNote 530.68 had several further side-effects, First, multiple WHEN <Situ> DO <Odts> combinations using the same <Situ> were now unintentionally permitted and, secondly, it was not possible to cancel an active WHEN using the WHEN <Situ> DO command unless the WHEN had been invoked by a SUPERVISOR restart. These problems have now been resolved.
A long-standing issue where a LOG context EVAL or WHEN command would give the error TYPE OF ODT SEQUENCE MUST MATCH TYPE OF SITUATION has been fixed. This always occurred when the linked ODTS or DISPLAY was an in-line OPAL without any context.
Lastly, a DO of a VL context Opal will now not fault with an INVALID INDEX @ 93667900 when processing a list of volume serial numbers.
A subset of attributes called SYSTEM MAIL is now available; these attributes provide run-time and configuration information for the Metalogic MAILLIB library. Only available to SUPERVISOR, information may be obtained by the command:
HELP ATTR =:SYSTEM MAIL
The changes applied by SUPERVISOR DNote 530.68 caused all in-line OPAL commands to fault with a SEG ARRAY error at 72667800. This problem has been resolved.
For multi-page responses to the SHOW PERM command, the correct relevant heading will now be shown on page numbers greater than 1.
An old optimization in Supervisor delayed loading the ODTS or DISPLAY in a WHEN/ONCE/EVAL until the first entry. But info was needed from the record in the Schedule, so an I/O had to be done anyway. Even worse, the info is also needed for both the Situation and the action at slot set up time, so another read resulted. Now, the code is always loaded at initiation and kept in overlayable memory, even if it is never called. The trade-off of memory and CPU/IO resources has changed significantly since this was first programmed.
The running of different types of OPAL has been standardized, with a reasonable reduction in source size, and allowing new types in the future with minimal extra coding.
The FP command will now display the text 'DU INFORMATION UNAVAILABLE' if SUPERVISOR is unable to retrieve family DU information for a specific disk unit. Previously, values of 'NONE' would be shown and tabulation of individual lines would be incorrect. Typically, such behaviour would be shown if duplicate pack families were present on the system.
Usage of the LC command will now be recorded in SUPERVISOR's log file with the 'Lgc' category instead of 'Odt'. This change means that only one entry is logged instead of two ('Odt' and 'Lgc') as in previous versions. The 'Lgc' entry retains command origin information.
Previously a WHEN slot which had been started from the schedule (i.e via an AFTER command) would appear to have been started from an ODT.
With this release, an EV ? will show "After" in the first column if it was started from the schedule. An Opal program dump will show "Originated from Schedule." and the WHENID(STATION) attribute will return "After".
TRIM now supports separate scratch pools for both the DSI and UNISYS settings of the USE SILO environment. Previously, scratch pools could only be assigned for DSI environments.
The two scratchpool lists are maintained independently depending on the setting of USE SILO so it possible to switch between them. However, in a mixed DSI+UNISYS SILO enivironment, only the DSI pool list will be active.
If a supervisor Opal of type command was executed from a Supervisor window and the response was longer than one screen, there was a problem. At the end of the response the original command was not correctly restored to the first line of the screen, instead TT COM was written to the first line.
A bug was also corrected where the TERM FIRST setting was not respected on continuation screens.
ENTER COMMAND <pattern> FROM <file> now works correctly.
The implementation of the USE SILO interface for SUPERVISOR has been rewritten to allow future TAPEMANAGER library development to perform its own checks on tape assignments. The functionality of USE SILO is unaffected by this change.
DUCHECKERBOARD will now return a FILEKIND of JOBCODE for 'Job file' and 'Obsolete Job' areas instead of JOBDESCFILE.
This change supports the new attribute DFHIMAGE for both FLEX and SUPERVISOR, as described in OPAL DNote 530.19.
Some minor issues with the handling of large output from the SHOW statement, introduced by change 530.55, have been addressed.
It is now possible to 'CALL DO' and ODTS of context MSG from any other context. This is particularly useful since it is possible to pass a string parameter to such an ODTS. Ex. CALL DO "PARSE_INPUT" $S; would be valid from any ODTS.
There is a limit of 15 for the depth of such CALL DOs where each passes a parameter. ie. If A1 calls A2 which calls A3 ....A14 which calls A15 and all pass parameters then if A15 call A16 with a parameter it will abort with an 'environment depth exceeded' error.
Any statement which requires a change of environment also temporally increments this limit so a .TAPEDB method or OBJECTS call in A15 above, would also abort.
This change also fixes a bug in the .TAPEDB method when used on a slave system. When used with an integer variable no attributes were returned if the variable contained less than 6 digits. If used with a string variable when the contents of the string were numeric, less than six characters and not zero filled, no attributes were returned.
A very unlikely bug which could cause a 'bounds error' if a .TAPEDB method was used on a slave system soon after the first access to a Prints context.
Previously the use of the methods .WHEN, .TAPEDB or .PRINTS in ODTS of context MSG, LOG, TAPEDB, WHEN, PRINTS, could corrupt any subsequent access to the attributes of the context.
The JS format of the DUCHECKERBOARD attribute would return an extra comma after the first '[' if the sector start address provided by the caller did not coincide with the beginning of a row boundary. This problem has been fixed.
Further, the Fixed, Temp and Open flags provided in DUCHECKERBOARD output (see DNote 530.55) will appear as values of 0 or 1 instead of the literals 'true' and 'false'.
The DUCHECKERBOARD attribute now includes a FiLEKIND mnemonic for each file area that is mapped and appears after the file title. For example, the CSV variant will appear as:
[Start sector,Sector count,Title,Filekind,Fixed,InUse,Temp]
4028,227796,41,*DEV/PI0017M2007301A,PROMBURNERDATA,FALSE,FALSE,FALSE
Similarly, the web JS format includes the FILEKIND as a quoted string. Special areas such as 'Label','Unavailable' , 'Olay Row' and 'MCP Info' return empty strings.
The DUCHECKERBOARD attribute can only return a resultant string of 2,000,000 characters so, if a continuation call is required to return the rest of the map, this can be detected by using the DUNEXTADDRESS attribute which returns the last address handled in the previous call plus 1. When DUNEXTADDRESS returns 0, the scan is complete.
An example OPAL script to return a complete map of the family DEV Familyindex #1 in CSV format:
#CAP:= DUCAPACITY("DEV",1); #START:=0; Do Begin $MAP:= DUCHECKBOARD("DEV",1,#START,#CAP-#START); %Code to process $MAP goes here End Until #START:=DUNEXTADDRESS Eql 0 Or $MAP Hdis "ERR";
Previously, the Opal SHOW statement would output any line of text up to a new line marker (/) or the width of the screen (typically 80 characters). This behaviour could be changed by setting TERM TRUNCATE FALSE from the station causing each long line to be split into multiple 80-character lines but its use is inconvenient and has other effects.
The processing of SHOW output has now been modified to behave as though TRUNCATE is always TRUE (the setting will actually be ignored). All data provided within a SHOW statement will now be visible regardless of line length; as before, any SHOW output will cause Insert-Line actions for each line of output sent to the station. Note that the SHOW statement in FLEX already exhibits this behaviour.
A new OPAL attribute called DUCHECKERBOARD is now available which can provide a detailed file analysis of any sector range on a selected disk family index, similar to that performed by SYSTEM/FILEDATA, allowing access to such information from OPAL and particularly the Metalogic Web system.
DUCHECKERBOARD returns a Checkerboard Map of the family specified by the first string parameter. Other parameters specify a family index, a sector start address and the number for sectors to be mapped from that start address. For example:
$MAP:=DUCHECKERBOARD("DEV",1,0,40000)
The above will perform a checkerboard address map of the family DEV, family index #1, starting from sector 0 for 40,000 sectors.
The result is an array of file mappings which detail start address, number of sectors, row count, file name and several row status flags (Fixed, Inuse, Temporary). By default, the information is returned in JS format suitable for web usage but making the family index negative presents the same information in CSV format. Special areas such as 'Label','MCP Info' or 'Olay Row' will appear where appropriate instead of the file title.
Please see HELP ATTR CHECKERBOARD and JAMPACK DNote 530.03 which describes the implementation in greater detail.
The OPAL function WFL will now allow up to the maximum limit for a CONTROLCARD call of 65,500 characters. Previously, the WFL function only permitted 16,398 characters. It is not possible to pass a WFL command string longer than 65,500 characters; such a request will cause the WFL function to return an error value of -10 (WFL TOO LONG).
Previously, passing strings longer than 1940 characters using the OPAL DISPLAY statement would have caused a MESSER FAULT: CASE 7 SUBCASE 34 entry in the system log and the message would not be displayed. Because this is a MCP limit, SUPERVISOR display messages are now truncated to 1940 characters to prevent this problem.
Should certain OPAL functions such as DBS, COMS, WFL and KEYIN fail due to programmatic errors or external influences, SUPERVISOR will now record the problem in its own log and better report such failed requests to the calling OPAL.
Previously, SUPERVISOR could have faulted with a SEG ARRAY ERROR @ 77057900 if the same WHEN slot was used first by a MSG-based DO and subsequently by a USER-based DO that had not been passed a usercode by the caller. This minor bug is now fixed.
The execution of standalone AFTER context ODTSEQUENCEs with the DO command expects a user-provided SCHEDULE file key to retrieve AFTER record information. However, if the DO Was executed inside a TT function, it was possible for SUPERVISOR to fault in the procedure GETAFTERINFORMATION when building the key or to return information for the correct SCHEDULE record. This problem is now fixed.
The FORTEXT attribute in the AFTER context will now return the string value 'FOR *' if the calling EVAL/DO slot is running under a usercode but the selected activity is NOTlocked with a usercode. Previously, FORTEXT would have returned an empty string in these circumstances.
A new SUPERVISOR SO option called LOGGING (47) has been implemented. When this option is activated (off by default), SUPERVISOR will log all user activity, unsolicited messages and error reports into its own private log file. when active, these log files can be accessed by the LOG command; please see HELP LOG for more detailed information.
Further, OPAL compiler faults are now logged correctly in SUPERVISOR's log file; previously these were ignored.
Previously, usage of a single statement REMOVE or CHANGE statement within a WFL function was not handled correctly by SUPERVISOR. No valid BOJ or EOJ notices would be detected and any generated messages would be assigned the wrong mix number.
This occurs because of the way that the MCP optimises such simple WFL statements by suppressing a job stack; SUPERVISOR now jackets such statements with a BEGIN JOB..END JOB pair to ensure that valid job notices are provided.
WHENID(STATION) would cause an integer overflow fault if run via the Marc TTInterface. It will now return "Marc".
The change described by DNote 530.42 caused a problem if any of the days referenced in a date range was the current date. In this case, although the current date would be correctly handled, later dates in the range would use an incorrect schedule day. For example:
EVAL (AFTER:TRUE) [@21/4/2008-23/4/2008] DO AF
If todays date was the Tuesday 22nd April, then the first two days of the range would be handled correctly but the 23rd would have erroneously loaded SUNDAY's schedule instead of WEDNESDAY. This problem has been corrected.
Previously, an 'AF ? ON DATE < dd/mm/yyyy' command where dd/mm/yyyy was todays date, would have returned all daily activities instead of filtering by the specified 'ON DATE' modifier. This problem has been fixed.
This changes supports the new DAY attribute in the AFTER context, as described in OPAL GSTABLEGEN DNote 530.14.
The formatting of AFTER response messages has been improved to provide detailed information about the processing of the command including which times slots were activated, deleted or ignored. Previously, the messages generally returned simple counts.
Some examples of the message changes for a new AFTER insertion:
SCHEDULED IN 5 TODAY SLOTS SCHEDULED IN 28 SUNDAY-WEDNESDAY,FRIDAY SLOTS NOT SCHEDULED IN 5 TODAY SLOTS: PAST TIME(S) IGNORED NOT SCHEDULED IN 3 SUNDAY SLOTS:ALREADY PRESENT SCHEDULED IN 1 COLDSTART SLOT
For an AFTER deletion:
DELETED FROM 3 TODAY SLOTS, 16 TUESDAY SLOTS NOT DELETED:1 TODAY SLOT IN PAST NOT DELETED:NO ACTIVITY FOUND
To assist the Metalogic web browser interface for schedule maintenance, the AFTER command has been modified to allow requests to be verified without updating the live schedule. Prefixing the '*' character prior to the AFTER keyword causes this simulation to be enforced and, if requested, commands are processed as usual but no physical I/O update is performed on the SCHEDULE file. In addition, any generated messages will be prefixed by the text 'WOULD BE' or 'WOULD NOT BE'.
Some examples:
AF * 1300:TT DO TEST WOULD BE SCHEDULED IN 1 TODAY SLOT
AF *+ 1500:TT DO TEST2 WOULD NOT BE SCHEDULED IN 1 TODAY SLOT:ALREADY PRESENT
AF *- 1000-1100(20):@1 WOULD NOT BE DELETED FROM 3 TODAY SLOTS WOULD NOT BE DELETED FROM 1 TODAY SLOT:PAST TIME(S) IGNORED
Lastly, the HOLD modifier (a variant of DELAY) for the WHEN command has now been deimplemented.
Version 521.13 introduced a bug in saving InLine Opals.
I.E. TT DEF + ODTS MYINLINE INLINE would no longer work.
This problem has been corrected.
The FOR specification, used to lock AFTER activities under a usercode, will now not be included in the ADDTEXT and DELETEXT attributes of the AFTER context. Any FOR assignment can still be determined using the FORTEXT attribute.
Previously, invoking AFTER commands with the Opal TT function would generally fail with the error 'MORE INPUT REQUIRED SCANNING :'. This problem only affected AFTER command usage in TT and is now fixed.
The AF ? ON DATE command will now use the live loaded days schedule for TODAY if the ON DATE provided matches the current date. This means that the AFTER command response will now exactly match that of an unqualified AF ? interrogation. This behaviour change allows manual AFTER modifications for the TODAY schedule to be correctly shown.
Similarly, AFTER context EVALs which have a date range assigned will now recognise if any date in that range is TODAY. If so, the ONTODAY attribute will return TRUE, SCHEDULEDAY will return the current julian date and all activities for TODAY's schedule will be returned.
SUPERVISOR will now compile in-line OPALs inside its main stack instead of invoking a separate compilation process. This is a performance improvement allowing in-line requests to be processed rapidly without tasking overheads.
Help has been added for the MAIL option of the USE USER command.
Previously, the AFTER context KEY attribute would return a key string with an extraneous comma if a specific date was requested in the calling EVAL date/time specification. For example, requests such as 'EVAL AF [@25/3/08] DO AF' would generate typical KEY attribute values such as '2008085,175,,1'. This problem has been fixed.
Version 530.36 did not strip tailing blanks from a wildcard pattern. This has been corrected.
Subcontexts for AFTER SITUATIONS will now be shown correctly in a DEF ? response. Further, restrictions on the ADDTEXT attribute have been relaxed - this will now always return an AFTER command string but may not be valid for certain complex entries in the schedule for TODAY.
For some time now, SUPERVISOR has not been writing flagged activities such as SAVE SCHEDULE, PRINT SCHEDULE etc. into the decompiled symbol file created by the SAVE SCHEDULE AS.. or SAVE AFTERS AS.. commands. This oversight has been corrected.
Scheduling SUPERVISOR activities at 2359, other than a PRINT SCHEDULE, is not generally recommended. This is because SUPERVISOR, to ensure that the new days schedule is loaded promptly at midnight, may wait for up to 60 seconds to ensure that MCP date and time are properly synchronised on certain machine styles. Because of this, scheduled commands may result in being processed after the schedule has loaded.
Tape directories and LibmaintDir directories my now include ON <familyname>. PDT will now accept an ON part in the pattern.
Ex PDT MT 80 =/TEST ON =
Note that if an ON <familyname> is in the directory an ON = or ON <familyname> may be requred in the pattern.
Previously, all DO commands executed by an AFTER would only be marked with a 'postscript' of 'OK' or 'COMMANDERROR' as seen in an AF ? response. In the event that a scheduled DO command invokes a WFL job via the ODT statement then the postscript of the activity will now get updated with the job number and status of the WFL job (as seen with a WFL activity explicitly scheduled by an AFTER) at run time.
Note that this update only occurs for the first WFL job that is processed by the DO since it is not feasible to hold information for more than one WFL entity in an AFTER record.
For example, consider the ODTSEQUENCE DOJOB defined as:
DEFINE ODTSEQUENCE DOJOB: ODT("START *TEST/JOB ON DEV");
If the ODTSEQUENCE had been successfully invoked at 12:40 by an AFTER:
----- SCHEDULE after 12:40 TODAY @ 12:40:00 19/03/2008 ----- 1: TT DO DOJOB :(JOB OK,#34390) 2: TT DO DOCOPY :(OK)
The job number 34390 refers to the successful initiation of *TEST/JOB.
The change described by SUPERVISOR DNote 530.26caused some scheduled AF activities to be processed up to a minute later than their intended times. This behaviour has been corrected.
Also, a problem where SUPERVISOR emitted erroneous GET/SET STATUS ERROR #0 messages when returning certain command scan errors has been fixed.
The change described in DNote 530.28 caused problems with the PDT command. From SUPERVISOR's MARC Directive interface, the command would consistently return 'ok' instead of a file list; from a Supervisor window a file list would be correctly returned but certain error messages would be corrupted. These problems have been resolved.
For DO commands initiated from a Supervisor-COMS windows, the change described in SUPERVISOR DNote 530.31 had the side effect of forcing the station log-on usercode to be unconditionally assigned to the DO. This behaviour has been corrected.
Also, the optional use of ":" to separate hours and minutes in EVAL time-ranges has been restored after being inadvertently disabled by changes applied for the AFTER context.
The AFTER attributes ACCESSTIME, AMENDTIME and CREATETIME will now return the correct time of day and therefore matching the time shown in the ACCESSTIMESTAMP, CREATETIMESTAMP and AMENDTIMESTAMP values.
Usage of the Opal DBS function and the VDBS method in series within the same ODTSEQUENCE and referencing the same mixnumber for both calls caused the second call to return invalid data. This occurred because SUPERVISOR incorrectly tried to optimise the second call, believing that he already had cached the data despite DBS and VDBS being incompatible. This problem has now been fixed.
Support for using C WITH OPAL AS $AUTO/ENTER
Fixed a problem when "NOT ALLOWED' was returned on a busy Supervisor.
Rebuld messages were only returned for the first compile after a Supervisor restart.
The ORDINALWEEKDAY and DAYMASK attributes have implemented for the AFTER context allowing better identification of AF activities constructed with modifiers such as 'ON Nth MONDAY' etc. The ONWEEKDAYS, ONWEEKENDS and ONWORKDAY will now work correctly for all activities which use these modifiers.
A problem where SUPERVISOR could fault with an INVALID INDEX at 66172000, when parsing unusual AFTER requests with invalid day ranges such as 'AFTER+0100 ON SATURDAY-SUNDAY', has been fixed.
Previously, it was possible for some EVAL commands to append incorrect error messages such as 'Max LOG limit reached" even though the EVAL was not a LOG context variant. This occurred if the EVAL had used the same slot as an earlier LOG-based EVAL that been stopped with the max LOG limit condition. This behaviour has been corrected.
Previously, the USERCODE and ACCESSCODE attributes in the AFTER context returned corrupted strings if their values were exactly six or twelve characters in length. This problem has also been corrected.
The changes described in DNote 530.26 caused any WFL jobs invoked from a scheduled TT DO and run with a valid usercode and accesscode, to fail with an INV ACCESS error. Further, SUPERVISOR was not correctly handling notifications for jobs that had been invoked from WHENs using an ODT statement to run the WFL job. Depending on the Opal code and context being used, the calling slot could unexpectedly fault or be triggered by a second, corrupt notice. Both these problems are now fixed.
The SLOTFAULT attribute from the WHEN context will now be set to TRUE when processing a termination notice for a slot that has died to an internal SUPERVISOR 'ON ANYFAULT' handling.
Some minor logging format problems handling AF errors have been corrected.
During SUPERVISOR BackTrack schedule recovery, it was sometimes possible for the BACKUPSCHEDULE process to become hung waiting for certain backtracked processes, such as SAVE SCHEDULE, to complete. Even though the SAVE had completed, BACKUPSCHEDULE could have failed to detect the EOJ and would then wait indefinitely; this, in turn, caused the main SUPERVISOR program to stop responding until BACKUPSCHEDULE was manually terminated. These problems have been resolved.
The handling of SUPERVISOR's AFTER postscripts has been significantly enhanced particularly in the tracking of WFL activities such as STARTJOB. Previously, SUPERVISOR would simply mark all such WFL activities as 'PASSED TO GRINDER' and was unable to report if the WFL had failed because of syntax errors, missing job file, bad usercode etc.
Now, SUPERVISOR can now provide status information about the success or failure of a WFL job initiation processed by an AFTER command. Completion status information will appear in an AF ? response for TODAY's schedule and also in a PRINT SCHEDULE listing. Typical values include JOB OK, JOB SYNTAX, BAD USERCODE, INVALID ACCESS etc. There is also an additional value, COMMANDERROR, which identifies if an AF TT command has failed e.g. a TT DO might fail because the ODTSEQUENCE might be absent.
AF ? 1930-1934
----- SCHEDULE after 19:30 TODAY @ 19:30:54 28/02/2008 -----1: STARTJOB (IPP)TEST/JOB ON DEV :(JOB OK,#54131)
----- SCHEDULE after 19:31 TODAY @ 19:31:48 28/02/2008 -----1: FOR (TEST) STARTJOB (IPP)TEST/JOB ON DEV :(INVALID USERCODE)
----- SCHEDULE after 19:32 TODAY @ 19:32:36 28/02/2008 -----1: FOR (TEST1) ACCESS IPP STARTJOB (IPP)TEST/JOB :(INVALID ACCESS)
----- SCHEDULE after 19:33 TODAY @ 19:33:12 28/02/2008 -----1: FOR (TEST2) CHARGE IPP STARTJOB (IPP)TEST/JOB :(INVALID CHARGE)
----- SCHEDULE after 19:34 TODAY @ 19:34:06 28/02/2008 -----1: TT DO ZZ :(OK)
When SUPERVISOR logging is active, the LOG command will show all AFTER commands being processed at the activity time and report each success or failure.
The AFTER context has been extended to provide these AFTER results when used with the EVAL command. The POSTSCRIPT and JOBNUMBER attributes provide for WFL jobs whether it started sucesssfully and, if so, the associated job number. Note that JOBNUMBER is also available if the WFL activity fails with syntax errors.
The AFTER response for for the daily schedule will now show WFL job numbers where appropriate for both AF ? and PRINT SCHEDULE commands.
This facility could, for example, allow SUPERVISOR Opal programs to report AFTER failures on a daily basis and email any exceptions.
EV(AFTER:VALID(POSTSCRIPT)) DO (SHOW(ADDTEXT 50,,POSTSCRIPT 12,,JOBNO)) FOR TEST2 CHARGE IPP AFTER + 1933:STARTJOB (IPP)TE INVCHARGE 0 FOR TEST1 ACCESS IPP AFTER + 1932:STARTJOB (IPP)TE INVACCESS 0 FOR TEST AFTER + 1931:STARTJOB (IPP)TEST/JOB ON DE BADUSERCODE 0 AFTER + 1930:STARTJOB (IPP)TEST/JOB ON DEV JOBSYNTAX 60356 FOR IPP AFTER + 1929:STARTJOB (IPP)MK/JOBDEL ON DE JOBOK 60348 AFTER + 1929:PRINT SCHEDULE JOBOK 60348 AFTER + 1929:SAVE SCHEDULE JOBOK 60348 FOR TEST2 CHARGE IPP AFTER + 1928:STARTJOB (IPP)TE JOBOK 60341 FOR TEST1 ACCESS IPP AFTER + 1927:STARTJOB (IPP)TE JOBOK 60339 FOR TEST AFTER + 1926:STARTJOB (IPP)TEST/JOB ON DE JOBOK 60335 AFTER + 1925:STARTJOB (IPP)TEST/JOB ON DEV JOBOK 60333 FOR IPP AFTER + 1924:STARTJOB (IPP)MK/JOBADD ON DE JOBOK 60327 AFTER + 1923:TT DO NOSUCHACTIVITY COMMANDERROR 0 AFTER + 1922:SAVE SCHEDULE AFDONE 0 AFTER + 1921:DISPLAY("SIMPLE WFL TEST") AFDONE 0 INLINE_AFTER_14+INLINE_14 WILL BE EVALUATED
The above EVAL could be easily changed to allow failed jobs to be collected and emailed at 2359 each night. See HELP ATTR POSTSCRIPT for details of all the possible values for this attribute.
The ADDTEXT attribute will now be marked as not VALID if the schedule day is TODAY and the activity was specified with an ON Nth DAY, IN WEEKS or uses a LAST modifier. This occurs because such activities can only be established with an ON <day of week> or DAILY modifier and therefore have no relevance for Today's schedule. In contrast, the DELETETEXT attribute is VALID in such cases but is constructed with ':@n' modifier to identify the activity instead of the its text.
SUPERVISOR-invoked commands such as JAM, SYSDIR and SYSLOG will now return JOBOK postscripts if successfully run and the associated job number will be available. This also applies to any RUN commands because such AFTER activities are jacketed by a BEGIN JOB..END JOB. Note that ??RUN entries that are successfully executed are exempt and cannot show a job number.
The WITHIN modifier, used by an AF command to control the max number of seconds that an activity can be started after its time slot, is now supported by the similarly named WITHIN attribute in the AFTER context.
Also in this change, SUPERVISOR now better handles AF commands that have been entered into TODAY's schedule with a time that is the current time of day or slightly later. Under certain conditions, it was then possible for SUPERVISOR to incur significant I/O and CPU resource, appearing to be unresponsive for a period up to 1 minute. This occasional long-standing behaviour has now been corrected.
The TIMESPECS and ADDTEXT attributes in the AFTER context will now NOT include an 'ON <day' specification if an ON clause such as 'ON LAST MONDAY','ON 1ST DAY' etc. is already present. For example, TIMESPECS might have returned the following invalid date specifications:
ON SUNDAY ON 1ST DAY ON TUESDAY ON LAST WORKDAY
Also, for activities with certain complex date specifications (such as 'ON..DAY'), a scan of the schedule with any AFTER EVAL may have omitted these from each week day analysis (ON SUNDAY, ON MONDAY etc).
The change applied in SUPERVISOR 530.24 inadvertently broke the use of the AFTER key mechanism (as described by DNote 530.22) used to process individual AFTER records by a standalone DO. Each DO would have failed with the error 'Invalid AFTER key'.
Lastly, SUPERVISOR would consistently have rejected week of year numbers 5, 47, 50 and 53 when used in AFTER commands that used the 'IN WEEK nn' clause.
These problems have now been fixed.
The AFTER implementation described in DNote 530.23 had the unintended side-effect of causing certain EVAL date and time specifications (used for log-based access) to fail with the error 'RIGHT BRACKET REQUIRED'.
Also, using a time range within the EVAL specifications for the new AFTER context would always fail to find any matching schedule entries, with or without a specified date. Both of these problems have been addressed.
Previously, SUPERVISOR could have faulted with an INVALID INDEX at 76348000 when processing multiple TT commands in sequence using the KEYIN function. This problem has been resolved.
Several minor logging issues have been addressed in this change.
A new context, called AFTER, is now available for use by OPAL programmers. This context permits access to SUPERVISOR's AFTER schedule and has many attributes that map information related to an individual activity. This access is only available to the EVAL command.
The AFTER context allows the activity schedule to be filtered by the day of the week (SUNDAY=>SATURDAY) or by the special keywords TODAY and COLDSTART. For example:
EVAL (AFTER=SUNDAY,TUESDAY:TRUE)
The above example would only examine activities that normally appear in the schedule for ON SUNDAY and ON TUESDAY.
Various attributes allow the caller to filter by many different characteristics. For example, boolean attributes such as ONHALTLOAD, ONRESTART, ONSUNDAY etc. allow the user to filter individual activities by a variety of different conditions. String attributes such as ACTIVITY, FORTEXT, ADDTEXT and DELETETEXT allow information about the schedule entry text content content to be retrieved. Please see HELP ATTR =:AFTER for a complete list of the attributes in this context.
Similar to the syntax used for LOG-based EVALS, it is also possible to control access to schedule records by using time of day and/or date ranges filters. The syntax is slightly different from that used by LOG and both time and date ranges can be used; the specific AfTER syntax for the AFTER <Eval Specs> is shown below:
<Eval Specs>
+--<hhmm> -+ | +--<ddmmyy> -+ | +- - <hhmm> -+ +- - <ddmmyy> -+
If <Eval Specs> is not used then the general daily schedule (or parts of the schedule if a subcontext is specified), will be processed. However, using <Eval Specs> causes this behaviour to change if a specific date or date range is specified. This forces SUPERVISOR to return all activities that are scheduled to be executed on all days in that range. In particular, activities that have EXCEPT HOLIDAYS or ON WORKDAYS or ON DATE will only be displayed if they are to be processed on that day. The list of activities will be identical to that seen using the command AF ? ON DATE.
For example:
EV (AFTER:TRUE) [@1000-1300 20/2/08] DO (SHOW(ADDTEXT)) EV AFSITU [@21/02/08-23/02/08] DO AFODTS
Using a time range without a date or date range will cause the general schedule to be filtered by time only. In the event a date is specified, the SCHEDULEDAY and SCHEDULEDATE attributes will be automatically set to the appropriate date.
AFTER context programs may also be executed standalone with the DO command. To retrieve information for an unique record in the schedule, the DO command must be given the schedule day or specific julian ON DATE, the minute of day and the activity number. The Opal KEY attribute provides this access but its use is not intended for general use.
This interface has been provided to support new functionality in the new Metalogic Web interface, which operates with a variety of internet browsers, and offers direct access into the SUPERVISOR schedule.
The change described by SUPERVISOR DNote 530.04 had the unintended side-effect of prohibiting the use of SYSTEM-based ODTSEQUENCEs or DISPLAYS with all LOG context SITUATIONS linked by the WHEN, ONCE or EVAL commands. This restriction, not previously in use before the 530.04 change, has now been relaxed.
Previously, passing SUPERVISOR (TT) commands via the OPAL KEYIN function did not inherit the usercode of the WHEN slot. This caused problems, in particular, when using the DEFINE command as interrogation or compilations would access the system dictionary and not the DEFINES belonging to the calling usercode. This behaviour has been corrected.
Also, KEYINs called from OPAL programs running under a usercode will now be logged correctly in SUPERVISOR's log file.
Previously, SUPERVISOR logged all error messages returned by the Unisys TAPESERVER library (when run with 'USE SILO UNISYS') as type 'Msg' in the Metatapelib TAPELOG file instead of the expected 'Err'. This error has been corrected.
Also, SUPERVISOR will now log all usage of the FOR modifier with any command into its log file (if enabled). Previously, the original command would not have been logged if the FOR failed for security reasons.
Several problems with the new WHEN context have been addressed: the CHARGECODE attribute, if valid, now returns the correct string value. Also, passing a slot number greater than the maximum absolute WHEN number (by default 40) to the .WHEN method, as described in OPAL Dnote 530.05, will now not cause an INVALID INDEX @ 10712220 in SUPERVISOR.
Also, a MX context inline OPAL that additionally specified TIME in the SITUATION did not correctly pass the context to an associated in-line OPAL. For example:
WHEN (TIME,MX:TRUE) DO (SHOW(MIXNO))
The above would have failed syntax when scanning the MIXNO attribute because the OPAL compiler would not know the context was MX. This problem is now fixed.
The WHEN context may now take a TIME modifier as part of a subcontext assignment (as with MX and PER) allowing such OPAL programs to poll the current WHEN list using an user-specified DELAY. However, unlike MX and PER, a time-based WHEN slot will still also be triggered by normal WHEN events created when a slot is activated, faulted or terminated. For a timed poll, the information for each slot passed to the WHEN has a special EVENTTYPE category called WTIMEOUT.
A new attribute, TIMELASTEVAL, has been added to the WHEN context. This returns a value signifying the elapsed time, in seconds, since the SITUATION belonging to the slot was triggered because of an event. However, for slots with a zero EVAL count, TIMELASTEVAL will return the time since the WHEN was first started. TIMELASTEVAL has also been added to the MYSELF attribute, allowing access to this info from all contexts.
Example:
DEFINE + SITUATION W(TIME,WHEN): SITUCONTEXT="HTTP"
The fix described in DNote 521.45 did not resolve all the CPU accounting issues with the ENTER command. If an ENTER generated any informational messages, which are then logged by SUPERVISOR, it was possible for the accounting of 'Controller Queue handling' to be distorted by the CPU time incurred by the ENTER process. This problem has now been corrected.
This change supports the new .WHEN method for Opal variables.
Previously, to control CPU usage, certain SUPERVISOR EVALs that invoked EVREADER subtasks to process LOG and TAPEDB contexts, would have continually released the processor after processing only 20 records. This minimum value has now been increased to a new default of 200 records allowing the faster completion of these EVAL requests. Note that the limit can be controlled by changing the Supervisor configuration variable SUP_TIMERSLICE using the INSTALL utility's CONFIG menu.
A new context called WHEN has been implemented for SUPERVISOR. This is primarily an event-based context that allows SUPERVISOR to monitor all WHEN and DO activities such as sessions starting and terminating, with reporting for those that have faulted. The full set of attributes can be viewed using HELP ATTR =:WHEN.
WHEN context OPAL programs may be used with the WHEN command (the type of event is designated by the EVENTTYPE attribute) and also with EVAL. For HTTP WHEN programs, a special EVENTTYPE with the mnemonic WHTTPBUSY has been added; this allows SUPERVISOR to detect a browser HTTP client request that has become queued because all the active HTTP WHENs are currently busy.
Both the COUNT and OBJECTS functions in OPAL will accept WHEN context calls, returning a list of slot numbers in the latter case. WHEN programs may also be executed standalone, using the DO command, by passing a valid slot number as parameter.
WHEN (WHEN:TRUE) DO WHENODTS DO WHENODTS 1,22,23 EVAL (WHEN:ODTSNAME INCL "META") DO (SHOW(SLOT,,SITUNAME,,ODTSNAME))
This change helps to limit the number of COPYWRITE library link and delink operations when accessing LibMaintdIr attribute information for FLEX disk farms and CD images in a TAPEDB EVAL. Previously, there would have been a link/delink pair for each tape access.
If a COUNT(PRINTS:..) function was executed inside a MX-based EVAL, SUPERVISOR could fault with INTEGER OVERFLOW @ 93650000 because of corruption in the mix number list returned. This problem would only occur if SUPERVISOR had not already earlier processed any PRINTS request (via COUNT or EVAL).
SUPERVISOR will now permit multiple WHENS with the same name to run concurrently as long as the WHENs are of the HTTP context. This change assists SUPERVISOR's web server performance by allowing multiple HTTP WHENS to handle more than one client request concurrently.
Note that each WHEN can be deactivated using WHEN <situ> DO or the DO - #<slot> command.
SUPERVISOR will now append a single-line warning message to output generated for MARC station responses which are greater than the MARC-enforced limit of 30,000 lines:
-- WARNING:THIS MARC RESPONSE HAS BEEN TRUNCATED --
This only occurs for MARC output generated by Metalogic's TTINTERFACE MARC Directive and no other SUPERVISOR interfaces are affected.
The recent limits enhancement to the EVAL command described in DNote 530.03 caused all COUNT function calls (regardless of context) to return zero if used in any standalone DO or DISPLAY program. Similarly, all OBJECTS calls would always return empty string values. This problem is now fixed.
The change described by DNote 530.02 caused problems with ODTSEQUENCES that used the WAIT function waiting for specific message e.g. WAIT("TEST" ISIN TEXT). This feature, which would have only worked if other MSG WHENs were already active, will now work correctly.
This change supports the new OPAL attribute called DUMAP which returns a Disk Map of a specified disk family using a user-specified number of chunks. DUMAP returns an array of elements signifying the type of area for an individual chunk i.e. A (Available), M (Moveable) and F (Fixed). This attribute is meant for use with the Metalogic Web Server implementation.
Previously, SUPERVISOR did not check the SITU and ODTS types for all Log-based contexts when used with the EVAL and WHEN commands. This meant it was possible, for example, to link a FILECLOSE SITU with a LOGBOJ ODTS which caused a NOT YET IMPLEMENTED error when the ODTS was first executed. Now, SUPERVISOR will verify that the contexts match during command validation giving the following error if there is a mismatch:
TYPE OF ODT SEQUENCE MUST MATCH TYPE OF SITUATION
The Eval and When commands will now accept ranges as well as limits for evals and entries.
Ex. Eval Mysitu [100-200] Do Myodts
Will skip the first 99 objects which would have bee passed to the situation and only evaluate from 100 to 200.
Eval Mysitu DO Myodts[50-100]
Will ignore the first 49 objects passed by the Situ.
The range will always equate to at least one object. So [100-10] will be treated as [100-100]
For Odts of PD context a range can now be specified.
Ex. DO BOB [5-9] MYFILES/=
or DO BOB [100] (*)=LISTING=:FLat
This internal change offers no customer enhancements to Metalogic software. However, its effect is to permit more OPAL program contexts to be implemented for SUPERVISOR up to a new maximum of 47 (the current limit is 31) and will cause the SCHEDULE version to be incremented to 17 even though no actual conversion will occur. This means that earlier versions of SUPERVISOR will not be able to use SCHEDULE files touched by this current release.
This change requires all HTTP context programs to be recompiled or re-entered. If this is not done, any active HTTP Opals will fail with ' a 'BAD WAIT 0' error.
The SHOW PERM and SHOW GLOBALS commands have been enhanced to allow a wild-card pattern to filter the list of variables returned. If a normal identifier is used instead of a wild-card in the SHOW PERM command, SUPERVISOR will attempt to retrieve both the real and string values for that specific variable name.
The modified syntax for both SHOW variants is shown below:
--- SHOW --+-- GLOBAL ---+--------+---------------+--------------| +-- PERM -----+ +-- <Pattern> --+
The response to a SHOW PERM command will now sort the real and string lists by variable name in ascending order.
For example:
SHOW GLOBAL META= SHOW PERM =TEST= SHOW PERM SPECIFICPERM