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-
© Copyright 2024 ExpyDoc