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


前へ 目次 索引


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

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

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

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

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

A.4.4 VAX FORTRANデータの移植

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

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

表 A-13 VAXシステムと AXPVMSシステムでの浮動小数点データ
データ宣言 VAXフォーマット AXPフォーマット
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浮動小数点 DEC Fortran ではサポートされない。おそらく RTLルーチンCVT$CONVERT_FLOATを使用して変換しなければならない。


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

VAX D浮動小数点またはG浮動小数点(REAL*8)の範囲外の VAX H浮動小数点(REAL*16)データを変換することはできません。このような場合には,1つの方法として,ファイルをVAX D浮動小数点またはG浮動小数点フォーマット(REAL*8)に変換するための変換アプリケーションを作成し,その後,DEC Fortran の変換ルーチンを使用して,データをIEEE T浮動小数点フォーマットに変換する方法があります。

A.5 DEC Pascal for OpenVMS AXP システムとVAX Pascalの互換性

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

A.5.1 DEC Pascalの新機能

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

表 A-14 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 は,データ・タイプに対する記憶領域およびアラインメントの割り当ての指定を変更するためのスイッチを持つ。またスイッチで最適化のレベルを変更することも可能である。AXPシステムでは,ひとつのオプションがREALおよび DOUBLEデータ・タイプの省略時の意味を制御する。また,スイッチへの引数でアラインメントに関するメッセージ,および異なるプラットフォーム間でのアラインメントの互換性や特定のプラトフォームで使用できない機能を制御する。

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

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

A.5.3 あらかじめ宣言されている名前の使用法

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

表 A-15 あらかじめ宣言されている名前の使用法
識別子 望ましい使用法
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; と同じ

A.5.4 プラットフォームに依存する機能

DEC Pascal はコンパイルされたプラットフォームと同じプラットフォーム(オペレーティング・システムとハードウェアの組み合わせ)でのみ環境ファイルを使用できます。

さらに,VAXシステムでのみサポートされるDEC Pascalの機能を以下に示します。

以下にAXPシステムでのみサポートされるDEC Pascalの機能を示します。

A.5.5 古い機能

この節では,サポートされてはいるが使用が勧められない機能について説明します。これらは,DECの他のPascalコンパイラとの互換性のためにだけ提供されます。

A.5.5.1 /OLD_VERSION 修飾子

/OLD_VERSION 修飾子は,コンパイラにVAX Pascalバージョン1.0の言語の定義を使用して,VAX Pascalバージョン1.0とその後のバージョンの違いを解決させます。この修飾子を指定すれば,既存のプログラムを引き続き使えます。

A.5.5.2 /G_FLOATING 修飾子

/G_FLOATING修飾子は,コンパイラにDOUBLE型の値に対してG_floatingの表現と命令を使用することを指定します。[[NO]G_FLOATING] 属性はVAXシステムでもAXPシステムでも指定できます。

/G_FLOATING修飾子の使用が,ソース・プログラムやモジュール内で指定された倍精度属性と矛盾するときは,エラーとなります。倍精度数の受け渡しを行うルーチンやコンパイル単位間で複数の浮動小数点フォーマットを混在させることはできません。すべてのOpenVMS VAX プロセッサがG浮動小数点データ型をサポートするわけではありません。

これより前に,コンパイラが浮動小数点データ型を指定する方法だった,/FLOAT修飾子の説明も参照してください。/FLOAT修飾子は,AXPシステムのみでサポートされるIEEE浮動小数点データ型も選択できます。

A.5.5.3 OVERLAID 属性

OVERLAID 属性はコンパイル単位で宣言された変数へ,記憶領域がどのように割り当てられるかを指定します。コンパイル・ユニットでOVERLAID が指定されると,プログラムやモジュール・レベルで宣言された変数は(STATICまたはPSECT属性を持たない限り),すべての他の上書きされたコンパイル・ユニットで,静的変数の記憶領域を上書きします。

この属性は,VAX Pascal バージョン1.0で提供された分割コンパイル機能を用いているプログラムでの使用のみを対象としています。


前へ 索引 目次