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



A %lookup binary search on an unsorted array might give you unexpected results since so many rows are not even looked at with a binary search. If a high row is an a low region of the array, it will never be found. And vice-verse.

I wonder what happens if you do a SORTA on Exchange after every fill of the array? fwiw, here is how I did it.

SORTA keeps each row together regardless of which field is used for sorting.
...
d ds
d arD dim(350)
d arID# like(S1NAID#) overlay(arD)
d arCOMP like(S1NACOMP) overlay(arD: *next)
d arLAST like(S1NALAST) overlay(arD: *next)
d arFIRST like(S1NAFIRST) overlay(arD: *next)
d arCITY like(S1NACITY) overlay(arD: *next)
d arPHON like(S1NAPHON) overlay(arD: *next)
...

(Sorry, I do not have access to a machine that understands free-form D specs.)

As I understand it, V7R1 has SORTA(A) and SORTA(D) extenders available.

Here is a screen shot I just posted Of the search-then-sort:
http://martinvt.com/SQL_-beginers-/Sorting_Subfile/sorting_subfile.html

On 11/25/2015 12:50 AM, Alan Campin wrote:
The data structure is dynamic. It get allocated for the amount of storage
it needs. Sorry should have removed it. Just adds complexity. I could just
say.

dcl-ds ExcTariffDS Qualified Dim(1000);

Exchange Zoned(6:0);

Tariff Char(3);

end-ds;


Idx = %Lookup(971002: ExcTariffDs(*).Exchange);


As far as I know, RPG will only do a binary search if you use the ASCEND or
DESCEND keyword. I am trying to see if there is a way to tell the compiler
to do a binary search on Exchange. I don;t think there is.


I could define it like this but again I don't think it is doing a binary
search on Exchange.


dcl-ds ExcTariffDs;

ExcTariffArr Ascend Dim(1000);

Exchange Zoned(6:0) Overlay(ExcTariffArr:*Next);

Tariff Char(3) Overlay(ExcTariffArr:*Next);

end-ds;


Idx = %Lookup(971002: Exchange);




On Tue, Nov 24, 2015 at 7:05 PM, Booth Martin <booth@xxxxxxxxxxxx> wrote:

I am not sure I understand the issue. The Subject says "Ascend and data
structure lookups." %lookup normally does binary searches on
ascend/descend arrays. It isn't clear how LoadedCount is a help, and it
might be a real problem with a Ascend array?


On 11/24/2015 7:47 PM, Alan Campin wrote:

Given the following data structure, is there anyway to have it do a binary
search on the lookup?

dcl-ds ExcTariffDS Qualified Dim(32766) Based(ptrExcTariffDs);

Exchange Zoned(6:0);

Tariff Char(3);

end-ds;


Idx = %Lookup(971002: ExcTariffDs(*).Exchange:1:LoadedCount);

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