C ********************************************* C C MARXER.FOR C* ********************************************** C CHARACTER*80 TITLE CHARACTER*50 INFILE,OUTFILE,FILENAME CHARACTER*40 FNAME,ASTRING real int1, int2, sigmaI1, sigmaI2, SigFcut real fobs1, fobs2, sigmaF1, sigmaF2 real ss1, ss2, ss integer*2 h,k,l LOGICAL EFLG WRITE(6,1000) 1000 FORMAT(//' Enter name of anomalous sca file to convert:') 5 write(6,1100) 1100 FORMAT(/'$Input filename (CR to quit): ') READ(5,1200) INFILE 1200 FORMAT(A) IF (INFILE(:5).EQ.' ') STOP INQUIRE(FILE=INFILE, NAME=FILENAME,EXIST=EFLG) IF (.NOT.EFLG) GOTO 5 OPEN (UNIT=2,FILE=INFILE,readonly,STATUS='OLD') c [skip over first 3 lines) do 140 i=1,3 140 read(2,'(A)')astring c [input sigmaF cutoff] write (6, 250) 250 format ('$Input sigmaF cutoff:' ) read (5, * ) SigFcut WRITE(6,1600) 1600 FORMAT('$Output filename: ') READ(5,1200) OUTFILE OPEN(UNIT=3,FILE=OUTFILE,STATUS='NEW') c OPEN (UNIT=3,FILE='temp.rfl',STATUS='NEW') 200 read(2,220,end=990)h,k,l,int1,sigmaI1, int2, sigmaI2 220 format (3I4, 4f8.1) if (int1.le.0.) then nneg=nneg+1 fobs1=0. sigmaF1=1. else fobs1=sqrt(int1) sigmaF1=sigmaI1/(2*fobs1) end if if (int2.le.0.) then nneg=nneg+1 fobs2=0. sigmaF2=1. else fobs2=sqrt(int2) sigmaF2=sigmaI2/(2*fobs2) end if ss1=(fobs1/sigmaF1) ss2=(fobs2/sigmaF2) ss=max(ss1, ss2) IF (ss.lt.SigFcut) then goto 200 end if write(3,300) h,k,l,fobs1,sigmaF1, fobs2, sigmaF2 300 FORMAT (3I4,F10.2,F8.2,F10.2,F8.2 ) goto 200 990 CLOSE(UNIT=2) CLOSE (UNIT=3) write(6,*)nneg,' negative reflections set to zero!' END