Fully free-form statements

Special directive **FREE indicates that the entire source member contains fully free-form code. Fully free-form code can appear in any column, from column 1 to the end of the line. There is no practical limit on the length of a source line in fully free-form source.

**FREE may only be specified in column 1 of the first line in the source. The remainder of the line must be blank.

When **FREE is not specified in column 1 of the first line in the source, the entire source member is column-limited. See Common Entries.

In fully free-form source, columns 6 and 7 have no special status. All columns of the source file must contain free-form RPG code, except for the compile-time data, file-translation records, and alternate collating sequence records which appear at the end of the source. See Program Data.

The source mode only applies to a single source file. Copy files are assumed to have column-limited source mode unless **FREE appears in the first line of the file. When the copy file ends, the source mode returns to the mode of the source file containing the /COPY or /INCLUDE directive.

If it is necessary to have fixed-form statements, such as a TAG operation, or Input and Output specifications, these statements must be placed in a copy file.

The /FREE and /END-FREE directives are not allowed in fully free-form source.

If you provide an RPG preprocessor which merges the main source and the copy files into a new source member, refer to Appendix E in Rational Development Studio for i: ILE RPG Programmer's Guide for information on handling copy files with a different source mode from the file containing the /COPY or /INCLUDE directive.