× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



<snip>
When calling an ILE program or procedure, the operating system does not
check the number of parameters that are passed on the call. In addition,
the space where the operating system stores the parameters is not
reinitialized between program or procedure calls. Calling a program or
procedure that expects n parameters with n-1 parameters makes the system
use whatever is in the parameter space to access the nth parameter. The
results of this action are very unpredictable. This also applies to
programs or procedures written in other ILE languages that call CL
programs or procedures or are called by CL programs or procedures.
</snip>
This seems to tie in well with Scott's example where he called it three
times.
First time with one parameter and the null on the second parameter was
valid.
He called it with two parameters.
He called it again with only one parameter and the second parameter was
not initialized back to null.

"If" you are using the *OMIT as part of a bound call then checking for
null is a recommended technique.
<snip>
You can also specify the special value *OMIT for any parameter that you
want to omit from the parameter list on the Call Bound Procedure (CALLPRC)
command. If you specify *OMIT for a parameter, the calling program or
procedure passes a null pointer. The program or procedure that is called
has to be prepared to handle a null pointer if it refers to a parameter
that is omitted. In control language (CL), you can check for a null
pointer by monitoring for MCH3601 on the first reference to the omissible
parameter. The program or procedure must take appropriate action if it
receives a MCH3601.
</snip>

A technique is given where "also uses the CEEDOD API to determine the
actual length that is passed for the second parameter.". Now I am unsure
if that is only safe because the logic of that particular program says if
the first parameter is such-and-such then there is a second parameter.

All this is at:

https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rbam6/passp.htm


Rob Berendt

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.