>>792
Gaussの消去法で連立一次方程式を解くサブルーチン。
本体はDO 10 LOOPでPIVOT選択と前進消去、DO 20 LOOPで後退代入をやってる。
数値計算の教科書には必ず載っているようなもの。教科書を嫁。


nは行列の次元。a、sの入力はax=dの行列aとベクトルd、sの出力は解のx。
行列サイズは最大100までだが、サイズチェックはしていないw
作業配列がb(100,101)と列が行より1個多いのは、ax=dのdが入るようにするため。
これは筆算でもやる消去法での解き方の典型。
最初のDO LOOPで代入している。

正方行列やベクトルのはずのaやsの宣言が、 dimension a(n,1), s(1) と、
1次元になっているのは、FORTRAN77以前ではサブルーチンの引数の変数の先頭アドレスしか
渡さないので、それで十分だから。FORTRAN66時代にはこういう書き方をよくやった。
(デバッグの時、配列はみ出しエラーで引っかかるので、FORTRAN77以降ではやらなくなった。)

ただ二次元の時は、行数は必要になるので、a(1,1)ではなくa(n,1)にする必要がある。
これの意味は、FORTRANでの2次元配列の取り方が縦書き改行になっていることを知らないと
わからない。もしくは二次元配列がどうメモリー上に一次元的に取られるのかということ。
FORTRANの教科書読めば書いてある。



プログラムの形式は、FORTRAN77っぽいが、FORTRAN66時代のような仮引数の配列宣言を使い
それでいて中途半端にFortran90の機能も使うちぐはぐさを見せている。

作者はFORTRAN66時代の教科書やプログラムの残る80年代に中期にFORTRAN教育を受け
当時だんだんFORTRAN77に拡張で導入されていたDO...END DOのFortran90の機能を聞き
かじったのではないかと推測w

おk?