Re: CCSID - RPG issues

Barbara Morris <[email protected]> Tue, 24 Feb 2026 09:29:25 -0500
Newsgroups gmane.comp.lang.as400.rpg
Organization IBM
Message-ID <[email protected]>
On 2026-02-24 8:56 a.m., Gad Miron wrote:
> ... 
>     // take first 128 chars of Item Description
>          ds_NMWRKR.ITEMNAME8 = %subst(ds_NMMLIMP2.ITEMNAME :1 : 128) ;
> 
>      // Update map file - target
>           update NMWRKR ds_NMWRKR  ;
> 
> C                   eval      *INLR = *ON
> 
> The update works but the value placed in ITEMNAME8 is erroneous
> ...
In debug, does ds_NMMLIMP2.ITEMNAME look correct before the %subst? Does 
it have UTF8 data? (look at the hex value of the field in the debugger)

Does ds_NMWRKR.ITEMNAME8 look correct after the %subst?

Is it always incorrect? Or does the problem only happen with some values?

Using %subst with UTF8 data has the potential to only pick up the first 
byte of a 2-byte character unless you are using the new CHARCOUNT 
NATURAL support.

https://www.ibm.com/docs/en/i/7.5.0?topic=functions-subst-get-substring

https://www.ibm.com/docs/en/i/7.5.0?topic=cdt-processing-string-data-by-natural-size-each-character

(I should update that pdf document to talk about the CHARCOUNT support 
that was added in 7.4 and 7.5 with PTFs.)

-- 
Barbara

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

Please contact support-FMtJrHiV//lnDLsaKlm4mFaTQe2KTcn/@public.gmane.org for any subscription related questions.