1subroutine shell(n,a)
2  integer n
3  real a(n)
4  integer i,j,inc
5  real v
6
7  inc=1
81 inc=3*inc+1
9  if(inc.le.n) go to 1
102  inc=inc/3
11
12  do i=inc+1,n
13     v=a(i)
14     j=i
153    if(a(j-inc).gt.v) then
16        a(j)=a(j-inc)
17        j=j-inc
18        if(j.le.inc) go to 4
19        go to 3
20     endif
214    a(j)=v
22  enddo
23
24  if(inc.gt.1) go to 2
25
26  return
27end subroutine shell
28