REAL*4 V(3),W(3),RM(3,3),A,B,ANGLE,COSA,SINA INTEGER I,J,K,I1,I2,I3 CHARACTER*15 RESI CHARACTER*40 FNAME CHARACTER*1 AXIS character*80 astring 30 TYPE *,'ENTER FILE NAME OF RDI FILE TO ROTATE:' 35 read(5,40)FNAME IF (FNAME.EQ.'Q') GOTO 501 40 FORMAT (A40) OPEN(UNIT=2,FILE=FNAME,STATUS='OLD') TYPE *,'ENTER FILE NAME FOR OUTPUT:' read(5,40)FNAME OPEN(UNIT=3,FILE=FNAME,STATUS='NEW') WRITE(6,*)'ENTER AXIS TO ROTATE ABOUT (X, Y, Z) AND ANGLE . FOR ROTATION' READ(5,42)AXIS,ANGLE 42 FORMAT(A1,F15.3) PI=4*ATAN(1.) WRITE(6,*)'PI=',PI,' ANGLE=',ANGLE COSA=COS(ANGLE*PI/180.) SINA=SIN(ANGLE*PI/180.) DO 45 I=1,3 DO 45 J=1,3 45 RM(I,J)=0 IF ((AXIS.EQ.'X').OR.(AXIS.EQ.'x')) THEN RM(1,1)=1 RM(2,2)=COSA RM(3,3)=COSA RM(3,2)=SINA RM(2,3)=-SINA ELSEIF ((AXIS.EQ.'Y').OR.(AXIS.EQ.'y')) THEN RM(2,2)=1 RM(1,1)=COSA RM(3,3)=COSA RM(3,1)=SINA RM(1,3)=-SINA ELSEIF ((AXIS.EQ.'Z').OR.(AXIS.EQ.'z')) THEN RM(3,3)=1 RM(1,1)=COSA RM(2,2)=COSA RM(2,1)=SINA RM(1,2)=-SINA ENDIF DO 48 I=1,3 48 WRITE(6,*)(RM(I,J),J=1,3) 49 format (a80) read(2,49) astring write(3,*) astring read(2,49) astring write(6,*)'title from input file:',astring write(3,*) 'rotated about axis ',axis,' by ',angle read(2,49) astring write(3,*) astring C 20.000 32.000 4.000 0.000 2 1 0 1.00 ALA 1 N 50 format (4f10.3,3I5,f8.2,A15) C50 format (4f10.3,3I5,f8.2,' ALA 1 N ') C50 format ('HETATM',I5,' N ALA A 1 ',3f8.3,2f6.2) 55 read(2,50,END=501) (v(i),i=1,3),a,I1,I2,I3,B,RESI do 90 i=1,3 w(i)=0 do 90 j=1,3 90 w(i)=w(i)+rm(i,j)*v(j) C write(3,50) i1,i2,(w(i),i=1,3),a,b WRITE(3,50) (W(i),i=1,3),a,I1,I2,I3,B,RESI GOTO 55 501 CONTINUE END