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

DB2 Discussion :

extraction de donnes depuis un phichier physique


Sujet :

DB2

  1. #1
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut extraction de donnes depuis un phichier physique
    bonjour tout le monde,
    s'il vous plait si quelqu'un a une idée :

    j'ai un fichier physique avec une seule zone de 500 caracteres alphanumerique :exemple (281;xxxxxxxxxx;ffffffffffff;uuuuuuuu;date debut;date fin ;heure debut;heure fin;llllllllllll....)

    je veux extraire ses données et les stocké dans un autre fichier physique pour metre chaque valeur dans une zone spécifique ,sachant que dans le nouveau fichier contient plus de zones (donc ce n'est pas juste ses données qui existe dans le fichier)

  2. #2
    Membre Expert
    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
    Par défaut
    Bonjour.

    Quels système d'exploitation et version ?

    C'est faisable en sql avec SUBSTRING et éventuellement les fonctions de conversion d'une sous-chaine de caractères en date, nombre, etc...

  3. #3
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut
    merci pour ta reponse

    on travail avec as400,on doit faire un programme RPGLE pour lire du premier fichier et remplir le deusieme...
    donc avec rpgle

  4. #4
    Membre Expert
    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
    Par défaut
    Si les données occupent les mêmes emplacements dans le fichier en entrée, il suffit de :
    - soit le décrire dans ton rpgle
    - soit décrire un fichier identique avec des DDS et le créer puis faire un CPYF avec *NOCHK du premier fichier vers le fichier nouvellement créé qui sera le fichier en entrée au rpgle

    sinon, utiliser CPYFRMIMPF en indiquant FROMFILE, le séparateur des zones, le point décimal, etc..., pour copier le fichier dans un fichier décrit par des DDS et rejoindre l'option précédente

  5. #5
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut
    merci jaidane c gentil ,
    demain je vais essayer votre solution et je vous tiendrai au courant.
    merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Par défaut
    Bonjour mery,

    Tes zones, elles sont fixes dans ton fichier de 500 caractères ?
    Si c'est le cas, tu fais une ds externe avec les zones du style :
    Dma_ds E DS Extname(mon fichier externe) prefix(#)
    MA_DS a les mêmes noms de champs que ton fichier de destination.
    puis dans ton programme, tu fais un move de ton fichier de 500 vers ma_ds.
    tu complètes les champs qui sont dans ton fichier final et que tu n'as pas dans MA_DS.
    puis tu fais ton write.

    C'est une solution que j'ai encore utilisée ce matin.

    Larry57 :-))))

  7. #7
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut
    bonsoir larry
    merci d’abord.
    pour les enregistrement de mon fichier ,ne sont pas fixe ,c'est a dire
    ligne1==>123;xxxxxxxxxxxxxxxxxxx;aaaaaaaaaaa;ooooooo
    ligne2==>233;xxxxxxxxxxxxxxx;aaaaaaa;

    donc ce que j'ai fait,c'est des scan pour le point virgul(pour fixer l'emplacement) et des subst pour recuperer les donnes ,un looooooooong programme , mais bon ,c'est ce quand a pu faire pour l'instant....

  8. #8
    Membre Expert
    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
    Par défaut
    Citation Envoyé par mery007 Voir le message
    ...pour les enregistrement de mon fichier ,ne sont pas fixe ,c'est a dire
    ligne1==>123;xxxxxxxxxxxxxxxxxxx;aaaaaaaaaaa;ooooooo
    ligne2==>233;xxxxxxxxxxxxxxx;aaaaaaa;

    donc ce que j'ai fait,c'est des scan pour le point virgul(pour fixer l'emplacement) et des subst pour recuperer les donnes ,un looooooooong programme , mais bon ,c'est ce quand a pu faire pour l'instant....
    et quid de ça ? :
    Citation Envoyé par Hédhili Jaïdane Voir le message
    Si les données occupent les mêmes emplacements dans le fichier en entrée, il suffit de :
    - ....
    sinon, utiliser CPYFRMIMPF en indiquant FROMFILE, le séparateur des zones, le point décimal, etc..., pour copier le fichier dans un fichier décrit par des DDS et rejoindre l'option précédente

  9. #9
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut
    bonsoir jaidan

    pour votre solution ,je n l'ai pas bien compris,j'ai essayer la commande mais c etai pas clair... ,et parce qu'on m a demande de faire un programme ,et comme le point virgul n existe pas dans le meme emplacement pour chaque enregistrement ,j ai utiliser un read sur le fichier et puis des scan et subst et enfin une ecriture dans le nouveau fichier.

    sinon si tu peux m'expliquer ta solution un peu en detail?
    merci d avance

  10. #10
    Membre expérimenté
    Homme Profil pro
    Architecte technique & logiciel IBM i
    Inscrit en
    Septembre 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique & logiciel IBM i
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2010
    Messages : 179
    Par défaut
    C'est une commande de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CPYFRMIMPF FROMFILE(MYLIB/FILE_FROM)
               TOFILE(MYLIB/FILE_TO)    
               MBROPT(*REPLACE)         
               STRDLM(*NONE)            
               RMVBLANK(*BOTH)          
               FLDDLM(';')              
               DECPNT(*COMMA)
    dans laquelle le fichier FILE_FROM est celui qui n'est pas colonné (une seule zone de 500) et le FILE_TO celui qui est colonné.

  11. #11
    Membre chevronné
    Homme Profil pro
    Analyste-Programmeur IBM i, IBM Cognos TM1
    Inscrit en
    Août 2002
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-Programmeur IBM i, IBM Cognos TM1
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2002
    Messages : 234
    Par défaut
    Bonjour,

    Si tu dois le faire dans un programme
    Tu met ton fichier de destination en usropn.
    Dans ton programme RPG tu mets ceci en déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    d exec            pr                  extpgm('QCMDEXC')
    d                             3000a   options(*varsize) const
    d                               15p 5 const
    monitor;
    puis cmd = 'la commande au dessus'
    exec(cmd:%len(cmd));
    on-error;
    si tu veux gérer l'erreur.
    endMon;
    et le tour est joué.
    Après, si tu as autre chose à faire sur ton fichier de destination, tu fais ton open et ton close.

    La commande va prendre en charge le découpage des zones en fonction du séparateur que tu auras déclaré dans FLDDLM(';').

    Larry57

  12. #12
    Membre averti
    Femme Profil pro
    analyste programmeur as400
    Inscrit en
    Avril 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : analyste programmeur as400
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2011
    Messages : 41
    Par défaut
    OOOK maintenant je pense que c est plus clair
    merci larry et pwrdwnsys ..
    demain je vais essayer la nouvelle solution .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2010, 13h38
  2. [Oracle] Extraction de données depuis le Web
    Par habasque dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 23/06/2008, 23h52
  3. Extraction de données depuis interbase
    Par mat777 dans le forum InterBase
    Réponses: 4
    Dernier message: 08/03/2008, 22h09
  4. Extraction de données depuis SAP
    Par romrai dans le forum SAP
    Réponses: 7
    Dernier message: 03/08/2006, 15h42
  5. Extraction de données depuis fichier .NDX ...
    Par Olif_C dans le forum WinDev
    Réponses: 4
    Dernier message: 30/08/2005, 11h57

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