Being a Better RPG Programmer

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

What skills should an RPG programmer have besides knowledge of basic RPG?


Recently, I had the opportunity to interview candidates for a programming position at our company. I had just lost an excellent employee due to personal reasons, and I needed an additional person to develop and maintain the code on our iSeries. We have a small group of five iSeries programmers, four of whom spend most of their time developing and maintaining RPG code and are part of our total IT staff.  The fifth develops programs for the iSeries as well as Windows and Linux servers, but in PHP and Java. As I looked through resumes and thought about the skills I needed in our company, I reflected on how much has changed in programming for IBM midrange systems since the early days of the AS/400 and what I now expect a programmer to know.


Several years ago, when I became actively involved in managing our development environment, I set a number of goals for our developers, and those goals have had a big impact in determining the qualifications of the person to be hired. I had a goal for programming in the RPG language, a goal for handling our database I/O, a goal for reducing redundant code in the system, and a goal for improving the end user experience. I also had a goal for my programmers to get them to branch out from PDM and to use a modern IDE such as the IBM Rational products. Each of these goals was designed to make my programming team more productive.


First, consider the goal I set for implementing programs in RPG. The code on our system followed an evolutionary path, similar to many small and midsized businesses. The programs ranged from those monolithic programs that are written in RPG III and use the cycle (remember that?) to newer fixed-format ILE RPG programs that make more extensive use of subroutines to meet our current standard, which consists of free-format ILE RPG and subprocedures. It has occurred to me that if I were to teach a class in RPG programming today, I probably wouldn't spend a lot (if any) time talking about the fixed-format version of the RPG language and the cycle except in a historical context. The person I hire, however, needs to be able to maintain those older programs and eventually convert them to free-format. Thus my first requirement for our new-hire is knowledge of both RPG languages: the old fixed-format, cycle-driven code and the new free-format version with all the BIFs. The modern version of the language would be perfectly fine to teach to new programmers, but to work in an environment like ours, they would also have to be familiar with the old syntax as well, so it's like having to know several languages instead of one. As an example, consider the program below that totals inventory. The item master file is ITMAST and is keyed by an item number that is passed to the program as P1ITEM, and the inventory master contains the quantity on hand (QTYOHD) for each product number and size at each warehouse. The program returns the total inventory in the company (P1ONHD). In fixed-format RPG, the calculation specifications might look something like this:




     C           KITEM     KLIST                           ITMAST

     C                     KFLD           ITPRNO

     C                     KFLD           ITPRSZ


     C                     Z-ADD*ZEROS    F1ONHD

     C                     Z-ADDP1ITEM    F1ITEM


     C           F1ITEM    CHAINITMASTR              99


     C           *IN99     IFEQ *OFF

     C           KITEM     SETLLINVNFM

     C           KITEM     READEINVNFM                   71


     C           *IN71     DOWEQ*OFF

     C                     ADD  QTYOHD    F1ONHD

     C           KITEM     READEINVNFM                   71

     C                     ENDDO

     C                     ENDIF


     C                     Z-ADDF1ONHD    P1ONHD

     C                     MOVE *ON       *INLR



 Now consider the same program written in free-format ILE RPG. I won't belabor the differences here, but they're significant. My Java/PHP programmer can read and understand free-format code, but he's at a loss with the old fixed-format. 




       f1onhd = *zeros;

       f1item = p1item;

       chain ( f1item ) itmast;


       if %found (itmast);

          setll ( itprno : itprsz ) invent;

          reade ( itprno : itprsz ) invent;

          dow not %eof(invent);

              f1onhd += qtyohd;

              reade ( itprno : itprsz ) invent;




       p1onhd = f1onhd;

       *inlr = *on;




Second, consider our goal for database I/O. I've used SQL on the iSeries even in the early 1990s when it was painful, so, as the hardware performance has improved and the operating system has evolved, I've encouraged its use more and more among our programmers. That's not to say there aren't some occasions in which native I/O is appropriate, but the minute one begins to think in terms of processing a set of data, then using SQL to retrieve that data set just makes sense. Many programming tasks in our business do require thinking in sets. For example, I want the sales for all customers in the Eastern region, or the inventory for items from this vendor, or the products sold of this type. Take our previous example from above, in which I want the total inventory for a product across all locations. If I take the same program above and rewrite it using SQL instead of native I/O, then the code becomes this:




    // Note: f1onhd initialized to zero on the interface definition


       f1item = p1item;

       chain ( f1item ) itmast;


       if %found (itmast);

         exec sql

         SELECT sum(qtyohd) INTO :f1onhd

         FROM invent

         WHERE prodno = :itprno AND size = :itprsz;



       p1onhd = f1onhd;


       *inlr = *on;




My Java/PHP developer can even more easily read this code. Furthermore, if I want to share this code with someone working on a Java or PHP program, it's just a matter of copying the SQL code into the new program. I've found this to be a great way to promote interaction between our Java/PHP developers and our RPG developers.


The result is that many of our RPG programs contain embedded SQL for I/O, so my new-hire will have to be familiar with SQL and using embedded SQL in RPG programs.


Third, consider our goal for reducing duplicate code in the system. We've begun an effort to combine common routines in service programs, using binder language and binding directories to manage combining this common code with RPG modules. I might also throw in defining User-Defined Functions (UDFs), database triggers, and other techniques to reduce redundant code in our system. For example, if I have an old file (table) with a seven-digit date, do I want every new program I write to have to convert that date to a DATE data type, or just write either a UDF or a service program to do it once and then call that UDF or service program?  That means that the RPG programmer I hire needs to be familiar with those concepts and know how to work with them to integrate new code in the system.


Finally, let's look at our goal for the end user experience. One of my favorite questions to ask a new computer science graduate is "Why do you think there are 80 columns on a 5250 screen"? Most don't think about the IBM punch cards with 80 columns, which evolved from Herman Hollerith's design to process the data for the U.S. census of 1890. Why 80 columns? Well, there were 80 questions in the census, of course. It's interesting to imagine how displays would have looked if Washington had decided to ask 100 questions for that census. It's also ironic that it took exactly 100 years for a new display interface to be developed that would break with the 80 column tradition, the development of the first browser by Tim Berners-Lee. Just as SQL has become the standard language for database access, HTML is the standard language for displaying data on a browser. There's a tradeoff in flexibility and real estate for the browser. It's a complexity caused by choices. Now I have plenty of space to put my graph, but I have to worry about fonts, background color, images, and a host of other things that don't come into play with a 24X80 green-screen. This environment brings with it a whole host of acronyms such as JS, CSS, AJAX, XML, and many others. For our company, we are in the process of evaluating tools that will allow our programmers to write to a browser from their RPG programs without requiring the programmers to be HTML experts. However, any tool is going to require some knowledge of the terminology relating to events that occur in a browser. For example, ON_ROW_CLICK, ON_ROW_MOUSEOVER, and ON_ROW_DB_CLICK are all events that can be handled in a browser through JavaScript, with the results being passed to an RPG program. Thus my ideal candidate would have some knowledge of HTML, JavaScript, and interactions with a browser. Ideally, this means that they are familiar with at least one other programming language, such as PHP or Java.


Regarding our development environment, we settled on the IBM Rational Developer for Power Systems (RDPower) product. As an Eclipse-based product, it means that our programmers who are familiar with using it can work with Zend Studio or any other Eclipse environment and feel at home. I believe this is a great advantage for a programmer learning a new language, as it's twice as difficult to learn both a new language and a new IDE, particularly if that IDE is PDM/SEU.


So who did I hire? Our new-hire has experience with RPG III, ILE RPG free-format, and SQL. Our new-hire also has some experience with calling Java programs from RPG programs, but the one aspect that put him in front of my other candidates was that he had taken the Zend courses for PHP certification, which meant he had used Zend Studio and had some familiarity with Web programming.


While I'm sure not every company has the same requirements, I hope it’s been informative to share some of my thoughts on the skills I think are important for an RPG programmer to have.

Jim Staton

Jim Staton is Vice President for Information Technology at Mutual Distributing Company, the largest alcohol beverage distributing company in North Carolina.


While Jim never worked with IBM midrange systems at IBM, one of his first programming jobs was developing software for an IBM System/3 Model 6 for his family's business. He continued to develop RPG applications for the business in his spare time on a System/32, System/34, System/36, and eventually the AS/400.


In 1978, Jim joined IBM at the Research Triangle Park in North Carolina, where he worked with computer communications and protocol standardization. As a manager at IBM, he was responsible for IBM's work with the IEEE 802.x committees to complete the standards for the 802.2-5 protocols for local area networks. In 1985, Jim joined the IBM European Networking Center in Heidelberg, Germany, where he managed the development of IBM's first prototype implementing the CCITT X400 Standard, which were the rules governing the first universal email system. While at IBM, Jim was awarded two patents in communication protocols as well as an Outstanding Technical Achievement Award for his work with X.400 Message Handling System. He also coauthored several articles on computer communications for the IBM Systems Journal.


Jim has been a speaker at a number of conferences on a variety of topics, including communications protocols, supply chain management, mobile applications, and business intelligence.


Jim graduated from Ohio State University in 1978 with an MS degree in Computer Science.





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.