02
Sat, Nov
2 New Articles

Fixed Format: Is It an Addiction?

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

We've been through these debates over and over. You know what I mean: those arguments that free format (/FREE) is somehow better than regular RPG IV. No one is more sick of this nonsense than I am. All prejudice aside, the truth is that there are decades of RPG III and RPG IV code out there that are in RPG syntax (a.k.a. fixed format), and that is the style "everybody" uses. This argument is somewhat similar to the argument about MS Windows. It may or may not be better than Mac OS X or OS/400, but it is the most used OS out there.

To me, these arguments are more like airing one's frustrations than debating the merits. For example, the people in the free-format camp consistently say that free-format RPG is better because it is more readable.

While these points are neither relevant nor valid (they are merely opinions), they do illustrate why the free-format RPG syntax is still relegated to a few hundred RPG IV developers (out of nearly two million RPG programmers worldwide): The reason is that there is no compelling reason to switch to free-format. After all, doing so would be like forcing people to learn French when English is the spoken language. (OK, so that's a cheap tongue-in-cheek reference to IBM Canada, the owners of RPG IV.)

To be practical, some free-format is important in RPG IV. Most languages throughout the world have some English terms interspersed in them, and RPG IV programmers should consider interspersing some free-format code into their RPG IV. It isn't all that intrusive, and in some situations, it provides new functionality.

However, as with learning a second spoken language (or if you do not live in the United States, learning a third or fourth spoken language), you don't completely switch over to that new language, but rather use certain key components of it to enhance your native dialog. For example, swearing in Italian has always been popular in my house.

This is the place I've come to with RPG IV's /FREE syntax. I use it to solve specific problems that are difficult and frustrating to solve with RPG IV's regular syntax . RPG IV's /FREE syntax includes a handful of features that are not directly available in regular RPG IV syntax. Granted, there is nothing in /FREE that can't be done with regular RPG IV syntax, but admittedly, some things are easier to do in /FREE.

For example, I recently needed to update two fields in a database file on a V5R2 machine. With the traditional UPDATE operation code, I would simply issue an UPDATE opcode with the file name in Factor 2, and the entire record would be updated.

In this situation, however, I only wanted to update two of the more than 20 fields in the database record. I could have done this by issuing the EXCEPT operation and hand coding the two fields on an exception Output specification. Instead, however, I dropped into /FREE and did it rather simply, as follows:

Regular RPG IV Syntax

     C                   Except    SomeItems

     OSALESREC  E            SomeItems
     O                       UPC
     O                       PRDCDE              

/FREE RPG IV Syntax

     C/FREE
           update slshist  %Fields(UPC : PRDCDE);
     C/END-FREE

In /FREE syntax, we can use the UPDATE operation code along with the %FIELDS parameter/keyword to specify the fields we want to update. It makes things a bit easier than creating the EXCEPT output statements in regular RPG IV syntax.

Again, you can achieve similar results with regular syntax, but the /FREE syntax is arguably easier. Of course, it is only easier if you already know the syntax.

I tend to use the /FREE syntax in this situation and occasionally when I need to CHAIN to a file using a partial key. The CHAIN operation provides an ease-of-use capability similar to that of the UPDATE operation, in that it lets you create an ad hoc keylist.

For example, in traditional RPG IV, a keylist is declared once and then may be used anywhere in the source member, as follows:

     C     ItemKey       KLIST
     C                   KFLD                    ITMNBR
     C                   KFLD                    UPC
     C     ItemKey       Chain     ItemMast

In /FREE syntax, the keylist may still be used, but it's stuck in the fixed-format syntax. The CHAIN operation, however, allows you to specified the fields you want to use to access a file in an ad hoc keylist, as follows:

     C/FREE
           chain (ITMNBR:UPC) ItemMast;
     C/END-FREE

The ad hoc keylist is enclosed in parentheses. This takes the place of the true keylist, but a true keylist could also have been used.

Problems with Consistency

While these two examples illustrate the ease with which you can do certain things with the /FREE syntax, they also illustrates one of the primary reasons that /FREE will never be the de facto syntax for RPG IV: lack of consistency.

The UPDATE operation uses a parameter keyword (similar to a built-in function) to declare the fields you want to output. The CHAIN operation, however, uses just parentheses to specify the fields you are using to declare the ad hoc keylist. Why doesn't the UPDATE operation simply use parentheses or why doesn't the CHAIN operation have a %KLIST parameter keyword? More importantly, why are they not using the same grammar? Consistency for /FREE syntax could turn into a rather lengthy discussion, so I'm not going to pursue it here.

While many /FREE advocates dismiss these inconsistencies, they are, from my experience, the single biggest problem with teaching the /FREE syntax and then getting programmers to move to it. RPG programmers need their language to be predictable. They are not writing compilers or operating systems; they are writing end-user applications that need to work.

Back in the RPG III days and in the early days of RPG IV, when a new feature was about to be announced, I would write articles in advance and update my book The Modern RPG IV Language in anticipation of the new features. Once the feature was announced, I'd sometime have to make modifications, based on whether the feature delivered more or less capability and functionality than I'd expected.

Today, when a new feature is announced for RPG IV, particularly when /FREE syntax is involved, not only can I not predict the syntax of the new feature, I don't even attempt to write anything about it for months after it is shipped because I can never anticipate the syntax or the capability of any given feature.

RPG IV really only needs enhancements in a few areas, such as dynamic array sizes, CGI programming, and handling the IFS file structures.

Bob Cozzi has been programming in RPG since 1978. Since then, he has written many articles and several books, including The Modern RPG Language--the most widely used RPG reference manual in the world. Bob is also a very popular speaker at industry events such as RPG World and is the author of his own Web site and of the RPG ToolKit, an add-on library for RPG IV programmers.

BOB COZZI

Bob Cozzi is a programmer/consultant, writer/author, and software developer. His popular RPG xTools add-on subprocedure library for RPG IV is fast becoming a standard with RPG developers. His book The Modern RPG Language has been the most widely used RPG programming book for more than a decade. He, along with others, speaks at and produces the highly popular RPG World conference for RPG programmers.


MC Press books written by Robert Cozzi available now on the MC Press Bookstore.

RPG TnT RPG TnT
Get this jam-packed resource of quick, easy-to-implement RPG tips!
List Price $65.00

Now On Sale

The Modern RPG IV Language The Modern RPG IV Language
Cozzi on everything RPG! What more could you want?
List Price $99.95

Now On Sale

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: