Voici une séquence qui fonctionne chez moi et qui met en oeuvre un fichier à organisation et accès directs.
IO_ORDRE = 'INQUIRE_DIR'
INQUIRE (FILE = F_NAME_DIR,
S OPENED = F_OP, EXIST = F_EX,
S DIRECT = F_DIR, ERR = 15 )
IF ( F_DIR .eq. 'YES' ) THEN
PRINT 700, F_NAME_DIR, F_DIR, 'peut donc '
ELSE
PRINT 700, F_NAME_DIR, F_DIR, 'NE PEUT PAS'
GO TO 150
END IF
C Ouverture en accès direct du fichier F_NAME_DIR.
IO_ORDRE = 'OPEN_DIR'
OPEN (UNIT = DATA_UT_DIR, IOSTAT = IO_RC,
S FILE = F_NAME_DIR, STATUS = 'OLD',
S ACCESS = 'DIRECT', FORM = 'FORMATTED',
S ERR = 15, RECL = F_SIZE_DIR)
C ----------------------------------------------------------------
C Lectures pour affichage console des enreg;F_NAME_DIR AVANT MODIF
C ----------------------------------------------------------------
PRINT 1000
PRINT 1010
IO_ORDRE = 'READ_DIR'
CPT_ENREG = 1
IO_RC = 0
DO WHILE (IO_RC == 0)
IO_ORDRE = 'READ_DIR'
READ (UNIT = DATA_UT_DIR, IOSTAT = IO_RC,
S FMT = 500, REC = CPT_ENREG,
S ERR = 15)
S LINE
IF (IO_RC .eq. -1) THEN
PRINT 1010
PRINT *,F_NAME_DIR, ': Fin normale de fichier RC : ',
S IO_RC,' SUR ORDRE : ', IO_ORDRE
PRINT *,F_NAME_DIR, ': Nb. d''enregistrements lus : ',
S CPT_ENREG - 1
ELSE
PRINT 500, LINE
CPT_ENREG = CPT_ENREG + 1
ENDIF
END DO
...........................................
...........................................
GO TO ..........
15 PRINT *,' '
PRINT *, 'ANOMALIE ENTREE/SORTIE FS : ', IO_RC, ' SUR ORDRE :'
S ,IO_ORDRE
GO TO .....................
150 IO_ORDRE = 'CLOSE_OUT_DIR'
CLOSE (UNIT = DATA_UT_OUT, IOSTAT = IO_RC,
S ERR = 15, STATUS = 'KEEP')
...............................................
.............................................
100 FORMAT (I3, F10.2, F10.2 )
200 FORMAT (1X, (BZ,I3), 2X, (BZ,F10.2), 2X, F10.2, 2X, F10.2 )
300 FORMAT (1X, 'Le resultat de A (', F6.2, ') + B (', F6.2,
S ') est C = ', F6.2 )
400 FORMAT (20X, 'TAB2 (', I3, ')', ' = ', I3 )
500 FORMAT (A80 )
510 FORMAT (I4, A76)
600 FORMAT (//,1X, 'INQUIRE passé sur ', A13,
S ' apres creation des ', I4,
S ' enregistrements d''une', /, 1X,
S ' longueur de:', I4,
S ' caracteres chacun. Status : OPEN : ', L1,
S ' -- EXISTE : ', L1 )
700 FORMAT (//,1X, A10,' status DIRECT : ', A3,
S '. Ce fichier ', A13,
S ' etre accede en direct')
800 FORMAT (/,1X, A10, ' ne contient pas plus de ', I4,
S ' enregistrements. Entrez une valeur : ', $ )
900 FORMAT (1X, 1I3, 1X, A9, 1I2, 1I2, ' ', 1I5, '-', A8,
S ' dans ', A13, ' step: ', A15 )
910 FORMAT (1X,I3, A9, 1I2, 1I2, ' ', 1I5, '-', A8,
S ' dans ', A13, ' step: ', A15 )
1000 FORMAT (
S '0 1 2 3 4 5 ',
S ' 6 7 8' )
1010 FORMAT (
S '1---5----0----5----0----5----0----5----0----5----0----5',
S '----0----5----0----5----0', / )
P.S. Question : Le fichier file='
eta_fct_of_time' a bien été
créé en tant que fichier à organisation et accés directs ? Ce n'est pas un fichier créé en "séquentiel" que tu tentes d'ouvrir en accés direct.
Cordialement.
Cchristian.