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
Anfänger
1.595Aufrufe

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 Lösung
FortranFan
Geehrter Beitragender III
1.595Aufrufe

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

 

Lösung in ursprünglichem Beitrag anzeigen

4 Antworten
FortranFan
Geehrter Beitragender III
1.595Aufrufe

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

Trent_Hawkins
Anfänger
1.595Aufrufe

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).

FortranFan
Geehrter Beitragender III
1.596Aufrufe

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

 

Trent_Hawkins
Anfänger
1.595Aufrufe

That does it, thanks you.

Antworten