H2cpy コマンド ライン オプション

コマンド ラインのオプションは、先頭にハイフン (-) を付けて指定します。大文字と小文字は区別されます。1 文字のオプションは、それぞれを個別に指定する代わりに、1 つのハイフンに続けて指定することもできます。たとえば、-v、-C、-h の 3 つのオプションは、「-v -C -h」と「-vCh」のどちらでも指定できます。オプションを指定する順序には、特に制限はありません。

スラッシュ (/) は、ハイフンの代わりに使用できます。ハイフンで始まるオプションは、最初のファイル名より前の場所で指定できません。

次に各オプションとその説明の一覧を示します。大文字のオプション、小文字のオプションの順に、それぞれアルファベット順で示されています。オプション文字の前後には、空白文字を入れることもできます。パラメーターも省略可能です。

オプション 説明
-A C 言語の厳密な ANSI 解釈を行わないように指定します。

ANSI C や ISO C には、C 言語の初期実装とは異なる部分があります。H2cpy の使用時に発生した問題が、この相違に起因すると思われる場合は、-A オプションを指定します。

-C 生成される COBOL に C コードを埋め込みます。

COBOL コード内の C ソース コード行には、先頭にアスタリスク (*) と空白文字が付加されます。これらの行は COBOL コンパイラでは解釈されません。C のプリプロセッサで処理されたコードが埋め込まれます。

-D name[=val] マクロ名を宣言します。値の指定はオプションです。マクロの値 (数値または文字列リテラル) も指定できます。
-E 構造体および共用体のすべてのオカレンスを展開します。

構造体や共用体を表す COBOL コードが各メンバーまで完全に明示されるのは、最初の宣言時のみです。それ以降は名前で参照されます。

-F name=val C 関数の呼び出し規則 name を CALL プロトタイプの COBOL CALL-CONVENTION 値 val と同等と見なします。name には、次のいずれかを指定します。
[Name] デフォルト値
cdecl 0
default 0
fastcall 2
optlink 16
pascal 11
stdcall 74
system 16

これらの値は、それぞれ C 言語の同じ名前のキーワードと対応しています (C のキーワードには、先頭に 1 つ以上の下線が付きます)。ただし、default は例外です。default は、呼び出し規則が明示的に指定されていない場合に使用される C 言語のデフォルト呼び出し規則を表します。

-G name name で指定したオプションのグループを使用して、コマンド ラインで指定したこれらのオプションよりも前に処理します。オプションは、h2cpy.dir ファイル内に 1 つ以上の行で、ヘッダー [name] の後に指定します。このファイルは現在のディレクトリに保存できます。name が指定されない場合には、H2cpy は $COBDIR ディレクトリで h2cpy.dir ファイルを検索します。h2cpy.dir ファイル内のオプションには、名前が前方参照の場合に限り、最初の行にヘッダーに続いて -G オプションを指定できます。シャープ (#) またはセミコロン (;) で始まる行は、コメント行として扱われ、無視されます。詳細モードを選択すると、h2cpy コマンドは name と検索したファイルを表示します。

たとえば、h2cpy.dir ファイルの例を次に示します。

[default]
-G win32
[win32]
# For generating a simple, general win32 header file 
# from 32-bit windows.h
# This is set for the executable entry points, for dlls 
# add -D DLL
-e 32 -D _MSC_VER=1000 -D CHAR_UNSIGNED -D _M_IX86=500
-D _WIN32 -D WINVER=0x0400 -D WIN32_LEAN_AND_MEAN

-G オプションを指定しない場合は、デフォルトで -G default となります。-G オプションは、ハイフンの後に他のオプションを組み合わせて指定することはできません。

-I path インクルード検索パス リストの先頭に、指定した path を挿入します。このオプションを使用すれば、検索パス リストの上限までパスのエントリを登録できます。登録可能なエントリ数の上限は 14 です。

INCLUDE 環境変数が使用されない場合には、当初この検索リストは空です。

-J 文字型のデフォルトを unsigned に変更します。
-K name name をキーワードとして認識する (無視する) ように指定します。このオプションは、-M オプションでは変更されない、C コンパイラ用に適合されたヘッダー ファイルに役立ちます。
-M 通常では、認識される Microsoft キーワードを無効化します。
cdecl dllexport dllimport except
far finally fortran interrupt
huge near pascal thread
_asm _based _cdecl _far
_emit _export _fastcall _fortran
_huge _inline _interrupt _loadds
_near _pascal _saveregs _segment
_segname _self    
__asm __based __cdecl __declspec
__export __far __fastcall __fortran
__huge __inline __int8 __int16
__int32 __int64 __leave __loadds
__near __pascal __saveregs __segname
__segment __self __stdcall __try
-O 通常は認識される IBM C (OS/2 用) のキーワードを無効化します。具体的には、次のキーワードが無効化されます。
_Cdecl _Far32 _Optlink _System
_Export _Fastcall _Packed _Pascal
_Far16 _Inline _Seg16
-P C ソースをプリプロセッサで処理するのみで、COBOL COPY ファイルは生成しません。

-C オプションとほぼ同じですが、このオプションでは COBOL コピーファイルも生成されません。H2cpy による C ソース ファイルの前処理が、C コンパイラとは異なると思われる場合に使用できます。

-R name COBOL 予約語を辞書に追加します。

H2cpy には、現時点で確認されているすべての予約語が組み込まれていますが、このオプションを使用すれば、さらに新しい予約語を追加できます。

-S #define マクロ定義に対する COBOL を別ファイルに生成します。生成されるファイルには、他の出力ファイルと同じベース名に拡張子、.78 を連結した名前が付けられます。
-V 生成するパラメーター数を固定します。

このオプションは、一時的な等価の COBOL 要素の生成を無効にします。(C 言語の省略記号 (...) には現在、等価の標準 COBOL 要素がないため、H2cpy はこの省略記号を無視します。)

-W COBOL のコンテキスト依存の予約語を削除します。
-X 文字列ポインターを単なる char* から char* と unsigned char* の両方へと、等価な COBOL に拡張します。

関数プロトタイプの unsigned char* パラメーターは、標準で BY REFERENCE uns-char に変換されます。uns-char 型は一般に適した数字です。ただし、文字列ポインターを定義する unsigned char* 型を使用する os2.h などのヘッダー ファイルには適しません。-X オプションは、そのようなヘッダー ファイルを変換する場合に使用します。-X オプションを使用すると、H2cpy によって BY REFERENCE ANY が生成されるため、文字列パラメーターを PIC X(n) 項目として渡すことができます。

-a type=n C のデータ型の整列を設定します。type は、int、char、short、long、llong、pointer、float、dfloat、または dlfloat のいずれかです。

C の各データ型にはデフォルトで整列が設定されていますが、このオプションを使用すれば任意のデータ型の整列を変更できます。C ヘッダー ファイル内で #pragma pack 指令を使用すると整列が変更されます。

-c COBOL ではすべての名前を小文字で生成します。

標準では、COBOL の名前は基本的に C の対応する名前に従います。そのため、名前に含まれる各文字の大文字と小文字の用法も、対応する C の名前と同じになります。

-e n ターゲット環境を指定します。n は次のいずれかです。
16/ LP32 int が 16 ビット、long と pointer が 32 ビット
32/ ILP32 int、long、および pointer が 32 ビット
LLP64 int と long が 32 ビット、long long と pointer が 64 ビット
LP64 int が 32 ビット、long と pointer が 64 ビット
ILP64 int、long、および pointer が 64 ビット
このオプションが指定されない場合は、H2cpy が実行されている環境に応じて、デフォルトで 16 または 32 となります。

C のデータ型のサイズと整列は、コードの実行環境に左右されます。32 ビット環境での C のデータ型のサイズと整列は、

char 1:1、short 2:2、int 4:4、long 4:4、long long 8:4、pointer 4:4、float 4:4、double float 8:8、double long float 8:8 です。

-a オプションと -s オプションを使用して、デフォルト値を変更できます。

-f #define 浮動小数点リテラルを COBOL に渡します。

COBOL コンパイラは、浮動小数点リテラルのサイズと形式を検証します。デフォルトでは、#define 指令がマクロを浮動小数点定数として指定する場合には、COBOL は生成されません。ただし、COBOL コンパイラによってリテラルのサイズが受け入れられない可能性もあります。

浮動小数点定数が定数式にインクルードされている場合には、H2cpy がこの式を評価すると、浮動小数点定数をゼロとして扱い、警告を表示します。

-h 16 進数の #define 値を 10 進数の値に変換します。

デフォルトでは、#define 指令がマクロを 16 進数定数として指定する場合には、H2cpy は COBOL の16 進数定数を生成します。このオプションを指定すると相当する 10 進数に変換されます。

-o name 生成 COBOL の出力ファイルの名前を指定します。

デフォルトでは、生成される COBOL コピーファイルには、最初に変換された C ヘッダー ファイルのベース名に拡張子 .cpy (外部宣言ファイルの場合は .ext) を連結した名前が付けられます。このオプションを使用すれば、生成される COBOL ファイルの名前を任意に指定できます。なお、外部宣言ファイルには、常にコピーファイルと同じベース名が使用されます。

-p CALL プロトタイプを生成しません。

デフォルトでは、H2cpy は C 関数プロトタイプを COBOL CALL プロトタイプに変換します。この変換により、COBOL コンパイラはすべての CALL を CALL プロトタイプに適合させます。ただし、この検証処理は柔軟性の点で十分でない場合があります。

H2cpy が CALL プロトタイプを生成しないようにする場合には、このオプションを設定します。

数値リテラル (78 レベル項目) をパラメーターとして渡す呼び出しには注意してください。コンパイラは、項目を COMP-5 形式に変換し、そのサイズを COBOL CALL プロトタイプが提供するサイズとします。CALL プロトタイプが存在しない場合は、デフォルト サイズの 2 バイトが正しくないため、呼び出しが実行時に失敗します。そのような場合には、BY VALUE 指定の SIZE 句で正しいバイト数を指定する必要があります。

-q #include ファイルが見つからない場合にユーザーに応答を求めません。
-r COBOL 予約語リストを削除します。

生成される COBOL コードをコンパイルしない場合には、このオプションを使用して起動時間を短縮できます。

-s type=n C のデータ型のサイズを設定します。type は、int、char、short、long、llong、pointer、float、dfloat、または dlfloat のいずれかです。
-u C 識別子のアンダースコアを保持します。デフォルトでは、h2cpy はアンダースコア「_」を「-」に変換します。このオプションにより、「_」のまま維持できます。
-v 備考メッセージの画面への表示/非表示を切り替えます。

メッセージの画面表示の表示/非表示を切り替えるオプションです。このオプションを指定すると詳細モードが有効になり、プログラムのバナーやその他のメッセージ (ネストした #include ファイルのトレース結果など) が表示されます。

このオプションを省略した場合 (サイレント モード) は、エラー メッセージのみが表示されます。デフォルトは詳細モードです。

-w マネージ COBOL のみの予約語を削除します。
-z name COBOL 予約語を削除します。