This section describes the qualifiers available with the PLI command. Command qualifiers request processing choices by the compiler. You can specify qualifiers to the PLI command after the command or after a file specification. See Section 2.3.1 for information on using file specifications with qualifiers.
Table 2-1 summarizes the qualifiers and indicates the differences between their use with the Kednos PL/I for OpenVMS VAX and Kednos PL/I for OpenVMS Alpha compilers.
|Qualifier||Default||Kednos PL/I for OpenVMS VAX and Kednos PL/I for OpenVMS Alpha
|/ALIGN[=option]||/NOALIGN||Qualifier options differ|
|/DEBUG[=option]||/DEBUG=TRACEBACK||Qualifier options differ|
|Qualifier optionsand defaults differ|
|/[NO]OPTIMIZE[=option]||/OPTIMIZE=ALL||Qualifier options differ|
|/SHOW[=option,...]||/SHOW=NOINCLUDE||Qualifier options differ|
Certain pairs of command qualifiers, as follows, are mutually exclusive and therefore should not be used together in the same command line:
The remainder of this section explains each qualifier and its options individually.
/NOALIGN (default)Controls alignment of data within structures and aligned bit strings. If you specify /ALIGN on a VAX system, data is aligned on the natural byte boundary of the specified data type, as shown in Table 2-2. If you specify /NOALIGN, the default, data is aligned on the next available byte boundary.
Two options are provided for Kednos PL/I for OpenVMS Alpha only: packed and natural.
If you specify /ALIGN=natural, data is aligned on the natural byte boundary of the specified data type, as shown in Table 2-2. If you specify /ALIGN=packed, data is aligned on the next available byte boundary. If you specify /ALIGN with no keyword, the default is /ALIGN=natural.
Table 2-2 Natural Data Alignment Data Type Data Size Alignment fixed bin (p) p <= 7 byte fixed bin (p) 7 < p <= 15 word fixed bin (p) p > 15 longword fixed dec (p,q) word float bin (p) p <= 24 longword float bin (p) 24 < p <= 53 quadword float bin (p) p > 53 octaword float dec (p) p <= 7 longword float dec (p) 7 < p <= 15 quadword float dec (p) p > 15 octaword char N/A byte char aligned N/A byte char varying N/A word bit N/A bit bit aligned N/A longword pointer varies longword area N/A longword label varies quadword entry varies quadword file varies longword structure varies max of members picture N/A byte offset varies longword
/NOANALYSIS_DATA (default)Controls whether the compiler generates a file of source code analysis information. The default file name is the file name of the primary source file; the default file type is ANA.
/NOCHECK (default)Controls the checking of array subscripts and of positional references in arguments to the SUBSTR built-in function. If you specify /CHECK, the compiler checks for the following conditions:
- Whether each reference to the SUBSTR built-in function or pseudovariable lies within the string's current length
- Whether each reference to an array specifies subscripts that are within the bounds declared for the array
- Whether all string lengths are nonnegative and whether all array extents are positive
The default is /NOCHECK. /CHECK is useful primarily during initial program debugging; it results in the generation of additional code and, consequently, a slower program.
Specifying /CHECK is equivalent to specifying /CHECK=ALL or the attribute /CHECK=BOUNDS. Likewise, /NOCHECK is the equivalent of specifying /CHECK=NONE or the attribute /CHECK=NOBOUNDS.
/NOCROSS_REFERENCE (default)Specifies whether the compiler is to generate, in the listing file, alphabetical cross-references for variable names. If you specify /CROSS_REFERENCE, the compiler lists all variable names, including all members of structures as separate entities in an alphabetical cross-reference listing. The cross-reference entry for each structure member also lists the name of the structure that contains the member. The listing contains the line numbers of the lines on which all variables are referenced.
Note that you must specify /SHOW=MAP with /CROSS_REFERENCE. The full specification is as follows:
$ PLI/LIST/SHOW=MAP/CROSS_REFERENCE file.PLI
By default, the compiler does not include cross-references in the listing.
/DATA[=option] (OpenVMS Alpha)Specifies the integer size and whether alignment is enabled. You can select the following options:
NATIVE Sets the integer size to 32 and enables /ALIGNMENT; equivalent to ALPHA_AXP32 and MIPS. VAX Sets the integer size to 32 and enables /NOALIGNMENT. ALPHA_AXP32 Sets the integer size to 32 and enables /ALIGNMENT. MIPS Sets the integer size to 32 and enables /ALIGNMENT.
/DEBUG=TRACEBACK (default)Requests that information be included in the object module for use with the OpenVMS Debugger.
It is strongly recommended that you use the /NOOPTIMIZE qualifier when you use the /DEBUG qualifier. Optimization can cause confusing results during a debugging session.
When /DEBUG is specified, the compiler generates small routines that are used only by the debugger. When the program is linked with /NODEBUG, these routines will still be included in the program but will not be used. For this reason it is recommended that final versions of programs be recompiled with /NODEBUG (which is the default).
You can select the following options:
ALL Includes symbol table records and traceback records. /DEBUG is equivalent to /DEBUG=ALL. SYMBOLS Includes the symbol definitions for all identifiers in the compilation. This is the default for symbols if the /DEBUG qualifier is used. NOSYMBOLS Does not include symbol definitions. Without symbol definitions, traceback is done according to virtual address. TRACEBACK Includes only traceback records. This is the default if the /DEBUG qualifier is not present on the command. NOTRACEBACK Does not include traceback records. INLINE (OpenVMS VAX only) Generates debug information to cause a STEP command to STEP/INTO an inlined function call. NOINLINE (OpenVMS VAX only) Generates debug information to cause a STEP command to STEP/OVER an inlined function call. NONE Does not include any debugging information. Use this option to exclude all debug information from thoroughly debugged program modules. /NODEBUG is equivalent to /DEBUG=NONE.
/NODESIGN (default)Controls whether the compiler processes the source file as a detailed design, in conjunction with the DECset Program Design Facility (PDF). The /DESIGN qualifier requires that the /ANALYSIS_DATA qualifier also be specified.
If you specify the /DESIGN qualifier, the compiler modifies its parsing and semantics according to the optional keywords you supply. The design information is added to the SCA Analysis Data File (.ANA).
You can select from the following options:
[NO]COMMENTS COMMENTS, the default, directs the compiler to search inside comment fields for program design information. Specifying the option NOCOMMENTS omits this searching. [NO]PLACEHOLDERS PLACEHOLDERS, the default, directs the compiler to treat LSE placeholders in proper contexts within the program as valid syntax. Specifying NOPLACEHOLDERS causes the compiler to treat all LSE placeholders as invalid syntax.
The options are mutually independent. Specifying /DESIGN without naming an option is equivalent to /DESIGN=(COMMENTS,PLACEHOLDERS). You can exclude both options by specifying /NODESIGN or by omitting the qualifier. To select one option and exclude the other, you must specify /DESIGN=NOCOMMENTS or /DESIGN=NOPLACEHOLDERS.
/DIAGNOSTICS[=file-spec] (OpenVMS VAX)
/NODIAGNOSTICS (default)Controls whether the compiler produces a diagnostics file, which contains compiler messages and diagnostic information.
The file type .DIA is the default file type for a diagnostics file. The diagnostics file is used by Hewlett Packard layered products such as LSE.
/NOERROR_LIMITPermits you to specify the number of errors acceptable during program compilation. For example, if you specify /ERROR_LIMIT=5, then compilation terminates with the sixth error. By default, compilation terminates when the number of errors exceeds 100, but /NOERROR_LIMIT raises the default number to 1000. The maximum number of error messages permitted by the system is 32,767.
All error messages (excluding warning messages) are counted toward the error limit. A fatal error message immediately terminates the compilation.
/FIXED_BINARY[=p]This qualifier sets the default precision of fixed-binary variables. You can specify either 15 or 31 as the value of p. If you omit this qualifier or specify it without a precision value, the default precision of fixed-binary variables is 31. Normally, /FIXED_BINARY=15 is specified when compiling for a system whose memory words are 16 bits long.
/FLOAT[=option] (OpenVMS Alpha)For Alpha computers, specifies the default representation of floating-point variables. Precision depends upon whether the variable is binary or decimal. See the Kednos PL/I for OpenVMS Systems Reference Manual for more information.
For floating-point variables with a precision in the range 1 through 24, the default format is F. Use /FLOAT=IEEE_FLOAT to specify S_FLOAT as the format. For floating-point variables with a precision in the range 25 to 53, the default format is D. Use /FLOAT=IEEE_FLOAT to specify T_FLOAT as the format, or use /FLOAT=G_FLOAT to specify G_FLOAT as the format.
The qualifiers /FLOAT and /G_FLOAT are mutually exclusive and should not be used in the same command line.
/NOG_FLOAT (default)For systems equipped with the appropriate hardware option, specifies the default representation of floating-point variables, depending upon whether the variable is binary or decimal.
By default, the compiler uses D (double-precision) floating point. Specify /G_FLOAT to override this default and to request the compiler to use the (G-floating-point) type for these variables.
The qualifiers /FLOAT and /G_FLOAT are mutually exclusive and should not be used in the same command line.
The default and maximum precisions for all floating-point formats are summarized in the Kednos PL/I for OpenVMS Systems Reference Manual.
/GRANULARITY[=option] (OpenVMS Alpha)Specifies the smallest unit of data that can be cached in a register. The following options are available:
For example, quadword granularity would mean that the Alpha system would cache quadword values in registers. The default granularity is quadword.
/LIST[=file-spec] (batch default)
/NOLIST (interactive default)Controls whether a listing file is produced.
When /LIST is in effect, the compiler gives a listing file the same file name as the source file and a file type of .LIS.
If you specify a file specification with /LIST, the compiler uses that file specification to override the default values applied.
/NOMACHINE_CODE (default)Controls whether the listing file produced by the compiler includes a listing of the machine code generated during the compilation.
You can select the following options:
AFTER (OpenVMS Alpha) Puts machine code after the source code (the default if /MACHINE_CODE is specified on an OpenVMS Alpha system) BEFORE Puts machine code before the source code INTERSPERSED (OpenVMS VAX) Intersperses source and machine code (the default if /MACHINE_CODE is specified on a VAX machine)
No machine code is generated if /NOOBJECT is specified; thus, if /NOOBJECT/MACHINE_CODE are specified together, no machine code listing is generated.
/NOOBJECTControls whether the compiler produces object modules. By default, the compiler produces an object module with the same file name as the source file and a file type of OBJ.
Specify /NOOBJECT when you want to compile a program only to obtain a listing or when you want the compiler only to check the source program for errors and display diagnostic messages. The compiler can compile code more rapidly if it does not need to create an object module.
/NOOPTIMIZEControls the optimization performed by the compiler.
On a VAX system, you can select one or more of the options listed in Table 2-3. By default, all possible optimizations are performed. If you specify /OPTIMIZE with any options, the other options are not affected. For example, /OPTIMIZE=NOPEEPHOLE disables the PEEPHOLE option but leaves all other options enabled. Note that if you specify NOCOMMON_SUBEXPRESSION with the /OPTIMIZE qualifier to the PLI command, NORESULT_INCORPORATION is implied.
Table 2-3 Compiler Optimization Options for VAX Systems Option Description ALL Performs all optimizations. This is equivalent to /OPTIMIZE and is the default. [NO]COMMON_SUBEXPRESSIONS Eliminates or does not eliminate common subexpressions. [NO]DISJOINT Places or does not place local variables in multiple registers. [NO]INLINE Provides or does not provide automatic inline expansion of procedures to provide optimized code. [NO]INVARIANT Removes or does not remove invariant expressions from loops. [NO]LOCALS_IN_REGISTERS Places or does not place local variables in registers. [NO]PEEPHOLE Performs or does not perform pattern replacement on the generated machine code. [NO]RESULT_INCORPORATION Collapses or does not collapse binary arithmetic operations into 3-operand instructions.
On an OpenVMS Alpha system, you can specify a value for the options listed in Table 2-4.
Table 2-4 Compiler Optimization Options for OpenVMS Alpha Systems Option Description LEVEL=n Specifies the level of optimization based on a value from 0 to 5. Zero (0) specifies no optimization and is equivalent to /NOOPTIMIZE. The default value for LEVEL is 4. UNROLL=n Specifies the number of times to unroll loops, based on a value from 1 to 16. If the /UNROLL option is not specified, a default unroll amount of 4 is used. LEVEL must be specified as 3 or greater to enable loop unrolling. INLINE=NONE Suppresses all inlining INLINE=MANUAL Inlines the calls you explicitly request to be inlined INLINE=AUTOMATIC Inlines the calls in the MANUAL category and any additional calls that improve performance INLINE=ALL Optimizes every call that is possible to inline while still generating correct code.
Each subsequent level of optimization includes the optimizations from all lower levels. The levels of optimization are as follows:
- 0 - No optimizations performed. The only code transformations performed are block reordering, and intermediate language and final peepholes.
- 1 - Optimizations performed that do not seriously affect readability or debugging. This includes common subexpression and register history, and user-directed inlining.
- 2 - Optimizations performed that do not increase code size. This includes code motion, strength reduction, induction variables, test replacement, split lifetime analysis, and intermediate language and final scheduling.
- 3 - All optimizations performed except automatic inlining, including while-repeat transformations, loop unrolling, and final code replication.
- 4 - Full optimization, including automatic inlining. This is the default optimization level.
- 5 - Full optimization, as in level 4, but with more agressive inlining. This allows you to indicate that speed is more important than size.
/SHOW[=(option,...)]Sets or cancels specific compilation listing options. You can select or cancel any of the options listed in Table 2-5.
Table 2-5 Compiler Listing Options Option Function ALL Includes the contents of all files and modules in the program listing. NONE Does not include the contents of any of the files and modules in the program listing. [NO]INCLUDE Includes or does not include the contents of INCLUDE files and modules in the program listing. [NO]DICTIONARY Includes or does not include the contents of Common Data Dictionary (CDD) record modules in the program listing. [NO]MAP Includes or does not include the storage map of the compiled program in the program listing. The storage map includes a list of all external entry points, the size and attributes of all variables that are referenced in the program, and a program section summary and procedure definition map. [NO]SOURCE Includes or does not include the source program statements in the program listing. [NO]TERMINAL Displays or does not display compilation messages to SYS$OUTPUT at compile time. [NO]STATISTICS Includes or does not include performance statistics in the program listing. [NO]HEADER Includes or does not include file headers in the program listing. [NO]TRACE Includes or does not include each step of preprocessor replacement and rescanning. [NO]EXPANSION Includes or does not include the final replacement values for preprocessor variables.
The following options are enabled by default:
Previous Next Contents Index