Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
character(len=*), | intent(in) | :: | lstring | |||
integer, | intent(in), | optional | :: | strloc | ||
integer, | intent(inout) | :: | localrc |
integer function char2int( lstring, strloc, localrc ) !--------------------------------------------------------------------------- ! This function converts a character representation of an integer digit ! between 0-9 into its integer equivalent. Optional argument of character ! address allows selection of individual characters in a string. Default ! assumes conversion of the first character of the string. !--------------------------------------------------------------------------- ! arguments character(len=*), intent(in ) :: lstring integer, intent(in ), optional :: strloc integer, intent(inout) :: localrc ! local variables integer :: ntemp, sloc ! initialize variables localrc = ESMF_RC_NOT_IMPL if(present(strloc) ) then sloc = strloc else sloc = 1 endif !------------------------------------------------------------------------------ !--------------------------------------------------------------------------- ! Convert string to integer !--------------------------------------------------------------------------- ntemp = iachar( lstring(sloc:sloc) )-iachar('0') ! check to see that values is within the acceptable range if ( ntemp < 0 .and. ntemp > 9 ) then call ESMF_LogSetError( ESMF_FAILURE, & msg="character is not a digit between 0 and 9", & rcToReturn=localrc) return char2int = 0 else char2int = ntemp endif !--------------------------------------------------------------------------- ! if I've gotten this far without an error, then the routine has succeeded. !--------------------------------------------------------------------------- localrc = ESMF_SUCCESS return !--------------------------------------------------------------------------- end function char2int