问题标签 [fortran77]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - 将 sun studio 兼容的 fortran 77 移植到 gcc:READ、FORMAT 中的格式说明符
我有一些旧的 fortran 77 我正在尝试在 Windows 上移植到 gcc。
我正在使用 gfortran 4.4。
该语句使用 READ(FOO, '(F)' , ERR=BAR) BAZ 并且 gcc 抱怨 F。从我所看到的情况来看,F 需要与之关联的大小。还有一些使用类似结构的 FORMAT 语句。
移植这个的正确方法是什么?似乎在 sun studio 编译器上单独使用 F 正好适合适当的大小。但是 gfortran 抱怨它不是一个非负或正的宽度。
任何想法如何移植这个?
c - 链接 LAPACK/BLAS 库
背景:
我正在开发一个混合使用 C 和 Fortran 77 编写的项目,现在需要将 LAPACK/BLAS 库链接到项目(全部在 Linux 环境中)。有问题的 LAPACK 是来自 netlib.org 的 3.2.1 版(包括 BLAS)。这些库是使用顶级 Makefile 编译的(make lapacklib 和 make blaslib)。
问题:
在链接期间,错误消息声称从 LAPACK 例程调用的某些(不是全部)BLAS 例程未定义。这让我有些头疼,但是当(在 Makefile 中)要链接的库的出现顺序发生更改时,问题最终得到了解决。
代码:
在下面,(a)给出错误,而(b)没有。链接由(c)执行。
(a) LIBS = $(LAPACK)/blas_LINUX.a $(LAPACK)/lapack_LINUX.a
(b) LIBS = $(LAPACK)/lapack_LINUX.a $(LAPACK)/blas_LINUX.a
(c) gcc -Wall -O -o $@ project.o project.a $(LIBS)
问题:
仅某些例程的未定义引用可能是什么原因以及使出现顺序相关的原因是什么?
debugging - #ifdef 与 gfortran 77
我正在使用 gfortran 编译 FORTRAN 77,并希望通过使用预处理器指令 #ifdef 来获得调试构建选项。但是,当我使用它们时,我会收到编译时警告“非法预处理器指令”。是否可以在不偏离标准工具链的情况下拥有此功能?
macos - 这个 Fortran '77 片段有什么问题?
我的任务是维护一些遗留的 fortran 代码,但我无法让它与 gfortran 一起编译。我已经写了相当多的 Fortran 95,但这是我第一次使用 Fortran 77。这段代码是有问题的:
当我用 编译时,以语句gfortran file.FOR
开头的所有行都是错误的(例如,对于接下来的每一行,直到它达到 25 个错误限制)。我用 编译,但修复警告并没有解决这个问题。common
Error: Unexpected COMMON statement at (1)
-Wall -pedantic
疯狂的是,如果我注释掉以开头的所有 4IF='TEST.IN'
行,程序将按预期编译和工作,但我必须将它们全部注释掉。将其中任何一个不加注释都会给我从common
语句开始的相同错误。如果我注释掉该common
语句,我会得到相同的错误,只是从下一行开始。
我在 OS X Leopard(不是 Snow Leopard)上使用gfortran
. 我已经广泛使用这个系统gfortran
来编写 Fortran 95 程序,所以理论上编译器本身是理智的。这段代码到底是怎么回事?
编辑:用 g77 编译给出:
呃,在(1)处建立了什么上下文?
fortran - 致命错误 F1002 编译器在 MS Fortran Powerstation 的第 2 次中堆空间不足
我有一个 FORTRAN 77 程序代码。我在 Windows 上使用 Fortran Power Station 4.0。这是一个很长的有限元方法代码。
代码如下:
1 主程序以
2 - 子程序开始如下:
当我按下编译命令时,它会显示以下消息:
致命错误 F1002:编译器在传递 2 中的堆空间不足
我用谷歌搜索了这个问题,并找到了以下解决方案
但我不明白解决方案!
我不知道如何更改Zi
选项,我在哪里可以找到它?
我认为我的代码很好而且清晰。有没有人有任何建议来解决这个问题?
c++ - 将 fortran 77 函数传递给 C/C++
是否可以将 fortran 77 函数作为回调函数指针传递给 C/C++?如果是这样,如何?
我在网上找到的信息与 fortran 90 及更高版本有关,但我的旧代码库在 77 中。
非常感谢
file-io - 在 FORTRAN DLL 中打开和写入文件
我正在用 fortran 编写并使用 g95 编译器进行编译。
我需要将日志文件输出到我正在编写的 DLL 中,该 DLL 当前正在与主程序链接并运行,但会产生不正确的结果。我对 FORTRAN 了解不多,但我确实得到了以下代码来在我编译的 EXE 中生成输出:
这适用于独立的 EXE,当我运行它时,它会生成一个包含字符串的文件。但是当我尝试将它包含在我正在处理的 DLL 中时,它会导致一切崩溃。当我将其注释掉时,一切都会运行并再次运行,但显然不会产生所需的输出。
有任何想法吗?有 FORTRAN 或 g95 的人吗?
file - 从 FORTRAN 77 中的文件中读取 REAL - 奇怪的结果
我目前在 FORTRAN 77 中搞乱,我遇到了一个我似乎无法弄清楚的问题。我正在尝试从类似于以下内容的文件中读取:
每行的最后一列是货币金额(从不大于 100)。我正在尝试使用类似于下面的代码来读取文件
一切似乎都读得很好,除了最后一列。当我检查价格的值时,例如,第二行;我得到的不是 56.95,而是 56.8999999999。
现在,我知道我可能有尾随的 9 或诸如此类的东西,因为它并不完全精确,但它不应该更接近 95 美分吗?也许我做错了什么,我不确定。希望我不会被这样运行的程序卡住!任何帮助是极大的赞赏!
fortran77 - Fortran 77 调试器检查数组边界
我仍然不喜欢调试 F77,并且在数组边界方面遇到了一些问题。我最近修改了一个冗长的代码以获得新的数组大小。一切“似乎”都还好,直到我注意到改变一个数组的方法,改变了另一个。我假设在这段代码中的某个地方,赋值超出了范围并写入了其他数组。
linux 环境中是否有调试器/工具可以“捕获”越界异常?
我目前正在使用 gfortran
c++ - 从 Fortran 77 代码调用 C/C++ 代码
我正在尝试为 C++ 代码制作一个 Fortran 77 包装器。我还没有找到有关它的信息。这个想法是使用来自一个库中的函数,该库是在 Fortran 77 程序中用 C++ 编写的。
有谁知道该怎么做?谢谢!