Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre régulier
    Homme Profil pro Bernard
    Développeur et formateur Mainframe
    Inscrit en
    février 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur et formateur Mainframe
    Secteur : Conseil

    Informations forums :
    Inscription : février 2007
    Messages : 39
    Points : 78
    Points
    78

    Par défaut COBOL - Appareillage de deux fichiers

    Bonjour,

    L'appareillage de deux fichiers séquentiels de structures différentes et ayant une même clef de comparaison afin d'en produire un troisième est un exercice fréquent en COBOL.

    Vous trouverez ci-joint un petit modèle (éprouvé) qui devrait vous permettre de produire rapidement une solution propre.

    Bon courage aux novices.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert

    Homme Profil pro François Durand
    Spécialiste Delivery Mainframe IBM
    Inscrit en
    octobre 2005
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Nom : Homme François Durand
    Âge : 55
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Spécialiste Delivery Mainframe IBM
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2005
    Messages : 1 198
    Points : 2 151
    Points
    2 151

    Par défaut

    J'avoue ne pas comprendre l'algorithme sous-jacent à ton programme COBOL

    Mon problème est le suivant :
    Pourquoi avoir conditionné la sortie de la boucle principale du programme par la seule fin du fichier FICIN001 ?

    En effet, si la clé du dernier enregistrement de ce fichier est inférieure à la clé du dernier enregistrement de l'autre fichier (FICIN002) que va-t-il se passer, ou, en d'autres termes, si le premier fichier se termine "avant" le second fichier ?

    Notamment, pour le cas particulier où le fichier FICIN001 est vide alors que le fichier FICIN002 ne l'est pas ?

    Merci de bien vouloir m'éclairer ...

  3. #3
    Membre régulier
    Homme Profil pro Bernard
    Développeur et formateur Mainframe
    Inscrit en
    février 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Nom : Homme Bernard
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur et formateur Mainframe
    Secteur : Conseil

    Informations forums :
    Inscription : février 2007
    Messages : 39
    Points : 78
    Points
    78

    Par défaut

    Bonjour,

    Tu as entièrement raison dans l'absolu Luc.

    Pour être tout à fait clair, j'aurais dû préciser que, dans tous les cas fonctionnels (banque, assurance, industrie automobile ...) où j'ai eu à utiliser ce type de programme, le fichier FICIN001 était dit "fichier maître" et que le second fichier servait à enrichir les données correspondantes dans le premier. En cas de fichier FICIN001 vide, on plantait la chaîne de traitement ou on laissait courir. Idem dans le cas où FICIN001 se terminait avant FICIN002 : les enregistrements "excédentaires" du second fichier étaient passés aux oubliettes.

    Pour être tout à fait exhaustif et propre, il faut conditionner la fin de traitement à la fin des deux fichiers et produire trois fichiers : un avec les enregistrements dont les clefs sont communes aux deux fichiers (le cas de mon exemple), un avec les enregistrements dont les clefs sont présentes dans FICIN001 et pas dans FICIN002 et un avec les enregistrements dont les clefs sont présentes dans FICIN002 et pas dans FICIN001.

    Je laisse à chacun le soin d'adapter le modèle de base.

  4. #4
    Nouveau Membre du Club
    Inscrit en
    avril 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : avril 2012
    Messages : 42
    Points : 34
    Points
    34

    Par défaut

    Il y a deux familles de programmes d'appareillage de fichiers :

    1) les relations 1 enregistrement maître : 0 à 1 enregistrement secondaire
    2) les relations 1 enregistrement maître : 0 à n enregistrements secondaires

    Le premier type est simple : en cas d'égalité sur les critères de rapprochement, on relit les deux fichiers, mais le second oblige à gérer une boucle sur le fichier secondaire.

    Il y a deux catégories techniques de problèmes à gérer :
    1) les fins de fichiers
    2) le rapprochement des fichiers sur une données (ou plusieurs données, par forcément contigües)

    Il faut penser aux cas spéciaux :
    - fichier vide
    - secondaire sans principal correspondant

    Et que faire
    - planter : simple, radical, voire franchement bestial, et peut bloquer à tort des milliers de jobs toute une nuit
    - pas planter : faire un fichier des rejets, et pouvoir les traiter; dans ce cas tous les programmes doivent pouvoir gérer le célèbre cas du fichier vide (qui a toussé dans la salle ?)

    Exemple de table de vérité pour le second type de rapprochement, sous forme de tableau Excel.
    Images attachées Images attachées

  5. #5
    Expert Confirmé Sénior
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 3 035
    Points : 8 553
    Points
    8 553

    Par défaut

    3) les relations 1 à n enregistrements maîtres : 0 à n enregistrements secondaires.

    J'ai eu à faire une fois, pour un rapprochement sur clefs partielles.

    Pas si dur, il faut juste stocker les enregistrements maitres, et faire une rupture sur changement de clefs, stocker les enregistrements secondaires, faire là aussi une rupture sur changement de clef, puis mouliner le stock.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •