OpenVMS Alpha
オペレーティング・システム
OpenVMS VAX から OpenVMS Alpha へのアプリケーションの移行


前へ 次へ 目次 索引


11.4.2 コマンド行修飾子

Digital Fortran for OpenVMS Alpha と Digital Fortran 77 for OpenVMS VAX Systems では,大部分の修飾子が共通ですが,一部の修飾子はどちらか一方のプラットフォームでしか使用できません。この節では,Digital Fortran for OpenVMS Alpha と Digital Fortran 77 for OpenVMS VAX Systems のコマンド行の修飾子の相違点を要約します。

Digital Fortran for OpenVMS Alphaのコンパイル・コマンドとオプションについての詳しい説明は。『DEC Fortran User Manual for OpenVMS AXP Systems』を参照してください。Digital Fortran 77 for OpenVMS VAX Systems のコンパイル・コマンドとオプションについての詳しい説明は『DEC Fortran User Manual for OpenVMS VAX Systems』を参照してください。

VAX システムまたはAlphaシステムでコンパイルを開始するには,FORTRANコマンドを使用します。Alphaシステムでは,F90コマンドを使用して Digital Fortran 90コンパイラによるコンパイルを開始します。

11.4.2.1 Digital Fortran for OpenVMS Alpha固有の修飾子

表 11-7 は Digital Fortran for OpenVMS Alpha コンパイラ修飾子のうち,Digital Fortran 77 for OpenVMS VAX Systems のオプションがなく,Digital Fortran 77 for OpenVMS VAX Systems のバージョン 6.4 でサポートされない修飾子を示しています。

表 11-7 Digital Fortran 77 for OpenVMS VAX Systems にない Digital Fortran for OpenVMS Alpha 修飾子
修飾子 説明
/BY_REF_CALL 文字定数の実引数に数値仮引数を関連付けることができる (Digital Fortran 77 for OpenVMS VAX Systems で認められている)。
/CHECK=FP_EXCEPTIONS IEEE 浮動小数点例外値に関するメッセージが実行時に報告されるかどうかを制御する。
/DOUBLE_SIZE DOUBLE PRECISION 宣言を REAL*8 ではなく,REAL*16 にする。
/FAST 実行時の性能を向上する複数の修飾子を設定する。
/FLOAT メモリ内で浮動小数点データに対して使用する形式 (REAL または COMPLEX) を制御する。たとえば,KIND=4 データに対して VAX の F 浮動小数点と IEEE S 浮動小数点のどちらを使用するのかや,KIND=8 データに対して VAX G 浮動小数点,VAX D 浮動小数点,IEEE T 浮動小数点のどれを使用するのかを選択する。Digital Fortran 77 for OpenVMS VAX Systems では /[NO]G_FLOATING 修飾子を使用できる。
/GRANULARITY 共用データのデータ・アクセスの粒度を制御する。
/IEEE_MODE IEEE データに対して浮動小数点例外の処理方法を制御する。
/INTEGER_SIZE INTEGER 宣言と LOGICAL 宣言のサイズを制御する。
/NAMES 外部名を大文字に変換するのか,小文字に変換するのか,または元のまま保存するのかを制御する。
/OPTIMIZE /OPTIMIZE 修飾子は INLINE キーワード,LOOPS キーワード,TUNE キーワード,UNROLL キーワード,およびソフトウェア・パイプラインをサポートする。
/REAL_SIZE REAL 宣言と COMPLEX 宣言のサイズを制御する。
/ROUNDING_MODE IEEE データに対して浮動小数点演算を丸める方法を制御する。
/SEPARATE_COMPILATION DEC Fortran コンパイラが次の処理を行うかどうかを制御する。

  • Digital Fortran 77 for OpenVMS VAX Systems と同様に,個々のコンパイル・ユニットを独立したモジュールとしてオブジェクト・ファイルに配置する (/SEPARATE_COMPILATION)。

  • コンパイル・ユニットを 1 つのモジュールとしてオブジェクト・ファイルにまとめる (/NOSEPARATE_COMPILATION は省略時の設定である)。この結果,プロシージャ間の最適化が促進される。

/SYNTAX_ONLY 構文チェックだけを行い,オブジェクト・ファイルを作成しないことを要求する。
/WARNINGS 特定のキーワードは,Digital Fortran 77 for OpenVMS VAX Systems で使用できない。
/VMS Digital Fortran for OpenVMS Alphaが特定の Digital Fortran 77 for OpenVMS VAX Systems 表記法を使用することを要求する。

11.4.2.2 Digital Fortran 77 for OpenVMS VAX Systems 固有の修飾子

この節では,Digital Fortran 77 for OpenVMS VAX Systems コンパイラのオプションのうち,Digital Fortran for OpenVMS Alpha 修飾子に対応するオプションがないものをまとめます。

表 11-8 は,Digital Fortran 77 for OpenVMS VAX Systems のバージョン 6.4 固有のコンパイル・オプションを示しています。

表 11-8 Digital Fortran for OpenVMS Alpha でサポートされない Digital Fortran 77 for OpenVMS VAX Systems 修飾子
Digital Fortran 77 for OpenVMS VAX Systems 修飾子 説明
/BLAS=(INLINE,MAPPED) Digital Fortran 77 for OpenVMS VAX Systems が Basic Linear Algebra Subroutines (BLAS)を認識し,これらをインラインまたはマッピングするかどうかを指定する。Digital Fortran 77 for OpenVMS VAX Systems の場合にのみ使用できる。
/CHECK=ASSERTIONS アサーション・チェックを許可または禁止する。
Digital Fortran 77 for OpenVMS VAX Systems に対してのみ使用できる。
/DESIGN=[NO]COMMENTS
/DESIGN=[NO]PLACEHOLDERS
設計情報を確認するためにプログラムを解析する。
/DIRECTIVES=DEPENDENCE 指定されたコンパイラ・ディレクティブがコンパイル時に使用されるかどうかを指定する。Digital Fortran 77 for OpenVMS VAX Systems に対してのみ使用できる。
/PARALLEL=(MANUALまたはAUTOMATIC) 並列処理をサポートする。
/SHOW=(DATA_DEPENDENCIES,DICTIONARY,LOOPS) リスト・ファイルに次の情報を登録するかどうかを制御する。

  • ベクタ化または自動分解を禁止するデータ依存性と,依存解析の対象とならないループに関する診断情報(DATA_DEPENDENCIES)。

  • インクルードしたCommon Data Dictionaryレコードからのソース・ライン(DICTIONARY)。

  • コンパイル後のループ構造に関するレポート(LOOPS)。

DATA_DEPENDENCIESおよびLOOPSキーワードはDigital Fortran 77 for OpenVMS VAX Systems に対してのみ使用できる。

/VECTOR ベクタ処理を要求する。Digital Fortran 77 for OpenVMS VAX Systems に対してのみ使用できる。
/WARNINGS=INLINE コンパイラが組み込みルーチンに対する参照のインライン・コードを生成できないときに,情報診断メッセージを印刷するかどうかを制御する。Digital Fortran 77 for OpenVMS VAX Systems に対してのみ使用できる。

要求された(手作業)分解に関連するすべてのCPAR$ディレクティブと特定の CDEC$ディレクティブ,およびそれに関連する修飾子またはキーワードも Digital Fortran 77 for OpenVMS VAX Systems 固有です。 『DEC Fortran Language Reference Manual』 を参照してください。

Digital Fortran 77 for OpenVMS VAX Systems のコンパイル・コマンドとオプションに関する詳しい説明は『DEC Fortran User Manual for OpenVMS VAX Systems』を参照してください。

11.4.3 トランスレートされた共有可能イメージとの相互操作性

Digital Fortran for OpenVMS Alphaを使用すれば,イメージ起動時(実行時) にトランスレートされたイメージと相互操作可能なイメージを作成できます。

トランスレートされた共有可能イメージの使用を可能にするには,次の操作を実行します。

作成された実行可能イメージには,最終的な実行可能イメージが共有可能イメージと相互操作できるようなコードが含まれます。たとえば,Digital Fortran 77 for OpenVMS VAX Systems RTL (FORRTL)が Digital Fortran for OpenVMS Alpha RTL (DEC$FORTRTL)と協調動作できるようにするためのコードが含まれます。ネイティブなプログラム (Digital Fortran for OpenVMS Alpha RTL)とトランスレートされたプログラム (Digital Fortran 77 for OpenVMS VAX Systems RTL)は,ファイルをオープンするRTLがそのファイルのクローズも実行するのであれば,同じユニット番号に対して入出力を実行できます。

プログラムでは,組み込み名を使用しなければならず(接頭辞を除く),完全な名前 (fac$xxxx)でルーチンを呼び出すわけではありません。

プログラムは,完全な (fac$xxxx) 名前によってルーチンを呼び出すのではなく,内部名 (接頭辞を除く名前) を使用しなければなりません。ただし,fac$xxxx という名前を使用できる 1 つの例外があります。トランスレートされたイメージ・プログラムでは,FOR$RAB システム関数を EXTERNAL として宣言できます。ネイティブな Alpha プログラムでは,FOR$RAB を内部関数として使用しなければなりません。

11.4.4 Digital Fortran 77 for OpenVMS VAX Systems データの移植

レコード・タイプは,Digital Fortran 77 for OpenVMS VAX Systems でもDigital Fortran for OpenVMS Alphaでも同じです。必要な場合には,EXCHANGEコマンドと /NETWORK修飾子および/TRANSFER=BLOCK修飾子を使用してデータを移植してください。コピー操作でファイルをStream_LFフォーマットに変換するには,/TRANSFER=BLOCKのかわりに/TRANSFER=(BLOCK,RECORD_SEPARATOR=LF)を使用するか,またはEXCHANGEコマンドで/FDL修飾子を使用して,レコード・タイプや他のファイル属性を変更します。

フォーマッティングされていない浮動小数点データを変換しなければならない場合には,Digital Fortran 77 for OpenVMS VAX Systems プログラム (VAXハードウェァ) が REAL*4 または COMPLEX*8 データをF浮動小数点フォーマットで格納し,REAL*8 または COMPLEX*16 データをD浮動小数点またはG浮動小数点フォーマットで格納し,REAL*16 データをH浮動小数点フォーマットで格納することを念頭においてください。Digital Fortran for OpenVMS Alphaプログラム (Alphaハードウェアで実行されるプログラム)は,REAL*4,REAL*8,COMPLEX*8,および COMPLEX*16 データをそれぞれ,表 11-9 に示すフォーマットのいずれかで格納します。

表 11-9 VAXシステムとAlphaシステムでの浮動小数点データ
データ宣言 VAXフォーマット Alphaフォーマット
REAL*4とCOMPLEX*8 VAX F浮動小数点フォーマット IEEE S浮動小数点またはVAX F浮動小数点フォーマット
REAL*8とCOMPLEX*16 VAX D浮動小数点またはG浮動小数点フォーマット IEEE T浮動小数点,VAX D浮動小数点 1またはVAX G浮動小数点フォーマット
REAL*16と COMPLEX*32 VAX H浮動小数点 Digital Fortran for OpenVMS Alphaではサポートされない。おそらくRTLルーチン CVT$CONVERT_FLOATを使用して変換しなければならない。


1Alphaシステムでは,演算を実行するときに VAX D浮動小数点フォーマットを使用することは望ましくない。このような場合には,Digital Fortran for OpenVMS Alphaの変換ルーチンを使用する変換プログラムでD浮動小数点フォーマットをIEEE T浮動小数点(または VAX G浮動小数点)フォーマットに変換することを考慮しなければならない。

11.5 DEC Pascal for OpenVMS Alpha システムとVAX Pascalの互換性

この節では,DEC Pascalと他のDECのPascalコンパイラを比較し,VAXシステムと AlphaシステムのDEC Pascalの違いを示します。これらの機能の完全な説明については,『DEC Pascal Language Reference Manual』を参照してください。

11.5.1 DEC Pascal の新機能

表 11-10 は以前 VAX Pascal では提供されていなかった機能を示します。

表 11-10 DEC Pascal の新機能
機能 説明
OpenVMSシステムのサポート OpenVMSプラットフォームで有効なすべてのデータ・タイプを含む。
あらかじめ定義されている定数のうち再定義可能な値 MAXINT,MAXUNSIGNED,MAXREAL,MINREAL,ESPREALの値はプラットフォームによって定義され,コンパイラが整数のサイズや浮動小数点型を指定するために変更する。
COMMON,EXTERNAL,GLOBAL.PSECT,WEAK_EXTERNAL および WEAK_GLOBAL属性への一重引用符で囲まれたオプション・パラメータ 変更されない識別子をリンカへ渡すことを許可する。
二重引用符で囲まれた文字列 DEC Pascalは文字列および文字の区切りとして二重引用符を使用できる。
埋め込まれた文字列の値 二重引用符で囲まれた文字列のなかでは,Cプログラミング言語でラインフィード文字を表わす"/n"のような,バックスラッシュとそのすぐ後に指定された文字をサポートする。
追加されたデータ・タイプと値 DEC Pascalでは次のデータ・タイプをサポートする。ALFA,CARDINAL,CARDINAL16,CARDINAL32,INTEGER16,INTEGER32,INTEGER64,INTSET,POINTER,UNIV_PTR,UNSIGNED16,UNSIGNED32およびUNSIGNED64。
UNSIGNED値とINTEGER変数の割り当て DEC Pascalは,UNSIGNED値が割り当てにおいてINTEGER 変数およびアレイ・インデックスに互換性を持つ。
文字のアンパックされたアレイへの文字列値の割り当て DEC Pascal は CHAR変数のARRAYが固定長の文字列として扱われることを許可する。
追加された文 DEC Pascal では次の文をサポートします。BREAK,CONTINUE,EXIT,NEXT,およびRETURN。
追加されたルーチン DEC Pascal は次の機能やプロシージャをサポートします。ADDR,ARGC,ARGV,ASSERT,BITAND,BITNOT,BITOR,BITXOR,HBOUND,LBOUND,FIRST,FIRSTOF,LAST,LASTOF,IN_RANGE,LSHIFT,RSHIFT,LSHFT,RSHFT,MESSAGE,NULL,RANDOM,SEED,REMOVE,SIZEOF,SYSCLOCK および WALLCLOCK。
RESET,REWRITE および EXTENDに対するオプションのセカンド・パラメータ DEC Pascal は,ファイル変数に関連したファイル名に対する定数文字列表現であるセカンド・パラメータを使用できる。
コンパイラ・コマンドの切り替え DEC Pascal は,データ・タイプに対する記憶領域およびアラインメントの割り当ての指定を変更するためのスイッチを持つ。またスイッチで最適化のレベルを変更することも可能である。Alphaシステムでは,ひとつのオプションがREALおよび DOUBLEデータ・タイプの省略時の意味を制御する。また,スイッチへの引数でアラインメントに関するメッセージ,および異なるプラットフォーム間でのアラインメントの互換性や特定のプラトフォームで使用できない機能を制御する。

11.5.2 動的条件ハンドラの設定

DEC Pascal では,LIB$ESTABLISH の代わりに使用するために,ESTABLISH と REVERT という組み込みルーチンが提供されます。LIB$ESTABLISH を宣言して使用しようとすると,コンパイル時に警告が出されます。

11.5.3 レコード・ファイルに対する省略時のアラインメント規則の変更

DEC Pascal では,フィールド・アラインメントの位置や,POS,ALIGNED,DATA属性およびデータ・コンパイラ切り替えの位置を上書きすることが可能です。

11.5.4 あらかじめ宣言されている名前の使用方法

互換性を維持するためにDEC Pascalは,表 11-11 に示されるあらかじめ宣言されている名前を含むプログラムをコンパイルすることができますが,弊社では以下のように識別子を置き換えて使用されることをお勧めします。

表 11-11 あらかじめ宣言されている名前の使用方法
識別子 望ましい使用法
ADDR ADDRESS 機能をご使用ください
ALFA TYPE ALFA = PACKED ARRAY [1..10]OF CHAR と同じ
BITAND UAND 文と同じ
BITNOT UNOT 文と同じ
BITOR UOR 文と同じ
BITXOR UXOR 文と同じ
EXIT BREAK 文と同じ
FIRST,FIRSTOF LOWER 機能と同じ
HBOUND UPPER 機能と同じ
IN_RANGE サブレンジ・チェックができない場合のみ有効。
IN_RANGE(X) は (X=>LOWER(X))AND(X<=UPPER(X)) と同じ
INTSET TYPE INTSET = SET OF 0 .. 255; と同じ
LAST, LASTOF UPPER 機能と同じ
LBOUND LOWER 機能と同じ
LSHFT LSHIFT 機能と同じ
MESSAGE WRITELN(ERR,expression)と同じ
NEXT CONTINUE 文と同じ
NULL empty 文と同じ
REMOVE DELETE_FILE プロシージャと同じ
RSHFT RSHIFT 機能と同じ
SIZEOF SIZE 機能と同じ
STLIMIT コンパイルするが,エラーを返さない
UNIV_PTR TYPE UNIV_PTR = POINTER; と同じ


前へ 次へ 目次 索引