|
irtn = c_read( getfilep( unitn ), inbyte, 1 ) |
|||
|
c_read |
C 関数 |
入力 |
この C 関数はユーザーが書く。次の例を参照 |
|
unitn |
INTEGER*4 |
入力 |
外部装置番号 |
|
getfilep |
INTEGER*4 または INTEGER*8 |
戻り値 |
ファイルが結合されている場合はファイルポインタ、結合されていない場合は -1。64 ビット環境用にコンパイルすると、INTEGER*8 の値が戻る |
この関数は標準 Fortran の入出力と C の入出力を混在させるために使用します。このような混在は移植不可能であり、今後リリースされるオペレーティングシステムまたは Fortran で使用できる保証はありません。したがって、この関数の使用は勧められませんし、直接のインタフェースは提供されていません。ユーザーは getfilep が戻す値を使用するために独自の C ルーチンを作成する必要があります。C ルーチンの例を次に示します。
例: Fortran は C の関数に渡すのに getfilep を使用します。
demo% cat tgetfilepF.f
character*1 inbyte
integer*4 c_read, getfilep, unitn / 5 /
external getfilep
write(*,'(a,$)') '数字は何? '
irtn = c_read( getfilep( unitn ), inbyte, 1 )
write(*,9) inbyte
9 format('C の読み取った数字は ', a )
end
|
getfilep を実際に使用する C 関数の例を次に示します。
demo% cat tgetfilepC.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 tgetfilepC.c demo% f95 tgetfilepC.o tgetfilepF.f demo% a.out 数字は何? 3 C の読み取った数字は 3 demo% |
詳細については、『Fortran プログラミングガイド』の「C と Fortran のインタフェース」の章を参照してください。参照: open(2)