J'essaie de trouver un moyen de vérifier si un fichier est déjà ouvert dans COBOL, de sorte que je puisse l'ouvrir s'il est fermé ou le fermer s'il est ouvert.Comment vérifier si un fichier est déjà ouvert en COBOL?
Thnx.
J'essaie de trouver un moyen de vérifier si un fichier est déjà ouvert dans COBOL, de sorte que je puisse l'ouvrir s'il est fermé ou le fermer s'il est ouvert.Comment vérifier si un fichier est déjà ouvert en COBOL?
Thnx.
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
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.
Thnx beaucoup, surtout pour le lien. Je suis totalement nouveau à Cobol, donc la ressource est très appréciée! – doro