problème de lecture d'un fichier en cobol

problème de lecture d'un fichier en cobol - Divers - Programmation

Marsh Posté le 10-05-2006 à 16:29:27    

bonjour,
je fais un petit programme qui doit acceéder a un fichier .dat.
quand je l'exécute, j'ai un message qui dit :
146   no current reccord defined for sequential read fi-skieur.dat.
fi-skieur.dat étant mon fichier .dat
Merci de bien vouloir m'aider en me disant les causes de cette erreur.
Merci

Reply

Marsh Posté le 10-05-2006 à 16:29:27   

Reply

Marsh Posté le 10-05-2006 à 17:26:47    

Donne au moins la commande qui accede au fichier .dat
 
et peux tu préciser quelle est la taille de ton .dat ?
d'où est-ce qu'il vient ? généré par un programme ?
il viens de ta machine ou d'une autre ?
 

Reply

Marsh Posté le 10-05-2006 à 18:39:04    

voila la partie qui pose problème :  
    move 'O' to vnvres                                            
    move 'N' to vretourmenu                                      
    perform until vretourmenu <> 'N'                              
    perform until vnvres <> 'O'                                  
        move 12 to ligne                                          
        initialize trouve                                        
        display plg-titre                                        
        display plg-3                                            
        display plg-3-1                                          
        accept compet                                            
        open i-o fi-skieur                                        
        perform varying i from 1 by 1 until finfichier            
            read fi-skieur next                                  
            perform varying j from 1 by 1 until j>10              
            or trouve = 1                                        
                if refcomp(j) = compet then                      
                    move 1 to trouve                              
                end-if                                            
            end-perform                                          
        end-perform                                              
        close fi-skieur                                          
        if trouve = 1 then                                        
            display plg-3-2                                      
            open i-o fi-skieur                                    
            perform until finfichier                              
                read fi-skieur next                              
                initialize trouve                                
                perform varying i from 1 by 1 until i>10          
                or trouve = 1                                    
                    if refcomp(i) = compet                        
                    and rang(i) not = 0 then                      
                        move 1 to trouve                          
                        move rang(i) to indice                    
                        move nomski to tab-rang(indice)          
                    end-if                                        
                end-perform                                      
            end-perform                                          
            close fi-skieur                                      
            perform varying j from 1 by 1 until j>10 or          
            tab-rang(j) = spaces                                  
                display plg-3-8                                  
                compute ligne = ligne + 1                        
            end-perform                                          
        else                                                      
            display plg-3-7                                      
        end-if                                                    
        display plg-3-4                                          
        accept vnvres                                            
        if (vnvres = 'N') then                                    
            display plg-3-5                                      
            accept vretourmenu                                    
            if (vretourmenu = 'N') then                          
                display plg-fini                                  
                exit                                              
            end-if                                                
            if (vretourmenu = 'O') then                          
                display plg-titre                                
                display plg-menu                                  
            end-if                                                
        end-if                                                    
    end-perform                                                  
    end-perform.                                                  
 
Quand c'est lancé, il me dit met le message d'erreur et surligne la ligne qui lit le fichier juste après l'avoir ouvert et commentcer une boucle tant qu'on est pas à la fin du fichier.
Voila.
En espérent quevous trouverez la solution.
Merci

Reply

Marsh Posté le 10-05-2006 à 18:50:47    

L'erreur est le read qui se trouve a la ligne 13 du code affiché.
Le nom du fichier .dat est fi-skieur.dat, il fait 315 de long et il se trouve dans le meme dossier que le fichier .cbl

Reply

Marsh Posté le 10-05-2006 à 19:01:26    

Le message semble indiquer un problème de définition, donc un problème qui se situerait dans l'Environment ou la Data Division.
Pour des explications et des exemples, voir http://members.aol.com/CobolHouse/cobolma1.htm#files

Reply

Marsh Posté le 10-05-2006 à 19:25:15    

Regarde là : http://cobol.2000.free.fr/page.php [...] =cobol#ch7
la partie sur les fichiers
 
en particulier DATA RECORD,
c'est peut etre ce que ton erreur te demande.

Reply

Marsh Posté le 10-05-2006 à 19:52:11    

merci pour ces réponses mais je ne vois pas pourkoi mon code ne marche pas. j'ai bien les select au début, le read....

Reply

Marsh Posté le 18-06-2007 à 18:13:12    

alexletiti a écrit :

bonjour,
je fais un petit programme qui doit acceéder a un fichier .dat.
quand je l'exécute, j'ai un message qui dit :
146 no current reccord defined for sequential read fi-skieur.dat.
fi-skieur.dat étant mon fichier .dat
Merci de bien vouloir m'aider en me disant les causes de cette erreur.
Merci


 
:o remontée de topic pour une question con : ton fichier est vide ? (no current record)  
- lors de la 1e lecture, si t'as pas de test de fichier vide ca plante...
 
edit : pour le fichier vide le "file-status" c'est 90, en général on teste là-dessus pour toute lecture de fichier...


Message édité par ShadowKnight le 19-06-2007 à 15:57:51

---------------
"Parfois, il faut savoir accepter qu'il ne se passe rien..."
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed