Tu bom prikazal standardne posebnosti v Fortranu, ki jih boste s pridom uporabili pri programiranju. Priporoèa se tipkanje programa z malimi èrkami, saj je tako kodiran program bolj èitljiv.
Formatne stavke vkljuèene lahko vkljuèimo v ukaz read ali write: {
character ime*65
write(*, '('' Ime vhodne datoteke: '', $)' )
read(*,'(A)') ime
Datoteke delimo na tekstovne in binarne. Direktna datoteka je
poseben primer binarne datoteke, ki ima fiksno dol¾ino
zapisa (record). Fortran omogoèa branje/pisanje v prostem
formatu (*), uporabni¹kem formatu (format()) in brez formata
(samo v binarne datoteke). Neformatirano direktno datoteko z
dol¾ino enega zapisa 58 bytov se odpre z ukazom
open(1, 'materiali.bin', status='UNKNOWN', * access='DIRECT', form='UNFORMATTED', * recl=58)
Dol¾ina enega zapisa RECL se doloèa z maksimalno velikostjo zapisa v datoteki. Zapisi imajo lahko razliène vsebine podatkov, dol¾ina zapisa pa je fiksna zaradi hitrej¹ega doloèanja pozicije datoteènega kazalca. Doloèi se jo s se¹tevkom dol¾ine vseh spremenljivk in upo¹tevanjem, da zavzame realna spremenljivka 4 byte, celo¹tevilèna 2, znakovna pa toliko, kolikor znakov ima rezerviranih.
Za branje in pisanje enote se uporablja standardni read/write
stavek brez podatka o formatu.
write(1, rec=2) naziv, k_mat
read(1, rec=2) naziv, k_mat
Pri vseh branjih in pisanjih se lahko testira napaka ob konverziji
ali napaka na vhodno/izhodno enoti s parametrom err. Primer:
integer cona
character*80 line
...
read(2, '(A)') line
if (line(1:4) .eq. 'cona') then
read(line(5:80), '(I10)', err=102) cona
end if
...
return
102 stop 'Napacen podatek za temperaturno cono!'
end
Fortran omogoèa pisanje in branje v svoje interne enote v
obliki character polja. To nam omogoèa pretvarjanje
numeriènih spremenljivk v znakovne. Najveèkrat se to uporablja
za podprograme, ki zahtevajo kot parameter znakovno
spremenljivko, na voljo pa imamo le numerièno spremenljivko.
Tipièen primer uporabe je izpis teksta v jeziku GKS. Primer:
character cnode*3
integer node
...
write(cnode, '(I3)') node
call gtx(x, y, cnode)
end