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.
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:
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 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:
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.
LATEST COMMENTS
MC Press Online