日本-日本語
≫  お問い合わせ

製品とサービス >  ソフトウェアとOS >  OpenVMS >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:移行プロセスの概要
第 2 章:移行方法の選択
第 3 章:アプリケーションの移行
第 4 章:再コンパイルと再リンクの概要
第 5 章:ページ・サイズの拡大に対するアプリケーションの対応
第 6 章:共有データの整合性の維持
第 7 章:アプリケーション・データ宣言の移植性の確認
第 8 章:アプリケーション内の条件処理コードの確認
第 9 章:アプリケーションのトランスレート
第 10 章: ネイティブなイメージとトランスレートされたイメージの間の相互操作性の確認
第 11 章:OpenVMS Alpha コンパイラ
付録 A :アプリケーション評価チェックリスト
用語集
索引
PDF
OpenVMS ホーム
OpenVMS Alpha オペレーティング・システム | HPE 日本

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


目次 索引



別のプログラミング言語で作成されたファイルは,言語と文字セットの互換性がないために,特殊な処理が必要な場合があります。最もよく見られる互換性上の問題は,データ型とデータ・レコードのフォーマットです。以下の点に注意してください。

  • OpenVMS Alpha では, COBOL プログラムの中で,ファイル・レコード長よりも短い長さを指定したFDで固定長レコードのファイルを記述することができます。 OpenVMS Alpha では,入力時に各レコードの余分なデータは無視されます。

  • OpenVMS Alpha では,既存のORGANIZATION INDEXEDファイルは, ORGANIZATION SEQUENTIALを指定したFDでは読み込むことができません。

データ型の違い

データ型はプログラミング言語およびユーティリティによって異なります。たとえば,DEC Fortranはパックされた10進データ型をサポートしていないので, COBOL ファイルの中のPACKED-DECIMALデータを簡単には利用できません

データ型の互換性の問題を回避するためには,以下のテクニックが利用できます。

  • 複数の言語で使用することを前提としたデータ・ファイルには, ASCII表現を使用するNATIVE文字セットを使用します。

  • 非 ASCII データを処理する必要がある場合は, (1) 環境部のSPECIAL-NAMES段落と,(2) SELECT文のCODE-SET句で文字セットを指定することができます。NATIVEを除き,すべての文字セットは SPECIAL-NAMES段落で設定する必要があります。

  • 一般的な数値データ型を使用します(どのアプリケーションでも一定の数値データ型)。

次の例では,入力ファイルはEBCDICで作成されています。この場合, OpenVMS Alphaオペレーティング・システム上では, COBOL 以外のどの言語でも処理が難しいファイルが作成されてしまいます。


ENVIRONMENT DIVISION. 
CONFIGURATION SECTION. 
SPECIAL-NAMES.   ALPHABET FOREIGN-CODE IS EBCDIC. 
INPUT-OUTPUT SECTION. 
FILE-CONTROL. 
     SELECT INPUT-FILE ASSIGN TO "INPFIL" 
            CODE-SET IS FOREIGN-CODE. 
            . 
            . 
            . 



11.3.5 予約語

以下に, DEC COBOL には含まれているが, VAX COBOL には含まれていないX/OPENの予約語を示します。

AUTO EXCLUSIVE REQUIRED
AUTOMATIC FOREGROUND-COLOR RETURN-CODE
BACKGROUND-COLOR FULL REVERSE-VIDEO
BLINK HIGHLIGHT SECURE
EOL LOWLIGHT UNDERLINE
EOS MANUAL  

コマンド行修飾子/RESERVED_WORDS=NOXOPENを指定すると,これらの予約語は予約語でない単語として扱われます。

11.3.6 デバッガ・サポートの違い

DEC COBOL のデバッガ・サポートは, VAX COBOL といくつかの点で異なります。

  • DEC COBOL は,省略時の最適化が行われているときに, COBOL コマンド行で/DEBUG修飾子を使用すると,次の情報メッセージを発行します。


    %COBOL-I-DEBUGOPT, /NOOPTIMIZE is recommended with /DEBUG 
    


    このメッセージは,/DEBUGを指定したときに,最適化に関する指定を何も行っていない場合に表示されます(コンパイラの省略時の設定は/OPTIMIZEです)。省略時にはオフになっている他の情報メッセージとは異なり, DEC COBOL コンパイラでは,このメッセージは/WARN=NOINFOが有効になっているときでもつねに表示されます。メッセージをオフにするには, COBOL コマンド行上で修飾子/[NO]OPTIMIZEを何らかの形式で指定します(/NOOPTIMIZE,/OPTIMIZE,/OPTIMIZE=LEVEL=xなど)。

  • VAX COBOL には/OPTIMIZE修飾子はありません。

  • DEC COBOL では, VAX COBOL とは異なり,デバッガが変数名の中の下線をハイフンに,ハイフンを下線に変えることがあります。
    この VAX COBOL との違いは,プログラムのデバッグに役立つことがあります。これらのメッセージは情報メッセージなので,コンパイラはリンクと実行が可能なオブジェクト・ファイルを生成します。ただし,このメッセージが表示されたときには,プログラムの構造が意図と異なるものになっていると思われるので,検出されないロジック・エラーが存在している可能性が高いといえます。



11.3.7 DECset/LSEサポートの違い

DEC COBOL はDECset/LSE Program Design Facility, /DESIGN修飾子,デザイン・コメント,および疑似コード・プレースホルダをサポートしていません。

11.3.8 DBMSサポート

DEC COBOL の Oracle DBMS サポートには,プログラムを DEC COBOL と VAX COBOL のどちらで開発しているかに応じて,いくつかの違いがあります。

DEC COBOL でマルチストリーム Oracle DBMS DMLを使用する際には,異なるソース・ファイルからは異なるスキーマまたはストリームにアクセスする必要があります。

11.4 Digital Fortran for OpenVMS Alpha と OpenVMS VAX システムとの互換性

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



11.4.1 言語機能

Digital Fortran for OpenVMS Alpha には,ANSI FORTRAN-77 と ISO/ANSI Fortran 9x の標準機能が含まれており,さらにこれらの Fortran 標準機能に対して, Digital Fortran 77 for OpenVMS VAX Systems の拡張機能も含まれています。たとえば,次の拡張機能が含まれています。

  • RECORD文とSTRUCTURE文

  • CDEC$指示文とOPTIONS文

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

  • REAL*4,REAL*8,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 標準の拡張機能が示されています。

注意

Digital Fortran for OpenVMS では,DEC Fortran for OpenVMS Alpha と ISO/ANSI Fortran 90 標準でサポートされる FORTRAN-77 言語の拡張機能の大部分がサポートされます。互換性については,『HP Fortran for OpenVMS User Manual』を参照してください。

この節のこの後の部分では,Digital Fortran 77 for OpenVMS VAX Systems と Digital Fortran for OpenVMS Alpha 固有の言語機能,各言語で共用されるものの,異なる方法で解釈される言語機能,Digital Fortran 77 for OpenVMS VAX Systems には適用されない Digital Fortran for OpenVMS Alpha 制限事項,データを移植する場合の検討事項について説明します。

次の言語機能は Digital Fortran for OpenVMS Alpha では提供されますが, Digital Fortran 77 for OpenVMS VAX Systems のバージョン 6.4 ではサポートされません。

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

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

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

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

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

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

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

  • いくつかの実行時エラーはDigital Fortran for OpenVMS Alpha固有のエラーです。

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

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

注意

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

Digital Fortran 言語機能についての説明は,『Fortran language reference manual』を参照してください。

次の言語機能は Digital Fortran 77 for OpenVMS VAX Systems では使用できますが, Digital Fortran for OpenVMS Alphaではサポートされません。

  • 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文に変更しなければなりません (Digital Fortran for OpenVMS AlphaではDEFINE FILE文をサポートしますが,同時にDEFINE FILE文の変換についても考慮しなければなりません)。
    ERRSETおよびERRTSTのかわりにOpenVMSの条件処理を使用できます。 Digital Fortran for OpenVMS AlphaはERRSNSサブルーチンをサポートします。

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

Digital Fortran 77 for OpenVMS VAX Systems の特定の機能は, Digital Fortran for OpenVMS Alpha では使用が制限されているか,またはまったく提供されません。

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

  • 文字定数には,数値の仮引数ではなく,文字の仮引数を割り当てなければなりません (Digital 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 
    

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

次の言語機能はDigital Fortran 77 for OpenVMS VAX Systems では使用できますが, AlphaアーキテクチャとVAXアーキテクチャとの違いにより, Digital Fortran for OpenVMS Alphaではサポートされません。

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

  • 正確な例外制御
    特定の例外の処理方法は,OpenVMS VAX システムとOpenVMS Alphaシステムとで異なります。正確な例外ハンドラ制御の要求には, /SYNCHRONOUS_EXCEPTIONS 修飾子を使用してください。

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

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

  • ベクタ化機能
    ベクタ化は,/VECTOR修飾子とそれに関連する修飾子およびCDEC$ INIT_DEP_FWD ディレクティブも含めてサポートされません。Alphaプロセッサは,ベクタ化機能に類似した機能としてパイプライン機能や他の機能を提供します。



次の言語機能は,Digital Fortran 77 for OpenVMS VAX Systems と Digital Fortran for OpenVMS Alphaとで異なる方法で解釈されます。

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

  • フォーマッティングした入出力文でのホレリス定数
    次のいずれかの場合には,Digital Fortran 77 for OpenVMS VAX Systems と Digital Fortran for OpenVMS Alphaは異なる動作をします。

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


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

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


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


    Digital Fortran 77 for OpenVMS VAX Systems では,READ文によって読み込まれた値が大部分の出力になります。(FMT2は無視されます), Digital Fortran for OpenVMS Alphaでは,WRITE文の出力は"abcdefghij"になります (つまり,READ文によって読み込まれた値はWRITE文によって書き込まれる値に影響を与えません)。



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のコンパイル・コマンドとオプションについての詳しい説明は。『HP Fortran for OpenVMS User Manual』を参照してください。 Digital Fortran 77 for OpenVMS VAX Systems のコンパイル・コマンドとオプションについての詳しい説明は『DEC Fortran User Manual for OpenVMS VAX Systems』を参照してください。

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

表 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 表記法を使用することを要求する。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡