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



Well that would give you name in manager, which wasn't what was wanted. However the important thing is that no matter what you do SORTA can't do a multi-key sort - only a single key. Sometimes you can control the data by arranging it is a DS in the right order that you get the effect - but the same DS cannot be used for (say) name in manager.

The point I was trying to make was that if you want a DS array sorted on any arbitrary key combination the only utility answer is qsort().



On Dec 9, 2019, at 9:45 PM, mlazarus <mlazarus@xxxxxxxxxxxx> wrote:

Hi Jon,

Would this solve the problem?

Dcl-ds teams qualified dim(xx);
NameManager;
name varchar(25) Overlay(NameManager);
manager varchar(25) Overlay(NameManager: *Next);
End-ds;

SortA NameManager ;

-mark

On 12/9/2019 10:20 PM, Jon Paris wrote:
Yes - but ... SORTA can only handle one key in one array at a time.

In the IBM example there were two arrays one nested within the other. That allowed the outer layer to be sorted in manager sequence and then the inner layer to be sorted on name within that.

However had the array been structured like so:

Dcl-ds teams qualified dim(xx);
name varchar(25);
manager varchar(25);
End-ds;

i.e. the manager name and the employee name are pairs.

With this structure SORTA can _either_ sort in name order _or_ in manager order. It cannot sort in name in manager sequence. qsort could - but not SORTA.




On Dec 9, 2019, at 9:08 PM, Booth Martin<booth@xxxxxxxxxxxx> wrote:

Thank you. That helped. I am loading the array wrong.

Now I have to figure out how to load the array.

Then it is possible and relatively easy to sort several fields with SORTA? If the array is properly constructed?


On 12/9/2019 8:44 PM, Jon Paris wrote:

What is confusing you Booth?

There is an outer array of managers. Each of the manager elements consists of the managers name and a DS array of their employees. Each element of that emps array has the persons name.

To sort it employee in manager sequence you must first order the outer elements (manager) and then order the employees within each manager. Hence the nested for loops.

Maybe the structure of the data would be clearer if translated to current dcl capabilities? Like so:


Dcl-ds teams QUALIFIED DIM(2)
manager varchar(25);
Dcl-ds emps Dim(2);
name varchar(25);
End-ds umps;
End-ds teams;




On Dec 9, 2019, at 8:33 PM, Booth Martin<booth@xxxxxxxxxxxx> wrote:

I am trying to follow the instructions but getting helplessly confused.

section from the manual: |SORTA (Sort an Array)<https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/rzasd/zzsorta.htm>|

"...|||// Sort the TEAMS array first by the MANAGER subfield |

|// and then by the EMPS.NAME subfields *SORTA teams(*).manager; for i = 1 to %ELEM(TEAMS); SORTA teams(i).emps(*).name; endfor;* // After the first sort, by MANAGER: ..." ---------------------------------------------- This says that we can sort fields within fields with a simple loop? |

--
Booth Martin
www.martinvt.com
(870)576-9371
(802)461-5349

Decisions of the judges will be final unless shouted down by a really overwhelming majority of the crowd present. Abusive and obscene language may not be used by contestants when addressing members of the judging panel, or, conversely, by members of the judging panel when addressing contestants (unless struck by a boomerang). -- Mudgeeraba Creek Emu-Riding and Boomerang-Throwing Association
--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com

--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


--
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: RPG400-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related questions.

Help support midrange.com by shopping at amazon.com with our affiliate link: https://amazon.midrange.com


As an Amazon Associate we earn from qualifying purchases.

This thread ...

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.