言語が混在した環境での IMSL ライブラリーの使用

この節では,Visual Fortran と Microsoft Visual C++ の言語が混在した環境で IMSL ライブラリーを使用する方法について説明します。

言語が混在したアプリケーション,または Windows アプリケーションでは,IMSL ルーチンが標準出力またはエラー出力に書き出すメッセージが画面に書き出されると,わかりにくくなることがあります。これを避けるには,Fortran ルーチンから UMACH を呼び出して,出力およびエラー装置を画面の代わりにファイルに再マップします。たとえば,次の自由書式プログラムは,VHSTP からの標準出力を STD.TXT ファイルに,AMACH からのエラー・メッセージを ERR.TXT ファイルに書き出します。

	PROGRAM fileout
	! このプログラムは,IMSL ルーチンからの標準出力とエラー出力を画面の代わりに
	! ファイルにリダイレクトするための UMACH の使い方を示しています。
	! ルーチン AMACH と UMACH は,numerical_libraries モジュールで宣言されています。
	  USE numerical_libraries
	  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 numerical_libraries
	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 _stdcall 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 言語の例は,次の要素の使い方を示しています。

C の例を cl コマンドでコンパイルすると,DF コマンドでリンクすることができるオブジェクト・ファイルが作成されます。

言語が混在したプログラミングについての詳細は,「言語が混在したプログラミング」を参照してください。