Header-to-copy ユーティリティが C ソース コード内のパラメーター受け渡し規約を等価な COBOL COPY ファイル形式に翻訳する例を次に示します。
C のソース
typedef unsigned char BYTE; typedef char _far* LPSTR; typedef int HFILE; typedef Boolean (*XtFilePredicate)( /* String filename */ ); BYTE _far _pascal GetTempDrive(char); long _far _pascal _llseek(HFILE, long, int); long _far _pascal _hwrite(HFILE, const void _huge*, long); LPSTR _far _pascal AnsiLower(LPSTR); void _far _pascal Throw(const int _far*, int); extern_pascal String XtFindFile( CONST String /* path */, Substitution /* substitutions */, Cardinal /* num_substitutions */, XtFilePredicate /* predicate */ );
生成される COBOL コード
01 BYTE is typedef usage uns-char.
01 LPSTR is typedef usage data-pointer.
01 HFILE is typedef usage int.
01 XtFilePredicate is typedef usage proc-pointer.
end program "c-typedefs".
program-id."c-typedefs" is external.
special-names.
call-convention pascal-convention-val is pascal-conv.
$set constant GetTempDrive "GetTempDrive"
entry GetTempDrive pascal-conv using
by value char
returning uns-char
.
$set constant 1-llseek "_llseek"
entry 1-llseek pascal-conv using
by value int
by value long
by value int
returning long
.
$set constant 1-hwrite "_hwrite"
entry 1-hwrite pascal-conv using
by value int
by value data-pointer
by value long
returning long
.
$set constant AnsiLower "AnsiLower"
entry AnsiLower pascal-conv using
by reference any
returning data-pointer
.
$set constant Throw "Throw"
entry Throw pascal-conv using
by reference int
by value int
.
end program "c-typedefs".
program-id."c-typedefs" is external.
special-names.
call-convention default-convention-val is default-conv.
end program "c-typedefs".
program-id."c-typedefs" is external.
special-names.
call-convention default-convention-val is default-conv.
$set constant XtFindFile "XtFindFile"
entry XtFindFile default-conv using
by reference any
by value data-pointer
by value uns-int
by value proc-pointer
returning data-pointer.
.
end program "c-typedefs".
_hwrite ルーチンの void 型ポインターは、値で渡されるデータ ポインターを生成しますが、AnsiLower ルーチンの文字型ポインター、LPSTR は、あらゆるパラメーターを指定できる BY REFERENCE 句を生成します。通常は、COBOL のあらゆる英字項目が渡される可能性があり、文字型では制約が大きすぎるため、any が生成されます。
Throw ルーチンには、整数型項目が BY VALUE と BY REFERENCE の両方で渡されます。また、XtFindFile ルーチンには、手続きポインターが BY VALUE で渡されます。