FORTRAN 77 言語リファレンス |
第 1 章
Fortran の構成要素
この章では、Sun WorkShop FORTRAN 77 の基本的な構成要素を紹介しています。
規格への準拠
f77
は、ANSI X3.9-1978 FORTRAN 規格およびこれに対応する国際標準化機構 (ISO) 1539-1980 規格に準拠しています。そのほか、FIPS 69-1、BS 6832、MIL-STD-1753 にも準拠しています。(これは現在の Fortran 規格ではありません。)- 両コンパイラの浮動小数点演算は、IEEE 754-1985 規格および国際規格の IEC 60559:1989 に準拠しています。
- SPARC プラットフォームでは、どちらのコンパイラも SPARC V8 と SPARC V9 の最適化活用機能をサポートすると同時に、UltraSPARCTM も実装しています。これらの機能は、『SPARC アーキテクチャマニュアル バージョン 8』(トッパン刊) およびバージョン 9 (ISBN 0-13-099227-5) に定義されています。
- このマニュアルでは、上に挙げた各種規格のバージョンに適合していることを「規格」と呼び、これらの規格の範囲外の機能を「規格外」または「拡張機能」と呼んでいます。
上記の規格は、標準化団体の責任によって改訂される場合があります。また、コンパイラが準拠すべき規格のバージョンに改訂または変更が生じた場合は、今後リリースされる Fortran コンパイラの機能と旧リリースとの互換性がなくなる可能性もあります。
拡張
標準の FORTRAN 77 言語では、再帰、ポインタ、倍精度複素数、4 倍精度実数、4 倍精度複素数などが拡張され、さらに
NAMELIST
、DO WHILE
、構造体、記録、共用体、マップ、変数書式などの多くの VAX とVMS Fortran 5.0 も拡張されています。マルチプロセッサ Fortran では、自動および明示的なループの並列化処理が行えます。Sun FORTRAN 77 では VMS 拡張機能を使用することができるので、VAX システム用に書かれたプログラムを、Solaris で実行できるように簡単に移植することができます。
このマニュアルでは、Sun
f77
に実装されている機能のうち、「規格への準拠」に当てはまらない機能については、特別な記号 (©) を付けて説明しています。基本概念
- プログラムは、1 つ以上のプログラム単位で構成されます。
- プログラム単位は、文の連続で、
END
で終わります。- 文は、0 個以上のキーワード、英字名、定数、文番号、演算子、特殊文字で構成されます。
- 各キーワード、英字名、定数、および演算子は、Fortran 文字セットの 1 つ以上の文字から構成されます。
- 文字定数には、任意の ASCII 文字を使用できます。
- 文番号は、1 から 5 桁の数字で構成されますが、ゼロ以外の数字が最低 1 つは必要です。
文字セット
- 大文字の
A
からZ
、小文字のa
からz
- 数字の
0
から9
- 以下の表の特殊文字
- 大文字小文字は、Fortran の文のキーワードや英字名では、区別されません。
f77
の-U
オプションを使用すると、英字名の大小文字は区別されます。©- 制御文字は文字セットには含まれませんが、データとしては大部分が許可されます。ただし Control-A、Control-B、Control-C の 3 文字はデータとして使用できません。これらの文字は、
char()
関数を使用するなどの方法でプログラム中に取り入れることはできます。©- 文字列では、任意の ASCII 文字が文字データとして有効です。©
- バックスラッシュ文字 (
\
) について、エスケープシーケンスかコンパイルオプション-xl
が必要なことがあります。改行文字 (\n
) については、エスケープシーケンスを使用します。表 2-3 を参照してください。英字名
次の項目には英字名を付けることができます。
表 1-2 英字名が付く項目 定数
変数
配列
構造体 ©
記録 ©
関数 ©
名前付き共通ブロック
変数群 (ネームリスト) ©
主プログラム (Main programs)
初期値設定プログラム単位 (Block data)
サブルーチン (Subroutines)
関数
入口
- 文字数に制限はありません。© 標準は 6 です。
- アルファベット、数字、ドル記号
($)
、下線文字 ( _ ) で構成されます。$
と_
は規格外です。©- 通常、先頭はアルファベットです。数字やドル記号 (
$
) で始めることはできません。下線 (_
) で始めることはできますが、Fortran およびシステムのライブラリで使用されている名前と重複する可能性があるので、使用しない方が安全です。
注 - 2 本の下線で始まる手続き名は、コンパイラ内部で特別にサポートされている関数とみなされます。先頭に 2 本の下線を使用して関数やサブルーチンを命名すること
(_ _xfunc など)は避けてください。コンパイラの使用方法と重複してしまいます。©
- 大小文字を区別しません。コンパイラが全部小文字に変換します。
f77
のコマンド行の-U
オプションを使用すると、デフォルトが変更されてソースファイルに使われている大文字はそのままになります。©
- スペースには意味がありません。
表 1-3 英字名の例 X2
2X
先頭に数字がある
DELTA_TEMP
_ _ DELTA_TEMP
先頭に _ _がある (コンパイラ用)
Y$Dot
Y|Dot
正しくない文字|がある
- 一般的には、1 つのプログラム単位の中で、別の項目に同じ英字名を付けることはできません。
- 変数または配列には、共通ブロックと同じ名前を付けることができます。
- 記録欄には、構造体と同じ名前を付けることができます。©
- 記録欄には、その構造体の別のレベルにある欄と同じ名前を付けることができます。©
- プログラム単位が 2 つ以上あるプログラム全体で、以下のうちの 2 つに同じ名前を使用することはできません。
プログラム単位
プログラム単位は一連の文であり、
END
文で終わります。各プログラム単位は、主プログラムか副プログラムのどちらかです。プログラムを実行可能にするには、主プログラムが必要です。副プログラムには 3 種類あります。サブルーチン、関数、初期値設定副プログラムです。サブルーチンと関数は手続きと呼ばれ、他の手続きまたは主プログラムから呼び出されます。初期値設定副プログラムはローダーによって処理されます。
文
文は 1 つ以上のキーワード、英字名、定数、演算子で構成され、適切な句読文字が入ります。Fortran 77 では、どのキーワードも予約語ではありません。文関数と代入文を除いて、すべての文はキーワードで始まります。
実行文と非実行文
一般には、実行時の動作を指定する文を実行文といいます。そうでないものを非実行文といいます。
非実行文は型やサイズのような属性の指定、並び方や順序の規定、データの初期値の定義、編集命令の指定、文関数の定義、プログラム単位の分類、および入口の定義をします。一般に非実行文は、最初の実行文の実行前に解析されます。
Fortran 77 文
ソース行形式
文は 1 行以上で構成されます。第 1 行を開始行、それに続く行を継続行といいます。
標準固定フォーマット
- 各行の最初の 72 桁が有効です。「拡張行」を参照してください。
- 最初の 5 桁は空白か、または数値文番号です。
- 6 桁目に空白もゼロもない行が継続行です。
- 短い行はパディングされて、72 文字になります。
- 長い行は短く切られます。「拡張行」を参照してください。
タブフォーマット
- 第 1 桁から第 6 桁のどこかにタブがあるか、または第 1 桁にアンパサンドがあると、タブフォーマットのソース行になります。
- タブが最初の非空白文字の場合、タブに続くテキストは、7 桁目から始まるとみなされます。
- タブの前に注釈指示文字または文番号を入れることができます。
- 第 1 桁にアンパサンド (
&
) があるか、最初のタブの後にゼロ以外の数字がある行が継続行です。フォーマットの混用
同じプログラム単位内では両方のフォーマットを混用できますが、同じ行内ではできません。
継続行
継続行のデフォルトの最大数は 99 (1 開始行と 99 の継続行) です。©
拡張行
ソース行の長さを 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
オプションが指定されていれば、D
かd
で始まる行はデバッグ行としてコンパイルされます。d、D
、!
は規格外です。©文欄のいずれかの桁に感嘆符 (
!
) を入れると、文字定数表現の中を除いて、その行の!
の後は全部注釈になります。©
指令
指令は注釈の特殊な形式で、コンパイラに情報を伝えます。© 指令はコンパイラ指令とも呼ばれます。指令には次の 2 種類があります。
f77
で使用可能な指令の詳細については、『Fortran ユーザーズガイド』および『Fortran プログラミングガイド』を参照してください。一般的な指令
構文
- 第 1 桁に注釈指示文字
c、C、!、*
のいずれかを入れます。- 任意の桁に注釈指示文字
!
を入れます。- 続けて
$PRAGMA
の 7 文字を入れます。空白は入れられませんが、大小文字の使用は自由です。規則と制約
先頭の 8 文字の後、空白は無視され、Fortran のテキスト同様に、大文字小文字は同等になります。
注釈であるため、指令は継続できません。しかし、必要であれば続けて多くの
C$PRAGMA
行を付けられます。コメントが上記の構文の条件を満たしていると、コンパイラは認識された命令を 1 つ以上含むと考えます。そうでなければ、警告が出されます。
並列化指令
並列化指令は、その後に続く DO ループの並列化をコンパイラに実行させる明示的な要求です。並列化指令の構文は、一般指令の構文と異なります。
並列化指令は、コンパイル オプション
-parallel
または-explicitpar
が使用された場合のみ認識されます。f77
で使用される並列化オプションについては、『Fortran プログラミングガイド』を参照してください。
- 先頭文字は 1 桁目に入ります。
- 先頭文字には、
c
、C
、*
、!
のいずれかが入ります。- 続けて
$PAR
の 4 文字が入ります。空白は使用できませんが、大小文字の使用は自由です。- 次に、空白で区切った指令キーワードとオプションが入ります。
TASKCOMMON、DOALL、DOSERIAL、DOSERIAL*
各並列化指令のキーワードの後には、任意で独自の修飾子を入れることができます。
C$PAR DOALL SHARED(yvalue)
並列化および並列化指令の詳細については、『Fortran プログラミングガイド』を参照してください。Fortran 並列化機能には、Sun WorkShop HPC ライセンスが必要です。
サン・マイクロシステムズ株式会社 Copyright information. All rights reserved. |
ホーム | 目次 | 前ページへ | 次ページへ | 索引 |