× 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.



The way you're using it is fine.

The problem is in S#CHKUSR (love those 10 character names)

To check for *NOPASSed params, you need to use %parms().

To Check for *OMITted parms, you need to look for a null address.

Lets pretend you OPTIONS(*NOPASS:*OMIT),

then you'd need something like so:

//Set some defaults to use if the parameters are not passed
d wFedId s 1a inz(*OFF)
d wBnkId s 1a inz(*OFF)
d wPrSsn s 1a inz(*OFF)

if %parms >= 7; //Check for *OMIT
if %addr(FedId) <> *NULL; //Check for *NOPASS
wFedID = FedID;
endif;
endif;

if %parms >= 6;
if %addr(BnkId) <> *NULL;
wBnkID = BnkID;
endif;
endif;

if %parms >= 5;
if %addr(PrSsn) <> *NULL;
wPrSsn = PrSsn;
endif;
endif;

<snip the remaining, you should get the idea>

// In the rest of the code, make sure you use wFedId, wBnkId, wPrSsn,
ect and not the possibly *NOPASSed or *OMITted parameters. Otherwise
you'd have repeat the checks above for any line of code in which you
use the parameter.

HTH,
Charles

On Tue, May 12, 2009 at 2:50 PM, Smith, Mike
<Mike_Smith@xxxxxxxxxxxxxxxx> wrote:
I am trying to create a procedure that receives up to 7 parmeters.  The
first 2 will always be passed.  For the last 5 parms I want to be able
to pass only 1 in any position

So if I have a PR like
    P S#CHKUSR        B                    Export
    D S#CHKUSR        PI              N
    D  UserProfile                  10A
    D  AppSys                        5A
    D  EcisSsn                       1A   OPTIONS(*OMIT)
    D  ThrdSsn                       1A   OPTIONS(*OMIT)
    D  PrSsn                         1A   OPTIONS(*OMIT)
    D  BnkID                         1A   OPTIONS(*OMIT)
    D  FedId                         1A   OPTIONS(*OMIT)


C                   eval      retfield = S#chkusr(USR:DEPT:F1
C                             :*OMIT:*OMIT:*OMIT:*OMIT)

I might only want to pass BnkID or in my example I only want to pass
ECISSSN.

I have tried combinations of *OMIT, and *NOPASS but I keep getting
pointer not set.
Maybe I can't use *OMIT this way.  At any rate, I want to understand it
better.

Thanks
Mike

--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.



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.