COBOL2002 使用の手引 手引編


32.5.5 最終生成物の種類の設定

最終生成物の種類を設定するコンパイラオプションについて,説明します。

注※

最終生成物とは,コンパイラが最終的に生成する実行可能ファイルのことを示します。

〈この項の構成〉

(1) -Mainオプション

(a) 形式

-Main,{System|V3} ファイル名

(b) 機能

最外側のプログラムをアプリケーションの主プログラムとしてコンパイルします。

ファイル中に複数の最外側のプログラムがあるときは,先頭の最外側のプログラムを主プログラムとしてコンパイルします。

-Main,System ファイル名

最外側のプログラムをアプリケーションの主プログラムとしてコンパイルします。

このとき,主プログラムが制御プログラムから受け取る引数の形式を,システム固有のargc,argv形式に合わせます。

-Main,V3 ファイル名

最外側のプログラムをアプリケーションの主プログラムとしてコンパイルします。

このとき,主プログラムが制御プログラムから受け取る引数の形式を,メインフレーム(VOS3)に合わせます。

(c) 注意事項

  • -Main,Systemオプションまたは-Main,V3オプションの指定がない場合で,次の条件をすべて満たすときには,先頭のCOBOLソースファイルに-Main,Systemオプションを指定したものと仮定されます。

    1. -Compileオプションの指定がなく,かつ,オブジェクトファイル(.o),Cソースファイル(.c),アセンブラソースファイル(.s)の指定がない。

    2. 環境変数CBLCCの指定がない。

    3. -SimMainオプションの指定がない。

  • -Mainオプションと-MainNotCBLオプションを同時に指定した場合,-Mainオプションが無効となります。

    (例)

    -MainNotCBL -Main,System

    と指定した場合,-MainNotCBLオプションが有効となり,-Mainオプションは無効となります。

  • -Main,Systemオプション,-Main,V3オプションについては,「16.2 引数の受け取りと外部スイッチ」の記述も参照してください。

  • このオプションは,直後に指定されたファイルをアプリケーションの主プログラムとして扱います。

    [図データ]

  • ENTRY文の記述があるソースファイルに,このオプションを指定してもENTRY文に制御は渡りません。

  • -Main,V3オプションを指定して作成した実行可能ファイルを実行するとき,受け取れるコマンド引数は一つ(空白まで)です。コマンド引数に空白を含むときは,アポストロフィ(')で囲みます。

(2) -PICオプション

(a) 形式

-PIC,{Std|Expand}
-noPIC

(b) 機能

-PIC,Std

共用ライブラリに使う位置独立(PIC)コードを作成する場合に指定します。

-PIC,Expand

-PIC,Stdを指定した場合と同じコードを生成します。

-noPIC

-PICオプションの指定を打ち消します。

(c) 注意事項

  • -PICオプションを指定した場合,リンクできるオブジェクトファイル(.o)が作成されます(-Compile,NoLinkが仮定される)。

  • -PICオプションは,次のオプションと相反しています。同時に指定した場合は,このオプションを優先します。

    -Profileオプション

  • -PICオプションは,共用ライブラリ化するCOBOLオブジェクトファイル作成のために指定します。実行可能ファイルにリンクするCOBOLオブジェクトファイルや,アーカイブファイル化するCOBOLオブジェクトファイルを作成する場合は,これらのオプションを指定しないでください。指定した場合,関数の呼び出し元への戻り制御が正常に動作しない場合があります。

  • Cコンパイラにも,位置独立コード(PIC)を作成するオプションがあります。Cコンパイラのオプションについては,システムのマニュアルを参照してください。

  • 共用ライブラリは,ldコマンドで作成します。次に,共用ライブラリの作成例を示します。

(例)

オブジェクトファイル名:xxx.o

AIX(32)の場合(共用ライブラリ名:libucbl.a)
ld -o libucbl.a xxx.o -bpT:0x10000000
   -bpD:0x20000000 -bnoentry -bM:SRE -bE:libucbl.exp 
   -L/opt/HILNGcbl2k/lib -lcbl2k -lcbl2kml -lm -lc
AIX(64)の場合(共用ライブラリ名:libucbl.a)
ld -o libucbl.a a.o b.o -b64 -bpT:0x100000000
   -bpD:0x110000000 -bnoentry -bM:SRE -bE:libucbl.exp 
   -L/opt/HILNGcbl2k64/lib -lcbl2k64 -lcbl2kml64 -lm -lc
Linux(x86)の場合(共用ライブラリ名:libucbl.so)
ld -E xxx.o -o libucbl.so -shared -L/opt/HILNGcbl2k/lib -lcbl2kml
Linux(x64)の場合(共用ライブラリ名:libucbl.so)
ld -E xxx.o -o libucbl.so -shared -L/opt/HILNGcbl2k64/lib -lcbl2kml

オブジェクトファイルは複数指定できます。