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 で渡されます。