32.5.12 他システムとの移行の設定
他システムとの移行に関連するコンパイラオプションについて,説明します。
- 〈この項の構成〉
-
(1) -CompatiV3オプション
(a) 形式
-CompatiV3 -noCompatiV3
(b) 機能
- -CompatiV3
-
メインフレーム(VOS3)COBOL85との互換を指定するオプションです。-CompatiV3オプションは,VOS3 COBOL85で開発したCOBOLプログラムをUNIX環境に移行することを目的として提供しているオプションで,日立拡張機能の中で使用頻度の高いものを対象としています。
このオプションを指定した場合,指定しない場合と比べて次の点が異なります。
-
ASSIGN句で指定した外部装置名に関連する環境変数名が,次のように変更されます。
- (書き方)
SYSnnn〔-装置クラス〕〔-装置名〕〔-編成〕〔-ファイル定義名〕 または,〔装置クラス-〕〔装置名-〕〔編成-〕ファイル定義名
-
-CompatiV3オプション指定時の環境変数名
次のどちらかとなる。
CBL_SYSnnn
CBL_ファイル定義名
-
-CompatiV3オプション未指定時の環境変数名
次のどちらかとなる。
CBL_SYSnnn〔_装置クラス〕〔_装置名〕〔_編成〕〔_ファイル定義名〕
CBL_〔装置クラス_〕〔装置名_〕〔編成_〕ファイル定義名
-
-
OPEN I-Oで開かれた順ファイルに対してWRITE文が指定できます。このとき,次の条件をすべて満たすと,WRITE文はREWRITE文として扱われます。
- (条件)
-
-
-CompatiV3オプションの指定がある。
-
EXTERNAL句が指定されているか,またはOPEN I-Oで開かれている。
-
WRITE文にADVANCING指定がない。
-
LINAGE句の指定がない。
-
-
-CompatiV3オプションを指定した場合,次のオプションが仮定されます。
- (仮定されるオプション)
-
-
-V3Rec,Variable
可変長形式の原始プログラムのコンパイルを,メインフレームの日本語項目の扱いに合わせるオプションです。
なお,固定長形式でコンパイルする場合,-CompatiV3オプションと-V3Rec,Fixedオプションを指定する必要があります。
-
-JPN,Alnum
日本語項目,日本語編集項目,および日本語文字定数を,それぞれ英数字項目,英数字編集項目,および英数字定数として扱うオプションです。
VOS3 COBOL85でXCOBOL=(N)を指定したときと同じ動作となります。
-
-
VOS3 COBOL85上で使用できる報告書作成機能を記述したプログラムをコンパイルできます。
なお,-CompatiV3オプションを指定しない場合,UNIX COBOL85と同じ言語仕様の報告書作成機能を使用します。
-
通信節による画面機能で,複数プログラムで通信文が実行された場合,一つの仮想端末を複数のプログラム間で共用し,送受信します。
-
DIVIDE文書き方4および書き方5の,除算の剰余を計算するのに使う商は,商を計算したときの中間結果と同じけた数,同じ小数点位置,同じ符号の有無を持ちます。
- (例)
DIVIDE A BY B GIVING C REMAINDER D.
上記の例のDIVIDE文は,下記のような連続した操作に変換されます(ただし,TMP1,TMP2,TMP3はコンパイラによって作成された中間結果の記憶場所を表します)。
A/B → TMP1 TMP1 → TMP2 A - (B * TMP2) → TMP3 TMP1 → C TMP3 → D
-
-CompatiV3オプションを指定したときは,TMP2はTMP1と同じけた数,同じ小数点位置,同じ符号になります。
-
-CompatiV3オプション未指定のときは,TMP2は商(C)と同じけた数,同じ小数点位置,同じ符号になります。
-
-
-CompatiV3オプションを指定した場合,英数字定数の分離符には,アポストロフィ(')だけが使用できます。
-
-CompatiV3オプションと-EquivRuleオプションは,同時に指定できません。指定した場合,あとに指定したオプションが有効となります。
-
-CompatiV3オプションと-IntResult,DecFloat40オプションを同時に指定したとき,算術式と算術文に対する-CompatiV3オプションの仕様(DIVIDE文の書き方4および書き方5)は無効となります。この場合,-IntResult,DecFloat40オプション指定時での演算を行います。-IntResult,DecFloat40オプションについては,「(21) -IntResult,DecFloat40オプション(AIX(64),Linux(x64)で有効)」を参照してください。
-
- -noCompatiV3
-
-CompatiV3オプションの指定を打ち消します。
-CompatiV3オプションを指定した場合,-V3Rec,Variableオプションおよび-JPN,Alnumオプションが仮定されますが,-noCompatiV3オプションを指定しても,仮定された-V3Rec,Variableオプションおよび-JPN,Alnumオプションは打ち消されません。
(c) 注意事項
-
このオプションは,自由形式正書法で書かれたCOBOL原始プログラムをコンパイルする場合には指定できません。指定した場合,エラーとなってコンパイルが中止されます。
-
このオプションを指定した場合,連結式を記述できません。
-
コンパイラ環境変数CBLV3UNICODEにYESを指定し,-UniObjGenオプションを指定した場合,-CompatiV3オプションを指定しても-JPN,Alnumオプションは仮定されません。
-
このオプションを指定した場合,特殊名段落の定数10が有効になります。ただし,コンパイラ環境変数CBLV3UNICODEにYESを指定すると,-UniObjGenオプションと-CompatiV3オプションの同時指定が可能となるため,Unicodeで多バイトになる文字を指定した場合,コンパイルエラーとなります。
(2) -Compati85オプション
(a) 形式
-Compati85{,IoStatus|,Linage|,Call|,Power|,Syntax|,IDParag|,RsvWord|,NoPropagate|,All}+ -noCompati85
(b) 機能
- -Compati85,IoStatus
-
入出力状態1x,2xに対する処理をCOBOL85と同様にします。
- -Compati85,Linage
-
LINAGE値が不正なときの処理をCOBOL85と同様にします。
- -Compati85,Call
-
CALL文のON EXCEPTION,またはON OVERFLOW指定の無条件文を実行するエラーの条件をCOBOL85と同様にします。
- -Compati85,Power
-
べき乗演算でのエラー時の処理をCOBOL85と同様にします。また,べき乗演算の精度を,同一システムのCOBOL85(製品が存在する場合だけ)と同様にします。べき乗演算と-Compati85,Powerオプションとの関係については,「21.3.3 例外チェックが無効な場合の動作」の「(1) 手続き文の実行中にエラーが発生し,例外を検出した場合」を参照してください。
- -Compati85,Syntax
-
次の機能について,コンパイル時の解釈をCOBOL85と同様にします。
-
COPY文のREPLACING指定での置換位置
-
見出し部注記項(-Compati85,IDParagオプション指定時と同等の解釈をする)
-
部の見出し,節名,段落名,END PROGRAMなどの開始位置チェック
-
直前のピリオドが省略されたA領域に置かれた語の解釈
-
COBOL語の最大長(30文字とする)
-
予約語(COBOL85では予約語で,COBOL2002では文脈依存語に変更されたものを予約語に戻す)
なお,COBOL85で予約語だったものがCOBOL2002で文脈依存語となっているのは,次の語です。
ONLY PREVIOUS RECURSIVE
-
プログラム名の長さ(30バイトとする)
-
自由形式正書法の1行の長さ(80文字とする)
-
- -Compati85,IDParag
-
見出し部の構文チェックを緩和します。
このオプションを指定すると,見出し部にAUTHOR段落,INSTALLATION段落,DATE-WRITTEN段落,DATE-COMPILED段落,SECURITY段落,およびREMARKS段落が記述できます。
- -Compati85,RsvWord
-
予約語のうちCOBOL2002で新たに追加されたものを除き,COBOL85の予約語と同じ範囲でコンパイルします。
- -Compati85,NoPropagate
-
CALL文,INVOKE文,および利用者定義関数で伝播を抑止します。
次のプログラムを呼び出す場合,例外が伝播することはないため,このオプションを指定するとオブジェクトファイルサイズを縮小できます。
-
PROPAGATE指令が指定されていないプログラム
-
COBOL85で作成したプログラム
-
Cプログラムなど,COBOL言語以外の言語を使用したプログラム
-
COBOL2002で使用できるサービスルーチン
-
OpenTP1,XMAP3(AIX(32)で有効)などの関連プログラムが提供している関数など
ただし,条件によっては,自動的に呼び出し元プログラムへの伝播が抑止される場合があります。その場合は,このオプションを指定する必要はありません。詳細は,「21.5.3 例外を受け取れないプログラムに例外を伝播させた場合の動作」を参照してください。
-
- -Compati85,All
-
-Compati85オプションのすべてのサブオプションを仮定します。
-Compati85,Allを指定した場合,-Compati85オプションのすべてのサブオプションを指定したものとみなします。
- -noCompati85
-
-Compati85オプションの指定を打ち消します。
(c) 注意事項
-
-Compati85オプションは,単独で指定できません。必ずサブオプションを指定する必要があります。
-
-Compati85,IDParagオプションを指定した場合,見出し部中にCOPY文,REPLACE文,およびINCLUDE文を記述できません。注記項中にCOPY文,REPLACE文,またはINCLUDE文を記述した場合,そのCOPY文,REPLACE文,またはINCLUDE文を注記とみなします。
-
-Compati85,IDParagオプションを指定した場合,注記項中に継続行を表す標識(-)が現れたときは,コンパイルエラーとなります。
-
-Compati85,IDParagオプションを指定した場合,見出し部には,COBOL85で指定できる段落見出し(PROGRAM-ID,AUTHOR,INSTALLATION,DATE-WRITTEN,DATE-COMPILED,SECURITY,およびREMARKS)以外を指定できません。
-
-Compati85,Syntaxオプションを指定した場合に適用される予約語は,COBOL2002の予約語およびONLY,PREVIOUS,RECURSIVE の三つの語となります。
-Compati85,RsvWordオプションを指定した場合に適用される予約語は,COBOL85の予約語だけとなります。
-
-Compati85,RsvWordオプションを指定した場合,COBOL2002で新しく追加された構文が利用できなくなります。このため,既存プログラムにCOBOL2002の新機能を加えて拡張することが困難になります。既存プログラムにCOBOL2002の新しい予約語が使われている場合,新しい予約語とは異なる語に置き換えることを推奨します。COBOL2002で追加された新しい予約語については,マニュアル「COBOL2002 言語 標準仕様編」 「4.8 予約語」を参照してください。
-
-Compati85オプションのうち次のオプションを指定した場合,COBOLソース中にTURN指令を指定できません。指定した場合,コンパイルエラーとなります。
-
-Compati85,IoStatus
-
-Compati85,Linage
-
-Compati85,Call
-
-Compati85,Power
-
-Compati85,NoPropagate
-
-
-Compati85,NoPropagateオプションは,CALL文のほかにINVOKE文,および利用者定義関数の呼び出しの場合にも,伝播が抑止されます。なお,CALL文,INVOKE文,および利用者定義関数を使用していない場合,このオプションは意味を持ちません。
-
-Compati85,Syntaxオプションは,-LiteralExtendオプションと同時に指定すると,-Compati85,Syntaxオプションが有効となり,-LiteralExtendオプションは無効となります。
(3) -H8Switchオプション
(a) 形式
-H8Switch -noH8Switch
(b) 機能
- -H8Switch
-
HITAC8000シリーズの仕様でコンパイルするためのオプションです。
次の文で,送り出し側作用対象が数字項目(または固定小数点数字定数)で,受け取り側作用対象が英数字項目(または英数字編集項目)の場合,数字項目を英数字項目とみなして転記します。
-
MOVE
-
WRITE FROM
-
REWRITE FROM
-
RELEASE FROM
-
ACCEPT FROM DAY
-
ACCEPT FROM DATE
-
ACCEPT FROM TIME
-
ACCEPT FROM DAY-OF-WEEK
また,比較条件で,両辺の組み合わせが数字項目(または固定小数点数字定数)と英数字項目(または英数字編集項目,英字項目,英数字定数)の場合,数字項目を英数字項目とみなして比較します。
このオプションを指定しなかった場合,数字項目は数字項目として転記,比較されます。
-
- -noH8Switch
-
-H8Switchオプションの指定を打ち消します。
(5) -DigitsTruncオプション
(a) 形式
-DigitsTrunc -noDigitsTrunc
(b) 機能
- -DigitsTrunc
-
原始プログラム中の転記文で受け取り側作用対象が2進項目の場合,送り出し側作用対象のけたが受け取り側作用対象よりも大きいときに,上位のけたを切り捨てます。
- (例)次のプログラムの実行結果を示します。
77 A PIC S9(4) USAGE COMP VALUE +123. 77 B PIC S9(2) USAGE COMP. : MOVE A TO B.
-
-DigitsTruncオプションを指定した場合 …… +23
-
-DigitsTruncオプションを指定しない場合 … +123
-
このオプションを指定しなかった場合,原始プログラム中の転記文で受け取り側作用対象が2進項目のとき,送り出し側作用対象の有効けた数が受け取り側作用対象よりも大きいと,入り切らない部分が切り捨てられます。
- -noDigitsTrunc
-
-DigitsTruncオプションの指定を打ち消します。
(c) 注意事項
-
-DigitsTruncオプションと-Comp5オプションを同時に指定した場合,あとに指定したオプションだけが有効となります。
(6) -IgnoreLCCオプション
(a) 形式
-IgnoreLCC -noIgnoreLCC
(b) 機能
- -IgnoreLCC
-
WRITE〜ADVANCING/POSITIONING文で書き出すレコードの先頭1バイトを出力しないことを指定します。
あらかじめ,レコード記述項で行送り制御文字用の1バイト分の領域を確保しておいたプログラムをコンパイルするときに指定します。ただし,次の場合には-IgnoreLCCオプションの指定があっても,レコードの先頭から出力されます。
-
順ファイル以外のファイルの場合
-
順ファイルのWRITE文に行送りの指定(ADVANCING,POSITIONING)がない場合
-
順ファイルのファイル記述項にLINAGE句の指定がある場合
-
- -noIgnoreLCC
-
-IgnoreLCCオプションの指定を打ち消します。
(7) -CmAsterオプション
(a) 形式
-CmAster -noCmAster
(b) 機能
- -CmAster
-
固定形式正書法のとき,行の先頭文字(1カラム目の文字)が標準コードの星印(*)である行を注記行とします。
ただし,このオプションは固定形式正書法で記述されたCOBOLソースファイルをコンパイルするときだけ有効となります。
- -noCmAster
-
-CmAsterオプションの指定を打ち消します。
(8) -CmDolオプション
(a) 形式
-CmDol -noCmDol
(b) 機能
- -CmDol
-
固定形式正書法のとき,行の先頭から7カラム目の文字が「$」記号である行を注記行とします。
ただし,このオプションは固定形式正書法で記述されたCOBOLソースファイルをコンパイルするときだけ有効となります。
- -noCmDol
-
-CmDolオプションの指定を打ち消します。
(9) -Comp5オプション
(a) 形式
-Comp5 -noComp5
(b) 機能
- -Comp5
-
COBOLプログラム中のUSAGE句のCOMP-5を使用できるようにするオプションです。
このオプションを指定すると,COMP-5は,COMPを指定した場合と同様に処理されます。このオプションを指定しなかった場合,USAGE句にCOMP-5が指定されているとエラーになります。
COMP-5は,-BigEndian,Binオプションの対象にはなりません。(Linuxで有効)
COMP-5を指定できる場所は,COMPを指定できる場所と同じです。また,COMP-5は,COMPと同じ仕様となるため,PICTURE句のけた数,データのバイト数,および実際に格納できる数値は次のとおりです。
表32‒2 COMP-5で実際に格納できる数値 PICTURE句のけた数
データのバイト数
実際に格納できる数値
符号あり
符号なし
1〜4けた
2バイト
-215〜215-1
0〜215-1
5〜9けた
4バイト
-231〜231-1
0〜231-1
10〜18けた
8バイト
-263〜263-1
0〜263-1
- -noComp5
-
-Comp5オプションの指定を打ち消します。
(c) 注意事項
-
-Comp5オプションと-DigitsTruncオプションを同時に指定した場合,あとに指定したオプションだけが有効となります。
(10) -V3Specオプション
(a) 形式
-V3Spec〔,CopyEased〕 -noV3Spec
(b) 機能
- -V3Spec
-
VOS3 COBOL85でサポートされていない,UNIX固有の言語仕様に対して構文チェックするためのオプションです。
VOS3 COBOL85 09-00を対象として,ほぼ同等の言語仕様で構文チェックをし,VOS3 COBOL85ではサポートされていないUNIX固有の言語仕様に対して警告メッセージを出力します。
出力するオブジェクトファイルは,このオプションの影響を受けません。
このオプションは,VOS3 COBOL85互換機能です。
- -V3Spec,CopyEased
-
-V3Specオプションで指定された構文チェックの範囲を緩和し,COPY文,REPLACE文の一部のエラーチェックをしません。
このオプションは,VOS3 COBOL85互換機能です。
- -noV3Spec
-
-V3Specオプションの指定を打ち消します。
-V3Specオプションを指定した場合,-V3Rec,Variableオプションが仮定されますが,-noV3Specオプションを指定しても,仮定された-V3Rec,Variableオプションは打ち消されません。
(c) 注意事項
-
日本語項目の部分参照については,VOS3 COBOL85のXCOBOL=(-N)オプションを指定した状態を対象とします。
-
-V3Specオプションと-CompatiV3オプションを同時に指定した場合,一部のチェック項目が重複するため,-CompatiV3オプションのエラーメッセージが出力され,このオプションのエラーメッセージは出力されません。
-
-V3Specオプションを指定すると,-V3Rec,Variableオプションが仮定されます。このため,固定長形式でコンパイルする場合は-V3Rec,Fixedオプションを同時に指定する必要があります。
-
-V3Specオプションと次のオプションを同時に指定すると,-V3Specオプションが有効になり,次のオプションは無効になります。
-Comp5 -CmAster -BinExtend -CBLVALUE -Bin1Byte
-NumAccept -CmDol -MaxDigits38 -IntResult,DecFloat40
-LiteralExtend
-
-V3Specオプションと-UniObjGenオプションを同時に指定した場合,-V3Rec,Variableオプションは仮定されません。-V3Recオプションを有効とするときは,環境変数CBLV3UNICODEを指定してください。
(11) -V3ConvtNameオプション
(a) 形式
-V3ConvtName -noV3ConvtName
(b) 機能
- -V3ConvtName
-
原文名定数の「¥」を「_」に,「@」を「!」に変換した名称で登録集原文を検索する場合,このオプションを指定します。このオプションは,COPY文およびINCLUDE文で有効になります。また,原文名定数の末尾の拡張子を省略した場合は,「.cbl」が仮定されます。なお,原文名指定の場合は,このオプションの対象となりません。
- (例1)原文名定数に\,@が含まれる場合
-
原文名定数中に\,@が含まれる場合は,-V3ConvtNameオプションを指定してコンパイルします。
-
COPY '\ABC'.
_ABC.cblを登録集原文として検索します。
-
COPY '@ABC'.
!ABC.cblを登録集原文として検索します。
-
- (例2)原文名に¥,@が含まれる場合
-
¥,@,#は,COBOL2002では原文名に使用できない文字のため,コンパイルエラーとなります。この場合は,¥,@を含む原文名を定数指定に変更してから-V3ConvtNameオプションを指定してコンパイルします。※
-
COPY ¥ABC. → COPY '¥ABC'.
_ABC.cblを登録集原文として検索します。
-
COPY @ABC. → COPY '@ABC'.
!ABC.cblを登録集原文として検索します。
-V3ConvtNameオプションを使用しない場合は,¥,@を¥,@,#以外の文字に変更してください。
-
- 注※
-
#を含む原文名は,原文名定数に変更するだけで使用できます。
COPY文での登録集原文の利用については,「32.3.1 原始文操作機能」を参照してください。
このオプションは,VOS3 COBOL85互換機能です。
- -noV3ConvtName
-
-V3ConvtNameオプションの指定を打ち消します。
(12) -Switchオプション(AIXで有効)
(a) 形式
-Switch,{EBCDIC|EBCDIK}〔,Unprintable〕〔,noApplyJpnItem〕 -noSwitch
(b) 機能
照合順序および字類条件をEBCDICコードまたはEBCDIKコードに切り替えるためのオプションです。
- -Switch,EBCDIC
-
英数字の照合順序および字類条件をEBCDICコードに切り替えます。ただし,1バイトで印字できないコードは,照合順序としてX'00'またはX'FF'に割り付けられます。
- -Switch,EBCDIK
-
英数字の照合順序および字類条件をEBCDIKコードに切り替えます。ただし,1バイトで印字できないコードは,照合順序としてX'00'またはX'FF'に割り付けられます。
- -Switch,xxxxx,Unprintable
-
英数字の照合順序を,xxxxxに指定したコードに切り替えます。
1バイトで印字できないコードも,照合順序として固有の文字位置に割り付けます。詳細は,「(c) 注意事項」を参照してください。
xxxxxは,EBCDIC,EBCDIKのどちらかを指定します。
- -Switch,xxxxx,noApplyJpnItem
-
英数字の照合順序を,xxxxxに指定したコードに切り替えます。
日本語項目を-Switchオプションの適用対象外とします。
xxxxxは,EBCDIC,EBCDIKのどちらかを指定します。
- -noSwitch
-
-Switchオプションの指定を打ち消します。
(c) 注意事項
- 字類条件の判断基準と文字の大小関係
-
プログラムに記述した字類条件に対するコードの判断基準と文字の大小関係を,次に示します。
- (凡例)
-
−:字類条件が真になる事はない
>:大きい(a>b aはbより大きい)
<:小さい(a<b aはbより小さい)
→:置換(a→b aをbに置換する)
PROGRAM COLLATING SEQUENCE句と-Switchオプションの指定値の対応を次に示します。
PROGRAM COLLATING SEQUENCE句の符号系名
-Switchオプション
EBCDICサブオプションを指定した場合
EBCDIKサブオプションを指定した場合
指定なし
EBCDICコード
EBCDIKコード
EBCDIC
EBCDICコード
Sレベルエラー
EBCDIK
Sレベルエラー
EBCDIKコード
EBCDIC,EBCDIK以外
Sレベルエラー
Sレベルエラー
- -Switchオプションの対象
-
-Switchオプションの対象を次に示します。
機能
対象の字類
比較条件
英字,英数字,日本語※1
整列併合※2
英字,英数字
- 注※1
-
noApplyJpnItemサブオプションを指定している場合,対象の字類が日本語のときは-Switchオプションの対象となりません。
- 注※2
-
-Switchオプション指定による照合順序は,索引ファイルの参照キーには適用されません。参照キーの比較は,固有文字集合の大小順序に従います。
- 照合順序
-
比較のときに使用する照合順序として,1バイトの印字可能文字は対応する文字位置に割り付けられ,その他の印字できないコードはX'00'またはX'FF'に割り付けられます。
ただし,Unprintableサブオプションが有効な場合は,印字できないコードに,印字可能文字が割り付けられていない固有の文字位置が割り付けられます。Unprintableサブオプションの有無での照合順序の違いを次に示します。
文字コード種別
Unprintableサブオプション
無効
有効
印字可能文字
対応する文字の文字位置に割り付けられます。
印字できないコード
X'80'はX'00'に,X'80'以外はすべてX'FF'に,それぞれ割り付けられます。
印字可能文字が割り付けられていない固有の文字位置に割り付けられます。
ただし,印字できないコードの大小関係は保証しません。
Unprintableサブオプションが有効な場合,JIS8単位コードが,EBCDICコードまたはEBCDIKコードのどの位置に割り付けられるかをそれぞれ次に示します。なお,表中の網掛けは,印字できないコードを示します。
図32‒2 EBCDICコードとJIS8単位コードの対応表 図32‒3 EBCDIKコードとJIS8単位コードの対応表 Unprintableサブオプションが有効でない場合の照合順序の対応表については,マニュアル「COBOL2002 言語 標準仕様編」 「付録B 計算機文字集合」を参照してください。
- -Switchオプションを指定したプログラムでの比較結果
-
-Switchオプションを指定したプログラムでは,特定のデータ種別の比較結果で注意が必要です。
次のように,1バイトで印字できないコード(日本語データや数字データなど)を含む作用対象(データ項目や定数)を比較条件に指定している場合は,値が異なるのに等しいと解釈されたり,-Switchオプション未指定時とは大小関係が逆転したりすることがあります。
データ種別
-
日本語データ(英数字項目や日本語項目※に日本語文字が格納されている場合など)
-
数字データ(集団項目の従属項目に,用途(USAGE句)がDISPLAY以外の数字項目(2進項目,内部10進項目,内部浮動小数点項目)がある場合など)
- 注※
-
noApplyJpnItemサブオプションが無効の場合です。
比較結果
-
日本語データや数字データで,1バイトの印字できないコードでは,等しいと解釈されることがあります。
ただし,Unprintableサブオプションが有効な場合は,コードの一致および不一致を判定できます。なお,Unprintableサブオプションが有効な場合でも,照合順序が切り替わることで,大小関係が-Switchオプション未指定時とは逆転することがあります。
-
日本語データや数字データ中の印字可能文字は,照合順序が切り替わることで,-Switchオプション未指定時とは大小関係が逆転することがあります。
-
(13) -V3Recオプション
(a) 形式
-V3Rec,{Fixed|Variable} -noV3Rec
(b) 機能
メインフレーム(VOS3)COBOL85の固定長または可変長レコード形式のプログラムを,VOS3 COBOL85の日本語文字の扱いに合わせてコンパイルするためのオプションです。
- -V3Rec,Fixed
-
VOS3 COBOL85の固定長レコード形式のCOBOL原始プログラムを,VOS3 COBOL85の日本語文字の扱いに合わせてコンパイルします。
- -V3Rec,Variable
-
VOS3 COBOL85の可変長レコード形式のCOBOL原始プログラムを,VOS3 COBOL85の日本語文字の扱いに合わせてコンパイルします。
-V3Rec,Variableオプションは,-CompatiV3オプションと同時に指定できます。また,-CompatiV3オプションを指定すると,-V3Rec,Variableオプションが仮定されます。
- -noV3Rec
-
-V3Recオプションの指定を打ち消します。
(c) 注意事項
-
-V3Recオプションと-EquivRuleオプションを重複指定した場合,あとに指定したオプションを優先します。
-
このオプションを指定した場合,このシステムの標準コードと拡張コードの等価規則は適用されません。また,日本語文字定数に標準コードの空白を書いてもエラーとはなりません。ただし,日本語文字定数に空白以外の標準コード文字を書けますが,警告レベルのエラーとなります。なお,日本語文字定数の標準コード文字数は偶数としてください。日本語文字定数の標準コード文字数が奇数の場合,警告レベルのエラーとし,日本語文字定数に標準コードの空白を追加します。
-
日本語空白は半角空白2個と等価とみなし,機能キャラクタが付加されたものとみなす対象としません。日本語空白を使用しているメインフレームの固定長形式の原始プログラムを-V3Rec,Fixedオプションを指定してコンパイルする場合は,カラムずれなどの影響がないか確認する必要があります。機能キャラクタについては,マニュアル「COBOL2002 言語 拡張仕様編」 「24.3.3(2) 文字集合」を参照してください。また,日本語空白を拡張コードとして扱いたいときは,-V3Recオプションと合わせて-V3RecFCSpaceオプションを指定してください。-V3RecFCSpaceオプションの詳細については,「(14) -V3RecFCSpaceオプション」を参照してください。
-
VOS3 COBOL85の固定長レコード形式の原始プログラムと可変長レコード形式の原始プログラムは,このオプションを指定したときだけコンパイルできます。
したがって,COPY文で複写した原始プログラムを含め,固定長レコード形式の原始プログラムと可変長レコード形式の原始プログラムは同時にコンパイルできません。
-
このオプションを指定した場合,72カラムより前に改行文字があるCOBOL原始プログラムは,改行文字から72カラムまで空白に置き換えてコンパイルされます。
-
このオプションは,自由形式正書法で書かれたCOBOL原始プログラムをコンパイルする場合には指定できません。指定した場合,エラーとなってコンパイルが中止されます。
-
このオプションを指定した場合,英数字定数の分離符には,アポストロフィ(')だけが使用できます。
(14) -V3RecFCSpaceオプション
(a) 形式
-V3RecFCSpace -noV3RecFCSpace
(b) 機能
- -V3RecFCSpace
-
-V3Recオプションでの空白に関する機能キャラクタの扱いを,VOS3 COBOL85と同等にします。機能キャラクタが付加されたものとみなす条件については,「(d) 機能キャラクタが付加されたものとみなす条件」を参照してください。
- -noV3RecFCSpace
-
-V3RecFCSpaceオプションの指定を打ち消します。
(c) 注意事項
-
-V3RecFCSpaceオプションの指定は,-V3Recオプションの指定が有効な場合にだけ有効となります。
(d) 機能キャラクタが付加されたものとみなす条件
このコンパイラは,-V3Recオプションの指定が有効な場合に,-V3RecFCSpaceオプションの有無で,空白に関する機能キャラクタの扱いが異なります。次の条件文中の太字の部分は,-V3RecFCSpaceオプションの有無での相違点です。
なお,これ以降「KEISコード開始」と「EBCDIKコード開始」を表す2バイトの機能キャラクタをそれぞれ,[漢]と[E]で表します。また,改行を[改行]で表します。
-
-V3RecFCSpaceオプション指定がない場合
-
日本語空白を除く日本語文字列の先頭文字の直前に[漢]が付加されたものとみなします。
-
直前に[漢]が付加されたものとみなした日本語文字列のあとに,最初に現れた半角空白以外の半角文字の直前に[E]が付加されたものとみなします。
-
[漢]が付加されたものとみなしたあとは,[E]が付加されたものとみなすまで,同じ行には[漢]が付加されたものとみなしません。
-
-
-V3RecFCSpaceオプション指定がある場合
-
日本語空白を含む日本語文字列の先頭文字の直前に[漢]が付加されたものとみなします。
-
直前に[漢]が付加されたものとみなした日本語文字列のあとに,最初に現れた半角空白以外の半角文字の直前に[E]が付加されたものとみなします。また,日本語文字列の直後が改行か日本語文字列と改行との間が半角空白だけのとき,日本語文字列の直後に[E]が付加されたものとみなします。
-
[漢]が付加されたものとみなしたあとは,[E]が付加されたものとみなすまで,同じ行には[漢]が付加されたものとみなしません。
-
-V3Recオプションの指定が有効な場合に,-V3RecFCSpaceオプションの有無での機能キャラクタが付加されたものとみなした状態を次の例に示します。
- (例1)日本語空白に関する機能キャラクタの扱い
-
- COBOL原始プログラム
000100 01△DATA1△PIC△N(5)△VALUE△N'▲あいう▲'.
- -V3Rec,Fixedオプション指定ありで, -V3RecFCSpaceオプション指定がない場合
000100 01△DATA1△PIC△N(5)△VALUE△N'▲[漢]あいう▲[E]'.
- -V3Rec,Fixedオプション指定ありで,-V3RecFCSpaceオプション指定がある場合
000100 01△DATA1△PIC△N(5)△VALUE△N'[漢]▲あいう▲[E]'.
- (凡例)
-
▲:日本語空白
△:半角空白
-V3RecFCSpaceオプション指定がない場合,日本語空白を日本語文字列の先頭文字と扱いません。このため,日本語空白以外の先頭文字「あ」の直前に[漢]が付加されたものとみなします。また,直前に[漢]が付加されたものとみなした日本語文字列「あいう」のあとで最初に現れた半角空白以外の半角文字「'」の直前に[E]が付加されたものとみなします。
-V3RecFCSpaceオプション指定がある場合,日本語空白を日本語文字列の先頭文字と扱い,直前に[漢]が付加されたものとみなします。また,直前に[漢]が付加されたものとみなした日本語文字列「▲あいう▲」のあとで最初に現れた半角空白以外の半角文字「'」の直前に[E]が付加されたものとみなします。
- (例2)空白と改行に関する機能キャラクタの扱い
-
- COBOL原始プログラム
000100 01△DATA1△PIC△N(5)△VALUE△N'あいう△△[改行] 000200-'△△'.
- -V3Rec,Fixedオプション指定ありで, -V3RecFCSpaceオプション指定がない場合
000100 01△DATA1△PIC△N(5)△VALUE△N'[漢]あいう△△[改行] 000200-'△△'.
- -V3Rec,Fixedオプション指定ありで,-V3RecFCSpaceオプション指定がある場合
000100 01△DATA1△PIC△N(5)△VALUE△N'[漢]あいう[E]△△[改行] 000200-'△△'.
- (凡例)
-
▲:日本語空白
△:半角空白
-V3RecFCSpaceオプション指定がない場合,日本語文字列「あいう」のあとには,半角空白以外の半角文字がないため[E]が付加されたものとみなしません。
-V3RecFCSpaceオプション指定がある場合,日本語文字列「あいう」と[改行]の間が半角空白だけであるため,日本語文字列「あいう」の直後に[E]が付加されたものとみなします。
(15) -V3RecEasedオプション
(a) 形式
-V3RecEased{,QuoteCheck|,WordCheck}+ -noV3RecEased
(b) 機能
- -V3RecEased,QuoteCheck
-
-CompatiV3または-V3Recオプションを指定したとき,定数の分離符のチェックを緩和します。
-V3RecEased,QuoteCheckオプションが有効な場合,-DoubleQuoteオプションに関係なく,定数の分離符は,アポストロフィ(')と引用符(")のどちらでも指定できます。
- -V3RecEased,WordCheck
-
-CompatiV3または-V3Recオプションを指定したとき,語またはPICTURE文字列の制限値のチェックを緩和します。
-V3RecEased,WordCheckオプションが有効な場合,語またはPICTURE文字列の制限値を超えたときのコンパイルエラーを,重大エラーから警告エラーに緩和できます。
- -noV3RecEased
-
-V3RecEasedオプションの指定を打ち消します。
(c) 注意事項
-
-V3RecEasedオプションと-V3Specオプションを同時に指定したとき,-V3RecEasedオプションの指定は無効になります。
-
-V3RecEasedオプションの指定は,-V3Recオプションの指定が有効な場合にだけ有効です。
-
-V3RecEased,QuoteCheckオプションの指定に関係なく,SQL文中の定数の分離符はアポストロフィ(')だけ使用できます。
-
-V3RecEased,QuoteCheckオプションは,翻訳指令に対しても有効です。
(16) -DoubleQuoteオプション
(a) 形式
-DoubleQuote -noDoubleQuote
(b) 機能
- -DoubleQuote
-
VOS3 COBOL85互換に関連するオプションである-V3Rec,-CompatiV3のどちらかを指定したときに,英数字定数の分離符として引用符( " )を用いることを指定するオプションです。このオプションを指定しないときは,アポストロフィ( ' )を分離符として用います。
-V3Recオプション,-CompatiV3オプションのどちらも指定していない場合は,-DoubleQuoteオプションを指定しても無効となります。この場合は,引用符( " ),アポストロフィ( ' )のどちらも分離符として使用できます。
ただし,SQL文中の定数の分離符は,-DoubleQuoteオプションの指定に関係なく,常にアポストロフィ( ' )を使用します。
また,QUOTE表意定数は,-V3Recオプション,-CompatiV3オプションの指定に関係なく,-DoubleQuoteオプション指定時は引用符( " )を意味し,-DoubleQuoteオプション指定なしのときはアポストロフィ( ' )を意味します。
なお,このオプションは,翻訳指令に対しても有効となります。
- -noDoubleQuote
-
-DoubleQuoteオプションの指定を打ち消します。
(17) -BigEndianオプション(Linuxで有効)
(a) 形式
-BigEndian{,Bin|,Float}+ -noBigEndian
(b) 機能
用途(USAGE句)が2進または浮動小数点のデータ項目の形式を,ビッグエンディアン形式にするためのオプションです。
- -BigEndian,Bin
-
用途が2進(BINARY,COMP,COMP-4)のデータ項目の形式を,ビッグエンディアン形式にします。
このオプションを指定した場合,2進項目を演算などで参照すると,実行性能が劣化します。このため,必要のないかぎりこのオプションは指定しないでください。
- -BigEndian,Float
-
用途が浮動小数点(COMP-1,COMP-2)のデータ項目の形式を,ビッグエンディアン形式にします。
このオプションを指定した場合,浮動小数点を演算などで参照すると,実行性能が劣化します。このため,必要のないかぎりこのオプションは指定しないでください。
- -noBigEndian
-
-BigEndianオプションの指定を打ち消します。
(c) 注意事項
- ビッグエンディアン形式とリトルエンディアン形式との違い
-
コンピュータで扱うバイナリ形式のデータ(2進データ,内部浮動小数点数字データ)には,ビッグエンディアン形式とリトルエンディアン形式の2種類があります。
これは,マイクロプロセッサのアーキテクチャの違いによるもので,システムによって採用されるエンディアン形式が異なります。システムごとのエンディアン形式を次に示します。
システム
エンディアン形式
Windows
Linux
リトルエンディアン
HP-UX
AIX
Solaris
ビッグエンディアン
ビッグエンディアン形式とリトルエンディアン形式では,バイナリデータがメモリ上に配置されるときの順序が次の例のように逆になります。
- (例)
-
10(=H'0000000A')が4バイトのメモリに配置された場合の違い
ビッグエンディアン形式では左側から右側へ1バイトずつ配置されるのに対して,リトルエンディアン形式では右側から左側へ1バイトずつ配置されます。このため,ビッグエンディアン形式のシステムとリトルエンディアン形式のシステムで同じデータを扱う場合でも,参照のしかたによっては違った結果になることがあります。-BigEndianオプションは,このような場合にデータを正しく処理できるようにするために使用します。
- -BigEndianオプションの使い方
-
リトルエンディアン形式のシステムで2進データをそのまま参照したり,リトルエンディアン形式のシステムで作成したファイルを参照したりする場合は,このオプションを指定する必要はありません。しかし,REDEFINES句などで英数字データを2進データとして参照したり,ビッグエンディアン形式のシステムで作られたファイル(可変長ファイルは対象外)を参照したりする場合は,ビッグエンディアン形式のシステムとリトルエンディアン形式のシステムで2進データ,内部浮動小数点数字データの表現形式が異なるため,このオプションを指定する必要があります。このオプションは次のような場合に指定してください。
-
ビッグエンディアン形式のシステム上で開発した2進データや内部浮動小数点数字データのメモリ上での配置を意識しているようなプログラムをリトルエンディアン形式のシステム上に移植する場合
-
ビッグエンディアン形式のシステム上で作成した2進データや内部浮動小数点数字データを含むファイルをそのままリトルエンディアン形式のシステム上へ移行し,リトルエンディアン形式のシステム上のプログラムで参照する場合
-
ビッグエンディアン形式のシステム上で開発したREDEFINES句でほかの形式のデータ項目を2進データとして参照するようなプログラムをリトルエンディアン形式のシステム上に移植する場合
-
- 使用上の注意
-
-BigEndianオプションの使用上の注意を次に示します。
-
C言語と連携している場合,-BigEndian,Binオプション指定時には,Cプログラムとインタフェースを取る2進データはCOMP-5で定義してください。
-
コマンド行に指定した引数を受け取る場合(16.2.2 引数の受け取り方法(C言語インタフェースに従った形式の場合)または16.2.3 引数の受け取り方法(VOS3インタフェースに従った形式の場合)を参照)-BigEndian,Bin指定時には,連絡節の2進データは,COMP-5で定義してください。
-
2進項目を引数とするサービスルーチンは,受け取る項目をCOMP-5で定義してください。
-
CALL文でLENGTH OF 一意名を指定した場合,呼び出し先プログラムは,受け取る項目をCOMP-5で定義してください。
-
AIX(32)でXMAP3を使用する場合は,XMAP3のオプションと合わせる必要があります。
-
索引ファイル,および整列併合機能で使用するキーデータ項目の2進データ項目は,リトルエンディアン形式でキーを大小比較します。このため,このオプションを指定したビッグエンディアン形式では,正常に動作できません。
キーデータ項目の2進データ項目はCOMP-5で定義するか,またはリトルエンディアン形式データとしてください。
-
(18) -VOSCBLオプション
(a) 形式
-VOSCBL{,OccursKey|,ReportControl|,DataComm|,RedefinesData}+ -noVOSCBL
(b) 機能
メインフレーム互換機能を有効にします。
- -VOSCBL,OccursKey
-
OCCURS句のKEY IS指定のデータ名の名前の有効範囲を,そのOCCURS句のある記述項または,それに従属する記述項とします。
OCCURS句のKEY IS指定のデータ名は,修飾してもその修飾は無視されます。
- (例1)
WORKING-STORAGE SECTION. 01 DAT0. 02 DAT1 PIC X. ・・・・・・・・・・・・・・(1) 01 DAT2. 02 DAT3 OCCURS 10 ASCENDING KEY DAT1. ・・・(2) 03 DAT1 PIC X. ・・・・・・・・・・・(3) 03 DAT5 PIC X.
-
-VOSCBL,OccursKeyオプションの指定がある場合は,(2)のDAT1は修飾しなくても,(2)の従属項目として定義された(3)のDAT1が参照されます。
-
-VOSCBL,OccursKeyオプションの指定がない場合は,DAT1が(1)と(3)にあるため,名前が一意になりません。一意に参照するためには,(2)のDAT1を「OF DAT3」で修飾する必要があります。
-
- (例2)
WORKING-STORAGE SECTION. 01 DAT0. 02 DAT1 PIC X. ・・・・・・・・・・・・・・・(1) 01 DAT2. 02 DAT3 OCCURS 10 ASCENDING KEY DAT1 OF DAT0.・・(2) 03 DAT1 PIC X. ・・・・・・・・・・・・・(3) 03 DAT5 PIC X.
-
-VOSCBL,OccursKeyオプションの指定がある場合は,(2)のDAT1を修飾(OF DAT0)してもその修飾は無視されるため,(2)のDAT1は,(2)の従属項目として定義された(3)のDAT1が参照されます。
-
-VOSCBL,OccursKeyオプションの指定がない場合は,(2)のDAT1の修飾(OF DAT0)を無視されないため,(1)のDAT1が参照されます。しかし,KEY IS指定のデータ名は,OCCURS句のある記述項または,それに従属する記述項でなければなりません。
したがって,(1)のDAT1は(2)の従属項目でないため,(2)の修飾を「OF DAT3」に変更する必要があります。
-
- -VOSCBL,ReportControl
-
制御脚書きの印刷中に改ページが起こった場合,ページの頭書きでSOURCE句によって制御用データ項目を参照しているときは,その制御用データ項目の値を元の値で参照します。
- -VOSCBL,DataComm
-
データコミュニケーション機能の通信記述項で,次のどちらかに該当するときの初期値を,メインフレーム(VOS3/VOS1)のXDM/DCCMデータコミュニケーション機能を使用する場合の値とします。
-
通信記述項の句の指定を省略している。
-
通信文の実行前に,通信記述項の句に指定されたデータ名に初期値を設定していない。
なお,このオプションの指定がない場合は,TP1/Server Baseを使用する場合の初期値とします。
-
- -VOSCBL,RedefinesData
-
REDEFINES句の右辺のデータ名が未定義のとき,直前の同一レベル番号のデータ名をREDEFINES句の右辺として仮定します。
- (例)
4 WORKING-STORAGE SECTION. 5 01 DAT1. 6 02 DAT2. 7 03 DAT3 PIC XX. 8 02 DAT4 REDEFINES UNDEF. 9 03 DAT5 PIC X. 10 03 DAT6 PIC X.
この例では,8行目のREDEFINES句の右辺のデータ名UNDEFが定義されていません。-VOSCBL,RedefinesDataオプションが有効な場合,直前の同一レベル番号のデータ名DAT2をREDEFINES句の右辺のデータ名として仮定します。-VOSCBL,RedefinesDataオプションが無効な場合,8行目のREDEFINES句は無視されます。
- -noVOSCBL
-
-VOSCBLオプションの指定を打ち消します。
(c) 注意事項
-
このオプションは,-CompatiV3オプションと同時に指定してください。-CompatiV3オプションの指定がない場合は,エラーメッセージが出力されます。
-
次のオプションは-CompatiV3オプションを無効とするため,このオプションおよび-CompatiV3オプションと次のオプションを同時に指定しないでください。-CompatiV3オプションの指定が無効となり,Uレベルのエラーになります。
-StdMIA -Std85 -Std2002
-
このオプションと-UniObjGenオプション,および-CompatiV3オプションを同時に指定する場合,-CompatiV3オプションが有効となるよう,コンパイラ環境変数CBLV3UNICODEを指定してください。
(19) -PortabilityCheckオプション
メインフレームから移行する場合,ユーザが注意すべき個所にお知らせメッセージ(Iレベルメッセージ)を出力し,ユーザの移行作業を支援します。このオプションを指定すると,COBOL2002とメインフレームで動作の異なる可能性がある個所を対象に,お知らせメッセージを出力します。
なお,このオプションは,Sレベル以上のエラーがないプログラムに適用してください。Sレベル以上のエラーがあるプログラムで適用した場合の動作は,保証しません。
(a) 形式
-PortabilityCheck{,Literal|,Numeric}+ -noPortabilityCheck
(b) 機能
- -PortabilityCheck,Literal
-
-
-UniObjGenオプション指定時,英数字定数および日本語文字定数中の日本語または半角かたかなにお知らせメッセージを出力します。
-
次に示す16進定数にお知らせメッセージを出力します。
16進英数字定数,16進数字定数,16進日本語文字定数
-
- -PortabilityCheck,Numeric
-
-
RECORD KEY句,ALTERNATE RECORD KEY句の2進項目,内部浮動小数点項目にお知らせメッセージを出力します。
-
浮動小数点の演算が発生する個所にお知らせメッセージを出力します。
浮動小数点の演算が発生する個所は次を対象とします。
-
算術式,算術文に指定された浮動小数点項目や浮動小数点定数
算術式が記述できる場所に書かれた単項の浮動小数点項目や浮動小数点定数も含みます。
ただし,受け取り項目など,演算に関係しない浮動小数点項目は除外します。
-
べき乗の場合,べき数に指定されたデータ項目および算術式が小数点を持つ場合,または,べき数が小数点を含む数字定数である場合
-
次の組み込み関数
ACOS,ASIN,ATAN,COS,LOG,LOG10,MOD,RANDOM,REM,SIN,SQRT,STANDARD-DEVIATION,TAN,VARIANCE
-
次のどれかが引数に指定されている組み込み関数
浮動小数点項目※,べき乗が含まれる算術式,または除算が含まれる算術式
注※
ADDR関数,およびLENGTH関数を除きます。
-
- -noPortabilityCheck
-
-PortabilityCheckオプションの指定を打ち消します。
(21) -Internationalオプション
(a) 形式
-International -noInternational
(b) 機能
- -International
-
インターナショナリゼーション機能を使用するときに指定します。インターナショナリゼーション機能の適用範囲は,ロケールが日本語または英語に対応するときだけです。インターナショナリゼーション機能を使用すれば,通貨記号を自動的に変換できます。
- -noInternational
-
-Internationalオプションの指定を打ち消します。
(22) -EucPositionオプション(AIXで有効)
(a) 形式
-EucPosition -noEucPosition
(b) 機能
- -EucPosition
-
EUCコード使用時,見かけ上の文字位置で固定形式正書法の境界を決定するときに指定します。このオプションを指定した場合の半角かたかな文字の扱いは,正書法の境界を決定するときには見かけ上の1バイトとして扱われますが,文字定数中の半角かたかな文字は2バイトとして扱われます。
- -noEucPosition
-
-EucPositionオプションの指定を打ち消します。
(c) 注意事項
-
-EucPositionオプションは,EUCコード使用時,固定形式正書法のCOBOLソースファイルに対してだけ有効です。
-
-EucPositionオプションを指定した場合,次の項目中に3バイトコード文字は使用できません。
-
COBOLソースファイル,および登録集原文中
-
COBOLソースファイルのファイル名
-
カレントディレクトリ,およびCOBOLソースファイルがあるディレクトリのパス名
-
登録集名の環境変数,および環境変数CBLLIBに指定したディレクトリのパス名
-
環境変数CBLFIX,および環境変数CBLFREEに指定したサフィックス名
-