3.3. A bináris fájl
olvasása
A bináris fájl olvasása a binread.sh nevű scripttel
történik.
A futtatás előtt a binread.sh
scriptben is meg kell adnunk a kiindulási GRIB fájl
rácsparamétereit (NXMAX és NYMAX), a script 49.
sorában.
A script futtatása úgy történik,
hogy a
script neve után megadjuk az olvasni kívánt
bináris fájl nevét .bin
kiterjesztes nélkül, tehát például:
./binread.sh
20020831_500hPa
amennyiben a binary könyvtárban
szerepel a 20020831_500hPa.bin fájl. A
futtatás eredményeképp a program kiirja a
dekódolt GRIB fájl rácspontjaiban szereplő
értékeket.
A binread.sh script
kapcsán két fontos dolgot kell megjegyeznünk a
bináris fájlok kezelésével kapcsolatban. Az
első a bináris fájlok megnyitásának
módja FORTRAN-ban. A scriptben ez a következő képpen
történik:
OPEN(99,file='result.bin',access='direct',form='unformatted',
/ status='old',recl=4*NXMAX*NYMAX,iostat=ios)
Az OPEN
utasítás paramétereinél a form='unformatted'
jelenti azt,
hogy bináris fájlt nyitunk meg. Az access='direct' paraméter
azt jelenti, hogy direkt elérésű fájlról
van szó, amelyben az adatok rekordokba vannak rendezve. A
rekordok hosszát a recl
paraméterrel állíthatjuk be byte-os
egységekben. Jelen esetben azért szerepel az NXMAX*NYMAX előtt a 4-es
szorzó, mivel az adott FORTRAN fordító a real
számokat 4 byte-on tárolja.
A másik fontos dolog a bináris fájlok
olvasása. Ez a scriptben a következő képpen
történik:
read(99,rec=1,iostat=ios) (mezo(loop),loop=1,NXMAX*NYMAX)
Fontos, hogy a bináris fájlok olvasásakor nem
kell használnunk a FORMAT
utasítást. Az adott scriptben rec=1
szerepel, mivel a példaként szolgáló GRIB
fájl mindössze egy mezőt tartalmazott. Amennyiben a GRIB
fájl több mezőt is tartalmaz, akkor a beolvasás a
következő képpen módosul:
do i=1,MEZOSZAM
read(99,rec=i,iostat=ios)
(mezo(i,loop),loop=1,NXMAX*NYMAX)
enddo
A beolvasás után a mezo vektort
(illetve matrixot) már közönséges real
változóként kezelhetjük.
Készítette:
Szintai Balázs, IV. éves meteorológus
hallgató