IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

FTP vers AS400 code ASCII bizarre


Sujet :

AS/400

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut FTP vers AS400 code ASCII bizarre
    Bonjour à tous,

    Je souhaite transférer un fichier .TXT( put normal), apparemment en ASCII (a-t-on plusieurs types d'ASCII ?), mais une fois arrivé sur l'as400, je n'arrive pas à le visualiser correctement :

    mon fichier TXT
    STELLO_COLQUA|21|0|7|C9876|C1185|TITINA VENDOR|GROUPAMA PF1|2011-11-28|2012-01-01|EUR|1052-102|CARDS|6742-102|CREDIT CARDS|3738558.5802|3738558.5802|3738558.5802|3738558.5802|2012-04-06|2012-04-18||Collection|PRIMARY |3743997.0002|374.3997|10000.0000000000|1.0000000000

    Le résultat sur AS400 (voir fichier joint capture.png)

    Par contre, si je crée un document TXT vide avec notepad, et je copie le contenu de mon fichier TXT initial, puis je transfère vers l'as400, là c'est ok.

    Est-ce un pb du format ASCII de mon fichier initial ?

    Merci à tous pour votre réponse.
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Femme Profil pro
    Administrateur iSerie
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur iSerie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    Quel est le cssid de ton fichier sur l'AS/400 (8 devant ton fichier) ?
    Sinon lorsque tu te connectes par ftp , est-ce que tu tapes bien la commande ascii avant le put ?

    Bonne journée

    Marie

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par mlacanada Voir le message
    Bonjour,

    Quel est le cssid de ton fichier sur l'AS/400 (8 devant ton fichier) ?
    Sinon lorsque tu te connectes par ftp , est-ce que tu tapes bien la commande ascii avant le put ?

    Bonne journée

    Marie
    Mon cssid = 500, oui ascii avant le put, bizarre non ?

  4. #4
    Membre du Club
    Femme Profil pro
    Administrateur iSerie
    Inscrit en
    Novembre 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur iSerie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 20
    Points : 54
    Points
    54
    Par défaut
    Est-ce que tu utilises bien quote site namefmt 1 avant le put pour qu'il utilise la nomenclature de l'ifs et qu'il ne cherche pas à transférer en EBCDIC ?
    Peux-tu écrire l'ensemble de tes instructions et aussi si tu transfères depuis Windows ou Unix ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par mlacanada Voir le message
    Est-ce que tu utilises bien quote site namefmt 1 avant le put pour qu'il utilise la nomenclature de l'ifs et qu'il ne cherche pas à transférer en EBCDIC ?
    Peux-tu écrire l'ensemble de tes instructions et aussi si tu transfères depuis Windows ou Unix ?
    Connecté à SYSTEM.xxxxx.fr.
    220-QTCP at SYSTEM.xxxxx.FR.
    220 Connection will close if idle more than 5 minutes.
    ftp> user services services
    331 Enter password.
    230 SERVICES logged on.
    ftp> put YYYY_2013_03_20.TXT mybib/YYYY130320

    Je transfère depuis windows 7.
    Merci pour ton aide.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 55
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    L'application qui produit le fichier semble le faire plutôt en UTF-16 LE qu'en simple ASCII.
    Ça correspond au CCSID 1203 qui n'est pas supporté sur la machine sur laquelle je travail et donc peut-être pas la tienne.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par vazymimil Voir le message
    Bonjour,

    L'application qui produit le fichier semble le faire plutôt en UTF-16 LE qu'en simple ASCII.
    Ça correspond au CCSID 1203 qui n'est pas supporté sur la machine sur laquelle je travail et donc peut-être pas la tienne.
    et quelle serait la solution d'après toi ? je me vois mal faire la manip de créer un document vide, copier le contenu etc. manuellement, surtout que cela va être des échanges quotidiens.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 55
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par inpra Voir le message
    et quelle serait la solution d'après toi ? je me vois mal faire la manip de créer un document vide, copier le contenu etc. manuellement, surtout que cela va être des échanges quotidiens.
    Oui pardon je suis parti un peu en urgence

    tu peux essayer en faisant "quote type c 1203" avant le put mais ici ça ne marche pas le ccsid 1203 n'est pas supporté

    tu peux convertir le fichier sous windows avec powershell par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     gc -en Unicode in.txt | Out-File -en Ascii out.txt

  9. #9
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 689
    Points : 994
    Points
    994
    Par défaut
    Si c'est de l'UTF-16, çà doit pouvoir se traiter.
    Déjà il faudrait transférer ce fichier sur l'IFS, en binaire via FTP. A partir de là, on voit dans quel CCSID il est vraiment, et on pourra envisager des solutions.
    Le seul hic à ma connaissance concerne les UTF16 codés en Big-Endian ou Little-Endian. Le Little n'étant à priori pas supporté sur notre système. Mais il suffit alors de convertir le fichier (des API ainsi que des exemples existent), puis de le traiter.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    Si c'est de l'UTF-16, çà doit pouvoir se traiter.
    Déjà il faudrait transférer ce fichier sur l'IFS, en binaire via FTP. A partir de là, on voit dans quel CCSID il est vraiment, et on pourra envisager des solutions.
    Le seul hic à ma connaissance concerne les UTF16 codés en Big-Endian ou Little-Endian. Le Little n'étant à priori pas supporté sur notre système. Mais il suffit alors de convertir le fichier (des API ainsi que des exemples existent), puis de le traiter.
    J'ai fait un copier/coller du fichier vers l'IFS le CCSID me donne 850. avant le put j'ai fait quote type c 850 et le résultat est le même.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 689
    Points : 994
    Points
    994
    Par défaut
    Un copier / coller transforme le fichier puisque tu passes par l'interface du clipboard.
    Fais un ftp en mode binaire.

    Edit : mieux, si les données contenues ne sont pas sensibles, peux tu me transmettre le fichier txt ?

  12. #12
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Bonjour.

    Amha le plus simple est de faire une conversion en local en batch sous Windows comme le préconise vazymimil,ou de demander à l'application qui génère le fichier de le faire en ASCII. J'ai rencontré ce problème il y a fort longtemps et c'est l'une et l'autre des solutions qui ont été utilisées.

    Il y a une API sur l'AS/400, dont je ne rappelle plus le nom, qui fait de la conversion entre CCSID. Scott Klement a fait un écrit là dessus.

  13. #13
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 689
    Points : 994
    Points
    994
    Par défaut
    C'est QlgTransformUCSData().

    Et sinon, ne mettons pas la charrue avant les bœufs, assurons nous du fichier de départ.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par m4k-Hurrican Voir le message
    C'est QlgTransformUCSData().

    Et sinon, ne mettons pas la charrue avant les bœufs, assurons nous du fichier de départ.
    Ci-joint un bout de mon .TXT initial. Merci
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt iv.txt (802 octets, 217 affichages)

  15. #15
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Ton fichier est en unicode LE (Little Endian).
    A ne pas confondre avec UTF-8.
    C'est un codage sur 2 octets comme DBCS, mais c'est bien en ASCII.

    Depuis le PC, on peut préciser le CCSID du fichier à importer.
    QUOTE TYPE C 17856 pour Unicode LE
    QUOTE TYPE C 17854 pour Unicode BE
    Probleme: Si les tables de translations n'ont pas été installées sur ton AS, le transfert ne s'effectuera pas correctement.

    Une solution simple pour convertir le fichier unicode en ANSI (le système utilisé par windows) consiste à utiliser la commande type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CD C:\TEMP
    TYPE FicUnicode.Txt >FicANSI.txt
    FTP xxxxxxx
    PUT FICANSI.TXT  biblio/fichier
    QUIT

  16. #16
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2006
    Messages : 689
    Points : 994
    Points
    994
    Par défaut
    Et toc, pas de bol, c'est bien de l'UTF-16LE.
    Pile poil celui qui pose souci.
    Bon, ben il va falloir convertir çà avant de l'envoyer sur ton serveur.
    Personnellement je le laisserai au minimum en UTF8 plutôt qu'en ANSI ou autre code page standard Windows, histoire de ne pas risquer de perdre des infos.
    Maintenant il faut trouver une méthode pour convertir le fichier sans intervention. Notepad++ reconnait l'UTF-16LE et permet de convertir en une option de menu ton fichier en UTF8. Vu qu'il est scriptable, on doit pouvoir jouer avec çà.
    Sinon si tu as un Linux sous la main, la commande iconv te fera çà en un tour de main.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Merci à tous.
    M4K, non je n'ai pas de Linux sous la main, du coup j'ai testé les solutions de FORMULARY à savoir :
    QUOTE TYPE C 17856 pour Unicode LE ou QUOTE TYPE C 17854 pour Unicode BE et il a raison, les tables de translations ne sont pas installées sur ma machine, et le transfert ne se fait pas.

    J'ai essayé l'option TYPE comme conseillé, et là comment dire, ça marche impeccable !
    Je n'ai qu'un mot à dire : "respect" à tous.

    Dernière interrogation, le mode TYPE peut-il me faire perdre des données ?
    merci.

  18. #18
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    La commande TYPE permet simplement d'afficher le fichier.
    On redirige la sortie dans un fichier. Or windows est par défaut ANSI.

    Sur le principe, on passe d'un codage sur 2 octets à un codage sur 1.
    On a donc forcément des caractères qui sont mal ou pas repris.
    Maintenant, si ton fichier ne reprend que du texte "standard" issu de France ou d'Angleterre, il n'y a pas de problème.
    S'il reprend un texte issu d'Espagne avec des caractères accentués comme ñ il ne devrait pas non plus y avoir de problème, pour peu que les caractères existent sous windows.
    S'il reprend des idéogrammes chinois, là, vous aurez forcément des pertes. Mais je ne pense pas que ce soit vote cas !

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par FORMULARY Voir le message
    La commande TYPE permet simplement d'afficher le fichier.
    On redirige la sortie dans un fichier. Or windows est par défaut ANSI.

    Sur le principe, on passe d'un codage sur 2 octets à un codage sur 1.
    On a donc forcément des caractères qui sont mal ou pas repris.
    Maintenant, si ton fichier ne reprend que du texte "standard" issu de France ou d'Angleterre, il n'y a pas de problème.
    S'il reprend un texte issu d'Espagne avec des caractères accentués comme ñ il ne devrait pas non plus y avoir de problème, pour peu que les caractères existent sous windows.
    S'il reprend des idéogrammes chinois, là, vous aurez forcément des pertes. Mais je ne pense pas que ce soit vote cas !

    non non ce n'est pas du chinois ni du laotien lol !
    je vais donc mettre la commande "type" avant mon FTP et andiamo !!!

    Encore merci à tous.

  20. #20
    Expert confirmé
    Homme Profil pro
    ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Inscrit en
    Juin 2007
    Messages
    2 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : ANCIEN Consultant/Formateur/Développeur AS/400, iSeries, System i et Cobol
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 096
    Points : 4 155
    Points
    4 155
    Par défaut
    Citation Envoyé par inpra Voir le message
    ...

    J'ai essayé l'option TYPE comme conseillé, et là comment dire, ça marche impeccable !
    Je n'ai qu'un mot à dire : "respect" à tous.

    Dernière interrogation, le mode TYPE peut-il me faire perdre des données ?
    merci.
    En fait, TYPE utilisé par FORMULARY dans la partie code (batch) n'est pas une option ou un mode, c'est juste la commande DOS-Windows (cmd.exe ou command.com) qui permet d'afficher le contenu d'un fichier, dans l'exemple, la sortie est redirigée vers un fichier. Et comble du bonheur, elle convertit le fichier comme pour l'afficher. FORMULARY d'y avoir pensé. Pour la perte de données, c'est possible. Il faudrait tester à fond.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. FTP vers AS400
    Par noas400 dans le forum AS/400
    Réponses: 19
    Dernier message: 12/04/2018, 07h51
  2. FTP à partir de l'AS400 code ASCII bizarre II
    Par inpra dans le forum AS/400
    Réponses: 1
    Dernier message: 24/07/2013, 14h06
  3. Réponses: 9
    Dernier message: 09/08/2012, 14h52
  4. Tranfert ftp vers as400 (iseries) en c#
    Par roro06 dans le forum C#
    Réponses: 5
    Dernier message: 23/12/2010, 15h41
  5. Aide :convertir caractére vers code ascii
    Par MAXIMIX dans le forum C++
    Réponses: 2
    Dernier message: 19/08/2006, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo