module nested_type_example
implicit none
type :: InnerType
integer :: inner_a
real :: inner_b
end type InnerType
type :: OuterType
integer :: outer_a
real :: outer_b
type(InnerType) :: inner
end type OuterType
contains
subroutine print_outer(inner_val)
type(OuterType), intent(in) :: inner_val
write(*, *) "outer_a:", inner_val%outer_a
write(*, *) "outer_b:", inner_val%outer_b
write(*, *) "inner_a:", inner_val%inner%inner_a
write(*, *) "inner_b:", inner_val%inner%inner_b
end subroutine print_outer
end module nested_type_example
program main
use nested_type_example
implicit none
type(OuterType) :: my_data
my_data%outer_a = 1
my_data%outer_b = 3.14
my_data%inner%inner_a = 2
my_data%inner%inner_b = 2.71828
print *, "Hello JSRUN - from gfrotran"
call print_outer(my_data)
end