OpenVMS AXP
オペレーティング・システム
OpenVMS AXP オペレーティング・システムへの移行:
再コンパイルと再リンク


前へ 次へ 目次 索引


A.3.1.3 DEC COBOLで使用できないVAX COBOL修飾子

表 A-8 は,VAX COBOL固有の修飾子とオプションを示しています。これらの修飾子とオプションはDEC COBOLでは使えません。VAX COBOLコマンド・ライン修飾子について詳しくは,『VAX COBOL User Manual』を参照してください。

表 A-8 DEC COBOLで使えないVAX COBOL修飾子
修飾子 説明
/DESIGN Language-Sensitive Editor(LSE)などを使用して作成されたプログラムのコンパイル処理を可能にする
/INSTRUCTION_SET[=option] 通常のコンパイルでは使用しないVAX命令セットを使用して,コードの最適化を行うかどうかを指定する
/STANDARD=[NO]OPENVMS_AXP DEC COBOLコンパイラでサポートされない言語機能に関する情報メッセージを出力する(付録 A.3.2.9 項 および『VAX COBOLバージョン5.1 リリース・ノート』を参照)
/STANDARD=[NO]PDP11 COBOL-81 コンパイラでサポートされない言語機能に関する情報メッセージを出力する
/WARNINGS=[NO]STANDARD DECによる拡張機能である言語機能に関する情報メッセージを出力する。DEC COBOLの同等な機能は /STANDARD=[NO]SYNTAX である(付録 A.3.2.7.2 項 を参照)

A.3.2 動作の相違点

この節では,DEC COBOLバージョン1.0固有の動作や,DEC COBOLの新しいコマンド・ライン修飾子などのVAX COBOLバージョン4.4とDEC COBOLバージョン1.0 の動作の相違点について説明します。

A.3.2.1 DEC COBOLの/ALIGNMENT修飾子とアラインメント指示文による数値項目に対するアラインメントの指定

レコード内で2進(バイナリ)または10進(デシマル)データのアラインメントを指定するために,/ALIGNMENT修飾子やアラインメント指示文を使用できます。アラインメントに関する詳細は『DEC COBOL Reference Manual』を参照してください。

Alpha AXPシステムでCOBOLアプリケーションを最適化するには,適切なデータ・アラインメントが必要です。データが自然な境界にある場合,2進データを操作するほうが高速です。使用しているシステムでの適切な境界にデータを配置している場合には,10進データの操作の方が高速なこともあります。

アラインメント指定の最大の特色は,パフォーマンスの高速化です。さらに,/ALIGNMENT修飾子とアラインメント指示文は以下の特色を持っています。

/ALIGNMENT修飾子,アライメンント指示文およびSYNCHRONIZED句は,以下に示すようなグループ(グループ要素)でデータのアラインメントに影響します。


                  /ALIGNMENT 修飾子 
                          | 
  アラインメント指示文     |                           SYMCHRONIZED句 
          |               |                                  | 
          |_______________|_______                           | 
                                  |                          | 
                                  |                          | 
  2進数または10進数のグループ要素をアラインする  2進のグループ要素をアラインする 

VAX COBOLコンパイラを使えば,自然な境界にレコードの2進数の構成要素をアラインするために,SYNCHRONIZED句を使用することができます。このように,DEC COBOLコンパイラのバイナリ・データの操作に対しては,SYNCHRONIZED句,/ALIGNMENT修飾子およびアラインメント指示文は同等の働きを示します。

A.3.2.1.1 /ALIGNMENT修飾子の使用

/ALIGNMENT修飾子は,プログラム内でバイナリ・データに対して自然なアラインメントを,またデシマル・データに対してより適切なアラインメントを指定することを許可します。

バイナリ・アラインメントとデシマル・アラインメントは別々のオプションです(10進数と文字列データに別名をつけるプログラムには有効な機能ですが,そのようなプログラムはバイナリ・データのアラインメントで作成することもできます)。たとえば,/ALIGNMENT=(BINARY,NODECIMAL)(もしくは /ALIGNMENTのみ)を指定すると,DEC COBOLコンパイラはバイナリ・データを自然な境界に,またデシマル・データをバイト境界にアラインします。/ALIGNMENT を使用することで OpenVMS AXPシステム上で最大限のパフォーマンスを得るようなデータ・アラインメントが行われます。

バイト・データ・アラインメントを指定するには /NOALIGNENT 修飾子(省略時設定)を指定します(SYNCHRONIZED句を用いてバイナリ・データをアラインするプログラムもこれに含まれます)。VAXシステムで作成されたデータ・ファイルを移行したり,互換性を得るためにも /NOALIGNMENT を使用します。

A.3.2.1.2 アラインメント指示文の使用

/ALIGNMENT修飾子を使用した場合,アラインメント指示文で指定された箇所を除き,プログラムは指定されたアラインメントでコンパイルされます。指示文は,DEC COBOLコンパイラが解釈する特別な注釈行です(DEC COBOL指示文はVAX COBOLコンパイラでは無視されます)。すべての指示文は"*DC"で始まります。"*"(アスタリスク)は注釈行の始まりを表わします。

アラインメントに関する指示を変更するために,COBOLソース・プログラムの中のどこでも以下のアラインメント指示文を使用できます。

特定の数値データに対してアラインメントを切り替えるために,プログラム内でアラインメント指示文を入れ子にすることができます。*DC ENT-SET ALIGNMENT指示文はオプションですが,入れ子にしたアラインメント指示文の最後には必ずこの文を指定しなければなりません。

A.3.2.2 DEC COBOLの/CHECK=NODECIMAL オプションによる数値データの確認

/CHECK=[NO]DECIMALオプションは,数値に関する文で表示用数字項目を使用したときに数字であるかどうか検査します。無効な数字や文字に対してシステムがエラーを返すようにしたいときは,/CHECK=DECIMAL を使用してください。

この機能は主に,数値データに異なる内部表現を使用する可能性のある,他のシステムで生成されたデータを検査することを意図しています。また,この修飾子は文字列データから数値データに移送されるプログラムの論理エラーを見つけるためにも用いられます。この機能の欠点は,チェックするのに余計な命令が必要なことで,この結果,実行時間とイメージ・サイズがわずかに大きくなります。

コンパイラに表示用数字項目のなかの数字をチェックさせたくないときは,/CHECK=NODECIMAL(省略時設定)を使用してください。

A.3.2.3 先行する空白文字をゼロに変換するDEC COBOLの/CONVERT=LEADING_BLANKS オプション

/CONVERT=LEADING_BLANKS 修飾子は,表示用数字項目中の先行する空白文字をゼロに置き換え,またゼロであることを検査するコードを生成します。

この機能はおもに,実行時に先行する空白文字をゼロに置き換えることで,COBOL のプログラムを編集することなく移行することを意図しています。この機能の欠点は,データの変換に特別なコードを必要とすることです。この結果,実行時間とイメージ・サイズがわずかに大きくなります。

コンパイラに表示用数字項目中の先行する空白文字をゼロに変換させたくないときは,/NOCONVERT=LEADING_BLANKS(省略時設定)+ を使用してください。

注意

+ /NOCONVERT=LEADING_BLANKSでも可。

A.3.2.4 DEC COBOLの/FLOAT修飾子に浮動小数点データ型を指定する

/FLOAT=[option] 修飾子は,メモリ内で単精度および倍精度データに対して使用される浮動小数点データ型を指定します。ひとつのプログラムでは,/FLOAT=D_FLOAT か /FLOAT=IEEE_FLOAT のどちらかひとつを指定してください。

Alpha AXP アーキテクチャは IEEE規格準拠ですので,DEC COBOL上で IEEE浮動小数点データ型を含む既存のCOBOLプログラムを実行することができます。

/FLOAT=D_FLOAT(省略時設定)はコンパイル時に,単精度(COMP-1)データにVAXのF浮動メモリ型を,倍精度(COMP-2)データに VAXのD浮動メモリ型をそれぞれ指定してします。

浮動小数点演算のIEEE規格であるANSI/IEEE 745-1985 では,4つの浮動小数点形式を定義しています。これには基本形式(basic),拡張形式(extended)の2つのグループがあり,それぞれのグループ内で単精度型,倍精度型が定められています。Alpha AXPアーキテクチャでは,このうち基本形式の単精度型,倍精度型をサポートします。

/FLOAT=S_FLOAT(省略時設定)はコンパイル時に,単精度(COMP-1)データにIEEEの S浮動メモリ型を,倍精度(COMP-2)データにIEEEのT浮動メモリ型を,それぞれ指定します。

Alpha AXP アーキテクチャでの浮動小数点データ型の使用に関する詳細は,『Alpha Architecture Handbook』を参照してください。

A.3.2.5 /OPTIMIZE修飾子でコードを最適化する

/OPTIMIZE修飾子は,コンパイラがコンパイルされるプログラムをより効率的なコードを生成するように最適化するかどうかを制御します。

プログラムをより速く実行させたいときは/OPTIMIZE(省略時設定)を指定します。この修飾子を使用すると,コンパイラはこれを使用しないときより大きいサイズのオブジェクト・モジュールを生成し,コンパイルにかかる時間も長くなります。

機械語コードがソース・プログラムのプログラム行と同じ順序であることを確かめるデバッグ・セッションには,/NOOPTIMIZE を使用してください。

A.3.2.6 特殊な予約語をチェックする/RESERVED_WORDS修飾子

/RESERVED_WORDS 修飾子はコンパイラが特定の語を予約語として認識するかどうかを制御します。

プログラムが,X/Open ポータビリティ・ガイドでCOBOLの語として定義されている語を 1つでも使用しているときは,/RESERVED_WORDS=NOXOPEN を使用してください。

プログラムに以下の X/Open COBOLの語がひとつもないときは,/RESERVED_WORDS=XOPEN(省略時設定)を使用してください。

AUTO
BACKGROUND-COLOR
BELL
BLINK
EOL
EOS
ERASE
FOREGROUND-COLOR
FULL
HIGHLIGHT
LOWLIGHT
REQUIRED
REVERSE-VIDEO
SCREEN
SECURE
UNDERLINE

A.3.2.7 COBOL ANSI規格の言語拡張機能を呼び出す /STANDARD 修飾子

/STANDARD 修飾子はコンパイラが特定の言語機能に関する情報メッセージを出力するかどうかを制御します。このメッセージを得るには /STANDARD ,/STANDARD=85(および /WARNINGS=ALL または /WARNINGS=INFORMATIONAL)または/STANDARD=SYNTAX を指定します。

コンパイラにANSI 1985 COBOL規格に沿ったコードを生成させるには,/STANDARD=85(省略時設定)を使用してください。

DEC COBOLコンパイラに,ANSI 1985 COBOL規格に対するDECの拡張機能に関する情報メッセージを生成させるには,/STANDARD=SYNTAX を使用してください。NOSYNTAX(省略時設定)はこれらのメッセージを生成しません。

特殊な例で,DEC COBOLコンパイラにVAX COBOL バージョン3.4 の形式のコードを生成させる場合は,/STANDARD=V3を指定してください。付録 A.3.2.7.1 項 では,/STANDARD=V3 オプションについてさらに詳しく説明しています。

A.3.2.7.1 /STANDARD=V3 オプション

DEC COBOL バージョン 1.0は,VAX COBOL バージョン 4.0以降と同じように ANSI 1985 COBOL 規格に基づいています。このため DEC COBOLは,/STANDARD=85 オプションでそれを完全にサポートしています。DEC COBOLはまた,VAX COBOL バージョン4.0以降で有効となった/STANDARD=V3修飾子の機能もサポートします。

バージョン4.0以前VAX COBOL はANSI 1974 COBOL規格に基づいていました。バージョン4.0以降のバージョン・アップのほとんどがVAX COBOLコンパイラの以前のバージョンと互換性を持つ一方で,いくつかの相違点も存在します。それらが引き起こす結果は,何種類かに分けられます。

既存のVAX COBOLプログラムとの矛盾を最小限にとどめるため,VAX COBOLではバージョン4.0以降の規則に従ってプログラムをコンパイルすることも,また,バージョン3.4の規則にに従ってコンパイルすることもできます。特殊な例で,/STANDARD=V3を指定すると VAX COBOLバージョン3.4の規則に沿ったコードを,VAX COBOL コンパイラに生成させることができます。これは『VAX COBOL User Manual』で説明されています。

DEC COBOLでは,VAX COBOLバージョン4.0以降で有効な機能と比べ,/STANDARD=V3 オプションに対しては制限付きのサポートを提供しています。/STANDARD=V3を指定すると,以下の4つの場合,DEC COBOLはVAX COBOLバージョン4.0 以降とまったく同じに動作します。

以下の4つの項目で,このDEC COBOLの動作を詳しく説明します。

EXIT PROGRAM Statement

/STANDARD=V3を指定した場合,EXIT PROGRAM 文はメイン・プログラムとサブプログラムの両方でプログラムの終了として扱われます。

/STANDARD=85を指定した場合,メイン・プログラム本体にあるEXIT PROGRAM 文は通過し,EXIT PROGRAM 文の後の文を実行します。そのプログラムがサブプログラムである場合には,EXIT PROGRAM 文はサブプログラムを呼んだプログラムへの戻ることになります。

I-O ファイル状態コード

/STANDARD=V3を指定すると,表 A-9 のV3で示された欄の値が I-Oファイル状態コードとして得られます。プログラムはこの値をもとに動作します。

/STANDARD=85を指定すると,表 A-9 の85で示された欄の値が I-Oファイル状態コードとして得られます。プログラムはこの値をもとに動作します。

表 A-9 は,VAX COBOLバージョン3.4とDEC COBOLのファイル状態コードを説明します。

表 A-9 /STANDARD修飾子の I-O ファイル状態コード
I-Oエラー状態 ステータス・コード
  V3 85
READ successful--record shorter than fixed file attribute. 00 04
CLOSE reel/unit attempted on nonreel/unit device. 00 07
READ fails--relative key digits exceed relative key. 00 14
WRITE fails--relative key digits exceed relative key. 00 24
OPEN I-O on file that is not mass storage. 00 37
WRITE fails--attempt to write a record of a different size than in the file description. 00 44
READ fails--no next logical record(EOF detected). 13 10
READ fails--no next logical record(EOF on OPTIONAL file). 15 10
READ fails--no valid next record(already at EOF). 16 10
READ NEXT or sequential READ--no valid next record pointer. 161 461
READ or START fails--optional input file not present. 25 23
READ successful--record longer than fixed file attribute. 30 04
OPEN on relative or indexed file that is not mass storage. 30 37
REWRITE fails--attempt to rewrite record of different size. 30 44
CLOSE fails--file not currently open. 93 42
DELETE or REWRITE fails--previous I-O not successful READ. 93 43
OPEN fails--file previously closed with LOCK. 94 38
OPEN fails--file created with different organization. 94 39
OPEN fails--file created with different prime record key. 94 39
OPEN fails--file created with different alternate record keys. 94 39
OPEN fails--file currently open. 94 41
READ or START fails--file not opened INPUT or I-O. 94 47
WRITE fails--file not opened OUTPUT, EXTEND, or I-O. 94 48
DELETE or REWRITE fails--file not opened I-O. 94 49
OPEN INPUT on a nonoptional file--file not found. 97 35


1 次のレコードに対する記述がない場合 を参照。

次のレコードに対する記述がない場合

ここでは以下の状態のすべてが満たされた場合に,/STANDARD=V3 または /STANDARD=85 を指定してプログラムのコンパイルを行ったときに起こることを説明します。

/STANDARD=V3 を使用してプログラムをコンパイルすると,次の事が起こります。

/STANDARD=85 を使用してプログラムをコンパイルすると,次の事が起こります。

OPEN 文の I-O モードとEXTEND モード

/STANDARD=V3を指定すると,ファイルが存在しない場合にI-Oモードまたは EXTENDモードでオープンされるファイルが作成されます。

/STANDARD=85を指定すると,ファイルが場合にI-OモードまたはEXTENDモードでオープンされるファイルが作成されません。そのかわり,実行時エラーとなります。


前へ 次へ 目次 索引