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



On Sat, 2015-01-17 at 09:23 -0500, Jon Paris wrote:
You’re right and wrong Jonathon.

LOOKUP never changed.

%Lookup has the capability you describe of doing a binary search instead of a linear - BUT - will only do so if the array has the ascend or descend keywords in effect. In other words if you tell it that the array is in sequence it takes advantage of that to speed the process. Without the keyword, LOOKUP and %Lookup behave the same way.

Thanks, I should have added in my post the clarification about the
addition of the ascend/descend.

However, the article I read (can't find it now) was on the mcpress site.
However I did find this one:-

http://www.bmeyers.net/faqs/15-faqs/43-lookup-function-with-ascend

Which outlined the same issue, namely that lookup differs from the
bif(s), one does an, I assume, sequential test match, the other a binary
search.




Jon Paris

www.partner400.com
www.SystemiDeveloper.com

On Jan 17, 2015, at 7:29 AM, Wilson, Jonathan <piercing_male@xxxxxxxxxxx> wrote:

On Thu, 2015-01-15 at 23:29 -0800, Gary Kuznitz wrote:
Hi Booth,

I tried your suggestion hours ago. I discovered the Lookup doesn't find the
EarnTypeS(x) unless they are loaded in sequence even though the indicator is on EQ.


I recall an article that stated that the lookup changed how it worked internally.

Instead of, in effect, a loop with test until an equal condition or end
of loop it instead tests for EQ at the mid way point, and if no match
then EQ then GT/LT and then testing the resulting subset (half of the
array) by EQ then GT/LT again, halving each time until the match, or
none, is found. There is a technical name for this type of search
(btree?) but it eludes me at the moment but it reduces the maximum
number of tests significantly... a 100 element array takes 7 steps, a
1000 element array takes 9 steps, but obviously the array must be sorted
prior to testing.


Thanks,

Gary

On 16 Jan 2015 at 0:31, Booth (Booth Martin <rpg400-l@xxxxxxxxxxxx>) commented
about Re: Lookup with Array:

At V5R3 I would probably do this:
D X 2 0
D EarnTypeS 3 Dim(50)
D HoursSum 12 2 Dim(50)
D PaySum 12 2 Dim(50)
...
C EarnTypeL Lookup EarnTypeS(x) 30
and then use arrays HoursSum(x) and PaySum(x)



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

Follow-Ups:
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.