25 SUBROUTINE posnam(KULNAM,HDNAML,OFOUND,KLUOUT)
64 INTEGER,
INTENT(IN) :: KULNAM
65 CHARACTER(LEN=*),
INTENT(IN) :: HDNAML
66 LOGICAL,
INTENT(OUT):: OFOUND
67 INTEGER,
OPTIONAL,
INTENT(IN) :: KLUOUT
71 CHARACTER(LEN=120) :: YLINE
72 CHARACTER(LEN=1) :: YLTEST
73 INTEGER :: ILEN,ILEY,INDL,IND1,IRET
74 INTEGER :: J,JA, JFILE
77 CHARACTER(LEN=1),
DIMENSION(26) :: YLO=(/
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h', &
78 'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z'/)
79 CHARACTER(LEN=1),
DIMENSION(26) :: YUP=(/
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H', &
80 'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z'/)
81 REAL(KIND=JPRB) :: ZHOOK_HANDLE
86 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSNAM',0,zhook_handle)
94 READ(unit=kulnam,fmt=
'(A)',iostat=iret,end=100) yline
99 INQUIRE(kulnam,opened=llopened)
101 IF (
PRESENT(kluout))
THEN 102 WRITE(kluout,fmt=*)
'MODE_POS_SURF : error reading from unit ',&
103 kulnam,
' file ',hdnaml,
' line ',yline
106 CALL abor1_sfx(
'MODE_POS_SURF: read error in namelist file')
112 indl=
index(yline,
'&')
113 IF (indl .NE. 0 )
THEN 117 IF (yline(j:j)==ylo(ja)) yline(j:j)=yup(ja)
120 ind1=
index(yline,
'&'//hdnaml)
122 yltest=yline(ind1+ilen+1:ind1+ilen+1)
123 IF(yltest ==
' ')
THEN 127 IF (
PRESENT(kluout))
WRITE(kluout,fmt=*)
'-- namelist ',hdnaml,
' read' 128 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSNAM',1,zhook_handle)
136 IF(jfile == 1) rewind(kulnam)
141 IF (
PRESENT(kluout)) &
142 WRITE(kluout,fmt=*) &
143 '-- namelist ',hdnaml,
' not found: default values used if required' 144 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSNAM',1,zhook_handle)
150 SUBROUTINE poskey(KULNAM,KLUOUT,HKEYWD1,HKEYWD2)
188 INTEGER,
INTENT(IN) :: KULNAM
189 INTEGER,
INTENT(IN) :: KLUOUT
190 CHARACTER(LEN=*),
INTENT(IN) :: HKEYWD1
191 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HKEYWD2
195 CHARACTER(LEN=120) :: YLINE
196 INTEGER :: ILEN1,ILEN2,IRET
197 REAL(KIND=JPRB) :: ZHOOK_HANDLE
202 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSKEY',0,zhook_handle)
205 IF (
PRESENT(hkeywd2)) ilen2=len(hkeywd2)
209 READ(unit=kulnam,fmt=
'(A)',iostat=iret,end=100) yline
211 WRITE(kluout,fmt=*)
'-> error when reading line from unit ',kulnam
214 IF (yline(1:ilen1) .EQ. hkeywd1(1:ilen1))
EXIT search_key
218 WRITE(kluout,fmt=*)
'-- keyword ',hkeywd1,
' found' 220 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
225 IF (.NOT.
PRESENT(hkeywd2))
THEN 226 CALL abor1_sfx(
'MODE_POS_SURF: KEYWORD NOT FOUND: '//hkeywd1)
235 READ(unit=kulnam,fmt=
'(A)',iostat=iret,end=101) yline
237 WRITE(kluout,fmt=*)
'-> error when reading line from unit ',kulnam
240 IF (yline(1:ilen2) .EQ. hkeywd2(1:ilen2))
EXIT search_key2
243 WRITE(kluout,fmt=*)
'-- keyword ',hkeywd2,
' found' 244 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
249 CALL abor1_sfx(
'MODE_POS_SURF: KEYWORD NOT FOUND: '//hkeywd2)
250 IF (
lhook)
CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
subroutine poskey(KULNAM, KLUOUT, HKEYWD1, HKEYWD2)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine abor1_sfx(YTEXT)