Sun Studio 12: Fortran ライブラリ・リファレンス

1.4.20 getfilep: 外部装置番号に対するファイルポインタの取得

関数は、次のように呼び出します。

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)