Recherche de l'aide en cobol

laurence92 -  
 c'est franske :p -
Bonjour tout le monde!
Voilà je recherche desesperemment qqun qui s'y connait en Cobol et qui pourrait m'aider... :o( j'ai qques petits problème dans mon programme sur les fichiers...
Merci d'avance...

29 réponses

Dimandja
 
Et les petits problemes?
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
salut,

ben voui, c'est quoi tes problèmes ? :-)

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
laurence92 Messages postés 17 Statut Membre
 
Bon voilà ca va être un peu long alors...il va vous falloir de la patience...:o) Bon en fait je suis débutante en cobol...et j'ai un projet à rendre en décembre...je dois faire un programme assez simple sur les fichiers...notre prof ne connait rien dans ce langage et nous a dit de rechercher un truc tout fait sur le net et l expliquer ensuite...(et oui c la belle vie :o) ) dans le seul truc que j'ai trouvé je n arrive pas a trouver mes fautes...alors le mieux est de vous donenr le code source...et si vous êtes assez courageux pour m aider...ben ca m aidera a reussir un examen :o))

identification division.
program-id. fichiers.

environment division.
configuration section.
source-computer.
object-computer.
input-output section.
file-control.
select f-fic1 assign to "fic1.dat".

data division.
file section.
fd f-fic1.
01 enr-fic1.
02 nom pic X(20).
02 note pic 99V99.
working-storage section.
77 ED-note pic z9.99.
77 weof pic X.
88 eof value "V".

procedure division.
principale section.

principal.
display "creation d un fichier etudiant".
open output f-fic1.
perform lit-nom.
perform creation until nom = spaces.
close f-fic1.
perform relecture.
stop run.

lit-nom.
display "Nom (fin = entree) ? ".
move spaces to nom.
accept nom.

creation.
display "note ? ".
accept note.
write enr-fic1.
perform lit-nom.

relecture.
display "Contenu du fichier ".
display "__________________ ".
open input f-fic1.
move "F" to weof.

perform traite until eof.
close f-fic1.

lit-enr.
read f-fic1
at end move "V" to weof
end-read.

traite.
move note to ED-note.
display "Nom : " nom.
display "Note : " ED-note.

Voici mes erreurs...
0010:Invalid SELECT sentence. fic1.dat
0010:Unrecognizable element is ignored. fic1.dat
11
** Scanning Data Division...
** Compiling Procedure Division...
0058:Unrecognizable element is ignored. END-READ
J'utilise le compilateur 2.0...
Voilà...merci d avance... :o) et puis si vous en avez marre beh...c po grave...ou peut etre que si vous avez pas de patience du tout vous trouverez des adresses internet avec des pgms sur les fichiers tout faits :D
bye...et merci encore...si vs avez le courage de lire jusqu au bout :o)
0
Dimandja
 
1. Essais d'ecrire le SELECT sans quotes, comme ca (ca pourrait marcher):

select f-fic1 assign to fic1.dat.

2. Ton compiler ne semble pas supporter les "statement delimiters" comme END-READ.

3. Reecris les trois derniers paragraphs comme-ci:

relecture.
display "Contenu du fichier ".
display "__________________ ".
open input f-fic1.
move "F" to weof.
PERFORM LIT-ENR.
perform traite until eof.
close f-fic1.

lit-enr.
read f-fic1
at end move "V" to weof.

traite.
move note to ED-note.
display "Nom : " nom.
display "Note : " ED-note.
PERFORM LIT-ENR.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dimandja
 
1. Essais d'ecrire le SELECT sans quotes, comme ca (ca pourrait marcher):

select f-fic1 assign to fic1.dat.

2. Ton compiler ne semble pas supporter les "statement delimiters" comme END-READ.

3. Reecris les trois derniers paragraphs comme-ci:

relecture.
display "Contenu du fichier ".
display "__________________ ".
open input f-fic1.
move "F" to weof.
PERFORM LIT-ENR.
perform traite until eof.
close f-fic1.

lit-enr.
read f-fic1
at end move "V" to weof.

traite.
move note to ED-note.
display "Nom : " nom.
display "Note : " ED-note.
PERFORM LIT-ENR.
0
laurence92 Messages postés 17 Statut Membre
 
J'ai fait ce que tu as dit...pour le fichier entre quotes ca ne va tjs pas...il me trouve encore plus d'erreurs qd je les enlève...et en les laissant il ne me trouve plus que 2 erreurs... : invalid select sentence et unrecognizable element...
Par contre pour le reste il n y a plus de problème...merci beaucoup!!
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Salut,

je confirme que les statements END-READ, END-PERFORM sont dans la norme COBOL 85, ton compilateur semble compiler en norme COBOL 74.

Tu es sur quelle machine ? avec quel OS ? C'est quoi comme compilateur ?

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
laurence92 Messages postés 17 Statut Membre
 
Oui c'est le compilateur 2.0 ... j'utilise Win XP avec un processeur AMD 2000...enfin je pense pas que ce soit du à windows ou à ma machine...je vais chercher apres un autre compilateur...on verra...!
En tous cas, un grand merci à vous...pcq dans les autres forum je n'ai jms eu de réponse...!
@ + ...
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Compilateur de quelle marque ? parce que 2.0, ça ne nous aide pas beaucoup ! :-)

la clause select ne doit pas avoir de nom de fichier en dur (pour autant que je m'en souvienne !), mais possède un indicateur qui fait le lien avec le string physique du fichier.
Il faudrait voir dans la doc du logiciel comment c'est géré...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
laurence92 Messages postés 17 Statut Membre
 
Oupsss désolée...c'est un compilateur Microsoft...:o)
0
jisisv Messages postés 3678 Statut Modérateur 935
 
Salut,
Pour le fun, j'ai compilé ton source avec tinycobol
sous Linux
http://tiny-cobol.sourceforge.net/
J'ai modifié quelque peu les sections descriptives

identification division.
program-id. fichiers.

environment division.
configuration section.
input-output section.
file-control.
select f-fic1 assign to "fic1.dat".

Tout ce que je peux dire, c'esq que celà compile,
ne donne pas de segmentation fault.
J'introduit deux séries de données, puis après une entrée vide,
il y a un cycle ->
Nom :
Note : 20.00
ad vitam eternam.
Je n'ai malheureusement pas le temps d'examiner plus en profondeur (en plus du Cobol j'en ai fait il y a 20 ans
à l'université ;)

Je regarderai ça ce week-end pour le fun.
Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
jisisv Messages postés 3678 Statut Modérateur 935
 
Hi,
Le fichier fic1.dat est bien créé:
cat fic1.dat
Johan 1000Eric 2000
Avec les espaces qui ne passent pas dans html

Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
laurence92 Messages postés 17 Statut Membre
 
Merci...c sympa d'avoir regardé à ça... ;o) mais je dois quand meme le faire sous windows... :o)
@ + !
0
Dimandja
 
Microsoft COBOL est tros vieux pour utiliser END-READ.

Pour le reste, essais un truc pareil:

SELECT f-fic1 ASSIGN TO DISK "fic1.dat"
ORGANIZATION IS LINE SEQUENTIAL.
0
laurence92 Messages postés 17 Statut Membre
 
Ha...c'est pourtant celui que l'on doit utiliser ... :os je suis dans la merde là... :o)
J'ai fait ce que tout le monde m'a dit...
Voilà le listing...

identification division.
program-id. fichiers.

environment division.
configuration section.
source-computer.
object-computer.
input-output section.
file-control.
select f-fic1.

data division.
file section.
fd f-fic1.
01 enr-fic1.
02 nom pic X(20).
02 note pic 99V99.
working-storage section.
77 ED-note pic z9.99.
77 weof pic X.
88 eof value "V".

procedure division.
principale section.

principal.
display "creation d un fichier etudiant".
open output f-fic1.
perform lit-nom.
perform creation until nom = spaces.
close f-fic1.
perform relecture.
stop run.

lit-nom.
display "Nom (fin = entree) ? ".
move spaces to nom.
accept nom.

creation.
display "note ? ".
accept note.
write enr-fic1.
perform lit-nom.

relecture.
display "Contenu du fichier ".
display "__________________ ".
open input f-fic1.
move "F" to weof.
perform lit-enr.
perform traite until eof.
close f-fic1.

lit-enr.
read f-fic1
at end move "V" to weof.

traite.
move note to ED-note.
display "Nom : " nom.
display "Note : " ED-note.
perform lit-enr.

et il me reste seulement une faute...

** Scanning Environment Division...
0013:Invalid SELECT sentence. DATA
13 data division.
** Scanning Data Division...
** Compiling Procedure Division...
** Generating Object Code...

1 error or warning

Désolée mais ce langage c'est vraiment pas mon fort... :o(
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
Sans la doc, tu ne sauras pas t'en sortir :

la clause SELECT nomdefichierlogique ASSIGN TO nomdefichierphysique

sert à faire le lien entre le nom que tu utilises dans ton prog et le nom physique du fichier tel qu'il est accédé sous l'OS.

Un début d'aide cobol :

http://perso.wanadoo.fr/pier/cours/cobol.htm

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
laurence92 Messages postés 17 Statut Membre
 
Merci...j'avais déjà lu ce cours mais il n'y a rien concernant les fichiers...plus tard j'ai trouvé ce cours qui n'était pas mal fait...d'ailleur mon exercice vient de là...
http://dept-info.labri.u-bordeaux.fr/~lachaud/IUT/ASD-Prog-2002-2003-S2/ASD-Cours/Cours_Eric.doc
Mais de moi meme je n y arriverai pas...le probleme est que ce cours est le moins important...je n ai eu que 8h de cours...avec une prof qui n y connaissait rien...et j'ai un tas d'autres cours où je dois rendre des travaux...alors je ne m'attarde pas à étudier le cobol profondément quoi...Tout ce que je sais est dans ce cours et en retapant le programme j ai vu qu il ne fonctionnait pas...Enfin voilà...!
Merci pour à tous pour votre aide :o)
0
Dimandja
 
As-tu essaye ceci?

SELECT f-fic1 ASSIGN TO DISK "fic1.dat".
0
laurence92 Messages postés 17 Statut Membre
 
ben non ca va tjs pas...c'est pas grave je vais pas continuer à vous emmerder avec ça...:o) je trouverai bien une solution...enfin j espère :o) Merci qd meme ;o)
0
laurence92 Messages postés 17 Statut Membre
 
Coucou...en cherchant encore et toujours j ai trouvé que ce programme est en fait un pgm qui utilise le compilateur Acucobol-gt qque chose comme ca...qqun sait si ce programme pourrait aller avec un autre compilateur que celui là??? C'est plus simple que de le modifier à mon avis... :o|
Merci...
0
blux Messages postés 27993 Date d'inscription   Statut Modérateur Dernière intervention   3 367
 
En fait, COBOL est un standard de programmation, tu dois donc pouvoir compiler ton code sur un autre compilateur.

Avec cependant une exception : tout ce qui se rapporte physiquement à la machine est propre au compilateur (gestion des e/s, entrée de données clavier...), donc tu auras une clause SELECT particulière selon ton compilateur et ta machine. Et tu dois la connaître...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
laurence92 Messages postés 17 Statut Membre
 
ok...:o) merci pour votre aide...!
et à très bientot...;o)
0
SJEric Messages postés 26 Statut Membre 1
 
Salut à tous, ouh la, je viens donner mon ptit avis sur le prob, ça a l'air corsé tt ça. Moi, je dirais plutôt de mettre: SELECT f-fic1 ASSIGN TO DISK. Puis ds la data division, file section, il faudrait FD f-fic1 LABEL RECORD STANDARD; VALUE OF FILE-ID IS "c:\fic1.dat" Je n'ai pas parcouru tt le prog (le ferais chez moi) mais je pense que ceci serait 1 bon début. Tiens nous au courant ! ! !
0
laurence92 Messages postés 17 Statut Membre
 
heu...tout ce que j'ai à dire c'est que...t'es le meilleur!!!!
Ca tourne très bien...:o) vraiment merci beaucoup !!!!
0
SJEric Messages postés 26 Statut Membre 1
 
Super, super - Je viens de terminer ma session de cours en Cobol (ce qui fait que c'est du tout frais ds la tête) - n'hésites pas pour d'autres questions, suis passionné par le sujet ! ! ! !
0