0% found this document useful (0 votes)
37 views34 pages

Formatirani (Ure Deni) Ispis Podataka I Rad S Datotekama: Numeri Cke Metode

This document discusses formatted output and file handling in Fortran. It provides an overview of formatted output, integer editing, character and logical editing, real number editing, special format characters, format repetition, and file handling commands like open, close, read, and write.

Uploaded by

Sasa Leung
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views34 pages

Formatirani (Ure Deni) Ispis Podataka I Rad S Datotekama: Numeri Cke Metode

This document discusses formatted output and file handling in Fortran. It provides an overview of formatted output, integer editing, character and logical editing, real number editing, special format characters, format repetition, and file handling commands like open, close, read, and write.

Uploaded by

Sasa Leung
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Formatirani (ure

deni) ispis podataka


i rad s datotekama
Numeri cke metode
Ivo Batisti c
Fizi cki odsjek, PMF
Sveu cilite u Zagrebu
predavanja 2005/2006
Pregled predavanja
Ure

deni ispis podataka - FORMAT
Ure

divanje cijelih brojeva
Ure

divanje ligi ckih podataka i znakova
Ure

divanje realnih brojeva
Posebni znakovi u ure

divanju
Ponavljanje ure

divanja
Rad s ure

dajima
Otvaranje ure

daja - OPEN
Zatvaranje ura

daja - CLOSE
Pisanje (ispis) - WRITE

Citanje s ure

daja - READ
Ostale upis/ispis naredbe
Rad s imenovanim listama - NAMELIST

Citanje/pisanje iz/u niz znakova


Ure

deni ispis podataka

Podatke ispisujemo pomo cu PRINT i WRITE naredbi.

Razlika izme

du PRINT i WRITE je da PRINT ispisuje na standardni
izlaz (ispis), dok WRITE naredba moe ispisivati na razne ure

daje,
te broj mogu cih opcija i puno ve ci.
INTEGER :: a=1, b=2, c=3
PRINT *, a
PRINT (i),b
PRINT 100,c
100 FORMAT (i)
INTEGER :: a=1, b=2, c=3
WRITE (*,*) a
WRITE (*,(i)) b
WRITE (*,100) c
100 FORMAT (i)

Na cin ispisa podatak moe se ostaviti nedeniranim, nego


ostaviti sustavu (prevoditelju) da ispie podatke na predenirani
na cin za tu vrstu podataka. To je tj. slobodni format ispisa.
Ure

deni ispis podataka

Ispis podataka moe se zadati preko format instukcija koje su dio


PRINT/WRITE naredni ili se moe zadati preko FORMAT
naredbe.

Neme razlike izme



du jednog ili drugog na cina.

FORMAT naredbe je posebna u tome to to nije naredba koja se


izvrava nego je vie informacija PRINT/WRITE naredbi.

FORMAT naredba moe biti bilo gdje unutar programske cjeline,


te ima jedinstvenu numeri cku labelu pomo cu koje se naredbe
PRINT/WRITE referiraju na nju.

FORMAT naredba ima kao argumente listu slov canih oznaka


kombiniranih opcionalno s brojkama (te jo nekim dodatnim
znakovima) me

dusobno odvojenih zarezima. Svaki clan u listi
odnosi se na jedan podatak u listi varijabli za ispis u
PRINT/WRITE naredbi.
Ure

deni ispis podataka

Ove slov cane oznake u FORMAT naredbi nazivamo ure divanje


(eng. editing).

Svaka vrsta podataka trai svoju posebnu specikaciju ispisa, tj.


svoje posebno ure

divanje.

Ipak postoje ure



divanja koja su univerzalna za sve vrste
podataka. Npr.

slobodni format ozna cen zvjezdicom (*) se moe rabiti za sve


vrste podataka

g ure

divanje moe se tako

der rabiti za ispis svih vrsta podataka


INTEGER :: i = 123
REAL :: a = 2.34
LOGICAL :: s = .TRUE.
WRITE (6,(g)) i,a,s
ISPIS:
123
2.340000
T
Ure

divanje cijelih brojeva


Za ispis cijelih brojeva

za decimalni ispis broja koristimo i ure



divanje
i = -1234
PRINT (i),i ! -1234
! 2147483647 HUGE(i)

za binarni ispis broja koristimo b ure



divanje
i = -1234
PRINT (b),i ! 11111111111111111111101100101110

za oktalni ispis broja koristimo o ure



divanje
i = -1234
PRINT (o),i ! 37777775456

za heksadecimalni ispis koristimo z ure



divanje
i = -1234
PRINT (z),i ! FFFFFB2E
Ure

divanje cijelih brojeva

Iza oznake ure



divanja, slova i , b, o i z moe stajati broj koji je
irina podru cja unutar kojeg treba ispisati cijeli broj (npr. (i 10)).

Ako ispis broja ne stane u nazna cenu irinu, ispisuju se zvjezdice


(npr. j=100, (i 2)).

Ako se irina ne navede, tada se broj ispisuje u maksimalnu irinu


za tu vrstu podataka, tj. u onu u koju se moe upisati HUGE(i).

Ako je broj kra ci od nazna cene irine, broj se ispisuje na desnom


kraju s prazninom (ne ra cunaju ci predznak) ispred.

Praznina ispred moe se popuniti s nulama ako iza nazna cene


irine se doda to cka i dodatna brojka. Dodatna brojka ozna cava
minimalni broj znamenki u broju, ra cunaju ci i nule ispred (npr.
j=-1234, (i 10.6), ispis: -001234).

Obavezno ili opcionalno ispisivanje predznaka se posebno moe


regulirati s ure

divanjem.
Primjer
PROGRAM ispis_cijelih
INTEGER(KIND=4) :: i = -1234
PRINT (1x,a,i4), i4 ,i
PRINT (1x,a,i5), i5 ,i
PRINT (1x,a,i6), i6 ,i
PRINT (1x,a,i7), i7 ,i
PRINT (1x,a,i10.0),i10.0 ,i
PRINT (1x,a,i10.1),i10.1 ,i
PRINT (1x,a,i10.3),i10.3 ,i
PRINT (1x,a,i10.6),i10.6 ,i
PRINT (1x,a,i10.8),i10.8 ,i
END PROGRAM
ISPIS:
i4 ****
i5 -1234
i6 -1234
i7 -1234
i10.0 -1234
i10.1 -1234
i10.3 -1234
i10.6 -001234
i10.8 -00001234
Ure

divanje ligi ckih podataka i znakova

Za ispis logi ckih podataka koristimo L ure divanje.

Za ispis niza znakova koristi se a ure divanje.

Iza a ure divanja moe do ci opcionalno broj koji je irina podru cja
unutar kojeg se niz znakova ispisuje.

Znakovi se ipisuju na lijevoj strani nazna cene irine.

Ako irina podru cja nije dovoljna za ispis, ispisuje se onoliko znakova
koliko stane u nazna cenu irinu.
PROGRAM znakovi
CHARACTER(LEN=20) :: str
str = 9 znakova
PRINT (1x,a6,a), (a),str
PRINT (1x,a6,a8), (a8),str
PRINT (1x,a6,a9), (a9),str
PRINT (1x,a6,a10),(a10),str
PRINT (1x,a6,a11),(a11),str
PRINT (1x,a6,a15),(a15),str
END PROGRAM
ISPIS:
(a)9 znakova
(a8)9 znakov
(a9)9 znakova
(a10)9 znakova
(a11)9 znakova
(a15)9 znakova
Ure

divanje realnih brojeva

Za ispis realnih brojeva u binarnom, oktalnom ili


heksadecimalnom sustavu korisimo redom b, o i z ure

divanje.

Za ispise u decimalnom sustavu koristimo f , e, en, es ure



divanja.
Npr. ispis broja 1.91881 10
2
:

f 15.5 ure

divanje - ispis: 0.01919

e15.5 ure

divanje - ispis: 0.19188E-01

en15.5 ure

divanje - ispis: 19.18807E-03

es15.5 ure

divanje - ispis: 1.91881E-02

g15.5 ure

divanje - ispis: 0.19188E-01

es ozna cava tz. znanstveno ure



divanje, sve brojke se ispisuju
tako da je neeksponencijalni dio broja manji od 10 a ve ci od 1.

en je tz. ininjersko ure



divanje, neeksponencijalni dio broja je
manji od 1000 a ve ci od 1.

U e ure

divanju, neeksponencijalni dio broja je ozme

du 1.0 i 0.1.
Ure

divanje realnih brojeva

Broj iza oznake ure divanja ozna cava irinu podru cja unutar kojeg se
ispisuje broj. Ta irina mora obuhvatiti sve, predznak broja,
decimalnu to cku, eksponent i predznak eksponenta.

Iza irine podru cja (odvojeno to ckom) stoji broj decimalnih mjesta koji
se ispisuju.

Opcionalno mogu ce je regulirati broj znamenki u eksponentu


(e20.5E3 - 3 znamenke za eksponent)

Ako broj ne stane unutar zadane irine ispisuju se zvjezdice.


PROGRAM real_editing
REAL, DIMENSION(5) :: a
INTEGER :: i
CALL RANDOM_SEED
CALL RANDOM_NUMBER(a)
DO i=1,5
PRINT (1x,f15.5,e15.5,en15.5,es15.5,g15.5), &
a(i), a(i), a(i), a(i), a(i)
END DO
END PROGRAM
Posebni znakovi u ure

divanju

x ure

divanje - broj praznih mjesta

$ ure

divanje - ne pre ci na novu liniju nakon ispisa

sp - u nastavku aktivirati ispisivanje znaka + gdje je ina ce


opcionalan.

s - deaktivirati obavezno ispisivajne opcionalnog znaka +.

t ure

divanje slui za pozicioniranje ispisa.
PROGRAM pozicija
INTEGER :: i
INTEGER, DIMENSION(3,2) :: broj
broj(1:3,1) = (/ (i,i=1,3) /)
broj(1:3,2) = (/ (i,i=11,13) /)
PRINT (T20,"prvi",T5,"drugi")
DO i=1,3
PRINT (T20,i3,T5,i3),broj(i,:)
END DO
END PROGRAM
ISPIS:
drugi prvi
11 1
12 2
13 3
Ponavljanje ure

divanja

Brojke ispred ure



divanja zna ce broj ponavljanja (npr. 5i10 zna ci:
5 puta po 10 mjesta za ispis cijelih brojeva).

Zagrade se mogu koristiti za ponavljanje grupe ure



divanja (npr.
2(i5,f10.5) zna ci: 2 puta po 15 mjesta, od toga prvih 5 za cijeli
broj a drugih 10 za realni broj).

Ako se ispisuje ve ci broj varijabli od zadanog broja ure



divanja,
ispisuje se onoliko varijabli koliko je zadano ure

divanja, a ostatak
se ispisuje ponavljanjem cijele format naredbe ali na novim
linijama.

Ponekad je mogu ce koristiti varijabilno ure



divanje (nije dio
standarda). Broj ponavljanja, irina podru cja i broj decimala ovisi
o iznosu varijable koja je zatvorena u manje-ve ce zagrade
(bra-cat, < ... > ).
Primjer
PROGRAM fun
REAL, DIMENSION(5) :: a
INTEGER :: i,j
DATA a /1.,2.,3.,4.,5./
DO i=1,10
WRITE (6,(i<MAX(i,5)>)) i
END DO
DO i=1,5
WRITE (6,(<i>F10.<i-1>)) (a(i), j=1,i)
END DO
END PROGRAM
1
2
3
4
5
6
7
8
9
10
1.
2.0 2.0
3.00 3.00 3.00
4.000 4.000 4.000 4.000
5.0000 5.0000 5.0000 5.0000 5.0000
Rad s ure

dajima

Vanjski ure

daji se smatraju tvrdi disk, tra cna jedinica, konzola
(terminal) s tipkovnicom.

Rad s sloenim ure



dajima poput gra cke konzole zahtijeva
uporabu biblioteka cije naredbe nisu dio Fortrana kao jezika.

Ure

daji koji se automatski otvaraju kod pokretanja programa je
konzola s tipkovnicom. Konzola se tretira kao ure

daj za
standardni ispis (pisanje). Ure

daju je pridruen broj 6.
Tipokovnica je ure

daj za standarni upis (unos, citanje) i pridruen
joj je broj 5.

Ure

daje 5 i 6 ne treba posebno otvarati. Za rad s ostalim
ure

dajima treba ure

daju pridruiti broj ure daja koriste ci naredbu
OPEN.
Otvaranje ure

daja
Naredba OPEN ima veliki broj argumenata, od koji je obavezan broj
ure

daja:
OPEN([UNIT=]<cijeli_broj>,FILE=<ime_datiteke>,ERR=<labela>, &
STATUS=<status>,ACCESS=<metod>,ACTION=<nacin>, ...)

Argument UNIT=<integer> specicira broj ure



daja. Ime
argumenta UNIT je opcionalno, tj. moe se ispustiti.

Argument FILE odre



duje ime datoteke koja se otvara.

Opcionalni argument FORM ima dvije vrijednosti:

FORMATTED - Zapisi su ure

deni i moe ih se citati. Ovo se


pretpostavlja ako druga cije nije navedeno.

UNFORMATTED - zapisi su u binarnom obliku.


Otvaranje ure

daja

Argument STATUS govori o stanju ure



daja, da li je stara ili nova
datoteka. Mogu ce vrijednosti su:

OLD - radi se o datoteci koja ve c postoji.

NEW - treba otvoriti novu datoteku.

REPLACE - staru datoteku treba zamijeniti novom

SCRATCH - privremena daoteka koja ce po zatvaranju biti


izbrisana.

UNKNOWN - Ako postoji otvara se kao OLD datoteka, a ako ne


postoji onda kao NEW

Argument ACCESS specicira na cin pristupa zapisima u ure



daju.
Postoje dvije mogu cnosti:

SEQUENTIAL za citanje ili pisanje liniju po liniju,

odnosno DIRECT za direktni pristup pojedinim zapisima uz


pomo c ID broja zapisa. U ovom slu caju je potrebno kod otvaranja
navesti i duinu zapisa pomo cu opcionalnog argumenta
RECL=duina_zapisa.
Otvaranje ure

daja

Argument ACTION navodi nau nakanu: citanje, pisanje ili oboje.


Mogu ce vrijednosti su:

READ - otvaramo ure

daj samo za citati.

WRITE - otvaramo ure

daj samo za pisanje.

READWRITE - elimo i citati i pisati.

Argument ERR navodi broj labele u fortranskom programu na koju


treba i ci ako do

de do greke kod otvaranja ure

daja.

Opcionalni argument IOSTAT=<int_varijabla> pridjeljuje


vrijednost cjelobrojnoj varijabli u slu caju greke. Iznos varijable
indicira vrst greke.
Ako IOSTAT ili/i ERR nisu prisutni u pozivu naredbe OPEN, greka kod
otvaranja izazvat ce prijevremeni zavretak programa.
Zatvaranje ura

daja
Ure

daj zatvaramo naredbom CLOSE(<broj_ure

daja>). Pri
tome treba navesti broj ure

daja koji se zatvara. Dodatni argument je
STATUS s dvije mogu ce vrijednosti: KEEP ili DELETE.
INTEGER :: ioerr
OPEN(14, FILE=input.dat, STATUS=OLD, RECL=iexp, &
ACCESS=DIRECT, ACTION=READ, ERR=10, IOSTAT=ioerr)
...
READ(14,..) ....
...
CLOSE(14)
10 IF (ioerr>0) THEN
WRITE (*,*) Greska kod otvaranja :,iostat
STOP
END IF
Pisanje (ispis)
Op ca forma WRITE naredbe je:
WRITE ([UNIT=]<cijeli_broj>,[FMT=]<uredenje>,IOSTAT=<int_var>,
ERR=<labela>,ADVANCE=<yes,no>,...) lista_varijabli

IOSTAT i ERR argumenti slue za rukovanje izvravanjem


programa u slu caju pojave greke.

ADVANCE=yes ili no odre



duje prelazak ispisa na slijede ci
redak po zavretku.

Kod pisanja u UNFORMATTED ure



daj format se ne specicira.

Postoji i posebni na cin ispisa pomo cu imenovane liste varijabli,


kada se umjesto formata navodi ime imenovane liste. Imenovana
lista se denira posebnom naredbom NAMELIST.

Citanje s ure

daja
Op ca forma READ naredbe:
READ ([UNIT=]<cijeli_broj>,[FMT=]<uredenje>,ADVANCE=<yes,no>,
IOSTAT=<int_var>,ERR=<labela>,END=<labela>,EOR=<label>,
REC=<id_zapisa>,SIZE=<broj_znakova_var>) lista_varijabli
Ve cina argumenata ima standardno zna cenje. Osim njih kao dodatne
opcionalne argumente imamo:

END=<labela>, koje imenune broj labele na koju treba programa


sko citi ako se pokua citati iza oznake kraja datoteke.

Argument EOR imenuje broj labele s koje se nastavlja izvravanje


programa ako se pokua citati iza kraja zapisa datoteke.

S argumentom REC navodi se broj zapisa kod direktnog citanja.

Argument SIZE se koristi zajedno s argumentom ADVANCE i njime


se imenuje varijabla koja sadri podatak koliko je znakova
pro citano.
Primjer
Program s komandne linije uzima ime tekstualne datoteke koju treba
ifrirati po ROT13 sustavu (znakovi se zamjenjuju onima koji imaju za
13 ve ci ili manji ASCII broj). Rezultat se ispisuje na ekranu.
PROGRAM sifriraj
CHARACTER (LEN=80) :: datoteka
CHARACTER :: ch
INTEGER :: i, ierr
IF (IARGC() /= 1) THEN
WRITE (*,*) Program trazi kao argument ime daoteke
STOP
END IF
CALL GETARG(1,datoteka)
OPEN (UNIT=10,FILE=TRIM(datoteka),STATUS=old, &
ACTION=read,ERR=20,IOSTAT=ierr)
............
Primjer
L: DO
READ (10,FMT=(a1),END=30,ADVANCE=no,EOR=10) ch
i = ICHAR(ch)
IF (((i>=65).AND.(i<=77)).OR.((i>=97).AND.(i<=109))) THEN
i = i + 13
ELSE IF (((i>=78) .AND. (i<=90)) .OR. &
((i>=110) .AND. (i<=122))) THEN
i = i - 13
END IF
WRITE (*,(a1),ADVANCE=no) char(i)
CYCLE L
10 WRITE (*,*)
END DO L
20 IF (ierr /= 0) THEN
PRINT *,Greska kod otvaranja: ,ierr
STOP
END IF
30 CLOSE(10)
END PROGRAM
Primjer
Program treba citati tekstualnu datoteku nepoznatog broja linija
nepoznate duine. To se postie koritenjem labela za slu caj kraja
datoteke i za kraj zapisa (tj. kraj linije u tekstualnoj datoteci).
prompt> cat vazni_podaci.txt
Vazni podaci koje CIA ne smije znati: E=mc^2
Vazni podaci koje CIA ne smije znati: F=ma
prompt> ./07_enc.x vazni_podaci.txt > vazni_podaci.enc
prompt> cat vazni_podaci.enc
Inmav cbqnpv xbwr PVN ar fzvwr mangv: R=zp^2
Inmav cbqnpv xbwr PVN ar fzvwr mangv: S=zn
prompt> ./07_enc.x vazni_podaci.enc
Vazni podaci koje CIA ne smije znati: E=mc^2
Vazni podaci koje CIA ne smije znati: F=ma
Primjer
PROGRAM neformatirana
CHARACTER (LEN=20) :: datoteka = neformatirana.dat
INTEGER :: i, ierr
REAL,DIMENSION(20) :: vazni_podaci
CALL RANDOM_SEED
CALL RANDOM_NUMBER(vazni_podaci)
OPEN (UNIT=10,FILE=TRIM(datoteka),STATUS=unknown, &
ACTION=write,ACCESS=direct,FORM=unformatted, &
RECL=1,ERR=20,IOSTAT=ierr)
DO i=1,20
WRITE(10,REC=i) vazni_podaci(i)
END DO
CLOSE (10,STATUS=keep)
Primjer
OPEN (UNIT=10,FILE=TRIM(datoteka),STATUS=old, &
ACTION=read,ACCESS=direct,FORM=unformatted, &
RECL=1,ERR=20,IOSTAT=ierr)
! Citamo od kraja prema naprijed !
DO i=20,1,-1
READ (10,REC=i) vazni_podaci(i)
PRINT *,vazni_podaci(i)
END DO
CLOSE (10)
20 IF (ierr /= 0) THEN
PRINT *,Greska kod otvaranja: ,ierr
STOP
END IF
END PROGRAM
Ostale upis/ispis naredbe
Ostale fortranske naredbe za rad s datotekama su:

Naredba BACKSPACE (UNIT=8) kod sekvencijalnog citanja


pozicionira citanje/pisanje na po cetak prethodnog zapisa.
Dodatni argumenti su ERR i IOSTAT.

Naredba REWIND (UNIT=8) pozicionira citanje/pisanje na


po cetak datoteke (sekvencijalni upis/ispis). Dodatni argumenti su
ERR i IOSTAT.

Naredba ENDFILE (UNIT=8) stavlja oznaku kraja datoteke


kod sekvencijalnog pisanje. Dodatni argumenti su ERR i IOSTAT.

Podatak o statusu ure



daja ili datoteke mogu se saznati pomo cu
naredbe INQUIRE (FILE=<datoteka>,...) ili
INQUIRE (UNIT=...). Osim ERR i IOSTAT postoji i niz
drugih argumenata.
Rad s imenovanim listama
Rad s podacima u datotekama otean je nepoznavanjem tih podataka:
jesu li to realni ili cijeli brojevi, koji je format zapisa tih znakova, i koji su
to podaci (koje varijable). Dio tih problema moe se uspjeno rijeiti
koristenjem imenovanih lista.

Listi varijabli zadajemo ime pomo cu naredbe NAMELIST. Iza


naredbe slijedi ime zatvoreno u kose crte, te iza imena lista
varijabli.
NAMELIST /mojalista/ a,b,c

U naredbama READ i WRITE umjesto formata i liste varijabli


navodimo ime imenovane liste
WRITE (20,NML=mojalista)
READ (20,NML=mojalista)
Za to se sluimo imenom argumenta NML.
Primjer
PROGRAM racun_u_banci
CHARACTER(LEN=20) :: datoteka = podaci.txt
CHARACTER(LEN=12) :: ime
INTEGER :: racun,info
REAL :: broj
NAMELIST /mojalista/ ime, racun, broj
ime = Rudi Bobic
racun = 2345.45
broj = 98765
OPEN (UNIT=1,FILE=TRIM(datoteka),STATUS=unknown, &
ACTION=write,DELIM=apostrophe)
WRITE (UNIT=1, NML=mojalista)
CLOSE (UNIT=1,STATUS=keep)
END PROGRAM
Primjer
PROGRAM racun_u_banci
CHARACTER(LEN=20) :: datoteka = podaci.txt
CHARACTER(LEN=12) :: ime
INTEGER :: racun,info
REAL :: broj
NAMELIST /mojalista/ ime, racun, broj
OPEN (UNIT=1,FILE=TRIM(datoteka), STATUS=old, &
ACTION=read,DELIM=apostrophe)
READ (UNIT=1, NML=mojalista)
CLOSE (UNIT=1,STATUS=keep)
PRINT *,ime = ,ime
PRINT *,racun = ,racun
PRINT *,broj = ,broj
END PROGRAM
Primjer
prompt> cat banka.txt
&MOJALISTA
IME = Rudi Bobic ,
RACUN = 98765,
BROJ = 2345.450
/

Unutar datoteke podaci za imenovanu listu po cinju s


ampersandom (&) iza kojeg slijedi ime imenovane liste, a sve
zavrava s kosom crtom.

Izme

du po cetka i kraja svakoj varijabli iz liste zadaje se vrijednost
s znakom jednakosti;
&ime_liste
ime_varijable_1 = vrijednost_1,
ime_varijable_2 = vrijednost_2,
...
/

Primjer

U datoteci, poredak pridruivanje vrijednosti je irelevantan, dakle,


ne mora to cno slijediti poredak varijabli na listi.

U datoteci nije nuno da se svim varijablama na listi zadaje


vrijednost. Zadati se vrijednosti mogu samo nekim varijablama s
liste. Ostale ce varijable sa cuvati svoje stare vrijednosti.

Ako neke varijable su tipa niza znakova, kod otvaranja daoteke je


vano navesti tip separatora koji ozna cava po cetak i kraj
vrijednosti string varijable.

Citanje/pisanje iz/u niz znakova

Ako neka varijabla tipa niza znakova ima vrijednost cijelog (ili
realnog) broja, ili niza brojeva, te se vrijednosti mogu u citati u
cjelobrojne (ili realne) varijable koritenjem READ naredbe. Pri
tome se umjesto broja ure

daja navodi ime string varijable.
CHARACTER(LEN=10) :: ch = 12345
INTEGER :: i
READ (ch,(i)) i

Isto tako, nizu znakova moemo zadati vrijednost koja se dobije


ure

denim ispisom realnih ili cjelobrojnih brojeva uporabom WRITE
naredbe. Umjesto broja ure

daja navodi se string varijabla.
CHARACTER(LEN=10) :: ch
INTEGER :: i = 98765
WRITE (ch,(i)) i
Primjer
Treba stvoriti datoteku nasumi cnog imena i u nju upisati broj 10.
PROGRAM nasumicna
CHARACTER(LEN=10) :: datoteka
REAL :: a
INTEGER :: i,j=10,ierr
CALL RANDOM_SEED
CALL RANDOM_NUMBER(a)
i = INT(1000*a)
WRITE (datoteka,(a1,i3.3)) x,i ! x+trocifreni broj
OPEN (UNIT=1,FILE=TRIM(datoteka),STATUS=unknown, &
ACTION=write,IOSTAT=ierr,ERR=10)
WRITE (UNIT=1,FMT=(i)) j
CLOSE (UNIT=1,STATUS=keep)
10 IF (ierr /= 0) THEN
PRINT *,Greska kod otvaranja,ierr
END IF
END PROGRAM

You might also like