RPGLE

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

Written by AS400i · 2 min read >

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) .

Advertisements
  • The H Specification
    • This 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 Specification
    • This 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 Specification
    • We 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 Specification
    • I 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 Specification
    • This 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 Specification
    • These 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

RPGLE Free Format (Hello World)

in RPGLE
  ·   1 min read

3 Replies to “ILE RPG, RPG IV Specifications (H, F, D, I, C, O and P)”

  1. Dear Yrangana,

    I found your blog really interesting with a set of valuable information. Congratulations!

    Hope you may keep updating it with iSeries tips.

    Kind Regards

why dont you add your experience here