TechTalk: READ Loops in RPG

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

From: Brad Stone

To: All

Today at work, a colleague and I were discussing the proper way to read a file from beginning to end. 9 illustrates the two methods we discussed.

Today at work, a colleague and I were discussing the proper way to read a file from beginning to end. Figure 9 illustrates the two methods we discussed.

My colleague and I were taught to use Method 1. She now uses Method 2, though, claiming that Method 1 misses records (either the first or last).

Any input on this would be appreciated.

From: Chris Rowell

To: Brad Stone

Both methods work without missing any records.

I use the second method with a slight modification; I use a DOUEQ instead of the DOWEQ (see 10). My modified version of Method 2 eliminates the need to turn the end-of-file indicator off. It is also less confusing because of the single READ and because your calculations follow the READ. I think this method provides a more logical "flow."

I use the second method with a slight modification; I use a DOUEQ instead of the DOWEQ (see Figure 10). My modified version of Method 2 eliminates the need to turn the end-of-file indicator off. It is also less confusing because of the single READ and because your calculations follow the READ. I think this method provides a more logical "flow."

From: Matt Sargent

To: Brad Stone

I always use the first method. Functionally, they will perform the same, and neither should miss any records. Any problem that would cause the first method to miss records (such as the file pointer not being at the beginning of the file) would also affect the second method.

I use the first method because it is much cleaner and simpler. The second method is actually checking for end-of-file twice each time a record is read, which is pointless and wastes system resources. Furthermore, if you flowchart what you want to happen, you'll see that Method 1 actually corresponds to your logic flow, while Method 2 does not.

From: Ted Holt

To: Brad Stone

Both ways are proper. Like you, I prefer Method 1. If you use Method 2, you have to make sure that nothing inside the loop messes with indicator 99, or the program could end without processing the entire file. 11 illustrates another way to read a file without having to worry about the indicator.

Both ways are proper. Like you, I prefer Method 1. If you use Method 2, you have to make sure that nothing inside the loop messes with indicator 99, or the program could end without processing the entire file. Figure 11 illustrates another way to read a file without having to worry about the indicator.

I like to use this technique, as I can use the same indicator throughout the program for all my I/O and LOKUPs.

This is the way I was taught to write COBOL, and I've used it in RPG since then.

From: Brad Stone

To: Ted Holt

I like the idea you have about using the EOF field. EOF in this case would have to be defined as a one-character field.

The only problem I see is that the move (in a worst-case scenario) slows down processing that much more.

But, otherwise, trying to make RPG look like a "normal" language helps a lot.


TechTalk: READ Loops in RPG

Figure 9: Two Methods to Read a File

 * Read loops: * * Method 1 * C READ CUSMAS 99 C *IN99 DOWEQ*OFF C . C . C . C READ CUSMAS 99 C ENDDO * * Method 2 * C MOVE *OFF *IN99 C *IN99 DOWEQ*OFF C READ CUSMAS 99 C *IN99 IFEQ *OFF C . C . C . C ENDIF C ENDDO 
TechTalk: READ Loops in RPG

Figure 10: Modified Method 2

 * * Modified Method 2 * C *IN99 DOUEQ*ON C READ CUSMAS 99 C *IN99 IFEQ *OFF C . C . C . C ENDIF C ENDDO 
TechTalk: READ Loops in RPG

Figure 11: Modified Method 1

 * * Modified Method 1 * C READ CUSMAS 99 C MOVE *IN99 EOF 1 C EOF DOWEQ*OFF C . C . C . C READ CUSMAS 99 C MOVE *IN99 EOF C ENDDO 
BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$

Book Reviews

Resource Center

  •  

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

  • 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

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