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 指令の指定によって左右されます。