マクロの展開と文字列リテラルの作成

Header-to-copy ユーティリティは、文字列と連結演算子 (# および ##) を使用して引数付きマクロを展開します。次に #define 指令によるマクロ定義の例を示します。

#define DECLARE_HANDLE32(name) struct name##__ { int unused; }; \
  typedef const struct name##__ _far* name

このマクロ定義自体は 78 レベル項目には変換されませんが、同じ C ヘッダー内で次のマクロが見つかると、

DECLARE_HANDLE32(HHOOK);

H2cpyは C の規則に従ってそのマクロを展開し、対応する COBOL コードを生成します。COBOL ではデータ ポインターと手続きポインターを区別する場合を除き、ポインターの型を指定できません。

 01 HHOOK--  is typedef.
     02 unused     usage int.
 01 HHOOK   is typedef  usage data-pointer.