char_result_2.f90

来自「用于进行gcc测试」· F90 代码 · 共 108 行

F90
108
字号
! Like char_result_1.f90, but the string arguments are pointers.! { dg-do run }pure function double (string)  character (len = *), intent (in) :: string  character (len = len (string) * 2) :: double  double = string // stringend function doublefunction f1 (string)  character (len = *), pointer :: string  character (len = len (string)) :: f1  f1 = ''end function f1function f2 (string1, string2)  character (len = *), pointer :: string1  character (len = len (string1) - 20), pointer :: string2  character (len = len (string1) + len (string2) / 2) :: f2  f2 = ''end function f2program main  implicit none  interface    pure function double (string)      character (len = *), intent (in) :: string      character (len = len (string) * 2) :: double    end function double    function f1 (string)      character (len = *), pointer :: string      character (len = len (string)) :: f1    end function f1    function f2 (string1, string2)      character (len = *), pointer :: string1      character (len = len (string1) - 20), pointer :: string2      character (len = len (string1) + len (string2) / 2) :: f2    end function f2  end interface  integer :: a  character (len = 80) :: text  character (len = 70), target :: textt  character (len = 70), pointer :: textp  character (len = 50), pointer :: textp2  a = 42  textp => textt  textp2 => textt(1:50)  call test (f1 (textp), 70)  call test (f2 (textp, textp), 95)  call test (f3 (textp), 105)  call test (f4 (textp), 192)  call test (f5 (textp), 140)  call test (f6 (textp), 29)  call indirect (textp2)contains  function f3 (string)    integer, parameter :: l1 = 30    character (len = *), pointer :: string    character (len = len (string) + l1 + 5) :: f3    f3 = ''  end function f3  function f4 (string)    character (len = len (text) - 10), pointer :: string    character (len = len (string) + len (text) + a) :: f4    f4 = ''  end function f4  function f5 (string)    character (len = *), pointer :: string    character (len = len (double (string))) :: f5    f5 = ''  end function f5  function f6 (string)    character (len = *), pointer :: string    character (len = len (string (a:))) :: f6    f6 = ''  end function f6  subroutine indirect (textp2)    character (len = 50), pointer :: textp2    call test (f1 (textp), 70)    call test (f2 (textp, textp), 95)    call test (f3 (textp), 105)    call test (f4 (textp), 192)    call test (f5 (textp), 140)    call test (f6 (textp), 29)    call test (f1 (textp2), 50)    call test (f2 (textp2, textp), 65)    call test (f3 (textp2), 85)    call test (f5 (textp2), 100)    call test (f6 (textp2), 9)  end subroutine indirect  subroutine test (string, length)    character (len = *) :: string    integer, intent (in) :: length    if (len (string) .ne. length) call abort  end subroutine testend program main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?