Hidrológiai Közlöny 1987 (67. évfolyam)
2-3. szám - Gauzer Balázs: Néhány FORTRAN szubrutin hidrológiai adatok elsődleges feldolgozásához
GAUZER B.: Néhány FORTRAN szubrutin 149 Néhány FORTRAN szubrutin hidrológiai adatok elsődleges feldolgozásához Gauzer Balázs Vízgazdálkodási Tudományos Kutatóközpont 1095 Budapest, Kvassay Jenő u. 1. 1. Bevezetés 1983-tól a Meteorológiai Világszervezet (WMO) megbízásából FORTRAN nyelvű programcsomag készült a VITUKI-ban hidrológiai adatok elsődleges feldolgozására (Futaki, Var gay, 1984). Az azóta eltelt években a programcsomag folyamatosan bővült, ennek a folyamatnak a legutolsó lépése a vízminőségi adatkezelő programok elkészítése volt. A különböző adattípusok feldolgozó programjai hasonló alapelven működnek, következésképpen számos megoldandó részfeladat több programban is jelentkezett. Ez a tény az egyes részfeladatok célszerűen felépített szubrutinokkal történő megoldását szorgalmazta, annál is inkább, mert az így készített szubrutinok egyéb programozási feladatok megoldása során is jól alkalmazhatóak. Ez indokolja közzétételüket, és az az általános felhasználói tapasztalat, hogy használatuk számos esetben jelentősen megkönnyíti a programozó és a felhasználó dolgát. A szubrutinok nem tartalmaznak speciális, csak néhány FORTRAN nyelvjárás által ismert utasításokat. így a FORTRAN nyelv szinte valamennyi válfajában alkalmazhatóak, természetesen az elkerülhetetlen minimális változások (például a perifériák logikai egységszámának szükséges módosítása) végrehajtása után. Mivel a szubrutinok elsősorban nem hazai felhasználásra készültek, kommunikációs nyelvük az angol. A szubrutinok az alábbi feladatokat oldják meg: — Szabad formátumú adatbeolvasás Programozási feladatok megoldása során gyakran találkozunk adatbeolvasási problémákkal, adatkezelő programok esetén pedig ez a kérdés a megoldás egyik sarkalatos pontja. A kötött formátumú adatbeolvasás sok hibalehetőséget rejt magában, és gyakorlatilag csak viszonylag kisszámú adat esetén alkalmazható. Az alábbiakban bemutatásra kerülő, valós és egész számok szabad formátumú beolvasását lehetővé tevő szubrutinok alkalmazása kiküszöböli ezt a hibalehetőséget, megkönnyítve ezzel e felhasználó dolgát (NREAÜ, RREAD, NREAD A, RE AD AT). — Numerikus kódbeolvasás, azonosító kódok, (pl. állomáskód) beolvasása — Válaszkezelés Interaktív üzemmódú programok esetében gyakran kell két lehetséges válasz közül választanunk (például listát képernyőre, vagy sornyomtatóra kórjük-e stb.). Megfelelő szubrutin alkalmazásával a lehetséges válaszok kezelése nagymértékben leegyszerűsödik (NANINP NANTST). — Műveletek végrehajtása adott dátumokkal, illetve időpontokkal Adott dátumokkal, illetve időpontokkal végrehajtandó műveletekre (adott dátum helyességének az ellenőrzése, két dátum közötti időkülönbség meghatározása, egy dátumhoz adott időtartam hozzáadása stb.) gyakran szükség van. A bemutatásra kerülő szubrutinok használatával ezek a problémák egyszerűen megoldhatók (MAXI)AY, NDTCHK, NDTTST, NDTDIF, NDTSHF, NTMCHK, NTMTST, NTMD1F, NTMSHF). — Spline interpoláció végrehajtása Adatsorok vizsgálatánál sűrűn találkozunk interpolációs kérdésekkel. Az egyik legelterjedtebb interpolációs módszer a harmadfokú ,, Spline" függvényekkel történő interpolálás (SPLINE, FSPLN). A továbbiakban a fenti csoportosítás szerint részletesen ismertetjük a felsorolt szubrutinokat. Elsőként tehát két olyan szubrutint mutatunk be, amely pozitív egész számok, illetve valós számok szabad formátumú beolvasását teszi lehetővé. 2. Szabad formátumú adatbeolvasás Az NREAD szubrutin Az NREAD szubrutin megkeresi a numerikus almezőket az input karaktersorozatban és pozitív egész számmá konvertálja azokat. A szubrutin csak a következő karaktereket ismeri fel: 0123456789$ Az összes többi karaktert a numerikus almezők (a beolvasandó számok) közötti elválasztójelként kezeli. Ha a szubrutin $ (dollár) jelet talál az input karaktersorozatban, visszatér a főprogramba. Paraméterek: INSCR — Input karaktersor (az INSCR tömböt Al formátumban szubrutin hívása előtt be kell olvasni). —INP— N — Bal bytenél a vizsgálandó karakterek száma az INSCR tömb első elemétől kezdődően —INP— Jobb bytenél a keresendő numerikus almezők száma. Ha például az INSCR tömb első 30 karakterén keresünk 5 db pozitív egész számot, úgy az N változónak az 5X256+30 értéket kell adni. A talált numerikus almezők száma -—OUT—0 — S (dollár) jel a K-adik almezőben