C C C MARXER.FOR C* ********************************************** C COMMON //NX,NY,NZ,IXMIN,IYMIN,IZMIN,IXMAX,IYMAX,IZMAX DIMENSION NXYZ(3),MXYZ(3),NXYZST(3) CHARACTER*80 TITLE DIMENSION IXYZMIN(3),IXYZMAX(3),OUT(9998) DIMENSION LABELS(20,10),CELL(6) COMPLEX CLINE(4999),COUT(4999) CHARACTER*50 INFILE,OUTFILE,FILENAME CHARACTER*40 FNAME,ASTRING CHARACTER*1 BLINE(2400),OUTSTRING(1200),HSTRING(16),BOXFLAG INTEGER*2 ILINE(1200),H,K,L,N LOGICAL EFLG EQUIVALENCE (NX,NXYZ), (ALINE,CLINE), (OUT,COUT), (BLINE,ILINE) EQUIVALENCE (IXYZMIN, IXMIN), (IXYZMAX, IXMAX) CHARACTER*12 AQDATE, AQTIME CHARACTER DAT*12,TIM*12 EQUIVALENCE (AQDATE,BLINE(101)),(AQTIME,BLINE(113)) INTEGER*4 ICCOUNTS(2) EQUIVALENCE (ICCOUNTS,BLINE(25)) INTEGER*4 EXPTIME EQUIVALENCE (EXPTIME,BLINE(33)) REAL*4 LAMBDA,DISTANCE,PHI_START,PHI_END EQUIVALENCE (LAMBDA,BLINE(77)),(DISTANCE,BLINE(81)),(PHI_START, - BLINE(85)),(PHI_END,BLINE(89)) R64K=256*256 R32K=128*256 DATA HSTRING/'0','1','2','3','4','5','6','7','8','9','A','B','C', - 'D','E','F'/ DATA NXYZST/3*0/, CNV/57.29578/ c DO 2 I=1,16 c2 WRITE(6,*)I,' ',HSTRING(I) WRITE(6,1000) 1000 FORMAT(//' MAR RESEARCH TO POSTSCRIPT IMAGE FILE CONVERSION . PROGRAM Version 930305'/' To print image: LPR MARXER.TMP') 5 WRITE(6,1100) 1100 FORMAT(/'$Input Denzo out 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') 1400 write(6,*)'Enter window (pixels; xmin,xmax,ymin,ymax;', . ' 0 0 0 0 for default):' read(5,*) i1,i2,j1,j2 TYPE *,'READING DENZO OUTPUT FILE for spot locations' c OPEN(UNIT=2,FILE=FNAME,readonly,STATUS='OLD') DO 345 I=1,5 345 READ (2,350)ASTRING C TYPE*, ASTRING 350 FORMAT (A40) N1=0 N2=0 C 355 READ (2,360)X 360 FORMAT (F7.4) 370 READ(2,101,END=500)H,K,L,J,X1,X2,X,S,X,X,Y,PL,X3 if (h.eq.999) goto 500 N1=N1+1 101 FORMAT (I4,2I4,I2,F8.0,F8.1,F7.2,F6.1,F6.3,F7.1,F7.1,F6.3,F8.1) C IGNORE LOW-INTENSITY SPOTS C IF (X1.LT.100) GOTO 370 C Ignore offscale spots: if ((x.lt.i1).or.(x.gt.i2)) goto 370 if ((y.lt.j1).or.(y.gt.j2)) goto 370 write (6,369)h,k,l,j,x,y 369 format(' h k l:',3i4,' p-flag:',i3,' x,y pixel:',2f6.1) GOTO 370 500 CLOSE (UNIT=2) TYPE *,'NUMBER OF SPOTS REPORTED:',N1,' NUMBER USED:',N2 GOTO 5 END