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 :

Tri d'un fichier physique


Sujet :

AS/400

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Tri d'un fichier physique
    Bonjour à Tous,

    J'ai un souci pour trier un fichier physique.
    Je passe peut-être à côté de quelque chose.

    J'ai un programme CL qui s'exécute une fois par jour,
    et qui utilise les données d'un ou plusieurs fichiers.
    Ces fichiers ont tous la même structure (même nb de colonne, etc...)
    Et j'utilise la commande OVRDBF pour accéder à ces fichiers.

    Jusqu'ici, tout va bien.

    Le but, c'est que ces fichiers soient triés par ordre croissant sur la deuxième colonne avant le traitement du CL.

    Je sais qu'il existe la commande RGZPFM, mais il faut un logique et les fichiers de données n'ont pas le même nom.

    Est-ce qu'il existe un autre moyen pour trier un fichier ?

  2. #2
    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.

    Il y a la commande de tri FMTDTA, mais elle est rarement utilisée. Puis les API QLGSORT, QLGSRTIO.

    Je préfère utiliser un LF joint ou simple et le recopier, à la limite, dans un PF et le réorganiser.

  3. #3
    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
    Il y a aussi OPNQRYF qui permet d'indiquer un tri ...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Il y a la commande de tri FMTDTA, mais elle est rarement utilisée
    Ce n'est pas très rassurant tout ça.

    Il y a aussi OPNQRYF qui permet d'indiquer un tri ...
    Justement, j'ai un collègue qui m'a dit que je devrais pouvoir faire ça avec OPNQRYF.

    si je comprends bien je peux créer un fichier avec la commande CPYFRMQRYF.

    Je vais regarder de ce côté
    merci

  5. #5
    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
    A mon avis pas besoin d'utiliser cpyfrmqryf

    Un truc de ce genre devrait suffire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    PGM
    
    DCLF  monfichier
    
    OVRDBF  monfichier SHARE(*YES)
    
    OPNQRYF monfichier KEYFLD(Zone1 zone2)
    
    BCLE:
    
    RCVF  *FILE
    MONMSG CPF0000 *N RETURN
    
    /* Traiter l'enregistrement */
    
    GOTO BCLE
    
    ENDPGM

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    A mon avis pas besoin d'utiliser cpyfrmqryf
    Oui, on peut directement lire le fichier trié par OPNQRYF.

    Mais dans mon cas, c'est plus intéressant de créer un fichier trié pour le CL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    OPNQRYF    FILE((LIB/ANCIEN)) FORMAT(*FILE) +
                 KEYFLD((nomDeColonne *ASCEND)) OPNID(F1)        
    CPYFRMQRYF FROMOPNID(F1) TOFILE(LIB/NOUVEAU) + 
                 CRTFILE(*YES)                           
                                                         
    CLOF OPNID(F1)


    ps: j'ai édité mon code, parce que ça fonctionne sans le OVRDBF

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

Discussions similaires

  1. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 17h21
  2. Tri d'un fichier
    Par Premium dans le forum C
    Réponses: 14
    Dernier message: 15/01/2006, 23h55
  3. tri d'un fichier texte
    Par ben127 dans le forum C
    Réponses: 7
    Dernier message: 23/12/2005, 21h03
  4. [AS400] Lire et modifier un fichier physique en C/S ?
    Par swirtel dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 26/10/2005, 16h58

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