63 lines
2.0 KiB
Fortran
63 lines
2.0 KiB
Fortran
! Copyright 2019-2020 Free Software Foundation, Inc.
|
|
!
|
|
! This program is free software; you can redistribute it and/or modify
|
|
! it under the terms of the GNU General Public License as published by
|
|
! the Free Software Foundation; either version 3 of the License, or
|
|
! (at your option) any later version.
|
|
!
|
|
! This program is distributed in the hope that it will be useful,
|
|
! but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
! GNU General Public License for more details.
|
|
!
|
|
! You should have received a copy of the GNU General Public License
|
|
! along with this program. If not, see <http://www.gnu.org/licenses/> .
|
|
|
|
module container
|
|
implicit none
|
|
integer :: a
|
|
contains
|
|
subroutine print_from_module()
|
|
print *, "hello."
|
|
end subroutine
|
|
end module
|
|
|
|
program contains_keyword
|
|
use container
|
|
implicit none
|
|
integer :: program_i, program_j
|
|
program_j = 12 ! pre_init
|
|
program_i = 7
|
|
program_j = increment(program_j) ! pre_increment
|
|
program_i = increment_program_global() ! pre_increment_program_global
|
|
call subroutine_to_call()
|
|
call step() ! pre_step
|
|
call hidden_variable()
|
|
call print_from_module()
|
|
print '(I2)', program_j, program_i ! post_init
|
|
|
|
contains
|
|
subroutine subroutine_to_call()
|
|
print *, "called"
|
|
end subroutine
|
|
integer function increment(i)
|
|
integer :: i
|
|
increment = i + 1
|
|
print *, i ! post_increment
|
|
end function
|
|
integer function increment_program_global()
|
|
increment_program_global = program_i + 1
|
|
! Need to put in a dummy print here to break on as on some systems the
|
|
! variables leave scope at "end function", but on others they do not.
|
|
print *, program_i ! post_increment_global
|
|
end function
|
|
subroutine step()
|
|
print '(A)', "step" ! post_step
|
|
end subroutine
|
|
subroutine hidden_variable()
|
|
integer :: program_i
|
|
program_i = 30
|
|
print *, program_i ! post_hidden
|
|
end subroutine
|
|
end program contains_keyword
|