Egy Fortranban programban minden egyes fájlhoz egy egyedi szám tartozik, melynek értéke egy 1 és 99 közötti egész szám lehet. Néhány szám azonban már foglalt: az 5 a standard bemenet, a 6 a standard kimenetre utal.
Fáljok megnyitása és bezárása
Ahhoz, hogy egy fájlt használni tudjunk, előbb meg kell nyitnunk azt az open parancsal.
open (különféle specifikációk listája)
ahol a leggyakoribb specifikációk az alábbiak:
[UNIT=] u
IOSTAT= ios
ERR= err
FILE= fname
STATUS= sta
ACCESS= acc
FORM= frm
RECL= rl
- Az egyedi szám az u, ami egy 1-99 közötti egész szám. A program ezzel azonosítja fájlt.
- ios egy a be és kimenet (I/O) állapotát jelzi, ami egy egész szám. Ha az alkalmazás és visszatérés után az ios nulla, akkor sikeres, ha nem nulla, akkor sikertelen volt utasítás-végrehajtás.
- err egy cimke, ahova akkor ugrik a program ha hibát talál..
- fname a fáljnévre utal
- sta a kezelendő fálj korábbi állapotát jelzi, ami lehet NEW (új, azaz a futtatáskor hozza létre), OLD (régi, azaz már meglévő fájl), és SCRATCH (ideiglenes fálj, ami megnyitáskor vagy a program indításakor) keletkezik, de a bezárásnál (vagy a program lefutása után) azonnal törlődik.
- acc a fálj elérését jelenti, ami kétféle lehet vagy SEQUENTIAL (szekvenciális, közvetett) vagy DIRECT (direkt, közvetlen) Az alapértelmezett a SEQUENTIAL.
- frm a fálj formátumát jelöli, ami lehet FORMATTED (formázott) vagy UNFORMATTED (formázatlan). Az alapértelmezett az UNFORMATTED.
- rl jelöli egy direkt elérésű fálj rekordjainak a hosszúságát (a fálj méretére utal)
Ha már nem használjuk tovább a fájlt, akkor az alábbi módon tudjuk bezárni:
close ([UNIT=]u[,IOSTAT=ios,ERR=err,STATUS=sta])
ahol a zárójelben lévő paraméterek értelme és használata szinte teljesen megegyezik a feljebb tárgyaltakéval. Egy kis eltérés azért van, ez a sta: ami kétféle lehet ebben az esetben: vagy KEEP (megtartani a fájlt, ez az alapértelmezett) vagy DELETE (letörölni a fájlt).
A read és write utasítás
Az egyetlen eltérés a korábban definált read/write utasításokhoz képest, az egyedi szám egzakt megnevezése és specifikációja.
read ([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
write([UNIT=]u, [FMT=]fmt, IOSTAT=ios, ERR=err, END=s)
ahol a legtöbb specifikációt már feljebb értelmeztük. az END=s egy utasítás cimkére utal, ahova a program ugrik, miután elérte a kezelt fájl végét.
Egy példa
Adva van egy points.dat nevű adatfájl, amiben néhány pont xyz koordinátája van felsorolva. A pontok számát e fálj első sorában találjuk.Az egyes koordináták formátuma F10.4 (erről és a FORMAT utasításról majd később lesz szó). A következő kis program beolvassa az adatokat három egydimenziós tömbbe (x,y,z).
program inpdat
c
c Ez a program beolvassa n pont adatait három egydimenzios x,y,z tombbe
integer nmax, u
parameter (nmax=1000, u=20)
real x(nmax), y(nmax), z(nmax)
c Megnyitjuk az adatfile-t
open (u, FILE='points.dat', STATUS='OLD')
c Beolvassuk a pontok szamat
read(u,*) n
if (n.GT.nmax) then
write(*,*) 'Error: n = ', n, 'ha nagyobb mint nmax =', nmax
goto 9999
endif
c Beolvasasi ciklus a ponthalmazra
do 10 i= 1, n
read(u,100) x(i), y(i), z(i)
10 enddo
100 format (3(F10.4))
c Close the file
close (u)
c Most kovetkezik a beolvasott adathalmaz alkalmazasa
9999 stop
end