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 :

import de fichier vers AS400


Sujet :

AS/400

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut import de fichier vers AS400
    Bonjour
    Je ne parviens pas correctement à importer sur un AS400 un fichier censé contenir plusieurs enregistrements de 120 caractères de long. L'importation se fait mais le résultat est un fichier avec un seul enregistrement contenant bout à bout tous les enregistrements. J'ai copié le fichier d'un serveur dans l'IFS de l'AS400 puis j'ai essayé avec la commande CPYFRMIMPF. J'ai également essayé par FTP avec un GET dans un PF de 120 long mais la fin des enregistrements n'est pas détectée (ça marche avec d'autres fichiers que j'importe)
    Quelqu'un saurait-il me dire comment réussir cet import ou me donner une piste pour avancer ?
    Merci.
    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    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 : 691
    Points : 996
    Points
    996
    Par défaut
    Tu as probablement un problème avec le caractère de fin d'enregistrement.
    De quel plateforme proviens ce fichier ?
    Quelles options as tu utilisé avec la commande CPYFRMIMPF au paramètre RCDDLM ?

    Edit : Il se peut que ton fichier d'origine n'ai pas de caractère de fin d'enregistrement. Pense alors au paramètre DTAFMT (que tu mettrais à *FIXED) en adaptant STMFLEN (à 120 si j'ai bien compris).

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    @ m4k-Hurrican merci pour ta réponse
    J’ignore sur quelle plateforme a été créé le fichier que je récupère sur un serveur Windows.
    J’ai utilisé ainsi la commande
    CPYFRMIMPF FROMSTMF('/tmp/30002_3_246_001.MVT') TOFILE(MABIB/FMVTCL)
    MBROPT(*REPLACE) TOCCSID(*FILE) RCDDLM(*ALL) DTAFMT(*DLM) STRDLM(*NONE) RPLNULLVAL(*FLDDFT)
    NULLVAL(*FLDDFT)
    Propriété de l'objet QCPIMTEMPS de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QACPTEMP01 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QACPTEMP01 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QCFT061856 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet Q53F255 de QTEMP, type *FILE modifiée.
    Membre FMVTCL du fichier FMVTCL de MABIB remis à blanc.
    L'opération de copie n'a pas abouti. Code raison 98.
    Commande de copie interrompue à la suite d'une erreur.

    Concernant ta remarque :
    Edit : Il se peut que ton fichier d'origine n'ai pas de caractère de fin d'enregistrement. Pense alors au paramètre DTAFMT (que tu mettrais à *FIXED) en adaptant STMFLEN (à 120 si j'ai bien compris).

    CPYFRMIMPF FROMSTMF('/tmp/30002_3_246_001.MVT') TOFILE(MABIB/FMVTCL)
    MBROPT(*REPLACE) STMFLEN(120) TOCCSID(*FILE) RCDDLM(*ALL) DTAFMT(*FIXED)
    STRDLM(*NONE) FLDDFNFILE(MABIB/DEFENR) RPLNULLVAL(*FLDDFT)
    Propriété de l'objet QCPIMTEMPS de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QACPTEMP01 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QACPTEMP01 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QACPTEMP01 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet QCFT061856 de QTEMP, type *USRSPC modifiée.
    Propriété de l'objet Q53F298 de QTEMP, type *FILE modifiée.
    Membre FMVTCL du fichier FMVTCL de MABIB remis à blanc.
    L'opération de copie n'a pas abouti. Code raison 98.
    Commande de copie interrompue à la suite d'une erreur.

    Dans les deux cas, le fichier de destination est vide et j’ignore quel est le code raison 98.
    Une piste ?

    Cordialement

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    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 : 691
    Points : 996
    Points
    996
    Par défaut
    Normalement l'explication du code 98 est dans l'aide du message.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    l'aide du message donne les explications pour les codes raison de 1 à 12 mais pas pour 98

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Essaye avec RCDDLM(*CRLF)

  7. #7
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Octobre 2006
    Messages
    691
    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 : 691
    Points : 996
    Points
    996
    Par défaut
    Tu peux donner l'ID message stp ?

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    CPF2845. The copy did not complete for reason code 98.

    Il s'agit en effet d'un pb avec le délimiteur d'enregistrements. Aucun délimiteur valide n'a été trouvé dans l'enregistrement.

    Remarque.
    RCDDLM(*ALL) couvrant retour chariot et/ou line feed, RCDDLM(*CRLF) ne doit pas convenir.

    Voir ici l'APAR d'IBM.

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous et merci pour vos réponses

    L' ID du message est CPF2845
    Message . . . . : L'opération de copie n'a pas abouti. Code raison 98.
    Cause . . . . . : La commande CPYFRMIMPF (Copier depuis un fichier
    d'importation) ou CPYTOIMPF (Copier vers un fichier d'importation) a été
    interrompue. Le code raison correspondant est 98.

    Concernant la valeur du paramètres RCDDLM, la copie se termine par une erreur 98, quelle que soit cette valeur : *ALL ou *CRLF ou *LF ou *CR ou *LFCR

    @ Mercure, le lien que tu indiques ne fonctionne pas

    Merci
    A+
    Patlou

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Quand tu fais un EDTF ou DSPF de ton fichier, vois-tu les enregistrements les uns en dessous des autres ou les données sont-elles contigües ?
    D'où proviennent ces données ? De Excel ou autre.
    As-tu la possibilité de les regénérer ?

    Et le plus important :
    Peux-tu poster les 300 premiers caractères ?

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Si tes données sont contigües il est possible de les "spliter" soit avec la commande unix split soit avec sed ou encore awk.

    Exemple d'un fichier dans l'IFS /home/a.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7...
     ************Beginning of data**************                             
    1234567890123456789012345678901234567890123456789012345678901234567890   
     ************End of Data********************
    Découpage par paquet de 10 caractères et résultalt dans /home/b.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    cat /home/a.txt |                                               
    awk 'BEGIN{n=1}{while(substr($0,n,10)){print substr($0,n,10);n+=10}}'   
      > /home/b.txt                                            
    
    ....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....
     ************Beginning of data**************                                   
    1234567890                                                                     
    1234567890                                                                     
    1234567890                                                                     
    1234567890                                                                     
    1234567890                                                                     
    1234567890                                                                     
    1234567890                                                                     
     ************End of Data********************

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 298
    Points : 1 578
    Points
    1 578
    Par défaut
    J'ai corrigé le lien erroné indiqué dans mon post précédent.

    Nouvelle adresse ici.

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    @ K2R400
    ta façon de "spliter" l'unique enregistrement du fichier stocké dans l'IFS est une solution qui m'intéresse.
    Peux-tu me dire comment je peux utiliser la commande adéquate (awk ?) sur un AS400 ?
    merci

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Points : 1 084
    Points
    1 084
    Par défaut
    Sur une ligne de commande tu tapes QSH ou STRQSH.
    Puis copier/coller de tout ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cat /tmp/30002_3_246_001.MVT |                                               
    awk 'BEGIN{n=1}{while(substr($0,n,120)){print substr($0,n,120);n+=120}}'   
      > /tmp/new.MVT
    Le fichier sera découpé par bloc de 120 car et généré dans un nouveau fichier appelé /tmp/new.MVT

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    bravo !
    j'ai fait un programme CL pour automatiser cette tâche et ça fonctionne !
    merci à tous !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PGM                                                      
    STRQSH     CMD('cat /tmp/30002_3_246_001.MVT | +         
                 /Qopensys/usr/bin/awk +                     
                 ''BEGIN{n=1}{while(substr($0,n,120)){print +
                 substr($0,n,120);n+=120}}'' > /tmp/new.MVT')
                                                             
                                                             
    ENDPGM
    A+
    patlou

Discussions similaires

  1. importation fichier vers oracle
    Par chaoued dans le forum Administration
    Réponses: 3
    Dernier message: 17/05/2007, 08h39
  2. Importer un fichier .jar vers eclipse
    Par kokoroko dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 24/03/2007, 15h06
  3. Importation de fichier Access vers EXCEL en VB
    Par yoruichi93 dans le forum IHM
    Réponses: 1
    Dernier message: 12/06/2006, 19h53
  4. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 19h14
  5. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 15h18

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