- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear All,
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
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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 ;))
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page