2010-02-09 36 views

Répondre

5

Cochez la case FILE STATUS et agissez en conséquence.

les opérations suivantes:

Ajouter un FILE-STATUS sous le FILE-CONTROL, par exemple:

 
    FILE-CONTROL. 
     SELECT MYFILE ASSIGN MYDD 
       ORGANIZATION SEQUENTIAL 
       ACCESS  SEQUENTIAL 
       FILE STATUS MYFILE-STATUS. 

Déclarez une variable FILE STATUS dans WORKING-STORAGE en tant que valeur PIC X(2), par exemple:

 
      01 MYFILE-STATUS PIC X(2). 
       88 MYFILE-ALREADY-OPEN VALUE '41'. 

Puis dans le PROCEDURE DIVISION émettez un OPEN pour votre fichier . Immédiatement après cela, tester la valeur de FILE STATUS comme dans:

 
    OPEN MYFILE.... 
    IF MYFILE-ALRADY-OPEN 
     CLOSE MYFILE... 
    END-IF 
    IF MYFILE-STATUS <> '00' 
     perform some sort of general error routine 
    END-IF 

valeurs de FILE STATUS où le premier caractère est pas un « 9 », sont valeurs standard COBOL tester si pour « 41 » pour détecter une le fichier déjà ouvert devrait fonctionner sur toutes les implémentations COBOL. Méfiez-vous quand le premier caractère est un '9', ce sont des codes d'état de fichier spécifiques au fournisseur. Consultez le lien suivant pour une bonne introduction à l'utilisation COBOL FILE STATUS: http://www.simotime.com/vsmfsk01.htm

+0

Thnx beaucoup, surtout pour le lien. Je suis totalement nouveau à Cobol, donc la ressource est très appréciée! – doro

1

Votre compilateur peut également fournir une API externe, comme CBL_CHECK_FILE_EXIST qui se trouve sur Micro Focus COBOL, AcuCOBOL et Fujutsu COBOL.

Par exemple, sur Micro Focus COBOL:

copy "cblproto.cpy". 

program-id. MYMAIN. 
working-storage section. 
01 . 
    05 file-details cblt-fileexist-buf. 

procedure division. 
    call 'CBL_CHECK_FILE_EXIST' using 'mymain.cbl ' 
             file-details 
    if return-code not = 0 
     display "File mymain.cbl does not exist (or error)" 
    else 
     display "File mymain.cbl size is " cblt-fe-filesize 
     of file-details 
    end-if 
end program MYMAIN.