インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

言語が混在した環境における IMSL* ライブラリーの使用 (Windows*)

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 言語の例では、次の使用方法を示しています。

この例に icl または cl コマンドを使用すると、ifort コマンドでリンクできるオブジェクト・ファイルを作成できます。適切な IMSL ライブラリーもリンクする必要があります。詳細は、「IMSL* インクルード・ファイルとライブラリーの呼び出し規約および再配布」を参照してください。