mat_is_name Function

public function mat_is_name(line) result(lout)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: line

Return Value logical


Contents

Source Code


Variables

Type Visibility Attributes Name Initial
character(len=*), public, parameter :: allowed = upper//lower//int//'_'
character(len=*), public, parameter :: int = '0123456789'
character(len=*), public, parameter :: lower = 'abcdefghijklmnopqrstuvwxyz'
character(len=:), public, allocatable :: name
character(len=*), public, parameter :: upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

Source Code

function mat_is_name(line) result (lout)
! determine if a string is a valid Fortran name ignoring trailing spaces
! (but not leading spaces)
character(len=*),parameter   :: int='0123456789'
character(len=*),parameter   :: lower='abcdefghijklmnopqrstuvwxyz'
character(len=*),parameter   :: upper='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
character(len=*),parameter   :: allowed=upper//lower//int//'_'
character(len=*),intent(in)  :: line
character(len=:),allocatable :: name
logical                      :: lout
        name=trim(line)
        if(len(name).ne.0)then
            lout = .true.                                  &
             & .and. verify(name(1:1), lower//upper) == 0  &
             & .and. verify(name,allowed) == 0             &
             & .and. len(name) <= 33
        else
            lout = .false.
        endif
end function mat_is_name