インテル® Fortran コンパイラー 14.0 ユーザー・リファレンス・ガイド

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

IMSL ライブラリーは、インテル® Visual Fortran および C/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 言語の例では、次の使用方法を示しています。

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


このヘルプトピックについてのフィードバックを送信