MARGINS

The MARGINS option specifies which part of each compiler input record contains PL/I statements, and the position of the ANS control character that formats the listing, if the SOURCE option, the INSOURCE option, or both apply. The compiler does not process data that is outside these limits, but it does include it in the source listings.

The PL/I source is extracted from the source input records so that the first data byte of a record immediately follows the last data byte of the previous record. For variable records, you must ensure that when you need a blank, you explicitly insert it between margins of the records.

Read syntax diagramSkip visual syntax diagram
                 .-2-.     .-72-.                  
   .-MARGINS--(--+-m-+--,--+-n--+--+------+--)-.   
   |                               '-,--c-'    |   
>>-+-NOMARGINS---------------------------------+---------------><

ABBREVIATION: MAR

Start of change
m
The column number of the leftmost character (first data byte) that is processed by the compiler. It must not exceed 100.
n
The column number of the rightmost character (last data byte) that is processed by the compiler. It should be greater than m, but must not exceed 200.

Variable-length records are effectively padded with blanks to give them the maximum record length.

c
The column number of the ANS printer control character. It must not exceed 200, and it should be outside the values specified for m and n. A value of 0 for c indicates that no ANS control character is present. Only the following control characters can be used:
(blank)
Skip one line before printing
0
Skip two lines before printing
Skip three lines before printing
+
No skip before printing
1
Start new page

Any other character is an error and is replaced by a blank.

Do not use a value of c that is greater than the maximum length of a source record, because this causes the format of the listing to be unpredictable. To avoid this problem, put the carriage control characters to the left of the source margins for variable-length records.

Specifying MARGINS(,,c) is an alternative to using %PAGE and %SKIP statements (described in the PL/I Language Reference).

End of change

The IBM-supplied default for fixed-length records is MARGINS(2,72). For variable-length and undefined-length records, the IBM-supplied default is MARGINS(10,100). This specifies that there is no printer control character.

Use the MARGINS option to override the default for the primary input in a program. The secondary input must have the same margins as the primary input.

The NOMARGINS option will suppress any previously encountered instance of the MARGINS option. The purpose of this option is to allow your installation to have a default set of compile-time options that use a MARGINS option tailored for their fixed format source preferences while retaining the ability to use variable source format files.

You would usually specify the NOMARGINS option, if you use it at all, as part of the parameter-string passed to the compiler. The compiler will ignore NOMARGINS if it finds the option in a %PROCESS statement.