|
Barbara,
This is the code fragment I found. I thought you had sent it to me. Am I
mistaken?
* See QSYSINC/MIH members CVTEFN, MICPTCOM
D T_PACKED C x'03'
D DPA_Template DS
D DPA_type 1A inz(T_PACKED)
D DPA_len 5I 0 Inz(0)
D DPA_decpos 3I 0 overlay(DPA_len:1) inz(9)
D DPA_length 3I 0 overlay(DPA_len:2) inz(30)
D DPA_res 10i 0 inz(0)
D num S 30p 9
D cvtefn pr extproc('_CVTEFN')
D rcvr * value
D rcvrAttr like(DPA_Template) const
D src 100a const
D srcLen 10u 0 const
D mask 3a const
D currency_comma_dec...
D c '$,.'
C *entry plist
C parm string 32
C callp cvtefn (%addr(num)
C : dpa_template
C : %trim(string)
C : %len(%trim(string))
C : currency_comma_dec)
C eval msg = %char(num)
C dsply msg 52
C return
Bob Cozzi
cozzi@rpgiv.com
Visit the on-line Midrange Developer forum at: http://www.rpgiv.com
> -----Original Message-----
> From: rpg400-l-admin@midrange.com [mailto:rpg400-l-admin@midrange.com]
On
> Behalf Of bmorris@ca.ibm.com
> Sent: Friday, January 11, 2002 12:18 PM
> To: rpg400-l@midrange.com
> Subject: Re: Re: Basing a field on an unreferenced field(s) doesn't
work
>
>
> >From: rob@dekko.com
> >Date: Fri, 11 Jan 2002 11:24:29 -0500
> >
> >Yes it does matter if the file field is unreferenced.
> >If I reference the individual file fields then the array elements
will
> also
> >work.
> >My argument is that just by defining an array over the fields with
the
> >pointer address should be enough.
> >Or is there some compiler option to say just bring the fields into
memory,
> >such as a don't optimise?
>
> Rob, specify DEBUG(*YES) in your H spec. That will cause all I specs
to
> be moved to program fields even if the program fields aren't used (but
> that might be have a bigger impact than you want if you have lots of
> unused fields in your files).
>
> Defining the array over the fields with a pointer address should
indeed
> be enough, as long as the fields are "officially" contiguous. But
they
> are not officially contiguous unless they are in a data structure.
>
> From a later post:
> >I've heard this before "You are also assuming that consecutive fields
in a
> >file are stored in consecutive memory location which is not always
the
> >case." But I've seen no examples.
>
> You shouldn't need an example of a case where the fields are not
> contiguous.
> The fact that it is not guaranteed should be enough to stop you from
> assuming they will be contiguous. Undefined behaviour can change at
> any time, from release to release or even from PTF to PTF. (Go and
stand
> in
> the corner! :)
>
> A trivial case where the fields won't be contiguous is where you
> have explicitly coded them in separate data structures:
>
> D ds1 ds
> D x
> D ary1
> D y
> D ds2
> D z
> D ary2
>
> The current RPG compiler generates field definitions in alphabetical
> order, I think. So having the fields out of alphabetical order would
> probably be certain to put them out of storage order. But the
compiler
> doesn't actually map fields to storage. The component that does map
> out the storage might decide to take ARY1 and stick it in some little
> empty spot created by some boundary alignment thing, way far away from
> ARY2.
>
> Barbara Morris
>
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing
list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> 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-2025 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.