! You should have received a copy of the GNU General Public License\r
! along with this program. If not, see <http://www.gnu.org/licenses/>.\r
\r
-program TestNestedFuncs\r
+module mod1\r
+ integer :: var_i = 1\r
+ integer :: var_const\r
+ parameter (var_const = 20)\r
+\r
+CONTAINS\r
+\r
+ SUBROUTINE sub_nested_outer\r
+ integer :: local_int\r
+ character (len=20) :: name\r
+\r
+ name = 'sub_nested_outer_mod1'\r
+ local_int = 11\r
+\r
+ END SUBROUTINE sub_nested_outer\r
+end module mod1\r
+\r
+! Public sub_nested_outer\r
+SUBROUTINE sub_nested_outer\r
+ integer :: local_int\r
+ character (len=16) :: name\r
+\r
+ name = 'sub_nested_outer external'\r
+ local_int = 11\r
+END SUBROUTINE sub_nested_outer\r
+\r
+! Needed indirection to call public sub_nested_outer from main\r
+SUBROUTINE sub_nested_outer_ind\r
+ character (len=20) :: name\r
+\r
+ name = 'sub_nested_outer_ind'\r
+ CALL sub_nested_outer\r
+END SUBROUTINE sub_nested_outer_ind\r
+\r
+! public routine with internal subroutine\r
+SUBROUTINE sub_with_sub_nested_outer()\r
+ integer :: local_int\r
+ character (len=16) :: name\r
+\r
+ name = 'subroutine_with_int_sub'\r
+ local_int = 1\r
+\r
+ CALL sub_nested_outer ! Should call the internal fct\r
+\r
+CONTAINS\r
\r
+ SUBROUTINE sub_nested_outer\r
+ integer :: local_int\r
+ local_int = 11\r
+ END SUBROUTINE sub_nested_outer\r
+\r
+END SUBROUTINE sub_with_sub_nested_outer\r
+\r
+! Main\r
+program TestNestedFuncs\r
+ USE mod1, sub_nested_outer_use_mod1 => sub_nested_outer\r
IMPLICIT NONE\r
\r
TYPE :: t_State\r
END TYPE t_State\r
\r
TYPE (t_State) :: v_state\r
- integer index\r
+ integer index, local_int\r
\r
index = 13\r
- CALL sub_nested_outer\r
+ CALL sub_nested_outer ! Call internal sub_nested_outer\r
+ CALL sub_nested_outer_ind ! Call external sub_nested_outer via sub_nested_outer_ind\r
+ CALL sub_with_sub_nested_outer ! Call external routine with nested sub_nested_outer\r
+ CALL sub_nested_outer_use_mod1 ! Call sub_nested_outer imported via module\r
index = 11 ! BP_main\r
v_state%code = 27\r
\r