C# for RPGers: Taking C# Loops for a Spin

Programming - Other
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

 

The missing piece to the basic C# language puzzle will be presented here: looping structures. You already know FOR, but there’s more!

A few TechTips ago, I talked about the FOR loop and how it works in C#. It’s now time to explain the other looping structures that this amazing language has to offer. I’ll be using the exact same test task in all of the code snippets: I’ll print a simple count from 1 to 5 using a loop.

Meet DoW’s Cousin: WHILE

Let’s start with the WHILE loop. This looping structure is very similar to its RPG counterpart, DoW: the statement starts with the looping instruction, which is followed by the condition and a block of code to execute. Naturally, there are syntactical differences, but the general ideal is exactly the same. Here’s the code snippet necessary to perform my test task using the WHILE loop:

            int myNumber = 1;

            while(myNumber <= 5)

            {

                // print out myNumber's current value

                Console.WriteLine(myNumber);

                // add 1 to myNumber

                myNumber++;

            }

As you can see, if you replace while with DoW, remove the opening curly bracket, and replace the closing one with an EndDo, the C# code becomes its RPG equivalent. Well, almost, because there’s no Console.WriteLine in RPG, but you get the idea. There’s also that “++” notation that you might not be used to, but that’s equivalent to myNumber = myNumber + 1.

As expected, this will print the numbers from 1 to 5 in the console or, in other words, the code within the loop will be executed while the condition evaluates to true. More formally, DoW and WHILE belong to the “check first and execute if true” looping structure family.

Do First, Check Later: the Do…While Loop

As you know, even though DoW is arguably the most used RPG loop, it’s not the only one. There’s also DoU, with its “execute first and then check if true” modus operandi. As you’d expect, DoU also has a C# cousin. It’s the DO…WHILE loop. RPG’s DoU syntax is similar to DoW, but the same doesn’t apply to WHILE and DO…WHILE in C#. I actually think C#’s DO…WHILE syntax makes more sense, because it follows the order in which things get done. Let’s go over an example, and you’ll see what I mean:

            int anotherNumber = 1;

            do

            {

                // print out anotherNumber's current value

                Console.WriteLine(anotherNumber);

                // add 1 to anotherNumber

                anotherNumber++;

            } while (anotherNumber <= 5);

It’s easier on the eyes than DoU because the operations are in their natural order: “do this while the condition is true”, as opposed to DoU’s “until the condition is false, do this.” Other than that syntactical difference, DO…WHILE and its RPG counterpart DoU offer the same functionality.

And There’s One More: FOR

Then there’s also the FOR loop and its two variants, which I discussed in depth a few TechTips ago (you can read them here and here), so I won’t repeat it here. Just for consistency’s sake, here’s the same example using FOR:

            for(int yetAnotherNumber = 1; yetAnotherNumber <= 5; yetAnotherNumber++)

            {

                Console.WriteLine(yetAnotherNumber);

            }

FOR’s advantage in this particular context is that the counter variable is defined in the loop’s definition and you don’t need to declare an additional variable or increment it in each iteration. The looping mechanism does that for you.

As I mentioned earlier, there’s also another FOR variant, known as For Each, which is particularly useful to loop over a certain family of objects called “collections.”

Next Steps

Speaking of objects, that would be the next logical step in this series, because this TechTip about the looping structures closes the basic language syntax. I’ve discussed data types and their (arithmetic and other) operations, flow control structures, and (this time around) looping structures. In the future, I hope to get the chance to explain object-oriented programming, C#’s rich graphical user interface, and how to manipulate IBM i’s database from a C# program. I firmly believe that opening up the i’s database to “external” languages (like C#) is one way to go, because it keeps the platform alive, without being held hostage by RPG and its limitations, particularly now that IBM seems to be directing its R&D investment to SQL rather than RPG.

I hope I managed to help you learn and appreciate something new, something outside your comfort zone, yet strangely familiar. Thank you all for reading!

 

Rafael Victoria-Pereira

Rafael Victória-Pereira has more than 20 years of IBM i experience as a programmer, analyst, and manager. Over that period, he has been an active voice in the IBM i community, encouraging and helping programmers transition to ILE and free-format RPG. Rafael has written more than 100 technical articles about topics ranging from interfaces (the topic for his first book, Flexible Input, Dazzling Output with IBM i) to modern RPG and SQL in his popular RPG Academy and SQL 101 series on mcpressonline.com and in his books Evolve Your RPG Coding and SQL for IBM i: A Database Modernization Guide. Rafael writes in an easy-to-read, practical style that is highly popular with his audience of IBM technology professionals.

Rafael is the Deputy IT Director - Infrastructures and Services at the Luis Simões Group in Portugal. His areas of expertise include programming in the IBM i native languages (RPG, CL, and DB2 SQL) and in "modern" programming languages, such as Java, C#, and Python, as well as project management and consultancy.


MC Press books written by Rafael Victória-Pereira available now on the MC Press Bookstore.

Evolve Your RPG Coding: Move from OPM to ILE...and Beyond Evolve Your RPG Coding: Move from OPM to ILE...and Beyond
Transition to modern RPG programming with this step-by-step guide through ILE and free-format RPG, SQL, and modernization techniques.
List Price $79.95

Now On Sale

Flexible Input, Dazzling Output with IBM i Flexible Input, Dazzling Output with IBM i
Uncover easier, more flexible ways to get data into your system, plus some methods for exporting and presenting the vital business data it contains.
List Price $79.95

Now On Sale

SQL for IBM i: A Database Modernization Guide SQL for IBM i: A Database Modernization Guide
Learn how to use SQL’s capabilities to modernize and enhance your IBM i database.
List Price $79.95

Now On Sale

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: