A Fortran programozási nyelv

Fájlkezelés

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

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