Banner
 
 

OPAL Software Changes Version 520.01 >

 
\
540.43 Allow .Read on BackupPrinter files
Wed, August 25 2010

The .Read mthod will now read files with filekind BACKUPPRINTER

A bag had been fixed where the .COLLECT method could cause a string protect fault.

540.42 SUPPORT FOR SUBKINDLIST
Thu, August 12 2010

The SUBKINDLIST attribute has been added to the PD context for FLEX and SUPERVISOR. See HELP ATTR SUBKINDLIST for more information.

Various disk file header attributes such as DFHLOCATION, DFHCATALOGED etc. now return consistent values for a all disk files when used in a FLAT search.

540.41 EMPTY TRansmit
Fri, July 16 2010

Transmit of an EMPTY string caused a Bounds Error.

Syntax of Transmit Function is now,

   $DCWResult:=Transmit(<filehandle>,<text>)
  If $DCWResult is not EMPTY, then the Transmit failed and
  it contains the DCWrite Error Message.
  If the <text> is ?END, an EOF indication is sent to the Remote
  File.

540.40 Protect MCPDISPLAYTOSTANDARD issue with ZIPFILE
Thu, July 8 2010

An occasional issue with the MCPDISPLAYTOSTANDARD MCP entrypoint, used by the ZIPFILE and UNZIPFILE functions to validate file parameters, caused various faults in SUPERVISOR's ZIPHANDLER process when processing the zip request. The way that this MCP procedure is used has been detoured to avoid the problem.

540.39 Implement ON PROGRESS for zip methods
Tue, July 6 2010

This DNote documents new OPAL features that support the data and file compression facilities recently implemented in MAGUS. The features are available for both FLEX and SUPERVISOR and comprise 2 new functions, 2 file methods and simple progress bar support. The Metalogic Zip implementation is described elsewhere by various DNotes in the METANOTES/MAGUS files - see notes 540.05, 540.12, 540.14 etc.

Both sets of functions handle GZip, ZLib and MZip compression - the latter is Metalogic's own compression format and is intended currently for use on MCP systems.

In general, GZip is used for interchange of files between MCP and non-MCP systems. It offers the best compression, but requires more CPU to do it and to calculate the CRC-32 Checksum. MZip is most useful for interchange of files between MCP systems. It is optimized for speed on the MCP Architecture and it retains the MCP File Attribute information. ZLIB is useful for interchange of byte stream data, such as between a Browser and an HTTP Server. Although Gzip is also valid in an HTTP ACCEPT-ENCODING, ZLib (compress) uses less CPU for the Adler-32 Checksum.

GZIP will only compress FILESTRUCTURE=STREAM files.

The syntax and usage of the zip file methods are shown below:

  -- .ZIPFILE - ( <string exp.> -+--------------+-+-----------+-- ) -|
                                 +- , -+- MZIP -+ +- <Specs> -+
                                       +- GZIP -+
                                       +- ZLIB -+
  -- .UNZIPFILE - ( <string exp.> --+--------------+-- ) -------|
                                    +- <DontWait> -+
  <Specs>
   -- , ---+-- HIGH --+------+--------------+-------|
           +-- LOW ---+      +- <DontWait> -+
  <DontWait>
   -- , - DONTWAIT -+---------------+------------|
                    +- = <integer> -+

Both ZIPFILE and UNZIPFILE are methods similar to .READ in that they use dynamic variable references to access a physical file. To create a zip file:

  $ZIP:="(META)BIG/FILE/GZ ON DEV";
  $SOURCE:="(META)BIG/FILE ON DEV";
  $RES:= $$ZIP.ZIPFILE($SOURCE,MZIP,HIGH);
  If MZIPLASTERROR Neq MZIPOK Then
     Show("MZIP error ->",$RES);

Here the calling OPAL will wait until the ZIPFILE operation is complete and the slot is marked as 'WAIT ZIP' if interrogated using am EV ? or SLOT command.

If the calls fails, the $RES variable is assigned the error message and the MZIPLASTERROR attribute is set to MZIPERROR. Each error message is prefixed by "Err".

The <Specs> modifier allows the caller to specify a compression model identified by HIGH or LOW and a means of tracking progress of any zip operation. HIGH compression yields smaller archives but consumes more CPU; LOW compression is the default.

The optional <Dontwait> specification allows the caller to track the progress of a zip/unzip operation from OPAL. A new statement, called ON PROGRESS, is available which is regularly called by the zip routines to return updated progress information. Currently, only one progress attribute is available - MYSELF(PROGRESS). Here is an example:

  $ZIP:="(META)BIG/FILE/GZ ON DEV";
  $SOURCE:="(META)BIG/FILE ON DEV";
  $RES:= $$ZIP.ZIPFILE($SOURCE,MZIP,HIGH,DONTWAIT);
  If MZIPLASTERROR Neq MZIPOK Then
     Show("MZIP error ->",$RES);
  Else
     ON PROGRESS DO
     Begin
        SHOW("Zip progress ",MYSELF(PROGRESS)," %");
     End;

By default, SUPERVISOR triggers ON PROGRESS every second but this may be overridden by assigning an integer value to DONTWAIT:

  $RES:= $$ZIP.ZIPFILE($SOURCE,MZIP,HIGH,DONTWAIT=5);

The syntax and usage of the zip string functions are shown below:

  -- ZIP -- ( -- <input string> --+-----------------+-- ) -------|
                                  +- , -+-- MZIP ---+
                                        +-- GZIP ---+
                                        +-- ZLIB ---+
  -- UNZIP -- ( -- <compressed string> -- ) ---------------------|

Both ZIP and UNZIP can only be used to compress and decompress a single data stream. For ZIP, either MZIP, GZIP or ZLIB should be specified though MZIP is the default. MZIP is Metalogic's own compression mechanism and is optimised for MCP systems. Files that have been compressed by MZIP cannot currently be unpacked on non-MCP systems.

A ZIP function example:

   $ZIPSTRING:=Repeat("ABCDEF",20000);     %12,000 chars
   If Not $Z:=ZIP($ZIPSTRING,GZIP) Hdis "Err" Then
      SHOW("Compressed string-> ",Length($ZIPSTRING))
   Else
      SHOW("Zip Error-> ",$Z);

All ZIP and UNZIP errors are returned as the function result and are prefixed by "Err". In SUPERVISOR environments, the attribute MZIPLASTERROR returns a non-zero value if the operations fails.

540.38 Return quoted FILEID nodes
Tue, July 6 2010

Previously, the FILEID function did not quote file name nodes that should have been i.e. the level "ABC.TXT" would have been returned as ABC.TXT by FILEID. This behaviour has been corrected.

In FLEX usage, expressions such as FILEID("A/B/C",0) and FILEID(FILENAMEID,0), where the target did not have a usercode, would have always returned the usercode of the caller. FLEX now returns an empty string in such circumstances and is compatible with SUPERVISOR behaviour.

The DROPFILEIDS and TAKEFILEIDS functions now accept negative values for the number of file identifiers to be processed. A negative values tells the function to start processing from the right instead of the left. For example:

540.37 Transmit
Tue, June 29 2010

The Transmit function is used to transmit text to a Remote File Program which is waiting for Input.

Example:

  $Result:=Transmit(<frsn>,<text>);

If the <text> is successfully transmitted to the program, the function returns EMPTY, otherwise it returns the result of the Write To Object Job (DCWrite Type 65) DCWRITE request.

540.36 Reverse
Tue, June 29 2010

The $.Reverse method reverses the order of the characters in a string variable.

540.35 Correct TAKEFILEIDS,DROPFILEIDS returned lengths
Tue, June 15 2010

Both the TAKEFILEIDS and DROPFILEIDS functions will now consistently assign correct lengths for the string values returned.

540.34 Add ZIP/UNZIP error numbers in message
Mon, June 7 2010

The error number associated with failed ZIP,UNZIP,ZIPFILE and UNZIPFILE operations is now included in the error message content returned to the caller. Also, all Flex-initiated zip and unzip calls are now exempt from PROCESSOR LOOP DETECTED problems if the operation takes too long.

540.33 Minimise excess LOGTEXT pbitting
Mon, June 7 2010

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.

540.32 Distribute Invalid Index
Tue, June 1 2010

An Invalid Index would occur if a $S.Distribute was passed an EMPTY Delimiter.

540.31 GZip Interface
Fri, May 28 2010

Support Long File Names in ZIPFILE.

COLLECT.

Implement the $.Collect Function, with the same syntax as the $.Distribute Function.

Example:

  $Rejected:=$Collection.Collect("&",NameEqlValue,"NS_");

This example finds all local string variables with a namespace prefix of NS_ and creates a list of <name>=<value> elements, separated by an &, and stores them into $Collection. The list includes EMPTY string variables.

If a <value> contains an &, then it is added to the comma separated list of names returned in $Rejected.

TRIM.

Extend the syntax of the Trim function to allow selective trimming of leading or trailing spaces (LEFT, RIGHT or BOTH).

Examples:

  $Result:=Trim($Source);        % Trim Leading & Trailing Spaces
  $Result:=Trim($Source,RIGHT);  % Trim Trailing Spaces

TAKEFILEIDS.

TakeFileIds and DropFileIds return EMPTY if the request cannot be satisfied. TakeFileIds(0) now returns the <usercode> ON <familyname, if present. A TakeFileIds(n), where n is the number of FileIds, now returns n FileIds.

540.30 Clear NameSpace
Fri, May 21 2010

The syntax for Clear has been extended to allow a NameSpace to be defined.

    Clear(<namespace>)
    The <namespace> is a <string>, and any string variable which
    starts with that prefix is cleared.
    In this case, Clear can also be used as a Function, in which
    case it returns a comma separated list of the names of the
    string variables which were cleared.
    $Names:=Clear("Pre_");

540.29 Distribute NameSpace
Thu, May 20 2010

The syntax for $.Distribute has been extended to allow a NameSpace to be defined.

  $.Distribute(<separator>,<scheme>,<namespace>)
    <separator> is a <string> which separates the <name><value>
    pairs, the syntax of which is defined by the <scheme> mnemonic,
    such as NameEqlValue.
    The <namespace> is a <string> which is used as a Prefix for
    each <name> when creating the Variable Name. It must be
    a valid <identifier>.
    The maximum <namespace> length is 8 characters. The maximum
    Variable Name is 17 characters. If the <namespace><name>
    combination is greater than the maximum Variable Name,
    the <name><value> is not Distributed.

540.28 ReadIN
Wed, May 19 2010

Extend $.READ Method to Read Files IN Containers.

540.27 Replace ASAP statement by generic LOG
Wed, May 19 2010

A new OPAL statement, LOG, is now available for writing log entries to the various Metalogic files from an OPAL script. Syntax is shown below:

  - LOG - ( -+- ASAP --+- , --+----------------+-- <Text> -- ) ---|
             +- MAIL --+      +- <Category> , -+
             +- SITE --+
             +- SUP ---+
             +- TP ----+

The MAIL, SUP and TP mnemonics allow write access to the MAILLIB, SUPERVISOR and TRIM logs respectively. <Category> is optional and is constrained to 3 characters. If unprovided, "Msg" is assumed.

ASAP and SITE are special log files for customer use and are fully supported from SUPERVISOR using the new ASAP LOG and SITE LOG commands. More details to follow.

540.26 Handle .WRITE and NO FILE
Wed, May 19 2010

Previously, the .WRITE method would have caused the main SUPERVISOR process to halt on a 'REQUIRES PK' waiting entry if the disk family assigned to the output file was unavailable. This problem has been corrected.

540.25 Internal change only
Wed, May 19 2010

Internal change only.

540.24 Support for ASAP
Mon, May 17 2010

Internal change only.

540.23 Changes to ZIPFILE function
Tue, May 11 2010

Further changes to the ZIPFILE and UNZIPFILE functions. Documentation as yet unavailable.

540.22 CTCantParseRecord
Fri, May 7 2010

If a RECORD statement references a Mnemonic which is not defined on that system, a Warning is given instead of an Error. At Run Time a reference to an undefined Mnemonic results in termination of the ODTS with the message BAD RECORD MNEMONIC.

540.21 Ordered
Thu, May 6 2010

Internal Change.

540.20 Correct OPAL identifier handling of hyphens
Mon, May 3 2010

The change applied by OPAL DNote 540.17 caused OPAL to mishandle hyphen characters used in variable expressions. This behaviour has been corrected.

540.19 Support for ZIP and UNZIP functions
Mon, May 3 2010

Preliminary support for ZIP and UNZIP functions, ZIPFILE and UNZIPFILE methods in both SUPERVISOR and FLEX.

540.18 Body
Fri, April 30 2010

Internal Change.

540.17 Allow hyphenated identifiers
Thu, April 29 2010

In some cases, SUPERVISOR did not recognise the hyphen character as valid when used in an identifier e.g. a DEFINE interrogation or modify. This oversight has been corrected.

540.16 Protection for long LOG records
Mon, April 19 2010

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.

540.15 Store additional processor loop information
Thu, April 15 2010

Processor loop detection within the OPAL machine now provides extra information for determining the causes of unusual loop detection.

540.14 IOHStringEncode
Tue, April 13 2010

Fix READ of a File in a Container in which any Title had " or .

540.13 Return empty records with .READ(NOSEQ)
Fri, April 9 2010

.READ(NOSEQ) would ignore records which were all spaces. A record consisting of a single space will now be returned.

Previously the use of .WRITE(#(<opal string>) where the opal string contained lookups could result in the end of the string being repeated in the file.

540.12 ReadBytes
Wed, April 7 2010

Extend the syntax of the .READ method to allow a read of a Range of Bytes or Records in a file.

...READ(<index>,<count>,<units>[,<delimiter>])

 <index> - the index at which to start the read, in <units>.
 <count> - the number of <units> to read.
 <units> - RECORDS or BYTES
 <delimiter> - Optional <string> delimiter or / to separate
               multiple RECORDS
 If BYTES is specified for a file which is Blocked, the File is
 assumed to be a ByteStream consisting of the concatenated
 Records, where each Record is MAXRECSIZE in Bytes long.

540.11 Allow string results from myself
Fri, April 2 2010

The Myself and WHENID attributes are now synonyms,

540.10 Change wildcard truthsets
Fri, March 26 2010

This internal change now allows the '_' and '-' characters to be used in the file name used by a container search e.g. FILES (*)= IN "A_B" was previously not allowed.

Further, use of the HELP ATTR command from FLEX utility when run from a non-privileged usercode will now return all matching attributes instead of a restricted subset.

540.09 Support new mnemonics to AGE attribute
Wed, March 17 2010

The Age attribute now takes an optional mnemonic parameter INDAYS the default if no parameter is passed and INSECONDS. The time between the current time and the timestamp time is calculated and returned in units of whole days or seconds. If the timestamp of a file was 1 second before midnight yesterday and Age was interrogated at 1 second after midnight then it would return 0 days or 2 seconds.

540.08 More quoted search handling
Sun, February 28 2010

Further to DNote 540.07, this change supports the resolution of several anomalies with quoted wild-card file searching for FLEX.

540.07 Allow quoted file name FLEX searches
Tue, February 23 2010

This change supports the FLEX file search enhancement described by FLEX DNote 540.10.

540.06 .Insert now correctly returns null
Wed, February 17 2010

The .Insert method was intended to be used as a Statement but if used in an expression it could cause a fault. The null string will now be returned.

540.05 Support for new Flex attribute AGE
Wed, February 17 2010

The new Flex attribute Age returns the the number of days since the date of the file TIMESTAMP.

540.04 Fix usage of LASTRECORD in PD method
Thu, January 28 2010

Previously, the use of certain PD attribute functions such as CONTAINER and LASTRECORD returned null values if used by a PD variable method or by VIA using a PDKEY title reference. These attributes now return correct values. Additionally, LASTRECORD will now return appropriate values for non-blocked files (i.e. FILESTRUCTURE=STREAM) where the value 0 was always returned.

540.03 Support for Flex InputParameter attribute
Thu, January 21 2010

INPUTPARAM Returns the text of the most recent command.

Ex REP HEAD INPUTPARAM Followed by FILES =BoB= ON DEV:FL Would return FILES =BoB= ON DEV:FL followed by the list of files

540.02 Remove old GETSTATUS Type 0 calls
Tue, December 1 2009

Because GETSTATUS MixRequest Type 0 calls have been de-implemented on MCP 54.1, an old call supporting the REASONTEXT attribute has been removed.

540.01 Update maximum MCP supported to 54
Thu, November 26 2009

Prevent warnings when running on MCP 54

530.70 Add PDF to MIMETYPE
Mon, September 28 2009

Add PDF to MIMETYPE function.

530.69 Support for LOGICALLIST attribute
Wed, September 2 2009

This change supports the LOGICALREEL and LOGICALLIST attributes in the TAPEDB context and is described by TAPELIBUPDATER DNote 530.08 in more detail.

530.68 Fix NO FILE problem with WRITE method
Wed, September 2 2009

A timing hole existed where it was possible for SUPERVISOR to hang on a NO FILE condition when an OPAL WRITE attempted to append to an existing file which was in the process of being removed. This hole has now been closed and SUPERVISOR ensures that the file is physically available prior to the use of WRITE.

530.67 Fix READ method handling of DATA files
Mon, August 31 2009

The READ method changes described by DNote 530.64 had the unintended side-effect of causing the reading of DATA files to behave incorrectly. This problem has been fixed.

530.66 More fixes for metering attributes
Tue, August 18 2009

Using the wrong index with certain metering attributes could cause an ODTS to fault with a bounds error. Ex. Attributes with a prefix of METERIMAGE. These attributes will now return 0 for numeric attributes or the empty string for string attributes, when an invalid index is used. Corrections for TS attributes with prefix DECODEDMEM or DECODEDIO have been made.

530.65 Fix WFL statements in FLEX REPORT
Sun, August 9 2009

The change described in OPAL DNote 530.62 caused the WFL statement in a FLEX DO file to fail compilation if used in a compound statement. Also, the KEYIN and COMS functions would still have given 'Unsafe' warnings when used as standalone statements. Both these problems have been addressed.

530.64 Allow READ method with code and DASDLDATA
Sun, August 9 2009

The READ method has been extended to allow read access to files with a FILEKIND of DASDLDATA and all codefile types. Various OPAL tools such as HEX and HEXSTRING can be used to manipulate data from files such as the above.

530.63 Support for timezone attributes
Thu, August 6 2009

New Attributes: TZABBREVIATION (SYSTEM) Returns STRING in the form of an Identifier

                 TIMEZONE is a synonym for this Attribute
Semantics : Time zone abbreviation.

TZNAME (SYSTEM) Returns STRING in the form of an Identifier Semantics : Full time zone name.

TZNUMBER (SYSTEM) Returns INTEGER Semantics : The predefined time zone number or zero.

TZOFFSETDIRECTION (SYSTEM) Returns INTEGER Semantics : Indicates if the time zone offset is added to or subtracted from the universal time to get local time. 0 indicates no time zone, 1 indicates add the offset and 2 indicates subtract the offset.

TZOFFSETHOURS (SYSTEM) Returns INTEGER Semantics : Hours offset (0 through 24).

TZOFFSETMINUTES (SYSTEM) Returns INTEGER Semantics : Minutes offset (0 through 59).

TZOFFSETTIME (SYSTEM) Returns INTEGER Semantics : Total offset time in minutes as a positive or negative integer.

530.62 Add Insert method and numeric .cut and .copy
Thu, August 6 2009

The new string variable .Insert is intended to be used to maintain lists.

  -- <String variable> . Insert (<string expression> --------------->
   >--+----------------+-----+---------------------+---------------|
      |-- , -+- UP ----|     |-- , --<delimiter> --|
             |- DOWN --|
             |- ASC ---|
             |- DES ---|
             |- FRONT -|
             +- BACK --+

If the optional delimiter is a string expression. If omitted "," is assumed.

If the optional modifier is omitted then BACK is assumed.

The string expression is added the the String variable. If the modifier is BACK it is added to the end with <delimiter> as a separator. If the modifier if FROM it is added to the beginning with <delimiter> as a separator.

If the modifier is UP or ASC (Ascending) then it is inserted before the first item in the list which is greater than it.

If the modifier is DOWN or DES (Descending) then it is inserted before the first item in the list which is less than it.

Note that is a sorted list is desired, care should be taken to only use .Insert ,with an appropriate modifier, to maintain it.

Ex. $L1.Insert("A");$L1.Insert("C");$L1.Insert("B"); would leave $L1="A,C,B"

$L2.Insert("A",Front);$L2.Insert("C",Front);$L2.Insert("B",Front); would leave $L2="B,C,A"

$L3.Insert("A",UP);$L3.Insert("C",UP);$L3.Insert("B",UP); would leave $L3="A,B,C"

$L4.Insert("A",DOWN,":=");$L4.Insert("C",DOWN,":="); $L3.Insert("B",DOWN,":="); would leave $L3="C:=B:=A"

The .Cut and .Copy methods have been extended to accept an integer expression in place of the pattern. This variant will Cut or copy the specified element of a list, counting from 1.

Ex. If $L="a,b,c,d" Then $L.Cut(2) would return "b" and leave SL="a,c,d"

All methods may now be used as Statements, in which case any result which would normally be returned is discarded and no 'unsafe' warning given.

Selected functions may now be used as statements in the same way as methods.

For Supervisor the functions which may be used as statements are: DBS,INPUT,KEYIN,MAIL,PING,RESPOND,TT,WFL

For Flex only MAIL may be used

530.61 Implement exponentiation capability
Wed, June 10 2009

The OPAL compiler now has the ability to provide exponentiation in arithmetic expressions similar to that in Algol using the ** operator. For example:

   #A:= 2**10;       %  => 2 raised to the power of 10 i.e 1024

530.60 Support LOGNAME and LOGSUBSTRING
Wed, June 10 2009

Two new attributes, LOGNAME and LOGSUBSTRING, have been added to the LOG context. These attributes allow both standard form and substandard form names to be extracted from a LOG record where a suitable OPAL context does not exist. Both attributes return results as normal display form names.

The LOGNAME attribute requires a parameter to point to a specific word in the log record where a standard form name is held. SUPERVISOR expects the standard form to start on a word boundary and is checked to make sure that it is legal otherwise an empty string is returned.

The LOGSUBSTRING attribute requires a word index into the raw log record that directly references a substandard string e.g. 48"08" "MYSTRING" would return as "MYSTRING".

The SOURCENO attribute in the OPERATOR context now returns correct values and several synonyms have been provided to better describe the various values it returns (e.g. hostname, station name, ODT). Further, the USERCODE attribute has been added to the OPERATOR context.

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 error:

  "Value greater than 2**39-1 passed to INTEGER function"

530.59 Fix INVALID INDEX with TADS attribute
Mon, May 4 2009

Previously, using the TADS attribute within a SUPERVISOR PD context script would cause an INVALID INDEX @ 93820000 if more than 15 files were processed. This problem has been corrected.

530.58 Support VIA PD attribute mechanisms
Mon, May 4 2009

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

530.57 Correct VALID handling for some PD attributes
Fri, April 17 2009

The VALID function will now return correct settings when used to check the validity of the following PD attributes: PRODUCT, OWNER, GROUP, SI_PRODUCT, SI_TAPENAME and WORKLOADGROUP. This change applies to both SUPERVISOR and FLEX.

530.56 Restrict TT call nesting
Thu, April 16 2009

This changes supports the TT nesting problem described by SUPERVISOR DNote 531.42 .

530.55 Implement STATIONS context
Wed, April 8 2009

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.

Please refer to SUPERVISOR DNote 531.40 for more information; see HELP ATTR =:STATIONS for a list of available attributes.

530.54 Implement SESSIONS context
Mon, March 30 2009

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

Please refer to SUPERVISOR DNote 531.35 for additional information; see HELP ATTR =:SESSIONS for a list of available attributes.

530.53 Implement SHOWOPEN context
Mon, March 16 2009

This change 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 information will be returned. Please refer to SUPERVISOR DNote 531.33 for more information and refer to HELP ATTR =:SHOWOPEN for a list of available attributes.

530.52 JavascriptEscape
Thu, March 5 2009

Add Translate(<string>,JavascriptEscape) to escape '" and \ using the Javascript escape syntax \",\' and \\.

Add the CARDINAL attribute to return the name of the cardinal attribute for a specified context.

Add the ATTINFO(<attribute name>,MNEMONICS) function to return a list of Metalogic defined mnemonics for the specified attribute.

530.51 Better descriptions for Julian date attributes
Mon, March 2 2009

Supports the changes described in Opal Gstablegen 530.40.

530.50 Fix TAPEFEET via Function Link
Fri, February 6 2009

The TAPEFEET attribute works again in FAMILYMANAGER or FILE:FLAT. It is now a Function Link, not an Attribute Function and so no longer needs OPAL compiler support.

530.49 Fix TIMETOTEXT rounding issues
Thu, February 5 2009

Previously, TIMETOTEXT calls that used the HHMMSSDDD parameter would not correctly handle modulated seconds values greater than 59.5 causing the calculated minute value to be incorrectly incremented by 1. For example:

   TIMETOTEXT(59.5,HHMMSSDDD)

Would return 00:01:59.500 instead of 00:00:59.500.

This minor problem has been corrected.

530.48 Add HHMM Mnemonic to TimeToText Function
Mon, January 26 2009

The TimeToText function will now accept a mnemonic parameter of HHMM to return a time in the form 19:20. Note that seconds are truncated so if TimeTotext(#Seconds,HHMMSS) returned "19:20:59" then TimeToText($Seconds,HHMM) would return "19:20"

530.47 New METALOG context
Fri, January 16 2009

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. Please refer to SUPERVISOR DNote 531.21 for more information and HELP ATTR =:METALOG will show the small subset of supported attributes.

530.46 Resolve LOGICAL ASSERTION compiler bug
Tue, January 13 2009

The change described in OPAL DNOte 530.43 caused both FLEX and SUPERVISOR PD attribute mnemonic comparisons to fail with a LOGICAL ASSERTION compiler fault. Such expressions would include UNITS=WORDS, FILEKIND NEQ DCALGOLSYMBOL etc. This fault has been corrected.

530.45 Time and TimeToText could return strange values
Tue, January 13 2009

Version 530.42 introduced a bug when using the Time or TimeToText functions. If either function was used more than once, then the subsequent calls could return corrupted values.

This problem has been corrected.

530.44 More DEFINE changes
Mon, January 12 2009

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.

530.43 Support for SL context
Mon, January 12 2009

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. Please refer to SUPERVISOR Dnote 531.20 for more information and refer to HELP ATTR =:SL for a list of attributes currently available.

Internal change: the current mechanism for attribute mnemonic handling has been changed because array limits had been exceeded (GSMNEMINFO). There are no issues with existing compiled code.

530.42 Type
Fri, December 19 2008

The ATTINFO function described in the OPAL Manual has been changed.

-- ATTINFO - ( <string exp>, <string exp> , -- DETAIL ---------- ) -|
                                            |- SEMANTICS ----|

The ATTINFO function returns selected information about an attribute.

The first parameter specifies the name of the attribute.

The second parameter defines the Context to which the Attribute belongs.

The third parameter selects the type of information to be returned.

If DETAIL is specified, then a list of name=value; elements are returned, which may be dereferenced using the $.Distribute method.

These names are defined,

AtLink- Returns the name of a <context> if the value of the attribute can be used as the Cardinal Attribute of the linked context, otherwise EMPTY.

AtKind - If the attribute has $AtLink, "DO" is returned if the attribute is a link to another object, otherwise "EVAL" is returned if the attribute is a link to a list of objects.

AtProxy- If the attribute has $AtLink, a "1" is returned if the attribute is a proxy attribute and represents other information for the web interface.

AtArgs - Returns the number of parameters.

AtType - Returns the user type of the attribute (eg. INTEGER).

AtValue- Returns the format of the attribute value (eg. SECONDS).

AtErr - If an error occurs, the reason for the error, otherwise it is empty.

If there is an error, AtErr contains the reason, otherwise all names are returned, so that a $.Distribute will either assign a value, or reset the corresponding variable.

Examples:

     AttInfo("LibUserList","Mix",DEATIL) returns
       AtLink=MIX;AtKind=EVAL;AtProxy=;AtArgs=0;
       AtType=STRING;AtValue=STRING;AtErr=;
     AttInfo("UseTime","PD",DEATIL) returns
       AtLink=;AtKind=;AtProxy=;AtArgs=0;
       AtType=REAL;AtValue=SECONDS;AtErr=;

If SEMANTICS is specified, then the function returns the Semantics for the attribute, with new lines indicated by <br/>.

Example:

     AttInfo("UseTime","PD",SEMANTICS) returns
       ACCESSTIME returns the time of day when the file
       entry was last accessed.

The TIMETOTEXT function has been implemented.

--- TIMETOTEXT(<arithmetic expression>, ---- HHMMSS --------)-|
                                         |-- HHMMSSDDD ---|

TIMETOTEXT generates a string with hours, minutes and seconds and fractions of a second, separated by colons, according to the mnemonic specified as the second parameter. <arithmetic expression> is assumed to be a real value in seconds.

Example:

   TIMETOTEXT(7266.5) returns 02:01:06.500

530.41 Implement DEFINE context
Thu, December 11 2008

A new SUPERVISOR context called DEFINE has been implemented. This context allows Opal scripts to interrogate SUPERVISOR's OPAL program dictionary with the EVAL command and return useful information for any DEFINE in that dictionary. Please refer to SUPERVISOR DNote 531.15 for more detailed information.

530.40 Improve Sort for numeric values
Mon, December 1 2008

Numbers larger than the biggest integer (549755813887) would not sort correctly.

Real values would not sort correctly unless a decimal width was specified. Eg.(CPUrate 2.9).

Any numeric expression used in a Sort clause is now help in a special internal format and will sort correctly. Note that in the associated ODTS or Display the decimal width will still need to be used to view decimal values.

Eg. TT EV (MX=A,LIBS:TRUE) DISP (CPURATE 2.6 NAME)[10] SORT (CPURATE)

530.39 Sort vs Slash
Tue, November 11 2008

The / character used in an Opal string to cause a new line should not be used in a Sort clause, either inline or

compiled. If it is used in this way the Sort will be disabled.

530.38 JSON No Attributes
Thu, November 6 2008

Fix JSON when No Attributes selected.

530.37 Fix Sort Ascending for chars ]$*);
Thu, November 6 2008

When sorting ascending the following characters would sort in the wrong order

]$*)bcdekmn

This problem has been corrected.

530.36 Allow CONFIG variable names longer than 17 charact
Wed, November 5 2008

The use of Metalogic CONFIG variables with identifiers longer than 17 characters may now be used in all OPAL expressions.

530.35 JS filter
Thu, October 30 2008

Internal change.

530.34 Sort vs Real Field Widths
Thu, October 30 2008

Sort Key lengths were miscalculated for Real field widths. This has now been fixed.

530.33 String compare with NEQ returns -0
Wed, October 29 2008

The use of a boolean expression in an Opal string would cause the expression to be coerced to a numeric value. Usually this would be 0 for false and 1 for true. Unfortunately NEQ used with two strings would always return -0 as would the EQV operator and the NOT operator.

A boolean expression will now be coerced to a string of True or False.

Ex.
    #(1=3) will return "False"					
    #(Not 1=3) will return "True"		
										
530.32 OPAL_JSCONTEXTS
Wed, October 29 2008

Internal change.

530.31 Minor Display Changes For Sort
Tue, October 28 2008

Displays are now conditioned so that if used as a sort key, they act a little differently. They will return a fixed length for an ODTString segment (12 chars or 64 for a String) if no width is given explicitly. This allows Opal to calculate the key length. Negative numbers are complemented so that they give a string that sorts lower as they become more negative.

A new function, COMPLEMENT, bit complements a string to reverse its sort precedence. For example:

SORT - (X) is equivalent to SORT + (Complement(X))

530.30 Support for GETDISKFARMSERIAL attribute
Wed, October 22 2008

A new FLEX attribute, called GETDISKFARMSERIAL, is now available. Its usage is meant for FLEX scripts that create COPYWRITE Disk Farms with serial number identification on remote PC systems. Typically, this would be used for COPY & CATALOG requests from MCP hosts that use Archiving and not cataloging systems. When referenced, GETDISKFARMSERIAL retrieves the COPYWRITE_CATSN config variable to determine the next Copywrite-Disk Farm serial number to be used. The Metalogic Tape Library database must be available and the configured serial number must have a numeric component.

When called, GETDISKFARMSERIAL starts with the current COPYWRITE_CATSN serial number and searches the TRIM database looking for the next available free serial. When a free serial number is found, an entry is constructed in the TRIM database (the tape will have a pre-filled volumeid of ALLOCDISKFARM) and the serial number value held in COPYWRITE_CATSN will be incremented by one. This mechanism prevents two concurrent COPY&CATALOG requests from using the same serial number.

530.29 Internal change only
Tue, October 7 2008

Support moving Heap memory out of Environment.

530.28 Improved HTTP tracing
Fri, October 3 2008

Internal change to enhance the tracing of HTTP messages.

530.27 Proxy
Tue, September 9 2008

Add ATTINFO(<attname>,PROXY) function which returns TRUE if an attribute represents some information which can be obtained from the attribute value in a Scripting Environment.

530.26 Protect WRITE method fatal I/O errors
Tue, August 26 2008

Previously, it was possible for SUPERVISOR to DS after a fatal I/O error (e.g. I/O ERROR WRITE ON INPUT FILE) using the WRITE method to a file with incompatible file attributes. This problem has been addressed by improved checks prior to the output file open and protecting any file WRITEs so that SUPERVISOR will not be DS-ed in the future.

530.25 Implement PING function
Tue, August 26 2008

The PING function has been implemented to allow a NW TCPIP PING command to be tracked by an OPAL script. PING accepts two parameters: the first is a hostname or IP address string while the second is an optional integer indicating the number of ping messages to be sent to that host. If the second parameter is absent, one message only will be sent.

 ---- PING -- ( -- <host/ip address> --+-------------------+------|
                                       |                   |
                                       +-- , -- <count> ---+

If a hostname is provided, PING will use the SYSTEM/RESOLVERSUPPORT library to resolve the name to an IP address. An error will be returned if the host lookup fails. If a valid IP address has been determined, SUPERVISOR issues a NW TCPIP PING command to that address and the script will wait for the ping to complete.

Since TCPIP PING operations are processed asynchronously, beware that it is possible for another PING to the same IP address to be detected prematurely. Unfortunately, Unisys NW TCPIP PING encoded command and report entries do not have any markers to identify an individual request though SUPERVISOR uses a specific SIZE specification in the PING command to help identify that the command has been processed.

A maximum of 20 messages can be sent by any PING command; note that if the IP address is not contactable, each ping will time-out after 60 seconds. This means that a 20-message ping to an unavailable IP address will take up to 20 minutes for PING to complete.

Note that if PING is used inside an event-based WHEN, then events normally destined for that WHEN will not be received whilst the slot is waiting for the PING to complete. An EV? interrogation of the waiting slot will show "(WAIT PING)" for the slot status and a SLOT command will show the IP addressed being PING-ed.

Once SUPERVISOR has detected that the PING has completed, an integer result value is returned to the caller and the script can determine information about the ping using a number of new attributes. The mnemonic values returned can be viewed with the HELP ATTR PINGRESULT command.

For example:

   DEFINE + ODTS PING(MSG):
      #P:= PING(TRIM(TEXT),3);
      SHOW(PINGTEXT);
   TT DO PING DELL8500
   PING to DELL8500
   Hostname resolved to 10.0.0.35
   PING result was PINGSUCCESS
   PING has sent 3 messages, received 3 messages, 0 % loss
   PING request duration was 0.024 seconds
   Average PING response time was 0.008 seconds
   TT DO PING 10.0.0.71
   PING to 10.0.0.71
   ERROR: NO RESPONSE TO PING

Note that PING looks up the hostname using RESOLVERSUPPORT so any mapped TCPIP hostnames that do not have a DNS entry will return a DNSUNKNOWNHOST error.

530.24 Support for new MAIL attribute subset
Wed, July 16 2008

This changes supports the new SYSTEM MAIL attribute subset as described in SUPERVISOR DNote 530.71.

530.23 Internal change
Fri, June 27 2008

Internal change only.

530.22 Protect WRITE method resource problems
Wed, June 25 2008

The OPAL WRITE method is now protected from generating a SECTORS REQUIRED waiting entry when the disk family destination does not have sufficient space to write to the file. Previously, this situation would have caused SUPERVISOR to halt.

The WRITE method now unconditionally sets the NORESOURCEWAIT attribute on all destination files to protect against this situation. If a disk shortage is detected, the WRITE call will return the error 'Error:Insufficient disk space' and a new file will not be created.

530.21 Support for DFHIMAGE attributes
Thu, June 12 2008

A new attribute called DFHIMAGE has been implemented for both FLEX and SUPERVISOR (PD context). DFHIMAGE returns an image of the Disk File Header of the selected file. By default, this is returned in JavaScript array format with each header word in hexadecimal format delimited by commas. For example:

 [128,'3F3F0A4003E8','801000000000','000000000052',...]

The first entity in the array indicates the size of the header in words.

530.20 Support Supervisor CALL DO improvements.
Tue, June 10 2008

Support for Supervisor version 530.58

530.19 BLANKNONCC
Fri, June 6 2008

Add EBCDICToXML to Translate function. It translates from EBCDIC to valid XML ASCII characters, which are the ASCII graphics plus CR,LF and HT.

530.18 Address minor HELP ATTR presentation issues
Thu, May 29 2008

Various formatting improvements have been applied in the presentation of the PRINT ATTR and HELP ATTR responses for both SUPERVISOR and FLEX. The SUPERVISOR attributes EOJCAUSE and EOJTYPE now show as returning an INTEGER mnemonic value instead of BOOLEAN and their semantics have been updated.

530.17 Some Methods syntax errors could cause fault
Thu, May 22 2008

The invalid use of some Methods could cause a compiler fault. Ex. Decimal($A).MX(NAME) The correct syntax error will now be returned.

530.16 Inhibit REFERENCE attribute synonyms
Wed, May 21 2008

The REFERENCE attributes TASK, UNIT, VDBS and PRINTS will now not show the other members of the group as synonyms. Similarly, this behaviour with the string variants such as TAPEDB and TASKSTR has been addressed.

It is now possible for OPAL attribute semantics to show double-quotes in their descriptions instead of the single version, allowing attribute usage to be correctly described.

530.15 Log compiler faults
Fri, May 2 2008

OPAL compiler faults are now logged correctly in SUPERVISOR's log file; previously these events were ignored.

530.14 Resolve VDBS attribute collisions
Fri, May 2 2008

Various updates have been made to attributes belonging to the VDBS context because of documented Unisys changes to the DMINQ 25 function (in the DMAlgol programming reference manual). Please refer to OPAL GSTABLEGEN DNote 530.15 for more information.

530.13 Fix VIA(TASKSTR(OBJECTS(...
Wed, April 30 2008

Using the construct VIA(TASKSTR(OBJECTS would cause a compiler fault. This has been corrected.

The use of a non reference variable in a VIA( function would cause a compiler fault. It will now correctly return a syntax error.

530.12 Improve error message formatting
Thu, April 10 2008

The syntax error reporting for FLEX DO file compilation of SELECT or REPORT statements has been improved. The OPAL compiler will now write the failing line of source followed by the syntax error to the screen or print file. Please see FLEX DNote 530.04 for further information.

530.11 Allow .property.method
Thu, March 6 2008

Variable.<property>.read and variable.<property>.write are now allowed. variable.config.store and variable.config.distribute are now allowed. Two methods are explicity excluded when using the Config property, SPLIT and CUT.

530.10 Fix up correct date for log TSDAY-type atts
Tue, March 4 2008

Previously, the LOG context LOGTSDAY and MTCREATIONDAY attributes returned values with the year of the julian date adjusted by +70. Both these attributes now return correct values.

530.09 TADS and PDTADS
Mon, February 25 2008

Implement TADS and PDTADS function link attributes.

530.08 Protect CONTAINER attribute with very small files
Fri, February 22 2008

Previously, using the CONTAINER Opal attribute in FLEX when processing stream files with less than 18 bytes caused FLEX to fault with an I/O ERROR: END OF FILE @97146438. This problem has now been fixed.

530.07 Implement AFTER context
Fri, February 22 2008

A new SUPERVISOR context called AFTER has been implemented. This allows the user to interrogate the SUPERVISOR AFTER schedule using OPAL programs that are processed with the EVAL command. Please see SUPERVISOR DNote 530.22 for more information.

530.06 Reinstate OPAL error message positioning
Fri, February 8 2008

The change applied by OPAL DNote 520.86 caused all OPAL compile error messages, displayed on screen or generated by an ENTER file, to be located at the start of each error line when it should have been offset at the character position where the error token was detected. This feature has now been returned to the previous behaviour.

530.05 Add .WHEN method to variables
Wed, January 30 2008

A new method has been added to Opal variables. The .When method allows the evaluation of an expression in the when context. The slot number to be used is taken from the contents of the variable.

Ex. If $s="2" $s.When(OdtsName) would return the name of the Odts running in slot 2.

Defining the following ODTS would allow TT DO META_SLOTRATE to give a display of all of the active slots sorted by CPU rate.

TT DEFINE + ODTSEQUENCE META_SLOTRATE: 
$Slots:=Objects(When:OdtsName Neq WhenId(Action)); %ignore ourself 
While $Slot:=$Slots.Split Neq Empty Do 
BEGIN
   $Item:=$Slot.When(#(String8(
       #Rate:=Integer(CpuTime*100000/Elapsed)/1000,6),,
       If SituType &gt; 0 Then #(SituType,,Situname,,) Else Empty,
     OdtsType,,OdtsName));
   #Done:=0;
   $New:=Empty;
   While #Done=0 And $Lst Neq Empty Do
   Begin
      $Tmp:=$Lst.Split(/)&#(/);
      If Decimal(Take($Tmp,6)) &gt; #Rate Then
         $New:=&$Tmp
      Else
      Begin
         $Lst:=$New&$Item&#(/)&$Tmp&$Lst;
         #Done:=1;
      End;
   End;
   If #Done=0 Then $Lst:=$New&$Item&#(/);
End; 
Show("Active slots sorted by % Cpu rate",/ /,$Lst)
An example of its use.

TT DO Meta_SlotRate

Active slots sorted by % Cpu rate	
 0.077 DO REC_STATUS
 0.02 DO REC_PKSPACE
 0.015 WHEN REC_MSG DO REC_MSG
 0.014 WHEN REC_W DO REC_W
 0.013 WHEN REC_C DO REC_C
 0.012 WHEN REC_BOJ DO REC_BOJ
 0.008 WHEN REC_GOING DO REC_GOING
 0.005 DO MENU_FAMCHK
 0.003 WHEN HTTP_KEEPALIVE DO HTTP_KEEPALIVE
 0.003 WHEN TCPIPATTACH DO TCPIPATTACH
 0.003 WHEN META_MSGMON DO META_MSGMON
 0.002 WHEN TPDB_SILOW DO TPDB_SILOW
 0.002 WHEN REC_SEC DO REC_SEC
 0.002 WHEN XREF DO XREF
 0.002 WHEN META_W DO META_W
 0.001 WHEN REC_MCSSEC DO REC_MCSSEC
 0.001 WHEN TPDB_AUTOCD DO TPDB_AUTOCD
 0.001 WHEN META_MAKELIVE DO META_MAKELIVE
 0.001 WHEN BOB_WEBSECURITY DO BOB_WEBSECURITY
 0.001 WHEN META_SLOTCHECK DO META_SLOTCHECK
 0.001 WHEN BOB_CLEANUP DO BOB_CLEANUP
	
										

530.04 ConfigAssign
Tue, January 29 2008

Ease restrictions on configuration assignment.

530.03 Support for SUPERVISOR WHEN context
Mon, January 28 2008

This change supports the new WHEN context for SUPERVISOR; please see SUPERVISOR DNote 530.13 for more information.

Also, the change includes an internal Metalogic enhancement that permits attribute mnemonic values to be declared with the same name as other existing attributes. Previously, this was not permitted.

530.02 HyperLink
Mon, January 21 2008

The ATTINFO(<attribute>,<infotype>) function returns selected informaton about an attribute.

This information is currently available,

    LINK returns either EMPTY or the name of a <context> if the
    value of the attribute can be used as the value for the
    cardinal attribute of the linked context.

530.01 Limit COPYWRITE library linkages
Mon, January 21 2008

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.

520.99 Support for more contexts
Mon, December 17 2007

This internal change increases the maimum number of OPAL contexts that can now be used for SUPERVISOR. Please refer to SUPERVISOR DNote 530.02 for more information.

520.98 Internal change
Mon, December 3 2007

Use Include/Meta

520.97 Support for LICENCEDAYS attribute
Fri, November 30 2007

The LICENCEDAYS attribute returns the number of days before the software licence expires for the appropriate Metalogic product. This value will return negative values for expired or illegal products and 99999 for products that have a PERMANENT licence.

The list of valid Metalogic software that can be checked may be seen in the response to a HELP ATTR LICENCEDAYS command. This attribute is only available to SUPERVISOR.

520.96 Support DUMAP attribute function
Fri, November 30 2007

Internal Metalogic change in preparation for the new Supervisor DUMAP attribute.

520.95 Support for various LOG time attributes
Mon, November 19 2007

This change supports the new LOG and MYSELF attributes described by OPAL GSTABLEGEN DNote 520.56.

520.94 Link Attributes
Tue, November 13 2007

Attributes that can be used as links are now better identified in the HELP ATT report. If an attribute is a link it can be used in some kind of linking method, as follows:

Link To Method

MX VIA Function 
PER VIA Function 
PRINTS VIA Function 
VDBS VIA Function
TAPEDB VIA Function 

or

										
TL= attributes
PD PD= attributes 
VL VL= attributes 
QUEUE QF attribute 
USER USERDATA attribute

This also fixes a bug in the VIA function when a reference attribute appeared inside an expression.

520.93 Fix Real Constants
Wed, October 24 2007

The GSType patch broke real constants. This restores their function.

520.92 Fix Define for situ for log based contexts
Wed, October 24 2007

Version 520.88 introduced a bug when defining Situations with a log based context which had subtypes. Ex DATABASE,DMS,FILECLOSE, FILESTATUS,LOGBOJ,LOGEOJ,LOGPS,OPERATOR,VOLUME.

If no subtype was specified the context was not stored with the define and the Situation would not work. Defining all of the subtypes would detour the problem. So DEF+SITU TEST(LOGEOJ):... would create an invalid Situation but DEF + SITU TEST(LOGEOJ=EOJ,EOT) would be fine. This bug has now been corrected.

520.91 JSON
Tue, October 23 2007

Add option to return attribute information in Javascript Object Notation.

520.90 Support Cleanup of SB and FI atts
Mon, October 22 2007

This change supports the changes in GSTableGen 520.53, and the use of CALL DO in the PD context.

520.89 Support for new Flex Attribute LastDIr
Tue, October 16 2007

Supports the new Flex attribue LastDIr as described in Opal/GSTableGen note 520.52

520.88 Fix def ? for VL Situations
Fri, October 12 2007

If a Situation was defined as (VL) and then interrogated it would return (VL=VL=DISK,PACK,CD,CDIMAGE,FARM). This problem has been corrected.

520.87 Length in PD Object
Wed, October 3 2007

Make use of length stored in PD Object.

520.86 Fix INVALID INDEX after syntax in long in-line
Mon, October 1 2007

Previously, certain syntax errors generated by very long SUPERVISOR in-line Opals could have caused an INVALID INDEX @ 83041000 depending on the type of error being handled. This problem is now fixed.

520.85 System Help All
Wed, September 5 2007

Implement HELP ATT <pattern> : SYSTEM ALL to return all SYSTEM Context attributes. HELP ATT <pattern> : SYSTEM now only returns the basic system attributes.

520.84 Avoid extra heap entries with .Distribute
Tue, September 4 2007

If the identifiers used in the list passed to the .Distribute method contained lower case characters, then each time such an identifier was used a new entry was made in the heap instead of overwriting the previous entry.

Ex. $list:="Fam=TEST";

      $Tmp:=$List.Distribute;
      $Tmp:=$List.Distribute;

											Would result in two entries for $FAM in the heap.
520.83 Protect Metering and many sys Atts
Thu, August 30 2007

If a large log record ( > 2733 words ) was processed by a Supervisor LOG When or Eval then Metering attributes and many system attributes (like MCPTIME) would return 0 or empty strings.

This problem has been corrected.

520.82 Allow empty variables in .Distribute
Tue, August 28 2007

If the list passed to the .Distribute method had a variable name with no value (Ex. "Name=,Value=1"), Then the variable would be ignored and an error (in our example NAME=) returned.

This will now be treated as storing an empty value in the associated variable. In our example $Name:=Empty.

520.81 Fix .distribute for dynamic variables
Wed, August 22 2007

The methods .Distribute,.Cut,.Copy and .Includes now work correctly for dynamic variables e.g. $$Y.Distribute

The .Split(<integer>) method will no longer return an empty string when used with a Perm variable.

520.80 Allow DO lists for USER and VL contexts
Mon, August 20 2007

This change supports that described in SUPERVISOR DNote 521.17 discussing parameter passing changes for VL and USER contexts. Please refer to that DNote for more information.

520.79 Correct HELP ATT handling of PD context
Thu, August 2 2007

This change refers to that described by SUPERVISOR DNote 520.14 which corrected the behaviour of the HELP ATTR command when used with the new PD context.

520.78 Fix for RAWEXTERNAL metering attributes
Mon, July 23 2007

The metering attributes RawExternalKeyId and RawExternalKeyString would return invalid results for indices > 1. This problem has been corrected.

Metering attributes which retrun preformance level now work correctly.

520.77 Enable \ inhibitor in wildcard operations
Fri, July 20 2007

The backslash (\) character in wildcard text matching is intended to inhibit the significance of the following character that would otherwise be interpreted as a wildcard element. Unfortunately, this feature did not work.

For example, the expression"PATCHREL@METALOG" EQW "=REL\@META=" returns FALSE because the '@' character is considered as a wildcard element instead of a character in the text string. This problem would have affected all wildcard operations in Metalogic software and is now fixed.

520.76 Fix for .Cut and .Distribute
Tue, July 17 2007

A bug has been fixed in the .Distribute method where an input string with no <id> before the = sign would cause a fault.

The .Cut method will now leave any leading and trailing delimiters on the source string until there are no items left in the source.

520.75 Incorrect stack handling for non-masked string atts
Thu, July 5 2007

Previously, certain OPAL STRING attributes that belong to non-masked SUPERVISOR LOG contexts, such as WINDOWNAME and TASKNAME in the WINDOWS context and MIMETYPE in the LOGHTTP context, would cause OPAL stack problems if the attributes returned empty strings values. This could cause SITUATION code that use these attributes to display LOGICAL ASSERTION UNTRUE AT SEQUENCE 97547000 errors and, similarly, ODTSEQUENCE code to eventually fault after repeated executions with INVALID INDEX faults because the OPAL stack had overflowed. This problem is now fixed.

520.74 Prevent deleted string returning a value
Fri, June 29 2007

If the same name was used for both a string and numeric variable it was possible for the string varible to pick up a random value. The only time this has been observed is when using the Clear function.

Ex. $X:="X"; Clear; #A:=1 Show($A) would return "X"

This problem has now been corrected.

520.73 PDSubKIndList
Thu, June 28 2007

Implement the PDSUBKINDLIST attribute.

A GETSTATUS Hard Error 41 was reported when accessing an attribute which required a Disk File Header and the Header was larger than the allocated Array.

520.72 Return FileIDs when /=
Thu, June 21 2007

If a directory with /= was passed to the FileIDs,FileID,TakeFileIDs or DropFileIDs function, a wrong answer was returned.

Add Translate(<string>,FirstLetter) to translate the first letter to upper case, and all subsequent letters to lower case.

520.71 Fix .CUT bug when no terminating delimiter
Tue, June 19 2007

If the .cut method was used on a string which did not have a trailing delimiter and the element cut was the last element of the list then the length of the remaining string would be too small.

Ex.

   $List:="c"
   $List.Cut("c") would correctly return "c" but $List would be left
   as length -1 instead of length 0

520.70 Include Archiving for NR PD atts
Fri, June 15 2007

Add Archiving for NR PD attributes in HELP ATT info.

520.69 Implement ISFILE and ISDIR
Mon, June 11 2007

This change implements the ISDIR and ISFILE attributes in the PD context and corrects a bug in the PD context when certain System attributes were used.

520.68 Support for PDSEG0VERSION attribute
Thu, May 31 2007

This change supports the new SYSTEM PD attribute, PDSEG0VERSION, implemented by OPAL/GSTABLEGEN DNote 520.41.

520.67 Don't force * for .READ calls in FLEX
Thu, May 31 2007

The use of READ operations from SUPERVISOR scripts will automatically prefix the file title with a '*' if the filename does not start with '*' or '('. For example:

   $FILE:="SOURCE/LIVE ON DEV";
   $TEXT:= $$FILE.READ
The above causes the SUPERVISOR script to look for a file called *SOURCE/LIVE regardless of the calling usercode. However, this behaviour also applied to FLEX scripts which invariably are run under a usercode causing the file to be not found or a non-usercoded version to be read instead.

To address this, FLEX scripts will now behave differently by not prefixing an unqualified title with '*', allowing the READ to use the local usercode file first, if available.

Also, this change addresses several issues with both READ and WRITE operations for DATA files that have MAXRECSIZE values greater than 128 characters. These problems, now fixed, caused data truncation to occur.

A WRITE operation will now return the result string"OK UPDATE" instead of "OK", allowing the caller to know that the file was appended.

520.66 Implement file .WRITE method
Thu, May 24 2007

Both SUPERVISOR and FLEX now have the ability to write symbolic or DATA files from any OPAL script. A new string variable method called WRITE (similar to READ or FILE) has now been implemented to provide this feature. Like the READ method, WRITE is only effective when used with a dynamic variable reference (i.e. using the $$ variant):

   $RES:= $$VAR.WRITE($TEXT)
In the above example, the variable $VAR must hold a list of valid file attributes, including title, to determine the type of file being written. This attribute list is identical to that used by any file equation used in a WFL job. The data to be written to the file is held in the variable $TEXT or this may be any string expression.

A more detailed example:

    $VAR:= "TITLE=*OUTPUT/MESSAGES, FILEKIND=JOBSYMBOL";
    $TEXT:= KEYIN("MSG");
    $RES:= $$VAR.WRITE($TEXT);
    IF $RES NEQ "OK" THEN
       DISPLAY("WRITE METHOD FAILED: ",$OK);
Here, WRITE will create a file called *OUTPUT/MESSAGES with a FILEKIND of JOBSYMBOL and default blocking attributes associated with the FILEKIND. The above script will write the contents of the KEYIN call (i.e the response to the MSG command) and will respect new line markers in $TEXT where possible.

To create a byte stream file, the attribute list in $VAR requires a change:

   $VAR:="TITLE=*STREAM/FILE, FILEKIND=DATA, FILESTRUCTURE=STREAM";
If FILESTRUCTURE=STREAM is specified, other blocking attributes will be ignored. If the WRITE operation is successful, the method returns the string "OK" to the caller; any other value indicates that the file could not be written or the attribute list in $VAR was incorrect.

Any DATA or symbolic file can be written. If FILEKIND=DATA is used the caller may provide his own BLOCKSIZE/MAXRECSIZE specifications; any MAXRECSIZE or BLOCKSIZE specifications for all other FILEKINDS will be ignored. At the current time, it is not possible to create a DATA file with a MAXRECSIZE greater than 255 characters.

WRITE automatically permits data to be appended to an existing file but only if the file has been created by a previous WRITE operation from SUPERVISOR or FLEX. Files created by the WRITE method have a special user-defined disk file attribute which marks them as Metalogic origin. If a WRITE operation is attempted to an eligible existing physical file, the WRITE will ONLY be permitted if this user disk file attribute is present and set to a preset value. Any attempts to WRITE to any other existing file will fail with the result:

  "Error: Not allowed:Ineligible resident file"
If a physical file is being appended by a WRITE operation, OPAL will use the file's blocking and structure characteristics at the time the file is opened. Any MAXRECVSIZE, BLOCKSIZE or FILESTRUCTURE attributes included in the attribute list in $VAR will be ignored.

Normal security restrictions and family substitution will apply in files created by the WRITE method. Because SUPERVISOR is privileged WRITE files can be created under any usercode and subsequently appended. Note that if no usercode or * is assigned to a TITLE assignment for SUPERVISOR WRITE operations, any files will be created under the USE USER FOR SUPERVISOR usercode.

No special file-creation privileges apply to the normal FLEX user.

Because of OPAL variable limits, a maximum of 1,999,999 characters may be written by any single WRITE operation.

520.65 PD Context Support
Fri, May 18 2007

Some Flex-only code is now also used by Supervisor for the PD object. This entailed some significant re-arranging to allow the PD attribute functions to work in Supervisor.

520.64 Fix indexed metering attributes
Wed, May 16 2007

The change made in version 520.51 was corrupted and had the effect of invalidating any indexed metering attributes. Indexed metering attributes now work as intended.

520.63 Fix WINDOWNAME and TASKNAME WINDOWS atts
Thu, April 19 2007

Previously, the WINDOWS context attributes WINDOWNAME and TASKNAME caused any OPAL script to fail with an INVALID CODE error. This problem. introduced by earlier changes for string attributes in the OPAL compiler, has now been resolved.

500.62 Restrict GLOBAL vars to 17 characters
Wed, April 18 2007

Global OPAL variable identifiers are now restricted to 17 characters in length. Only PERMANENT variable identifiers are permitted to be longer than 17 characters with their maximum name length now restricted to 72 characters.

520.61 Fix Valid(User)
Tue, March 6 2007

Valid now works for the USER and UDACTION atts in the USER object. A conflict between optimization and Valid() is also now resolved.

520.60 Valid for USER Context Atts
Fri, February 23 2007

The Valid function will now return false if an attribute in the USER object is not present in the Userdatafile entry for the current user.

520.59 Dont treat dynamic variables as constant.
Thu, February 22 2007

Dynamic variables ( $$s etc) were intended to be treated as 'over writeable' with the least recently used being overwritten when the heap size of 255 was exceeded. This was not the case and a slot could fault if more than 255 variables were used.

520.58 Fix USERDATA RU requests
Wed, February 21 2007

The RU subset of modifiers for the USERDATA function attribute will now not give the error INVALID CODE in ODTSEQUENCE @95754000 when it is executed in a compiled OPAL script.

520.57 Support of OPAL string handling up to 2,000,000 ch
Tue, February 20 2007

SUPERVISOR and FLEX will now both support OPAL strings up to a maximum size of 2,000,000 characters; previously this limit was 393,209. All string operations are supported by this change except for storage into PERM and CONFIG variables and this limit remains at the previous value.

520.56 Additional LOG context attributes
Mon, February 12 2007

This change supports the new LOG context attributes, such as LOGRAW, LOGTITLE, LOGSEQNO, as discussed in OPAL GSTABLEGEN DNote 520.36.

520.55 FormURLDecode
Fri, February 9 2007

Add FORMURLDECODE and BLANKNONGRAPHICS to Translate function.

520.54 FileURL
Wed, January 24 2007

Add <url> to FILE variant of Respond,

   Respond(<filekey>,<mimetype>,<filespec>,<url>)
     <filekey>::=FILE | DIRECTORY
520.53 Support for TTLASTERROR attribute
Tue, January 23 2007

The TTLASTERROR self-knowledge attribute has been implemented to allow callers of the Opal TT function to know whether the command was successfully processed by SUPERVISOR.

520.52 Support for TT function
Fri, January 19 2007

A new OPAL function, called TT, has been implemented for SUPERVISOR only. This string function, similar to KEYIN, permits the user to process any TT command (without the prefix) and cause the calling OPAL to wait until the command has been completed. The difference from KEYIN is that special slot commands such as WHEN, ONCE, EVAL and DO will also cause the caller to wait, instead of processed independently. Like KEYIN, TT returns the response of the SUPERVISOR command as the function string result.

      ---   TT ( <string expression> ) -------------------------
Please see SUPERVISOR DNote 520.57 for more detailed information.

520.51 Fix for some metering attributes
Thu, January 18 2007

A major cleanup of the metering attributes. Please see Opal/GSTablegen Dnote 520.29 for more details.

520.50 Unquoted
Thu, December 21 2006

Add Translate(<string>,UnQuoted), TakeFileIds(<string>,<integer) and DropFileIds(<string>,<integer).

520.49 Padding
Mon, December 11 2006

Fix Padding calculation for short strings.

520.48 Protect DS and VDBMS OPENERROR problems
Mon, December 11 2006

This changes supports the fix described in SUPERVISOR DNote 520.53 that describes problems using the DBS function and VDBS context where SUPERVISOR cannot link to DMSII tailored software. Please refer to the above DNote for more information.

520.47 Clear
Tue, December 5 2006

The Clear function clears the Heap and returns an empty string.

520.46 Respond Directory
Mon, December 4 2006

Add <url> parameter to Respond Directory function,

        RESPOND(DIRECTORY,<mime type>,<directory>,<url>)
The Distribute method of a string variable may be used to generate local variables from a string containing name/value pairs.

<distribute method>::=distribute |

                       distribute ( <delimiter> ) |
                       distribute ( <delimiter> , <list format> )
<delimiter> ::= <string expresson> <list format> ::= NameEqlValue | MultiPartForm

A local variable called $NAME set to the corresponding value is created for each name/value pair found in the list. The local variable is always stored in upper case.

Any characters which are not distributed as local variables are returned as the function value.

$l:=$r.distribute;

    The default form expects a list syntax of <name>=<value>, ...
$l:=$r.distribute(";");
    The optional first parameter is a string which is to be used
    as the <name=<value> pair list separator.
$l:=$r.distribute(",",NameEqlValue);
    The second parameter may be used to select a well known list
    syntax. This example does the same as the default.
$l:=$r.distribute("1234---1234",MultiPartForm);
    The MultiPartForm list format may be used with an HTML Multi
    Part Form and is in the format "<name>"CRLF<value>.
The Translate function now provides Base64 encoding and decoding.

The first 2 functions assume that the string being encoded consists of graphic characters destined for a remote ASCII system.

   Base64Encode  - Translates the source string to ASCII and then
                   encodes it as Base64.
   Base64Decode - Translates the source string containing a Base64
                  encoding to its ASCII value and then translates
                  it to EBCDIC for use within OPAL.

These 2 functions encode and decode binary data.

   BinaryToBase64 - Translates the source string value to Base64.
   Base64ToBinary - Translates the source string containing a Base64
                    encoding to its original binary value.
520.45 Fix JobId and ReasonText(C)
Tue, November 28 2006

ReasonText (Completed) and JobId (Job) will no longer return null if they are the first attribute in an OPAL.

520.44 Fix STORE(..PERM) commands problem
Tue, November 28 2006

Any permanent variable assignment, using STORE or $Z.PERM:= from a SUPERVISOR ODTSequence, would inadvertently cause the assigned string value to be sent to the MCP as a system command *but* only if the original content of the permanent variable held the same value. This problem, introduced by the changed described in DNote 520.30, has now been resolved.

520.43 DTD type
Mon, November 27 2006

DTD requires 2 mnemonic parameters.

520.42 Protect against seg array in Translate(...EncodeEntity) function
Sun, November 26 2006

This change fixes a problem in the Translate( .....,EncodeEntity) function. It was possible for the function to cause a Seg Array Error.

520.41 HTTP
Fri, November 24 2006

The HEXSTRING function accepts either a numeric or a string value parameter.

A TRANSLATE function has been implemented.

   <translate function> ::= TRANSLATE(<string>,<how>)
   <how>::=URLToASCII |
           URLToEBCDIC |
           URLEncode |
           FormURLEncode |
           ASCIIToEBCDIC |
           EBCDICToASCII |
           EBCDICToHex |
           UpperToLower |
           LowerToUpper |
           RemoveNonGraphics |
           ToHexString |
           Squashed |
           URLToFileIDs |
           EntityDecode |
           EntityEncode
   URLToASCII  - Translates URL encoded characters in <string> to
                 their ASCII character value
   URLToEBCDIC - Translates URL encoded characters in <string> to
                 their ASCII character value and then translates
                 the ASCII character to its EBCDIC equivalent.
   URLEncode - URL encodes the <string>. See RFC 1738.
   FormURLEncode - URL encodes the <string> and in addition translates
                   spaces to a + sign.
   ASCIIToEBCDIC - Translates the <string> using the MCP translate
                   table ASCIITOEBCDIC.
   EBCDICToASCII - Translates the <string> using the MCP translate
                   table EBCDICTOASCII.
   EBCDICToHex - Translates <string> using the MCP translate
                 table EBCDICTOHEX. For example, the EBCDIC
                 string "F0F1" would translate to "01".
   UpperToLower - Same as Lower function.
   LowerToUpper - Same as Upper function.
   RemoveNonGraphics - Translates <string> by removing any non graphic
                       characters.
   ToHexString - Same as HexString function.
   Squashed - Removes leading, trailing and multiple embedded spaces
              from <string>.
   URLToFileIDs - Translates a URL to file title string which can be
                  used with the FILEID function. It removes any
                  leading or trailing slashes. Any level which has
                  non identifier characters is quoted. A quoted
                  level which only contains valid identifier
                  characters has the quotes removed.
   EntityEncode - Encodes the standard xml entities,
                     & to &amp;
                     < to &lt;
                     > to &gt;
                     ' to &apos;
                     " to &quot;
   EntityDecode - Decodes the standard xml entities back into their.
                  character values.
The RESPOND function has been implemented for the HTTP Context.
   <respond function> ::= <simple respond> |
                          <entity respond> |
                          <file respond>
   The RESPOND function returns either an empty string if there is no
   error, or else it returns an error message.
   <simple respond> ::= RESPOND(<status code>,<mime type>,<text>)
     <status code> ::= <integer>
     <mime type> ::= <string>
     <text> ::= <string>
   The simple Respond builds a complete HTTP response which is
   returned to the client. The Respond function cannot be used
   again within this invocation of the HTTP ODTS.
   Several of the common <mime types> are provided by the
   MIMETYPE attribute. See Help Att MIMETYPE.
   <entity respond> ::= RESPOND(<entity>,<text>)
     <entity> ::= STATUS | HEADER | BODY | CHUNK | ERROR
                  FILE | DIRECTORY
   The entity Respond is used to send the parts of an HTTP response
   to a client.
   The FILE and DIRECTORY entities are provided so that HEADERs
   other than those provided by the <file respond> can be
   provided.
   <file respond> ::= RESPOND(<filekey>,<mime type>,<text>)
     <file key> ::= FILE | DIRECTORY
   The file Respond function is used to send a file or directory
   listing to an HTTP client. The Respond function cannot be used
   again within this invocation of the HTTP ODTS.
   The <text> is either an MCP file title or directory specification.
The DTD attribute function has been implemented for the HTTP Context. It takes a menmonic parameter of STRICT, TRANSITIONAL or FRAMESET. See Help Att DTD.

The NAMESPACE attribute function has been implemented for the HTTP Context. It takes a mnemonic parameter of HTML, XHTML, XUL or XSL. See Help Att NAMESPACE.

The MIMETYPE attribute function has been implemented for the HTTP Context. It takes a mnemonic parameter of PLAIN, HTML, XHTML, XML, XUL, XSL, CSS, JAVASCRIPT, JPEG, GIF, PNG, XPI or DOWNLOAD. See Help Att MIMETYPE.

520.40 Fix [LK1920] <STRING> Atts
Mon, November 20 2006

[LK1920] <STRING>s, like RSVP broken by 520.38, are now fixed.

520.39 Correct an inefficiency in Display Opals
Fri, November 17 2006

Version 520.34 introduced a small inefficiency to Supervisor Diplays and Flex Reports. This change corrects the problem.

520.38 Fix <STRING> in Linked Structures
Thu, November 16 2006

<STRING> attributes, unlike <FILE>, <IDENTIFIER>, and <SIMPLENAME>, get their length from the link word, so they cannot be offset from it. This change reverses that assumption in code emission.

520.37 Fix GSHEADER attributes
Tue, November 7 2006

Previously, using special disk file header attributes, such as DFHCATALOGED, DFHBLOCKLENGTH and PROTECTION, inside a SELECT would cause FLEX to fault with 'FAULT TERMINATION in SELECT@82024000'. This change also protects a SEG ARRAY ERROR @ (10766690) fault when handling the same subset of attributes for files with a large number of rows.

520.36 Support for mixed SILO environments
Mon, November 6 2006

This change supports the hybrid USE SILO environment for Unisys and DSI tape robots, as described in SUPERVISOR DNote 520.43.

OPAL support for USE(BDNAME) and USE(SCRATCHPOOL) has been implemented.

520.35 Fix Bound error when using VL atts
Fri, October 27 2006

Using attributes prefixed by VL (VLNAME,VLDATE,VLMEMBERS,etc) could cause an Opal routine to fault if the requested serial number was not in the volume library. This problem has been corrected.

520.34 Allow Lookup of variables with #[$...]
Thu, October 26 2006

A new variant to the lookup function (#[...]) is now available. A $ variable can now be used between the brackets.

Ex if $S = "abcDEF" Then "123#[$s]567" would expand to 123abcDEF567

This change is intended for use in expanding 'template' files in future releases of Opal.

520.33 Add the new function TAG
Wed, October 18 2006

The new TAG string function can be used to encose a string expression in XML compliant tags. The function takes two string expressions as parameters. The first parameter describes the tag, the second is the string to be tagged. All text up to the first space in the 'tag' parameter is treated as the Tag, the rest of the text being attributes of the tag.

Ex. $E:=Tag("td","1234");

      $Line:=Tag('table width="694" border="0"',
                 Tag("tr",$E));
Would Leave $Line = <table width="694" border="0"><tr><td>1234</td>/<tr></table>

520.32 Fix NOSEQ handling for READ method
Mon, September 25 2006

The fix applied in DNote 520.24caused the NOSEQ option used with any READ method to be ignored. This problem has been fixed.

520.31 Protect LOGTEXT in LASTEVAL code
Mon, September 11 2006

The LOGTEXT attribute will now always return an empty string if it is incorrectly used in a code block which uses LASTEVAL. Previously, it was possible for SUPERVISOR to fault if an external SITESUPPORT system library was involved in the LOGTEXT generation (SUPERVISOR uses an entrypoint in JOBFORMATTER which, in turn, may call SITESUPPORT).

520.30 New CALL COMMAND ODTS Statement and global methods
Mon, August 28 2006

Supports the new Supervisor CALL COMMAND statement.

Variables can now be modified by both properties and methods. New combinations are:

 -- <string variable> -+-- .Global --+---+- .Split --+--------------+-|
                       +   .Perm ----+   +- .Cut ----+              |
                       |                 +- .Store --+
                       |                 |                          |
                       |                 +------------+             |
                       +   .Config  ------------------+  .Copy -----+
                                                      +  .Includes -+
 -- <Numeric Var> -----+-- .Global -+---+-- .Sum ------+-----|
                       +-- .Perm ---+   +-- .Accum ----+
                                        +-- .Delta ----+
Ex. If $S.Global="1,2,3,4" then $x:=$S.Global.Cut("2")
     would leave $s.Global="1,3,4" and $x="2"
This change also fixes two minor bugs in the Cut Copy and Includes methods. If the list ended in a delimiter then the last item in the list would not be found. So if $S = "1,2,3," $s.includes("3") would be false. If a delimiter longer that 1 character was used then Cut would leave all bar one character ot the delimiter in the list. So if $s="1xy2xy3xy" $S.Cut("2"."xy") would leave $s="1xyy3xy" instead of "1xy3xy"

520.29 Support new attribute ReplyText
Thu, August 17 2006

This change adds support for the new Mix attribute ReplyText.

520.28 Internal change only
Tue, August 8 2006

This change is to maintain compatibility with Supervisor.

520.27 Allow TDADDRESS of screens larger than 24x80
Tue, July 18 2006

The TDADDRESS function will now permit screen addresses greater than 24 rows and 80 columns. In theory, screens sizes up to 224x224 could be addressed but this will depend on the emulator being used.

520.26 Version 520.25 disabled OPAL and Supervisor
Tue, July 18 2006

OPAL can now be used in Supervisor.

520.25 :CAT broken by version 520.23
Fri, July 14 2006

The fix for this problem requires that any FMGR rules that start with a PD or VL att (unlikely) must be re-compiled.

520.24 Improve .FILE handling of DATA files
Thu, July 13 2006

Previously, the FILE or READ method for string variables did not always correctly handle blocked DATA files with large MAXRECSIZEs, sometimes causing a SEG ARRAY ERROR @ 97124296 fault. Now, as with CANDE, the FILE method will not attempt to read blocked DATA files whose MAXRECSIZE is greater than 255 characters with the method returning 'Error:Records too long.'

520.23 Fix problems when PD attributes are mixed with normal attributes
Mon, July 10 2006

Mixing PD attributes and normal attributes could cause unpredictable results. This problem has now been corrected.

520.22 Reimplement Valid, and various fixes
Sat, July 8 2006

The Valid function has for a long time, has only worked for a few special cases. It has now been re-implemented, allowing it to be used on any attribute. The new method involves transforming the attribute in a Valid function into a Boolean attribute to access its validity bit.

Validity checking when returning an attribute value has now been expanded, and several bugs have been fixed. A Valid function in an OPAL String returns "VALID" or "INVALID".

Use of a System Function attribute between Flex attributes will no longer cause subsequent Flex atts to return zeroes.

To aid in catching the use of old =VALID attributes, a special syntax error will point use of those attributes to the Valid function.

File

Id, can now access up to the 20th node, as per LongFileNames.

520.21 Implement FLEX RECORD statement
Thu, July 6 2006

The RECORD statement is now available for FLEX's REPORT BEGIN blocks and is currently only available for those FLEX customers who are also licensed for SUPERVISOR. The latest *METALOGIC/SUPERVISOR/RECORDER must be installed and SL-ed to the RECORDERLIB function.

RECORD usage is identical to that of SUPERVISOR allowing the use of a numeric subfile or REC mnemonic; the semantics are shown below:

   ---- RECORD -- [ -+- <integer> -+- ] -- ( -- <string> -- ) ----|
                     |             |
                     +- <mnemonic> +
The RECORD mnemonics are validated at compile-time and also run-time and must appear in the list returned by SUPERVISOR's TT REC NAMES command. FLEX's RECORD statement allows users to send file information or messages to SUPERVISOR's alert mechanisms (such as HOTLINE) and SUPERVISOR RECORD files.

For example:

     REP BEGIN
           RECORD [META_FILE] ("TITLE: ",TITLE);
         END;
520.20 Detect invalid SERIALNO attributes
Wed, June 28 2006

Previously, for certain serialno attributes such as PDBACKUPSERIAL, the OPAL engine would return a 6-character string of null characters instead of an empty string. This problem has been corrected.

520.19 Additional VIOLATIONTEXT messages
Wed, June 28 2006

Additional VIOLATIONTEXT messages and mnemonics have been added to the SECURITY context (SUPERVISOR only) compatible with MCP 52.1. This change also fixes a problem where VIOLATIONTEXT would return an UNKNOWN message for values of VIOLATIONCODE less than 10.

520.18 New FLEX Format
Mon, June 26 2006

Several attributes, created by the new Directory object format, have code in OPAL to handle their FN links. Also Generation is now a Function Attribute.

520.17 Slow down of VL context OPALS
Thu, June 15 2006

SUPERVISOR now handles VL context OPAL scripts using the EVALREADER mechanism for scans of the system catalog. Previously, SUPERVISOR scanned the catalog directly in its main stack and could be very CPU intensive if the Volume Library was large. The revised process allows processor control to be passed back to the system at regular intervals.

520.16 Support for LMDTITLE TAPEDB attribute
Thu, June 8 2006

The LMDTITLE attribute has been added to the TAPEDB context, allowing the title of the associated LibMaintDir file, if present, to be returned.

520.15 Implement simple WAIT for FLEX
Wed, May 24 2006

As with SUPERVISOR, it is now possible to use the WAIT statement in a FLEX REP BEGIN block. This allows users to control PROCESSOR LOOP detection problems inside a WHILE or DO loop for CPU-intensive scripts. The WAIT statement is a simple variant of its SUPERVISOR cousin, only allowing an arithmetic expression parameter to represent the delay time.

    ----  WAIT  -- ( -- <arithmetic expression> -- ) -------------|
Unlike SUPERVISOR, a WAIT in FLEX causes the script to wait the specified time and reset the CPU loop counters. Note that multiple WAITs in a script will accumulate - therefore extending script execution time - and that queued screen output (e.g. SHOW outputs) is not displayed to the user at that time.

The READ method, when used, will now unconditionally reset both FLEX and SUPERVISOR loop-checking counters after the file has been read.

520.14 DSI cartridge attributes revamp
Fri, May 12 2006

The SUPERVISOR TAPEDB context includes a small subset of attributes that support access to DSI and Unisys robot system information (attributes such as CARTINSILO, CARTSLOT and CARTLIBRARYID). Two OPAL code optimisation issues existed with this implementation:

First, any OPALs using these attributes were not optimised correctly causing unnecessary calls to the DXSI or CSCLIB libraries. Secondly, if these attributes were used in multiple OBJECTS or COUNT calls, any calls beyond the first would have failed. For example:

   SHOW(COUNT(TAPEDB:CARTSLOT Gtr 0);      % Returns 5
   SHOW(COUNT(TAPEDB:CARTSLOT Gtr 0);      % Returns 0

Both of these problems have been addressed; as this is a code issue, any OPALs using these attribute should be recompiled.

520.13 Protect unknown USERDATA attributes
Mon, April 24 2006

Attributes in SUPERVISOR's USER context that are available for use but not implemented in the current system USERDATAFILE structure will now be handled correctly. Previously, OPAL scripts using inaccessible USER attributes would fault with INVALID INDEX @ 97122710 but this problem has now been addressed by returning null values where the attribute does not exist.

520.12 Support for EXIT, QUIT and ABORT in REP BEGIN
Fri, March 24 2006

OPAL code REPORT BEGIN blocks now supports several new to control script execution. These statements are QUIT, EXIT and ABORT and their semantics are shown below:

    --+--- ABORT ------ ( <OPAL string> ) -------------+--------|
      |                                                |
      +--- EXIT ---------------------------------------+
      |                                                |
      +--- QUIT ---------------------------------------+
The ABORT command is similar to the SUPERVISOR version in that the current script execution is aborted; if this is a DO then the usual interruption handling will be invoked and no further files will be processed. If the ABORT is executed inside a DO file, then no further activities will be executed. The text held in <OPAL string will be displayed as the scripts aborts:
   #29066 FLEXLIB:ABORT:too many files
   #DO interrupted at line 00000620 of DO file ...
The EXIT statement allows the current REPORT code to be exited early, passing control to the next file; this is identical to the EXIT statement in SUPERVISOR ODTSEQUENCEs.

The QUIT statement is different in that the current scripted function, such as a FILES command, is gracefully terminated but later activities in the script will be processed normally.

520.11 Fix WFL use in simple conditional block
Thu, March 23 2006

The new WFL statement, available to FLEX in REPORTY BEGIN blocks, would give an 'RESERVED WORD OUT OF CONTEXT' error of used inside a simple IF..THEN block without a BEGIN/END around the WFL statement. This problem is now fixed.

520.10 Support for AF changes
Tue, March 14 2006

This change supports the AF ? ON DATE command revision as discussed in SUPERVISOR DNote 510.62.

520.09 Support OPAL REPORT blocks in FLEX
Tue, February 28 2006

This changes supports the new OPAL REPORT BEGIN capability described in detail in FLEX DNote 510.16. Key words such as BEGIN, END, CASE, WHILE and DO are now permitted from FLEX REPORTS and the MAIL and KEYIN functions have also been made available.

520.08 Support for .CUT and .COPY string methods
Tue, February 21 2006

Three new methods have been implemented for OPAL string variables and are available in FLEX and SUPERVISOR. The CUT, COPY and INCLUDES methods are intended for manipulating and parsing string lists and, for FLEX, the analysis of stream and symbol file contents. The CUT method, in particular, has similar capabilities to DECAT and SPLIT.

   -- $ <VAR> -+- .COPY  ----+-- (- < string > -+--------------+-- ) --| 
               |             |                  |              | 
               +- .CUT ------+                  +- , <string> -+ 
               |             |
               +- .INCLUDES -+  

The .CUT method allows the contents of a string variable to be searched for a user-provided target; the source should be a list of entities delimited by a known delimiter, the default is assumed as comma (,). Wild cards may be used with the target string to facilitate the search.

If the target string is found in the source, the target is returned with delimiters removed. The string contents of the variable is then adjusted to remove the search string and any associated delimiters.

For example:

$SOURCE:="THIS,IS,AN,EXAMPLE,LIST"; $Z:=$SOURCE.CUT("E=");

After the CUT, $Z holds the "EXAMPLE" and $SOURCE holds the new string "THIS,IS,AN,LIST".

Similarly, if the delimiter string was "_":

$SOURCE:="THIS_IS_AN_EXAMPLE_LIST"; $Z:= $SOURCE.CUT("LIST","_");

After the CUT, $Z holds "LIST" and $SOURCE has "THIS_IS_AN_EXAMPLE".

If no match is found, an empty string will be returned.

The .COPY method is similar to .CUT except that the source string contents are not changed; only the resulting target string is returned.

The .INCLUDES method returns Boolean TRUE or FALSE if the target string is matched in the source. All methods allow two parameters: a target string and an optional list delimiter. The special delimiter / allows end-of-line characters (as returned by the KEYIN function) to be searched.

Examples:

IF $SOURCE.INCLUDES("IS") THEN..... $FOUND:=$SOURCE.COPY("T=S"); $Z:= $SOURCE.CUT"=DEV=",/);

520.07 Fix for optimise problems when using MYSELF attribute
Wed, February 8 2006

The use of the myself attribute in the midst of a series of PD attributes could cause PD attributes after the myself attribute to fail. In the expression: if pdmaxrecsize(title)>0 Then #(pdmaxrecsize(title),,myself(width)) else "",, "segs=",,pdsegments(title)

The pdsegments attribute would always return 0.

This problem has been corrected.

520.06 Support for 5.2 LOGEOJ attributes
Wed, February 8 2006

Supports new attributes. Added the System attribute DLPDUMPFILES. The MX attributes HOLDQTIME,WORKLOADGROUP The LOGBOB Attributes TARGETPROCESSOR, ACTUALPROCESSOR. The LOGEOJ attributes CODEFILENAME,RELEASEID, NORMINITPBITTIME,NORMOTHERPBITTIME,MEASUREDPROCTIME, MEASUREDINITPBITTIME,MEASUREDOTHERPBITTIME,HOLDQTIME,USERALIAS, TARGETPROCESSOR,ACTUALPROCESSOR.

Some of these attributes are only valid on MCP 5.2

520.05 Fix VLSERIAL corruption if invalid
Mon, January 30 2006

Previously, for any OPAL attribute that returned a serial number (such as VLSERIAL, SERIALNO etc.) and that attribute was invalid in the context, SUPERVISOR may have returned a corrupted or invalid string instead of the usual empty value. This problem has now been fixed.

520.04 Support for LIBMAINTDIR Opal attributes
Mon, January 30 2006

Two new attributes, LMDFILECOUNT and LMDBYTES, have been added to the TAPEDB context. If a tape volume has an associated LIBMAINTDIR file, SUPERVISOR may retrieve the number of files and the disk space occupied on the tape by using these attributes. This information is particularly useful for appended tapes.

520.03 Add support for Port IP address attributes
Fri, January 27 2006

New attributes MyIpAddress and YourIpAddress have been added to both FILEOPEN and FILECLOSE contexts. These attributes are available from MCP 5.2.

In cases where loganalyzer would return *Host Services* for MyUsercode or YourUsercode Opal would return a three character string of non printable charactess. Opal is now consistent with Loganalyzer.

Use of the From_PLI attribute would cause an 'Not Yet Implemented' fault. This problem has been corrected.

520.02 Add attributes for BOJ parameters
Thu, January 26 2006

Adds new LOGBOJ attributes CodeFileName, ReleaseID, MPId. Plus new attributes valid from MCP 5.0 NonPrivSet and NonSystemUserSet. Plus new attributes valid from MCP 5.2 CountParamSuppressed, CountParamExcluded,CountParameters,Jobparameters,UserAlias.

TT HELP ATT on any of them will give full details.

520.01 Protect PD..TZ attributes
Wed, December 21 2005

Using the PD Timezone attributes PDCREATIONTZ,PDEXECTZ,PDREADTZ or PDOPENTZ would cause Opal to fault. This problem has been corrected.