Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从发电站(4)到英特尔fortran编译器的移植(11/2003)_Fortran_Fortran Common Block - Fatal编程技术网

从发电站(4)到英特尔fortran编译器的移植(11/2003)

从发电站(4)到英特尔fortran编译器的移植(11/2003),fortran,fortran-common-block,Fortran,Fortran Common Block,在将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件 我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。所以我需要把所有的局部变量变成gloabal。在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为它提出一个

在将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件

我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。所以我需要把所有的局部变量变成gloabal。在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为它提出一个好的解决方案吗


除此之外,在将代码从powerstation移植到“英特尔fortran编译器”(11/2003)时,我还需要注意其他问题吗?

我不知道这两个编译器的具体情况,但如果必须将所有变量放入公共块中,那将非常奇怪。所有变量都是全局变量的证据是什么?与较新编译器相比,较旧编译器的子程序(子例程和函数)中的局部变量可能存在一个问题,即变量的值是否在子程序调用期间持续存在。Fortran标准仅在使用“save”属性声明变量时才保证此行为。一些较旧的编译器使所有变量持久化(静态内存),无论是否使用“save”。如果程序员省略了一个“save”,那么当旧程序被移植到新的编译器时,这可能会导致错误。许多较新的编译器提供了一个编译选项,以使所有变量持久化(例如,当前英特尔Fortran编译器的/Qsave)。或者,您可以在每个子程序中添加“保存”--不带变量的“保存”将使所有变量保持不变。

将fortran代码从power station移植到fortran编译器(2003)时,我需要注意哪些必要条件?

Fortran Powerstation只是一个编译器。英特尔的Visual Fortran也是如此。
而fortran是一种语言。尽管上述两个版本都有一些非标准的供应商扩展,但只要您坚持使用该标准,移植就不会有问题(fortran77标准编译器应该在当今最新的编译器上编译,不会出现错误)

因此,只有当你使用一些非标准的,MS特定的东西时,问题才会出现。没有人能在没有看到实际代码的情况下真正帮助您

我观察到的是,在电站中,所有变量都被视为全局变量(甚至局部变量)。其中,与intel fortran(2003)一样,它们对本地和全局有单独的作用域。因此,我需要将所有局部变量设置为全局变量。

嗯,没有。 我的意思是,你可以说,fortran中有“全局”变量和“局部”变量(尽管它们不是这样称呼的),但我向你保证,它们在两个编译器中都得到了正确的处理。我最近使用了这两种FPS(我仍然可能在某处安装了它),它们得到了应有的对待

在fortran 2003中,是否有任何选项(从属性)将所有局部变量设置为全局变量。因为我的代码中有成百上千的变量。除了将所有局部变量分配给全局变量(公共块中的平均值),有人能为其提出一个好的解决方案吗?

就个人而言,如果可以的话,我会避免使用公共块。它们很好,但在大多数情况下它们是可以避免的

除此之外,在将代码从powerstation移植到英特尔fortran编译器(2003年11月)时,我还需要注意其他问题吗?

重命名库和模块

英特尔的编译器系列是微软的后代,所以这确实是一种“自然”的方式。然而,在没有看到一些实际数据的情况下,很难做出这样的猜测并给出一般性的建议


p、 不过,一些“一般建议”可以在网站上找到,也可以在大量其他用户中找到。他们最关心的是从CVF到IVF的过渡,但我想你可以时不时地找到FPS用户。不过,我再说一遍,fortran是一种非常标准化的语言。因此,非常便于携带。考虑到前面提到的问题,从一个编译器跳到另一个编译器不应该有困难