![]() | COBOL システムインターフェイス (Cob) | Cob のエラーメッセージの説明 | ![]() |
この章では、cob コマンドで使用できるフラグについて説明します。これらのフラグを指定して、システムの構成要素の動作を指定し、出力されるファイルのタイプを決定します。『COBOL システムインターフェイス (Cob)』の章で説明しているように、出力されるモジュールのタイプ (システムの実行可能プログラムだけでなく、たとえば、呼び出し可能な共有オブジェクト、.intファイル、.gnt ファイル、および .o ファイルなど) は、入力ファイルのタイプや、cob コマンドに指定したオプションによって異なります。cob の出力ファイルは、デフォルトではソースディレクトリに置かれます。cob を使って作成した実行ファイルを別のディレクトリに置く場合は、-o フラグを指定します (この章の以降の説明を参照してください)。
フラグを、大文字のフラグの後に小文字のフラグのという順で、アルファベット順に説明します。各説明では、機能、フラグとその設定および必要なオプションを示します。
指定したオプションを、UNIX システムのアセンブラ (as) に渡します。
cob コマンドに入力された COBOL ソースファイル (拡張子 .cbl、.CBL または .cob) を、中間コードファイル (拡張子、 .int)、および Animator 情報ファイル (拡張子、 .idy)にコンパイルします。どちらのファイルも Animator で使用されます (これらのファイルに関する詳細は、『Utilities Handbook』マニュアルの『Starting Animator』の章を参照してください)。
cob コマンドに入力されたオブジェクトモジュールファイル (拡張子、 .o)、C ソースファイル、またはアセンブラソースファイルは、すべて COBOL ライブラリにリンクされ、1 つのシステムの実行可能ファイルになります。これらのファイルは、Animator でも使用されます。これにより、COBOL 以外の言語で書かれたプログラムを呼び出したり、そのようなプログラムから呼び出されるプログラムをアニメートすることができます。
-a フラグは、cob の処理の終了点を指定せず、COBOL コンパイラで作成される中間コードファイルのタイプのみを指定します。
これは、cob コマンドのデフォルトのアクションです。そのため、実際には、cob のコマンド行で -a フラグを指定する必要はありません。ただし、コードを明確にするために指定することもできます。
次にコマンドの使用例を示します。
cob -a myfile.cbl c.o
このように指定すると、ファイル、 myfile.int、myfile.idy、および c が作成されます。ファイル、 c にはランタイムシステム、およびファイル、 c.o が含まれます。次のコマンドも同じ動作になります。
cob myfile.cbl c.o
myfile.int をアニメートする場合は、コマンド行に次のように指定します。
COBSW=+A export COBSW c myfile.int
directive
をコンパイラの構文チェックフェーズに渡します。directive
には、1 つ以上のコンパイラ指令を指定します。コンパイラ指令は、『コンパイラへの指令』の章に一覧表示しています。
cc_option
を、cc から C または C++ コンパイラに 渡します。cob
の -CC フラグを指定する場合は、C または C++ コンパイラで使用されるオプションのみを指定するようにしてください。これは、C または C++ プログラムをコンパイルする際に、cc
ではなく cob コマンドを使用すると、システムでは、C または C++ プログラムの実行前に、これらを COBOL プログラムにリンクするものと解釈されるためです。これには、cob
で .o ファイルが必要です。 .o ファイルは、C または C++ プログラムを、C または C++ コンパイラでコンパイルすると出力されます。cob
は、C または C++ コンパイラからコンパイル結果の .o ファイルを受け取り、これを他のオブジェクトモジュールにリンクして、呼び出し可能な共有オブジェクト、共有ライブラリ、またはシステムの実行可能ファイルを作成します。そのため、通常の場合にコンパイラからシステムリンカに渡されるオプションを、-CC
フラグを使用して渡されないようにしてください。
リンク済みの実行可能プログラムモジュールのリンク編集を行わず、オブジェクトモジュールをそのままリンクできます。このオプションでは終了点を指定しません。このオプションは、指定された終了点でリンク編集行われる場合にのみ有効です。たとえば、cob に -x、-z、または -Z などのフラグを指定した場合に有効です。
シンボル symb
が呼び出された場合に、このシンボルが動的にロードされるようにします。symb
には有効な COBOL 名を指定します。このオプションは、リンク済みの実行可能プログラムモジュールを作成する際に使用し、実行時に動的にロードする不明なモジュールを指定することができます。
デフォルトの入口点シンボルを epsym
に指定したシンボルで上書きします。epsym に指定するシンボルは、COBOL
モジュールにあらかじめ定義しておく必要があります。デフォルトでは、リンク済みモジュールの入口点のアドレスは、cob コマンドに最初に入力されたファイルの基本名です。システムの実行可能プログラム
(cob の-x フラグ) にリンクしており、入口点のアドレスを、実行時にコマンド行から読み取られるようにする場合は、-e "" を入力して、epsym
の値をヌルに設定することができます。
コンパイル時に、ANIM 指令がコンパイラに渡されると、コンパイラでは .int、.gnt および .o コードが作成されます。これらのコードは Animator で使用できます。
リンク時に、dbx などの Symbolic Debugger で必要な追加情報がリンカで作成されます。このフラグを設定すると、すべてのシンボルが出力ファイルに表示されます。このフラグは .c または .C ファイルが処理される際には、それぞれ、C または C++ コンパイラに渡されるため、デバッグする C または C++ の機能が、作成したプログラムに含まれている場合に役立ちます。
symb
に指定したシンボルを、実行可能プログラム出力ファイルに組み込みます。symb
がシステムリンカに取り込まれると、参照されている他のオプジェクトとともに、そのオプジェクト全体が取り込まれます。このフラグは、アーカイブからのサポートを組み込む場合にも使用できます。次に例を示します。
cob -xo rts32 -e "" -I func1 -I func1 libmine.a
cob コマンドに入力された COBOL ソースコード (.cbl、.CBL、または.cob) ファイルを、動的にロード可能な中間コードファイル (拡張子、 .int のファイル) にコンパイルします。中間コードファイルは、これ以上処理する必要はなく、このまま実行することができます。
拡張子のないファイル、または、デフォルトの拡張子、 .cbl、.CBL または .cob 以外の拡張子を持つ COBOL ソースファイルを cob に指定します。これにより、決められた拡張子以外の拡張子を持つ COBOL ファイルを、ファイル名を変更せずにコンパイルすることができます。
cob の -l フラグとともに指定したライブラリが、システムリンカに検索される順番を変更します。-L オプションは、cob のコマンド行で -l オプションの前に指定した場合にのみ有効です。
cob の -L フラグの効果は、システムリンカ、ld の -L オプションと同じです (このリンカオプションに関する詳細は、ご利用のオペレーティングシステムのマニュアルを参照してください)。 デフォルトでは、これらのライブラリは、ディレクトリ、 /lib (または /usr/ccs/lib)、および /usr/lib で最初に検索されますが、-L フラグを指定すると、システムリンカは、指定されたディレクトリで最初にこれらのライブラリを検索します。-L オプションの指定順序は重要で、ディレクトリは指定された順番に検索されます。
環境変数 LD_LIBRARY_PATH または LIBPATH (AIX システムの場合)、または SHLIB_PATH (HP/UX システムの場合) に指定されているパスは、-L、+L、およびデフォルトのパスよりも先に検索されます。
次に、+L、および -L フラグの使用例を示し、ライブラリが検索されるディレクトリの順序を説明します。
cob +L /usr/mylib +llib1 object.o -L /usr/grouplib -llib2 +llib3
オプションがシステムリンカに渡される相対順序 (各ライブラリに関して、すべての検索パスを検索する必要がある場合) は次のようになります。
上記の例の LD_LIBRARY_PATH は、LIBPATH または SHLIB_PATH のことを示し、どちらに該当するかはご利用の UNIX システムによって異なります。
すべての検索パスが検索されるのは、それ以前の検索パスすべてで、「ファイルが見つからない」という状態が返された場合のみです。
このオプションは、相対順序が保存されないことを除いて、-L と同じ役割を持ちます。+L オプションは、他のすべてのオブジェクト、およびリンカのオプションが渡された後、(-L オプションとして) システムリンカに渡されます。+L オプションと +l オプションの相対的な順序は保存されます。検索順序の例は、-L の説明を参照してください。
システムリンカは、指定されたライブラリで外部のルーチンを検索します。cob の -l フラグは、効果としてはシステムリンカ、ld の -l オプションと同じです (このリンカオプションに関する詳細は、ご使用のオペレーティングシステムのマニュアルを参照してください)。 -l オプションの指定順序は重要で、ディレクトリは指定された順番に検索されます。
ライブラリは、ライブラリ名が指定された位置で検索されるため、-l フラグの位置は重要な意味を持ちます。デフォルトでは、ライブラリは、/lib (または /usr/ccs/lib)、および /usr/lib で検索されますが、-L フラグをを使用して、他の検索パスを指定することができます。
次に、+l、および -l フラグの使用例を示し、シンボルが検索されるライブラリの順序を説明します。
cob -llib1 +llib2 obj1.o -llib3 obj2.o
オプションがシステムリンカに渡される相対順序は次のようになります。
システムリンカでは、オプションはハイフン (-) 区切りで受け取られるため、相対順序が決定されると、+l フラグオプションは、リンカに渡される前に -l に変換されます。
このオプションは、相対順序が保存されないことを除いて、-l lib
と同じ役割を持ちます。 +l オプションは、他のすべてのオプション、およびファイルが渡された後、(-l オプションとして) システムリンカに渡されます。 そのため、+l とともに指定したライブラリは、COBOL ライブラリが検索された後で検索されます。+L オプションと +l オプションの相対的な順序は保存されます。 検索順序の例は、-L の説明を参照してください。
未解決のシンボル symb
を newsym
にマップします。newsym はあらかじめ COBOL モジュールに定義しておく必要があります。これにより、symb が呼び出されると、newsym が呼び出されます。
このフラグを使用して、cob で作成されたリンク済みの実行可能プログラムの一部を、ユーザが作成したルーチンや、既製のモジュールにマップすることもできます。マップ可能な RTS シンボルは次のとおりです。
シンボル |
説明 |
---|---|
sqfile | 順編成の固定長レコードのファイルハンドラ |
ixfile | 索引編成の固定長レコードのファイルハンドラ |
rlfile | 相対編成の固定長レコードのファイルハンドラ |
lsfilev | 行順編成の可変長レコードのファイルハンドラ |
sqfilev | 順編成の可変長レコードのファイルハンドラ |
ixfilev | 索引編成の可変長レコードのファイルハンドラ |
rlfilev | 相対編成の可変長レコードのファイルハンドラ |
上記のファイルハンドラシンボルのような COBOL ライブラリからシンボルをマッピングしており、newsym
にユーザライブラリへの未解決の参照がある場合は、+L、および +l フラグを使用して、ライブラリの検索パスとライブラリ名を指定し、COBOL ライブラリから、新しいシンボルへの参照が正しく検索されるようにしてください。
このオプションを使って、 Micro Focus が提供するファイルハンドラを、ユーザ独自のファイルハンドラに置き換える場合は、ユーザのファイルハンドラを、 Micro Focus の呼び出し可能なファイルハンドラインターフェイスの標準に準拠させる必要があります (詳細は、『ファイル操作』マニュアルの『ファイルハンドラ API』 の章を参照してください )。 更に、-m フラグを使用して、ご利用の Micro Focus COBOL システムで提供されているバージョン以外の C-ISAM バージョンの RTS とリンクさせることもできます。
指定したオプションを コンパイラに渡します。directive には 1 つ以上の生成フェーズの指令を指定します。生成フェーズの指令は、『コンパイラへの指令』の章に一覧表示されています。
実行時のチェックを最小限に抑え、実行時のパフォーマンスを最大にします。このオプションは、すべてのデバッグが終了し、実行時のチェックを最小限に、パフォーマンスを最大にする場合に使用します。このフラグの細かい操作は環境に依存しますが、少なくとも NOCHECK 指令がコンパイラに渡されます。.c または .C ファイルが処理される場合は、このフラグも cc または C++ コンパイラに渡されます。
-x、-z、または -Z オプションを使って作成されたリンク済みの実行可能プログラムモジュールのデフォルトの名前を、指定したファイル名に変更します。システムの実行可能ファイルのデフォルトのファイル名は、 cob コマンドに最初に入力されたファイルの基本名です。呼び出し可能な共有オブジェクトのデフォルトのファイル名は、cob コマンドに最初に指定された、拡張子、 .so のファイルの基本名です。共有ライブラリファイルのデフォルトのファイル名は、cob コマンドに最初に入力された、プリフィクス、 lib、ファイル名拡張子、 .so のファイルの基本名です。
cob コマンドに入力された 各 COBOL ソースファイルに対し、リストファイル (拡張子 .lst) を作成します。コンパイラで検知されたエラーはすべて、標準のエラーと、リストファイル (のエラーが検知された場所) の両方に報告されます。
オプション、 -p を C または C++ コンパイラに渡します。このとき、システムの実行可能プログラムモジュールにリンクしている場合は、cob で、monitor(3) を呼び出す起動、および終了のプロファイリングルーチンが使用されます。これにより、実行可能プログラムモジュールが正常終了すると、ファイル、 mon.out にモニタ情報が書き込まれます。-p フラグに関する詳細は、ご使用のシステムのマニュアルを参照してください。
オペレーティングシステムによっては、リンク済みの実行可能プログラムのプロファイリングをサポートしていないものもあります。
指定した cob のオプションをシステムリンカに渡します。 Micro Focus COBOL システムでは、リンクプロセスが 2 段階に分かれています。これらのプロセスを使って、動的ロード、および
C の外部データへの参照をサポートするリンク済みの実行可能プログラムモジュールがビルドされます。-Q ld_option
を指定すると、オプションは、リンカの両段階に渡されます (つまり、コマンド ld を呼び出します) 。 -Q,1 ld_option
を指定すると、オプションはリンクの第 1 段階にのみ渡されます。-Q,2 ld_option
を指定すると、オプションは
第 2 段階にのみ渡されます。
-Q フラグは、オプションごとに別々に指定する必要があります。また、ハイフンで始まるオプションは、引用符で囲む必要があります。-Q "flag
value
" という形式は、flag
および value
が別々の 2 つの引数ではなく、間に空白文字を含む 1 つの引数を表す場合にのみ使用してください。
マルチスレッドランタイムシステムを使用した、マルチスレッドプログラムを作成します。このオプションを設定すると、REENTRANT コンパイラ指令がコンパイラに渡され、必要に応じて適切なオプションが C および C++ コンパイラに渡され、マルチスレッドライブラリが選択されます。
未解決の参照を COBOL プログラムとして扱い、動的にロードされるようにします。通常の場合、このような参照があると、システムの実行可能プログラムの作成でのリンク時に、または呼び出し可能な共有オブジェクトの実行時に致命的なエラーになります。
COBOL ソースコードファイル (.cbl、.CBL、または .cob) を中間コードにコンパイルし、作成された中間コードから、動的にロード可能なネイティブコード (生成コード) ファイルを作成します。生成コードファイルの拡張子は .gnt です。
-g フラグも指定している場合、作成される生成コードにはデバッグ情報も含まれます。そのため、Animator を使ってこれらをデバッグすることができます。
cob コマンドには、COBOL ソースコードファイルのかわりに中間コードファイルを指定することができます。中間コードを指定すると、コードの生成のみが行われます。cob コマンドに、オブジェクトモジュールファイル (.o) を入力することもできます。オブジェクトモジュールを入力すると、これらはリンクされ、実行可能プログラム RTS が作成されます。動的にロードされたプログラムからは、その他の動的にロード可能な有効なプログラムのモジュールと同様、リンク済みの実行可能プログラム RTS のモジュールも呼び出すことができます。
次の例では、 -u フラグを使用して実行できるプロセスのタイプを示します。
cob のコマンド行 |
出力ファイル |
---|---|
cob -u tmp/a.cbl |
a.int、a.idy、a.gnt |
cob -u b.cbl |
b.int、b.idy、b.gnt |
cob -u a.int |
a.gnt |
cob -u tmp/b.int |
b.gnt |
cob -ug a.cbl |
a.int、a.idy、a.gnt |
実行された COBOL システムのすべての構成要素のバージョン番号を画面に送ります。このオプションは、システムプログラミングユーティリティ (たとえば、cc、および ld) に渡されます。
コンパイラから出力される、受け取った指令に関するメッセージを画面に送信します。メッセージには、コードとデータ領域のサイズ、および各モジュールの入口点の情報が含まれます。このフラクを指定すると、エラー以外の状態を示す警告メッセージ (たとえば、ユーザが指定したフラグで、以前に設定済みのフラグが上書きされたなど) も画面に出力されます。警告メッセージはデフォルトでは表示されません。このフラグを指定すると、このフラグを cob に渡した際のコマンド行も画面に表示されます。
このフラグを指定すると、COBOL コンパイラのエラーレベルが err-level
に指定したレベルを超えた場合に、cob プロセスを停止させることができます。デフォルトでは、cob
コマンドは、
ユーザのコードに、「重大」以上のレベルのエラーが検知されると停止します。
err-level
には、エラーのレベルを示す英数字の文字 1 文字を指定します。
文字 |
レベル |
---|---|
u | 回復不能 |
s | 重大 |
e | エラー |
w | 警告 |
i | 備考 |
指定されたレベル以上のエラーがコード内にあった場合に、これらのエラーがコンパイラから cob コマンドに報告されると、 cob プロセス (コンパイルプロセスではない) が停止します。この動作は、 WARNING コンパイラ指令の設定に依存します。この指令は、コンパイラから報告されるエラーのレベルを制御する指令です (この指令に関する詳細は、『コンパイラへの指令』の章を参照してください)。
そのため、たとえば、WARNING 指令で、回復不能レベル、重大レベル、およびエラーレベルのエラーのみがコンパイラから報告されるように設定します。更に、-W フラグで、備考 (以上) のレベルのエラーが報告された場合は、 cob コマンドを中止するよう指定します。この場合では、警告レベル、および備考レベルのエラーは、発生してもコンパイラから報告されないため、実際は、回復不能レベル、重大レベル、またはエラーレベルのエラーが発生した場合にのみ、cob コマンドが停止します。
未解決のテキストシンボル symb
を、実行可能プログラムの出力ファイルから除外します。このフラグを指定すると、symb
への参照を解決するためのスタブルーチンが作成されます。symb
が、呼び出されると、次のような RTS エラー
107 が発生します。
このランタイムシステムには実装されていない操作です。
このフラグは、要求されない (が、参照される) ことが解っている未定義のシンボルをモジュールに渡す場合に使用できます。こうすると、未定義のシンボルがある場合でも、実行可能ファイルを作成することができます。作成されたファイルは、このフラグを指定しなかった場合よりも実際は小さくなりません。しかし、このフラグを設定すると、除外されたモジュールを呼び出そうとした場合に、意味のあるエラーメッセージを受け取ることができます。
有効なシンボルに関する詳細は、この章で前述の -I フラグの説明を参照してください。
cob コマンドに入力されたファイルから、システムの実行可能ファイルを作成します。入力ファイルとしては、ファイルタイプが .gnt 以外のファイルを指定できます。 デフォルトでは、このモジュールの名前は、最初にリンクされたオブジェクトの基本名になります。拡張子はありません。
このオプションを使用して、完全な RTS を作成することもできます。次のように指定します。
cob -xo rts.new
-x フラグに CC オプションを指定すると、COBOL オプジェクトと C++ オブジェクトをリンクさせて、1 つの実行可能ファイルにすることができます。C++ (.C) ソースファイルを指定するとまず、 C++ コンパイラが起動され、C++ ソースファイルがオブジェクトコードにコンパイルされます。
たとえば、C++ プログラム cprg.C、および COBOL プログラム cobprg.cbl をリンクするには、コマンドを次のように使用します。
cob -x,CC cobprg.cbl cprg.C
ソースファイルを処理して、自己格納式の呼び出し可能な共有オブジェクトを作成します。このフラグは、NSAPI プログラムを作成する場合のみ使用してください。詳細は、『インターネットアプリケーション』マニュアルの『NSAPI プログラムのビルド』の章を参照してください。
COBOL ソースコードファイル (.cbl、.CBL、または .cob) を中間コードにコンパイルし、作成された中間コードからオブジェクトコード (.o) ファイルを作成します。更に、このオブジェクトコードをリンクして、動的にロード可能な呼び出し可能な共有オブジェクトを作成します。呼び出し可能な共有オブジェクトファイルの拡張子は .so です。
-g フラグも指定している場合は、作成される呼び出し可能な共有オブジェクトには、デバッグ情報も含まれます。そのため、Animator を使ってこれらをデバッグすることができます。
cob コマンドには、COBOL ソースコードファイルのかわりに中間コードファイルを指定することができます。中間コードを指定すると、中間コードからオブジェクトコードが生成されます。 cob コマンドには、オブジェクトモジュールファイル (.o) を指定することもできます。この場合、オブジェクトモジュールは、システムリンカ (ld) でリンクされ、動的にロード可能な呼び出し可能な共有オブジェクトが作成されます。
U オプションを指定すると、未定義のシンボルが検知された場合にエラーメッセージが発行されます。
-z フラグに CC オプションを指定すると、COBOL オプジェクトと C++ のオプジェクトをリンクさせて、1 つの呼び出し可能な共有オブジェクトにすることができます。 C++ ソースファイル (.C) を指定すると、まず C++ コンパイラが起動され、C++ ソースファイルがオブジェクトコードにコンパイルされます。
たとえば、C++ プログラム、 cprg.C と、COBOL プログラム、 cobprg.cbl をリンクする場合は、コマンドを次のように指定します。
cob -z,CC cobprg.cbl cprg.C
次の例では、-z フラグを使用して実行できるプロセスのタイプを示します。
cob のコマンド行 |
出力ファイル |
---|---|
cob -z tmp/a.cbl |
a.int、a.so |
cob -z b.cbl |
b.int、b.so |
cob -z a.int |
a.so |
cob -z c.o |
c.so |
cob -zg a.cbl |
a.int、a.idy、a.so |
cob コマンドに入力されたファイルから、共有ライブラリファイルを作成します。入力ファイルとしては、.gnt ファイル以外のタイプのファイルを指定できます。このモジュールのデフォルトの名前は、プリフィクス、 lib、ファイル名拡張子、 .so (HP/UX の場合は .sl) のファイルに最初にリンクされたオブジェクトの基本名です。
-Z フラグに CC オプションを指定すると、COBOL オプジェクトと C++ のオプジェクトをリンクさせて、1 つのライブラリファイルにすることができます。 C++ (.C) ソースファイルを指定すると、まず C++ コンパイラが起動され、C++ ソースファイルがオブジェクトコードにコンパイルされます。
たとえば、C++ プログラム、 cprg.C と、COBOL プログラム、 cobprg.cbl をリンクする場合は、コマンドを次のように指定します。
cob -Z,CC cobprg.cbl cprg.C
次の cob のフラグは、Micro Focus で将来使用するために予約されています。
-f
-q
Copyright(C) 2001 Micro Focus. All rights reserved.
本書ならびに、使用されている固有の商標と商品名
は国際法で保護されています。
![]() | COBOL システムインターフェイス (Cob) | Cob のエラーメッセージの説明 | ![]() |