Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Error in compiling submodule tree.

Trent_Hawkins
Novice
592 Views

Good day everyone.

I have a problem in compiling a module-submodule tree where submodules include other submodules. For instance the following snippet fails to compile with ifort 17.1:

module leader
end module leader
submodule(leader) officer
end submodule         officer
submodule(officer) member
end submodule          member

giving the following error message:

error #8765: Error in opening the compiled ancestor module file.   [OFFICER]
      submodule(officer) member
----------------^

Am I missing something here? Or is this a bug?

Thanks in advance!

0 Kudos
1 Solution
FortranFan
Honored Contributor II
592 Views

Oh, I didn't immediately notice but you're missing a part of the submodule identification, the inclusion of the ancestor and its parent:

module leader
end module leader

submodule (leader) officer
end submodule officer

submodule (leader:officer) member
! note the above ancestor:parent identification
end submodule member

 

View solution in original post

0 Kudos
4 Replies
FortranFan
Honored Contributor II
592 Views

I think your problem is the empty CONTAINS section in the 'officer' submodule; try a case where module procedures are present at each level.

0 Kudos
Trent_Hawkins
Novice
592 Views

My full code is full of procedures at every level. Also notice that the submodule officer  that extends the primary module compiles fine. It's the second submodule that extends the first one that gives the error, i.e. having a submodule as parent is the only problem. Based on the error, it seems that the parent smod is either generated after lookup by the compiler or the look up name it expects ends in .mod instead of .smod (i.e. bug).

0 Kudos
FortranFan
Honored Contributor II
593 Views

Oh, I didn't immediately notice but you're missing a part of the submodule identification, the inclusion of the ancestor and its parent:

module leader
end module leader

submodule (leader) officer
end submodule officer

submodule (leader:officer) member
! note the above ancestor:parent identification
end submodule member

 

0 Kudos
Trent_Hawkins
Novice
592 Views

That does it, thanks you.

0 Kudos
Reply