Eddig is látthattuk a Fortranban be- és kimenet (azaz I/O = input/output) használata teljesen megegyezik a hétköznapival. Sõt, akár fájlokból is beolvashatunk vagy fájlokba is kiirathatunk, amelyeket valamilyen fizikai egységen tároljuk: merevlemezen, floppyn, cd-n, dvd-n. A Fortranban 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 egyedi szám azonban már foglalt: az 5 a standard bemenet, a 6 a standard kimenetre utal.
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= rlAz egyedi szám az u, ami egy 1-99 közötti egész szám. A program ezzel azonosítja fájlt. Fontos, hogy egy az egyes fájlok egyedi számai különfélék legyenek, épp ezért egyedi.
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)
Miután megnyitottunk egy fájlt, utasításokat (kiiratást stb.) eszközölhetünk rajta. Miután ezekkel végeztünk a fáljt be kell zárnunk, ezt az alábbi módon kell megtennünk:
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)
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.
program inpdat
c
c Ez a program beolvassa n pont adatait egy 3 dimenzios 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
c (hianyzo resz)
9999 stop
end
Copyright © 1995-7 by Stanford University. All rights reserved.
Fordították: Seres András Tamás és Szalai Szilvia (ELTE-TTK)