PL/I Preprocessor Configuration File

PL1PreprocessorInfo.ini is the PL/I Preprocessor configuration file, which specifies parsing options, environment variables, and other settings that the user sets when working with the PL/I Preprocessor.

The configuration file is generated when a project is created, and is located in the <ProjectRootDirectory>\ConfigurationExt\ folder.

A PL1PreprocessorInfoDefaultSample.ini file is available in the <IBM AD Build Client installation folder>\Bin\Release\Samples\PL1_Preprocessor\ folder

The file follows the general format of .ini files where options are specified as key=value.

Sections and groups

Sections denote groups of options that override the options in the previous levels. Sections can be hierarchical, names of the groups must be separated by /.

Groups are the virtual folders that are created in the project's structure in IBM AD Build Client.

Parsing Options

The parsing options drive the way preprocessing is executed. The parsing options are described as follows:

  • opts.blank.chars=<character set>

    Specifies the characters that can be used by the preprocessor. By default, space, tab, newline are blank characters.

  • opts.margins=<true/false>

    Specifies whether the files can have special margins. If the option is set to true, you must specify both the left and right margins.

  • opts.margins.left=<natural number>

    Specifies the left side margin of the files to process, as a column number. Any text to the left of opts.margins.left is ignored. This option must be specified if opts.margins=true.

  • opts.margins.right=<natural number>

    Specifies the right side margin of the files to process, as a column number. Any text to the right of opts.margins.right is ignored. This option must be specified if opts.margins=true.

  • opts.stringDelim=<character set>

    Specifies the characters that can be used in text as string delimiters instead of the default ".

  • opts.or.chars=<character set>

    Specifies the characters that can be used as the OR operator in preprocessor directives.

    Note: opts.or.chars is also used by the concatenation symbol. For example, if ! is used as the OR operator, then concatenation symbol is !!.
  • opts.not.chars=<character set>

    Specifies the characters that can be used as the NOT operator in preprocessor directives.

  • opts.extra.lower=<character set>

    Specifies the extra lowercase characters that can be used in preprocessor identifiers.

  • opts.extra.upper=<character set>

    Specifies the extra uppercase characters that can be used in preprocessor identifiers.

    Note: opts.extra.lower and opts.extra.upper must have the same length. Characters are matched based on their position.
  • opts.include=<non-spaced set of characters>

    Specifies a custom include directive.

    Note: <character set> is a set of characters that are surrounded by any of the following pairs of separators: {} () >< `` .. ~~ || ++ == __.
  • opts.library.extensions=<comma-separated list of names>

    Specifies the extensions of the PL/I includes that are used by the user. For example, if the includes have .pli or .inc extension, these mentioned extensions are written in the opts.library.extensions option.

  • opts.caseInsensitive=<true/false>

    When the option is set to true (default), the compiler option CASE(UPPER) is implemented. When it is set to false, the compiler option CASE(ASIS) is implemented.

Ignore an include member

  • internal.ignored.member.files=MEM1;MEM2;MEM3

    Specifies the members that will be ignored at the build time.

    Note: After each member you must add the ; (semicolon) separator, exception with the last member.

Other settings

  • source.encoding=<valid encoding>

    Specifies the encoding that is used to parse files. The default is UTF-8. Valid encoding names are listed in List of supported encodings.

  • default.library=SYSLIB

    Specifies the default library that the PL/I preprocessor looks for includes.

  • internal.include.flat.layout=<true/false>

    When the option is set to true, it forces the preprocessor to ignore the library in an include directive.

Environment variables do not have a predefined value. Subsequently, a value can be assigned to one of these variables. A variable has the following format:

vars.VARIABLENAME='value'

Configuration file example

[PL1]
source.encoding=UTF-8
opts.include=++INC
opts.stringDelim={"}
opts.extra.lower={@\#$}
opts.extra.upper={@\#$}
opts.margins.right=72
opts.margins.left=1
opts.margins=true
vars.MODE=BATCH
internal.ignored.member.files=MEMBER1;MEMBER2;MEMBER3
[PL1/Subfolder1]
opts.include=--TST
opts.stringDelim={%}
vars.MODE=CICS
[PL1/Subfolder1/Subfolder2]
opts.margins.right=20
opts.margins.left=7
The example configuration file contains folders in hierarchy. If [PL1/Subfolder1] and [PL1/Subfolder1/Subfolder2] options are used, the actual options are compiled based on hierarchy, overwriting the parsing options present in [PL1]:
opts.include=--TST
opts.stringDelim={%}
vars.MODE=CICS
opts.margins.right=20
opts.margins.left=7