Modern ILE RPG now (finally) supports “fully free form” RPG Source code
This means, we can write RPG code from column 1 to the end of the line — just like other languages. No more jumping to character 10 to get passed the old reserved (H,F,D,I,C,O) specification column.
You must code **FREE in column 1 of the first line of any source member that contains fully-free code. **FREE cannot be coded anywhere but the first line. After that line, the entire source member must be free-format.
If you need any fixed-form statements, I specs, you can put them in a /COPY file… or just write the code better 😉
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8....+....9....+....0....+....
In the following example, the code begins in column 1. The second DSPLY operation extends beyond column 90.
**FREE
ctl-opt main(greeting);
dcl-proc greeting;
dsply 'Hello';
dsply world!';
end-proc;
You can copy a fully-free copybook into “classic” source, and you can copy a classic copybook into fully-free source.
There is no limit on the length of your source code line. Obviously there is a limit on the record length for a source physical file, but there is no limit on the length of a line in an IFS file. IFS is the future and I predict we will be using IFS files for our source in code in the very near future. The /COPY directive will also allow any length for the copybook, and copybooks may be IFS files with a long path.
/FREE and /END-FREE directives are not allowed in RPG fully-free source code.
Fully-free RPG requires IBM i Release 7.3, Release 7.2 TR3, or Release 7.1 TR11. RDi Release 9.5 supports **FREE.
Neat RDi formatting with **FREE
Take your existing RPG code and add **FREE to line one
Then simply click FORMAT on the SOURCE menu (or press CTRRL|SHIFT|F)
and *BOOM* cleanly formatted source code:
#NICE work IBM !