Vous avez vos sources coté IBMi qui sont le plus souvent stockés dans des fichiers sources QRPGLESRC et le CCSID est à 1147 (je reviens pas sur les dangers du 65635)
Vous décidez de placer, vos sources dans l’IFS et vous décidez d’adopter un (CCSID UTF-8 recommandé) ,voir Windows 1252.
C’est le sens de l’histoire pour giter par exemple
Le CCSID du source a un impact sur les constantes de votre programme RPGLE, à la compilation on va voir un exemple :
Les constantes étant basées sur le CCSID du source par défaut
Voici un programme
**free
ctl-opt dftactgrp(*no)
ccsid(*exact) // << clé : figer au CCSID de
;
dcl-c titre 'Tarif semaine dès 4 jours ? ' ; // Constante
dcl-s mots char(06) dim(3) ctdata perrcd(1); // tableau chargé à la
dcl-ds ds_texte ; // tableau de constante
*N Char(06) Inz('école' ) ; //
*N Char(06) Inz('garçon') ; //
*N Char(06) Inz('café ' ) ; //
texte char(06) dim(3) pos(1) ;
end-ds;
dcl-s i int(10);
// Affichage Résultat
dsply ('Constante : ' + titre);
for i = 1 to %elem(texte) ;
dsply ('Texte : ' + texte(i));
endfor;
for i = 1 to %elem(mots);
dsply (' CTDATA : ' + mots(i));
endfor;
*inlr = *on;
** CTDATA mots (3 lignes, codées avec accents)
école
garçon
café
Coté IBMi
Avec un ccsid 1147
CRTBNDRPG PGM(GDATA/SRCCCSID)
SRCFILE(GDATA/QRPGLESRC)
Vous obtenez ceci

Coté IFS
Avec un ccsid UTF-8
CRTBNDRPG PGM(GDATA/SRCCCSID)
SRCSTMF(‘SRCCCSID.RPGLE’)
Vous obtenez ceci

Vous perdez les caractères spéciaux
Vous avez une option de compile TGTCCSID qui fixe le CCSID à utiliser
donc on ajoute l’option
CRTBNDRPG PGM(GDATA/SRCCCSID)
SRCSTMF(‘SRCCCSID.RPGLE’)
TGTCCSID(1147)

L’affichage est correct
Conclusion :
Vous devez pouvez également utiliser *JOB dans la valeur de TGTCCSID(), à ce moment la vous aurez le même comportement dans les 2 cas.
t

