問題タブ [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.

0 投票する
1 に答える
386 参照

fortran - SunStudio互換のFortran77をgccに移植:READ、FORMATのフォーマット指定子

Windowsでgccに移植しようとしている古いFortran77がいくつかあります。

私はgfortran4.4を使用しています。

ステートメントはREAD(FOO、'(F)'、ERR = BAR)BAZを使用し、gccはFについて不平を言っています。私が見たところ、Fにはそれに関連付けられたサイズが必要であるように見えます。同様の構成を使用するFORMATステートメントもあります。

これを移植する適切な方法は何ですか?Sun StudioコンパイラでFを単独で使用すると、適切なサイズにぴったり合うようです。しかし、gfortranは、それが非負または正の幅ではないことについて不平を言います。

これを移植する方法はありますか?

0 投票する
3 に答える
3738 参照

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)

質問:
一部のルーチンのみの未定義の参照の理由は何ですか?また、出現順序が関連するのは何ですか?

0 投票する
2 に答える
4283 参照

debugging - #ifdef with gfortran 77

gfortranを使用してFORTRAN77をコンパイルしており、プリプロセッサディレクティブ#ifdefを使用してDEBUGビルドオプションを使用したいと考えています。ただし、それらを使用すると、コンパイル時に「不正なプリプロセッサディレクティブ」という警告が表示されます。標準のツールチェーンから逸脱することなく、この機能を使用することは可能ですか?

0 投票する
1 に答える
1398 参照

macos - このFortran'77スニペットの何が問題になっていますか?

私はいくつかのレガシーFortranコードを維持するという任務を負っていますが、gfortranでコンパイルするのに問題があります。私はかなりの量のFortran95を作成しましたが、これはFortran 77での初めての経験です。このコードスニペットは、問題のあるものです。

でコンパイルすると、ステートメントでgfortran file.FOR始まるすべての行がエラーになります(たとえば、25エラー制限に達するまでの後続の各行)。でコンパイルしましたが、警告を修正してもこの問題は修正されませんでした。commonError: Unexpected COMMON statement at (1)-Wall -pedantic

クレイジーなことは、で始まる4行すべてをコメントアウトするとIF='TEST.IN'、プログラムは期待どおりにコンパイルおよび動作しますが、すべてコメントアウトする必要があるということです。それらのいずれかをコメント化しないままにしておくと、commonステートメントから始まる同じエラーが発生します。ステートメントをコメントアウトするcommonと、次の行から始めて同じエラーが発生します。

私はOSXLeopard(Snow Leopardではない)を使用してgfortranいます。私はこのシステムをgfortranFortran95プログラムを作成するために広範囲に使用したので、理論的にはコンパイラー自体は正気です。このコードで何が起こっているのでしょうか?


編集:g77でコンパイルすると:

えーと、(1)でどのような文脈が確立されていますか?

0 投票する
4 に答える
4191 参照

fortran - 致命的なエラー F1002 コンパイラは、MS Fortran Powerstation のパス 2 でヒープ領域が不足しています

FORTRAN 77 プログラム コードがあります。Windows で Fortran Power Station 4.0 を使用しています。これは非常に長い有限要素法コードです。

コードは次のとおりです。


1 メインプログラムは

2 - サブルーチンは次のように開始されます。

コンパイル コマンドを押すと、次のメッセージが表示されます。

致命的なエラー F1002: パス 2 でコンパイラがヒープ領域を使い果たしました

問題をグーグルで調べたところ、次の解決策が見つかりました

しかし、私は解決策を理解していませんでした!

Ziオプションの変更方法がわかりません。どこで確認できますか?

私のコードは良くて明確だと思います。この問題を解決するための提案はありますか?

0 投票する
1 に答える
2471 参照

c++ - Fortran 77 関数を C/C++ に渡す

C/C++へのコールバック関数ポインタとしてfortran 77関数を渡すことは可能ですか? もしそうなら、どのように?

Web で見つけた情報は Fortran 90 以降に関するものですが、私のレガシー コード ベースは 77 です。

どうもありがとう

0 投票する
1 に答える
1428 参照

file-io - FORTRAN DLL 内のファイルへの OPEN および WRITE

私は fortran で書き、g95 コンパイラを使用してコンパイルしています。

私が書いている DLL にログ ファイルを出力する必要があります。DLL は現在マスター プログラムとリンクして実行されていますが、誤った結果が生成されます。FORTRAN についてはよくわかりませんが、コンパイルした EXE で出力を生成する次のコードを取得しました。

これはスタンドアロンのEXEで機能します。実行すると、文字列を含むファイルが生成されます。しかし、私が取り組んでいるDLLにそれを含めようとすると、すべてがクラッシュします。コメントアウトすると、すべてが実行されて再び機能しますが、明らかに目的の出力が生成されません。

何か案は?FORTRAN または g95 の人はいますか?

0 投票する
1 に答える
1224 参照

file - FORTRAN77のファイルからREALを読み取る-奇妙な結果

私は現在FORTRAN77をいじっていて、理解できないような問題に遭遇しました。以下のようなファイルから読み込もうとしています。

各行の最後の列は金額です(100を超えることはありません)。以下のようなコードを使用してファイルを読み取ろうとしています

最後の列を除いて、すべてがうまく読まれているようです。たとえば、2行目の価格の値を確認すると、56.95を取得する代わりに、56.8999999999のようなものを取得します。

完全に正確ではないため、9が続く可能性があることは理解していますが、95セントに少し近づける必要がありますか?たぶん私が間違っていることがあるのか​​、よくわかりません。うまくいけば、私は自分のプログラムがこのように実行されていることに固執していません!どんな助けでも大歓迎です!

0 投票する
2 に答える
2117 参照

fortran77 - 配列の境界をチェックするFortran77デバッガー

私はまだF77のデバッグに積極的であり、配列の境界にいくつかの問題があります。最近、長いコードを変更して、新しい配列サイズにしました。ある配列を変更したり、別の配列を変更したりする方法に気付くまで、すべてが「大丈夫」と思われました。このコードのどこかで、割り当てが範囲外であり、他の配列に書き込んでいると思います。

Linux環境に範囲外の例外を「キャッチ」するデバッガー/ツールはありますか?

私は現在gfortranを使用しています

0 投票する
2 に答える
1233 参照

c++ - Fortran 77 コードから C/C++ コードを呼び出す

C++ コード用の Fortran 77 ラッパーを作成しようとしています。それに関する情報は見つかりませんでした。アイデアは、Fortran 77 プログラムで C++ で書かれた lib の from 関数を使用することです。

誰もそれを行う方法を知っていますか? ありがとう!