| 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 > 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)) > #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 &
< to <
> to >
' to '
" to "
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.
|