小编Alk*_*zmi的帖子

子例程可以包含在 Fortran 中的子例程(而不是程序中)中吗?

我必须处理一个用 Fortran 编写的旧软件(主要是在 70 年代编写的,并且在 3 年前维护得很差)。

我正在尝试使用 VS2017 和 Intel oneAPI 编译器(Fortran Compiler Classic 2021.3.0)为 64 位架构编译它。

在更新其中一个模块的过程中,我说服自己编译器不支持我所了解的在子程序之间称为“主机关联”的内容(通过 CONTAINS 语句)。包含子例程中定义的所有符号似乎在所包含的子例程中都不可见(如果我在包含的子例程中使用声明非常错误并且与包含子例程中的声明不匹配。打印了许多误导性的错误消息)。

你们中有人可以确认是这种情况或提供编译器选项来启用某些编译器过去明确允许的功能吗?如果需要,我会发布源代码(我不会立即发布它,因为我认为这对于 Fortran 专家来说可能是一个非常幼稚的问题,而我完全是个新手)。

真挚地,

在这里,我根据评论中的要求补充原始帖子

原始代码:

Subroutine LoadUserLibs(TypesInDeck,*) 

... OMITTED COMMENTS ...

! This routine is only used in the multi-DLL configuration (otherwise empty routine)

!dec$ if defined (TRNSYS_MULTI_DLL)

 Use DFWIN
 Use DFLIB
 !Use KERNEL32
 Use TrnsysConstants
 Use TrnsysFunctions
 Use TrnsysData, Only: steamMethod,isNISTSteamFound

! Force explicit variable declaration
 Implicit None
! Local variable declarations
 Type(T_WIN32_FIND_DATA):: WFD
 Character (len=maxPathLength) UserDir,FoundListStr,SearchListStr …
Run Code Online (Sandbox Code Playgroud)

fortran contains subroutine visual-studio-2017 intel-oneapi

1
推荐指数
1
解决办法
85
查看次数