Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Cobol > Contribuez
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 29/08/2011, 16h11   #1
BernardBZH
Membre régulier
 
Homme Bernard
Développeur et formateur Mainframe
Inscription : 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 : 77
Points : 77
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
Type de fichier : txt COBOL Appareillage.txt (26,4 Ko, 92 affichages)
BernardBZH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2011, 21h26   #2
Luc Orient
Membre Expert

 
Homme François Durand
Spécialiste Delivery Mainframe IBM
Inscription : octobre 2005
Messages : 1 165
Détails du profil
Informations personnelles :
Nom : Homme François Durand
Âge : 54
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 165
Points : 1 975
Points : 1 975
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 ...
Luc Orient est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 10h02   #3
BernardBZH
Membre régulier
 
Homme Bernard
Développeur et formateur Mainframe
Inscription : 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 : 77
Points : 77
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.
BernardBZH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2012, 22h19   #4
jpiotrowski
Invité de passage
 
Inscription : avril 2012
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2012
Messages : 3
Points : 1
Points : 1
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
Type de fichier : jpg Rapprochement-table de vérité.jpg (133,2 Ko, 15 affichages)
jpiotrowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2012, 10h26   #5
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 540
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 540
Points : 6 145
Points : 6 145
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.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h57.


 
 
 
 
Partenaires

Hébergement Web