IMSL ライブラリーは、インテル® Visual Fortran および Microsoft* Visual C++* (ネイティブコード) の言語が混在した環境で使用することができます。
言語が混在したアプリケーションや Windows* 用アプリケーションで IMSL ルーチンが標準出力またはエラー出力に書き込むメッセージは、画面に表示されると不便な場合があります。この問題は、Fortran ルーチンから UMACH を呼び出して、出力およびエラーユニットを画面ではなく、ファイルに再マップすることで回避できます。例えば、次の自由形式プログラムは、VHSTP から標準出力を STD.TXT ファイルに書き込み、AMACH からエラーメッセージを ERR.TXT ファイルに書き込みます。
PROGRAM fileout ! This program demonstrates how to use the UMACH routine to ! redirect the standard output and error output from IMSL ! routines to files instead of to the screen. The routines ! are declared in the interface modules ! 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/ ! ! Redirect IMSL standard output to STD.TXT at unit 8 ! CALL umach(-2, STDU) OPEN (unit=STDU, file='std.txt') CALL vhstp(10,frq,1,'Histogram Plot') CLOSE(8) ! ! Redirect IMSL error output to ERR.TXT at unit 9 ! CALL umach(-3, ERRU) OPEN (unit=ERRU, file='err.txt') x = amach(0) ! Illegal parameter error 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 プログラムの例は次のとおりです。
/* FILE CSAMP0.C */ #include <stdio.h> #include <stdlib.h> extern float AMACH(long *); main() { long n; float rinfp; n = 7; rinfp = AMACH(&n); printf("Real positive machine infinity = %16E\n", rinfp); fflush(stdout); _exit(0); }
この C 言語の例では、次の使用方法を示しています。
IMSL ライブラリーを呼び出すには、関数のプロトタイプが必要です。
& アドレス演算子は、変数のアドレスをサブプログラムに渡します (IMSL ライブラリーは、参照により渡される引数を処理します)。
この例に icl または cl コマンドを使用すると、ifort コマンドでリンクできるオブジェクト・ファイルを作成できます。適切な IMSL ライブラリーもリンクする必要があります。詳細は、「IMSL* インクルード・ファイルとライブラリーの呼び出し規約および再配布」を参照してください。
© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。