Reader Feedback and Q&A

RPG
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times
I am beginning to receive questions and comments regarding previous issues' content as well as questions on entirely new topics. To that end, I am starting a Reader Feedback and Q&A section. I will include this section as part of an issue when you send me feedback or questions that warrant publication. While other publications may print questions that are fabricated to suit the purposes of the publication, I will only answer questions you send me through email, online forums, or my RPG IV list server. So keep in touch!

Q: I recently discovered an API named "Access" in a published article. I copied the syntax into my program. It works and saves me a lot of time. I have no problem with this as long as I understand what is going on. I have researched the Access API and understand the parameters, but there is one part of the following line of code that I have not seen before.
     C                   return    (Access(%Addr(Filename):F_OK) = 0)


The part I do not understand is the use of = 0. I suspect it has more to do with calling a procedure than the Access API. Can you help me with this?

A: I don't know where you found the Access() API/procedure you mention, but the technique used in your example code is a technique that I teach in my onsite RPG IV seminars.

It is what we call a "Boolean expression," meaning that the result of the expression is either true or false (*ON or *OFF in RPG IV-speak). In your example, the value returned from the procedure is compared to zero. If the returned value is equal to zero, then the condition is true and *ON is returned to the caller. If the return value is not equal to zero, then the condition is false and *OFF is returned to the caller.

A similar Boolean operation, one that I use in my seminars, follows:

     C                   eval      *INLR = (A = B)


In this expression, if A is equal to B, then *ON is moved into *INLR; otherwise, *OFF is moved into *INLR.

The conditional expression on the right side of the assignment operator (i.e., the equal sign) is performed as though it were on an IF statement. The result of the conditional test is copied to the field on the left side of the assignment operator. The Boolean expression illustrated above could be rewritten as follows:

     C                   if        A = B
     C                   eval      *INLR = *ON
     C                   else
     C                   eval      *INLR = *OFF
     C                   endif


If you're a long-time RPG programmer, you may remember the COMP (compare) operation code. The COMP operation code compared two values and set on an indicator based on the result of that comparison. Boolean expressions in RPG IV can be thought of as a contemporary form of the COMP operation code.

Remember, however, that an indicator data type was added to RPG IV a few releases back. So the result of a Boolean expression can be either a traditional RPG indicator or a so-called named indicator. The data type for named indicators is N, and the fields must be one position in length. Here's a simple named indicator being used in the same situation:

0001 D match           S              1N   Inz(*OFF)

0002 C                   Eval      match = (A = B)


The MATCH field (line 1) is declared as a named indicator (N data type) and is initialized to *OFF. Line 2 does a comparison of A equal to B, and if A is equal to B, *ON is moved into MATCH; otherwise, *OFF is moved into MATCH.

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: