43 CHARACTER (LEN=*),
INTENT(IN) :: text
44 INTEGER,
INTENT(OUT) :: nums
45 DOUBLE PRECISION,
INTENT(OUT) :: dnum(*)
48 INTEGER,
PARAMETER :: ndim=1000
49 INTEGER,
DIMENSION(2,ndim):: icd
50 CHARACTER (LEN=16) :: keywrd
51 CHARACTER (LEN=1) :: ch
52 DOUBLE PRECISION :: dic(ndim)
53 DOUBLE PRECISION :: dumber
61 IF(text(1:1) ==
'*') return
66 IF(lent == 0.AND.(text(i:i) ==
'!'.OR.text(i:i) ==
'%')) lent=i
67 IF(text(i:i) /=
' ') last=i
69 IF(lent == 0) lent=last+1
93 IF(ich >= num.AND.ich <= num+9) ic=5
106 IF(icdt(i) == 5)
THEN
108 DO k=icd(1,i),icd(2,i)
109 dumber=10.d0*dumber+dfloat(ichar(text(k:k))-num)
117 IF(icdt(i) == 1)
THEN
119 IF(icdt(i-1) == 5.AND.icd(2,i-1)+1 == icd(1,i)) icode=1
120 IF(icdt(i+1) == 5.AND.icd(1,i+1)-1 == icd(2,i)) icode=icode+2
124 ELSE IF(icode == 2)
THEN
125 dic(i)=10.0d0**(icd(1,i+1)-icd(2,i+1)-1)*dic(i+1)
129 ELSE IF(icode == 3)
THEN
130 dic(i-1)=dic(i-1)+ 10.0d0**(icd(1,i+1)-icd(2,i+1)-1)*dic(i+1)
131 icd(2,i-1)=icd(2,i+1)
140 IF(icdt(i) == 6.AND.text(icd(1,i):icd(2,i)) ==
' ') icdt(i)=0
141 IF(icdt(i) /= 0)
THEN
152 IF(icdt(i) == 2.OR.icdt(i) == 3)
THEN
153 IF(icdt(i+1) == 5)
THEN
155 IF(icdt(i) == 3) dic(i+1)=-dic(i+1)
163 IF(icdt(i) == 6.AND.text(icd(1,i):icd(2,i)) ==
' ') icdt(i)=0
164 IF(icdt(i) /= 0)
THEN
175 IF(icdt(i) == 4)
THEN
176 IF(icdt(i-1) == 5.AND.icdt(i+1) == 5)
THEN
177 icd(2,i-1)=icd(2,i+1)
178 dic(i-1)=dic(i-1)*10.0d0**dic(i+1)
187 IF(icdt(i) == 5)
THEN
199 IF(ia == 0.AND.text(i:i) /=
' ') ia=i
200 IF(text(i:i) /=
' ') ib=i
202 IF(ib >= 0) keywrd=text(ia:ib)
219 CHARACTER (LEN=*),
INTENT(IN) :: text
220 INTEGER,
INTENT(OUT) :: ia
221 INTEGER,
INTENT(OUT) :: ib
222 INTEGER,
INTENT(OUT) :: nab
231 IF(text(i:i) /=
' ') nab=i
232 IF((i == 1.AND.text(1:1) ==
'*').OR.text(i:i) ==
'!')
THEN
242 IF(ia == 0.AND.text(i:i) /=
' ') ia=i
243 IF(text(i:i) /=
' ') ib=i
265 INTEGER FUNCTION matint(pat,text,npat,ntext)
281 CHARACTER (LEN=*),
INTENT(IN) :: pat
282 CHARACTER (LEN=*),
INTENT(IN) :: text
283 INTEGER,
INTENT(OUT) :: npat
284 INTEGER,
INTENT(OUT) :: ntext
288 parameter(npatma=512)
289 INTEGER :: id(0:npatma,2)
292 CHARACTER (LEN=26) :: chu
293 CHARACTER (LEN=26) :: chl
296 DATA chu/
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
297 DATA chl/
'abcdefghijklmnopqrstuvwxyz'/
307 nj(ichar(chl(i:i)))=ichar(chu(i:i))
314 IF(text(i:i) /=
' ') go to 10
319 IF(text(i:i) /=
' ') itb=i
325 IF(pat(i:i) /=
' ') go to 20
330 IF(pat(i:i) /=
' ') ipb=i
334 IF(npat > npatma)
THEN
335 WRITE(*,*)
'too long PAT (', pat,
'):', npat,
' >', npatma
336 stop
'MATINT: string PAT too long! '
348 jc=nj(ichar(text(jt:jt)))
352 ic=nj(ichar(pat(ip:ip)))
353 IF(ic /= jc) ideq=ideq+1
354 id(i,jot)=min(ideq,id(i,3-jot)+1,id(i-1,jot)+1)