11 USE yomhook
,ONLY : lhook, dr_hook
12 USE parkind1
,ONLY : jprb
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
98 INQUIRE(kulnam,opened=llopened)
100 IF (present(kluout)) &
101 WRITE(kluout,fmt=*)
'MODE_POS_SURF : error reading from unit ',&
102 kulnam,
' file ',hdnaml,
' line ',yline
103 CALL
abor1_sfx(
'MODE_POS_SURF: read error in namelist file')
109 indl=index(yline,
'&')
110 IF (indl .NE. 0 )
THEN
114 IF (yline(j:j)==ylo(ja)) yline(j:j)=yup(ja)
117 ind1=index(yline,
'&'//hdnaml)
119 yltest=yline(ind1+ilen+1:ind1+ilen+1)
120 IF(yltest ==
' ')
THEN
124 IF (present(kluout))
WRITE(kluout,fmt=*)
'-- namelist ',hdnaml,
' read'
125 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSNAM',1,zhook_handle)
133 IF(jfile == 1) rewind(kulnam)
138 IF (present(kluout)) &
139 WRITE(kluout,fmt=*) &
140 '-- namelist ',hdnaml,
' not found: default values used if required'
141 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSNAM',1,zhook_handle)
147 SUBROUTINE poskey(KULNAM,KLUOUT,HKEYWD1,HKEYWD2)
185 INTEGER,
INTENT(IN) :: kulnam
186 INTEGER,
INTENT(IN) :: kluout
187 CHARACTER(LEN=*),
INTENT(IN) :: hkeywd1
188 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: hkeywd2
192 CHARACTER(LEN=120) :: yline
193 INTEGER :: ilen1,ilen2,iret
194 REAL(KIND=JPRB) :: zhook_handle
199 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSKEY',0,zhook_handle)
202 IF (present(hkeywd2)) ilen2=len(hkeywd2)
206 READ(unit=kulnam,fmt=
'(A)',iostat=iret,end=100) yline
208 WRITE(kluout,fmt=*)
'-> error when reading line from unit ',kulnam
211 IF (yline(1:ilen1) .EQ. hkeywd1(1:ilen1))
EXIT search_key
215 WRITE(kluout,fmt=*)
'-- keyword ',hkeywd1,
' found'
217 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
222 IF (.NOT.present(hkeywd2))
THEN
223 CALL
abor1_sfx(
'MODE_POS_SURF: KEYWORD NOT FOUND: '//hkeywd1)
232 READ(unit=kulnam,fmt=
'(A)',iostat=iret,end=101) yline
234 WRITE(kluout,fmt=*)
'-> error when reading line from unit ',kulnam
237 IF (yline(1:ilen2) .EQ. hkeywd2(1:ilen2))
EXIT search_key2
240 WRITE(kluout,fmt=*)
'-- keyword ',hkeywd2,
' found'
241 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
246 CALL
abor1_sfx(
'MODE_POS_SURF: KEYWORD NOT FOUND: '//hkeywd2)
247 IF (lhook) CALL dr_hook(
'MODE_POS_SURF:POSKEY',1,zhook_handle)
subroutine abor1_sfx(YTEXT)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine poskey(KULNAM, KLUOUT, HKEYWD1, HKEYWD2)