没有定义大小的Fortran CHARACTER FUNCTION

时间:2018-03-14 18:12:15

标签: string function fortran

我需要编写一个将字符串转换为大写的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(*)函数,所以我想做一些能够接受任何大小的字符串的函数。关于我如何解决这个问题的任何想法?

0 个答案:

没有答案