Using /COPY with Free Format

Q. I’m having problems using /Copy in a free format RPG block. The compiler error I get is:

RNF0257
Form-Type entry not valid
or out of sequence.

What am I doing wrong?

A. When you’re coding in free format, this error message almost always means that the compiler ran into fixed format syntax in a free format block.

Learn more about free format and other ILE RPG functions in the “ILE RPG in Easy Bytes” series,” one of several online self-study courses available at my.enskill.com.

/Copy members are considered to be fixed format syntax, even if you code the /Copy statement in a free format block of code. If the /Copy member contains free format syntax, you should enclose the free format code in the /Copy member in its own /Free and /End-free delimiters.

Similarly, if you are coding using “fully free” format (with a **Free in the first statement), /Copy members are considered to be fixed format unless you also include the **Free directive in the first statement of the /Copy member.

In the primary source member, you need not code /End-free before you code the /Copy directive:

/Free
... (Free format code)
/Copy library/srcfile, member
... (More free format code)
/End-free

You can also indent the /Copy directive, if you wish, instead of beginning in column 7.

Incidentally, the conditional compilation directives(/Define, /Undefine, /If, /Elseif, /Else, /Endif, and /Eof) also work in free format syntax. And, contrary to IBM’s documentation, you can also indent these directives in free format syntax.