COBOL2002 使用の手引 手引編


32.5.14 その他の設定

その他のコンパイラオプションについて,説明します。

〈この項の構成〉

(1) -Bin1Byteオプション

(a) 形式

-Bin1Byte
-noBin1Byte

(b) 機能

-Bin1Byte

1バイトの2進項目を有効にします。

-noBin1Byte

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

(2) -JPNオプション(AIXで有効)

(a) 形式

-JPN,{Alnum|V3JPN|V3JPNSpace}
-noJPN

(b) 機能

-JPN,Alnum

日本語項目,日本語編集項目,および日本語文字定数をそれぞれ英数字項目,英数字編集項目,および英数字定数として扱います。

これは,VOS3 COBOL85のLANGOPT=(-D)オプションとXCOBOL=(N)オプションを同時に指定したときと同じ動作になります。

なお,-CompatiV3オプションを指定すると,このオプションが仮定されます。

-JPN,V3JPN

日本語項目,日本語編集項目,および日本語文字定数をそれぞれ英数字項目,英数字編集項目,および英数字定数として扱うようにするためのオプションです。ただし,LENGTH関数の引数,STRING文,UNSTRING文,またはINSPECT文では日本語項目,日本語編集項目,および日本語文字定数はそのままの属性として扱います。

また,日本語項目または日本語編集項目の部分参照は,英数字項目または英数字編集項目として扱いますが,最左端の文字位置と長さは日本語文字数を表します。これは,VOS3 COBOL85のLANGOPT=(-D)オプションとXCOBOL=(-N)オプションを同時に指定したときと同じ動作になります。

注※

VOS3 COBOL85では,LENGTH関数の引数に日本語項目,日本語編集項目,および日本語文字定数は指定できません。

-JPN,V3JPNSpace

-CompatiV3オプションと同時に指定した場合,日本語項目,日本語編集項目および日本語文字定数をそのままの属性で扱います。これは,VOS3 COBOL85のLANGOPT=(D)オプションとXCOBOL=(-N)オプションを同時に指定したときと同じ動作になります。

VOS3 COBOL85でLANGOPT=(D)オプションを指定した場合とCOBOL2002での動作の相違については,マニュアル「COBOL2002 言語 拡張仕様編」 「付録B LANGOPT=(D)オプションと-JPN,V3JPNSpaceオプションを指定した場合の仕様の相違」を参照してください。

このオプションを指定してコンパイルすると,日本語項目および日本語編集項目に対して,次に示すとおりに扱います。

  • 表意定数SPACE(SPACES)の扱い

    日本語項目および日本語編集項目に対する表意定数SPACE(SPACES)は,日本語空白(X'8140')となります。

  • 日本語項目および日本語編集項目同士の転記の扱い

    日本語項目および日本語編集項目同士の転記で,受け取り側のけた数が送り出し側のけた数より長い場合,受け取り側の右側に日本語空白(X'8140')を補います。

  • 日本語項目および日本語編集項目同士の比較の扱い

    日本語項目および日本語編集項目同士の比較で,作用対象のけた数が等しくない場合,短い方の作用対象の右側に,長い方の作用対象のけた数に等しくなるまで日本語空白(X'8140')があるものとみなして比較します。

-noJPN

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

(c) 注意事項

  • -JPN,Alnumオプションと-JPN,V3JPNオプションを重複して同時に指定した場合,-JPN,V3JPNオプションが有効になり,-JPN,Alnumオプションが無効になります。

  • コンパイラ環境変数CBLV3UNICODEにYESを指定し,かつ-UniObjGenオプションを指定すると,-CompatiV3オプションを指定しても-JPN,Alnumオプションは仮定されません。

  • -JPN,V3JPNSpaceオプションを指定するとき,-CompatiV3オプションを同時に指定する必要があります。-CompatiV3オプションの指定がない場合,コンパイルエラーとなります。

  • -JPN,V3JPNSpaceオプションと-JPN,Alnumオプション,-JPN,V3JPNオプションを同時に指定すると,-JPN,Alnumオプション,-JPN,V3JPNオプションは無効となります。

    また,-JPN,V3JPNSpaceオプションと-CompatiV3オプションを同時に指定すると,-CompatiV3オプションが仮定する-JPN,Alnumオプションは無効となります。

  • -JPN,V3JPNSpaceオプションと-UniObjGenオプションを同時に指定すると,-JPN,V3JPNSpaceオプションは無効となります。

  • -JPN,Alnumオプションを指定するとき,動的長基本項目はすべて字類を英数字として扱います。また,PIC Nが指定された動的長基本項目のLIMIT指定の値は,その2倍の値が指定されたものと仮定します。

(3) -EquivRuleオプション

(a) 形式

-EquivRule,{NotExtend|NotAny|StdCode}
-noEquivRule

(b) 機能

拡張コード文字と標準コード文字を等価とみなさないようにするためのオプションです。

標準コードおよび拡張コードについては,マニュアル「COBOL2002 言語 標準仕様編」 「付録I 用語の定義(Terms and Definitions)」を参照してください。

-EquivRule,NotExtend

拡張コード文字と標準コード文字を等価とみなしません。

-EquivRule,NotAny

拡張コード文字と標準コード文字を等価とみなしません。さらに,標準コードの英大文字と標準コードの英小文字も等価とみなしません。

この場合,予約語および文脈依存語はすべて標準コードの英大文字で記述してください。

-EquivRule,StdCode

拡張コード文字と標準コード文字を等価とみなしません。さらに,日本語文字定数中に標準コードの空白を書いてもエラーとしません。ただし,日本語文字定数中に空白以外の標準コード文字を書いた場合は,警告レベルのエラーとなります。なお,日本語文字定数の標準コード文字数は偶数としてください。日本語文字定数の標準コード文字数が奇数の場合,警告レベルのエラーとし,日本語文字定数に標準コードの空白を追加します。

また,72カラムより前に改行文字があるCOBOL原始プログラムは,改行文字から72カラムまでを空白に置き換えてコンパイルします。

-noEquivRule

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

(4) -UscoreStartオプション

(a) 形式

-UscoreStart
-noUscoreStart

(b) 機能

-UscoreStart

先頭が下線のCALL定数を指定できるようにします。

先頭が下線のプログラム名をCALL定数で指定した場合,定数の先頭から'_'または'__'(下線2個)を除いた名称でプログラムを呼び出します。

-noUscoreStart

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

(5) -BinExtendオプション

(a) 形式

-BinExtend
-noBinExtend

(b) 機能

-BinExtend

用途(USAGE句)が2進(BINARY,COMP,COMP-4)のデータ項目に指定できる初期値(VALUE句の値)を拡張します。

PICTURE句で指定したけた数とVALUE句に指定できる値との対応は次のとおりです。

PICTURE句で指定したけた数

VALUE句に指定できる値

1〜4けた

-215〜215-1

5〜9けた

-231〜231-1

10〜18けた

-999,999,999,999,999,999〜999,999,999,999,999,999

-noBinExtend

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

(6) -MinusZeroオプション

(a) 形式

-MinusZero
-noMinusZero

(b) 機能

符号付き内部10進項目または符号付き外部10進項目への転記で切り捨てが発生した結果,負の符号を持つゼロ(以下,-0と表記します)が発生することがあります。この-0は演算や比較で数値として参照する場合は,正の符号を持つゼロ(以下,+0と表記します)と同じに扱われ,プログラムの動作には影響しません。しかし,DISPLAY文で表示したり,上位の集団項目で参照したり,REDEFINES句で別の属性として参照した場合に,実行結果が異なることがあります。-MinusZeroオプションは,符号付き内部10進項目および符号付き外部10進項目に,ほかのデータ項目の値や演算結果を転記する場合に発生した-0を強制的に+0に変換して,-0の発生を防止するオプションです。他システムや他社のCOBOLとのデータの互換性や移行性が向上します。

(例1)
       01 A PIC S9(5) USAGE DISPLAY.
       01 B PIC S9(5) USAGE DISPLAY VALUE 0.
           COMPUTE A = B - 0.1.

右辺の式の結果は-0.1になり,それをAに格納する際に,小数部が切り捨てられて-0となる。-MinusZeroオプションを指定すると,-0が+0に変換されてAに格納される。

注※

ただし,演算結果が必ず-0になるとは限りません。

(例2)
       01 A PIC S9(4) USAGE DISPLAY.
       01 B PIC S9(5) USAGE DISPLAY VALUE -10000.
           MOVE B TO A. 

Aに格納する際に,10,000の最上位けたの1が切り捨てられて-0となる。

-MinusZeroオプションを指定すると,-0が+0に変換されてAに格納される。

-MinusZero

負の符号を持つゼロ(-0)を強制的に正の符号を持つゼロ(+0)に変換します。

-noMinusZero

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

(c) 注意事項

  • -MinusZeroオプションは,符号付き外部10進項目への転記および符号付き内部10進項目への転記に対してだけ有効です。したがって,-MinusZeroオプションを指定していても,REDEFINES句や集団項目名で,10進項目を10進項目以外の項目として転記した場合,-0(例えば,内部10進数3けたの場合にはX'000D')がそのまま転記されます。

(7) -TruncCheckオプション

(a) 形式

-TruncCheck〔,Binary〕
-noTruncCheck

(b) 機能

-TruncCheck

転記での送り出し側作用対象のサイズをチェックします。

送り出し側作用対象のけた数が受け取り側作用対象のけた数より大きい場合は,メッセージが出力されます。

-TruncCheck,Binary

-TruncCheckオプションのチェックに加え,送り出し側作用対象が2進項目で,受け取り側作用対象が外部10進項目/内部10進項目のとき,送り出し側作用対象の2進項目は格納可能な最大けた数でチェックします。

-noTruncCheck

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

(c) -TruncCheckオプションのチェック対象

-TruncCheckオプションは,次の項目について,転記での送り出し側作用対象のサイズをチェックします。

チェック対象となる項目
  • 外部10進項目

  • 内部10進項目

  • 2進項目(1バイト2進項目を含む)

  • 数字定数(16進数字定数を含む)

  • 固定長集団項目

  • 英数字項目

  • 英数字定数(16進英数字定数を含む)

  • ALL英数字定数

  • 数字型,整数型,または英数字型の,組み込み関数および利用者定義関数

注※

送り出し側が英数字型の組み込み関数で,かつ次に示す条件の場合はチェックしません。

  • 引数が部分参照されていて,長さが可変である。

    長さが可変になるのは次のどちらかのときです。

    ・部分参照の長さがデータ名指定である

    ・部分参照の開始位置がデータ名指定で,長さが省略されている

  • 組み込み関数がMAX関数またはMIN関数で,データ名の引数が複数指定されている。

  • 組み込み関数がTRIM関数またはSUBSTRING関数である。

チェック対象となる転記の個所
  • VALUE句

  • 画面節(WINDOW SECTION)のSOURCE句※2

  • ACCEPT文の書き方2(日付と時刻を取得するACCEPT文)

  • INITIALIZE文のREPLACING指定

  • MOVE文

  • READ文のINTO指定

  • RELEASE文のFROM指定

  • RETURN文のINTO指定

  • SET文の書き方4(条件設定のSET文)

  • WRITE文のFROM指定

  • COMPUTE文(送り出し側作用対象が単一の数字項目や数字定数の場合)

  • 上記以外の算術文(中間結果のけた数※1が受け取り側作用対象のけた数より大きい場合※3

注※1

中間結果のけた数については,「5.2.4 演算の中間結果」を参照してください。

注※2

AIXで有効です。

注※3

AIX(64),Linux(x64)の場合,-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定しているときは,常に中間結果のけた数の方が大きいと判定します。

受け取り側作用対象が英数字の場合
  • 受け取り側作用対象が固定長集団項目のときはバイト数で比較されます。

  • 送り出し側作用対象が数字で,受け取り側作用対象が英数字のときは,送り出し側作用対象はけた数(小数けたを含む)で比較します。

  • -H8Switchオプションが指定してあり,送り出し側作用対象が数字で受け取り側作用対象が英数字のときは,数字項目はバイト数で比較されます。

受け取り側作用対象が数字の場合
  • 整数けた数で比較します。

  • 次のすべての条件を満たすときはチェックしません。

    ・-DigitsTruncオプションの指定がある

    ・-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定していない(AIX(64),Linux(x64)の場合)

    ・受け取り側作用対象が2進項目である

    ・VALUE句の転記ではない

  • 送り出し側作用対象が18けたを超える英数字項目のときはチェックしません。

注※

AIX(64),Linux(x64)の場合,-MaxDigits38オプションおよび-IntResult,DecFloat40オプションを指定しているときは,38けたとなります。

送り出し側が2進項目で,受け取り側が外部10進項目/内部10進項目の場合の規則(-TruncCheck,Binaryオプション指定時のチェック項目)
  • 整数けた数の比較で,送り出し側作用対象のけた数が大きいときは,メッセージを出力します(-TruncCheckと同じチェック)。

  • 整数けた数の比較で,送り出し側作用対象のけた数が大きくなく,次に示す2進項目に格納可能な最大けた数が,受け取り側作用対象の整数けた数より大きいときは,メッセージを出力します(-TruncCheck,Binary固有のチェック)。

    PICTURE句のけた数※1

    2進項目に格納できる最大けた数※2

    1〜2けた

    5けた

    (-Bin1Byte指定時は3けた)

    3〜4けた

    5けた

    5〜9けた

    10けた

    10〜18けた

    19けた

注※1

整数部と小数部のけた数の合計値です。

注※2

小数部があるときは,小数部のけた数を除いたけた数です。

(例)
01 A PIC 9(4)V9(2) COMP.

上記の場合,整数部と小数部のPICTURE句のけた数の合計値は6けたになります。2進項目ではPICTURE句のけた数6けたで格納できる最大けた数は,10けたになりますが,これから小数部のけた数2を除いた8けたを使用します。

-TruncCheckオプションと-TruncCheck,Binaryオプションの相違点

次に-TruncCheckオプションと-TruncCheck,Binaryオプションの相違点を示します。

項目

-TruncCheck

-TruncCheck,Binary

MOVE B5 TO E6

ノーエラー

お知らせのメッセージを出力する

MOVE B6 TO E6

ノーエラー

お知らせのメッセージを出力する

MOVE B7 TO E6

お知らせのメッセージを出力する

お知らせのメッセージを出力する

注※
       01 B5  PIC 9(5) COMP.
       01 B6  PIC 9(6) COMP.
       01 B7  PIC 9(7) COMP.
       01 E6  PIC 9(6).

(8) -LowerAsUpperオプション

(a) 形式

-LowerAsUpper
-noLowerAsUpper

(b) 機能

-LowerAsUpper

CALL定数の英小文字を英大文字に変換した名称でプログラムを呼び出します。

-noLowerAsUpper

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

(9) -CBLVALUEオプション

(a) 形式

-CBLVALUE
-noCBLVALUE

(b) 機能

-CBLVALUE

環境変数CBLVALUEを有効にするためのオプションです。

環境変数CBLVALUEの詳細については,「32.6.3 コンパイラ環境変数の詳細」の「(16) CBLVALUE」を参照してください。

-noCBLVALUE

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

(10) -Repositoryオプション

(a) 形式

-Repository,{Gen|Sup}
-noRepository

(b) 機能

-Repository,Gen

ソースファイルからリポジトリファイルを作成するときに指定します。この場合,オブジェクトファイルは作成されません。

なお,翻訳単位(プログラム定義を除く)が未完成でも,シグニチャと呼ばれるインタフェース部分が決まっていれば,リポジトリファイルを作成できます。詳細は,「33.3.2 リポジトリファイルの単独生成」を参照してください。

注意事項
  • クラス定義,インタフェース定義,および関数定義が一つも格納されていないファイルに-Repository,Genオプションを指定した場合,オプションの指定が無効となります。

  • -Repository,Genオプションと-Compileオプションが同時に指定された場合,-Repository,Genオプションが有効になり,-Compileオプションが無効になります。

-Repository,Sup

リポジトリファイルを更新しません。

ただし,リポジトリファイルがない場合は,新規に作成します。

また,オブジェクトファイルは,生成されます。

-noRepository

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

(11) -RepositoryCheckオプション

(a) 形式

-RepositoryCheck
-noRepositoryCheck

(b) 機能

-RepositoryCheck

同じソースファイル中の翻訳単位の定義と外部リポジトリ中の情報に相違があるかどうかをチェックし,相違がある場合には警告メッセージを出力します。-RepositoryCheckオプションを指定した場合,リポジトリファイルは更新されません。

詳細は,「33.2.3 リポジトリファイルの生成方法」を参照してください。

-noRepositoryCheck

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

(12) -Defineオプション

(a) 形式

-Define 翻訳変数名〔=値〕〔,翻訳変数名〔=値〕〕…
-noDefine

(b) 機能

-Define 翻訳変数名〔=値〕〔,翻訳変数名〔=値〕〕…

翻訳変数名(条件翻訳で,ソース行の取り込みや読み飛ばしを制御する変数の名称)を定義します。

詳細は,「32.3.3 条件翻訳の利用」を参照してください。

-noDefine

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

(c) 注意事項

  • 翻訳変数名は,31文字まで指定できます。32文字以上の文字列を指定した場合,コンパイル時に警告メッセージが出力され,先頭の31文字だけが翻訳変数名として有効となります。

  • 翻訳変数名は,-Defineオプションに指定した文字列がそのまま使われます。この文字列には,COBOLの語の等価変換が適用されません。

    -Defineオプションで定義した英小文字の翻訳変数名をCOBOLプログラム中で参照するには,-EquivRule,NotAnyオプションの指定が必要です。

  • 翻訳変数の値は,160バイトまで指定できます。161バイト以上の文字列を指定した場合,コンパイル時に警告メッセージが出力され,先頭の160バイトだけが翻訳変数の値として有効となります。

  • 翻訳変数名で使用できる文字は,COBOLの語で使用できる文字と同じです。ただし,コンパイラオプションの区切り文字となるイコール(=),コンマ(,)および半角空白文字は,指定できません。

  • 翻訳変数の値を指定する場合の注意事項を,次に示します。

    1. 翻訳変数に指定した値は,すべて英数字定数として扱われます。

      (例1)

       コンパイラオプションに,-Define VER=3 を指定したとき,ソース中に

       >>IF VER = '3'

       という記述があれば,上記条件が真となる。

      (例2)

       コンパイラオプションに,-Define VER=5 を指定したとき,ソース中に

       >>IF VER = '3'

       という記述があれば,上記条件が偽となる。

    2. コンパイラオプションの区切り文字となるイコール(=),コンマ(,)は,指定できません。

    3. 文字列内に区切り文字(空白)を指定するときは,値全体をアポストロフィ(')で囲む必要があります。このとき,アポストロフィは値として扱われません。

      (例)

       -Define DEF01='aaa bbb'

       翻訳変数名:DEF01

       値    :aaa bbb

  • -Defineオプションで定義した英小文字の翻訳変数名をCOBOLプログラム中で参照するには,-EquivRule,NotAnyオプションを指定する必要があります。

  • プログラムに記述した文字コードと同じ文字コードで,翻訳変数名および翻訳変数の値を指定する必要があります。

    なお,Linuxの場合,プログラムに記述した文字コードとコマンドライン引数の文字コードが異なるため,翻訳変数名および翻訳変数の値にUnicodeで多バイトとなる文字は含まないでください。多バイト文字を含む場合,指定した定義が有効になりません。

(13) -Detailsオプション

(a) 形式

-Details
-noDetails

(b) 機能

-Details

コンパイラオプションの詳細情報を標準エラー出力(stderr)へ出力します。

出力形式は,次のようになります。

形式

COBOL2002インストールディレクトリ/bin/ccbl2002: ccbl2002オプション群 COBOLソースファイル名群

ccbl2002オプション群

ccbl2002コマンドが認識するオプションがすべて出力されます。ほかのオプションを指定したために仮定されたオプションも出力されます。反対に,ほかのオプションを指定したために無視されたオプションは出力されません。オプションの引数を指定した場合は,オプションの引数も出力されます。

COBOLソースファイル名群

コンパイル対象のCOBOLソースファイル名がすべて出力されます。

(例)

入力

ccbl2002 -TDInf -SrcList,CopyAll -SimSub PROG1 -Details sample1.cbl

出力

COBOL2002インストールディレクトリ/bin/ccbl2002: ccbl2002 -DebugInf -TDInf -SrcList,CopyAll -Details -Optimize,1 -SimSub PROG1 -Main,System sample1.cbl

COBOL2002インストールディレクトリは,OSによって異なります。

AIX(32),Linux(x86)の場合

/opt/HILNGcbl2k

AIX(64),Linux(x64)の場合

/opt/HILNGcbl2k64

-noDetails

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

(14) -OldFormオプション

(a) 形式

-OldForm '旧オプションの並び'

(b) 機能

-OldForm '旧オプションの並び'

旧形式のオプション(UNIX COBOL85用のコンパイラオプション)を指定できるようにします。

(c) 注意事項

  • -OldFormオプションはアポストロフィ(')で囲んで指定します。

    指定例を,次に示します。

    -OldForm '-P3 -v -Mw sample.cbl'
  • -OldFormオプションに指定する旧オプションの並びに,旧オプションの引数ではない単独ファイル名を指定した場合,そのファイル名は無視されます。ただし,旧オプションの引数として指定したファイル名については,有効となります。

    指定例を,次に示します。

    -OldForm '-Mw sample.cbl subsample.cbl'

    sample.cblは,-Mwオプションの引数として有効となりますが,subsample.cblは旧オプションの引数でない単独のファイル名のため,無視されます。

(15) -Helpオプション

(a) 形式

-Help

(b) 機能

ccbl2002コマンドのヘルプを表示します。

(c) 注意事項

  • -Helpオプションを指定した場合,ほかのオプションやファイル名を指定しても無視されます。

  • このオプションは,コマンドライン(ccbl2002コマンド)で指定できます。

(16) -Profileオプション

(a) 形式

-Profile,{Prof|Gprof}
-noProfile

(b) 機能

-Profile,Prof(AIXで有効)

profでのプロファイル用オブジェクトファイルを作成します。profの詳細については,システムのマニュアルを参照してください。

-Profile,Gprof

gprofでのプロファイル用オブジェクトファイルを作成します。gprofの詳細については,システムのマニュアルを参照してください。

-noProfile

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

(c) 注意事項

  • プロファイリング(実行回数および実行時間の分析)の対象になるのは,プログラム,利用者定義関数,メソッド,およびプロパティメソッドです。それぞれ,次の名前でプロファイル情報が出力されます。nは,オブジェクトモジュール内で名前を一意にするためにつけられた番号です。

    Linuxの場合

    • 最外側のプログラム:プログラム名(ただし,-Mainコンパイラオプションが適用された最外側のプログラムはmain)

    • 入れ子のプログラム:_最外側プログラム名_n_入れ子のプログラム名

    • 利用者定義関数:利用者定義関数名

    • メソッド:_クラス名_n_メソッド名

    • プロパティメソッド:プロファイル対象外

    AIXの場合

    • 最外側のプログラム:.プログラム名(ただし,-Mainコンパイラオプションが適用された最外側のプログラムは.main)

    • 入れ子のプログラム:.最外側プログラム名.n._入れ子のプログラム名

    • 利用者定義関数:.利用者定義関数名

    • メソッド:.クラス名.n._メソッド名

    • GETプロパティメソッド:.クラス名.n._GET$プロパティ名

    • SETプロパティメソッド:.クラス名.n._SET$プロパティ名

  • COBOLプログラムがCOBOL実行時ライブラリを使って実装されている機能を使用している場合,プログラムの実行時間の情報には実行時ライブラリの実行時間は含まれません。純粋にプログラムのオブジェクトコードの実行時間だけが対象となります。

  • ENTRY文で指定した入口点に対しては,呼び出し回数に関する情報は,それぞれの入口点ごとに作成されます。しかし,実行時間の情報に関しては,ENTRY文に指定した入口点が呼び出された場合も,ENTRY文の入口点の実行時間の情報ではなく,ENTRY文を含むプログラムの実行時間の情報に累積されます。

  • AIXの場合,profを使用して入れ子のプログラムやクラス定義を含むCOBOLプログラムのプロファイル情報を出力するときは,profに-gオプションを指定してください。-gオプションの詳細については,システムのマニュアルを参照してください。

(17) -UniObjGenオプション

(a) 形式

-UniObjGen
-noUniObjGen

(b) 機能

-UniObjGen

シフトJISで記述されたCOBOLソースから英数字定数をUTF-8に,日本語文字定数をUTF-16LEまたはUTF-16BEに変換したオブジェクトファイルを生成します。

-noUniObjGen

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

(c) 注意事項

  • 日本語文字定数の文字コードのバイトオーダは,-UniEndianオプションの指定に従います。

  • このオプションを指定する場合,次のオプションは同時に指定できません。同時に指定した場合,このオプションが有効となり,次のオプションは無効になります。

    -JPN -CompatiV3 -V3Rec -V3RecFCSpace

    ただし,コンパイラ環境変数CBLV3UNICODEにYESを指定すると,このオプションを指定しても-CompatiV3,-V3Rec,および-V3RecFCSpaceオプションは有効となります。

  • AIXの場合,EUC環境下で-UniObjGenオプションを指定した場合,コンパイルエラーとなります。

  • Linuxの場合,UTF-8環境下で,-UniObjGenオプションを指定しないでコンパイルすると,コンパイルエラーとなります。また,-UniObjGenオプションを指定する場合は,環境変数CBLSRCENCODINGを同時に指定する必要があります。

(18) -UniEndianオプション

(a) 形式

-UniEndian,{Little|Big}
-noUniEndian

(b) 機能

-UniEndian,Little

日本語文字定数をUTF-16LEに変換したオブジェクトファイルを生成します。

-UniEndian,Big

日本語文字定数をUTF-16BEに変換したオブジェクトファイルを生成します。

-noUniEndian

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

(c) 注意事項

  • このオプションは,-UniObjGenオプションが指定された場合だけ有効となります。

  • -UniObjGenオプションが指定されていて,-UniEndianオプションが指定されていない場合,日本語文字定数は次のコードに変換されます。

    • AIXの場合:UTF-16BE

    • Linuxの場合:UTF-16LE

(19) -Lx64ConventionCheckオプション(Linux(x64)で有効)

(a) 形式

-Lx64ConventionCheck
-noLx64ConventionCheck

(b) 機能

-Lx64ConventionCheck

Linux(x64) COBOL2002でC言語との連携を行うときに問題となる可能性がある場合(次に示す条件を満たす場合),警告レベルのエラーメッセージを出力します。詳細については,「19.1.2 CプログラムからCOBOLプログラムを呼び出す方法」の「表19‒1 COBOLのデータ項目とCプログラムの型の対応」の注※1を参照してください。

  1. サイズが16バイト以下の集団項目を値渡し(BY VALUE)の引数および返却項目に指定している。

  2. 1.の集団項目の従属項目に内部浮動小数点項目がある。

-noLx64ConventionCheck

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

(c) 注意事項

  • CALL文によって呼び出されるプログラムがCOBOLプログラムであっても警告レベルのエラーメッセージが出力されます。

(20) -MaxDigits38オプション(AIX(64),Linux(x64)で有効)

(a) 形式

-MaxDigits38
-noMaxDigits38

(b) 機能

-MaxDigits38

数字項目および数字定数に指定できる数字の最大けた数を18けたから38けたに拡張します。外部10進形式および内部10進形式の数字項目と数字編集項目と固定小数点数字定数で,けた数を拡張できます。詳細については,「28 数字項目のけた拡張機能(AIX(64),Linux(x64)で有効)」およびマニュアル「COBOL2002 言語 拡張仕様編」 「21 数字項目のけた拡張機能」を参照してください。

-noMaxDigits38

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

(c) 注意事項

  • -IntResult,DecFloat40オプションと同時に指定してください。-IntResult,DecFloat40オプションの指定がない場合,エラーメッセージが出力されます。

  • -MaxDigits38オプション,-IntResult,DecFloat40オプション,および-Optimize,3オプションを同時に指定した場合,-Optimize,3オプションは無効となり,-Optimize,2オプションが仮定されます。

  • -MaxDigits38オプションを指定しても,19〜38けたの数字項目および数字定数が指定できない機能や文があります。詳細については,「28 数字項目のけた拡張機能(AIX(64),Linux(x64)で有効)」およびマニュアル「COBOL2002 言語 拡張仕様編」 「21 数字項目のけた拡張機能」を参照してください。

(21) -IntResult,DecFloat40オプション(AIX(64),Linux(x64)で有効)

(a) 形式

-IntResult,DecFloat40
-noIntResult

(b) 機能

-IntResult,DecFloat40

算術演算の中間結果の表現形式を40けた10進浮動小数点形式にします。詳細については,「28.3 数字項目のけた拡張機能での演算の中間結果」を参照してください。

-noIntResult

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

(c) 注意事項

  • -MaxDigits38オプションと同時に指定してください。-MaxDigits38オプションの指定がない場合,エラーメッセージが出力されます。

  • -IntResult,DecFloat40オプション,-MaxDigits38オプション,および-Optimize,3オプションを同時に指定した場合,-Optimize,3オプションは無効となり,-Optimize,2オプションが仮定されます。

  • -IntResult,DecFloat40オプション,-MaxDigits38オプション,および-Compati85,Powerオプション(-Compati85,All指定による仮定時を含む)を同時に指定した場合,-Compati85,Powerオプションは無効となります。

  • AIX(64),Linux(x64)の場合,-IntResult,DecFloat40オプションと-CompatiV3オプションを同時に指定すると,-CompatiV3オプションの仕様が一部無効となります。詳細については,「32.5.12 他システムとの移行の設定」の「(1) -CompatiV3オプション」を参照してください。

  • AIX(64),Linux(x64)の場合,コンパイラ環境変数CBLV3UNICODEにYESの指定がないとき,-IntResult,DecFloat40オプション,-MaxDigits38オプション,-UniObjGenオプションおよび-CompatiV3オプションを同時に指定すると,-CompatiV3オプションを打ち消します。また,-CompatiV3オプションによって仮定される-JPNオプションおよび-V3Recオプションも打ち消します。

(22) -LiteralExtendオプション

(a) 形式

-LiteralExtend,Alnum
-noLiteralExtend

(b) 機能

-LiteralExtend,Alnum

英数字定数の最大長を拡張します。拡張する項目と制限値および限界値を次に示します。

表32‒4 最大長を拡張する項目と制限値および限界値

最大長を拡張する項目

制限値および限界値

-LiteralExtend,Alnumなし

-noLiteralExtendあり

-LiteralExtend,Alnumあり

英数字定数の長さ

1〜160文字(バイト)

1〜8,191文字(バイト)

STOP文の定数に指定した英数字定数の長さ

1〜160文字(バイト)

1〜8,191文字(バイト)

定数指定する場合のプログラム名,メソッド名の長さ

1〜160文字(バイト)

1〜1,024文字(バイト)

ただし,次に示す項目では英数字定数の最大長は拡張されません。

表32‒5 最大長を拡張しない項目

最大長を拡張しない項目

制限値および限界値(-LiteralExtendの有無に関係なく同じ)

連結式で連結した英数字定数の長さ

2〜1,024文字(バイト)

指定できる文字位置のけた数が個別に規定されている構文

各構文の規定に従う

COPY文,REPLACE文の構文中に指定する原文語の長さ

1〜322文字(バイト)

翻訳指令行で使用する英数字定数の長さ

1〜160文字(バイト)

SQL文中で使用する英数字定数の長さ

1〜160文字(バイト)

-noLiteralExtend

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

(c) 注意事項

  • -LiteralExtendオプションは,次のオプションと背反関係にあり,同時に指定した場合は,-LiteralExtendオプションが無効となり,次のオプションが有効となります。

    -StdMIA -Std85 -Std2002 -V3Spec -Compati85,Syntax -CompatiV3

    -SimMain -SimSub -SimIdent

  • COBOLプログラム中にCOPY文またはREPLACE文がある場合,322バイトを超える英数字定数に対して,原文語の長さが322文字を超えている旨の警告エラーを出力することがありますが,プログラムの動作には影響しません。

(23) -SpaceAsZeroオプション

(a) 形式

-SpaceAsZero
-noSpaceAsZero

(b) 機能

-SpaceAsZero

外部10進項目に空白文字(X'20')データがあるとき,ゼロ(X'30')とみなして比較,演算,転記を実行します。このオプションを指定すると,約1.5倍の実行性能劣化となります。このため,必要のないかぎり,このオプションは指定しないでください。

-noSpaceAsZero

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

(c) 注意事項

  • -SpaceAsZeroオプションは,-Compati85,Allオプションと同時に指定してください。-Compati85,Allオプションの指定がない場合,エラーメッセージが出力されます。なお,-Compati85,Allオプションと同じ意味となる-Compati85のサブオプションが指定された場合,-SpaceAsZeroオプションの指定が有効になります。

  • -SpaceAsZeroオプションと-Optimize,3オプションを同時に指定した場合,-Optimize,3オプションは無効となり,-Optimize,2オプションが仮定されます。

  • AIX(64),Linux(x64)の場合,-SpaceAsZeroオプションと,-Compati85,All,-MaxDigits38および-IntResult,DecFloat40オプションを同時に指定したとき,-IntResult,DecFloat40オプションの仕様によって,-Compati85,Powerサブオプションが無効となります。そのため,同時に指定した-Compati85,Allオプションが無効となり,エラーメッセージが出力されます。

    -SpaceAsZeroオプションを有効にする場合,-MaxDigits38および-IntResult,DecFloat40オプションを指定しないでください。

  • -DebugDataオプションが指定されている場合,比較,演算,転記の外部10進項目に含まれる空白文字(X'20')は,-SpaceAsZeroオプションを指定しても,不当なデータ(データ例外)として検出されます。

  • 外部10進項目に空白文字(X'20')データがあるとき,比較,演算,転記以外の実行結果(画面節(SCREEN SECTIONおよびWINDOW SECTION),索引ファイルのキー項目,整列・併合処理のキー指定,DISPLAY文,組み込み関数,埋め込みSQL文などの実行結果)は,-SpaceAsZeroオプションを指定しても保証しません。

(24) -CheckUninitDataオプション

(a) 形式

-CheckUninitData
-noCheckUninitData

(b) 機能

-CheckUninitData

ソースに閉じた初期化漏れチェック機能を有効にします。ソースに閉じた初期化漏れチェック機能については,「32.7.4 初期化漏れチェック機能」を参照してください。

-noCheckUninitData

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

(c) 注意事項

  • このオプションは,-Compile,CheckOnlyオプションと同時に指定する必要があります。-Compile,CheckOnlyオプションを指定していない場合,または-Compile,CheckOnlyオプションと,-Compile,NoLinkオプションもしくは-Repository,Genオプションを同時に指定した場合,-CheckUninitDataオプションは無効となります。