1! Copyright 2009-2023 Free Software Foundation, Inc. 2! 3! This program is free software; you can redistribute it and/or modify 4! it under the terms of the GNU General Public License as published by 5! the Free Software Foundation; either version 3 of the License, or 6! (at your option) any later version. 7! 8! This program is distributed in the hope that it will be useful, 9! but WITHOUT ANY WARRANTY; without even the implied warranty of 10! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11! GNU General Public License for more details. 12! 13! You should have received a copy of the GNU General Public License 14! along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16module mod3 17 integer :: mod2 = 3 18 integer :: mod1 = 3 19 integer :: var_i = 3 20contains 21 subroutine check_all 22 if (mod2 .ne. 3) call abort 23 if (mod1 .ne. 3) call abort 24 if (var_i .ne. 3) call abort 25 end subroutine check_all 26 27 subroutine check_mod2 28 if (mod2 .ne. 3) call abort 29 end subroutine check_mod2 30end module mod3 31 32module modmany 33 integer :: var_a = 10, var_b = 11, var_c = 12, var_i = 14 34contains 35 subroutine check_some 36 if (var_a .ne. 10) call abort 37 if (var_b .ne. 11) call abort 38 end subroutine check_some 39end module modmany 40 41module moduse 42 integer :: var_x = 30, var_y = 31 43contains 44 subroutine check_all 45 if (var_x .ne. 30) call abort 46 if (var_y .ne. 31) call abort 47 end subroutine check_all 48 49 subroutine check_var_x 50 if (var_x .ne. 30) call abort 51 end subroutine check_var_x 52end module moduse 53 54subroutine sub1 55 use mod1 56 if (var_i .ne. 1) call abort 57 var_i = var_i ! i-is-1 58end subroutine sub1 59 60subroutine sub2 61 use mod2 62 if (var_i .ne. 2) call abort 63 var_i = var_i ! i-is-2 64end subroutine sub2 65 66subroutine sub3 67 use mod3 68 var_i = var_i ! i-is-3 69end subroutine sub3 70 71program module 72 73 use modmany, only: var_b, var_d => var_c, var_i 74 use moduse, var_z => var_y 75 76 call sub1 77 call sub2 78 call sub3 79 80 if (var_b .ne. 11) call abort 81 if (var_d .ne. 12) call abort 82 if (var_i .ne. 14) call abort 83 if (var_x .ne. 30) call abort 84 if (var_z .ne. 31) call abort 85 var_b = var_b ! a-b-c-d 86 87end program module 88