FORTRAN 77 言語リファレンス ホーム目次前ページへ次ページへ索引


付録 D

VMS 言語拡張

この付録では Fortran 77 がサポートする VMS 言語拡張について説明します。これらの拡張はすべて規格外です。 ©

背景

この Fortran コンパイラには、VMS から Solaris 環境への Fortran 77 プログラムの移植を簡単にするために VMS 拡張が含まれています。このコンパイラは VMS Fortran とほぼ完全な互換性を持っています。これらの拡張は dbxf77 に含まれています。

サンの Fortran の VMS 言語機能

以下のリストは、f77 に含まれる VMS 機能の要約です。詳細は本書の他の部分で説明します。

宣言文における変数の初期化は許可されます。例を次に示します。

	CHARACTER*10 NAME /'Nell'/ 

例 : f77 が不正な実数式を整数に変換する場合

  • 選択 RETURN
  • 次元宣言子および配列記述子
  • 部分列選択子
  • 計算形 GO TO
  • 論理装置番号、記録番号、記録長
例 : 定数 ― 2 進 (B)、8 進 (O)、16 進 (X または Z)

	DATA N1 /B'0011111'/, N2/O'37'/, N3/X'1f'/, N4/Z'1f'/ 

例 : FUNCTION というワードよりも関数名としてのサイズ

	INTEGER FUNCTION FCN*2 ( A, B, C ) 

例 : 記録指定子のための規格外の形式

	READ ( K ' N ) LIST 

上記の形式は次のように扱われます。

	READ ( UNIT=K, REC=N ) LIST

論理装置番号は K であり、記録数は N です。
6 は次のように変数 N に置き換えることができます。

1 	FORMAT( 3F<N>.1 ) 

-xl または -vax=spec を必要とする VMS 機能

特殊なオプションを使用しなくても、ほとんどの VMS 機能は自動的に得られますが、f77 コマンド行に -xl オプションを追加しなければならないものもあります。

一般に、ソース文が VMS か f77 のどちらの動作様式としても解釈可能で、ユーザーが VMS の動作様式を希望する場合、この -xl オプションが必要です。この場合、-xl オプションはコンパイラにそれを VMS Fortran として解釈するよう強制します。

これら VMS 拡張機能を個々に指定することができる -vax=spec オプションもあります。詳細は、『Fortran ユーザーズガイド』を参照してください。

-xl[d] オプションを必要とする機能の要約

以下の機能を使用するためには -xl[d] オプションが必要です。

-xl[d] オプションを必要とする機能の詳細

詳細は次のとおりです。

-xl[d] オプションを設定しなかった場合、OPEN オプション RECL=n の引数 n は、記録サイズのために使用するバイト数であると想定されます。
-xl[d] オプションを設定した場合、OPEN オプション RECL=n の引数 n は、ワード数であると想定されるので、コンパイラは n*4 を記録サイズのためのバイト数として使用します。
-xl[d] オプションを設定した場合、ファイルが書式付きか、書式付きでないかをコンパイラが判断できないと、記録サイズを調整する必要があるかもしれないという警告メッセージが出されます。これは、情報が可変文字列で渡される場合に起こる可能性があります。
INQUIRE 文により返される記録サイズはコンパイラにより調整されません。つまり、INQUIRE は常にバイト数を返します。
これらの記録サイズは、書式なし直接探査ファイルにだけ適用されるという点に注意してください。
-xl[d] オプションを設定した場合、コンパイラは、環境変数 LOGICALNAMEMAPPINGを見つけ、論理名と UNIX パス名との間のマッピングを定義していることが分かれば、INCLUDE 文において VMS 論理ファイル名を解釈します。
環境変数を次の形式の文字列に設定します。

	"lname1=path1; lname2=path2; ..."

VMS スタイルの論理ファイル名の規則は、以下のとおりです。

  • 各々の lname は論理名であり、各々の path1、path2 などはディレクトリのパス名です (後続 / はなし)。
  • コンパイラはこのような文字列を構文解析するとき、すべての空白を無視します。
  • コンパイラは INCLUDE 文におけるファイル名から後続の /[no]list を除去します。
  • ファイル名における論理名は VMS ファイル名の最初の : で区切られます。
  • コンパイラは lname1:file から path1/file 形式へファイル名を変換します。
  • 論理名については、大文字/小文字が区別されます。INCLUDE 文で LOGICALNAMEMAPPING に指定されていない論理名は、そのファイル名が変更せずにそのまま使用されます。
-xl[d] コンパイラオプションを設定した場合、VMS Fortran の 8 進整定数はその 10 進形式として扱われます。
例 : VMS の 8 進整定数

	JCOUNT = ICOUNT + "703 

上記の文は次のように扱われます。

	JCOUNT = ICOUNT + 451

-xl[d] オプションが設定されていない場合、"703 はエラーになります。
-xl[d] が設定されている場合、VMS Fortran の "703 という表記法は、整数の 8 進定数からその整数の 10 進定数 (この場合は 451) に変換するよう f77 にシグナルを送ります。VMS Fortran では "703 は文字定数の最初に使用することはできないという点に注意してください。VMS Fortran 文字定数は引用符ではなく、アポストロフィで区切られるからです。
-xl[d] オプションが設定されている場合、文字列におけるバックスラッシュは通常の文字として、設定されていない場合は、エスケープ文字として扱われます。
-xl[d] オプションが設定されていれば、代替 PARAMETER 文の構文は許可されます。
例 : PARAMETER 文の VMS 代替形式は括弧を省略します。

	PARAMETER FLAG1 = .TRUE. 

-xld オプションが設定されているかどうかによって、コンパイラは、注釈行あるいは Fortran 文としてデバッグ行を解釈します。-xld オプションが設定されている場合は、コンパイルされます。設定されていなければ、それらは注釈になります。
例 : デバッグ行

	REAL A(5) / 5.0, 6.0, 7.0, 8.0, 9.0 / 
	DO I = 1, 5 
	X = A(I)**2 
D 	PRINT *, I, X 
	END DO 
	PRINT *, '終了' 
	END

-xld を付けると、上記の例では IX が出力されます。-xld がなければ、それらは出力されません。
ユーザーのプログラムで VMS 構造体を使用する方法が詳しくわかっている場合は、この機能を使用してください。C と構造体を共有する必要がある場合は、デフォルトを使用します。-xl は使用しません。

サポートされていない VMS Fortran

ほとんどの VMS Fortran 拡張は f77 コンパイラに組み込まれています。コンパイラはソースファイルのサポートされていない文について標準エラーにメッセージを出力します。

以下に、サポートされていない VMS 文を列挙します。

書式付き数値入力では、埋め込み空白および後続空白が無視されます。対応する VMS デフォルトは、それらの空白をゼロとして扱います。


サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.
ホーム   |   目次   |   前ページへ   |   次ページへ   |   索引