|
The most annoying thing about this feature is that it makes it seem as
though it's possible to have a local variable based on a global pointer.
It compiles fine, but the compiler defines a local pointer with the
same name, leading to mysterious problems which can be very difficult to
debug.
On 11/24/2010 10:05 AM, BMay@xxxxxxxxx wrote:
What is happening is, since the DS will only be used as a template for
other DS's using LikeDS(), basing the DS on an implicitly defined (null)
pointer just keeps the storage for that DS from being allocated. Since
that template DS will never actually be used, there is no reason to waste
the memory to allocate storage for it.
Just an ad and/or reminder about the TEMPLATE keyword (new in v6r1).
Use TEMPLATE instead of BASED(@) or BASED(Template) or whatever. It's
clear for readers of the code. And if someone accidentally tries to use
the template in calculations, they get a compile time error instead of a
pointer-not-set error at runtime.
TEMPLATE has an added bonus over BASED that you can code INZ for a
template DS, enabling INZ(*LIKEDS) to be used on LIKEDS definitions.
--
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 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.