コンパイラオプションには,オプション同士が背反の関係となっていたり,あるオプションを指定するとほかのオプションが仮定されたりするものがあります。このようなオプション間の優先順位を,次に示します。
(a) あとに指定した方のオプションが有効となる場合
次のコンパイラオプションを同時に指定した場合,あとに指定した方のオプションが有効となります。
- -DigitsTrunc/-Comp5
- -V3Rec/-EquivRule
- -CompatiV3/-EquivRule
- -OleServer,Exe/-Dll
(b) オプションを指定すると,ほかのオプションが無効となる場合
次のコンパイラオプションを指定した場合,無効となるオプションがあります。
表2-3 オプションを指定すると,ほかのオプションが無効となる場合
指定したオプション | 無効となるオプション |
---|
-MainNotCBL | |
-Dll | |
-OleServer,Dll | - -Main
- -Dll,Cdecl
- -Lib,CUI
- -SimMain
- -BigEndian
- -Bin1Byte
- -EquivRule
- -V3Rec
- -V3RecFCSpace
- -V3RecEased
- -MultiThread
|
-OleServer,Exe | - -Main
- -Lib,CUI
- -SimMain
- -BigEndian
- -Bin1Byte
- -EquivRule
- -V3Rec
- -V3RecFCSpace
- -V3RecEased
- -MultiThread
|
-Compile | - -OutputFile
- -ManifestFileExt
|
-Compile,CheckOnly | - -DebugInf
- -DebugCompati
- -DebugData
- -TDInf
- -CVInf
- -DebugRange
- -TestCmd
|
-StdMIA -Std85 -Std2002 | - -V3Spec
- -StdVersion
- -CompatiM7
- -CompatiV3
- -H8Switch
- -Cblctr
- -IgnoreLCC
- -JPN
- -CmDol
- -Comp5
- -NumAccept
- -V3Rec
- -V3RecFCSpace
- -V3RecEased
- -EquivRule,NotAny
- -SQL
- -SQLDisp
- -BinExtend
- -MaxDigits38
- -IntResult,DecFloat40
- -LiteralExtend
- -EUR,FormOutput
|
-StdMIA | - -EquivRule,StdCode
- -Bin1Byte
|
-V3Spec | - -Comp5
- -CmAster
- -BinExtend
- -CBLVALUE
- -Bin1Byte
- -CompatiM7
- -NumAccept
- -CmDol
- -MaxDigits38
- -IntResult,DecFloat40
- -LiteralExtend
- -EUR,FormOutput
- -V3RecEased
|
-Compati85,Syntax | |
-Repository,Gen | |
-UniObjGen | - -JPN
- -CompatiV3※
- -V3Rec※
- -V3RecFCSpace※
- -V3RecEased※
|
-IntResult,DecFloat40 | - -Compati85,Power
(-Compati85,All指定した場合も含む)
|
-CompatiV3 | |
-SimMain -SimSub -SimIdent | |
- 注※
- コンパイラ環境変数CBLV3UNICODEにYESを指定した場合,無効になりません。
(c) 仕様チェックオプションを複数指定した場合
-StdMIAオプション,-Std85オプション,-Std2002オプションは,同時に指定できません。同時に指定した場合,警告のメッセージが出力され,次の優先順位で有効となります。
- -Std2002オプション
- -Std85オプション
- -StdMIAオプション
(d) オプションを指定することによって,仮定されるオプション
次のコンパイラオプションを指定した場合,仮定されるオプションがあります。
表2-4 オプションを指定することによって,仮定されるオプション
指定したオプション | 仮定されるオプション |
---|
-OleServer,Dll | |
-OleServer,Exe | |
-V3Spec | |
-CompatiV3 | - -JPN,Alnum※2,※3
- -V3Rec,Variable
|
-DebugCompati | |
-DebugData | |
-DebugRange | |
-TestCmd | |
-TDInf | |
-TDInfと-Optimize,3を同時に指定 | - -Optimize,2
(-Optimize,3を指定しても-Optimize,2が仮定される)
|
-CVInf | |
-StdMIA,14 | |
-MaxDigits38および-IntResult,DecFloat40と-Optimize,3を同時に指定 | - -Optimize,2
(-Optimize,3を指定しても-Optimize,2が仮定される)
|
-SpaceAsZeroと-Optimize,3を同時に指定 | - -Optimize,2
(-Optimize,3を指定しても-Optimize,2が仮定される)
|
- 注※1
- -V3Specオプションと-UniObjGenオプションを同時に指定した場合,-V3Rec,Variableオプションは仮定されません。
- 注※2
- コンパイラ環境変数CBLV3UNICODEにYESを指定し,-UniObjGenオプションを指定した場合は,-CompatiV3オプションを指定しても-JPN,Alnumオプションは仮定されません。
- 注※3
- -CompatiV3オプションと-JPN,V3JPNオプションまたは-JPN,V3JPNSpaceオプションを同時に指定した場合,-JPN,Alnumオプションは仮定されません。
(e) ほかのオプションの指定を必要とするオプション
次のコンパイラオプションは,同時に指定する必要があるオプションを指定しない場合,無視されます。
表2-5 同時に指定しないと,指定が無視されるオプション
指定したオプション | 同時に指定する必要があるオプション |
---|
-SQLDisp | -SQL,ODBC |
-UniEndian | -UniObjGen |
-V3RecFCSpace | -V3Rec |
-DllInit | -Dllまたは,-OleServer,Dll |
-V3RecEased | -V3Rec |
次のコンパイラオプションは,同時に指定する必要があるオプションを指定しない場合,コンパイルエラーとなります。
表2-6 同時に指定しないと,コンパイルエラーとなるオプション
指定したオプション | 同時に指定する必要があるオプション |
---|
-IntResult,DecFloat40 | -MaxDigits38 |
-MaxDigits38 | -IntResult,DecFloat40 |
-SpaceAsZero | -Compati85,All |
-VOSCBL,OccursKey | -CompatiV3 |
-VOSCBL,ReportControl | -CompatiV3 |
-JPN,V3JPNSpace | -CompatiV3 |
同じオプションを重複して指定した場合,次の規則に従ってオプションが決定されます。なお,オプションごとのサブオプションの指定規則については,「2.3.4 コンパイラオプションの一覧」を参照してください。
(a) 背反関係にあるサブオプション同士を指定した場合
最後に指定されたオプションが有効となります。
- (例)
- -Compile,{CheckOnly|NoLink}
- に対して
- -Compile,CheckOnly -Compile,NoLink
- と指定した場合,-Compile,NoLinkが有効となります。
ただし,次の場合は,特定のサブオプションが有効となります。
- -TestCmd,Fullオプションと-TestCmd,Breakオプション,または-TestCmd,Fullオプションと-TestCmd,Simオプションを重複して指定した場合は,-TestCmd,Fullオプションが有効となります。
- -JPN,Alnumオプションと-JPN,V3JPNオプションを重複して指定した場合は,-JPN,V3JPNオプションが有効となります。
- -JPN,V3JPNSpaceオプションと-JPN,Alnumオプションを重複して指定した場合は,-JPN,V3JPNSpaceオプションが有効となります。
- -JPN,V3JPNSpaceオプションと-JPN,V3JPNオプションを重複して指定した場合は,-JPN,V3JPNSpaceオプションが有効となります。
- -JPN,Alnumオプションと-JPN,V3JPNオプションを重複して指定した場合は,-JPN,V3JPNオプションが有効となります。
- -Std85,Highオプション,-Std85,Middleオプション,-Std85,Lowオプションを重複して指定した場合は,次の優先順位で有効となります。
- -Std85,Lowオプション
- -Std85,Middleオプション
- -Std85,Highオプション
(b) 省略可能なサブオプション同士,または複数選択できるサブオプション同士を指定した場合
前に指定したサブオプションの指定を引き継ぎ,あとに指定したサブオプションの指定が追加で有効となります。
- (例)
- -BigEndian {,Bin|,Float}+
- に対して
- -BigEndian,Bin -BigEndian,Float
- と指定した場合,BinサブオプションとFloatサブオプションの両方が有効となります。これは,「-BigEndian,Bin,Float」を指定した場合と同じです。
デフォルト設定や環境変数などで指定済みのオプションを,コンパイル時に打ち消したい場合は,プリフィックス'no'の付いたコンパイラオプションを使用します。
例えば,環境変数CBLCOPT2002でオプション「-Details」が指定されている場合,コマンドラインで「ccbl2002 -noDetails …」と指定すると,環境変数CBLCOPT2002で設定済みのオプション「-Details」を打ち消せます。
- 規則
- オプションにデフォルト値の設定がある場合,プリフィックス'no'は指定できません。この場合,オプションのデフォルト値を指定することで,オプションを打ち消せます。
例えば,環境変数CBLCOPT2002でオプション「-Lib,CUI」が指定されている場合,デフォルト値に戻したいときは,コマンドラインで「-Lib,GUI」を指定します。
- 通常のオプションと打ち消しのオプションを同時に指定した場合は,あとに指定したオプションが有効となります。
- 打ち消しのオプションは,コマンドラインや環境変数CBLCOPT2002に指定したオプションを打ち消し,オプション指定によって仮定されるオプションは打ち消しません。
- 注意事項
- コンパイルリストに出力されるオプション一覧や,-Detailsオプションを指定した場合にコマンドラインへ出力されるコンパイラオプションの詳細情報表示では,no指定のコンパイラオプションは表示されません。コンパイラオプションとして有効となったオプションだけが表示されます。