インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
IMSL ライブラリーは、インテル® Visual Fortran および C/C++ ネイティブコードの言語が混在した環境で使用することができます。
言語が混在したアプリケーションや Windows* 用アプリケーションで IMSL ルーチンが標準出力またはエラー出力に書き込むメッセージは、画面に表示されると不便な場合があります。この問題は、Fortran ルーチンから UMACH を呼び出して、出力およびエラーユニットを画面ではなく、ファイルに再マップすることで回避できます。例えば、次の自由形式プログラムは、VHSTP から標準出力を STD.TXT ファイルに書き込み、AMACH からエラーメッセージを ERR.TXT ファイルに書き込みます。
PROGRAM fileout
! このプログラムは、UMACH ルーチンを使用して
! IMSL ルーチンからの標準出力とエラー出力を
! 画面ではなく、ファイルに出力する方法を示します。! ルーチンはインターフェイス・モジュールで宣言されています。
!
USE umach_int
USE amach_int
INTEGER STDU, ERRU
REAL x, frq(10)/3.0,1.0,4.0,1.0,5.0,9.0,2.0,6.0,5.0,3.0/
!
! IMSL 標準出力をユニット 8 の STD.TXT にリダイレクトします。
!
CALL umach(-2, STDU)
OPEN (unit=STDU, file='std.txt')
CALL vhstp(10,frq,1,'Histogram Plot')
CLOSE(8)
!
! IMSL 標準出力をユニット 9 の ERR.TXT にリダイレクトします。
!
CALL umach(-3, ERRU)
OPEN (unit=ERRU, file='err.txt')
x = amach(0) ! 不正な引数エラー
CLOSE(9) END
IMSL ルーチン VHSTP から STD.TXT に書き込まれる内容は次のとおりです。
1 Histogram Plot Frequency------------------------- 9 * I * 8 * I * 7 * I * 6 * I I * 5 * I I I I * 4 * I I I I I * 3 * I I I I I I I * 2 * I I I I I I I I * 1 * I I I I I I I I I I * ---------------------------------- Class 5 10
IMSL ルーチン AMACH から ERR.TXT に書き込まれるエラー出力の内容は次のとおりです。
*** TERMINAL ERROR 5 from AMACH.The argument must be between 1 and 8 *** inclusive.N = 0
IMSL ライブラリーを使用した次の Fortran プログラムの例について考えてみます。
USE amach_int
real rinfp
rinfp = AMACH(7)
write(*,*) 'Real positive machine infinity = ',rinfp
end
出力は次のとおりです。
Real positive machine infinity = Infinity
対応する C プログラムの例は次のとおりです。
この C 言語の例では、次の使用方法を示しています。
IMSL ライブラリーを呼び出すには、関数のプロトタイプが必要です。
& アドレス演算子は、変数のアドレスをサブプログラムに渡します (IMSL ライブラリーは、参照により渡される引数を処理します)。
この例に icl または cl コマンドを使用すると、ifort コマンドでリンクできるオブジェクト・ファイルを作成できます。適切な IMSL ライブラリーもリンクする必要があります。詳細は、「IMSL* インクルード・ファイルとライブラリーの呼び出し規約および再配布」を参照してください。