1 – INCLUDE
The %INCLUDE directive inserts the contents of a file at the location of the directive in the code and has the following form: Syntax: %INCLUDE 'file-spec [[/[[NO]]LIST]]' The 'file-spec' is the name of the file to be included. The /LIST qualifier indicates that the included file should be printed in the listing of the program if a listing is being generated. If not specified, the default is determined by the use of compilation switches. Use of this parameter overrides compilation switches. See the "HP Pascal Language Reference Manual" for the complete description of using the %INCLUDE directive.
2 – DICTIONARY
The %DICTIONARY directive allows access to data definitions stored in the CDD/Repository, which is a product that must be purchased separately and may not be available on your environment. Syntax: %DICTIONARY 'cdd-path-name [[/[[NO]]LIST]]' The 'cdd-path-name' is a character string that represents the full or relative path name of a CDD record description to be extracted. The resulting path name must conform to the rules for forming CDD path names. A full path name is one that begins with CDD$TOP and specifies the names of all its descendants; it is a complete path to the record definition. Descendant names are separated from each other by a period. A relative path name begins with any generation other than CDD$TOP, and specifies the names of the descendants after that point. You can create a relative path by establishing a default directory with a logical name. The /LIST qualifier indicates that the included declarations should be printed in the listing of the program if a listing is being generated. If not specified, the default is determined by compilation switches. Use of this parameter overrides compilation switches. Example: TYPE %DICTIONARY 'CDD$TOP.CORPORATE.SALARY_RANGE' The definition of 'CDD$TOP.CORPORATE.SALARY_RANGE' is placed in a program at the position of the TYPE declaration.
3 – TITLE and SUBTITLE
The %TITLE and %SUBTITLE directives allow you to specify a compile-time string expression for the listing title and subtitle lines. Syntax: %TITLE 'character string' or %SUBTITLE 'character string' The compiler listing header includes the %TITLE and %SUBTITLE strings in the title and subtitle sections. If you do not specify these directives, VSI Pascal fills the %TITLE field with blanks and the first %SUBTITLE field with 'source listing'. If a specified 'character string' is too long to fit in the predefined title and subtitle sections, the string will be truncated on the right without warning. If a %TITLE directive appears on the first line of a page, it sets the title area for the current page and any following pages until the compiler encounters another %TITLE directive. If the %TITLE directive does not appear on the first line of a page, then the title area is not set until the next page. The %SUBTITLE directive affects only the subtitle area in the source listing section. If a %SUBTITLE directive appears on the first or second line of a page, then the subtitle area is set for the current page. If the %SUBTITLE directive does not appear in the first two lines of a page, then the subtitle area is not set until the next page. On OpenVMS VAX, if either of these directives is used and if a listing is being generated, HP Pascal generates a table of contents page by default. This page appears first in the listing, preceding the source listing section. To disable the table of contents option, you must use a compilation switch.
4 – IF
The %IF family of directives (%IF, %ELSE, %ELIF, %ENDIF) is used to conditionally compile specific sections of source code. These directives are useful if you need to compile the same source code for various configurations or environments. %IF compile-time-expression %THEN Pascal tokens ... [%ELIF compile-time-expression %THEN Pascal tokens ... ] ... [%ELSE Pascal tokens ... ] %ENDIF A %IF directive can have zero or more %ELIF parts and zero or one %ELSE parts. %IF directives can be nested up to 32 deep. Note that skipped sections of source code must still be valid VSI Pascal tokens. The skipped tokens are not processed semantically by the compiler. The compile-time expression for the %IF and %ELIF directives is the same compile-time expression that can be used anywhere in VSI Pascal. The /CONSTANT DCL qualifier can be used together with the %IF directive to control the conditional processing from the command line.
5 – ELSE
See the %IF directive for more information on how to use %ELSE.
6 – ELIF
See the %IF directive for more information on how to use %ELIF.
7 – ENDIF
See the %IF directive for more information on how to use %ENDIF.
8 – DEFINED
The %DEFINED directive take a name and returns TRUE if the name has a meaning in the current scope; otherwise it returns FALSE. %IF NOT %DEFINED(MaxSize) %THEN CONST MaxSize = 100; %ENDIF
9 – ERROR
The %ERROR directive accepts one or more string expressions and at compile-time will generate a compiler error that includes the concatenation of the string expressions. %ERROR( string-expression,... )
10 – WARN
The %WARN directive accepts one or more string expressions and at compile-time will generate a compiler warning that includes the concatenation of the string expressions. %WARN( string-expression,... )
11 – INFO
The %INFO directive accepts one or more string expressions and at compile-time will generate a compiler informational that includes the concatenation of the string expressions. %INFO( string-expression,... )
12 – MESSAGE
The %MESSAGE directive accepts one or more string expressions and at compile-time will generate a compiler message that includes the concatenation of the string expressions. The message is generated directly from the compiler and does not use the OpenVMS error message service $PUTMSG. %MESSAGE( string-expression,... )
13 – ARCH_NAME
The %ARCH_NAME directive returns the string "VAX", "Alpha", or "IA64" depending on the architecture of the system on which the compilation is taking place.
14 – SYSTEM_NAME
The %SYSTEM_NAME directive returns the string "OpenVMS".
15 – SYSTEM_VERSION
The %SYSTEM_VERSION directive returns a string containing the value of the SYI$_VERSION itemcode from the $GETSYI system service.
16 – DATE and TIME
The %DATE directive returns a string containing the date at the beginning point of the compilation. The %TIME directive returns a string containing the time at the beginning point of the compilation.
17 – COMPILER_VERSION
The %COMPILER_VERSION directive returns a string containing the version of the VSI Pascal compiler performing the compilation.
18 – LINE
The %LINE directive returns an integer that denotes the current line number in the source file.
19 – FILE
The %FILE directive returns a string containing the file name that is currently being compiled.
20 – ROUTINE
The %ROUTINE directive returns a string with the name of the routine that is currently being compiled. If used in the executable portion of a program, the program's name is returned. If used in the declaration section of a MODULE/PROGRAM, the name of the MODULE/PROGRAM is returned.
21 – MODULE
The %MODULE directive returns a string containing the name of the MODULE/PROGRAM being compiled.
22 – IDENT
The %IDENT directive returns a string that contains the ident string of the compilation. The ident string is set with the IDENT attribute.
23 – FLOAT
The %FLOAT directive returns a string that indicates the current floating point default of the compilation. The possible values are "VAX_FLOAT" or "IEEE_FLOAT" depending on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute.
24 – F_FLOAT
The %F_FLOAT directive produces a VAX F_floating literal regardless of the current floating point default of the compilation. Without the directive, the format of a single precision floating literal will be determined based on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute. The syntax is: %F_FLOAT floating-point-literal For example, lib$wait(%f_float 1.0); will ensure the correct floating literal for LIB$WAIT even on OpenVMS I64 systems which default to IEEE floating format.
25 – S_FLOAT
The %S_FLOAT directive produces an IEEE S_floating literal regardless of the current floating point default of the compilation. Without the directive, the format of a single precision floating literal will be determined based on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute. The %S_FLOAT directive is not supported on OpenVMS VAX systems. The syntax is: %S_FLOAT floating-point-literal
26 – D_FLOAT
The %D_FLOAT directive produces a VAX D_floating literal regardless of the current floating point default of the compilation. Without the directive, the format of a double precision floating literal will be determined based on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute. The syntax is: %D_FLOAT floating-point-literal
27 – G_FLOAT
The %G_FLOAT directive produces a VAX G_floating literal regardless of the current floating point default of the compilation. Without the directive, the format of a double precision floating literal will be determined based on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute. The syntax is: %G_FLOAT floating-point-literal
28 – T_FLOAT
The %T_FLOAT directive produces an IEEE T_floating literal regardless of the current floating point default of the compilation. Without the directive, the format of a double precision floating literal will be determined based on the setting of the /FLOAT DCL qualifier or the [FLOAT] module-level attribute. The %T_FLOAT directive is not supported on OpenVMS VAX systems. The syntax is: %T_FLOAT floating-point-literal