日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS
ライブラリ

タイトルページ
目次
まえがき
第 1 章:移行プロセスの概要
第 2 章:移行方法の選択
第 3 章:アプリケーションの移行
第 4 章:再コンパイルと再リンクの概要
第 5 章:ページサイズの拡大に対するアプリケーションの対応
第 6 章:共用データの整合性の維持
第 7 章:アプリケーションデータ宣言の移植性の確認
第 8 章:アプリケーション内の条件処理コードの確認
第 9 章:OpenVMS I64コンパイラ
付録 A :アプリケーション評価チェックリスト
用語集
索引
PDF
OpenVMS ホーム

HP OpenVMS
OpenVMS VAX から OpenVMS I64 への
アプリケーションの移行


目次 索引



HP COBOL は, OpenVMS VAX システム上で動作する VAX COBOL に基づいており,高い互換性がありますが,いくつかの重要な違いがあります。

詳細は,『HP COBOL User Manual』を参照してください。

9.5 OpenVMS VAX システムと OpenVMS I64 システムの HP Fortran の互換性

ここでは,HP Fortran for OpenVMS I64 システムと HP Fortran 77 for OpenVMS VAX システム (HP Fortran 77,以前の名前は VAX FORTRAN) の互換性について,以下の分野に分けて説明します。



9.5.1 言語機能

HP Fortran には, ANSI FORTRAN-77 とISO/ANSI Fortran 9x の標準機能が含まれており,さらにこれらの Fortran 標準機能に対して,HP Fortran 77 の拡張機能も含まれています。たとえば,以下の拡張機能が含まれています。

  • RECORD 文と STRUCTURE 文

  • CDEC$ 指示文と OPTIONS 文

  • BYTE,INTEGER*1,INTEGER*2,INTEGER*4,LOGICAL*1,LOGICAL*2,LOGICAL*4

  • REAL*4,REAL*8,REAL*16,COMPLEX*8,COMPLEX*16

  • IMPLICIT NONE 文

  • INCLUDE 文

  • NAMELIST 入出力

  • ドル記号 ($) とアンダスコア (_) を含む最大 31 文字の名前

  • DO WHILE 文と END DO 文

  • 行末コメントに対する感嘆符 (!) の使用

  • 組み込み関数 %DESCR,%LOC,%REF,および %VAL

  • VOLATILE 文

  • DICTIONARY 文 (FORTRAN-77 コンパイラのみ)

  • POINTER 文データ型

  • 再帰

  • ディスクとメモリの間のフォーマットされていないデータの変換

  • インデックス付きファイル

  • PRINT,ACCEPT,TYPE,DELETE,UNLOCK などの入出力文

  • CARRIAGECONTROL,CONVERT,ORGANIZATION,RECORDTYPE などの, OPEN 文と INQUIRE 文の指定子

  • 適切な Fortran 言語リファレンス・マニュアルで示されている他の言語要素

拡張機能と言語機能についての詳細は, Fortran 言語のリファレンス・マニュアルを参照してください。このマニュアルには,FORTRAN-77 標準の拡張機能が示されています。

ここでは,HP Fortran 77 の言語機能と,各言語で共用されるものの,異なる方法で解釈される HP Fortran の言語機能, HP Fortran 77 には適用されない HP Fortranの制限事項,データを移植する際の検討事項について説明します。

以下の言語機能は HP Fortran では提供されますが, HP Fortran 77 バージョン 6.4 ではサポートされません。

  • 文字定数の区切り文字としての二重引用符 (" ")。これは /VMS 修飾子を指定することにより無効にできます。

  • COMMON ブロックの項目およびレコードのフィールドに対する自然にアラインされた境界またはパックされた境界

  • INTEGER*1,INTEGER*8,および LOGICAL*8 データ型

  • IEEE の S 浮動小数点,T 浮動小数点および X 浮動小数点データ型のサポートと,ネイティブでなく,フォーマッティングもされていないデータ・ファイル形式のサポート。ビッグ・エンディアン数値形式もサポートされます。 Alpha システムのネイティブ浮動小数点データ型については,『OpenVMS Calling Standard』を参照してください。

  • LIB$ESTABLISH と LIB$REVERT は, HP Fortran 77 の条件処理との互換性を維持するために,組み込み関数として提供されます。
    HP Fortran では, LIB$ESTABLISH の宣言は HP Fortran RTL 固有のエントリ・ポイントに変換されます。

  • 倍精度の複素数組み込み関数に対する代替の "Z" 綴り (たとえば,倍精度平方根組み込み関数は CDSQRT または ZSQRT と指定できます)

  • 以下の組み込み関数
    IMAG
    AND
    OR
    XOR
    LSHIFT
    RSHIFT

  • いくつかの実行時エラーは HP Fortran 固有のエラーです。

  • 大文字と小文字を区別する名前

  • HP Fortran では,入出力ユニット番号は 0 または正の整数として指定できます。 HP Fortran 77 では,入出力ユニット番号の値は 0 〜 99 の範囲です。

注意

HP Fortran 90 コンパイラを使用しているユーザに対する注意事項ですが, ANSI/ISO Fortran 90 標準に準拠したいくつかの機能は HP Fortran 77 では使用できません。

HP Fortran の言語機能についての説明は, Fortran 言語のリファレンス・マニュアルを参照してください。

以下の言語機能は HP Fortran 77 では使用できますが, HP Fortran ではサポートされません。

  • FORTRAN/PARALLEL=(AUTOMATIC) の自動分析機能

  • CPAR$ 指示文を使用した FORTRAN/PARALLEL=(MANUAL) の手動分析機能 (CPAR$ DO_PARALLEL など)

  • PDP-11 との互換性を維持するための次の入出力およびエラー・サブルーチン

    ASSIGN
    CLOSE
    ERRSET
    ERRTST
    FDBSET
    IRAD50
    RAD50
    R50ASC
    USEREX


    既存のプログラムを移植する場合には,ASSIGN,CLOSE,および FBDSET の呼び出しは適切な OPEN 文に変更しなければなりません ( HP Fortran for OpenVMS Alpha では DEFINE FILE 文はサポートされていますが, DEFINE FILE 文の変更についても同時に検討すべきです)。
    ERRSET および ERRTST の代わりに OpenVMS の条件処理を使用できます。 HP Fortran for OpenVMS Alpha は ERRSNS サブルーチンをサポートします。

  • nRxxx という形式の Radix-50 定数
    既存のプログラムを移植する場合には,radix-50 定数と IRAD50,RAD50,および R50ASC ルーチンは,CHARACTER として宣言したデータを使用して, ASCII でエンコーディングしたデータに変更しなければなりません。

HP Fortran 77 の以下の機能は,HP Fortran では使用が制限されているか,使用できません。

  • 数値のローカル変数は,使用した最適化のレベルに応じて, 0 に初期化されることがありますが,常に初期化されるわけではありません。どのような状況でも値が 0 に初期化されるようにするには,明示的な代入文または DATA 文を使用してください。

  • 文字定数には,数値の仮引数ではなく,文字の仮引数を割り当てなければなりません (HP Fortran 77 for OpenVMS VAX Systems では,仮引数が数値の場合, 'A' を参照によって渡します)。このような引数に対しては,/BY_REF_CALL 修飾子を使用することを検討してください。

  • 保存された仮配列は機能しません。


    SUBROUTINE F_INIT (A, N) 
    REAL A(N) 
    RETURN 
    ENTRY F_DO_IT (X, I) 
    A (I) = X  ! No: A no longer visible 
    RETURN 
    END 
    

  • ホレリス実引数には,文字仮引数ではなく,数値仮引数を割り当てなければなりません。

以下の言語機能は HP Fortran 77 では使用できますが, Itanium アーキテクチャと VAX アーキテクチャとの違いにより, HP Fortran ではサポートされません。

  • いくつかの FORSYSDEF シンボル定義モジュールは, VAX アーキテクチャまたは Itanium アーキテクチャ固有のモジュールです。

  • 正確な例外制御
    特定の例外の処理方法は,VAX システムと I64 システムとで異なります。

  • REAL*16 データは VAX システムでは H 浮動小数点データ形式を使用し, I64 システムでは X 浮動小数点を使用します。

  • D 浮動小数点に対する VAX のサポート
    I64 の命令セットでは,D 浮動小数点 REAL*8 形式がサポートされないため, D 浮動小数点データは演算中にソフトウェアによって T 浮動小数点に変換され,その後,D 浮動小数点形式に戻されます。したがって,VAX システムと I64 システムの間には, D 浮動小数点の演算に違いがあります。
    I64 システムで最適な性能を実現するためには, IEEE T 浮動小数点形式での REAL*8 データの使用を考慮する必要があり,多くの場合は形式を指定するために /FLOAT 修飾子を使用します。 D 浮動小数点データを T 浮動小数点形式に変換するための HP Fortran for OpenVMS I64 アプリケーション・プログラムを作成するには, Fortran 言語のリファレンス・マニュアルで説明されているファイル変換方式を使用します。

  • ベクタ化機能
    ベクタ化は,/VECTOR 修飾子とそれに関連する修飾子,および CDEC$ INIT_DEP_FWD 指示文も含めてサポートされません。



以下の言語機能は,HP Fortran 77 と HP Fortran とで解釈方法が異なります。

  • 乱数ジェネレータ (RAN)
    HP Fortran の RAN 関数は,同じランダム・シードに対して, HP Fortran 77 と異なる数値パターンを生成します (RAN 関数と RANDU 関数は, HP Fortran 77 との互換性を維持するために提供されます)。

  • フォーマット付き入出力文でのホレリス定数
    次のいずれかの場合には,HP Fortran 77 と HP Fortran は異なる動作をします。

    • 2つの異なる入出力文が,フォーマット指定子として同じ CHARACTER PARAMETER 定数を参照する場合。次の例を参照してください。


            CHARACTER*(*) FMT2 
            PARAMETER (FMT2='(10Habcdefghij)') 
            READ (5, FMT2) 
            WRITE (6, FMT2) 
      

    • 2つの異なる入出力文が,それぞれのフォーマット指定子として同じ文字定数を使用する場合。次の例を参照してください。


            READ (5, '(10Habcdefghij)') 
            WRITE (6, '(10Habcdefghij)') 
      


    HP Fortran 77 では, READ 文によって読み取られた値が WRITE 文の出力になります (FMT2 は無視されます)。一方,HP Fortran では, WRITE 文の出力は abcdefghijになります (つまり, READ 文によって読み取られた値はWRITE 文によって書き込まれる値に影響を与えません)。



9.5.2 コマンド行修飾子

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

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

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

表 9-3 は,HP Fortran コンパイラの修飾子のうち, HP Fortran 77 ではオプションがなく, HP Fortran 77 バージョン 6.4 でサポートされていない修飾子を示しています。

表 9-3 HP Fortran 77 にない HP Fortran の修飾子
修飾子 説明
/BY_REF_CALL 文字定数の実引数に数値仮引数を関連付けることができる (HP Fortran 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 浮動小数点のどれを使用するのかを選択する。 HP 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 HP Fortran コンパイラが次の処理を行うかどうかを制御する。

  • HP Fortran 77 と同様に,個々のコンパイル単位を独立したモジュールとしてオブジェクト・ファイルに配置する (/SEPARATE_COMPILATION)。

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

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



ここでは,HP Fortran 77 コンパイラの修飾子のうち, HP Fortran には対応する修飾子がないものをまとめます。

表 9-4 は,HP Fortran 77 バージョン 6.4 固有のコンパイル修飾子を示しています。

表 9-4 HP Fortran で使用できない HP Fortran 77 の修飾子
HP Fortran 77 の修飾子 説明
/BLAS=(INLINE,MAPPED) HP Fortran 77 が Basic Linear Algebra Subroutines (BLAS) を認識し,これらをインラインまたはマッピングするかどうかを指定する。 HP Fortran 77 でのみ使用できる。
/CHECK=ASSERTIONS アサーション・チェックの有効と無効を切り替える。 HP Fortran 77 でのみ使用できる。
/DESIGN=[NO]COMMENTS
/DESIGN=[NO]PLACEHOLDERS
設計情報を確認するためにプログラムを解析する。
/DIRECTIVES=DEPENDENCE 指定されたコンパイラ指示文をコンパイル時に使用するかどうかを指定する。 HP Fortran 77 でのみ使用できる。
/PARALLEL=(MANUAL または AUTOMATIC) 並列処理をサポートする。
/SHOW=(DATA_DEPENDENCIES,LOOPS) リスト・ファイルに次の情報を出力するかどうかを制御する。

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

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

キーワード DATA_DEPENDENCIES および LOOPS は, HP Fortran 77 for OpenVMS VAX Systems でのみ使用できる。

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

要求された(手動の) 分解に関連するすべての CPAR$ 指示文と特定の CDEC$ 指示文,およびそれに関連する修飾子またはキーワードは HP Fortran 77 固有です。 『DEC Fortran Language Reference Manual』 を参照してください。

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

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

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

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

  • FORTRAN または F90 コマンド行に /TIE 修飾子を指定します。

  • LINK コマンド行で /NONATIVE_ONLY 修飾子を指定します。

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

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


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項