Forum iSeries, hébergé par xdocs400.com

As400, iSeries, i5, System i, une machine qui évolue pour être de plus en plus puissante.

Vous n'êtes pas identifié(e).

Annonce

ATTENTION : Le système anti-spam est à nouveau opérationnel. Nous avons réactivé les inscriptions.

#1 2018-07-31 10:50:52

tomdarbon
Membre
Inscription : 2007-03-01
Messages : 287

Pb de CCSID lors d'un CPY suivi d'un CPYTOIMPF

Bonjour,

Je dois transférer un fichier DB2 contenant des zones de type CHAR ainsi que des zones de type numériques, vers un fichier CSV, en insérant préalablement une ligne indiquant le descriptif des champs (entetes de colonnes).
La ligne des entetes de colonnes est un fichier CSV : noms encadrés par des double-quotes et séparateur point-virgule. Exemple : "NOM_CLIENT";"MONTANT_CREDIT"; etc......

J'enchaine les commandes suivantes:

CPY        OBJ('/HOME/entetes.csv') +             
                 TOOBJ('/HOME/fichierfinal.csv') +     
                 TOCCSID(297) REPLACE(*YES)                 

CPYTOIMPF  FROMFILE(fichierDB2) +                             
                   TOSTMF('/HOME/fichierfinal.csv') +   
                   MBROPT(*ADD)     STMFCCSID(*PCASCII) +     
                   STMFAUT(*INDIR) RCDDLM(*CRLF) +           
                   STRDLM(*NONE) FLDDLM(';') DECPNT(*COMMA)   

Les commandes CPY et CPYTOIMPF fonctionnent parfaitement seules.

Mais si je les enchaine,  lors du CPYTOIMPF j'ai un message d'erreur m'indiquant code raison 1: problème de CCSID.

Si j'indique STMFCCSID(*STMF), la commande fonctionne sans erreur mais les données sont mal traduites ("hiéroglyphes") dans le CSV.

Bref, je ne m'en sors pas.

Avez-vous une solution ?

Tom

Hors ligne

#2 2018-07-31 14:00:45

Domi34
Membre
Lieu : Montpellier
Inscription : 2012-11-17
Messages : 72
Site Web

Re : Pb de CCSID lors d'un CPY suivi d'un CPYTOIMPF

Bonjour,

Ta première commande (TOCCSID(297)) crée le fichier csv avec un CCSID de 297 (EBCDIC).

La seconde (STMFCCSID(*PCASCII)), essaye d'ajouter les données avec un CCSID PC (1252 pour Windows occidental). Donc problème !

Je pense que tu devrais remplacer le 297 du CPY par un *PCASCII.

Dominique.

Hors ligne

#3 2018-07-31 14:05:52

tomdarbon
Membre
Inscription : 2007-03-01
Messages : 287

Re : Pb de CCSID lors d'un CPY suivi d'un CPYTOIMPF

Ah oui, effectivement !

Merci Domi34, çà fonctionne !

[Resolu]

Hors ligne

#4 2018-07-31 15:02:11

remit
Membre
Inscription : 2007-02-25
Messages : 228

Re : Pb de CCSID lors d'un CPY suivi d'un CPYTOIMPF

Noter que depuis Ibm i 7.1, CPYTOIMPF inclut un nouveau mot-clé ADDCOLNAM qui, lorsqu'il est activé, ajoute au fichier résultat une ligne d'entête composée des noms de colonnes de la table d'origine de la commande.

S'il s'agir d'une table créée par SQL, on peut choisir les noms de colonnes SQL (par ADDCOLNAM(*SQL)) pour entête.

Hors ligne

Pied de page des forums