Botton 发表于 2020-4-6 15:17:09

The syntax of this substring is invalid.

数组赋值,报错
以下为代码
program main
    implicit none
    CALL QW

    c(1:N,1:N)=a(:,:)
    c(1:N,N+1:2*N)=b(:,:)
    c(N+1:2*N,1:N)=b(:,:)
    c(N+1:2*N,N+1:2*N)=a(:,:)

    write(*,*) c

    end program main



    SUBROUTINE QW
    integer, parameter :: N=4
    integer,dimension(N,N) :: a
    integer,dimension(N,N) :: b
    integer,dimension(2*N,2*N) :: c
    integer :: i,j
    do i=1,N
    do j=1,N
    a(i,j)=1
    end do
    end do

    do i=1,N
    do j=1,N
    b(i,j)=2
    end do
    end do
    END SUBROUTINE QW
以下为错误
1>D:\单相土三维\┐(T.T ) ( T.T) ノ\┐(T.T ) ( T.T) ノ\kk.f90(209): error #6911: The syntax of this substring is invalid.   



li913 发表于 2020-4-6 18:15:55

主程序中未定义c 。

kyra 发表于 2020-4-6 18:34:03

本帖最后由 kyra 于 2020-4-6 18:35 编辑

请理解,主程序和子程序的变量是独立的。需要共享时,可以通过实参虚参传递。
program main
implicit none
integer, parameter :: N=4
integer,dimension(N,N) :: a,b   
integer,dimension(2*N,2*N) :: c
CALL QW(a,b)
c(1:N,1:N)=a(:,:)
c(1:N,N+1:2*N)=b(:,:)
c(N+1:2*N,1:N)=b(:,:)
c(N+1:2*N,N+1:2*N)=a(:,:)
write(*,*) c
contains
SUBROUTINE QW(a,b)
    integer,dimension(:,:) :: a,b
    a = 1
    b = 2
END SUBROUTINE QW
end program main

Botton 发表于 2020-4-6 21:51:01

谢谢大佬,现在已经理解
页: [1]
查看完整版本: The syntax of this substring is invalid.