いよいよエディタで作ったプログラムを実行してみましょう。
もうエディタでFortranプログラムの入ったファイルを作ってありますか?このファイルをFortranのソースファイルといいます。
まず、ソースファイルの名前を確認しましょう。先週はどんな名前のファイルでもいいといいましたから、例えば hoge という名前になっているとします。このファイル名を enshuu1.f としてください(ファイル名を変更する)。
xz0000% mv hoge enshuu1.f
enshuu1 の部分は何でもいいですが、後ろの .f は Fortran の拡張子で、これが Fortran のソースファイルであることを示しています。
さて、先週いい忘れたことがあります。Fortranプログラムでは、各行の先頭には6個のスペースが必要なんです。どうして?と聞かれると話が長くなりますのでそういうもんだと思って勘弁してください。とりあえず mule で(空白行を除く)全ての行の先頭に6個のスペースを入れてください(ファイルを作る)。
xz0000% mule enshuu1.f
これでソースファイルができました。
Fortran プログラムを実行するには、ソースファイルを実行ファイルに変換する必要があります。これをコンパイルといいます。コンパイルするにはコンパイラと呼ばれるプログラムを使います。 Fortran の場合は f77 というコマンドです。
f77スペースソースファイル名
というように使います。早速やってみましょう。
xz0000% f77 enshuu1.f
f77: compile start : enshuu1.f
*OFORT77+ V01-05-/C entered.
*program name = MAIN
*program units = 0001
xz0000%
こうなれば大成功です。 a.out というファイルができていれば成功です。ls で確かめましょう。
こうならなかった人はソースファイルの中にエラーがあります。もう一度ソースファイルの中身が正しいか注意して見てください(エラーの場所を探すヒント)。
やっとプログラムを実行するところまできました。f77 が作った a.out は実行ファイルです(実行するっていうのはコンピュータ用語です。念のため)。早速実行してみます。先頭に ./ がつく理由は後で説明されるでしょう。ここではそういうものだと思ってください。
xz0000% ./a.out
?
10
n = 10
sum = 55
xz0000%
どうでしょう。? がでてきて止まるのは read 文が入力を待っているからです。 10 を入力したら答えが出てきました。どの行の出力がソースファイルのどの write 文に対応しているかわかりますね。何度か実行していろいろな n で試してみましょう。あまりとてつもなく大きな値は入れないように。
多くのコンピュータのエラーメッセージは、大抵何を言っているかわからないものです。しかし、その中には確実にヒントが隠れています。
f77 のメッセージには、ソースファイルの何行目にエラーがあるかのヒントがあります。たとえば次のようになったとしましょう。
xz0018% f77 enshuu1.f f77: compile start : enshuu1.f
*OFORT77+ V01-05-/C entered. KCHF232C 04 N the variable is referred but never defined. KCHF025C 12 4 unrecognizable fortran statement. *program name = MAIN *program units = 0001, 0002 diagnostics generated, highest severity code is 12 xz0018%
この中で KCHF で始まる行に注目してください。この例では2つありますが、2番目の KCHF025C の行を見ましょう。12 という数字はエラーの重大度を示す数値で、ここではとりあえず忘れときます。
その次の 4 という数字がヒントです。これはソースファイルの4行目にエラーがあったよという意味です。そこで、enshuu1.f の4行目を見ると
reed(5,*) n
となっていました。read となっているはずのところが reed になっていたのです。 これを直してもう一度コンパイルをすると、今度はうまく行って、KCHF232C のエラーも消えていました。
KCHF で始まる行の3番目に書いてあるのが数字なら、ソースファイルのその行があやしい。数字じゃなかったらとりあえずほっとこう。
ただし、エラーがエラーを呼んでいることがありますので、先頭の行から順番に2、3個直したら、適当なところでもう一度コンパイルしてみましょう。極端にエラーが減っていることがあります。