This is my first question and I have limited knowledge of Fortran, so please ignore my ignorance.
I need to know the size of a character array which is passed to a subroutine. Thanks in Advance. Example below:
subroutine Main(ierror) character*25 strga(1) character*15 strgb call subA(strga(1),strgb,ierror) return end subroutine subA(tstra,tstrb,ierr) ! This is where I need to know the length of tstra and tstrb (without ! having to explicitly passed by the calling routine) ! I need the lengths so that I should not write more characters than ! the length of the string return end
You can do the following:
subroutine subA(tstA,tstB,ierr) character(len=*) :: tstA, tstB integer :: ierr ierr = 0 if ( len(tstA) < len(tstB) ) then ierr = 1 return endif ... end subroutine subA
The declaration of the arguments uses the indication "(len=*)" for the string length, which means it comes from the caller and the function len() returns the length of the string, that is, the maximum number of characters that can be stored. If you want the number of characters without the trailing blanks, then use len_trim().
(Of course, there is a lot more to be said about this, but this should get you a step further ;))