4

古いFortranコードで.or.は、2つの整数型で使用される場合、結果はビット単位ですか、オペランドの結果ですか、それとも0/1ですか?

.or.レガシーコードを更新していて、これらのインスタンスをに置き換える必要があると思いますがIOR、それが古いコードで期待される結果であったかどうかはわかりません。代わりに、結果を0または1に設定する必要がありますか?

4

2 に答える 2

6

あなたが見ているのは確かにカスタム拡張だと思います。これが実際に使用されているのを見たことはありませんが、Web で実際に存在するものについての参考文献を見つけました。

Fortran プログラムがデジタル ハードウェアと直接通信する場合、ビット パターンに対してビットごとの論理演算を実行する必要がある場合があります。論理変数は基本的に 1 ビットの情報しか格納せず、整数変数は演算にしか使用できないため、標準の Fortran はこれを行う直接的な方法を提供していません。多くのシステムは、拡張機能として、整数に対してビット単位の演算を実行するための組み込み関数を提供しています。関数名はさまざまで、通常は IAND、IOR、ISHIFT です。いくつかのシステムでは、.AND などの通常の論理演算子を使用できます。および.OR. 整数引数で使用する: これは、移植性を低下させるだけでなく、コンパイラが通常の算術式のエラーを検出する能力を低下させるため、はるかに根本的な拡張であり、満足のいくものではありません。

参照

于 2012-08-31T00:04:21.973 に答える
1

DEC / VMSリンクまたはヘリテージを備えたコンパイラは、.ORへの整数引数を許可する拡張をサポートします。(およびその他の論理演算子)。そのコンパイラのグループは.ORを定義します。ビット単位としての整数の演算。

その遺産で現在サポートされているコンパイラは、Intel Fortranです(Compaq Fortran経由、Digital Fortran経由など)。

于 2012-09-02T12:45:41.190 に答える