私が通常使用する ifort コンパイラではなく、gfortran コンパイラでプログラムをコンパイルするように、いくつかのコードを書き直しています。コードは次のとおりです。
_Subroutine SlideBits (WORD, BITS, ADDR)
Implicit None
Integer(4) WORD
Integer(4) BITS
Integer(4) ADDR
Integer(4) ADDR1
ADDR1 = 32 - ADDR
WORD = (WORD .And. (.Not.ISHFT(1,ADDR1))) .Or. ISHFT(BITS,ADDR1)
End_
gfortran コンパイラを使用して上記のコードをコンパイルすると、次のエラーが表示されます。
WORD = (WORD .And. (.Not.ISHFT(1,ADDR1))) .Or. ISHFT(BITS,ADDR1)
Error: Operand of .NOT. operator at (1) is INTEGER(4)
サブルーチンに入る 3 つの変数はすべて整数です。少し調べてみたところ、gfortran wiki には、gfortran コンパイラが整数値に適用される論理ステートメントを処理できるはずであると記載されています。私が訪れた他のいくつかのサイトは、gnu wiki から引用しているか、それに同意しています。私が通常使用しているインテル Fortran コンパイラー (ifort) が正常にコンパイルされるため、このエラーを初めて見ました。