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



In your UPDATE code your "new" values from filea will never make it to
fileb the way it's coded. Here's basically what happens (it's due to the
files having the same names)

Read filea (say key = 1 and field1 = 'B')

Chain ( key ) fileb (key =1 and field1 = 'A')

If the chain is successful field1 will be 'A' not 'B'!!!
So the update occurs as expected but the "new" value will not be in fileb
but rather will not be changed. For this to work with the fields being
the same you'd have to save the value from filea into a different variable
and on a successful chain move that value into the field1 prior to
updating fileb.



From: Vern Hamberg <vhamberg@xxxxxxxxxxx>
To: RPG programming on the IBM i / System i <rpg400-l@xxxxxxxxxxxx>,
Date: 11/25/2011 05:40 PM
Subject: Re: RPG400 same fields name of Input and Output files
Update & Write question
Sent by: rpg400-l-bounces@xxxxxxxxxxxx



Dave

Good question. I supposed it depends, and I'm not sure I can speak to
what is needed to know RPG - the manual still covers the cycle, of
course, but it's not even necessary anymore.

So maybe the question comes down to what does your shop do? I've heard
of places that still use RPG III for new development, even of 3rd-party
products. That is scary to me.

Other places may have a lot of legacy code in RPG III - I think they
ought to run a conversion over it whenever it is touched and then use
RPG IV - use Linoma's product or Craig Rutledge's free utilities to do a
more complete conversion. Craig's stuff includes source, so you can make
your own conversion - I think about whether to keep source dates - you
could make it do that. He also has something to convert to free-form.

Since almost every calculation can be done now in free-form that was
done in column-fixed-form, and there are %BIFs for all the indicators,
as well as named indicators, there seems little reason to teach all the
old stuff.

Things like control level breaks can be done in code - more work but
probably understandable. Matching records - that, too, can be written
out - once you understand what it does and why, and a little study of
the RPG Reference can give you that.

By the way, has anyone done template examples of a matching records
process? I've done a few level break things on my own.

I guess I'm inclined to go for it - teach free-form opcodes, as well as
external files both for input and for output - it wasn't stated whether
the OP was using O-specs or I-specs (if only embedded SQL could be done
without generated I-specs, eh?)

JMHO
Vern

On 11/25/2011 4:03 PM, Dave wrote:
Hi Vern and Joe,

When I first saw that code I thought wow, they don't make 'em like that
anymore!
I agree with you, bit If he is learning RPG, should he go straight ahead
with free and never know about the wonders of the columnized language?

Le 25 novembre 2011 20:37, Vern Hamberg<vhamberg@xxxxxxxxxxx> a écrit :

Also we don't use right-hand indicators for things like end-of-file or
not-found anymore.

And using an infinite loop and a READ - well, CHAIN would be ever so
much better.

On 11/25/2011 1:14 PM, Joe Pluta wrote:
Hi Gary!

Most of your assumptions are correct, but before I take the time to
address them, would you tell me why you are coding this program? Is
it
a production program on a live system, or is this just a theoretical
exercise for some sort of RPG class? Because in the modern RPG
programming community, we no longer recommend the use of RPG III style
coding and indicators. And even in RPG III, we emphatically recommend
AGAINST the use of left-hand indicators (such as your 99 LEAVE
instruction).
Joe


Hi,

I have a simply RPG with one Input file A, one output file B and they
have same fields names KEY, FIELD1, FIELD2
Here is the code:

*LOVAL SETLL A
1 DOWEQ 1
READ A 99
99 LEAVE

WRITE B


ENDDO

Without any MOVE (no rename of file B FIELD1& FIELD2) it can write
to
file B
However, for update operation


*LOVAL SETLL A
1 DOWEQ 1
READ A 99
99 LEAVE

(MOVE FIELD1#TMP)

KEY CHAIN B 98
(MOVE #TMP FIELD1)

N98 UPDATE B


ENDDO

Without any MOVE in (...), can reading every records in file A update
FIELD1& FIELD2 in file B of the matching key of file B?
Further, if I add MOVE FIELD1 #TMP before CHAIN, and N98 MOVE #TMP
FIELD1 after CHIAN, can it only update FIELD1 in file B with value of
FIELD1 in file A? and FIELD2 is unchanged in file B?

Thanks

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