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