Документ взят из кэша поисковой машины. Адрес оригинального документа : http://crydee.sai.msu.ru/f90/code/test_dyn.f90
Дата изменения: Tue Jan 9 15:01:36 1996
Дата индексирования: Mon Oct 1 21:57:34 2012
Кодировка:

MODULE DYNA
IMPLICIT NONE
REAL, DIMENSION(:), ALLOCATABLE, SAVE :: WORK
END MODULE DYNA

PROGRAM TEST_OF_DYNA
USE DYNA
IMPLICIT NONE
PRINT *, 'MAIN'
CALL SUB1
CALL SUB2
PRINT *, 'MAIN'
END PROGRAM TEST_OF_DYNA

SUBROUTINE SUB1
USE DYNA
IMPLICIT NONE
! The size of WORK is determined here
INTEGER :: I
REAL, DIMENSION(5) :: A, B
PRINT *, 'SUB1'
A = 1.0
B = (/ (3.0, I = 1, 5) /)
ALLOCATE ( WORK(SIZE(B)) )
WORK = A
WRITE(*,*) A
WRITE(*,*) B
WRITE(*,*) WORK
END SUBROUTINE SUB1

SUBROUTINE SUB2
USE DYNA
IMPLICIT NONE
! The array WORK is used here
REAL :: B
REAL, DIMENSION(:), ALLOCATABLE :: A
PRINT *, 'SUB2'
ALLOCATE ( A(SIZE(WORK)) )
A = 2.*WORK
B = SUM(WORK)
WORK = A
WRITE(*,*) A
WRITE(*,*) B
WRITE(*,*) WORK
END SUBROUTINE SUB2