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 151 A továbbiakban bemutatjuk azt a két szubru­tint, amely meghívja az NREAD, illetve az RREAU szubrutinok valamelyikét, és teszteli az N paraméter értékét. A két szubrutin neve NREA­DA, illetve RE AD AT. Mivel a két szubrutin szerkezete teljesen megegyezik, csak az NREADA szubrutint ismertetjük, azzal a megjegyzéssel, hogy az itt leírtak érvényesek a READAT szubru­tinra is. Az NliEADA szubrutin Hívja az NREAD szubrutint, majd teszteli ennek N paraméterét. Hibás válasz esetén a kép­ernyőn angol nyelvű i"hibaüzenet (BAD response) jelenik meg. Paraméterek: INSCR — Megegyezik az NREAD szubrutinnál leír takkal NPAR — Megegyezik az NREAD szubrutin NI' para­méterével NESC — Megegyezik az NREAD szubrutin N para­méterével —INP—­Amennyiben a CR gomb megnyomása válasz gyanánt megengedett, tehát van default (alapértelmezés) válasz, akkor az N para­méter értéke negatív előjellel adandó meg. A talált numerikus almezők száma —OUT— = —1—S (dollár) jel a válaszban = -—0— nem talált numerikus almezőt. Hívott szubrutin: NREAD. A listát a 3. ábra tartalmazza. SSTORAGE:2 SUBROUTINE NREADA(INSCR,NPAR,NESC) CHARACTER INSCR(l) DIMENSION NPAR(l) C N=IABS(NESC) CALL NREAD(INSCR,N,NPAR) IF(N) 1, 2, 5 1 IF(N+41) 3, 9, 9 2 IF(NESC) 4, 3, 3 3 CALL BADRSP 4 NESC--0 GOTO 10 5 NESC=N GOTO 10 C 9 NESC=-1 10 RETURN END ÍSTORAGE:2 SUBROUTINE READAT( INSCR,P AR,NESC) CHARACTER INSCR(l) DIMENSION PAR(l) C N^IABS(NESC) , CALL RREAD(INSCR,N, PAR) • IF(N) 1, 2, 5 1 IF(N+41) 3, 9, 9 2 IF(NESC) 4, 3, 3 3 CALL BADRSP 4 NESC=0 GOTO 10 5 NESC^N GOTO 10 C 9 NESC=-1 10 RETURN END 3. ábra. Az NliEADA és a HE AD AT szubrutin 3. Numerikus kódbeolvasás A következőkben a CODRDR nevű szubrutint mutatjuk be, amely tetszőleges hosszúságú, csak numerikus elemeket tartalmazó kódok beolvasására alkalmas. A CODRDR szubrutin A szubrutin a korábbiakban már ismertetett NREAD szubrutin segítségével egyenként meg­keresi a numerikus almezőket (a beolvasandó kód számjegyeit) és betölti azokat egy egész típusú tömbbe. (Lásd még az első fejezetben az NREAD szubrutin ismertetését). Paraméterek: INSCR — Input karaktersor (az INSCR tömböt a szubrutin hívás előtt Al formátumban be kell olvasni) —INP— NPAR — A beolvasott kódot tartalmazó tömb •—OUT— NESC — A keresendő numerikus almezők száma (a beolvasandó kód hossza). —INP— — A talált numerikus almezők száma (a beol­vasott kód hossza) —OUT— Hívott szubrutin: NREAD. A szubrutin listáját a 4. ábrában közöljük. ÍSTORAGE:2 SUBROUTINE CODRDR(INSCR, ICODE,NESC) CHARACTER INSCR(l), ICODE(l), BLK, DLR, CHRKOD DATA BLK /' '/, DLR /'$'/ C LNG-NESC NESC=0 DO 5 1=1,LNG N-I CALL NREAD( INSCR(I),N,KOD) IF(N) 1, 3, 4 1 IF(N+41) 2, 9, 9 2 CALL BADRSP NESC=0 GOTO 10 3 IF(NESC) 5, 5, 10 4 NESCrNESC+1 ICODE(NESC)=CHAR(KOD) 5 CONTINUE IF(NESC.EQ.0) GOTO 10 CHRK0D=INSCR(LNG + 1) IF(CHRKOD.EQ. DLR) GOTO 9 IF(CHRKOD. LT.48) GOTO 10 IF(CHRKOD.GT.57) GOTO 10 NESC^LNG+l GOTO 10 C 9 NESC=-1 10 RETURN END 4. ábra. A CODRDR szubrutin 4. Válaszok kezelése A továbbiakban az eldöntendő kérdésekre adhat lehetséges válaszokat kezelő szubrutinokat ismer­tetjük. A NANTST függvény Összehasonlítja a RESP nevű byte-ot az ANS­DEF és az ANS nevű byte-okkal. NANTST = 1—RESP = ANS. = 0—RESP = ANSDEF vagy RESP = = blank. = —1—Egyébként.

Next

/
Oldalképek
Tartalom