It works because the %subarr() BIF has three parameters. The third is optional and tells how many to select. If the third parameter is blank it selects the remainder of the array. So the move looks like this:

check element 5 - skip
check element 4 - blank, move all elements 5,6 to elements 4,5,6.
etc.

This is a lot like the memcpy that Dennis proposed, but with less code.

I still like the solution I commented on earlier since that method will move a given element only once, while this solution is going to step the elements together one step at a time, and could therefore move a given element more than once. In this case element 3 gets moved once, and elements 5 and 6 each get moved twice. Now the difference between 3 element moves and 5 element moves is negligible, but as the array gets larger, the disparity gets larger.

Mark Murphy
STAR BASE Consulting, Inc.
mmurphy@xxxxxxxxxxxxxxx

-----rpg400-l-bounces@xxxxxxxxxxxx wrote: -----
To: RPG programming on the IBM i / System i <rpg400-l@xxxxxxxxxxxx>
From: "Morgan, Paul"
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
Date: 04/28/2011 09:25AM
Subject: RE: Filling an array from the first occurrence on down

Alan,

It does work.  The sixth element does not remain.  You don't need to test the last element.  You just need to test the previous entries and shift the array down if they are blank.  The last element is set to blank as part of the assignment because you're assigning a smaller array to a larger array.

Paul Morgan

Principal Programmer Analyst
IT Supply Chain/Replenishment

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Alan Shore
Sent: Wednesday, April 27, 2011 5:06 PM
To: RPG programming on the IBM i / System i
Subject: RE: Filling an array from the first occurrence on down

Thanks for the reply, but I don't think that this logic would work for the following scenario
1 line A
2
3 line B
4
5 line X
6 line E
The 6th occurrence would remain , when the end result that is wanted is
1 line A
2 line B
3 line X
4 line E

Alan Shore
Programmer/Analyst, Direct Response
E:AShore@xxxxxxxx
P:(631) 200-5019
C:(631) 880-8640
"If you're going through Hell, keep going" - Winston Churchill


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Morgan, Paul
Sent: Wednesday, April 27, 2011 4:27 PM
To: RPG programming on the IBM i / System i
Subject: RE: Filling an array from the first occurrence on down

How about:

For X = %Elem( Line ) - 1 downto 1;                        
    If Line( X ) = *Blanks;                                
       %SubArr( Line : X ) = %SubArr( Line : X + 1 );      
    EndIf;                                                  
EndFor;                                                    

Paul Morgan

Principal Programmer Analyst
IT Supply Chain/Replenishment


-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Alan Shore
Sent: Tuesday, April 26, 2011 2:21 PM
To: 'rpg400-l@xxxxxxxxxxxx'
Subject: Filling an array from the first occurrence on down

Hi everyone
I'm having one of those days where no matter what I do, I just cannot get my head around what should be a simple problem Hopefully someone is kind enough to provide an answer I have an array
D LINE            S             30    DIM(6)

Data can be in any combination of the occurrences (or none at all) I need to create logic so that data is moved down to fill in from the first, through the second, then third etc., until the only blanks are in the trailing occurrences

Hopefully I explained it correctly, here is an example
1
2    data 1
3
4
5   data here
6  f=data 2

Becomes
1 data 1
2 data here
3 f=data 2
4
5
6
NOTE - I don't want the information sorted, just moved up As always, any and all responses gratefully appreciated

Alan Shore
Programmer/Analyst, Direct Response
E:AShore@xxxxxxxx
P:(631) 200-5019
C:(631) 880-8640
"If you're going through Hell, keep going" - Winston Churchill

--



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.