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



Trevor,

Your method is indeed 'neater' (although I've never really found pointers
to be complicated, and I don't think you have either!).

The only thing I'd say is that, whilst your method certainly works as well
as mine, the benefit (I think) of my method is that you only need to define
the actual Array subfield sizes/types - the actual fields you will use -
and define the Positions string as being LIKE the data-structure itself. By
contrast, with your method, you have to define the length of the data
string itself. It's only a minor difference, *unless* you are regularly
changing the code and adding entries to the array... I've been bitten a few
times where I have increased the size of the array, but not increased the
size of the string (or vice-versa) or simply miscalculated the length of
the data string.

Also (and this may be getting weirdly complex), I've sometimes put them
into separate copybooks, like so:

In copybook POSITIONS1, we have this:

D PosNumber C 4
D Positions Like(PositionsDS)
D Inz('+
D ffooter+
D Ffooter+
D hheader+
D Hheader')

In copybook POSITIONS2, we have this:

D PosNumber C 2
D Positions Like(PositionsDS)
D Inz('+
D rRory +
D tTrevor')
In the mainline code, we have this:

/COPY QRPGLESRC,POSITIONS1
D PositionsPtr * Inz(%addr(Positions)
D PositionsDS DS Based(PositionsPtr)
D Array Dim(PosNumber)
D Position 1A Overlay(Array)
D PosValue 6A Overlay(Array:*Next)

Common code is in the mainline, with different data sets in different
copybooks. It works great, but may be a little *too* abstracted for much
use.

That being said, I've used both your method and my method at various times
- they both work.

Rory


On Wed, Aug 7, 2013 at 10:46 AM, Briggs, Trevor (TBriggs2) <
TBriggs2@xxxxxxxxxxx> wrote:

I don't see the need to complicate things with pointers, a quick test
shows that this seems to give the desired result:

D PositionsDS DS
D 28A Overlay(PositionsDS)
D Inz('+
D ffooter+
D Ffooter+
D hheader+
D Hheader')
D Array Overlay(PositionsDS) Dim(4)
D Position 1A Overlay(Array)
D PosValue 6A Overlay(Array:*Next)

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 Rory Hewitt
Sent: Wednesday, August 07, 2013 1:19 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: Is this the simplest way to define corresponding arrays
inD-specs Ipostedan example of what I am trying to do (define
twocorresponding arrayswithinitialization values)
athttp://code.midrange.com/c7ffa28dce.htmlIsthe code shown in the
example the

Actually, a neater (V5R3-compatible!) version might be this:

D Positions Like(PositionsDS)
D Inz('+
D ffooter+
D Ffooter+
D hheader+
D Hheader')
D PositionsPtr * Inz(%addr(Positions)
D PositionsDS DS Based(PositionsPtr)
D Array Dim(4)
D Position 1A Overlay(Array)
D PosValue 6A Overlay(Array:*Next)




On Wed, Aug 7, 2013 at 10:15 AM, Rory Hewitt <rory.hewitt@xxxxxxxxx>
wrote:

Craig,

Would this work?

D Positions Like(PositionsDS)
D Inz('+
D fFhH+
D footerfooterheaderheader')
D PositionsPtr * Inz(%addr(Positions)
D PositionsDS DS Based(PositionsPtr)
D Position 1A Dim(4)
D PosValue 6A Dim(4)

Rory


On Wed, Aug 7, 2013 at 10:00 AM, Hiebert, Chris <
chris.hiebert@xxxxxxxxxxxxxx> wrote:

I've used this format in many programs.

D ItemTypes DS
D 7A INZ('CCredit')
D 7A INZ('DDebit ')
D ItemType 7A OVERLAY(ItemTypes) DIM(2)
D ItemTypeKey 1A OVERLAY(ItemType)
D ItemTypeDsc 6A OVERLAY(ItemType:*next)

I find it easier to interpret the data structure when each entry in
the
array has one INZ entry.
Since my data is related, this setup allows simple lookups.

VIDX = %LOOKUP(S0CITYPE:ItemTypeKey);
IF VIDX > 0;
S0CITYPED = ItemTypeDsc(vIdx);
ENDIF;

Chris Hiebert
Programmer/Analyst
Disclaimer: Any views or opinions presented are solely those of the
author and do not necessarily represent those of the company.

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of craig@xxxxxxxxxx
Sent: Wednesday, August 07, 2013 4:02 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Is this the simplest way to define corresponding arrays in
D-specs Ipostedan example of what I am trying to do (define two
corresponding arrayswithinitialization values) at
http://code.midrange.com/c7ffa28dce.html Isthe code shown in the
example
the

I posted an example of what I am trying to do (define two
corresponding
arrays with initialization values) at

[1]http://code.midrange.com/c7ffa28dce.html

Is the code shown in the example the simplest/best way to define
and
initialize the arrays? If not, what is a better alternative (in
D-specs).

Thanks
Craig Pelkie

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




--
Rory Hewitt

http://www.linkedin.com/in/roryhewitt




--
Rory Hewitt

http://www.linkedin.com/in/roryhewitt
--
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.