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



Yup, this is the issue. Using %subarr on the left side of the expression is basically saying "set every element of the subarray to the value on the right". Since the array elements are one character in length, it will set every element in the subarray to the value of the first character. Had the array been two-character elements, each would have gotten "UN".

The only way to do what you're trying to do is to redefine the array as a character value and then set the substring in the character value. You can do it with a data structure:

D myDS ds
D Arr 1 dim(1000)

Basically Arr and myDS are names for the same spot in memory. Then you just do:

%SubSt(myDS: Position: WkLength) = WkValue


Ta da!!!

Joe

Is Arr defined as an array of 1 byte elements? Did I miss that in the OP?

If so, this could be done:

X = 11;
For i = 1 to %len( WkValue );
Arr(x) = %subst( WkValue: i: 1 );
X += 1;
EndFor;

-Kurt

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Gqcy
Sent: Tuesday, June 26, 2012 8:53 AM
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Use Of %SubArr

Kurt,
when I try this I wind up with:
Arr =
' U'


On 6/26/2012 8:42 AM, Anderson, Kurt wrote:
What you want, I believe, is:
Arr(Position) = WkValue;

This is the same as
Eval Arr(Position) = WkValue;

You can even try this in fixed format with Eval as the opcode.

-Kurt

-----Original Message-----
From: rpg400-l-bounces@xxxxxxxxxxxx
[mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Robert Munday
Sent: Tuesday, June 26, 2012 8:16 AM
To: RPG400
Subject: Use Of %SubArr

Greetings from the sunny south.


One of my fellow programmers is trying to move a character field to the interior of an array. This is being attempted in /Free and is not generating the correct result.

In fixed format, this is the expression which works (as it always has):


Position = 11

WkValue = 'UN2367, '

MoveA WkValue Arr(Position)

It yields the desired result: ' UN2367, '


This does not work:

WkLength = 8

%SubArr(Array: Position: WkLength) = WkValue

It yields: ' UUUUUUUU '


The array is receiving only the first character of the character field `UN2367`. What is causing this to occur and how can it be fixed to obtain the correct result?


Thanks,



Robert Munday
Munday Software Consultants
Montgomery, AL


--
This is the RPG programming on the IBM i / System i (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 / System i (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 ...

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.