program specaven1n2 c average of N1...N2 spectra from SP.LST implicit none integer ns,np,i,ii,is,ie,n1,n2 real*8,allocatable::sx(:),sa(:) real*8 sy,x,y character*80 s80 call getarg(1,s80) read(s80,*)n1 call getarg(2,s80) read(s80,*)n2 ns=0 ii=0 open(9,file='SP.LST') 992 read(9,900,end=918,err=918)s80 900 format(a80) ns=ns+1 if(ns.eq.1)then open(10,file=s80) np=0 993 read(10,*,end=919,err=919)x,y np=np+1 goto 993 919 close(10) allocate(sx(np),sa(np)) do 4 i=1,np 4 sa(i)=0.0d0 endif if(ns.le.n2.and.ns.ge.n1)then open(10,file=s80) do 1 i=1,np read(10,*)sx(i),sy 1 sa(i)=sa(i)+sy close(10) ii=ii+1 endif goto 992 918 close(9) do 2 i=1,np 2 sa(i)=sa(i)/dble(ii) write(s80,'(i80)')ii do 5 is=1,len(s80) 5 if(s80(is:is).ne.' ')goto 6 6 do 7 ie=len(s80),1,-1 7 if(s80(ie:ie).ne.' ')goto 8 8 open(10,file='AVE.PRN') do 3 i=1,np 3 write(10,100)sx(i),sa(i) 100 format(f10.4,' ',g12.6) close(10) write(6,6000)ns,ii,np 6000 format(i5,' spectra in SP.LST',/, 1 i5,' spectra averaged in AVE.PRN ',/, 1 i5,' points') end