open (lista_de_especificadores)
donde los especificadores más comunes son:
[UNIT=] u
IOSTAT= ios
ERR= err
FILE= nomb_arch
STATUS= sta
ACCESS= acc
FORM= frm
RECL= rl
El número de unidad u es un número en el rango de 9-99 para algún archivo, el programador lo escoge debiendo ser un número único.
ios es el identificador del estado de la E/S y debe ser una variable entera. El valor que regresa ios es cero si la sentencia fue exitosa y sino, regresa un valor diferente de cero.
err es una etiqueta a la cual el programa saltará si hay un error.
nomb_arch es una cadena de caracteres que contiene el nombre del archivo.
sta es una cadena de caracteres que tiene que ser NEW, OLD o SCRATCH. Esta muestra el estatus del archivo. Un archivo scratch es aquel que es creado y borrado cuando el archivo es cerrado (o el programa termina).
acc deberá ser SEQUENTIAL o DIRECT. El valor predefinido es SEQUENTIAL.
frm deberá ser FORMATTED o UNFORMATTED. El valor predefinido es UNFORMATTED.
rl indica la longitud de cada registro en un archivo de acceso directo.
Para más detalles en los especificadores, se recomienda que se revise un buen libro de Fortran 77.
Una vez que un archivo ha sido abierto, se puede acceder con sentencias de lectura y escritura. Cuando se manipula un archivo y se termina de usar, deberá ser cerrado usando la sentencia.
close ([UNIT=]u[,IOSTAT=ios,ERR=err,STATUS=sta])
donde, los parámetros en bracket [] son opcionales
read ([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
write([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
donde la mayoría de los especificadores han sido descritos anteriormente. El
especificador END=s define a que sentencia saltará el programa si se alcanza
el fin del archivo (eof).
program entdat
c
c Este programa lee n puntos desde un archivo de datos y los guarda en
c 3 arreglos x, y, z.
c
integer nmax, u
parameter (nmax=1000, u=20)
real x(nmax), y(nmax), z(nmax)
c Abrir el archivo de datos
open (u, FILE='puntos.dat', STATUS='OLD')
c Leer el número de puntos
read(u,*) n
if (n.GT.nmax) then
write(*,*) 'Error: n = ', n, 'es más largo que nmax =', nmax
goto 9999
endif
c Ciclo para recuperar los datos
do 10 i= 1, n
read(u,100) x(i), y(i), z(i)
10 enddo
100 format (3(F10.4))
c Cerrar el archivo
close (u)
c Ahora se procesarán los datos
c ...
9999 stop
end