25
Wed, Dec
0 New Articles

Introducing Free-Format RPG IV, Part 3

RPG
Typography
  • 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!

BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$

Book Reviews

Resource Center

  • SB Profound WC 5536 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. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • 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 company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY 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. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) 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:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. 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:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot 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:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business 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.

  • 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:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic 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.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? 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: