📄 equiv_init_1.f90
字号:
! Program to test initialization of equivalence blocks. PR13742.! Some forms are not yet implemented. These are indicated by !!$subroutine test0s character*10 :: x = "abcdefghij" character*10 :: y equivalence (x,y) character*10 :: xs(10) character*10 :: ys(10) equivalence (xs,ys) data xs /10*"abcdefghij"/ if (y.ne."abcdefghij") call abort if (ys(1).ne."abcdefghij") call abort if (ys(10).ne."abcdefghij") call abortend subroutine test0 integer :: x = 123 integer :: y equivalence (x,y) if (y.ne.123) call abortendsubroutine test1 integer :: a(3) integer :: x = 1 integer :: y integer :: z = 3 equivalence (a(1), x) equivalence (a(3), z) if (x.ne.1) call abort if (z.ne.3) call abort if (a(1).ne.1) call abort if (a(3).ne.3) call abortendsubroutine test2 integer :: x integer :: z integer :: a(3) = 123 equivalence (a(1), x) equivalence (a(3), z) if (x.ne.123) call abort if (z.ne.123) call abortendsubroutine test3 integer :: x!!$ integer :: y = 2 integer :: z integer :: a(3) equivalence (a(1),x), (a(2),y), (a(3),z) data a(1) /1/, a(3) /3/ if (x.ne.1) call abort!!$ if (y.ne.2) call abort if (z.ne.3) call abortendsubroutine test4 integer a(2) integer b(2) integer c equivalence (a(2),b(1)), (b(2),c) data a/1,2/ data c/3/ if (b(1).ne.2) call abort if (b(2).ne.3) call abortend!!$subroutine test5!!$ integer a(2)!!$ integer b(2)!!$ integer c!!$ equivalence (a(2),b(1)), (b(2),c)!!$ data a(1)/1/!!$ data b(1)/2/!!$ data c/3/!!$ if (a(2).ne.2) call abort!!$ if (b(2).ne.3) call abort!!$ print *, "Passed test5"!!$end program main call test0s call test0 call test1 call test2 call test3 call test4!!$ call test5end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -