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)