FORTRAN 77文法とFORTRAN GE/HE文法との相違点について

NAOSITE: Nagasaki University's Academic Output SITE
Title
FORTRAN 77文法とFORTRAN GE/HE文法との相違点について
Author(s)
野崎, 剛一
Citation
センターレポート, 1, pp.101-108; 1980
Issue Date
1980-12
URL
http://hdl.handle.net/10069/25167
Right
This document is downloaded at: 2015-01-31T16:53:30Z
http://naosite.lb.nagasaki-u.ac.jp
量豊里豊
FORTRAN7
7
文法と FORTRAN
GE/HE
文法との相違点について
情報処理センタ一
野崎剛一
1
. FORTRAN77について
FACOM OSIVI
F
4 FORTRAN77標 準 型 は 新 し 心 概 念 に 基 づ く 言 語 仕 様 を 持 つ FORTRAN
システムであり,高速翻訳,デバッグ作業,一般パッチジョプ,会話型ジョプなどの広範朗の用
途をカバーする標準 FORTRANシステムである。乙のプログラムは,新しい国際規格 rANS
FORTRAN X3.9ー 1978JI
C準拠し,かっ FORTRAN GE/HEの言語機能を包含し,更に
いくつかの機能を拡張している。これらの関係を図示すると以下の通りである。
また,原始プログラムの組込み,新しいディバッグ用オプション,動的なデータセット割当て
などの豊富なサポート機能をもっている。
そ乙で,近い将来 FORTRANというと. FORTRAN7
7を示す乙とになると思うので富士通提
供の資料等を参考 ICFORTRAN7
7の特長を簡単に解説する。
なお,詳細な点については. FACOMOSIVFORTRAN7
7文法書を参照されたい。
2
. FORTRAN77の拡張機能
OSIVFORTRAN77の言語仕様は. OSIVFORTRAN
l
V (GE/HE用)から以下の機能が拡張
されている。
文字型の変数及び関数の定義ができ,乙れにより文字部分列が導入され,
ζ
れらの組合せで
文字式や文字関係式が繕成できる。
配列宣言における寸法宣言子は,整数式である寸法の下限及び上限を指定できる。
-101-
亙亙亙豆
・ 式の使用場所の増加(出力並び) ,複素数データの比較し
EQ.及 び .NE.),論理演算
子 (.EQV.及 び .NEQV.)の追加がある。
手続き副プログラムの呼出し後のデータの値を保障するための SAVE
文がある 0
. 定数に対して名前を付けるための PARAMETER
文がある。
F文
, ELSEI
F文
, EL
条件に従って複数個の実行文を制御するための文として,ブロック I
SE文及び ENDI
F文がある。
•
DO文の制御変数は整数型,実数型,倍精度実数型及び 4倍精度実数型の変数名が許される。
また,各パラメタとしては,整数型,実数型,倍精度実数型及び 4倍精度実数型の算術式が許
される。
データセットの存在,創成及び削除,並びにデータセットとデータセット識別番号の結合な
どの新しい入出力の概念が導入され,入出力処理の機能が大幅に拡張されている。また,出力
並びに式を書く乙とができる。
書式仕様は文字式で与える乙とができる。また,新しい編集記述子として,符号編集,空白
制御及びコロン編集などがあり,他の編集記述子も機能拡張されている。
新しい入出力文として,内部データセット入出力文, OPEN
文
, CLOSE
文及び INQUIRE文
がある。
組込み関数はすべて実引数として指定でき,その場合には INTRINSIC
文で指定する。
引数のない文関数及び関数副プログラムの定義と引用ができる。
・ 算術式におけるべき乗演算の底とべき指数の型の組み合わせは,算術型なら何でも許される。
拡張された DO
文として, DOWHILE
文及び DOUNTIL文がある。
3
. コンパイラの機能
OSIV/F4FORTRAN77コンノ fイラシステムは前述の言語の面からだけでなく,プロセッサの
函からも,多様なユーザのニーズに応じた使い易いシステムとするために,各種の機能がサポー
トされている。
FORTRAN77コンパイラシステムは,既存の FORTRANGE及びHEのサポート機能を包含し,
さらにいくつかの機能を拡張している。
次の表 l
とFORTRAN7
7コンパイラのサポート機能を示す。
-102-
豊重量並
機能項目
機
能
要
概
自由形式の原始プログラムが扱える。
原始プログラム
の入力
GE HE 77
O
×
O
O
×
O
備
考
(FREEオプション)
仮想記憶領域上の原始プログラムを入力す
(
INLISTオプション)
る乙とができる。
原始プログラムを 1文づっ構文検査しなが
O O O
ら作成する乙とができる。
(シンタックスチェッカ)
データセット内のメンバを原始プログラム
中ζ
l組込むととができる。
×
×
O
(INCLUDE機能)
DO文で構成されるループ内の配列要素の
O FORTRAN77の
O
目的プログラム ヨ
l
用に関して,ループ内で変化しない演算を
の最適化
ループ外に出したり,ループ内で使用頻度の
OPT 場合には部分列の
(
1
)
引用も対象となる。
高いデータをレジスタ上に割り付けたりして,
ループ内の実行命令の最適化を図る。
上記の最適化はもち論,原始プログラムの
×
O O
OPTOPT
論理構造を解析しレープ構造やデータの使
(
2
)
用頻度に基づいて最大限の最適化を行うもの
(
2
)
.
で,非常に実行効率の良いオブジェクトモジ
ュ-)レが得られる。
オブジェクトモジュールを仮想記憶域内に
O
×
O
GOオプション 作り,ローターによりロードモジュールの作成
と実行を直ちに行うものであり. 1ジョブス
.
テップで翻訳から実行まで行うので,大幅な
効率向上となる。
リエントラント
プログラム
自動精度拡張
機能
再入力可能な FORTRANプログラ.ムを簡単
に作成できる。
O O O
(RENTオプション)
翻訳時のオプションの指不により,原始プ
O O O
ログラムで指定した型の定数,変数,配列及
び関数を一段高い型の定数,変数,配列及び
関数として翻訳する構能である。
ALENCE文に
上記の機能と,更に EQUIV
よるメモリ共用関係の是正を指定できる。
」
×
O O
。
δ
nU
量宣豊塾
機能項目
機
能
GE HE 77
要
概
自動精度縮少
実数型及び複素数型の演算は,数学でいう
機能
実数及び複素数の演算を近似するもので,修
(PRオプション)
正演算どとに丸め誤差が入り最終結果の精度
O O
O
O O
O
備
考
が問題となる乙とがある。演算精度を微小変
動すれば,結果もそれにつれて変動すると考
えられ,丸め誤差の影響を知る乙とができる。
との機能は通常の精度から 0-15ビット精度
を縮少し
2回以上実行して丸め誤差の影響
を知るものである。
ドキュメンテー
ション
相互参照表 (XREF) .マップリスト (M
AP) 及 び 統 計 情 報 な ど の 印 刷 情 報 を 合 わ せ
て,優れたドキュメントが得られ,プログラ
ムの保守性を高める乙とができる。
原始プログラムの論理構造を明確に表現し
×
O
O OPT(2)の場合だけ
たリストを得る乙とができる。
(FORMATオプション)
言語間結合
(
L
I
Lオプ、ンョン)
デバッグ機能
lI
及 び COBOLな ど の 他 言
アセンブラ. PL
O O
O
O
×
O
ム
×
O GEは ARGCHKオ
語プログラムとの結合を行うことができる。
デバッグ文により添字式の検査,値の代入
等デバッグ作業が柔軟に行える。
DEBUGオプションの指定により,上記の
機能のほかに,実引数と仮引数の対応の検査
プションにより引
が行える。
数の個数の対応だ
けを検査する。
TESTオ プ シ ョ ン の 指 定 に よ り
y
会話形式
O
×
O
O O
O
で動的なデバッグ作業が行える。
(FORTRANインタラクティプデバッガ)
エラーモニタ
実行時に検出される各種のエラーに対して
最大限の標準修正を行う。またユーザによる
独自のエラー修正も簡単に行える。
一 104-
E宣車亙
機
機能項目
動的なデータセ
ットの割当て
能
概
要
ジョプの実行中に動的にデータセットを割
GE HE 77
×
×
備
考
O
当てる乙とができる。
翻訳時には,コンパイラのための DD文と
して SYSINだけの定義でコンパイラは動作可
能である。
実行時には,必要になった時点でデータセ
ットを割当てたり,不要になった時点で解放
するなど,プログラム内で容易に各種データ
セットの生成及び削除を行うととができる。
コンパイラの起動から目的プログラムの実
O A O HE では実行まで
行までをプロンプタを介して行うコマンドが
を 1コマンドで行
用意されている。
えない。
TSS
実行時に入力データの促進や誤ったデータ
O O O
入力 ζ
i対する再入力などを行える。
コンパイラ,会話プロセッサ及びライプラ
リエントラント
なシステムプロ
グラム
O
リはすべてリエ y トラントなプログラムとな
っている。従 ρ てコンパイラをリンクパック
~
O HE コンノ fイラは
リエントラント構
. 造でない。
エリアに置けば,複数ジョブ聞における共用
が可能になり,システムのスループットの向
上が図れる。
0はサポートされているととを示す。
備考1.
×はサポートされていないととを示す。
.
ムは条件付きでサポートされている乙とを示す。
4
. 文法の相違点
ζ ζ では,
FORTRANGE又は HEで作られた FORTRANプログラムを, FORTRAN7
7 コン
パイラシステムで実行する場合の注意事項について述べる。
1
.1 原始プログラム
∞M
伊A
OS/IV FORTRAN文法書Jで規定される言語仕様にのっとって記述されたl
プログラムは,ほとんどのものが何の変更もしないで, FORTRAN7
7コンパイラ
ORTRAN
システムで実行することができるが,以下の項目を含むプログラム ζ
l対しては,原始プログ
ラムの修正が必要となる。
(
1
) 基本外部関数名が指定された EXTERNAL文
基本外部関数名がアンパサンドなしで EXTERNAL文に指定された場合,すなわち基本
1
0
5-
豆査重重
外部関数名を実引数として使用したい場合 Kは,その関数名を INTRINSIC
文で指定するよ
うに修正する必要がある。
また,基本外部関数名がアンパサンドっきで EXTERNAL文に指定された場合には,そ
の関数名をアンパサンドなしで EXTERNAL
文に指定するように修正する必要がある。
(
2
) DOループの繰返し回数
FORTRANGE及び HEでは. DOループの繰返し回数rは次の式で求めている。
ム
)
r=MAX((ffi2-f
f
i
l)
/
f
f
i
3+1
.
(
ζ 乙で. f
f
i
l
.f
f
i
2• f
f
i
3 は各々初期値,終値,増分値ノマラメタである。)
乙れは,との DO
文で定義される DOの範聞が 1回は必ず実行される
ζ
とを意味している。
乙れに対して. FORTRAN7
7での繰返し回数 rI は次の式で求めている。
rI = MAXC
INT(
(
f
f
i
2-f
f
i
l+f
f
i
3)I
f
f
i
3
)•
Q
)
すなわち. FORTRAN7
7では DOの範囲が 1回も実行されない場合があるので,そのよ
うな場合には原始プログラムの修正が必要となる。
(
3
) 単純並びに括孤でくくった入出力並び
FORTRAN77では,括孤でくくられた単純並びを入出力並びとして指定する乙とはで
きないので,乙の場合には,原始プログラムの修正が必要となる。例えば,
WRITE(6.100) (A.B• C)
は,次のように修正する必要がある。
WRITE(6• 100
) A • B• C
(
4
) 空白欄記述子
FORTRANNの空白欄記述子 (nX) は. FORTRAN77では位置設定編集記述子と呼ば
れ,出力における書式仕様の要素として使用された場合には,その動作が FORTRANNと
異なる。
FORTRANでは. nXはn個の空白を FORTRAN記録に挿入するが. FORTRAN77では,
FORTRAN記録の文字の位置を n文字だけ進んだ位置に設定するだけで,空白は挿入され
なし、。
ただし. FORTRAN7
7においても最初に用意される FORTRAN記録は,空白で埋めら
れているので,一般の使用法では問題はなく,次のような場合にだけ FORTRANNと異な
る
。
出力の書式仕様が次の形式の場合ζ
l,
FORMAT(5HwFFFF• 14• T2• 4X• 12
)
FORTRAN77では,】 FFFFjjii
/iiはI41C対応する変数7
¥
FORTRANN では, u WL...J山I
j
j
i
i
j
jは12
1
ζ対応する変数
となる。
!
¥の値とする。/
-106-
藍査璽亙
ζ
の例のような使用をしているプログラムの場合には, nXをn個の空白文字に修正変吏
する必要がある。
(
5
) 総称名としての REAL及 びCMPLX
REAL及ひ'CMPLXの組込み関数名を総称名として使用している場合, FORTRANNと
FORTRAN77では,選択される組込関数の機能が異なるので,固有名による組込み関数
の引用に修正する必要がある。
(
6
) FORTRAN77互換仕様
FORTRAN77互換仕様とは, FORTRANNでは標準仕様(文法書で規定)の機能では
あるが, FORTRAN7
7の新しい機能で代替できるので, FORTRAN77の文法書では規定
されていない機能の乙とである。
乙れらの機能を使用すると, FORTRAN77コンパイラは響告のメッセージを出力し,
原始プログラムの修正を促す。乙れは,今後の原始プログラムのポータビリティを考えた
場合ζ
l ,できれば原始プログラムを修正した方が望ましいと考えるからである。
FORTRAN77互換仕様には,以下のものがある。
a) DEFINEFILE
文と直接入出力文
DEFINEFILEを削除して,直接入出力文は FORTRAN77の新しい形式に変換する必
要がある。
b) GENERIC文
GENERIC文がなくても,総称名の扱いとなる。
c) 文字列の比較と代入文
新機能である文字型を使用して,比較と代入を行う乙とができる。
d) ENCODE/DECODE文
新機能である内部データセット入出力文に変換できる。
(
7
)
FORTRAN77でサポートされない機能
FORTRANNで互換仕様(文法書で規定されていない)の機能の中で,以下のものは F
-
ORTRAN77ではサポートされない。
• 2バイトの論理型
• DOUBLE INTEGER及 び DOUBLE PRECISION COMPLEXの型指定
.I=&nの形式の文番号代入文
• ASSIGN文で指定する 2バイトの整数型の変数名
・割当て形 GOTO文で指定する 2バイトの整数型の変数名
F文
.二分岐論理 I
• 2バイトの整数型の変数名である書式識別子
• UNLOAD文
-107-
亙査董韮
-DCLOG• DCEXP• DCSQRT• DCSIN• DCCOS• COT• DCOT• DCABS• LABS •
DMAXO• LMAX0• LMAX1• DMIN0• LMIN0• LMIN1• LMOD• LINT• LDINT.
IDFIX• LFIX• LDFIX• LSIGN• LDIM• ISNGL• IDBLEの基本外部関数
-TYPE文
1
.2 オブジェクトモジュー Jレ
FORTRAN77コンパイラで作られたオプジェクトモジュールと FORTRANGE又は HE
コンパイラで作られたオプジェクトモジュールの結合は,ライブラリとして FORTRAN77
ライブラリを使用すれば,原始プログラムに何の手も加えずにできる。
ただし,乙のような使用法をする場合には. FORTRAN77のシステム編集時に. FORT-
RAN77インタフェースルーチンを組込む必要がある。(詳細は
Iシステム編集の方法」
を参照されたい。
1
.3 オプション
FORTRAN GE/HEコンパイラのオプションの中で,以下のものは FORTRAN77ではサ
ポートされない。
a) ISN/NOISN
MAP/NOMAPで代替できる。
b) STATIS/NOSTATIS
PRINTINOPRINTで代替できる。
c) DECK/NODECK
OBJECT/NOOBJECTで代替できる。
d) NAME (プログラム名)
PROGRAM文で代替できる。
e) DPROF/NODPROF
FORTUNEを使用する乙とにより代替できる。
f) DOV
AL (0I1I
2I
3)
言語仕様の相違から意味がない。
g) INLOG2/NOINLOG2
言語仕様の相違から意味がない。
h) DOUBLE/NODOUBLE.QUADINOQUAD
AUTODBLで代替できる。
i) J
ISF
言語仕様の相違から意味がない。
108-