全く意味がわからないので以下のプログラムについて解説していただけませんか?

   subroutine gauss(n,a,s)
   dimension a(n,1), s(1)
   dimension b(100,101)
**
   do i = 1, n
   do j = 1,n
    b(i,j) = a(i,j)
   enddo
   enddo
   do i = 1, n
    b(i,n+1) = s(i)
   enddo
**
   do 10 k = 1, n

   m = k;
   do i=k+1, n
    if (abs(b(i,k)).gt.abs(b(m,k))) m = i

   enddo
   do j=k, n+1
    t = b(k,j)
    b(k,j) = b(m,j)
    b(m,j) = t
   enddo