Here is a sample code to add 2 number in Free Format RPG

0001.00 D Total           S             10  0 INZ                                      
0002.00 C     *ENTRY        PLIST                                                      
0003.00 C                   PARM                    Number1           5 0              
0004.00 C                   PARM                    Number2           5 0              
0005.00  /FREE                                                                         
0006.00        Total = Number1 + Number2 ;  // Get total for both input values         
0007.00        DSPLY Total '*EXT' ;  // Display value of Total                         
0008.00        *InLR = *ON;          // End of program                                 
0009.00  /END-FREE                                                                     

This program accept two numbers as entry parameters, add these two number and display total to screen. As you noticed *ENTRY is not inside /FREE /END-FREE block of code because Free Format does not support *ENTRY of specifically saying PLIST opcode. We will talk about this is coming posts.

  1. Line 0005.00 : Complier directive “/FREE” is used at position 7(same position where “*” is used in Fixed format RPG for comments ).
  2. Line 0006.00 : RPG code to add two and save their sum in variable “Total”. There is no Eval required in Free Format. EVAL opcode is optional in Free format. We will talk about Free Format opcode in coming posts.
  3. Line 0007.00 : Use opcode “DSPLY” to show value of variable “Total” on “*EXT” message queue.
  4. Line 0008.00 : Turn on LR indicator to tell compiler where to end this program.
  5. Line 0009.00 : Use “/END-FREE” compiler directive to define the boundary of “/FREE”.

Semicolon (;)

In Free format RPG you must define boundary for each line of code. So to tell compiler where line of code is complete Semicolon “;” is used. For example in above code every code line is ended with “;”. This does not apply for comments.

Comments in Free Format

Like most modern programming languages Free Format RPG use double forward slash(//) to add comments. Unlike Fixed format where you need to add asterisk (*) at 7th position to add comment , in free format you can add comment at any position. Comments are allowed even after “;” of code line like shown in example above these are called inline comments.


  1. Full free-form has been available for some years now so I updated your example to demonstrate this. I also changed the definition of the input parameters to 15,5 so that the program can easily be called from the command line for testing. Usage Dsply op-code has also been enhanced to show the use of an expression to form the message. P.S. /Free and /End-Free are no longer required.

    Dcl-S Total Packed(10) Inz;

    //*ENTRY Interface for Main Procedure
    Number1 Packed(15:5);
    Number2 Packed(15:5);

    Total = Number1 + Number2 ; // Get total for both input values
    Dsply ( ‘Total is: ‘ + %Char(Total) ); // Display value of Total
    *InLR = *ON; // End of program

Leave a Reply

Your email address will not be published. Required fields are marked *