LowCase Subroutine

private subroutine LowCase(Str1, Str2)

Transform upper case letters in "Str1" into lower case letters, result is "Str2", but only up the the equal sign.

Arguments

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

Input string

character(len=*), intent(out) :: Str2

Output string, lower case letters only


Source Code

SUBROUTINE LowCase(Str1,Str2)
! MODULES
IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
CHARACTER(LEN=*),INTENT(IN)  :: Str1 !! Input string
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
CHARACTER(LEN=*),INTENT(OUT) :: Str2 !! Output string, lower case letters only
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
INTEGER                      :: iLen,nLen,Upper
CHARACTER(LEN=*),PARAMETER   :: lc='abcdefghijklmnopqrstuvwxyz'
CHARACTER(LEN=*),PARAMETER   :: UC='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
!===================================================================================================================================
Str2=Str1
nLen=LEN_TRIM(Str1)
DO iLen=1,nLen
  IF(Str1(iLen:iLen).EQ.'=') EXIT ! Transformation stops at "="
  Upper=INDEX(UC,Str1(iLen:iLen))
  IF (Upper > 0) Str2(iLen:iLen) = lc(Upper:Upper)
END DO
END SUBROUTINE LowCase