我需要编写一个将字符串转换为大写的F90函数。 基于How can I write a to_upper() or to_lower() function in F90?我已经写了以下函数:
CHARACTER*32 FUNCTION TO_UPPER(INP_STR)
IMPLICIT NONE
!INPUT
CHARACTER(*) INP_STR
!INTERNAL
INTEGER*4 i,j
CHARACTER*(LEN(INP_STR)) OUT_STR
!MAP
CHARACTER(26), PARAMETER :: CAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
CHARACTER(26), PARAMETER :: LOW = 'abcdefghijklmnopqrstuvwxyz'
!Convertion
OUT_STR = INP_STR
DO i = 1, LEN(TRIM(INP_STR))
j = INDEX(LOW,INP_STR(i:i))
IF (j.GT.0) OUT_STR(i:i) = CAP(j:j)
END DO
TO_UPPER = OUT_STR
RETURN
END FUNCTION TO_UPPER
我将传递给此函数的字符串具有不同的大小。目前我知道最大的输入字符串将有32个字符,但是将来这可能会改变,我想做一个接受任何字符串大小的函数。类似的东西:
CHARACTER(*) FUNCTION TO_UPPER(INP_STR)
...
END FUNCTION TO_UPPER
但是这不起作用,因为Fortran不接受CHARACTER(*)函数,所以我想做一些能够接受任何大小的字符串的函数。关于我如何解决这个问题的任何想法?