Added the code and debugged. The answer, as expected, is 0. The question,
also expected, I hope, is Why? I called it with: CALL ARQ006 PARM('X'). I
even tried passing both parameters: CALL ARQ006 PARM(XX XXX). Still 0.
Jerry C. Adams
IBM i Programmer/Analyst
Dobie's Dogma: If you are not thoroughly confused, you have not been
thoroughly informed.
--
A&K Wholesale
Murfreesboro, TN
615-867-5070
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Monnier, Gary
Sent: Tuesday, July 10, 2012 11:17 AM
To: RPG programming on the IBM i / System i
Subject: RE: %Parms Test Problem
So how many parms does %parm say are being passed in?
D nbrparms S 10I 0
nbrparms = %parms;
Gary Monnier
-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx]
On Behalf Of Jerry C. Adams
Sent: Tuesday, July 10, 2012 8:51 AM
To: RPG400-L
Subject: %Parms Test Problem
I am having an issue with *NOPASS and %Parms. The issue is that, when I
pass the parm, %parms is not resolving correctly.
The prototype for the program is:
D ARQ006 PR ExtPgm('ARQ006')
D Type 2a Options(*NOPASS)
D Code 3a Options(*NOPASS)
The interface is:
D ARQ006 PI
D #Type Like(iftype)
D Options(*NoPass)
D #Code Like(ifcde)
D Options(*NoPass)
The program checks for parameters:
IF %parms > *Zeros;
dspOption = *On;
ENDIF;
I invoked the program via:
CALL ARQ006 PARM('X')
When I run the program under debug, the value of #Type = 'X'. But the
program skips right over the dspOption setting.
I have used *NOPASS before (typically when I added parameters to a program
later) and then checked for the extra parms, such as:
IF %parms >= 13;
[do something]
ENDIF;
The only difference that I see here is that I may not want to pass any
parms. By way of explanation, this was an attempt to write an inquiry
program with a subfile. The program could be called as a stand alone
program, or as a selector from another program. I.e., in the latter case
the calling program asks the called program [ARQ006] which records are
available, select one and return its key fields back to the caller. As a
stand alone inquiry, it doesn't care about parameters.
Why isn't the "IF %parms > *Zeros" resulting in a true result when I invoke
it with "CALL ARQ006 PARM('X')"?
Thanks.
Jerry C. Adams
IBM i Programmer/Analyst
You can never tell which way the train went by looking at the track. Only
by the splatter of the blood stains
--
A&K Wholesale
Murfreesboro, TN
615-867-5070
--
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.
--
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.