問題タブ [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.
fortran77 - 書き込みステートメントのコメントアウトに関する Fortran 77 のバグ
古い FORTRAN 77 プログラムを使用していて、奇妙なバグに遭遇しました。現状では、コードは正常に実行されているように見え、1 秒もかからずに終了します。しかし、それは私が興味のない無関係な出力を大量に生成します。そのため、ソースを調べて、余分な WRITE ステートメントをすべてコメントアウトしました。
いくつかの WRITE ステートメントをコメント アウトすると、コードの実行が少し遅くなるように見えます (それについてはよくわかりませんが、忙しくするためにスクロールするテキストの行数が少ないため、遅く見えるだけかもしれません)。 . そして、余分な WRITE ステートメントの最後の部分をコメント アウトすると、プログラムがハングするだけで、実行が終了しません。
さて、論理的には、WRITE ステートメントをコメントアウトしても、プログラムの残りの部分は完全に機能するはずですよね? これは、コードのどこかに別の問題が潜んでいて、WRITE ステートメントが何らかの形でそれを隠していることを意味していると思います (バッファをクリアしているのでしょうか?)。
Fortran を知っている同僚 (数少ない同僚の 1 人) は、私が文ラベルをうっかりコメントアウトしたのではないかと示唆しましたが、そうではありません。Fortran を知らないが、一般的なプログラミングに非常に熟練している別の同僚は、ポインターの問題のように聞こえると示唆しましたが、私が知る限り、範囲外のインデックスを関数に渡したことはありません。配列であり、このような問題が他にどのように発生するかはわかりません。
PowerPC Mac コンピュータで g77 を使用してプログラムをコンパイルしています。
fortran - Fortran のネストされた 1 つの継続ループ
私はいくつかのレガシーコードを書き直していて、これに出くわしました:
CONTINUE
これら 2 つのループには 1 つしかないようです。このJavaコードと同等ですか?
arrays - Fortran 77可変サイズの文字列配列?
私はFortran77のダミーであり、常にC ++コーダーでしたが、何年も前からコードを変更する必要があります...文字列の可変サイズ配列を作成したいのですが、Fortranでこれを行う方法をオンラインで見つけることができません77.理想的には、両方の次元が可変の配列である必要がありますが、それが不可能な場合は、文字列の長さを修正できますが、文字列の数は可変である必要があります。
私はこれを試しました:
しかし、これは機能しません...
fortran - Fortranでの実数と整数
1つの変数をループし、各ステップで値を計算するプログラムがあります。
最初の試みではiT
、整数ループカウンターとして使用し、それを数式で直接使用しました。iT
これにより、 >の区分的グラフが作成されましたic8t
。i
カウンターとして追加iT
し、数式で使用する前に実数に変換すると、グラフはスムーズに表示されました。iT
数式にプラグインするときに、実数か整数かが重要なのはなぜですか?私のコンパイラはg77です。
iT
編集:式は<にもいくつかの不正確な値を与えic8t
ます。
fortran - Fortranのアスタリスク:(1)の引数リストの構文エラー
次のfortran77コードには、このサブルーチン定義があります
最後の2つの引数、アスタリスクの意味は何ですか?
したがって、どうすれば関数を呼び出すことができますか?
私はこれらすべての亜種を試しました
しかし、常に取得します
エラー:(1)の引数リストの構文エラー
fortran - FORTRAN77単純な入力/出力
私はFORTRANを初めて使用するので、ファイルリダイレクトまたは標準入力から次の形式を読み取るためにFORTRAN77プログラムを作成する必要があります。
入力例は次のとおりです。
私の母国語はC++なので、readステートメントが自動的に次の行に移動するというこのアイデア全体に慣れていません。
これまでのところ、私は次のコードを持っています:
10 if(LETTER .ne. D) then write (6, 100) LETTER, X, Y, Z read *, LETTER, X, Y, Z goto 10 else goto 20 endif
C ===================================================== 20 lines = aint(X) write (*,990) 'LINES: ', lines write (6, 85) X, Y, Z read *, Z write (6, 85) X, Y, Z endご覧のとおり、入力の最初の部分は正常に取得されますが、その後、readステートメント(read *、Zは次の行に移動)のために、すべてがどろどろになります。上記の特定の入力ファイルでは、Dの後に2があり、次の2つの値(3.0、5.0)がありますが、6.0はスキップしています。
どんな助けでも素晴らしいでしょう。ありがとう。
dll - g77でのDLLの使用
古いg77コンパイラ(http://people.tamu.edu/~matthewmccleskey/g77.html)を使用していますが、コードで外部DLLを使用する方法がわからないようです。それも可能ですか、それとも新しいコンパイラを入手する必要がありますか?
DLLファイルとLIBファイルの両方があります。関数の名前はGetDBI(_GetDBI @ 32)です。
fortran 77でDLLを使用することさえ可能ですか?
linux - Linuxのpgf90コンパイラで2回目のサブルーチンの呼び出し時にセグメンテーションエラーが発生しました
Linux環境でpgf90fortrancomplierを使用して、同じサブルーチンを2回呼び出すことはできません。サブルーチンを1回呼び出すことは問題ありませんが、2回目に呼び出すと、セグメンテーション違反が発生します。誰かが私のコードの何が問題なのか、いくつかの提案をすることができますか?簡単な例は次のように与えられます
PS with gfortranはOKですが、IntelVisualFortranで試してみてもOKです。
fortran - FORTRAN77プログラムはFortran90プログラムよりも高速ですか?
今日、私はQUADPACK(1987年に最後に更新された)などのFORTRAN 77で書かれたいくつかの非常に人気のある数値ライブラリからコードを読んでいましたが、大量の作業以外に、Fortran90でそれらのライブラリを書き直さない理由があるのではないかと思いました。自由形式のソース、GO TOを忘れてしまう可能性のあるより優れた制御構造、ベクトル化、インターフェースなど、Fortran 90が言語にもたらした大きな改善を考えると、
FORTRAN 77コンパイラがより最適化されたコードを生成するためですか、並列実行に適しているのでしょうか?たとえば、まだ8年しか経っていないFortran 2003についても話していません。Fortran90について話しているので、十分に普及しており、コンパイラーの準備ができていると思います。とにかく、私は業界とは接触していません。
編集:jannebは正しいです:LAPACKは実際にはFortran90で書かれています。
fortran - 内部 goto を使用した Fortran の do ループ
次のような Fortran77 スニペットがあります。
これが GOTO 1301 ステートメントにヒットすると、ループの次の繰り返しにジャンプするか、それともループを終了しますか? 私が理解している限りでは、return キーワードは何もしないので、これはループを終了し、ラベル 1301 からコードの実行を続行すると思いますが、それは正しいですか?
私はこれをC#に翻訳していますが、これが同等かどうか疑問に思っています:
または、「戻る」の代わりに「続行」する必要がある場合は?