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



Sorry, you are correct. Too many words starting with "pro.." :-)

However, I have just re-checked the old program under debug, and at the
point it calls the second program, the occurrence is set to 50. And,
after the called program returns it is still set to 50. The next thing
the program does is set the occurrence to 1 and look for a value - and
there it is!

Trevor Briggs
Analyst/Programmer
Lincare, Inc.
(727) 431-1246
TBriggs2@xxxxxxxxxxx

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Scott Klement
Sent: Friday, July 05, 2013 1:27 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Multiple occurrence data structure anomaly


Trevor,

You are calling a program (not a procedure.) You can tell this by the
EXTPGM keyword on the prototype.

Perhaps you meant to say "I'm calling a program with a prototype" (vs
"procedure")?

I agree with Alan... this is the way it has always worked, I believe
even back in RPG III you had to set the occurrence to 1 before making a
call. Hard to remember, though, as RPG III was 18 years ago. I could
code up a quick test and find out, though.



On 7/5/2013 11:09 AM, Briggs, Trevor (TBriggs2) wrote:
In the original template, the call was:

c CALL 'PSVSH01R'
c parm .....
c parm .....
c etc.

In the new template, it's:

DsplSearch(...: ...: etc...);

Where:

d DsplSearch PR ExtPgm('PSVSH01RA')
d ... like(....... )
d ... like(....... )
d etc.

If that is not calling a program with a procedure than I apologize for
my misuse of the terminology.

Trevor Briggs
Analyst/Programmer
Lincare, Inc.
(727) 431-1246
TBriggs2@xxxxxxxxxxx

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Alan Campin
Sent: Friday, July 05, 2013 11:51 AM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Multiple occurrence data structure anomaly

In your original message you said that the program was calling a
procedure.
You cannot call a program with a procedure so that said to me that you
were
creating some kind of service program.

When you say ILE, do you mean you just converted to RPG IV? There
shouldn't
be any difference in how it works if you just converted to RPG IV. You
seem
to indicate in your message that everything is the same, just calling
the
RPG IV program?


On Fri, Jul 5, 2013 at 9:44 AM, Briggs, Trevor (TBriggs2) <
TBriggs2@xxxxxxxxxxx> wrote:

The called program is an old program that I don't want to mess with,
and
expects (and populates) a MODS - not the way I would do it, but there
we
are.

The calling program is actually a file maintenance program template.
It
used to be OPM and appeared to work just fine. The template has been
upgraded to ILE and I was "lucky" enough to be the first person to
use
it to create a new maintenance pgm. While testing the function that
calls the second program I encountered what appears to be a rule
change
between OPM and ILE functionality.

Trevor Briggs
Analyst/Programmer
Lincare, Inc.
(727) 431-1246
TBriggs2@xxxxxxxxxxx

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Alan Campin
Sent: Friday, July 05, 2013 11:36 AM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Multiple occurrence data structure anomaly

I would agree with Jon. The question I have is why are you doing
this?
it
sounds like you are trying to apply a monolith solution to a an ILE
world
but I might be misunderstanding what you are trying to do.


On Fri, Jul 5, 2013 at 7:54 AM, Briggs, Trevor (TBriggs2) <
TBriggs2@xxxxxxxxxxx> wrote:

Barbara,

You say:
" When you pass a MODS as a prototyped parameter, it passes the
current
occurrence. (As you've seen.)"

What I interpret you are saying is that ONLY the current occurrence
is
passed. Yet in practice, I see that if Pgm B populates occurrences 1
and
2, then Pgm A sees this on return. What is apparently happening is
that
the whole MODS is being passed (at least, is being returned), but
"positioned at" the current occurrence.

What I find really odd is that without the setting of the occurrence
to
1 before the call, when Pgm B populates occurrences 1 and 2, Pgm A
sees
the results in occurrences 50 and 51 - of a 50-occurrence MODS!
(This
is
observed by investigating the MODS with Debug - i.e. eval
MYMODS(50..51). Attempting to access occurrence 51 in the program
generates error RNX0122: OCCUR value is out of range, as one would
expect.)

Curious!

Trevor Briggs
Analyst/Programmer
Lincare, Inc.
(727) 431-1246
TBriggs2@xxxxxxxxxxx

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Barbara Morris
Sent: Wednesday, July 03, 2013 9:42 PM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Multiple occurrence data structure anomaly

On 7/2/2013 2:46 PM, Briggs, Trevor (TBriggs2) wrote:
...
When control is returned to Pgm A, value is in
occurrence 50 of the MODS.

When you pass a MODS as a prototyped parameter, it passes the
current
occurrence. (As you've seen.)

I assume you didn't add the DIM keyword for the prototyped, so I
think
it makes sense that it would pass the current occurrence.

Just by the way, if you use an array of data structures (DIM keyword
instead of OCCURS keyword), you can distinguish between the whole
array
ARR, and an element ARR(i).

For sure I would recommend using a DS array for new code, since it's
easier (I think) to code array indexes than to manage occurrences.

But for existing code, it's not usually easy to change a MODS to a
DS-array, since it involves changing every reference to the
subfields.
For example, if a MODS named INFO was previously not qualified, and
INFO

was changed to a qualified ds array, the reference to subfield ADDR
would change from simply ADDR to INFO(index).ADDR.

--
Barbara
--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(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 message originates from Lincare Holdings Inc. It contains
information
which may be confidential or privileged and is intended only for the
individual or entity named above.
It is prohibited for anyone else to disclose, copy, distribute or
use
the
contents of this message.
All personal messages express views solely of the sender, which are
not to
be attributed to Lincare Holdings Inc., and may not be copied or
distributed without this disclaimer.
If you received this message in error, please notify us immediately
at
MailAdmin@xxxxxxxxxxx or (800) 284-2006.




************************************************************************


************************************************************************
************************************************************

--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(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 (AS/400 and iSeries)
(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 message originates from Lincare Holdings Inc. It contains
information
which may be confidential or privileged and is intended only for the
individual or entity named above.
It is prohibited for anyone else to disclose, copy, distribute or use
the
contents of this message.
All personal messages express views solely of the sender, which are
not to
be attributed to Lincare Holdings Inc., and may not be copied or
distributed without this disclaimer.
If you received this message in error, please notify us immediately
at
MailAdmin@xxxxxxxxxxx or (800) 284-2006.



************************************************************************

************************************************************************
************************************************************

--
This is the RPG programming on the IBM i (AS/400 and iSeries)
(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.