Re: CCSID - RPG issues

Gad Miron <[email protected]> Thu, 26 Feb 2026 15:02:05 +0200
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <CAFj_=c35At1kWq8yfb4_3Zmg8+sB-WauRoidXzPq4=7SBkQDcQ@mail.gmail.com>
Hello Birgitta, cesco
Glad to have you aboard (-:

I reduced the skeleton RPG program that I'm testing to the following :


FNMMLIMPF  if   e           k DISK    EXTDESC('URPS/NMMLIMPF')
F                                                      EXTFILE(*EXTDESC)
F                                                      DATA(*NOCVT)

           dcl-ds ds_NMMLIMP likerec(NMMLIMPR) ccsid(*exact)

           SRCFILEID = 36932 ;
           CATLOG = '9OZUjyrCZ_Q' ;

           chain (SRCFILEID : CATLOG) NMMLIMPF ds_NMMLIMP ;

C                   eval      *INLR = *ON

comparing ds_NMMLIMP.ITEMNAME in debug to the data in the file shows the
RPG data  to be incorrect .
other fields (SRCFILEID, COMPNY, CATLOG...) seems correct.

a condensed DDS for NMMLIMPF is
A          R NMMLIMPR
A            SRCFILEID      7P 0
A            COMPANY       3A         ALWNULL
A            CMPTYP          2A
A            CATTYP           1A
A            CATLOG         32A        ALWNULL
A            ITEMNAME     512       ALWNULL
A                                                 VARLEN(30)
A                                                 CCSID(1208)
.
.
.
A          K SRCFILEID
A          K CATLOG


and as I mentioned,
Retrieving this ITEMNAME value and using it to update a Name field in
another file
Works fine when done by SQL.






> date: Thu, 26 Feb 2026 08:40:50 +0100
> from: "Birgitta Hauser" <Hauser-bRAHsVz2yv4TVIZRl6KS/[email protected]>
> subject: RE: CCSID - RPG issues
>
> Without having seen your program and H- and D-Specifications for defining
> your data structures ... it is hard to say what happened.
> ... but per default is everything converted into the Job CCSID, so the
> Hex-Value in your program (CCSID 37) can differ from the hex-Value in your
> file (CCSID 1208)
>
> In RPG when using native I/O in a cyclic Main procedure without output
> into a data structure, RPG generates automatically I/O Buffer (but the
> character data are converted into JOBCCSID).
>
> If you want to avoid this, you have to read your data into a data
> structure, but you have to suppress any conversion.
> This can be done by adding the Keyword DATA(*NOCVT) to the file in the
> F-Specs and CCSID(*EXACT) to the Data structure Definition.
> With DATA(*NOCVT) are the file data is not converted when reading the data
> With CCSID(*EXACT) the (unconverted) read data is moved unconverted into
> the data structure.
>
> Example:
> DCL-F MyFile Keyed Data(*NoCvt);
> DCL-DS OutputDS ExtName('MYFILE': *ALL) CCSID(*EXACT) END-DS;
>
> Mit freundlichen Gr??en / Best regards
>
> Birgitta Hauser
> Modernization ? Education ? Consulting on IBM i
> Database and Software Architect
> IBM Champion since 2020
>
>
> ------------------------------
>
> date: Thu, 26 Feb 2026 09:15:36 +0000 (UTC)
> from: cesco via RPG400-L <[email protected]>
> subject: Re: CCSID - RPG issues
>
>  Impossible to know without a minimally reproducible example.Your hex dump
> are a mix of french ccsid ebcdic and utf8.I personally just use UTF16 in
> files , put H CCSID(*UCS2:*UTF16) in the header , varucs2 for any internal
> var and all works idiomatically even in stock native io without any? other
> particular provisions.
> ciau
>
>
>
>
>
-- 
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.