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



It's cool but you loose compiler support for a very common errors:

RNF8042 if you provide less elements
RNF8041 if you provide MORE elements

This code will compile succesfully:

To be honest this is the RPG part i like so much (and saved my neck so many
times).

HTH

--
Marco Facchinetti

Mr S.r.l.

Tel. 035 962885
Cel. 393 9620498

Skype: facchinettimarco

2017-08-01 16:36 GMT+02:00 Mark Murphy/STAR BASE Consulting Inc. <
mmurphy@xxxxxxxxxxxxxxx>:

I don't know how this is wallowing in the past. The capability to
initialize the array in the data structure definition has been around a lot
longer than free format as Jon demonstrated. Yet it is only now that
someone says we need to do it this way, and if you don't agree with me, you
are wallowing in the past. Fact is, this "pre-run time" initialization is
not unique to RPG. Even Java as something similar with static class
initialization methods, which are separate from the property declaration.
Are folks who use that wallowing in the past?

Consider that

dcl-ds *N;
*N Char(7) Inz('CPF3C51');
*N Char(7) Inz('CPF3C52');
*N Char(7) Inz('CPF3C53');
*N Char(7) Inz('CPF3C54');
*N Char(7) Inz('CPF3C55');
OkList Char(7) Dim(5) Pos(1) Ascend;
end-ds;

If %Lookup(ErrorReturn.MessageId:OkList) > 0;

was offered as an improvement over

dcl-ds Messages;
Message1 Char(7) Inz('CPF3C51');
Message2 Char(7) Inz('CPF3C52');
Message3 Char(7) Inz('CPF3C53');
Message4 Char(7) Inz('CPF3C54');
Message5 Char(7) Inz('CPF3C55');
OkList Char(7) Dim(5) Pos(1) Ascend;
end-ds;

If %Lookup(ErrorReturn.MessageId:OkList) > 0;

because the latter is "too much work", but

dcl-s OkList Char(7) Dim(5) Ascend CTData;

if %Lookup(ErrorReturn.MessageId:OkList) > 0

**CtData OkList
CPF3C51
CPF3C52
CPF3C53
CPF3C54
CPF3C55

Which is even less work and ends up doing the same thing in a familiar way
is somehow bad even though the same thing has been available since the time
of fixed format RPG.

It all seems a bit arbitrary to me. Particularly since they all seem
equally valid in my mind. I don't use GOTO...TAG, or CAB...TAG because
there are better structured forms which aren't really equivalent. The
comparison of CTData to using CAB is a bit specious though. The use of
inline initialization vs. CTData is more simply a matter of how much you
like to type. The only argument that gets close is Charles who wants the
initialization with the definition, but even then it is not frequently
close to where it is used. I actually like both methods. If the data is
short and the array small, I am more likely to initialize it in-line. But
if the data or array are long, I am more likely to use CTData, or a table,
or a message file. Even though the last two require far more code.

Mark Murphy
Atlas Data Systems
mmurphy@xxxxxxxxxxxxxxx


-----Roger Harman <roger.harman@xxxxxxxxxxx> wrote: -----
To: "RPG programming on the IBM i (AS/400 and iSeries)" <
rpg400-l@xxxxxxxxxxxx>
From: Roger Harman <roger.harman@xxxxxxxxxxx>
Date: 07/31/2017 11:28PM
Subject: RE: This is cool.


I was trying to think of a nice response but Alan nailed it. I hate
dumbing things down for those who want to wallow in the past.

Roger Harman
COMMON Certified Application Developer - ILE RPG on IBM i on Power

-----Original Message-----
From: RPG400-L [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Alan
Campin
Sent: Monday, July 31, 2017 3:48 PM
To: RPG programming on the IBM i (AS/400 and iSeries)
Subject: Re: This is cool.

<snip>
**CTData OkList
CPF3C51
CPF3C52
CPF3C53
CPF3C54
CPF3C55

A little more idiomatic for RPG (easier for an RPG programmer to understand
at a glance)
</snip>

But so is CAB for most RPG programmers. Doesn't mean I want to use it.

On Mon, Jul 31, 2017 at 11:27 AM, Mark Murphy/STAR BASE Consulting Inc. <
mmurphy@xxxxxxxxxxxxxxx> wrote:

Yes, but you don't need O specs to use compile time data. If you use the
initialized data structure, when does that get initialized/reclaimed? I
guess if you use it in a procedure, that would be each time the procedure
is called, and goes away when the procedure ends because it is in
automatic
storage. Maybe a slight benefit if the procedure isn't called, not so
much
if it is called multiple times. So I could see arguing against compile
time
data in a service program, but not necessarily in a program. After all,
isn't:

dcl-s OkList Char(7) Dim(5) Ascend CTData;

If %Lookup(ErrorReturn.MessageId:OkList) > 0;

...

**CTData OkList
CPF3C51
CPF3C52
CPF3C53
CPF3C54
CPF3C55

A little more idiomatic for RPG (easier for an RPG programmer to
understand at a glance)






-----Alan Campin <alan0307d@xxxxxxxxx> wrote: -----
To: "RPG programming on the IBM i (AS/400 and iSeries)" <
rpg400-l@xxxxxxxxxxxx>
From: Alan Campin <alan0307d@xxxxxxxxx>
Date: 07/28/2017 09:38PM
Subject: Re: This is cool.


Are there even "O" specs anymore in 100% free and Main programs? I don't
think so and the problem with the old compile type arrays is that you are
talking static storage that gets initialized when the module starts and
stays there until the program or activation group ends.

On Fri, Jul 28, 2017 at 5:53 PM, Booth Martin <booth@xxxxxxxxxxxx>
wrote:

If I am understanding it, this is essentially moving an array's data to
where the array is defined instead of following the "O" specs? Which
is,
indeed, cool. Although I admit to also liking Jon/Sue's solution for
messages at the end of the article he linked earlier.



On 7/28/2017 6:38 PM, Nathan Andelin wrote:

The syntax may not be clear on first blush, but looks pretty slick
once
you
understand it.


On Fri, Jul 28, 2017 at 12:03 PM, Alan Campin <alan0307d@xxxxxxxxx>
wrote:

dcl-ds *N;
*N Char(7) Inz('CPF3C51');
*N Char(7) Inz('CPF3C52');
*N Char(7) Inz('CPF3C53');
*N Char(7) Inz('CPF3C54');
*N Char(7) Inz('CPF3C55');
OkList Char(7) Dim(5) Pos(1) Ascend;
end-ds;


If %Lookup(ErrorReturn.MessageId:OkList) > 0;


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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD

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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
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.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD

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

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
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.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD
--
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.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
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.