Header-to-copy ユーティリティが C ソース コード内の名前付き宣言を等価な COBOL COPY ファイル形式に翻訳する例を次に示します。
C のソース
typedef struct fsid { long val[2]; } fsid_t; typedef unsigned long ino_t; /* inode number (filesystem) */ typedef unsigned int uint_t; #define FHSIZE 32 #define MAXFIDSZ (FHSIZE - sizeof(fsid_t) - sizeof(uint_t)) struct fileid { /* this is for servers only! */ uint_t fid_len; ino_tfid_ino; uint_t fid_gen; char fid_x[MAXFIDSZ - (sizeof(ino_t) + 2) - sizeof(uint_t)]; };
生成される COBOL コード
01 fsid is typedef. 02 val occurs 2 usage long. 01 fsid-t is typedef usage fsid. 01 ino-t is typedef usage uns-long. 01 uint-t is typedef usage uns-int. 78 FHSIZE value 32. 78 MAXFIDSZ value 28. 01 fileid is typedef. 02 fid-len usage uns-int. 02 filler pic x(2). 02 fid-ino usage uns-long. 02 fid-gen usage uns-int. 02 fid-x pic x(14).
H2cpy は、長整数型の fid-ino 項目が 4 バイトで正しく整列されるように、2 バイトの fid-len 項目の後に 2 バイトの FILLER 項目を挿入します。
整列すべきバイト数は、-e オプションや -a オプション、および #pragma pack 指令の指定によって左右されます。