Continuation Rules
The fields that may be continued are:
- Any free-form statement
- The keywords field on the control specification
- The keywords field on the file description specification
- The keywords field on the definition specification
- The Extended factor-2 field on the calculation specification
- The constant/editword field on the output specification
- The Name field on the definition or the procedure specification
General rules for continuation are as follows:
- The continuation line must be a valid line for the specification being continued (H, F, D, C, or O in position 6)
- No special characters should be used when continuing specifications
across multiple lines, except when a literal or name must be split.
For example, the following pairs are equivalent. In the first pair,
the plus sign (+) is an operator, even when it appears at the end
of a line. In the second pair, the plus sign is a continuation character.
C eval x = a + b C eval x = a + C b C eval x = 'abc' C eval x = 'ab+ C c'
- Only blank lines, empty specification lines or comment lines are allowed between continued lines
- The continuation can occur after a complete token. Tokens are
- Names (for example, keywords, file names, field names)
- Parentheses
- The separator character (:)
- Expression operators
- Built-in functions
- Special words
- Literals
- A continuation can also occur within a literal
- For character, date, time, and timestamp literals
- A hyphen (-) indicates continuation is in the first available position in the continued field
- A plus (+) indicates continuation with the first non-blank character in or past the first position in the continued field
- For graphic literals
- Either the hyphen (-) or plus (+) can be used to indicate a continuation.
- Each segment of the literal must be enclosed by shift-out and shift-in characters.
- When the a graphic literal is assembled, only the first shift-out and the last shift-in character will be included.
- Regardless of which continuation character is used for a graphic literal, the literal continues with the first character after the shift-out character on the continuation line. Spaces preceding the shift-out character are ignored.
- For numeric literals
- No continuation character is used
- A numeric literal continues with a numeric character or decimal point on the continuation line in the continued field
- Continuation for numeric literals is not allowed in free-form statements
- For hexadecimal and UCS-2 literals
- Either a hyphen (-) or a plus (+) can be used to indicate a continuation
- The literal will be continued with the first non-blank character on the next line
- For character, date, time, and timestamp literals
- A continuation can also occur within a name in free-format entries
- In the name entry for Definition and Procedure specifications. For more information on continuing names in the name entry, see Definition and Procedure Specification Name Field.
- In the keywords entry for File and Definition specifications.
- In the extended factor 2 entry of Calculation specifications.
You can split a qualified name at a period, as shown below:C EVAL dataStructureWithALongName. C subfieldWithAnotherLongName = 5
If a name is not split at a period, code an ellipsis (...) at the end of the partial name, with no intervening blanks.
Example*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 DName++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ DName+++++++++++ETDsFrom+++To/L+++IDc.Keywords+++++++++++++++++++++++++++++ D Keywords-cont++++++++++++++++++++++++ * Define a 10 character field with a long name. * The second definition is a pointer initialized to the address * of the variable with the long name. D QuiteLongFieldNameThatCannotAlwaysFitInOneLine... D S 10A D Ptr S * inz(%addr(QuiteLongFieldName... D ThatCannotAlways... D FitInOneLine)) D ShorterName S 5A *.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8 CL0N01Factor1+++++++Opcode(E)+Extended-factor2+++++++++++++++++++++++++++++ C Extended-factor2-++++++++++++++++++++++++++++ * Use the long name in an expression * Note that you can split the name wherever it is convenient. C EVAL QuiteLongFieldName... C ThatCannotAlwaysFitInOneLine = 'abc' * You can split any name this way C EVAL P... C tr = %addr(Shorter... C Name)