GETFILEP(3F)

名前
getfilep - 外部ユニット番号に対するファイルポインタの取得

機能説明
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

詳細については、 『Fortran ユーザーズガイド』 の「C と FORTRAN のインタフェース」の章を参照してください。

ファイル
libfui.a

関連項目
open(2)