Flex commands should not be pased by the opal compiler. When compiling a Flex Do file the commands in DO,SECURE,SECURITY, MAINT,LC will no longer generate syntax errors. Note that the syntax of any flex command will not be checked until the Do file is run.
Ths change fixes a bug introduced in FLex Library version 540.29 which stopped a compile of Flex rules from working.
SYSTEM/OPAL now recognises the updated Opal source+code limit of 255 segments to 2184 segments for any SUPERVISOR DEFINE, as described by SUPERVISOR DNote 541.74.
The change described by DNote 540.04 could have caused SYSTEM/OPAL to enter a processor loop when compiling a Flex DO file or Rules batch file. This problem is now fixed.
Previously, SYSTEM/OPAL was not always detecting the presence of the termination character,'\', for a SUPERVSOR DEFINE when the lines was provided by a patch instead of the source. At compile time, using EDITOR or Programmer's WorkBench, the '\' character was erroneously passed to the OPAL compiler as source text causing the compile to fail. SYSTEM/OPAL now better checks for '\' in both source and patch.
SYSTEM/OPAL will now handle SUPERVISOR ENTER files that have DEFINE - commands to delete SITUATIONs, ODTSEQUENCES etc. Previously, DEFINE - ODTS commands would be compiled unconditionally and DEFINE - SITU would fail with syntax. Now SYSTEM/OPAL will recognise these commands, check that they are valid and skip any further processing.
c w opal #COMPILING 47347 ** Deleting ODTS X ** ** Compiling ODTS X ** Compiled Ok.. 1 lines, 23 bytes code, 1 sectors ** Deleting ODTS MSG_SUPPRESS ** ** Compiling ODTS X2 ** Compiled Ok.. 3 lines, 72 bytes code, 3 sectors 4 DEFINE(S) processed, 0 DEFINE(S) failed, 0 Error(s) found #ET=0.1 PT=0.0 IO=0.0
If an empty line preceded a new SELECT or REPORT command in a FLEX DO file, the compiler would invariably fail the script with syntax errors. This problem is now fixed.
If the combined size of Source and Code for a compiled define is greater than 255 segments, the warning issued will now report the size of the source and the code.
If the first define in a file passed to SYSTEM/OPALS was as MEMO then even if all other defines compiled the compiler would report that the compile failed, although no errors were listed. This minor problem has been corrected
Allow for REP DO and BACKUP commands in Flex DO files.
Previously, the compiler would have faulted with a SEG ARRAY ERROR @ 302941000 if the context specified in a DEFINE was empty i.e.'()'. Further, using a CARD patch input file with sequence numbers less than 10000000 caused SYSTEM/OPAL to loop indefinitely or fault with an MEMORY REQUEST GREATER THAN 65535 WORDS error. Both these problems have been fixed.
Similar to SUPERVISOR DEFINEs, SYSTEM/OPAL compiles of FLEX REPORTS and SELECTS will now provide summary information after each compilation, showing number of lines processed and length of generated code.
The OPAL compiler will now better handle free-format REPORT commands especially where REPORT block BEGIN..END is used. Previously, the BEGIN keyword had to be present on the same line as the REP directive.
This change supports a new SUPERVISOR context called AFTER; please see SUPERVISOR DNote 530.22 for more information.
This change supports the new SUPERVISOR context called WHEN; please see SUPERVISOR DNote 530.13 for more information.
This changes supports the increase in the maximum number of OPAL contexts supported by SUPERVISOR. Please see SUPERVISOR DNote 530.02 for more information.
SYSTEM/OPAL now supports the compilation of Flex DO files without the use of the '\' continuation character for multi-line SELECT and REPORT scripts. Please see FLEX DNote 520.10 for more information.
Compiling FLEX DO files will now not give a syntax error when a SEL- card is encountered.
This change supports the new WRITE method for OPAL string variables as described in OPAL DNote 520.64. Please refer to this note for more details.
Version 510.07 broke the parsing of DEFINE - all Flex parsing and many other Supervisor commands. This change fixes these problems.
The SYSTEM/OPAL compiler will now recognise the new REPORT BEGIN code block implementation discussed in detail in FLEX DNote 510.16.
The implementation described in Dnote 510.02 for the auto-ENTER of OPAL DEFINES has been made more restrictive. Previously, file-equation of the CODE file to a title other than CANDE/CODEnnnn was sufficient for SYSTEM/OPAL to compile DEFINES into the SCHEDULE; this is now not the case and either of the following conditions must also be valid:
1. The task attribute TARGET is set to 255 2. The file CODE has a title that starts with the string AUTO/ENTER (the compiler will skip the usercode when checking)
For example, from CANDE:
COMP;PL TARGET=255 COMP AS $AUTO/ENTER
SYSTEM/OPAL will now recognise and compile DEFINES whose program type is COMMAND or COM. For more information on COMMAND programs, please refer to SUPERVISOR DNote 510.40.
The standalone OPAL compiler will now permit the automatic compilation of all SUPERVISOR defines in a source file directly into the SCHEDULE file. This is implemented by calling an external procedure in SUPERVISOR which now freezes as a BYTITLE library. Previously, after editing and test compilation, the source file would have to be manually ENTERed from a SUPERVISOR window, MARC or ODT.
To auto-enter DEFINES into the SCHEDULE, the compiler must be executed with the title of its CODE file set to values other than "CODE." or "CANDE/CODEnnnn.". From CANDE, this would be achieved by:
C W OPAL AS $T #COMPILING 17647 #? ** Compiling ODTS FI ** Compiled Ok.. 15 lines, 1383 bytes code, 15 sectors -- Entering DEFINES into live SCHEDULE -- SCHEDULE AMENDED, 17 RECORDS PROCESSED, 1 COMMANDS HANDLED 1 DEFINE FOUND, 1 DEFINE COMPILED OK #ET=0.7 PT=0.1 IO=0.By specifying the object file using 'AS $T' and after a successful compile, the SYSTEM/OPAL compiler will initiate an ENTER command to compile the DEFINES in the source file into the live SCHEDULE file.
Only users that are marked as privileged (PU) or SYSTEMUSER may perform the ENTER from an OPAL compile.
Minor compatibility change supporting the deimplementation of the SUPERVISOR LOCASE option, as described in SUPERVISOR DNote 510.16.
Previously, for multi-line SELECT or REPORT scripts in FLEX DO files, any commented text following OPAL source but prior to the '\' line terminator would cause unexpected syntax errors in the SELECT or REPORT. This problem is now fixed.
The change implemented in DNote 500.04, under certain conditions, could have caused SYSTEM/OPAL to enter a tight processor loop after encountering a SUPERVISOR 'DEFINE + ... FROM <FILETITLE>' entry in an ENTER file. This problem has been fixed. Note that DEFINE...FROM <FILETITLE> constructs are still ignored by the OPAL compiler.
This change now allows SYSTEM/OPAL to compile standalone FLEX DO scripts without having to run FLEX Inquiry. This means that the SYSTEM/OPAL compiler can now syntax check all forms of Metalogic OPAL scripts (SUPERVISOR ENTER files, FLEX rules and DO files) from one environment.
SYSTEM/OPAL recognises keywords, such as REP, REPORT, SEL and SELECT, allowing the script to syntax-checked without the need to run through FLEX. Other FLEX commands such as WFL, FILES, USAGE etc are NOT syntaxed.
If a DO file uses a PARAMETERS function, then it is possible to optionally assign default values to each variable:
PARAMETERS(FAM=A,MAXDAYS=10,MAXSEGS)
These assigned values will then be used in the compiled script to replace individual parameters. If no default is provided, SYSTEM/OPAL considers the parameter as numeric. Note that, in the current implementation, all default values must be shorter in length than the original parameter name to avoid complex substitution issues.
NEXT+ ....*....1....*....2....*....3....*....4....*....5....*....6.. 00000001PARAMETER(DIR,SELECT=TRUE) 00000010WFL REMOVE LST,CDI/JOB 00000100REPORT TITLE,",",ROWSIZE,",",SEGMENTS,",",DFHHDRLENGTH 00000120SEL #SELECT# 00000200FILES #DIR#:FL,F LST 00000300REPORT HEAD "BEGIN JOB CDITEST;COPY " 00000400REPORT FOOT " NOFILE TO CDIMAGE(CD,HOSTNAME=LOCAL);END JOB" 00000500REPORT TITLE,"," 00000600FILE #DIR#:FL,F CDI/JOB 00000700WFL START CDI/JOB 00000800QUIT C W OPAL #UPDATING #COMPILING 40203 ** Compiling REPORT ** Ok.. ** Compiling SELECT ** Ok.. ** Compiling REPORT HEAD ** Ok.. ** Compiling REPORT FOOT ** Ok.. ** Compiling REPORT ** Ok.. #ET=0.6 PT=0.3 IO=0.1
The $SET LIST compiler directive can be used to obtain printed compile listings, as if OP+SETL was input. It is not currently possible to use ' FROM <filename' with SELECT or REPORT.
SYSTEM/OPAL may now be used to compile source files containing FLEX rules used by the FAMILYMANAGER utility. As with DEFINE in ENTER files, the stand-alone compiler searches for the keywords ZAP, RELEASE, RIP etc. to signify the start of a rule definition. This allows new FLEX rules to be checked for syntax from a non-rules usercode without requiring a RULES ENTER command.
For a rule to compile successfully, the same conditions employed by FLEX Inquiry apply i.e. there must be a message description enclosed in quotes after the rule type (this is handled as an OPAL string and is compiled), followed by a colon. The rule expression may appear on the same line. The expression MUST terminate with a semi-colon or the OPAL compiler will give a syntax error. Note
NEXT+ ....*....1....*....2....*....3....*....4....*....5....*... 00000100FORGET "XREFFILES" :"XREFFILES" ISIN TITLE; 00000200FORGET "CANDE & MAIL recovery files": 00000300 ( FILEID(TITLE,1)="CANDE" AND 00000400 FILEID(TITLE,2) HDIS {"RECV","TEXT","CODE"}) OR 00000500 ( FILEID(TITLE,1)="MAIL" AND 00000600 FILEID(TITLE,2)="RECOVERY");
COMP W OPAL #COMPILING 54981 ** Compiling FORGET Rule "XREFFILES" ** Compiled Ok.. 1 lines, 29 bytes code, 1 sectors ** Compiling FORGET Rule "CANDE & MAIL recovery files" ** Compiled Ok.. 4 lines, 120 bytes code, 4 sectors 2 RULE(S) processed, 0 RULE(S) failed, 0 Errors found, 0 Warnings #ET=0.2 PT=0.1 IO=0.0
The dollar options LIST and CODE will generate source and code listings similar to compilation of ENTER files.
The VL context is now supported by SYSTEM/OPAL; this also includes any usage within the COUNT and OBJECTS functions.
The JOBQUEUE (or SQ) context is now supported by SYSTE/OPAL; this also includes any usage within the OBJECTS and COUNT functions.
SYSTEM/OPAL now uses the MCP FILERECFORMAT entrypoint for file-handling functions instead of an older, internal mechanism.
SYSTEM/OPAL will now syntax any DEFINE name that is longer than 17 characters. Also, the logging of DEFINE heading errors will now appear in the ERRORS listing generated by the compile. Some minor formatting changes have also been made.
The compiler will now recognise and action the 'STRICT' option if it is set in the heading line of an ODTSEQUENCE. This option will cause the compiler to treat the use of isolated Strings or String Expressions used as Statements as a syntax error. A typical heading line to set the options 'LIST' and 'STRICT' might be:-
TT DEFINE + ODTSEQUENCE MYTESTODTS SET LIST STRICT:If the STRICT option is not specified the compiler will output a Warning if an isolated String or String Expression used as a Statement is encountered.
The compiler will now continue after encountering an error until the entire input file is processed or a pre-defined Error limit is reached. It will also produce a closing summary of the number of Opals compiled the number of Errors encountered and the number of Warnings issued. In addition an ERRLIST file will be generated containing the Errors and Warnings produced.
The compiler will now accept a '$' (Dollar) card image as the first line of the input file. This option card image allows the User to specify a 'global' STRICT option that will be applied to all ODTSEQUENCE Opals compiled from the file together with an overall Error Limit after which the compilation will be terminated. A typical option card might be:-
$ SET STRICT ERRORLIMIT 30If STRICT is not specified only those ODTSEQUENCE Opals where STRICT is specified as an option on the Header line will be subjected to the new STRICT String rules, any others will merely generate Warnings if an 'Unsafe' construct is encountered. If no ERRORLIMIT is set the compilations will continue until the end of file is reached regardless of the overall Error count.
The compiler will now provide printer backup listings for errors and warnings encountered the compile of the ENTER file. OPAL also provides a summary report to the originating station indicating the number of successful and failed compiles.
RECORD [TEST] ("Test Message")The compiler will now generate a warning message in these circumstances to indicate that the mnemonic was recognised but was not validated.
When OPAL is invoked to compile code being entered via SUPERVISOR any RECORD mnemonic will be validated against the REC_FILEMAP in the usual way.
The message appears as a warning:
WARNING:Code + Source size > 255 sectors!! WARNING:You need to use ENTER REF to enter
Also, the summary message ld displayed for each compiled DEFINE will now show the number of sectors required for storage in the SCHEDULE file. If this value exceeds 255 sectors, SYSTEM/OPAL will give an error:
Program size greater than 255 sectors!!
This error occurs because this is the maximum size of any DEFINE held in the SCHEDULE, including original source and generated code.
DEFINE + ODTSEQUENCE TEST(MX) SET LIST,CODE:
Previously, the above would have generated a syntax error.