前へ | 次へ | 目次 | 索引 |
複数のプロセスで共通ブロックを共用する場合には,DEC COBOL プログラムをリンクするときの問題を防ぐために,PSECT属性をSHRに設定します(省略時の値は,OpenVMS Alpha システムではSHR,OpenVMS VAX システムではNOSHRです)。また,次のように,共用可能イメージのリンカ・オプション・ファイルに SYMBOL_VECTORを追加します。
SYMBOL_VECTOR = (psect-name = PSECT) |
詳細については,『OpenVMS Linker Utility Manual』を参照してください。
11.3.3.14 算術演算
DEC COBOL と VAX COBOL では,プラットフォームによって,いくつかの算術演算の動作が異なります。
COMPUTE D = (A / B) / C. |
...は次のように書くことができます。
COMPUTE TMP1 = A / B. COMPUTE D = TMP1 / C. |
A / B という計算に使用される精度は,TMP1の宣言によって決定されます。
11.3.4 言語とプラットフォームの間でのファイルの互換性
別のプログラミング言語で作成されたファイルは,言語と文字セットの互換性がないために,特殊な処理が必要な場合があります。最もよく見られる互換性上の問題は,データ型とデータ・レコードのフォーマットです。以下の点に注意してください。
データ型はプログラミング言語およびユーティリティによって異なります。たとえば,DEC Fortranはパックされた10進データ型をサポートしていないので,COBOL ファイルの中のPACKED-DECIMALデータを簡単には利用できません
データ型の互換性の問題を回避するためには,以下のテクニックが利用できます。
次の例では,入力ファイルは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. . . . |
以下に,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 といくつかの点で異なります。
%COBOL-I-DEBUGOPT, /NOOPTIMIZE is recommended with /DEBUG |
このメッセージは,/DEBUGを指定したときに,最適化に関する指定を何も行っていない場合に表示されます(コンパイラの省略時の設定は/OPTIMIZEです)。省略時にはオフになっている他の情報メッセージとは異なり,DEC COBOL コンパイラでは,このメッセージは/WARN=NOINFOが有効になっているときでもつねに表示されます。メッセージをオフにするには,COBOL コマンド行上で修飾子/[NO]OPTIMIZEを何らかの形式で指定します(/NOOPTIMIZE,/OPTIMIZE,/OPTIMIZE=LEVEL=xなど)。
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)の互換性について,次の分野に分けて説明します。
Digital Fortran for OpenVMS Alpha には,ANSI FORTRAN-77 と ISO/ANSI Fortran 9x の標準機能が含まれており,さらにこれらの Fortran 標準機能に対して,Digital Fortran 77 for OpenVMS VAX Systems の拡張機能も含まれています。たとえば,次の拡張機能が含まれています。
拡張機能と言語機能の詳細については,Fortran 言語の参照マニュアルを参照してください。このマニュアルには,FORTRAN-77 標準の拡張機能が示されています。
Digital Fortran for OpenVMS では,DEC Fortran for OpenVMS Alpha と ISO/ANSI Fortran 90 標準でサポートされる FORTRAN-77 言語の拡張機能の大部分がサポートされます。互換性については,『DEC Fortran 90 User Manual for OpenVMS Alpha Systems』を参照してください。 |
この節のこの後の部分では,Digital Fortran 77 for OpenVMS VAX Systems と Digital Fortran for OpenVMS Alpha 固有の言語機能,各言語で共用されるものの,異なる方法で解釈される言語機能,Digital Fortran 77 for OpenVMS VAX Systems には適用されない Digital Fortran for OpenVMS Alpha 制限事項,データを移植する場合の検討事項について説明します。
11.4.1.1 Digital Fortran for OpenVMS Alpha 固有の言語機能
次の言語機能は Digital Fortran for OpenVMS Alpha では提供されますが,Digital Fortran 77 for OpenVMS VAX Systems のバージョン 6.4 ではサポートされません。
IMAG
AND
OR
XOR
LSHIFT
RSHIFT
Digital Fortran 90コンパイラを使用しているユーザに対する注意事項ですが,ANSI/ISO Fortran 90標準に準拠したいくつかの機能がDigital Fortran 77では使用できません。 |
Digital Fortran 言語機能についての説明は,『Fortran language reference manual』を参照してください。
11.4.1.2 Digital Fortran 77 for OpenVMS VAX Systems 固有の言語機能
次の言語機能は Digital Fortran 77 for OpenVMS VAX Systems では使用できますが,Digital Fortran for OpenVMS Alphaではサポートされません。
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サブルーチンをサポートします。
既存のプログラムを移植する場合には,radix-50定数とIRAD50,RAD50,および R50ASCルーチンは,CHARACTERとして宣言したデータを使用して,ASCIIでエンコーディングしたデータに変更しなければなりません。
Digital Fortran 77 for OpenVMS VAX Systems の特定の機能は,Digital Fortran for OpenVMS Alpha では使用が制限されているか,またはまったく提供されません。
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ではサポートされません。
特定の例外の処理方法は,OpenVMS VAX システムとOpenVMS Alphaシステムとで異なります。正確な例外ハンドラ制御の要求には,/SYNCHRONOUS_EXCEPTIONS 修飾子を使用してください。
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とで異なる方法で解釈されます。
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は異なる動作をします。
CHARACTER*(*) FMT2 PARAMETER (FMT2='(10Habcdefghij)') READ (5, FMT2) WRITE (6, FMT2) |
READ (5, '(10Habcdefghij)') WRITE (6, '(10Habcdefghij)') |
Digital Fortran 77 for OpenVMS VAX Systems では,READ文によって読み込まれた値が大部分の出力になります。(FMT2は無視されます),Digital Fortran for OpenVMS Alphaでは,WRITE文の出力は"abcdefghij"になります (つまり,READ文によって読み込まれた値はWRITE文によって書き込まれる値に影響を与えません)。
前へ | 次へ | 目次 | 索引 |