問題タブ [fortran2003]

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 投票する
2 に答える
3420 参照

fortran - CHARACTER(*) 変数への無制限のポリモーフィック ポインターを持つ SELECT TYPE

次の例では、無制限のポリモーフィック ポインターを定義し、コンストラクトFortran 2003に続く変数の型に基づいてアクションを実行する機能を使用しています。select typeサブルーチンhandlePは、その型に応じて引数の値を出力します。

バージョン 4.8でコンパイルすると、gfortran次の出力が得られます。

したがって、call handleP(mystring)すべてが期待どおりに機能しますがcall handleP('Initial')、印刷は失敗します。type(name)引数を指定して呼び出すこともできます。

動作にバグがありcall handleP('Initial')ますか、gfortranそれとも何か間違っていますか? それがバグである場合、それを防ぐために何ができますか?

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

types - Fortran 2003 におけるパラメーター化された派生型の問題

現在取り組んでいる研究プロジェクトに使用する Fortran 2003 を独学しています。私は Fortran 90 に慣れていますが、このプロジェクトではパラメーター化された型を使用する必要があるため、2003 に移行しています。

パラメータ化された型を定義する方法に関するこのサイトの説明に従っており、テストするためにサイトの例に基づいて非常に簡単なサンプル プログラムを作成しました。

これをコマンドでコンパイルすると

エラーが表示されます

数式のパラメーター化された部分を削除すると、正常にコンパイルされます (つまり、型が認識されます)。Fortran 2003 に固有のもので特に問題があるようですが、コマンドで実行すると

それはまだ同じ問題を抱えています。何が起こっているのでしょうか?

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

fortran - アクセス演算子 "[ ]、( )、{ }" の Fortran 90 または 2003 でのオーバーロード

FORTRAN 2003 で派生データ型のエントリ アクセス演算子 []、()、または {} をオーバーロードできますか? 次の例では、派生データ型「custom」のアクセス スキームを定義します。

どうやってやるの?

アップデート:

配列「t%a」を直接使用したくないことに注意してください。その上で従来のサブ配列操作を行います。代わりに、データ型「カスタム」の配列操作を再定義して、t{'first'} が t%a または t%a(1) の最初のエントリのポインターを返すようにしたいので、

また

また、追加のオーバーロードを使用して、t[1] = 18 のような機能を t['first'] = 18 のように機能させたいと考えています。

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

compiler-errors - エラー: SELECT TYPE のセレクター式が名前付き変数でない場合、associate-name=> が表示されます

タイプを別のタイプで使用しようとしています。ただし、コンパイルすることはできません。それは私には奇妙です: select 型はメインプログラムでは機能しますが、型のサブルーチンでは機能しません。

行でコンパイルエラーが発生しましselect type(this%WF)た。しかし、メイン プログラムで Buffer 型を定義して同じことを行うと、エラーは発生しません。

エラーメッセージは次のとおりです。

このコードをコンパイルするにはどうすればよいですか?

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

fortran - 自動再割り当てを使用すると、派生型の割り当て可能なコンポーネントはどうなりますか?

私のプログラムでは、特定の派生型の配列を含むコンテナー型を作成したいと考えています。配列のすべてのコンポーネントでプロシージャを呼び出す、コンテナのタイプ バインド プロシージャを追加したいと考えています。配列のサイズはさまざまなので、自動再割り当て機能を使用してみました。割り当て可能な文字で問題が発生しました。

セットアップを示す小さなスニペットを次に示します。

を使用して、ifortでコンパイルしました

自動再割り当てを有効にします。出力は次のとおりです。

最後のエントリは正しく表示されます。配列の古い部分をコピーすると、割り当て可能なコンポーネントで問題が発生するようです。固定文字長を使用する場合、問題は発生しません。自動再割り当てをそのように使用すると、正確にはどうなりますか? これをより安全に行うための他のオプションはありますか?