|
Yep...it's documented... 7.2 MTU
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaq9/rzaq9lpp5770rpgwrapper.htm
"A non-qualified subfield or format cannot be qualified within a
subprocedure
It is not valid to use qualified notation, A.B, for subfields and record
formats that are not qualified. Before IBM® i 7.2, the compiler did not
always detect this error if the reference to the global subfield or record
format was in a subprocedure. Starting in 7.2, the compiler detects this
error and diagnostic: RNF7591 - An operand of a qualified name expression
is not valid is issued at compile time."
Bit us too :)
Charles
On Tue, May 1, 2018 at 4:26 PM, Joe Pluta <joepluta@xxxxxxxxxxxxxxxxx>
wrote:
I have a fun story to share and a question.
The fun story is that during our upgrade, we had a period where our
development machine was at 7.3 and our production machine was still at
7.1. We would compile on our development machine with TGTRLS(V7R1M0) in
order to install on production.
Well, now out machines are all at 7.3 and I removed the TGTRLS from our
compile commands. Everything was wonderful until today, when a program
that had compiled just fine wouldn't compile anymore. We were able to
trace the event to the upgrade and then I tracked down the line that was
failing.
Well, it was definitely a mistake on my part. I had originally created a
qualified externally described data structure but then changed it to
unqualified. No problem, except I forgot to remove the qualification on a
couple of lines of code:
saveMYFIELD = dsName.MYFIELD;
The fun bit is that those lines still compiled! It's a large, complex
program with lots of strange behavior in it, and something particular to
the source allows that to happen, because if I try it with a shorter
program (to try to isolate the issue) I can't get it to compile; I keep
getting error RNF7030 saying "MYFIELD" is not defined. It's only under a
very specific (and currently undefined) set of conditions that this line of
incorrect code compiles (and works!).
And whatever that edge condition was in the 7.1 version of the compiler,
it's been fixed in 7.3. Weirdly, I don't get the error I expect .
Instead, I get an unfamiliar RNF7591 error saying "An operand of a
qualified name expression is not valid". So those lines of code have to be
fixed, which is perfectly fair.
The question I have is whether this sort of behavior - where IBM fixes a
loophole - is documented somewhere. I haven't been able to find it
anywhere online, but I suspect I may have to dig in somewhere else. If
anybody knows where I can look, please let me know.
Thanks!
--
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: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://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 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.