Blog Archives

ILE RPG, RPG IV Specifications (H, F, D, I, C, O and P)

Specifications in RPGLE

The first thing you should know in RPG IV is that RPG IV is a positional language. This means that we are allowed to write code at specific columns only. In RPGLE every line of code begins with the declaration of specifications. Actually in RPG IV all types of statements have been categorized. The specification tells the compiler which category the coming statement falls into. That’s the RPGLE compiler interprets a specific line of code on the basis of the specification. In RPG IV we have the following main specifications. All these specifications begin on the 6th column.
There are the following specifications in RPG IV (ILE RPG) .

  • The H SpecificationThis specification is used to give the instructions to compiler. For example the data format to be used within the program. Whether source debugging is allowed or not etc. Now-a-days most of these compiler instructions are given while compiling the program only. However, the most frequently used compiler instruction in RPGLE is NOMAIN.
  • The F SpecificationThis specification is also known as the File specification. Here we declare all the files which we will be using in the program. The files might be any of the physical file, logical file, display file or the printer file. Message files are not declared in the F specification.
  • The D SpecificationWe declare all the variables to be used in the program in the D specs. Though we can also declare the variables on the ad-hoc basis, this is strongly discouraged for it makes the maintenance of huge programs a miserable task.
  • The I SpecificationI specifications are used to rename some fields or record format names. Now a days renaming of record formats is done in F-Specs only. To rename a record format in F-Spec we use the keyword (Rename) as explained in the F Specification section of this tutorial.
  • The C SpecificationThis is the most widely used specification. All the calculations take place here. All the file operations, calculations, Calls to other programs, calls to procedures etc. are done in this specification only. A typical C-Specification statement looks as below.
  • Output specifications, also called “O specs”. These define the output record layouts for your files. The RPG compiler generates O specs for externally-described output-capable files.
  • The P SpecificationThese statements mark the boundary of the Procedure. We will learn more about procedures in the Modules and Procedures and Sub procedures sections. Now that we have had a little idea of an RPGLE specification we can proceed to our first RPGLE program.

The specifications must appear in the order given above, but it is not necessary to code all the specifications. A module could contain just a single C spec.

Most RPG specifications contain the specification type in column 6. The exception is free-form calculation specifications which are coded between /FREE and /END-FREE directives. Free-form calculations have blanks in column 6 and 7. The examples given in chapter 1 all used free-form calculations.

RPG cycle

RPG was originally created to handle files. The intention was that the program would read a record from the “primary file” and for each record, it would perform the calculations. When it reached the last record, it would close the file and end the program.

To artificially create the “last record” situation, the program could set on the “Last Record” indicator, called *INLR.

For programs that do not have a primary file, it is still necessary to stop the program from looping through the calculations. This can be done two ways:

  1. By using the RETURN operation.
  2. By setting on the Last Record indicator.
       *inlr = '1';

There are subtle differences in these two mechanisms that you will learn in later



Simple RPGLE Program (Hello World)

First RPGLE Program

Create a member “helloworld” in your working source physical file. Give the type of this member as “RPGLE”. Now type the following code in the source member.



Now compile the module. Create the program and call it, It Will display the phrase Hello World.

That is a basic RPGLE program but you learn several things as discussed below.

  • The C specs is mentioned on the 6th place. Other specifications are also specified at this place only. Other specifications are H, F,D, I and P. (Specifications O and E are RPG specifications)
  • The text Hello world is written at ‘Factor one’ position. i.e at the 12th place. At this place we specify the factor one of any operation code in RPGLE. You will use this factor frequently for declaring keylists of file and defining parameter list.
  • The Op codes in RPGLE. The opcodes are placed at the position starting from 26. In the example above we have used two opcodes dsply and Return.
  • Dsply – This opcode is used to display any text as the output. The program does not stop execution but halts for a small time. When you press the return key. The subsequent statements are executed. This opcode can be used to display a text of maximum 52 length.
  • Return – This opcode is a required keyword. When the program runs this statement, it terminates its execution and returns to the calling program immediately. In the example above the caller is the system as we have called this program from command line, hence the program will end when it executes the return statement.