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


第 1 章

Fortran の構成要素

この章では、Sun WorkShop FORTRAN 77 の基本的な構成要素を紹介しています。

規格への準拠

上記の規格は、標準化団体の責任によって改訂される場合があります。また、コンパイラが準拠すべき規格のバージョンに改訂または変更が生じた場合は、今後リリースされる Fortran コンパイラの機能と旧リリースとの互換性がなくなる可能性もあります。

拡張

標準の FORTRAN 77 言語では、再帰、ポインタ、倍精度複素数、4 倍精度実数、4 倍精度複素数などが拡張され、さらに NAMELISTDO WHILE、構造体、記録、共用体、マップ、変数書式などの多くの VAX とVMS Fortran 5.0 も拡張されています。マルチプロセッサ Fortran では、自動および明示的なループの並列化処理が行えます。

Sun FORTRAN 77 では VMS 拡張機能を使用することができるので、VAX システム用に書かれたプログラムを、Solaris で実行できるように簡単に移植することができます。

このマニュアルでは、Sun f77 に実装されている機能のうち、「規格への準拠」に当てはまらない機能については、特別な記号 (©) を付けて説明しています。

基本概念

Fortran の基本的な用語と概念は以下のとおりです。

文字セット

文字セットは、以下のもので構成されます。

以下の使用法と制約があります。

バックスラッシュ文字 (\) について、エスケープシーケンスかコンパイルオプション -xl が必要なことがあります。改行文字 (\n) については、エスケープシーケンスを使用します。表 2-3 を参照してください。

英字名

次の項目には英字名を付けることができます。

表 1-2   英字名が付く項目
定数
変数
配列
構造体 ©
記録 ©
関数 ©
名前付き共通ブロック
変数群 (ネームリスト) ©
主プログラム (Main programs)
初期値設定プログラム単位 (Block data)
サブルーチン (Subroutines)
関数
入口


英字名には、以下の制約があります。

例: デフォルトでは、次のどちらを用いても結果は同じです。

	ATAD = 1.0E-6 
	Atad = 1.0e-6 

例: 次のどの形式をとっても結果は同じです。

	IF ( X .LT. ATAD ) GO TO 9 
	IF ( X .LT. A TAD ) GO TO 9 
	IF(X.LT.ATAD)GOTO9 

次に英字名の例を示します。

表 1-3   英字名の例
有効 無効 無効の理由
X2 2X
先頭に数字がある
DELTA_TEMP _ _DELTA_TEMP
先頭に _ _がある (コンパイラ用)
Y$Dot Y|Dot
正しくない文字|がある


プログラム単位

プログラム単位は一連の文であり、END 文で終わります。各プログラム単位は、主プログラムか副プログラムのどちらかです。プログラムを実行可能にするには、主プログラムが必要です。

副プログラムには 3 種類あります。サブルーチン、関数、初期値設定副プログラムです。サブルーチンと関数は手続きと呼ばれ、他の手続きまたは主プログラムから呼び出されます。初期値設定副プログラムはローダーによって処理されます。

文は 1 つ以上のキーワード、英字名、定数、演算子で構成され、適切な句読文字が入ります。Fortran 77 では、どのキーワードも予約語ではありません。文関数と代入文を除いて、すべての文はキーワードで始まります。

実行文と非実行文

文には実行文と非実行文があります。

一般には、実行時の動作を指定する文を実行文といいます。そうでないものを非実行文といいます。

非実行文は型やサイズのような属性の指定、並び方や順序の規定、データの初期値の定義、編集命令の指定、文関数の定義、プログラム単位の分類、および入口の定義をします。一般に非実行文は、最初の実行文の実行前に解析されます。

Fortran 77 文

表 1-4   Fortran 77 文
ACCEPT*
ASSIGN*
代入*
AUTOMATIC
BACKSPACE*
BLOCK DATA
BYTE
CALL*
CHARACTER
CLOSE*
COMMON
COMPLEX
CONTINUE*
DATA
DECODE*
DIMENSION
DO*
DO WHILE*
DOUBLE COMPLEX
DOUBLE PRECISION
ELSE*
ELSE IF*
ENCODE*
END*
END DO*
END FILE*
END IF*
END MAP
END STRUCTURE
END UNION
ENTRY
EQUIVALENCE
EXTERNAL
FORMAT
FUNCTION
GOTO*
GOTO (割り当て型)*
GOTO (単純)*
IF (算術)*
IF (ブロック)*
IF (論理)*
IMPLICIT
INCLUDE
INQUIRE*
INTEGER
INTRINSIC
LOGICAL
MAP
NAMELIST
OPEN*
OPTIONS
PARAMETER
PAUSE*
POINTER
PRINT*
PRAGMA
PROGRAM
REAL
RECORD
RETURN*
REWIND*
SAVE
文関数
STATIC*
STOP*
STRUCTURE
SUBROUTINE
TYPE
UNION
VIRTUAL
VOLATILE
WRITE*


アスタリスク (*) は実行文を示します。

ソース行形式

文は 1 行以上で構成されます。第 1 行を開始行、それに続く行を継続行といいます。

ソース行には次の 2 つの形式があります。

標準固定フォーマット

標準固定フォーマットのソース行の定義は、次のとおりです。

タブフォーマット

タブフォーマットのソース行の定義は次のとおりです。©

フォーマットの混用

同じプログラム単位内では両方のフォーマットを混用できますが、同じ行内ではできません。

継続行

継続行のデフォルトの最大数は 99 (1 開始行と 99 の継続行) です。©

この行数を変えるには、-Nln オプションを使用します。©

拡張行

ソース行の長さを 132 文字に延ばすには -e オプションを使います。©
そうでない場合はデフォルトによって、f77 は 72 桁目より後の文字を無視します。
行の長さを延ばす例を示します。

demo% f77 -e prog.f

パディング

DATA 文中の以下に示すような行ではパディングは重要です。

C 1 2 3 4 5 6 7 C23456789012345678901234567890123456789012345678901234567890123456789012
DATA SIXTYH/60H
1 /

注釈と空白行

1 桁目に c、C、*、d、D! のいずれかがある行は注釈行です。-xld オプションが指定されていれば、Dd で始まる行はデバッグ行としてコンパイルされます。d、D! は規格外です。©

文欄のいずれかの桁に感嘆符 (!) を入れると、文字定数表現の中を除いて、その行の ! の後は全部注釈になります。©

すべて空白の行は注釈行です。

例: c、C、d、D、*、!、および空白の注釈

c	式解析の始まり
	CHARACTER S, STACK*80 
	COMMON /PRMS/ N, S, STACK 
	... 
*	式を解読: 
	IF ( S .GE. '0' .AND. S .LE. '9' ) THEN ! 行末コメント 
	CALL PUSH 	! スタックに保存。行末コメント
d	PRINT *, S	! デバッグコメントと行末コメント 
	ELSE 
	CALL TOLOWER ! 小文字の行末コメント 
	END IF 
D	PRINT *, N		!  デバッグコメントと行末コメント
	... 
C	終わり
!	式解析

指令

指令は注釈の特殊な形式で、コンパイラに情報を伝えます。© 指令はコンパイラ指令とも呼ばれます。指令には次の 2 種類があります。

f77 で使用可能な指令の詳細については、『Fortran ユーザーズガイド』および『Fortran プログラミングガイド』を参照してください。

一般的な指令

指令の一般形式は次のいずれかです。©

id は指令キーワードの識別子で、a は引数です。

構文

注釈中に指令を次のように入れることができます。

規則と制約

先頭の 8 文字の後、空白は無視され、Fortran のテキスト同様に、大文字小文字は同等になります。

注釈であるため、指令は継続できません。しかし、必要であれば続けて多くの C$PRAGMA 行を付けられます。

コメントが上記の構文の条件を満たしていると、コンパイラは認識された命令を 1 つ以上含むと考えます。そうでなければ、警告が出されます。

並列化指令

並列化指令は、その後に続く DO ループの並列化をコンパイラに実行させる明示的な要求です。並列化指令の構文は、一般指令の構文と異なります。

並列化指令は、コンパイル オプション -parallel または -explicitpar が使用された場合のみ認識されます。f77 で使用される並列化オプションについては、『Fortran プログラミングガイド』を参照してください。

並列化指令は、以下のような構文になります。

明示的並列化指令のキーワードには、以下のものがあります。

TASKCOMMON、DOALL、DOSERIAL、DOSERIAL*

各並列化指令のキーワードの後には、任意で独自の修飾子を入れることができます。

例 : 共用変数のループは次のように指定します。

C$PAR DOALL SHARED(yvalue)

並列化および並列化指令の詳細については、『Fortran プログラミングガイド』を参照してください。Fortran 並列化機能には、Sun WorkShop HPC ライセンスが必要です。


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