LEN(3) - [CHARACTER] Length of a character entity
result = len(string [,kind])
integer(kind=KIND) function len(string,KIND)character(len=*),intent(in) :: string(..) integer,optional,intent(in) :: KIND
o STRING is a scalar or array character variable o KIND is a scalar integer constant expression. o the returned value is the same integer kind as the KIND argument, or of the default integer kind if KIND is not specified.
LEN(3) returns the length of a character string.
If STRING is an array, the length of a single element of STRING is returned, as all elements of an array are the same length.
Note that STRING need not be defined when this intrinsic is invoked, as only the length (not the content) of STRING is needed.
o STRING : A scalar or array string to return the length of. If it is an unallocated allocatable variable or a pointer that is not associated, its length type parameter shall not be deferred. o KIND : A constant indicating the kind parameter of the result.
The result has a value equal to the number of characters in STRING if it is scalar or in an element of STRING if it is an array.
Sample program
program demo_len implicit noneResults:! fixed length character(len=40) :: string ! allocatable length character(len=:),allocatable :: astring character(len=:),allocatable :: many_strings(:) integer :: ii ! BASIC USAGE ii=len(string) write(*,*)length =,ii
! ALLOCATABLE VARIABLE LENGTH CAN CHANGE ! the allocatable string length will be the length of RHS expression astring= How long is this allocatable string? write(*,*)astring, LEN=, len(astring) ! print underline write(*,*) repeat(=,len(astring)) ! assign new value to astring and length changes astring=New allocatable string write(*,*)astring, LEN=, len(astring) ! print underline write(*,*) repeat(=,len(astring))
! THE STRING LENGTH WILL BE CONSTANT FOR A FIXED-LENGTH VARIABLE string= How long is this fixed string? write(*,*)string, LEN=,len(string) string=New fixed string write(*,*)string, LEN=,len(string)
! ALL STRINGS IN AN ARRAY ARE THE SAME LENGTH ! a scalar is returned for an array, as all values in a Fortran ! character array must be of the same length. many_strings = [ character(len=7) :: Tom, Dick, Harry ] write(*,*)length of ALL elements of array=,len(many_strings)
! NAME%LEN IS ESSENTIALLY THE SAME AS LEN(NAME) ! you can also query the length (and other attributes) of a string ! using a "type parameter inquiry" (available since fortran 2018) write(*,*)length from type parameter inquiry=,string%len ! %len is equivalent to a call to LEN() except the kind of the integer ! value returned is always of default kind.
! LOOK AT HOW A PASSED STRING CAN BE USED ... call passed( how long? )
contains
subroutine passed(str) character(len=*),intent(in) :: str ! the length of str can be used in the definitions of variables ! you can query the length of the passed variable write(*,*)length of passed value is , LEN(str) end subroutine passed
end program demo_len
> length = 40 > How long is this allocatable string? LEN= 38 > ====================================== > New allocatable string LEN= 22 > ====================== > How long is this fixed string? LEN= 40 > New fixed string LEN= 40 > length of ALL elements of array= 7 > length from type parameter inquiry= 40 > length of passed value is 11
FORTRAN 77 ; with KIND argument - Fortran 2003
len_trim(3), adjustr(3), trim(3), and adjustl(3) are related routines that allow you to deal with leading and trailing blanks.
Functions that perform operations on character strings, return lengths of arguments, and search for certain arguments:
Fortran intrinsic descriptions (license: MIT) @urbanjost
o ELEMENTAL: ADJUSTL(3), ADJUSTR(3), INDEX(3), SCAN(3), VERIFY(3) o NONELEMENTAL: LEN_TRIM(3), LEN(3), REPEAT(3), TRIM(3)
Nemo Release 3.1 | len (3fortran) | November 02, 2024 |