1 BASIC Invokes the VSI BASIC for OpenVMS I64 compiler. Format: BASIC [/command-qualifier]... {source-file [/file-qualifier]... }... When you supply one or more file specifications, the compiler compiles the source file(s). If you separate source file specifications with commas, the compiler compiles each module separately and produces multiple object files. If you separate source file specifications with plus signs (+), the compiler appends the files and produces a single object file. 2 Release_notes The release notes for the current version of VSI BASIC for OpenVMS I64 are in the file BASIC018.RELEASE_NOTES which resides in SYS$HELP. You can also access the release notes from the BASIC help file at the DCL command level with the following command: $ HELP/LIBRARY=BASICHELP RELEASE_NOTES 2 /ANALYSIS_DATA The /ANALYSIS_DATA qualifier controls the creation of a file containing data analysis information for use by the DECset Source Code Analyzer for OpenVMS systems (SCA). The format of the /ANALYSIS_DATA qualifier is as follows: /[NO]ANALYSIS_DATA[=file-spec] The file created by the /ANALYSIS_DATA qualifier has a default file type of .ANA. SCA uses the .ANA file to display cross-reference information and analyze source code. The default is /NOANALYSIS_DATA. 2 /ARCHITECTURE The /ARCHITECTURE qualifier specifies which version of the architecture to generate instructions for. The format of the /ARCHITECTURE qualifier is as follows: /ARCHITECTURE={GENERIC } {HOST } {MERCED } {ITANIUM2} where: GENERIC generate instructions that are appropriate for all processors. This option is the default. HOST generate instructions for the processor that the compiler is running on. The default is /ARCHITECTURE=GENERIC. 2 /AUDIT The /AUDIT qualifier causes the compiler to include a history entry in CDD/Repository when extracting a CDD/Repository definition. The format of the /AUDIT qualifier is as follows: /[NO]AUDIT[={str-lit }] {file-spec} where: str-lit is a quoted string. file-spec is a file specification. If you specify a quoted string, the compiler includes it as part of the history entry. If you specify a file specification, the compiler includes up to the first 64 lines of the specified file. When you specify /AUDIT, the compiler also includes the following information about a CDD/Repository record extraction in the history entry: o The name of the program module making the extraction o The time and date of the extraction o A note that access was made by way of a VSI BASIC for OpenVMS I64 program o A note that the access was an extraction o The username and UIC of the process accessing CDD/Repository The default is /NOAUDIT. 2 /CHECK The /CHECK qualifier causes the compiler to generate code to test for arithmetic overflow and for array references outside array boundaries when the program executes. The format of the /CHECK qualifier is as follows: /[NO]CHECK[=({[NO]BOUNDS },...)] {[NO]OVERFLOW[=([NO]INTEGER,[NO]DECIMAL)]} {ALL } {NONE } where: BOUNDS checks array subscripts to ensure that they are within array boundaries specified by the program. OVERFLOW enables the detection of arithmetic overflow for integer and packed decimal operations. The /CHECK qualifier specifies that both OVERFLOW and BOUNDS checking are performed. The /NOCHECK qualifier specifies that no checking is performed. If you specify /CHECK=OVERFLOW, overflow checking is enabled for both integers and packed decimal numbers. Similarly, specifying /CHECK=NOOVERFLOW disables overflow checking for both types of numbers. Specifying /CHECK=NOBOUNDS means that your program is smaller and runs faster. However, no error is signaled for an array reference outside the bounds of an array. This means that the program may get a memory management or access violation error at run time. Therefore, this option should be used only for programs that have been thoroughly debugged and whose execution time is critical. The default is /CHECK = (BOUNDS, OVERFLOW). 2 /CROSS_REFERENCE The /CROSS_REFERENCE qualifier causes the compiler to generate a cross-reference listing. The format of the /CROSS_REFERENCE qualifier is as follows: /[NO]CROSS_REFERENCE[=[NO]KEYWORDS] The cross-reference listing shows program symbols, their class, and the program lines in which they are referenced. The /CROSS_REFERENCE=KEYWORDS qualifier specifies that the cross-reference listing includes all references to VSI BASIC keywords. /CROSS_REFERENCE is the same as /CROSS_REFERENCE = NOKEYWORDS. The /NOCROSS_REFERENCE qualifier suppresses the creation of a cross-reference listing. See the HP BASIC for OpenVMS Alpha and VAX Systems User Manual for more information on cross reference listings. The default is /NOCROSS_REFERENCE. 2 /DEBUG The /DEBUG qualifier causes the compiler to provide information for the OpenVMS Debugger and the system run-time error traceback mechanism. Neither TRACEBACK nor SYMBOLS affects a program's executable code. The format of the /DEBUG qualifier is as follows: /[NO]DEBUG[=({[NO]SYMBOLS },...)] {[NO]TRACEBACK} {ALL } {NONE } where: SYMBOLS causes the compiler to provide the debugger with local symbol definitions for user-defined variables (including dimension information for arrays). TRACEBACK causes the compiler to provide an address correlation table so the debugger and the run-time error traceback mechanism can translate absolute addresses into source program routine names and line numbers. The /NODEBUG qualifier causes the compiler to suppress information for the OpenVMS Debugger and the system run-time error traceback mechanism. For more information on debugging, see the HP BASIC for OpenVMS Alpha and VAX Systems User Manual. The default is /DEBUG = (TRACEBACK, NOSYMBOLS). 2 /DECIMAL_SIZE The /DECIMAL_SIZE qualifier lets you specify the default size for packed decimal data. You specify the total number of digits in the number and the number of digits to the right of the decimal point. The format of the /DECIMAL_SIZE qualifier is as follows: /DECIMAL_SIZE=(d,s) where: d is the total number of digits in the number. s is the number of digits to the right of the decimal point. The default decimal size applies to all decimal variables for which the total number of digits and digits to the right of the decimal point are not explicitly declared. See the HP BASIC for OpenVMS Alpha and VAX Systems Reference Manual for more information about packed decimal numbers. The default is /DECIMAL_SIZE = (15, 2). 2 /DEPENDENCY_DATA If you have CDD/Repository V5.4 installed on your system and if your current CDD$DEFAULT is a CDO-format dictionary, you can use the /DEPENDENCY_DATA qualifier to generate a compiled module entity in the CDD$DEFAULT for each compilation unit. The format of the /DEPENDENCY_DATA qualifier is as follows: /[NO]DEPENDENCY_DATA You must specify this qualifier if you want %INCLUDE %FROM %CDD and %REPORT %DEPENDENCY directives to establish dependency relationships. If /NODEPENDENCY_DATA is specified, the compiler does not generate a compiled module entity. The default is /NODEPENDENCY_DATA. 2 /DIAGNOSTICS The /DIAGNOSTICS qualifier controls the creation of a diagnostics file containing messages and diagnostic information for use by the Compaq Language-Sensitive Editor (LSE). The format of the /DIAGNOSTICS qualifier is as follows: /[NO]DIAGNOSTICS[=file-spec] LSE uses the diagnostics file to display diagnostic error messages and to position the cursor on the line and column where a source error exists. If you do not supply a file specification with the /DIAGNOSTICS qualifier, the diagnostics file has the same name as its corresponding source file and a default file type of .DIA. All other file specification attributes depend on the placement of the qualifier in the command. The default is /NODIAGNOSTICS. 2 /DOUBLE The /DOUBLE qualifier specifies that floating-point variables are double precision. This qualifier is present for compatibility with HP BASIC for OpenVMS VAX. You should use the /REAL_SIZE qualifier to specify the precision of floating-point variables. 2 /FLAG The /FLAG qualifier lets you specify whether the compiler informs you about declining features. The format of the /FLAG qualifier is as follows: /[NO]FLAG[=[NO]DECLINING] The /NOFLAG qualifier suppresses any warning messages about declining features. /FLAG is the same as /FLAG = NODECLINING. The default is /NOFLAG. 2 /INTEGER_SIZE The /INTEGER_SIZE qualifier lets you specify the default size for integer data. The format of the /INTEGER_SIZE qualifier is as follows: /INTEGER_SIZE={BYTE} {WORD} {LONG} {QUAD} The default integer size applies to all integer variables whose data type is not explicitly declared. See the HP BASIC for OpenVMS Alpha and VAX Systems User Manual for more information about integer data types. The default is /INTEGER_SIZE = LONG. 2 /LINES The /LINES qualifier makes line number information available for the ERL function, and the BASIC error reporter. The format of the /LINES qualifier is as follows: /[NO]LINES Note that if ERL (or RESUME) is found in a program that is compiled /NOLINES, HP BASIC for OpenVMS Alpha will not produce the message, but will silently turn on /LINES. If you specify /NOLINES, your program runs faster. The default is /NOLINES. 2 /LISTING The /LISTING qualifier causes the compiler to create a source listing file. The format of the /LISTING qualifier is as follows: /[NO]LISTING[=file-spec] To create a listing file with an explicit file specification, you must use the /LISTING qualifier in the form /LISTING = file-spec. Otherwise, the listing file has the same name as its corresponding source file and a file type of .LIS. All other file specification attributes depend on the placement of the qualifier in the command. Note that the /LISTING qualifier only controls whether or not the compiler produces a listing file. The /SHOW qualifier controls which parts of the listing are produced. The default is /NOLISTING from a terminal, and /LISTING in batch mode. 2 /LONG The /LONG qualifier specifies that integer variables are LONG. This qualifier is present for compatibility with HP BASIC for OpenVMS VAX. You should use the /INTEGER_SIZE qualifier to specify the precision of integer variables. 2 /MACHINE_CODE The /MACHINE_CODE qualifier controls whether the listing file contains a list of compiler generated machine code. The format of the /MACHINE_CODE qualifier is as follows: /[NO]MACHINE_CODE The /MACHINE_CODE qualifier has no effect unless you also specify the /LISTING qualifier. If you specify the /MACHINE_CODE qualifier with the /OPTIMIZE qualifier, the machine code listing may not reflect the actual code executed for a given statement nor the order of execution. The /NOMACHINE_CODE qualifier suppresses compiler generated machine code in the listing file. The default is /NOMACHINE_CODE. 2 /OBJECT The /OBJECT qualifier causes the compiler to produce an object module, and optionally specifies its file name. The format of the /OBJECT qualifier is as follows: /[NO]OBJECT[=file-spec] By default, the compiler generates object files as follows: o If you specify one source file, the compiler generates one object file. o If you specify multiple source files separated by plus signs, the compiler appends the files and generates one object file. o If you specify multiple source files separated by commas, the compiler compiles and generates a separate object file for each source file. o You can use both plus signs and commas in the same command line to produce different combinations of appended and separated object files. To produce an object file with an explicit file specification, you must use the /OBJECT qualifier, in the form /OBJECT=file-spec. Otherwise, the object file has the same name as its corresponding source file, and a file type of .OBJ. All other file specification attributes depend on the placement of the qualifier in the command. The /NOOBJECT qualifier suppresses the creation of an object file. During the early stages of program development, you may find it helpful to suppress the production of object files until your source program compiles without errors. The default is /OBJECT. 2 /OLD_VERSION The /OLD_VERSION qualifier is provided for compatibility with early versions of HP BASIC for OpenVMS VAX. The format of the /OLD_VERSION qualifier is as follows: /[NO]OLD_VERSION[=CDD_ARRAYS] When you use the /OLD_VERSION qualifier, the compiler changes the lower bound to zero and adjusts the upper bound of the array. For example, Array 2:5 in CDD/Repository is translated by the compiler to be an array with a lower bound of 0 and an upper bound of 3. The compiler issues an informational message to confirm the array bounds. The /NOOLD_VERSION qualifier causes the compiler to extract an array from CDD/Repository with the bounds as specified in the data definition. For example, Array 2:5 in CDD/Repository is translated by the compiler to be an array with a lower bound of 2 and an upper bound of 5. CDD/Repository assumes a default lower bound of 1, if none is specified. Therefore, if no lower bound is specified, the compiler translates the CDD/Repository array to have a lower bound of 1. For example, Array 5 in CDD/Repository is translated by the compiler to be an array with a lower bound of 1 and an upper bound of 5. The default is /NOOLD_VERSION. 2 /OPTIMIZE The /OPTIMIZE qualifier controls whether the compiler optimizes the program to generate more efficient code for optimum run-time performance. The format of the /OPTIMIZE qualifier is as follows: /[NO]OPTIMIZE[=({LEVEL=n },...)] {TUNE={GENERIC}} {HOST } where: LEVEL=n controls the amount of optimization performed. /OPTIMIZE=LEVEL=4 is the equivalent of /OPTIMIZE. 0 all optimizations are turned off. Has the same effect as /NOOPTIMIZE. 1 local optimizations and common subexpression recognition turned on. 2 adds some global optimizations including loop unrolling, split lifetime analysis, code motion, and code scheduling to those in level 1. 3 adds more global optimizations that improve speed (at the cost of extra code size), such as integer multiplication and division expansion (using shifts), loop unrolling, and code replication to eliminate branches to those in level 2. 4 adds automatic inline expansion of procedures and functions to those of level 3. This is the default level. TUNE=processor selects processor-specific instruction tuning for a specific implementation of the Itanium architecture. Tuning for a specific implementation can provide improvements in run-time performance. Regardless of the setting of the TUNE option, the generated code will run correctly on all implementations of the Itanium architecture. Note that code tuned for a specific target may run more slowly on another target than generically-tuned code. Also see the /ARCHITECTURE qualifier. TUNE=GENERIC is the default. The processor keyword can be one of the following: GENERIC selects instruction tuning that is appropriate for all implementations of the Itanium architecture. This option is the default. HOST selects instruction tuning that is appropriate for the machine on which the code is being compiled. ITANIUM2 selects instruction tuning for the Itanium2 implementation of the Itanium architecture. MERCED selects instruction tuning for the Merced implementation of the Itanium architecture. The default is /OPTIMIZE=(LEVEL=4, TUNE=GENERIC). 2 /REAL_SIZE The REAL_SIZE qualifier lets you specify the default size for floating-point data. The format of the REAL_SIZE qualifier is as follows: /REAL_SIZE={SINGLE} {DOUBLE} {GFLOAT} {SFLOAT} {TFLOAT} {XFLOAT} The default floating-point size applies to all floating-point variables whose size is not explicitly declared. See the HP BASIC for OpenVMS Alpha and VAX Systems User Manual for more information on floating-point data types. The default is /REAL_SIZE = SFLOAT. 2 /ROUND_DECIMAL The /ROUND_DECIMAL qualifier causes the compiler to round packed decimal numbers rather than truncate them. The format of the /ROUND_DECIMAL qualifier is as follows: /[NO]ROUND_DECIMAL The /NOROUND_DECIMAL qualifier causes the compiler to truncate packed decimal numbers rather than round them. The default is /NOROUND_DECIMAL. 2 /SCALE The /SCALE qualifier specifies a scale factor between zero and six, inclusive. The scale factor affects only double-precision numbers. The format of the /SCALE qualifier is as follows: /SCALE=n The /SCALE qualifier helps to control accumulated round-off errors by multiplying floating-point values by 10 raised to the scale factor power before storing them in variables. The /SCALE qualifier is ignored for all but double-precision floating-point numbers. NOTE The /SCALE qualifier is provided for compatibility with HP BASIC for OpenVMS VAX. It is recommended that you not use this feature for new program development. Accumulated round-off errors can be better controlled with packed decimal numbers. See the HP BASIC for OpenVMS Alpha and VAX Systems Reference Manual for more information on packed decimal numbers. The default is /SCALE = 0. 2 /SEPARATE_COMPILATION Controls whether an individual compilation unit becomes a separate module in an object file. The format of the /SEPARATE_COMPILATION qualifier is as follows: /[NO]SEPARATE_COMPILATION Specifying /SEPARATE_COMPILATION will cause the compiler to place each routine in a separate module within the output object file. This is HP BASIC for OpenVMS VAX behavior. Specifying /NOSEPARATE_COMPILATION groups individual compilation units as a single module in an object file. When creating modules for use in an object library, consider using /SEPARATE_COMPILATION to minimize the size of the routines included by the linker as it creates the executable image. Using /SEPARATE_COMPILATION will also reduce the compiler virtual memory requirements when a source contains several compilation units. In most cases /NOSEPARATE_COMPILATION allows more interprocedural optimizations. The default is /NOSEPARATE_COMPILATION. 2 /SHOW The /SHOW qualifier determines which parts of the compilation listing are created. The /LISTING qualifier must have been specified for the /SHOW qualifier to have any effect. The format of the /SHOW qualifier is as follows: /[NO]SHOW[=({[NO]CDD_DEFINITIONS},...)] {[NO]ENVIRONMENT } {[NO]INCLUDE } {[NO]MAP } {[NO]OVERRIDE } {ALL } {NONE } where: CDD_DEFINITIONS controls whether the translation of a CDD/Repository record is displayed in the listing. ENVIRONMENT lets you display all defaults that were in effect when the program was compiled. INCLUDE controls whether files accessed with the %INCLUDE directive are displayed in the listing. MAP determines whether the listing contains an allocation map. The allocation map lists all program variables, their size and their data type. OVERRIDE helps you debug code by disabling the effect of the %NOLIST directive. The /NOSHOW qualifier causes the compiler to display only the source listing. /SHOW = ALL is the same as /SHOW = (CDD_DEFINITIONS, ENVIRONMENT, INCLUDE, MAP, OVERRIDE). /SHOW = NONE is the same as /NOSHOW. /SHOW is the same as /SHOW = ALL. The default is /SHOW = (CDD_DEFINITIONS, ENVIRONMENT, INCLUDE, MAP, NOOVERRIDE). 2 /SINGLE The /SINGLE qualifier specifies that floating-point variables are single precision. This qualifier is present for compatibility with HP BASIC for OpenVMS VAX. You should use the /REAL_SIZE qualifier to specify the precision of floating-point variables. 2 /SYNCHRONOUS_EXCEPTIONS Controls whether or not the compiler produces additional code to emulate HP BASIC for OpenVMS VAX exception behavior. The format of the /SYNCHRONOUS_EXCEPTIONS qualifier is as follows: /[NO]SYNCHRONOUS_EXCEPTIONS Normally the compiler may reorder the execution of certain arithmetic instructions to improve performance. If your program generates an arithmetic exception, such as an overflow or divide by zero, it is possible that certain statements surrounding the offending statement may or may not have executed. For example if a source program contains: A = B C = D / E G = F and the value of E is zero, the second statement will generate a divide by zero exception. Because of instruction reordering, it is possible that the assignment of B to A may not take place. Further, it is possible that the assignment of F to G may take place even though the previous statement generated an exception. The /SYNCHRONOUS_EXCEPTIONS qualifier disables such reordering. This allows programs which rely on arithmetic exceptions occurring at precise times to execute as expected. It only impacts arithmetic exceptions and variable stores in the immediate vicinity of the excepting statement. Usually programs will produce the correct result without the /SYNCHRONOUS_EXCEPTIONS qualifier. The /NOSYNCHRONOUS_EXCEPTIONS qualifier allows the compiler to produce more efficient code. However this instruction reordering can cause incompatibilities with VAX BASIC. The default is /NOSYNCHRONOUS_EXCEPTIONS. 2 /TYPE_DEFAULT The /TYPE_DEFAULT qualifier lets you specify the default data type for numeric variables. The format of the /TYPE_DEFAULT qualifier is as follows: /TYPE_DEFAULT={INTEGER } {REAL } {DECIMAL } {EXPLICIT} Specifying EXPLICIT means that all program variables must be explicitly declared in DECLARE, EXTERNAL, COMMON, MAP or DIM statements. Specifying INTEGER, REAL, or DECIMAL means that variables and data which are not explicitly declared default to integer, real or packed decimal. To specify the actual size of variables and data, use the INTEGER_SIZE, REAL_SIZE and DECIMAL_SIZE qualifiers. The default is /TYPE_DEFAULT = REAL. 2 /VARIANT The /VARIANT qualifier lets you specify the value associated with the lexical variable %VARIANT. The format of the /VARIANT qualifier is as follows: /VARIANT[=int-const] See the HP BASIC for OpenVMS Alpha and VAX Systems User Manual or HP BASIC for OpenVMS Alpha and VAX Systems Reference Manual for more information about the /VARIANT qualifier and the %VARIANT lexical variable. If the /VARIANT qualifier is not specified, the value of %VARIANT is 0. If the /VARIANT qualifier is specified without a value, the value of %VARIANT is 1. The default is /VARIANT = 0. 2 /WARNINGS The /WARNINGS qualifier lets you specify whether the compiler displays informational, warning, or alignment messages. The format of the /WARNINGS qualifier is as follows: /[NO]WARNINGS[=({[NO]WARNINGS },...)] {[NO]INFORMATIONALS} {[NO]ALIGNMENT } {ALL } {NONE } Specifying /WARNINGS=NOWARNINGS causes the compiler to suppress warning messages. Specifying /WARNINGS=NOINFORMATIONALS causes the compiler to suppress informational messages. Specifying /WARNINGS=NOALIGNMENT causes the compiler to suppress alignment warning messages. Alignment warnings are suppressed by default; to get alignment warning messages, you must explicitly specify /WARNINGS=ALIGNMENT on the command line. The /NOWARNINGS qualifier causes the compiler to suppress any informational, warning, or alignment messages. /WARNINGS = ALL is the same as /WARNINGS = (INFORMATIONALS, WARNINGS, ALIGNMENT). /WARNINGS = NONE is the same as /NOWARNINGS. The default is /WARNINGS = (INFORMATIONALS, WARNINGS, NOALIGNMENT). 2 /WORD The /WORD qualifier specifies that integer variables are word length. This qualifier is present for compatibility with HP BASIC for OpenVMS VAX. You should use the /INTEGER_SIZE qualifier to specify the precision of integer variables. 2 Language_topics To access the online language help, type the following command: $ HELP/LIBRARY=BASICHELP