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ó