Free Form Definitions

From MidrangeWiki
Revision as of 20:32, 27 December 2018 by DaveLClarkI (talk | contribs) (Fully Free-Form coding)
Jump to: navigation, search

One of the major new features of ILE RPG, introduced in 7.1, is free form definition specifications.

This article is a stub. You can help by editing it.


Features

  • Removes the column restrictions on definitions.
  • Can be interspersed with standard, fixed form, definitions.
  • /free and /end-free no longer required.

Requirements

  • IBM i 7.1 or higher.
  • 7.1 PTF 5770WDS SI51094.
  • If using SQLRPGLE, 7.1 PTF Group SF99701 level 26 or higher.

Free-Form Definitions

The following are the new free-form definition statements to take the place of the indicated fixed-format specifications.

CTL-OPT  . . equates to H-specs
DCL-F  . . . equates to F-specs
DCL-C  . . . equates to D-spec constants
DCL-S  . . . equates to D-spec stand-alone fields
DCL-DS . . . equates to D-spec data structures
END-DS . . . to terminate most DCL-DS statements
DCL-PI . . . equates to D-spec procedure interface definitions
END-PI . . . to terminate procedure interface definitions
DCL-PR . . . equates to D-spec procedure prototype definitions
END-PR . . . to terminate procedure prototype definitions
DCL-PROC . . equates to P-spec begin statements
END-PROC . . equates to P-spec end statements

Examples

<source lang="rpg">

    D* fixed-form declarations
    D string        S       50A VARYING 
    D date          S         D DATFMT(*MDY) 
    D obj           S         O CLASS(*JAVA:'MyClass') 
    D ptr           S         * PROCPTR 
   
      // free-form declarations 
      DCL-S string VARCHAR(50); 
      DCL-S date DATE(*MDY); 
      DCL-S obj OBJECT(*JAVA:'MyClass'); 
      DCL-S ptr POINTER(*PROC);
    
      // constants
      DCL-C max_count 200; 
      DCL-C deleted 'D'; 

</source >

Fully Free-Form coding

Another one of the new features of ILE RPG, introduced as of 7.1 TR 11 and 7.2 TR 3, is a fully free-form coding format. The program source must start with **FREE and this removes all of the prior column restrictions for RPG source.

  • Fixed-form specifications cannot be used in the main program source.
  • Fixed-form copybooks can still be used—the compiler automatically inserts **NO-FREE and **FREE around them.
  • Column 6 is no longer reserved for fixed-form specification characters or compiler directives.
  • All free-form statements and compiler directives may start in column 1.
  • Column 80 is no longer the restricted right margin for statement content.
  • The entire source line length may be used for statement content—no reserved comment area.
  • All comments must start with slash-slash, instead of an asterisk, and can be used practically anywhere/anytime.
  • Source line lengths greater than 100 characters are automatically supported.

Links

Dawn May: Free format RPG and TR7

RPG Cafe: Fully free-form RPG