|
Use a DS if the num3 is always the last 3 positions. D ds Dchar10 10a Dnum3 3s 0 overlay(char10:8) /free char10='aaaaaaaaaa'; num3=123; // result is aaaaaaa123 Thanks, Tommy Holden -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Lim Hock-Chai Sent: Wednesday, November 15, 2006 11:00 AM To: RPG programming on the AS400 / iSeries Subject: RE: evalr pad 0 What if char10 already has a value of 'aabbccddee' and I want the result to be aabbccd123, assuming that num3 has a value of 123. Below is what I came up with. Anything easier than below? %subst(char10 :%len(char10)-%len(num3)+1 :%len(num3)) = %editc(num3 :'X'); or char10 = %subst(char10:1:%len(char10)-%len(num3)) + %editc(num3 :'X'); -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Holden Tommy Sent: Wednesday, November 15, 2006 10:53 AM To: RPG programming on the AS400 / iSeries Subject: RE: evalr pad 0 As someone else suggested (forgot who...) I would go with: /free evalr char10 = %editc(num3:'X'); char10 = %xlate(' ':'0':char10); Thanks, Tommy Holden -----Original Message----- From: rpg400-l-bounces+tommy.holden=hcahealthcare.com@xxxxxxxxxxxx [mailto:rpg400-l-bounces+tommy.holden=hcahealthcare.com@xxxxxxxxxxxx] On Behalf Of Lim Hock-Chai Sent: Wednesday, November 15, 2006 10:11 AM To: RPG programming on the AS400 / iSeries Subject: RE: evalr pad 0 Thanks. Strange that compiler error out when do below "evalr char10 = *all'0' + %editc(num3 :'X');" Any suggestion on evalr without blank out the left? -----Original Message----- From: rpg400-l-bounces@xxxxxxxxxxxx [mailto:rpg400-l-bounces@xxxxxxxxxxxx] On Behalf Of Wayne McAlpine Sent: Wednesday, November 15, 2006 9:20 AM To: rpg400-l@xxxxxxxxxxxx Subject: Re: evalr pad 0 This also will give you what you want: /free char10=*all'0'; evalr char10=char10 + %editc(num3:'X'); /end-free Lim Hock-Chai wrote:
Question 1: just curious as why compiler would give me this error
below?
*RNF7421 30 5 000500 Operands are not compatible with the
type
of operator. D num3 s 3 0 inz(123) D char10 s 10 /free evalr char10 = *all'0' + %editc(num3 :'X'); *inlr = *on; /end-free Question 2: Without hardcode length of any field, anybody know of an easier way to evalr without pad blank on the left ()? Below is what I came up with and they are kind of ugly: %subst(char10 :%len(char10)-%len(num3)+1 :%len(num3)) = %editc(num3 :'X'); or char10 = %subst(char10:1:%len(char10)-%len(num3)) + %editc(num3 :'X');
-- This is the RPG programming on the AS400 / 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. -- This is the RPG programming on the AS400 / 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.