|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
Bonjour,
J'ai un fichier indexé contenant des Voyages entre 2 villes. Dans ce fichiers on retrouve un format d'enregistrement VOYAGER divisé en: L'identifiant de ce fichier est le couple DEPART ARRIVEE. Je voudrais écrire un petit programme Cobol qui supprime tous les enregistrements dont DEPART vaut une certaine valeur (disons PARIS). Je pensais faire une lecture séquentielle de tout le fichier et avec un IF vérifier si pour l'enregistrement DEPART = PARIS, si c'est le cas supprimer l'enregistrement, passer à l'enregistrement suivant, vérifier... etc. Mais ca me semble très long. Avez-vous une meilleure solution? Peut-être avec un start, etc mais je n'y arrive pas... Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Bonjour.
Comme ton fichier est indexé sur (DEPART, ARRIVEE), tu fais un START avec DEPART = PARIS et ARRIVEE = Spaces/Low-value et tu enchaines par une lecture séquentielle jusqu'à la fin du fichier ou DEPART <> PARIS en faisant un DELETE. |
|
|
00
|
|
|
#3 | ||
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
Bonjour,
Merci pour la réponse. Je ne connais pas bien le fonctionnement d'un start. Je pense donc faire: Code :
Encore merci ! |
||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() |
Code :
- Le START ne fait que pointer l'enregistrement répondant au critère (clé et opérateur), il ne réalise pas de lecture. - si tu as une description externe, il suffit de mettre EXTERNALLY-DESCRIBED-KEY à la place de clé - Si dans le SELECT tu as prévu un accès DYNAMIC tu dois faire un READ NEXT. |
||
|
|
00
|
|
|
#5 | ||
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
Merci.
Donc comme ceci si j'ai bien compris: Code :
1/cle 2/premier read dans trt 3/deuxième read dans trt |
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
- si tu as ACCESS is DYNAMIC, tu dois faire du READ monfichier NEXT
- il faudrait arranger le NOT INVALID du START autrement, parce que sinon il va te supprimer le premier enregistrement lu après PARIS. Tant qu'il n'y a pas de lecture réussie, il ne peut pas comparer DEPART en provenance du fichier à PARIS. Soit que tu fais une lecture initiale soit tu dissocies les critères de la condition de fin. |
|
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
Encore merci pour l'aide
Pour la clé c'est bien si je déclare une petite structure comme j'ai fait? Voici mon code modifié: Code :
Merci d'avance. |
||
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() |
- le 01 de la clé est mauvais, il est réservé au buffer du fichier :
Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
Comme ceci tout vous semble bien?
Code :
Encore merci pour votre aide! |
||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
Bonjour.
Il suffit de tester pour voir si c'est bon |
|
|
00
|
|
|
#11 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 155 ![]() |
C'est en ordre, merci pour votre aide
|
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() ![]() |
Maintenant que tu as fait ton programme, un petit dernier pour la route.
C'est pas top top, mais ça peut servir. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com