> implicit none
> integer s,t,n,k
> real a,b
> read(5,*) n
> dimension a(n,n),b(n)

ここの部分が間違っている。

implicit none
real a(n,n),b(n)
integer s,t,n,k
read(5,*) n

と書くのが正しい配列の定義の仕方。このばあい、属性を意味する"dimension"は書かなくてok

あと注意点だけど、変数定義の途中に実行可能な文を入れてはダメ。
>>247の場合dimensionの前にreadがはいってるけど、readは変数をすべて定義した後にやる。