13 character(10) :: n10 =
'0123456789'
21 integer function indx2(s1,l1,s2,l2)
33 if (s1(i:i2) == s2(1:l2))
then
43 INTEGER FUNCTION indx1(S1,S2,L2)
55 IF (s1(i:i2) == s2(1:l2))
THEN
72 integer :: i1, n1, i, i2, n2
84 DO 200 i=n2,len_trim(s1)
97 CHARACTER(*) :: S0,S1,S2
106 CALL
blank(s0,len(s0))
118 CHARACTER(*) :: STRING
136 CHARACTER(*) :: STRING
139 IF (
string(1:1) /=
' ')
return
143 IF (
string(i:i) /=
' ')
THEN
163 CHARACTER(*) :: LETTRS
164 integer,
optional :: n
165 integer :: i, int, ni
174 int=ichar(lettrs(i:i))
175 IF(int >= 97 .AND. int <= 122)
THEN
177 lettrs(i:i)=char(int)
194 CHARACTER(len(line)) :: WORK
209 ifldw=
indx1(work,
' ',1)-1
213 10
FORMAT(
'(F',i3.3,
'.0)')
214 READ(work,fmat,err=100,end=100) tval
234 CHARACTER(len(line)) :: WORK
245 ifldw=
indx1(work,
' ',1)-1
249 10
FORMAT(
'(F',i3.3,
'.0)')
250 READ(work,fmat,err=100,end=100) tval
263 CHARACTER(L) :: STRING
265 CHARACTER(1) :: BLNK=
' '
269 IF (
string(i:i) /= blnk) goto 200
280 character(*) :: sout,key
281 character(len(sout)) :: tmp_string
285 call
blank(tmp_string,len(sout))
286 read (nk,80,end=100,err=100) tmp_string
287 call
chcopy(sout, tmp_string,len(sout))
289 if (
indx1(tmp_string,key,nk) /= 0)
return
integer function i1_from_char(s1)
integer function indx1(S1, S2, L2)
integer function indx2(s1, l1, s2, l2)
subroutine lshft(string, ipt)
shift string from IPT to the left INPUT : "abcde...... test " OUTPUT: "e...... test " if ipt.eq.5
integer function indx_cut(S1, S2, L2)
INDX_CUT is returned with the location of S2 in S1 (0 if not found) S1 is returned with 1st occurance...
logical function ifgtrl(VALUE, LINE)
Read VALUE from LINE and set IFGTRL to .TRUE. if successful, IFGTRL to .FALSE. otherwise. This complicated function is necessary thanks to the Ardent, which won't allow free formatted reads (*) from internal strings!
subroutine capit(lettrs, n)
Capitalizes string of length n.
subroutine blank(A, N)
blank a string
logical function ifgtil(IVALUE, LINE)
Read IVALUE from LINE and set IFGTIL to .TRUE. if successful, IFGTIL to .FALSE. otherwise. This complicated function is necessary thanks to the Ardent, which won't allow free formatted reads (*) from internal strings!
subroutine cscan(sout, key, nk)
subroutine csplit(s0, s1, s2, l0)
split string S1 into two parts, delimited by S2.
subroutine chcopy(a, b, n)
subroutine ljust(string)
left justify string
integer function ltrunc(string, l)