インターネット&PC120%活用:PC活用編

FORTRANの入手

おじさんが学生の頃、はやっていた言語がFORTRAN。計算機センターでのコンピューター実習は
FORTRANをやった。今はどうなんだろう。特殊な用途でない限り使うこともないのかなあ。
FORTRANは古い言語だから(登場は1957年)、ある点で約束が堅苦しい気がする。なんせ、コーディングの書式が
紙テープを意識した規則だったりするから、Visual Basicなんかやってる人からみると、中学校の
生徒手帳とかにあった、校則を思い出すかもしれない。

おじさんはFM-8でCP/Mを走らせて、そこでFORTRAN80を使ったりしていたが(ずいぶん古い話
ですが)、今でもパソコン用のFORTRANてあるのかな。時々、FORTRANのパッケージ商品を見かけた
こともあったような気もするが。基本的にパソコンでFORTRANを使う必要はないからな。

さて、このページにわざわざ来た人は、何らかの目的があってFORTRANを探しに来た人だと思いますので、
(どういう理由かは知りませんが)無料でGETできるFORTRANについて少し紹介しておきましょう。
無料でGetできるFORTRANは探すと結構あるんじゃないでしょうか。おじさんの
LINK集のコンパイラ関連の
ページから当たれば、いくつか見つかるでしょう。
さしあたり、おじさんはBC FORTRAN(MS-DOS用)と Salford FTN77 Personalを使用してます。
使用していると言うほど使ってはいませんが。

1 BC Fortran77

A.Koestli氏によるフリーのFORTRAN。MS-DOS用です。(DOS窓でも動作する)
使用説明のTEXTは英語と独語のものがついているので、辞書片手に読んで下さい。
おじさんは、Nifty Serveから(FGALAPだったかな。若い人はNifty serveなんて知らないでしょうけど)ダウンロードしましたが、
探せばインターネット上でも見つかります。

使用方法は簡単です。全ファイルを同じディレクトリに入れておくのが、簡単かと思います。
BCRTSY.EXE というランタイムプログラムがありますので、まずこれを起動してメモリに常駐させます。
コンパイラはBCF.EXE です。
BCF [-Option...] File... で、拡張子が.Bのオブジェクトファイルが生成されます。
リンカはBCS.EXE です。
BCL [-Options...] File... で、実行ファイルが生成されます。
標準関数とI/Oルーチンのライブラリとして lib.b が用意されていますので、いっしょにリンクして下さい。
BCL myfile.b lib.b
のように記述します。
詳細は英文か独文の説明TEXTを読んで下さい。
ちょっとFORTRANの雰囲気を味わうにはいいかと思います。

若干、BUGがあります。おじさんのGETしたバージョンVer1.3b では以下のようなBUGが見つかっています。
DO ... CONTINUE のループの中で
(1)実数の演算をすると無限ループに入る。
(2)READ, WRITE で出力すると無限ループに入る
以上については、 IF 文 と GOTO でループさせねばならない

【実行例】

D:\BCF7713B>type gcm.f
       INTEGER I,J,K
       WRITE(5,100)
100     FORMAT('FORTRAN **最大公約数を求める**')
       WRITE(5,110)
110     FORMAT('2つの整数を ,で区切って入力して下さい')
       READ(6,*)I,J
10      WRITE(5,200)I,J
200     FORMAT(2(I6,2X))
       K=MOD(I,J)
       I=J
       J=K
       IF (K .NE. 0) GOTO 10
       WRITE(5,300)I
300     FORMAT('最大公約数 ',I6)
       END

D:\BCF7713B>bcrtsy
D:\BCF7713B>bcf gcm.f
BC-FORTRAN77 Compiler 1.3b1711, (c)1990 Andre Koestli, Stuttgart  
File gcm.f


D:\BCF7713B>bcl gcm.b lib.b
BC-Linker 1.3b1711, (c)1990 Andre Koestli, Stuttgart
gcm.b 1060
lib.b 71948
2 Commons 1600
79 Module 72940
frei 298564
gcm.exe 73968


D:\BCF7713B>gcm
FORTRAN **最大公約数を求める**
2つの整数を ,で区切って入力して下さい
7728,468
7728 468
468 240
240 228
228 12
最大公約数 12
最大公約数を求めるプログラム  
ユークリッド互除法による















ランタイムの起動
コンパイル




リンク






実行ファイルの生成


実行








2 Salford FTN77
Salford 社のFORTRAN。Personal版は個人利用なら無料でダウンロードできます。
*Salford FTN77の後継バージョンがSilverSoftからFTN95という名前になってダウンロード可能です(2010年)。
Salford FTN77も説明は全て英語です。DOS窓で使えます。
ftn77 がコンパイラです。リンカはslink です。
ftn77.opt というのがConfigurationファイルで、コンパイラはここに記述されたオプションを見て
コンパイルを実行します。
デフォルトのままでは
ftn77 filename
により、オブジェクトファイルが生成されます。ついで
slink filename.obj
で実行ファイルが生成されます
ftn77.opt の中の noLink というオプションを削除すると
ftn77 filename
だけで、コンパイル後、リンカが自動起動されて、実行ファイルが生成されます。
詳しくはHELPファイル等を見て下さい。
使いやすいFORTRANです。

【実行例】


C:\ftn77>type max.f
       DIMENSION k(10)
       WRITE(5,100)
100     FORMAT('FORTRAN **最大値/5個のデータ入力**')
       i=1
10      READ(6,*)k(i)
       i=i+1
       if (i .le. 5) go to 10
       kmax=0
       DO 1 i=1,5
       if(k(i) .gt. kmax) kmax=k(i)
1       continue
       WRITE(5,300)kmax
300     FORMAT('MAX ',i6)
       END


C:\ftn77>ftn77 max.f
[Salford FTN77/Win32 v4.03, Copyright (c) Salford Software Ltd. 1988-1998] 
Licensed to: FTN77 Personal Edition
Department: Non-commercial use only
NO ERRORS [<MAIN@>FTN77 Ver 4.03]

C:\ftn77>slink max.obj
Creating executable: C:\ftn77\max.exe


C:\ftn77>max
FORTRAN **最大値/5個のデータ入力**
12
34
35
27
33
MAX 35

最大値を求めるプログラム

















コンパイル





リンク



実行



  


最近の企業で使うFORTRANは随分進化をとげたものでしょうが、古典的FORTRANもいいですよね?


3.gFotran
(1) Cygwin
Fortran90/95の規格をサポートしたgFortranがCygwin環境で使える(もっと新しい規格も一部サポート)。MinGW版もある。
※Cygwinについては「Cygwinのインストール」参照
 MinGW版はBinaries available for gfortranから入手可能

Cygwin Setupでgcc-fortranを探してインストールします。
この時gcc-coreとバージョンをあわせて下さい。バージョンが違うとコンパイラがちゃんと機能しません。
cannot find "ld" などとエラーが表示される。



コンパイルは
gfortran ソースファイル -o 実行ファイル

ちょっと古い書き方のままですが・・
ソースファイル suu.f90

program suu
      read(5,*)k
      write(6,100)k
100   format('SUU=', I4)
      stop
      end program suu






TopPage


inserted by FC2 system