conversion ASCII EBCDIC montants négatifs

IBM i, configuration, commandes, ...
Répondre
PGG57
Messages : 33
Enregistré le : jeu. 11 févr. 2010, 10:42:59
Localisation : Nancy

conversion ASCII EBCDIC montants négatifs

Message par PGG57 »

Je rencontre un problème de conversion ASCII vers EBCDIC des
zones numériques négatives. J'utilise la commande CPYFRMSTMF pour transférer un fichier de l'IFS vers un fichier base de données.
Les montants dont le dernier chiffre est un zéro sont convertis avec le caractère { pour les montants positifs et } pour les montants négatifs.
Le programme RPG se plante donc avec une erreur donnée décimale.

Quelqu'un a-t-il une solution ?

cimmelé
Messages : 34
Enregistré le : mer. 28 mars 2007, 21:57:59
Localisation : Rennes(35)
Contact :

(sans texte)

Message par cimmelé »

Bonjour,

On a tous plus ou moins cherché un jour ou l'autre sur ce type d'anomalie, qui dépend du type d'encodage utilisé pour le fichier PC, le CSSID du fichier destination sur le system i...

Pour ma part, quand j'ouvre un fichier .csv à importer sous notepad++, je vois un encodage ANSI.

Nous utilisons plus facilement la commande CPYFRMIMPF comme :

CPYFRMIMPF FROMSTMF(&CHEMIN)
TOFILE(QTEMP/WPRO025)
MBROPT(*REPLACE)
RCDDLM(*ALL)
STRDLM(*NONE)
RMVBLANK(*BOTH)
FLDDLM(';')
DECPNT(*COMMA)
RPLNULLVAL(*FLDDFT)

Est-ce que enfin vous avez fait un essai en précisant le paramètre dans la commande CPYFRMSTMF :

STMFCCSID(*PCASCII)

Cordialement,

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

CCSID et genération de fichiers dans l'IFS

Message par cmasse »

Pensez aussi à regarder le CCSID du fichier. (DSPFD)

Est-il à 65635 ? si non, quel est la valeur rencontrée ? que contient la sysval QCCSID ?
Christian Massé (Volubis.fr)

PGG57
Messages : 33
Enregistré le : jeu. 11 févr. 2010, 10:42:59
Localisation : Nancy

(sans texte)

Message par PGG57 »

Bonjour,

Le fichier de destination a un CCSID égal à 65535.

La commande CPYFRMSTMF s'exécute bien avec STMFCODPAG(*PCASCII).

La seule solution que j'ai trouvé est de passer un programme RPG qui change le dernier caractère des montants égaux à { ou } en une valeur correcte +0 ou -0

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

CCSID 65535

Message par cmasse »

Le CCSID 65535 indique........... qu'il n'y a pas de CCSID ou plutôt qu'il est inconnu. Le mieux est alors de renseigner le paramètre DBFCCSID de la cde CPYFRMSTMF à 297 (pour EBCDIC Français)
Christian Massé (Volubis.fr)

Répondre