getfilep は、外部ユニットが接続されている場合に、そのユニット番号のファイルポインタを返します。ユニットが接続されていない場合は、値 -1 が返されます。
この関数は、標準の FORTRAN 入出力と C の入出力を混在させる際に使用されます。このように混在させると移植性が失われるため、オペレーティングシステムや FORTRAN の今後のリリースでは保証されません。この関数の使用は推奨されず、直接インタフェースも提供されていません。getfilep からの戻り値を使用するには、専用の C ルーチンを入力する必要があります。C ルーチンの例を次に示します。
次の例は、getfilep を使用する FORTRAN メインプログラム (ファイル MixStdinmain.f) です。
character*1 inbyte integer*4 c_read, getfilep, unitn / 5 / external getfilep write(*,'(a,$)') 'What is the digit? ' irtn = c_read ( getfilep ( unitn ), inbyte, 1 ) write(*,9) inbyte 9 format('The digit read by C is ', a ) end
次の例は、getfilep を実際に使用する C 関数 (ファイル MixStdin.c) です。
#include <stdio.h> int c_read_ ( fd, buf, nbytes, buf_len ) FILE **fd ; char *buf ; int *nbytes, buf_len ; { return fread ( buf, 1, *nbytes, *fd ) ; }
コンパイル、構築、実行の例:
demo% cc -c MixStdin.c demo% f77 MixStdin.o MixStdinmain.f MixStdinmain.f: MAIN: demo% a.out What is the digit? 3 The digit read by C is 3
詳細については、『FORTRAN 77 ユーザーズガイド』の C と FORTRAN のインタフェースに関する章を参照してください。
libfui.a
open(2)
FORTRAN 77 ユーザーズガイド