2.1 Just another programming language2.2 RPG is free-form2.2.1 The modern free-form RPG2.2.2 The basics of /Free coding2.2.3 Unsupported op-codes2.2.4 Op-codes that tend to produce unclear and error-prone source code2.2.5 Liberating data and file definitions2.2.6 Data declarations2.2.7 More on data definitions2.2.8 Defining prototypes and subprocedures2.2.9 Miscellaneous topics2.2.10 Moving to free-form2.3 Modern RPG programs and subprocedures2.4 Naming2.4.1 The names2.4.2 Case2.4.3 Special characters2.4.4 Underscore2.4.5 Named constants2.4.6 Naming conventions2.5 Comments2.5.1 Summary comments2.5.2 Detailed commenting2.5.3 Other commenting2.5.4 Positions 1 - 52.6 Structuring code2.6.1 Declarative code2.6.2 Executable code2.6.3 Multipath comparison2.6.4 Embedded SQL2.7 Using templates and qualified data structures2.8 Qualifying wherever possible2.9 Strings2.10 Subroutines2.11 Older functions2.11.1 RPG built-in indicators2.11.2 Compile-time arrays2.11.3 Multiple occurrence data structures2.11.4 Do not use GOTO, CABxx, or COMP2.11.5 Do not use obsolete IFxx, DOUxx, DOWxx, or WHxx opcodes2.11.6 Use SELECT, WHEN, OTHER, ENDSL for multipath comparison2.12 Embedded SQL2.13 Global definitions2.14 Parameters and prototyping and procedure interfaces2.14.1 Parameters2.14.2 Return value2.14.3 Copy members2.15 The Integrated Language Environment2.15.1 ILE programs2.15.2 Service programs2.15.3 Binding directories2.15.4 Activation groups