インテル® Fortran コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
Fortran プログラムで関数から CHARACTER 型のデータが返される場合、Fortran コンパイラーは呼び出されたプロシージャーの引数リストの先頭に 2 つの引数を追加します。
最初の引数は、呼び出されたプロシージャーが結果を格納する場所を示すポインターです。
2 番目の引数は、返される文字の最大文字数です (必要に応じて空白がパディングされます)。
呼び出されたルーチンは、最初の引数で指定されているアドレスに結果をコピーしなければなりません。次に、MAKECHARS という名前の文字関数を返すための Fortran コードとそれに対応する C ルーチンの例を示します。
C から Fortran への文字型の戻り例
Fortran のコード
interface function makechars(x,y) !DEC$ATTRIBUTES decorate, alias:'makechars'::makechars character*10 makechars double precision x,y end function end interface character *10 chars double precision x,y chars=makechars(x,y)
対応する C ルーチン
void makechars (char *result, size_t length, double *x, double *y) { ...program text, producing returnvalue... for (i = 0; i < length; i++ ) { result[i] = returnvalue[i]; } }
上記の例では、次の制限および動作が適用されます。
関数の長さと結果は、呼び出し文では指定しません。コンパイラーによって追加されます。
呼び出されたルーチンは、result によって指定された位置に結果文字列をコピーしなければなりません。length よりも長い文字のコピーはできません。
length よりも短い文字が返された場合、戻り位置の右側に空白がパディングされます。Fortran では、文字を終了するのにゼロは使用しません。
呼び出されたプロシージャーは void 型です。