175 integer,
intent(out):: tokentype
176 integer,
intent(out):: ivalue(5)
177 real(
dp),
intent(out):: dvalue
178 character(*),
intent(out):: cvalue
179 integer:: iend, istr, ilen, ios
183 iend = len_trim(thisline)
187 call match(
"^##", thisline(i:), istr, ilen)
194 call match(
"^#s+", thisline(i:), istr, ilen)
200 call match(
"^@", thisline(i:), istr, ilen)
201 if (istr <= 0)
call match(
"^from", thisline(i:), istr, ilen)
202 if (istr <= 0)
call match(
"^at", thisline(i:), istr, ilen)
206 cvalue = thisline(i: i+ilen-1)
210 call match(
"^#a#w*#a", thisline(i:), istr, ilen)
211 if (istr <= 0)
call match(
"^[#a'""]", thisline(i:), istr, ilen)
214 cvalue = thisline(i: i+ilen-1)
219 call match(
"^#^", thisline(i:), istr, ilen)
220 if (istr <= 0)
call match(
"^#*#*", thisline(i:), istr, ilen)
223 cvalue = thisline(i: i+ilen-1)
228 call match(
"^#.[^#d]", thisline(i:), istr, ilen)
229 if (istr <= 0)
call match(
"^#*", thisline(i:), istr, ilen)
232 cvalue = thisline(i: i+ilen-1)
237 call match(
"^[-+]?#d*#.#d*[EeDd][-+]?#d+", thisline(i:), istr, ilen)
238 if (istr <= 0)
call match(
"^[-+]?#d*#.#d*", thisline(i:), istr, ilen)
240 read(thisline(i: i+ilen-1), fmt=*, &
242 if (ios /= 0) dvalue = huge(dvalue)
243 cvalue = thisline(i: i+ilen-1)
249 call match(
"^[-+]?#d+", thisline(i:), istr, ilen)
251 read(thisline(i: i+ilen-1), fmt=*, &
252 & iostat=ios) ivalue(1)
253 if (ios /= 0) ivalue(1) = huge(1)
254 cvalue = thisline(i: i+ilen-1)
260 if (thisline(i:i) ==
'/')
then
262 cvalue = thisline(i:i)
266 if (thisline(i:i) ==
'(')
then
268 cvalue = thisline(i:i)
272 if (thisline(i:i) ==
')')
then
274 cvalue = thisline(i:i)
279 tokentype = ichar(thisline(i:i))
280 cvalue = thisline(i:i)