CHARACTER*40 INFILE,FILENAME LOGICAL EFLG real*8 M1(3,4),M2(3,4),M3(3,4),M(3,4),ACC(3,4) REAL*8 P1(3),P2(3),T(3) character*40 string INTEGER*4 MM,NN,I,J c read operator into m1 5 WRITE(6,*) 'ENTER NAME OF FILE of pdbset oper to convert to .o:' 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,STATUS='OLD',READONLY) do 50 i=1,3 50 read(2,51)(M1(I,J),j=1,4) 51 FORMAT(9x,3f10.6,14x,f10.3) CLOSE(UNIT=2) MM=3 NN=4 CALL MATPRN (M1,MM,NN) WRITE(6,*)' NCS OPERATOR:' WRITE(6,*)' ROTATE MATRIX' DO 1100 I=1,3 1100 WRITE(6,9) (M1(I,J),J=1,3) WRITE(6,*)' TRANSLATE ' WRITE(6,9) (M1(I,4),I=1,3) 9 FORMAT(' ',3F14.6) write(6,*)' this operator will be saved as an O datablock RT.O' WRITE(6,*)' Note this operator is for orthogpnal coord, A translation' WRITE(6,*)' You will have to convert for your cell. ' WRITE(6,*) 'ENTER NAME FOR output of resulting rot-trans op (.o):' READ(5,1200) filename open (unit=3,name=FILENAME,status='unknown') WRITE(3,*) '.SPACE_GROUP_operators r 12 (3f14.7)' do 1150 j=1,4 1150 write(3,1151)(M1(I,J),I=1,3) 1151 FORMAT(3f14.7) END SUBROUTINE MATPRN(ARRAY,M,N) REAL*8 ARRAY(3,4) WRITE(6,*)'M, N=',M,N DO 10 I=1,M 10 WRITE (6,50) (ARRAY(I,J),J=1,N) 50 format(8f10.5) RETURN END