|
On Nov 25, 2015, at 4:16 PM, Alan Campin <alan0307d@xxxxxxxxx> wrote:
Issue is not sort of data. Data is loaded by an SQL in key order. What I am
wanting to do is do a binary search on the data. I know it is in the right
order. A solution that I know works is to use bsearch. I was just trying to
figure out if IBM had a way to do the binary search on a lookup over a data
structure. As far as I know they don't. Just trying to see if someone has a
way to make it work.
On Wed, Nov 25, 2015 at 12:29 PM, Booth Martin <booth@xxxxxxxxxxxx> wrote:
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 storageThis is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
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
binaryThis is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
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);
--
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.
--
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.
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 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.