integer function ixfindc(c,nc,val) implicit none integer,intent(in) :: nc character(len=*),intent(in) :: c(nc),val integer :: lval,i,lc c c Given string array c(nc), return index to c which contains string c val, or return 0 if val not found in c or val is 0 length. c ixfindc = 0 lval = len_trim(val) if (lval.le.0) then write(6,"('WARNING ixfindc: 0 length val')") return endif do i=1,nc lc = len_trim(c(i)) if (lc.gt.0) then if (c(i)(1:lc).eq.val(1:lval)) then ixfindc = i return endif endif enddo return end c c------------------------------------------------------------------------ c integer function ixfindr(r,nr,val) integer,intent(in) :: nr character(len=*),intent(in) :: val real,intent(in) :: r(nr) character*8 name integer :: lval,i,lc c c Given real array r(nr), return index to r which contains string c val, or return 0 if val not found in r or val is 0 length. c ixfindr = 0 lval = len_trim(val) if (lval.le.0) then write(6,"('WARNING ixfindr: 0 length val')") return endif do i=1,nr write(name,"(a)") r(i) lc = len_trim(name) if (lc.gt.0) then if (name(1:lc).eq.val(1:lval)) then ixfindr = i return endif endif enddo return end c c------------------------------------------------------------------------ c integer function ixpushc(c,nc,val) implicit none c c Given string array c(nc), define 1st non-blank element of c c to be the given string val. Return index to that element. c Return 0 if all elements of c are already non-blank, or if c length of val is greater than the declared length of elements of c. c integer,intent(in) :: nc character(len=*),intent(in) :: val character(len=*),intent(inout) :: c(nc) integer :: lval,mxc,i ! ixpushc = 0 lval = len_trim(val) if (lval.le.0) then write(6,"('WARNING ixpushc: 0 length val')") return endif mxc = len(c(1)) if (lval.gt.mxc) then write(6,"('WARNING ixpushc: val too long: mxc=',i3,' lval=', + i3)") mxc,lval return endif do i=1,nc if (len_trim(c(i)).eq.0) then c(i)(1:lval) = val(1:lval) ixpushc = i return endif enddo write(6,"('WARNING ixpushc: c(',i3,') already full.')") nc return end