I'm curious where in the V5R4 documentation it mentions that using %addr() on a *NOPASS parameter is unreliable? With my testing on program subprocedures it works. Maybe with further testing it won't. Maybe it won't work with a service program procedure. The RPG documentation (reference and user guide) talks about using %addr() on an *OMIT parameter but no mention of results on a *NOPASS parameter.
Principal Programmer Analyst
IT Supply Chain/Replenishment
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of John McKay
Sent: Wednesday, March 09, 2011 1:35 AM
To: RPG programming on the IBM i / System i
Subject: Re: Calling similiar (overloaded) procedure that has*nopass *omitinthe parameter
Lucky programmers document and test, test and document. They also
read the documentation and the code.
John McKay mba
On 08/03/2011 23:00, Barbara Morris wrote:
On 2011/3/8 3:18 PM, Morgan, Paul wrote:
Have you tried to check the address of a *nopass parameter if itYou've been unlucky then. If you were lucky, you would have seen a
wasn't passed? I get *NULL when I check in my test program and the
program doesn't break.
non-null pointer that just happened to be lying around where your
program was looking for it, and your program would have broken because
it thought the parameter had actually been passed.
Sometimes programs and procedures that access unpassed parameters can
work for years, and then something changes about what happens before the
program or procedure gets called, and *boom*, you get an error.
Everything might seem to work fine until you demo it to your boss, or
until just after it goes into production, or until just before you go on
vacation, or ...