blob: b908620a97c5197e5947cb178e76b8f5f02f45de [file] [log] [blame]
! Copyright 2019-2021 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