optional_dim_3.f90

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

F90
53
字号
! { dg-do run }! PR34540 cshift, eoshift, kind=1 and kind=2 arguments.! Test case thanks to Thomas Koenig.module tst_foo  implicit nonecontains  subroutine tst_optional(a,n1,n2)    integer(kind=1), intent(in), optional:: n1    integer(kind=2), intent(in), optional:: n2    integer(kind=1), dimension(2) :: s1    character(64) :: testbuf    real, dimension(:,:) :: a    s1 = (/1, 1/)    write(testbuf,'(4F10.2)') cshift(a, shift=s1)    if (testbuf /= "      2.00      1.00      4.00      3.00") CALL abort    write(testbuf,'(4F10.2)') cshift(a,shift=s1,dim=n2)    if (testbuf /= "      2.00      1.00      4.00      3.00") CALL abort    write(testbuf,'(4F10.2)') eoshift(a,shift=s1,dim=n1)    if (testbuf /= "      2.00      0.00      4.00      0.00") CALL abort    write(testbuf,'(4F10.2)') eoshift(a,shift=s1,dim=n2)    if (testbuf /= "      2.00      0.00      4.00      0.00") CALL abort  end subroutine tst_optional subroutine sub(bound, dimmy)   integer(kind=8), optional :: dimmy   logical, optional :: bound   logical :: lotto(4)   character(20) :: testbuf   lotto = .false.   lotto = cshift((/.true.,.false.,.true.,.false./),1,dim=dimmy)   write(testbuf,*) lotto   if (trim(testbuf).ne." F T F T") call abort   lotto = .false.   lotto = eoshift((/.true.,.true.,.true.,.true./),1,boundary=bound,dim=dimmy)   lotto = eoshift(lotto,1,dim=dimmy)   write(testbuf,*) lotto   if (trim(testbuf).ne." T T F F") call abort end subroutineend module tst_fooprogram main  use tst_foo  implicit none  real, dimension(2,2) :: r  integer(kind=1) :: d1  integer(kind=2) :: d2  data r /1.0, 2.0, 3.0, 4.0/  d1 = 1_1  d2 = 1_2  call tst_optional(r,d1, d2)  call sub(bound=.false., dimmy=1_8)  call sub()end program main

⌨️ 快捷键说明

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