module string_utils 5 implicit none private ! Public interface methods public ::& to_upper, & ! Convert character string to upper case to_lower ! Convert character string to lower case contains
function to_upper(str) 4 !----------------------------------------------------------------------- ! Purpose: ! Convert character string to upper case. ! ! Method: ! Use achar and iachar intrinsics to ensure use of ascii collating sequence. ! ! Author: B. Eaton, July 2001 ! ! $Id: string_utils.F90,v 1.1.2.1.6.1 2004/05/20 18:36:03 mvr Exp $ !----------------------------------------------------------------------- implicit none character(len=*), intent(in) :: str ! String to convert to upper case character(len=len(str)) :: to_upper ! Local variables integer :: i ! Index integer :: aseq ! ascii collating sequence integer :: lower_to_upper ! integer to convert case character(len=1) :: ctmp ! Character temporary !----------------------------------------------------------------------- lower_to_upper = iachar("A") - iachar("a") do i = 1, len(str) ctmp = str(i:i) aseq = iachar(ctmp) if ( aseq >= iachar("a") .and. aseq <= iachar("z") ) & ctmp = achar(aseq + lower_to_upper) to_upper(i:i) = ctmp end do end function to_upper
function to_lower(str) 2 !----------------------------------------------------------------------- ! Purpose: ! Convert character string to lower case. ! ! Method: ! Use achar and iachar intrinsics to ensure use of ascii collating sequence. ! ! Author: B. Eaton, July 2001 ! ! $Id: string_utils.F90,v 1.1.2.1.6.1 2004/05/20 18:36:03 mvr Exp $ !----------------------------------------------------------------------- implicit none character(len=*), intent(in) :: str ! String to convert to lower case character(len=len(str)) :: to_lower ! Local variables integer :: i ! Index integer :: aseq ! ascii collating sequence integer :: upper_to_lower ! integer to convert case character(len=1) :: ctmp ! Character temporary !----------------------------------------------------------------------- upper_to_lower = iachar("a") - iachar("A") do i = 1, len(str) ctmp = str(i:i) aseq = iachar(ctmp) if ( aseq >= iachar("A") .and. aseq <= iachar("Z") ) & ctmp = achar(aseq + upper_to_lower) to_lower(i:i) = ctmp end do end function to_lower end module string_utils