ホレリス定数を実際の引数リストの文字列として扱います。
-xhasc=yes を指定すると、コンパイラは、サブルーチンまたは関数でホレリス定数が実際の引数として指定された場合にそれらの定数を文字列として扱います。これはデフォルトであり、Fortran の標準に準拠しています。コンパイラが生成する実際のコールリストには、各文字列の非表示の長さが示されます。
-xhasc=no を指定すると、ホレリス定数は副プログラムの型なしの値として扱われ、それらの値のアドレスだけが実際の引数リストに配置されます。副プログラムに渡される実際のコールリストには、文字列の長さは示されません。
ホレリス定数で副プログラムが呼び出され、呼び出された副プログラムが引数を INTEGER (または CHARACTER 以外) と予測する場合、ルーチンを -xhasc=no でコンパイルします。
例:
demo% cat hasc.f call z(4habcd, ’abcdefg’) end subroutine z(i, s) integer i character *(*) s print *, "string length = ", len(s) return end demo% f95 -o has0 hasc.f demo% has0 string length = 4 <-- 7 であるべきです demo% f95 -o has1 -xhasc=no hasc.f demo% has1 string length = 7 <-- s の長さを修正します |
z への 4habcd の受け渡しは、-xhasc=no でコンパイルすることにより、正しく行われます。
このフラグは、従来の FORTRAN 77 プログラムの移植を支援するために提供されています。