×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




Hi Peter,

you have to overload your UDF.
That means you have to create a second UDF with the same name in the same
library, but without parameters.

create function UTLIB/ACCTGMONTH () 
       returns integer
       language RPGLE                                 
       parameter style GENERAL WITH NULLS             
       not deterministic                              
       no SQL                                
       called on null input                           
       no external action                             
       external name 'UTLIB/SVCBUS(ACCTGMONTH)'

The new procedure gets its own signature and now can be called with or
without parameter.

Passing a NULL Parameter, does not mean the parameter is not passed, but a
NULL pointer is passed.

In RPG you'll use *OMIT to pass a NULL-Pointer-Parameter to an other
procedure.
In RPG you can check passed NULL-Pointers with ParmXYZ = *NULL.
If the parameter is optional and not passed, no pointer gets passed.
Checking a parameter that is not passed with = *NULL will cause a MCH3601
failure.
To check the number of parameter passed you'll use %Parms.
Note: Ommitted parameter are counted as passed! 

Just an information for your RPG procedure.
I'd add OPTIONS(*NOPASS) to all optional parameters.
This allows you to check the number of passed parameters using %PARMS.

 d AcctgMonth...                            
 d                 pr            10i 0      
 d  amDate                         d   const Options(*NoPass)
 d  amDateNull                   10i 0       Options(*NoPass)     
 d  amResultNull                 10i 0       Options(*NoPass)

Birgitta

"If you think education is expensive, try ignorance"
(Derek Bok)
 
-----Ursprüngliche Nachricht-----
Von: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] Im Auftrag von Peter Dow (ML)
Gesendet: Dienstag, 4. April 2006 21:35
An: MIDRANGE-L@xxxxxxxxxxxx
Betreff: Specify null parameter for SQL UDF

Hi Everyone,

How do I call a UDF with a null parameter? I have a UDF created to 
return the accounting month for a given date (the only parameter), but 
if no parameter is given, it will return the current accounting month.

It works fine when I pass it a date, e.g.

SELECT ACCTGMONTH(CURRENT_DATE) FROM ANYFILE

but complains (says it cannot find ACCTGMONTH) if I use it like this:

SELECT ACCTGMONTH() FROM ANYFILE

I understand that it identifies a UDF based on the name and the input 
parameter types, but I don't understand how to tell it a particular 
parameter may be optional.

I created it with the following:

create function UTLIB/ACCTGMONTH (date) returns integer
       language RPGLE                                 
       parameter style GENERAL WITH NULLS             
       not deterministic                              
       no SQL                                
       called on null input                           
       no external action                             
       external name 'UTLIB/SVCBUS(ACCTGMONTH)'

ACCTGMONTH is a procedure within a service program, with prototype like 
this:

 d AcctgMonth...                            
 d                 pr            10i 0      
 d  amDate                         d   const
 d  amDateNull                   10i 0      
 d  amResultNull                 10i 0

*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
pdow@xxxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxxx> /



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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

This mailing list archive is Copyright 1997-2026 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.