Pb encodage d'un fichier sur l'ifs

RPG (3 et 4, free), CL, SQL, etc...
Répondre
Annieg
Messages : 13
Enregistré le : mer. 14 oct. 2020, 15:15:09

Pb encodage d'un fichier sur l'ifs

Message par Annieg »

Bonjour,

Mon but est de créer un fichier .TXT en ccsid 819 sur l'ifs. Le fichier est bien en CCSID 819 mais son contenu ne me convient pas. Voici le résultat obtenu :
Capture.PNG
Capture.PNG (9.12 Kio) Vu 11620 fois
Des caractères 'bizarres' apparaissent. Quelles solutions pour les faire disparaître ?

Voici plusieurs exemples de code :

Exemple 1 correspondant au résultat
// ouverture du fichier sur l'ifs
mode = RW*OWNER + RW*GROUP + R;
fd = open (%trim(pathFile)
:O_TRUNC+O_CREAT+O_WRONLY+O_CODEPAGE
:mode
:819);

// fermeture du fichier sur l'ifs
close(fd)

// Réouverture de ce même fichier en mode texte
fd = open (%trim(pathFile)
:O_WRONLY+O_TEXTDATA);

// Ecriture dans le fichier
endOfLine = x'0d25' ==> début et fin de paragraphe.
wrecord = endOfLine + %trimr(wTexteCorpsMail) + endOfLine;
writeline (fd: %addr(wrecord): %len(%trimr(wrecord)));

Exemple 2 : autre exemple ou le résultat n'était pas satisfaisant
// Ouverture du fichier
fd = open (%trim(pathFile)
:O_TRUNC+O_CREAT+O_WRONLY+O_CCSID
:S_IWUSR+S_IRUSR+S_IRGRP+S_IWGRP+S_IROTH+S_IWOTH
:819);

// Conversion du texte car le wTexteCorpsMail est une zone d'un fichier en CCSID 1208
wtexte1208= %trimr(wTexteCorpsMail);
convert(1208
:819
:wtexte1208
:wtexte819
);
// Ecriture dans le fichier
writeline (fd: %addr(wtexte819): %len(%trimr(wtexte819)));

Merci pour votre aide.

monthi
Messages : 79
Enregistré le : mar. 11 sept. 2018, 15:37:02
Localisation : Paris

Re: Pb encodage d'un fichier sur l'ifs

Message par monthi »

Bonjour

Serait il possible d'avoir la valeur hexa de la zone wTexteCorpsMail ?

Cdlt

Annieg
Messages : 13
Enregistré le : mer. 14 oct. 2020, 15:15:09

Re: Pb encodage d'un fichier sur l'ifs

Message par Annieg »

Voici le contenu en hexa des zones' :
Capture1.PNG
Capture1.PNG (30.65 Kio) Vu 11607 fois

Hurri
Messages : 44
Enregistré le : lun. 02 nov. 2020, 16:04:59

Re: Pb encodage d'un fichier sur l'ifs

Message par Hurri »

Bonjour,
La question que je me pose de mon côté, est, avec quoi visualisez-vous le fichier texte ?
Parce que ce qui semble être des caractères "bizarres", me semble moi, être les caractères de contrôle, à savoir les sauts de ligne insérés par le code.

monthi
Messages : 79
Enregistré le : mar. 11 sept. 2018, 15:37:02
Localisation : Paris

Re: Pb encodage d'un fichier sur l'ifs

Message par monthi »

Bonjour

je ne vois pas de carcetère bizarre dans le variable.

Est il possible d'avoir le contenu du fichier IFS en hexa

Cdlt

Annieg
Messages : 13
Enregistré le : mer. 14 oct. 2020, 15:15:09

Re: Pb encodage d'un fichier sur l'ifs

Message par Annieg »

Bonjour,
Merci pour vos retours.
Après de multiples essais, voici ce qui fonctionne :
Oflag = O_CREAT+O_RDWR+O_CODEPAGE;
fd = openIFS(%addr(pathFile)
:Oflag
:M_RWX
:819);

if fd >= 0;
// La création du fichier sur l'ifs s'est terminée sans erreur
// On ferme et on ouvre à nouveau le fichier sur l'ifs en mode convertion data

closeIFS(fd);

Oflag = O_WRONLY+O_TEXTDATA;
fd = openIFS(%addr(pathFile)
:Oflag
:M_RWX
:819);

// Pas d'erreur ouverture du fichier sur l'ifs. Lecture du texte stocké dans un fichier (ccsid 297) et écriture dans le fichier .txt (ccsid 819)
if fd >= 0;
// Lecture du fichier contenant wTexteCorpsMail (ccsid 297)
// Ecriture
text = %trimr(wTexteCorpsMail) + endOfLine;
writeIFS(fd
:%addr(text)
:%len(%trimr(text)));

Répondre