Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Cobol
Cobol Forum d'entraide sur la programmation en langage Cobol
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 05/09/2012, 16h32   #1
Babylone159
Invité de passage
 
Femme
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : août 2012
Messages : 9
Points : 0
Points : 0
Par défaut Parcours et analyse de fichiers

Bonjour,

J'ai deux fichiers textes, l'un contenant des lignes écrites en cobol et l'autre contenant des lignes cobol aussi mais en plus il y a des numéros de patchs après chaque ligne.
Exemple:
! 132535 12 PFINCUM-P9 PICTURE 9(02). DBI ! ADD/1/.../144606 !

(en vert la ligne cobol et en rouge le numéro de patch)
Serait-il faisable de créer un programme cobol qui permet de parcourir le premier fichier ligne par ligne et chercher les numéros de patchs correspondants (sachant que plusieurs lignes peuvent correspondre au même numéro de patch).
Au final il faut obtenir un fichier contenant tous les numéros de patchs ainsi que les lignes du premier fichier qui n'ont pas de correspondances.

Merci
Babylone159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2012, 17h16   #2
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 585
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 585
Points : 6 332
Points : 6 332
Oui(mais plus de détails plus tard, là, je suis pressé). En gros, il faut lire le code en format fixe(longueur 80), et traiter les 6 premiers caractères de chaque enregistrement. en détail plus tard.
__________________
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 00
Vieux 11/09/2012, 15h33   #3
Babylone159
Invité de passage
 
Femme
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : août 2012
Messages : 9
Points : 0
Points : 0
Waiting for details ...
Babylone159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2012, 16h47   #4
feuilledotone
Candidat au titre de Membre du Club
 
Inscription : octobre 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 15
Points : 11
Points : 11
Bonjour,
Tu veux faire quoi exactement ?

Le fichier 1 est identique au fichier 2 avec en plus le numéro du patch dans le fichier 2 ou bien les 2 fichiers sont différents ?
En fonction de ta réponse, le traitement n'est pas du tout identique.

Rappelles-toi qu'une ligne cobol est composée de 4 parties :
1 à 6 : numéro de ligne
7 : type de ligne ( ,*, -, D, ...)
8-72 : instruction
73-80 : commentaire
Est-ce qu'il te suffit de comparer le numéro de ligne ? ou bien l'instruction ? ou une partie de l'instruction ?
feuilledotone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2012, 15h18   #5
Babylone159
Invité de passage
 
Femme
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : août 2012
Messages : 9
Points : 0
Points : 0
Hello,

Les deux fichiers ne sont pas identiques (le deuxième fichier contient, en plus des lignes du premier fichier, d'autres lignes en cobol et d'autres numéros de patchs correspondants).

Le but est de parcourir le 1er fichier, chercher toute la ligne(donc de 1 à 80) dans le fichier 2 et récupérer le numéro de patch. Si la ligne n'a pas de correspondance il faut l'écrire telle quelle dans un fichier de sortie.
Au final, je dois avoir un fichier contenant les différents numéros de patchs trouvés ainsi que les lignes qui n'ont pas de correspondances.

J'espère que j'étais claire
Babylone159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2012, 09h58   #6
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 585
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 585
Points : 6 332
Points : 6 332
Pour être sur de bien comprendre :

(1)est-ce que les lignes communes sont supposées être dans le même ordre?
(2)tes numéros de patch sont bien dans les caractères 73 à 80?
(3)est-ce le même fichier qui doit contenir les lignes absentes, ET les numéros de patch? Si oui, sous quels formats(parceque dans un cas on a 80 caractères, dans l'autre 8 caractères)?
__________________
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 00
Vieux 19/09/2012, 18h13   #7
Babylone159
Invité de passage
 
Femme
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : août 2012
Messages : 9
Points : 0
Points : 0
Hi again,

1)-Non, les lignes communes ne sont pas dans le même ordre
2)-Mes numéros de patchs sont dans les caractères 95 à 100.
3)-le premier fichier contient uniquement des lignes cobol de 1 à 80 (pas de num de patchs),
le deuxieme fichier contient des lignes cobol de 1 à 80 suivi de numéros de patchs de 95 à 100.

le but c'est de parcourir le fichier 1 ligne par ligne, chercher chaque ligne dans le fichier2, si on la trouve on récupère le numéro de patch et on l'écrit dans un nouveau fichier 3, si on la trouve pas on écrit la ligne non trouvée dans le fichier 3.
au final, le fichier 3 doit contenir les différents numéros de patchs récupérés ainsi que les lignes du fichier 1 qui n'ont pas été trouvées dans le fichier 2.

Voilà
Merci
Babylone159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2012, 10h01   #8
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 585
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 585
Points : 6 332
Points : 6 332
Hum; Si les volumétries sont raisonnables, je propose de lire tout le deuxième fichier, de le mettre en mémoire, puis de lire le premier fichier ligne à ligne. A chaque ligne, on cherche dans la mémoire. Si en plus on a trié avant, on peut faire une dichotomie.

Sinon, si c'est massif(un nombre de lignes à 6 chiffres, voire plus), il faut faire un VSAM, et là, ça dépasse mes compétences.

Dans le premier cas, il y a ici un exemple de lecture de deux fichiers. A toi de l'adapter, sachant que tu n'as pas à t"embêter avec la rupture : tu lis tout le second fichier avant d'attaquer le premier. Par contre, lors de la lecture du premier, il te faut le mettre dans un tableau du genre :

Code :
1
2
3
4
5
01  TABLE-SECOND-FICHIER.
    05  LIGNE-SECOND-FICHIER OCCURS 99999.
        10  LIGNE-SECOND-FICHIER-80 PIC X(80).
        10  FILLER PIC X(15).
        10  LIGNE-SECOND-FICHIER-NPATCH PIC X(05).
Puis, à chaque enregistrement du premier fichier, parcourir cette table.
__________________
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
Vieux 20/09/2012, 13h34   #9
Babylone159
Invité de passage
 
Femme
Inscription : août 2012
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : août 2012
Messages : 9
Points : 0
Points : 0
Merci beaucoup
Babylone159 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2012, 21h51   #10
Skylyn
Membre habitué
 
Homme Julien Guiffroy
Ingénieur d'étude Mainframe
Inscription : septembre 2012
Messages : 61
Détails du profil
Informations personnelles :
Nom : Homme Julien Guiffroy
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur d'étude Mainframe
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2012
Messages : 61
Points : 113
Points : 113
En JCL, c'est possible de le faire avec la carte EXEC PGM=SORT
Je te passerai un exemple demain !
________________________________________
________________________________________
Skylyn,
Skylyn 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 17h19.


 
 
 
 
Partenaires

Hébergement Web