COBOL2002 使用の手引 手引編


32.6.3 コンパイラ環境変数の詳細

〈この項の構成〉

(1) CBL_RDBSYS(AIXで有効)

HiRDBによる索引編成ファイルの操作対象になるデータベースシステムを設定します。指定できる値は,HiRDBだけです。この環境変数の指定がない場合,および指定した値に誤りがある場合は,HiRDBが仮定されます。

(例)
CBL_RDBSYS=HiRDB
export CBL_RDBSYS

(2) CBL_UNINITDATA_BREAKOFF

初期化漏れチェック処理を打ち切るかどうかを指定します。

この環境変数の値にNOを指定すると,初期化漏れチェック処理は打ち切られません。プログラムを実行したときに通る可能性のある経路(制御ブロック)をすべて走査するまで,初期化漏れチェック処理を続行します。

次の場合は,この環境変数の指定は無効となり,初期化漏れチェック処理で走査した制御ブロックの数が内部的な上限を超えると,初期化漏れチェック処理は打ち切られます。

(例)
set CBL_UNINITDATA_BREAKOFF=NO

(3) CBLCC

ccコマンドに渡すオプション列およびファイル名を設定します。当環境変数に設定することによって,指定のオプションおよびオプション引数をcコンパイラに渡します。

コマンドの指定は,ccコマンドのコマンド列全体をアポストロフィ(')で囲みます。

(例)
CBLCC='-c -o TEST  a.c b.s'
export CBLCC

(4) CBLCOPT(AIXで有効)

ccblコマンドに指定するオプション列(コンパイラオプションの並び)を設定します。この環境変数に設定しておけば,ccblのコマンドラインにオプションを指定する必要がなくなります。ただし,この環境変数はCOBOL85からの移行を目的とする場合にだけ使用してください。

環境変数CBLCOPTにファイル名を指定した場合は,ファイル名が無視されます。

各オプションを空白で区切り,コマンド列全体をアポストロフィ(')で囲みます。

(例)
CBLCOPT='-S1 -T4 -Ek'
export CBLCOPT

(5) CBLCOPT2002

ccbl2002コマンドに指定するオプション列(コンパイラオプションの並び)を設定します。この環境変数に設定しておけば,ccbl2002のコマンドラインにオプションを指定する必要がなくなります。

環境変数CBLCOPT2002にファイル名を指定した場合は,ファイル名が無視されます。

各オプションを空白で区切り,コマンド列全体をアポストロフィ(')で囲みます。

(例)
CBLCOPT2002='-StdVersion,1 -DebugData -Switch,EBCDIK'
export CBLCOPT2002

(6) CBLERRMAX

コンパイルを打ち切るSレベルのエラーの数を設定します。設定した個数分のエラーが発生すると,メッセージが出力され,コンパイルが打ち切られます。

設定できる範囲は0〜999,999で,省略時は30が仮定されます。コンパイルを続行し,すべてのエラーメッセージを出力したい場合は0を設定します。

なお,コンパイルリストを出力する場合(-SrcListオプションを指定した場合),この環境変数は無効となります。

(例)
CBLERRMAX=15
export CBLERRMAX

(7) CBLFIX

固定形式正書法で書かれたCOBOL原始プログラムとしてコンパイルするCOBOLソースファイルの拡張子を設定します。ただし,拡張子.cbl,.CBL,.cob,.ocbの付いたファイルは,ここで設定しなくても固定形式正書法で書かれたCOBOL原始プログラムとしてコンパイルされます。

拡張子は,先頭のピリオド(.)と3文字以内の英数字で指定します。複数の拡張子を設定する場合は,それぞれの拡張子を半角空白文字で区切り,全体をアポストロフィ(')で囲みます。

(例)
CBLFIX=.fix
export CBLFIX
注意事項
  • コンパイル後のファイル種別の変換

    環境変数CBLFIXおよびCBLFREEに,コンパイラで使用するファイル(COBOLソースファイルを除く)の拡張子は指定しないでください。COBOLソースファイルが別のファイル種別に変換されることがあります。

(8) CBLFREE

自由形式正書法で書かれたCOBOL原始プログラムとしてコンパイルするCOBOLソースファイルの拡張子を設定します。ただし,拡張子.cbf,.ocfの付いたファイルは,ここで設定しなくても自由形式正書法で書かれたCOBOL原始プログラムとしてコンパイルされます。

拡張子は,先頭のピリオド(.)と3文字以内の英数字で指定します。複数の拡張子を設定する場合は,それぞれの拡張子を半角空白文字で区切り,全体をアポストロフィ(')で囲みます。

(例)
CBLFREE='.aaa .bbb .ccc'
export CBLFREE
注意事項
  • 環境変数CBLFIXおよび環境変数CBLFREEに,コンパイラで使用するファイル(COBOLソースファイルを除く)の拡張子は指定しないでください。COBOLソースファイルが別のファイル種別に変換されることがあります。

  • 自由形式正書法で書かれたCOBOLソースに対するコンパイラオプションの制限

    自由形式正書法で書かれたCOBOLソースをコンパイルするとき,次のコンパイラオプションは指定できません。

    -StdVersion,-V3Rec,-CompatiV3,-StdMIA,-Std85

(9) CBLINITVALUE

初期化属性プログラムの作業場所節にある,VALUE句の指定がないデータ項目の初期値をNULL(X'00')に設定するときに,環境変数CBLINITVALUEにNULLを設定します。初期化属性プログラムが呼ばれるたびに,初期値が設定されます。

環境変数CBLINITVALUEにNULL以外の値を設定した場合は,環境変数CBLINITVALUEは無視されます。

(例)
CBLINITVALUE=NULL
export CBLINITVALUE

環境変数CBLINITVALUEは,次のデータ項目には適用されません。

注意事項

初期化属性プログラムの作業場所節に対する初期化は,環境変数CBLVALUEと環境変数CBLINITVALUEが両方とも有効な場合と,どちらか片方だけが有効な場合とで初期値が異なります。詳細については,「18.4.1 プログラム属性」の「(2) 初期化属性プログラム」を参照してください。また,環境変数CBLVALUEについては,「(16) CBLVALUE」を参照してください。

(10) CBLLIB

登録集原文を検索するパスプレフィクスを設定します。ディレクトリを複数指定する場合は,それぞれパスプレフィックスをコロン(:)で区切って指定します。

(例)
CBLLIB=/usr/user/copylib
export CBLLIB

(11) CBLPIDIR

プログラム情報ファイル(.cbp)を任意のディレクトリに生成したい場合に設定します。プログラム情報ファイルは,テストデバッガを使用するときに必要となるファイルです。設定できるディレクトリは一つだけです。

(例)
CBLPIDIR=/temp
export CBLPIDIR

(12) CBLREP

リポジトリファイル(.rep)を任意のディレクトリに生成,または更新したい場合に,出力先のディレクトリを指定します。指定されたディレクトリは,リポジトリ段落で指定された名前の翻訳単位(関数定義,クラス定義,またはインタフェース定義)を含むリポジトリファイル参照時の検索対象となります。

詳細は,「33 定義別のコンパイル方法とリポジトリファイル」を参照してください。

規則
  • 指定するディレクトリが複数ある場合は,各ディレクトリをセミコロン(;)で区切って指定します。

  • 指定したディレクトリ群に同じ名称のリポジトリファイルが複数ある場合,先に指定したディレクトリに含まれるリポジトリファイルを優先します。

  • 生成または更新時に,同じ名称のリポジトリファイルがない場合,最初に指定されたディレクトリにリポジトリファイルを新規に生成します。

  • リポジトリファイル検索時に同じ名称のリポジトリファイルが見つからなければ,カレントディレクトリが検索されます。また,環境変数CBLREPの指定がない場合,リポジトリファイルの生成,更新,および検索は,カレントディレクトリが対象となります。

(例)

ディレクトリとして/usr/user/replibを指定します。

CBLREP=/usr/user/replib

(13) CBLSRCENCODING(Linuxで有効)

Unicode機能で入力するCOBOLソースの文字コードがシフトJISであるときに文字コードを設定します。指定できる値は,SJISだけです。

(例)
CBLSRCENCODING=SJIS
export CBLSRCENCODING

なお,この環境変数は次の場合は無効となります。

(14) CBLSYSREP

リポジトリ段落で指定された名前の翻訳単位(関数定義,クラス定義,またはインタフェース定義)を含むリポジトリファイルを検索するディレクトリを指定します。

環境変数CBLSYSREPに指定したディレクトリに格納されたリポジトリファイルは,リポジトリファイルに情報が格納されている翻訳単位と同じ名称の翻訳単位を作成してコンパイルした場合でも,上書きされることはありません。このため,環境変数CBLSYSREPには,主に(共用ファイルとリポジトリファイルだけが提供されている場合など)生成元ソースファイルのないリポジトリファイルの検索ディレクトリを指定する場合に使用します。

詳細は,「33 定義別のコンパイル方法とリポジトリファイル」を参照してください。

規則
  • 指定するディレクトリが複数ある場合は,各ディレクトリをコロン(:)で区切って指定します。

  • リポジトリファイルの検索順序は,カレントディレクトリが優先されます。

(例)

ディレクトリとして/usr/user/sysreplibと/users/lib/repを指定します。

CBLSYSREP=/usr/user/sysreplib:/users/lib/rep

(15) CBLTAB

COBOLソース中のタブ位置を設定します。指定できる範囲は1〜72で,省略時は8を仮定します。

(例)
CBLTAB=4
export CBLTAB

(16) CBLVALUE

サブスキーマ節,作業場所節,画面節(WINDOW SECTION/SCREEN SECTION),報告書節,ファイル節で定義しているデータ項目のVALUE句の指定のない初期値を,このシステムで採用している計算機文字集合であるJIS8単位コードの順序位置(1〜256)で指定します。JIS8単位コードについては,マニュアル「COBOL2002 言語 標準仕様編」 「付録B 計算機文字集合」を参照してください。

なお,ASCII範囲外の文字コードは,動作するロケールによって扱いが異なります。

注※ AIXで有効です。

実行単位でプログラムが最初に呼び出された場合だけ,この環境変数に指定した初期値をデータ項目に設定します。

この環境変数は,-CBLVALUEオプションを指定した場合だけ有効です。また,-CBLVALUEオプションを指定している場合で,この環境変数の指定がないとき,および指定した値に誤りがあるときは,1が仮定されます。

(例)
CBLVALUE=33
export CBLVALUE

VALUE句のないデータ項目の初期値に,空白文字(JIS8単位コードで33番目の文字)を指定します。

なお,この環境変数は次のデータ項目には適用されません。

注意事項

初期化属性プログラムの作業場所節に対する初期化は,環境変数CBLVALUEと環境変数CBLINITVALUEが両方とも有効な場合と,どちらか片方だけが有効な場合とで初期値が異なります。詳細については,「18.4.1 プログラム属性」の「(2) 初期化属性プログラム」を参照してください。また,環境変数CBLINITVALUEについては,「(9) CBLINITVALUE」を参照してください。

(17) CBLV3UNICODE

-UniObjGenオプション指定時,-CompatiV3オプションおよび-V3Recオプションの指定を有効としたい場合に設定します。

ただし,この環境変数を設定した場合,-CompatiV3オプションは-JPN,Alnumオプションを仮定しません。

(例)
CBLV3UNICODE=YES
export CBLV3UNICODE

なお,この環境変数は次の場合は無効となります。

この環境変数とコンパイラオプションの組み合わせによるメインフレーム(VOS3)COBOL85移行用オプションである,-CompatiV3オプション,-JPNオプション,および-V3Recオプションの有効/無効の関係を次に示します。

環境変数CBLV3UNICODE

-UniObjGenオプションと同時に指定するオプション

-CompatiV3

-JPN

-V3Rec

YES

×

YES以外

×

×

×

(凡例)

○:有効となる

×:無効となる

注※

-V3Rec,Variableオプションは仮定されますが,-JPN,Alnumオプションは仮定されません。

注意事項
  • -JPN,Alnumオプションが仮定されないことで,日本語項目,日本語編集項目,および日本語文字定数をそれぞれ英数字項目,英数字編集項目,および英数字定数として扱うことができないため,日本語項目と英数字項目間での比較および転記ができません。また,VOS3 COBOL85と日本語機能に差異があるため,日本語項目または英数字項目のどちらか一方に合わせる必要があります。VOS3 COBOL85とCOBOL2002との日本語機能差異を次に示します。

    項目

    VOS3 COBOL85

    COBOL2002

    日本語項目と英数字項目間の転記/比較

    LANGOPT=(-D)の場合,転記または比較できる。

    転記または比較できない。

    INITIALIZE文(日本語項目の初期設定)

    • REPLACING指定がないと半角空白で初期化する。

    • REPLACING ALPHANUMERIC,ALPHANUMERIC-EDITED指定時,一意名2,定数1の値で初期化する。

    • REPLACING指定がないと全角空白で初期化する。

    • NATIONAL,NATIONAL-EDITED以外のREPLACING指定の場合,初期化されない。

    INSPECT,STRING,UNSTRING文の日本語項目

    XCOBOL=(N)オプションのときは1バイト単位で処理する。

    日本語文字単位で処理する。

    日本語項目パディング

    LANGOPT=(-D)の場合,パディング文字に半角空白(X'40')を使用する。

    パディング文字に全角空白(X'3000')を使用する。

    注※

    環境変数CBLV3UNICODE=YES,-UniObjGenオプションおよび-CompatiV3オプション指定あり

 
  • -V3Rec,Variableオプションが指定できることで,日本語文字定数に標準コード文字が指定できます。日本語文字定数がUTF-16となり,標準コード文字も2バイトとなります。このことから,転記先のけた数を増やす必要があり,その日本語項目または日本語編集項目を参照している個所も修正が必要となる場合があります。例を次に示します。

    (転記先のけた数の見直しの例)

    01 ABC PIC N(2).

    01 DEF PIC N(1).

    MOVE N'あAB' TO ABC.

    MOVE ABC(2:1) TO DEF.

    日本語文字定数は3けた(6バイト)になることから,転記先のABCけた数を3けたに修正する必要があります。

    また,標準コード文字が2バイトになることから,DEFに'AB'が格納されていることを期待する場合,標準コード文字'AB'を参照する部分参照の長さを1から2 に修正する必要があり,その転記先となるDEFのけた数も1から2に修正する必要があります。

    (日本語文字定数の半角空白補完による転記先のけた数の見直しの例)

    01 ABC PIC N(3).

    MOVE N'あabc' TO ABC.

    日本語文字定数の標準コード文字数が奇数になる場合は,標準コード文字数が偶数になるように日本語文字定数の終端に半角空白が補完されます。これによって,補完された半角空白を含み,日本語文字定数は5けた(10バイト)になることから,転記先となるABCのけた数を5けたに修正する必要があります。

  • -CompatiV3オプションが指定できることで,報告書作成機能が拡張され,特殊名段落の定数10が指定可能となりますが,1バイト文字の指定が前提であるため,UTF-8で多バイトとなる半角かたかなは指定できません。このことから,定数10にUTF-8で多バイトとなる文字を指定している場合,UTF-8で1バイトとなる文字に変更する必要があります。

(18) 登録集環境変数

登録集原文を検索するディレクトリを設定します。ディレクトリを複数指定する場合は,コロン(:)で区切って指定します。

(例)
登録集名=/usr/user/copylib
export 登録集名

登録集名は,英大文字と数字から成る8文字以内の任意の文字列で指定します。

ここで指定したディレクトリは,環境変数CBLLIBで指定したディレクトリよりも優先します。詳細については,「32.3.1 原始文操作機能」を参照してください。

(19) CBLFIXEDFORMLINE

固定形式正書法の1行の長さの制限値(バイト単位)を80または255で指定します。次の場合は,80を仮定します。

(例)
CBLFIXEDFORMLINE=255
注意事項
  • この環境変数に255を指定した場合でも,固定形式正書法のプログラム原文領域は,72カラムまでです。

  • この環境変数の指定値(制限値)を超える部分は無視されます。コンパイルリストの原始プログラムリストに,制限値を超える部分は表示されません。