program vcal character*80 s1,s2,s3,s4 real*8,allocatable::sx(:),sy(:),rx(:),ry(:) write(6,*) write(6,*)' Replaces x-scale and/or calibrates a spectrum' write(6,*) if(iargc().ne.4)then write(6,*)' Usage: vcal ', 1 ' ic' write(6,*)' ' write(6,*)' ic = 1: replace x-scale ' write(6,*)' ic = 2: calibrate ' write(6,*)' ic = 3: replace x-scale and calibrate ' stop endif call getarg(1,s1) call getarg(2,s2) call getarg(3,s3) call getarg(4,s4) read(s4,*)ic open(10,file=s1) n=0 1 read(10,*,end=99,err=99)x,y n=n+1 goto 1 99 close(10) allocate(sx(n),sy(n),rx(n),ry(n)) open(10,file=s1) do 2 i=1,n 2 read(10,*)sx(i),sy(i) close(10) write(6,*)' spectrum read, ',n,' points' open(10,file=s3) do 3 i=1,n 3 read(10,*)rx(i),ry(i) close(10) write(6,*)' reference read' if(ic.eq.1.or.ic.eq.3)write(6,*)' x-calibrated' if(ic.eq.2.or.ic.eq.3)write(6,*)' y-corected' do 4 i=1,n if(ic.eq.1.or.ic.eq.3)sx(i)=rx(i) 4 if(ic.eq.2.or.ic.eq.3)sy(i)=sy(i)*ry(i) open(10,file=s2) do 5 i=1,n 5 write(10,100)sx(i),sy(i) 100 format(f12.3,2x,g12.6) close(10) write(6,*)' result written' end