|
Yes, use this all the time nowdays. Just pointer arithmetic. I used to use
occurs to move through a user space but know I just use pointer arithmetic.
For Example ( >> lines are the pointer
arithmetic). Note pointer arithmetic was added in later releases. V3R2?
d cFieldUserSpaceName...
d c const('FXFLDUSRSP')
d SpaceSize s like(StdIntSml)
d CurrentRecord s like(StdIntSml)
d inz(0)
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Field list mapped to user space FXFLDLIST in QTEMP.
d ptrFieldList...
d s like(StdPtr)
d dsFieldList...
d ds based(ptrFldList)
d ssFieldId like(StdInt)
d ssFieldType like(FDFLDTYPE)
d ssFieldLength...
d like(FDFLDLEN)
d ssFieldDecimalPositions...
d like(FDFLDDECP)
d ssInDateFormat...
d like(FDIDATEFMT)
d ssOutDateFormat...
d like(FDODATEFMT)
d ptrFieldUserSpace...
d s like(StdPtr)
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Get a pointer to the user space.
c eval ehResult = GetPtrToUsrSpc(
c
cFieldUserSpaceName:'QTEMP':ptrFieldUserSpace)
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Now read in all fields and build list for lookup.
c dou %eof(FXFLDDSC00)
c read FXFLDDSC00
c if not %eof(FXFLDDSC00)
c eval CurrentRecord = CurrentRecord + 1
>> c eval ptrFieldList = ptrFieldUserSpace +
>> c ((CurrentRecord - 1) *
%size(dsFieldList))
c eval ssFieldId = FDFIELDID
c eval ssFieldType = FDFLDTYPE
c eval ssFieldLength = FDFLDLEN
c eval ssFieldDecPositions = FDFLDDECP
c eval ssInDateFormat = FDIDATEFMT
c eval ssOutDateFormat = FDODATEFMT
c endif
c enddo
-----Original Message-----
From: Chris Bipes [mailto:rpg@cross-check.com]
Sent: Friday, January 14, 2000 12:38 PM
To: RPG400-L@midrange.com
Subject: RE: bsearch on partial array elements
Is it possible to subtract the ending pointer from the starting pointer to
see the byte count? I have not tried this and wonder if it is even possible
to use pointer in an expression such as
D P_to_Variable * Inz(%addr(Search_String))
D P_to_found *
C eval bytes = P_to_found - P_to_variable
Christopher K. Bipes Mailto:chrisb@cross-check.com
CrossCheck, Inc. http://www.cross-check.com
-----Original Message-----
From: David.Biggs@bernardmatthews.com
[mailto:David.Biggs@bernardmatthews.com]
Sent: Friday, January 14, 2000 5:55 AM
To: RPG400-L@midrange.com
Subject: Re: bsearch on partial array elements
Thanks Jon and others.
I knew about the basing pointers but wasn't sure what the C routine would
do
when comparing (in my case) a 30 byte key with a 37 byte element. I've tried
it
for myself and it works just fine.
I have another question though: in RPG LOKUP (or LOOKUP), you can specify a
field that is set to the element number of the search argument if the search
is
successful. The C 'bsearch' returns a pointer to the key value being sought,
not
its ordinal position in the array. This seems a bit stupid as I already know
what I'm looking for, what I want is whereabouts it is. Any way I can get
this
directly ?
Regards,
Dave
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator:
david@midrange.com
+---
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
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.