<SUBMODULE Example Program>

Module mymod
  Interface
    Module Integer Function next_number() Result(res)
    End Function
    Module Subroutine reset()
    End Subroutine
  End Interface
End Module
Submodule (mymod) variables
  Integer :: next = 1
End Submodule
Submodule (mymod:variables) functions
Contains
  Module Procedure next_number
    res = next
    next = next + 1
  End Procedure
End Submodule
Submodule (mymod:variables) subroutines
Contains
  Module Subroutine reset()
    Print *,'Resetting'
    next = 1
  End Subroutine
End Submodule
Program demo
  Use mymod
  Print *,'Hello',next_number()
  Print *,'Hello again',next_number()
  Call reset
  Print *,'Hello last',next_number()
End Program

■ Execution Results

 Hello 1
 Hello again 2
 Resetting
 Hello last 1