INTEGER*2 H,K,L,N,HMAX,HOFF,HH(50000),KK(50000),LL(50000) INTEGER*2 I1(10,10,10),I2(200),ILINE(200) INTEGER*4 II,COUNT,UNIQUE,INDEX(0:50,0:50,0:50,1:5),INDEX2(50000,5) real*4 INT(50000),SIG(50000),XF(50000),YF(50000),PHI(50000) CHARACTER*40 FNAME,ASTRING CHARACTER*1 BLINE(400) EQUIVALENCE (ILINE,BLINE) R32K=128*256 TYPE *,'READ DENZO OUTPUT FILE INTO ARRAY BY H,K,L;' TYPE *,' COUNT SPOTS IN DIFFERENT ZONES.' 20 TYPE *,'CUMULATIVE SPOTS:',JC TYPE *,'Read (D)enzo output or (S)CALE LOCAL, or (W)rite sum?' READ(5,40)ASTRING IF (ASTRING.EQ.'D') GOTO 30 IF (ASTRING.EQ.'S') GOTO 100 IF (ASTRING.EQ.'W') GOTO 550 30 TYPE *,'CUMULATIVE SPOTS:',COUNT,'. ENTER FILE NAME (Q TO QUIT):' 35 read(5,40)FNAME IF (FNAME.EQ.'Q') GOTO 20 40 FORMAT (A20) OPEN(UNIT=2,FILE=FNAME,STATUS='OLD',ERR=550) DO 45 I=1,5 45 READ (2,50)ASTRING C TYPE*, ASTRING 50 FORMAT (A40) N=0 55 READ (2,60)X 60 FORMAT (F7.4) 70 READ(2,101,END=500)H,K,L,J,X1,X2,X,S,X,X,X,PL,X if (H.EQ.999) GOTO 500 C TYPE *,'HKL=',H,K,L C 24 -8 71 1 66.6 66.6 4.64 0.0 0.971 35.4 623.0 0.034 0.0 C 28 -8 66 1 73.1 73.1 4.64 0.0 0.971 34.7 567.0 0.041 0.0 101 FORMAT (I4,2I4,I2,F8.0,F8.1,F7.2,F6.1,F6.3,F7.1,F7.1,F6.3,F8.1) IF (J.EQ.1) GOTO 70 COUNT=COUNT+1 IF (X1.GT.32000)TYPE*,H,K,L,X1 74 HH(COUNT)=H KK(COUNT)=K LL(COUNT)=L INT(COUNT)=X2 SIG(COUNT)=S XF(COUNT)=X YF(COUNT)=Y PHI(COUNT)=PHIF GOTO 70 500 CLOSE (UNIT=2) C501 TYPE *,'NUMBER OF SPOTS REPORTED:',COUNT GOTO 30 C------------------------------------ 100 DO 120 II=1,COUNT H=IABS(HH(II)) K=IABS(KK(II)) L=IABS(LL(II)) C WRITE(6,*) II,H,K,L I=INDEX(H,K,L,1)+1 IF (I.GT.5) THEN WRITE(6,*)' SKIPPING 5TH OBS FOR HKL=',H,K,L WRITE(6,*) HH(II),KK(II),LL(II),INT(II),SIG(II),XF(II),YF(II),PHI(II) GOTO 120 ENDIF IF (I.EQ.1) UNIQUE=UNIQUE+1 INDEX(H,K,L,1)=I INDEX(H,K,L,I)=II 120 CONTINUE WRITE(6,*) ' NUMBER UNIQUE REFL:',UNIQUE C------------------------------------- N=0 DO 200 H=1,50 DO 200 K=1,50 DO 200 L=1,50 IF (INDEX(H,K,L,1).GT.1) THEN N=N+1 DO 190 J=1,5 190 INDEX2(N,J)=INDEX(H,K,L,J) ENDIF 200 CONTINUE WRITE(6,*)'NUMBER OF REFL W MULTIPLE OBS:',N GOTO 20 550 TYPE *,'ENTER FILE NAME TO SAVE SUMMED DENSITIES (Q TO QUIT):' read(5,40)FNAME IF (FNAME.EQ.'Q') GOTO 570 OPEN(UNIT=3,FILE=FNAME,RECL=400,STATUS='NEW',ERR=550) WRITE(3,551) 3,61,61,101 551 FORMAT(4I7) DO 562 H=20,80 DO 562 K=20,80 DO 560 L=50,150 560 ILINE(L-49)= I1(H,K,L) 562 WRITE(3,563)(BLINE(L),L=1, 202) 563 FORMAT (400A1) CLOSE(UNIT=3) GOTO 20 570 STOP 600 TYPE *, 'ERROR IN READ STATEMENT' END