Introducing Free-Format RPG IV, Part 3

  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Programming Style Issues

Many books and articles have covered the subject of programming with style. RPG hasn’t played much of a role in style discussions, due mainly to the fixed-format nature of its calculations. Now, with free format, RPG programmers can, and should, pay attention to matters of style. With that goal in mind, here are some points to remember as you get started coding in free-format RPG IV.

Mixing Formats

Today’s RPG IV language is flexible enough to let you code in any of three basic formats that I will call original, extended Factor 2, and free format. The original format (still available) includes support for level break, one condition indicator, Factor 1, Operation code, Factor 2, Result, Result definition, and three resulting indicator areas. Many fixed-format operations require this format. It requires a C in position 6, and line comments (denoted by *) start in position 7.

Extended Factor 2 came into being with the advent of RPG IV, and IBM has enhanced it over the years. It is really a semi–free-format option that has gained a wide margin of acceptance. This format still has level break and conditional indicator capability, although programmers seldom use these options today. The operation codes that exploit the extended Factor 2 format are limited to CallP, Dou, Dow, Eval, For, If/Elseif, Return (in a subprocedure), and Select/When.

Extended Factor 2 operations still require a C in position 6, comments (*) starting in position 7, and Factor 1 in positions 13–26. This format mixes easily with RPG’s original fixed format.

You can combine fixed-format (both original and extended Factor 2) and free-format calculations within the same program, but the resulting code, although perfectly functional, may not look very good or be maintained easily by other programmers. Listing 4-6 shows a program segment that mixes use of RPG’s original format, the extended Factor 2 format, and free format in its calculations. As you can see, the result is a jumble of various types of source code that will take a maintenance programmer a while to make sense of.

Introducing Free-Format RPG IV, Part 3 - Figure 1 

Listing 4-6: Examples of mixing the original format, extended Factor 2, and free format

Now take a look at Listing 4-7. This version of the code shows how writing all your calculations in free format can improve the readability of your programs. The flow of control is clear, ample comments explain each key operation, and the code will be easier for another programmer to understand and modify when the need arises to do so.

Introducing Free-Format RPG IV, Part 3 - Figure 2 

Listing 4-7: Sample calculations using free format only

As you update old programs and write free-format code to your level of comfort, it is likely you will have some programs that mix fixed and free format. When considering free format, though, you must eventually decide whether to continue mixing formats or to adopt free format for all your calculations. I believe that the authors of the free-format RPG IV compiler anticipated this decision point and provided ample functionality entirely in free format. In effect, they wrote a compiler within a compiler. They could have separated the free-format capability from the other formats and come up with an entirely new language, but they didn’t—at least so far.

While we are on the subject of the “old” and the “new,” let me note that companies that are still converting their RPG/400 programs to RPG IV using IBM’s CVTRPGSRC (Convert RPG Source) command do not have an option for free format. However, a third-party vendor, Linoma Software, includes a free- format option in its program-conversion offerings. IBM’s Rational® Developer for i (RDi) software has a conversion utility that converts RPG/400 to free-format RPG IV. Neither of the conversion programs provides a complete conversion.

There are several fixed-format operations that do not convert easily, so converted programs may have a mixture of fixed and free-format statements.

Keyed Access

Keeping your code totally free of any fixed-format calculations brings some other coding factors into play. Without Klist and Kfld operations, for example, you must use either a data structure (with the *Key option) and the %Kds built-in function (for Chain and Setxx operations) or in-line key arguments. I prefer to use in-line arguments when there are only a few arguments but use the %Kds function grudgingly when there are many arguments. That’s because with the %Kds method, you need to load the data structure subfields before using Chain or Setxx, but with the in-line method no additional lines are needed.

Listing 4-8 illustrates each of these methods. (For the inline example, assume the same file (FileA) and record (RecA) as used in the data structure example.)

Introducing Free-Format RPG IV, Part 3 - Figure 3 

Listing 4-8: Using the key data structure method and in-line key list parameters

Named Indicators

The ability to name an indicator came to RPG IV around V5R1 without much ado. I saw this enhancement as a great leap forward in the modernization of the RPG language. The indicator data type puts RPG on par with other modern languages that feature similar data types, such as C, Cobol, Java, and even CL. RPG IV’s indicator data type is equivalent to a variable defined in CL as *LGL (logical). Other languages call this primitive a Boolean, meaning that 0 (zero) and 1 (one) are its only permitted values. RPG IV’s named indicators have all the same attributes as the numbered ones, except that they can’t be used in fixed-format operations that set a resulting indicator.

Named indicators can add value to your programs, but only if you name them well. Naming an indicator Flag22 is no better than using a numbered indicator, but a name such as Invalid_acct_num can make your program easier to read and maintain.

Naming File Indicators

In addition to naming “general-purpose” indicators, you can name the indicators associated with a file, especially a display file. Using good names for conditioning or response indicators is sometimes difficult. Keep reminding yourself that longer names are okay.

To name a file indicator, first specify the file-level keyword INDARA in the file’s DDS. Doing so causes a separate indicator area to be generated for the file. (Our friends coding in Cobol have used this technique for a long time, but we in RPG haven’t needed it.) Then, in the RPG IV program, specify keyword INDDS (indicator data structure) on the file declaration, providing the name of a data structure as the keyword value.

Next, code the named data structure in the data structure declaration. Each subfield entry matches an indicator used in the file. Here is where you specify the name of the indicator. For internal type, enter an n and either “from” and “to” numbers matching the indicator number or, in the keyword area, keyword Overlay(parm1:parm2), where parm1 is the data structure name and parm2 is the indicator number. If you “double-use” indicators (in different formats), simply make up another subfield using a different name and the same indicator number. Just be sure you’re careful in this practice.

One more thing. When using the indicator data structure, the RPG program no longer knows the file indicators by their numbers, only by their names. The numbered indicators are no longer used for the file.

Another indicator-related change that IBM made to RPG IV is the ability to name the overflow indicator used on printer files. Specify a defined named indicator on the OFLIND (Overflow indicator) keyword of the printer file’s file description. This named indicator is set on automatically when a print line is on or after the specified overflow line. The named indicator must be set off after overflow processing to avoid invalid overflow processing.

Note that there is one situation in which you must continue to use a two-letter indicator: You must still use the LR indicator to terminate a program.

Listing 4-9 shows examples of naming indicators.

Introducing Free-Format RPG IV, Part 3 - Figure 4 

Listing 4-9: Examples of named indicators and using an indicator data structure

Summing Up

Free-format RPG IV is no longer new; however, IBM has enhanced the language with every release since it became available in 2001. Free-format RPG coding is quite different from the original RPG calculation specifications, but it is not too dissimilar to the extended Factor 2 style of coding. Free format’s coding rules are easy to remember: operation code, then Factor 1, then Factor 2. Ending a statement with a semicolon is probably the thing you’re most likely to forget.

When you code in free format, you will find built-in functions essential.

Many operation codes of the fixed-format variety are available only as built-in functions in free-format RPG IV.

With free format, you are free to code lines any which way you like, and the compiler won’t care. You’ll find that coding free format with style makes all the difference in the world. Other free-form languages (such as C, Java, Pascal, and PL/1) have crossed this figurative “bridge” already, and we can learn from their style. To make our programs better in free format, we must decide to follow style guidelines, such as indenting. We must also use comments—liberally. The addition of named indicators gives free-format RPG IV programmers the ability to code RPG IV like other modern programming languages.

You can still code RPG IV using the original calculation format, nearly the same way the language was coded in the 1960s. Or, you can decide to try this new, free-format approach using some of the style methods suggested in this book. In the next several chapters, I show you how to code common programming requirements in free-format RPG IV. Then we’ll examine some special conversion situations and look at four sample programs that illustrate the new RPG IV free-format style of coding.

More of Free-Format RPG IV is coming soon in an upcoming issue of MC RPG Developer. Can't wait?  You can pick up Jim Martin's book, Free-Format RPG IV: Third Edition at the MC Press Bookstore Today!

Jim Martin

Jim Martin holds a BS degree in mathematics and an MS in computer science. For 26 years, he was employed by IBM, where he wrote RPG applications for customers and worked in the programming laboratory as a programmer on portions of CPF and the OS/400 operating system. After leaving IBM, Jim took post-graduate work in computer science and performed RPG training. He is an IBM-certified RPG IV developer and author of multiple bestselling editions of Free-Format RPG IV, which, since the book's initial publication in 2005, have taught thousands of RPG IV programmers how to be successful with the free-format coding style.

MC Press books written by Jim Martin available now on the MC Press Bookstore.

Free-Format RPG IV: Third Edition Free-Format RPG IV: Third Edition
Improve productivity, readability, and program maintenance with the free-format style of programming in RPG IV.
List Price $59.95

Now On Sale

Free-Format RPG IV: Second Edition Free-Format RPG IV: Second Edition
>Make the transition from coding in fixed-format RPG to free format.
List Price $59.95

Now On Sale

Functions in Free-Format RPG IV Functions in Free-Format RPG IV
Here’s the ultimate guide to writing RPG IV programs with functions in the free-format style.
List Price $59.95

Now On Sale

More Articles By This Author


Support MC Press Online





  • White Paper: Node.js for Enterprise IBM i Modernization

    SB Profound WP 5539

    If your business is thinking about modernizing your legacy IBM i (also known as AS/400 or iSeries) applications, you will want to read this white paper first!

    Download this paper and learn how Node.js can ensure that you:
    - Modernize on-time and budget - no more lengthy, costly, disruptive app rewrites!
    - Retain your IBM i systems of record
    - Find and hire new development talent
    - Integrate new Node.js applications with your existing RPG, Java, .Net, and PHP apps
    - Extend your IBM i capabilties to include Watson API, Cloud, and Internet of Things

    Read Node.js for Enterprise IBM i Modernization Now!


  • Profound Logic Solution Guide

    SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation.
    Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects.
    The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the companyare not aligned with the current IT environment.

    Get your copy of this important guide today!


  • 2022 IBM i Marketplace Survey Results

    Fortra2022 marks the eighth edition of the IBM i Marketplace Survey Results. Each year, Fortra captures data on how businesses use the IBM i platform and the IT and cybersecurity initiatives it supports.

    Over the years, this survey has become a true industry benchmark, revealing to readers the trends that are shaping and driving the market and providing insight into what the future may bring for this technology.

  • Brunswick bowls a perfect 300 with LANSA!

    FortraBrunswick is the leader in bowling products, services, and industry expertise for the development and renovation of new and existing bowling centers and mixed-use recreation facilities across the entertainment industry. However, the lifeblood of Brunswick’s capital equipment business was running on a 15-year-old software application written in Visual Basic 6 (VB6) with a SQL Server back-end. The application was at the end of its life and needed to be replaced.
    With the help of Visual LANSA, they found an easy-to-use, long-term platform that enabled their team to collaborate, innovate, and integrate with existing systems and databases within a single platform.
    Read the case study to learn how they achieved success and increased the speed of development by 30% with Visual LANSA.


  • Progressive Web Apps: Create a Universal Experience Across All Devices

    LANSAProgressive Web Apps allow you to reach anyone, anywhere, and on any device with a single unified codebase. This means that your applications—regardless of browser, device, or platform—instantly become more reliable and consistent. They are the present and future of application development, and more and more businesses are catching on.
    Download this whitepaper and learn:

    • How PWAs support fast application development and streamline DevOps
    • How to give your business a competitive edge using PWAs
    • What makes progressive web apps so versatile, both online and offline



  • The Power of Coding in a Low-Code Solution

    LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed.
    Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

    • Discover the benefits of Low-code's quick application creation
    • Understand the differences in model-based and language-based Low-Code platforms
    • Explore the strengths of LANSA's Low-Code Solution to Low-Code’s biggest drawbacks



  • Why Migrate When You Can Modernize?

    LANSABusiness users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.
    In this white paper, you’ll learn how to think of these issues as opportunities rather than problems. We’ll explore motivations to migrate or modernize, their risks and considerations you should be aware of before embarking on a (migration or modernization) project.
    Lastly, we’ll discuss how modernizing IBM i applications with optimized business workflows, integration with other technologies and new mobile and web user interfaces will enable IT – and the business – to experience time-added value and much more.


  • UPDATED: Developer Kit: Making a Business Case for Modernization and Beyond

    Profound Logic Software, Inc.Having trouble getting management approval for modernization projects? The problem may be you're not speaking enough "business" to them.

    This Developer Kit provides you study-backed data and a ready-to-use business case template to help get your very next development project approved!

  • What to Do When Your AS/400 Talent Retires

    FortraIT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators is small.

    This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn:

    • Why IBM i skills depletion is a top concern
    • How leading organizations are coping
    • Where automation will make the biggest impact


  • Node.js on IBM i Webinar Series Pt. 2: Setting Up Your Development Tools

    Profound Logic Software, Inc.Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. In Part 2, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Attend this webinar to learn:

    • Different tools to develop Node.js applications on IBM i
    • Debugging Node.js
    • The basics of Git and tools to help those new to it
    • Using as a pre-built development environment



  • Expert Tips for IBM i Security: Beyond the Basics

    SB PowerTech WC GenericIn this session, IBM i security expert Robin Tatam provides a quick recap of IBM i security basics and guides you through some advanced cybersecurity techniques that can help you take data protection to the next level. Robin will cover:

    • Reducing the risk posed by special authorities
    • Establishing object-level security
    • Overseeing user actions and data access

    Don't miss this chance to take your knowledge of IBM i security beyond the basics.



  • 5 IBM i Security Quick Wins

    SB PowerTech WC GenericIn today’s threat landscape, upper management is laser-focused on cybersecurity. You need to make progress in securing your systems—and make it fast.
    There’s no shortage of actions you could take, but what tactics will actually deliver the results you need? And how can you find a security strategy that fits your budget and time constraints?
    Join top IBM i security expert Robin Tatam as he outlines the five fastest and most impactful changes you can make to strengthen IBM i security this year.
    Your system didn’t become unsecure overnight and you won’t be able to turn it around overnight either. But quick wins are possible with IBM i security, and Robin Tatam will show you how to achieve them.

  • Security Bulletin: Malware Infection Discovered on IBM i Server!

    SB PowerTech WC GenericMalicious programs can bring entire businesses to their knees—and IBM i shops are not immune. It’s critical to grasp the true impact malware can have on IBM i and the network that connects to it. Attend this webinar to gain a thorough understanding of the relationships between:

    • Viruses, native objects, and the integrated file system (IFS)
    • Power Systems and Windows-based viruses and malware
    • PC-based anti-virus scanning versus native IBM i scanning

    There are a number of ways you can minimize your exposure to viruses. IBM i security expert Sandi Moore explains the facts, including how to ensure you're fully protected and compliant with regulations such as PCI.



  • Encryption on IBM i Simplified

    SB PowerTech WC GenericDB2 Field Procedures (FieldProcs) were introduced in IBM i 7.1 and have greatly simplified encryption, often without requiring any application changes. Now you can quickly encrypt sensitive data on the IBM i including PII, PCI, PHI data in your physical files and tables.
    Watch this webinar to learn how you can quickly implement encryption on the IBM i. During the webinar, security expert Robin Tatam will show you how to:

    • Use Field Procedures to automate encryption and decryption
    • Restrict and mask field level access by user or group
    • Meet compliance requirements with effective key management and audit trails


  • Lessons Learned from IBM i Cyber Attacks

    SB PowerTech WC GenericDespite the many options IBM has provided to protect your systems and data, many organizations still struggle to apply appropriate security controls.
    In this webinar, you'll get insight into how the criminals accessed these systems, the fallout from these attacks, and how the incidents could have been avoided by following security best practices.

    • Learn which security gaps cyber criminals love most
    • Find out how other IBM i organizations have fallen victim
    • Get the details on policies and processes you can implement to protect your organization, even when staff works from home

    You will learn the steps you can take to avoid the mistakes made in these examples, as well as other inadequate and misconfigured settings that put businesses at risk.



  • The Power of Coding in a Low-Code Solution

    SB PowerTech WC GenericWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed.
    Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

    • Discover the benefits of Low-code's quick application creation
    • Understand the differences in model-based and language-based Low-Code platforms
    • Explore the strengths of LANSA's Low-Code Solution to Low-Code’s biggest drawbacks



  • Node Webinar Series Pt. 1: The World of Node.js on IBM i

    SB Profound WC GenericHave you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.
    Part 1 will teach you what Node.js is, why it's a great option for IBM i shops, and how to take advantage of the ecosystem surrounding Node.
    In addition to background information, our Director of Product Development Scott Klement will demonstrate applications that take advantage of the Node Package Manager (npm).
    Watch Now.

  • The Biggest Mistakes in IBM i Security

    SB Profound WC Generic The Biggest Mistakes in IBM i Security
    Here’s the harsh reality: cybersecurity pros have to get their jobs right every single day, while an attacker only has to succeed once to do incredible damage.
    Whether that’s thousands of exposed records, millions of dollars in fines and legal fees, or diminished share value, it’s easy to judge organizations that fall victim. IBM i enjoys an enviable reputation for security, but no system is impervious to mistakes.
    Join this webinar to learn about the biggest errors made when securing a Power Systems server.
    This knowledge is critical for ensuring integrity of your application data and preventing you from becoming the next Equifax. It’s also essential for complying with all formal regulations, including SOX, PCI, GDPR, and HIPAA
    Watch Now.

  • Comply in 5! Well, actually UNDER 5 minutes!!

    SB CYBRA PPL 5382

    TRY the one package that solves all your document design and printing challenges on all your platforms.

    Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product.

    Request your trial now!

  • Backup and Recovery on IBM i: Your Strategy for the Unexpected

    FortraRobot automates the routine tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:
    - Simplified backup procedures
    - Easy data encryption
    - Save media management
    - Guided restoration
    - Seamless product integration
    Make sure your data survives when catastrophe hits. Try the Robot Backup and Recovery Solution FREE for 30 days.

  • Manage IBM i Messages by Exception with Robot

    SB HelpSystems SC 5413Managing messages on your IBM i can be more than a full-time job if you have to do it manually. How can you be sure you won’t miss important system events?
    Automate your message center with the Robot Message Management Solution. Key features include:
    - Automated message management
    - Tailored notifications and automatic escalation
    - System-wide control of your IBM i partitions
    - Two-way system notifications from your mobile device
    - Seamless product integration
    Try the Robot Message Management Solution FREE for 30 days.

  • Easiest Way to Save Money? Stop Printing IBM i Reports

    FortraRobot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing.
    Manage your reports with the Robot Report Management Solution. Key features include:

    - Automated report distribution
    - View online without delay
    - Browser interface to make notes
    - Custom retention capabilities
    - Seamless product integration
    Rerun another report? Never again. Try the Robot Report Management Solution FREE for 30 days.

  • Hassle-Free IBM i Operations around the Clock

    SB HelpSystems SC 5413For over 30 years, Robot has been a leader in systems management for IBM i.
    Manage your job schedule with the Robot Job Scheduling Solution. Key features include:
    - Automated batch, interactive, and cross-platform scheduling
    - Event-driven dependency processing
    - Centralized monitoring and reporting
    - Audit log and ready-to-use reports
    - Seamless product integration
    Scale your software, not your staff. Try the Robot Job Scheduling Solution FREE for 30 days.