C THIS PROGRAM TAKES THE BINARY OUTPUT FILE FROM FORDAP AS IT IS C NOW WRITTEN AT LCB (10-83) AND GENERATES AN INPUT FILE SUITABLE C FOR USE IN THE CON.FOR CONTOURING PROGRAM. C BY DAVID PEARLMAN 10-83 PROGRAM CONTURTOC DIMENSION R(2000),WORDS(18) CHARACTER*18 INAME INDIC=0 RRMAX=-1.E32 RRMIN=1.E32 C WRITE(*,1) 1 FORMAT('$INPUT NAME OF FORDAP OUTPUT FILE: ') READ(*,2)INAME 2 FORMAT(A80) OPEN(UNIT=1,FILE=INAME,STATUS='OLD',FORM='UNFORMATTED') WRITE(*,3) 3 FORMAT('$INPUT NAME OF "CON" PROGRAM INPUT FILE TO BE CREATED: ') READ(*,2)INAME OPEN(UNIT=2,FILE=INAME,STATUS='NEW',FORM='UNFORMATTED') WRITE(*,4) 4 FORMAT('$INPUT A,B,C (ANGSTROMS): ') READ(*,5)A,B,C 5 FORMAT(3F14.7) WRITE(*,6) 6 FORMAT('$INPUT ALPHA,BETA,GAMMA (DEGREES): ') READ(*,5)ALP,BET,GAM COSA=COS(ALP*3.14159265/180.) COSB=COS(BET*3.14159265/180.) COSC=COS(GAM*3.14159265/180.) WRITE(6,*)'INDIC=',INDIC,' A,B,C:',A,B,C,' COS A,B,C',COSA,COSB,COSC WRITE(*,7) 7 FORMAT(' INPUT THE TITLE FOR THE "CON" PLOTS (72 CHRS):') READ(*,8)WORDS 8 FORMAT(18A4) IRIGHT=0 WRITE(*,23) 23 FORMAT(' FORDAP OUTPUT IS (UNFORTUNATELY) RELATIVE TO A', . ' LEFT ', . 'HANDED',/,' COORDINATE SYSTEM. THUS, BY ', . 'DEFAULT, THE OUTPUT FROM THIS PROGRAM WILL', . /' INSTRUCT CON TO PLOT IN A LEFT HANDED ', . 'SYSTEM. INPUT A "1" HERE IF YOU WISH TO ',/ . ' PLOT IN A RIGHT-HANDED SYSTEM. (NOTE ', . 'THAT THIS WILL CAUSE THE CHIRALITY OF ',/ . ' THE MOLECULE TO BE REVERSED, BUT THAT EACH' . ,' SECTION CAN BE READ',/,'$AND INTERPRETED ', . 'CORRECTLY): ') READ(*,21)IRIGHT C IF IRIGHT.EQ.1 THEN USE IUNITS=IUNITS+10 TO CAUSE RIGHT HANDED PLOTTING C WRITE(*,9) 9 FORMAT('$INPUT A "1" IF YOU WANT A FORMATTED INPUT FILE AS ', . 'WELL: ') READ(*,21)NOFORM C C START FORDAP FILE READIN C 10 READ(1,END=999)SEV1,RMAX C C SEV1=-1000. INDICATES LAST RECORD ON FILE C = 1000. INDICATES DATA FOR A NEW SECTION C = 0. MEANS IGNORE C IF (SEV1.LT.0.) GO TO 100 IF (SEV1.EQ.0.) GO TO 20 C READ(1,END=999)XMIN,XMAX,DX,YMIN,YMAX,DY,ZMIN,ZMAX,DZ,NY,NX, . NZ,NORIEN,DUM1,DUM2,Z C THE FOLLOWING STATEMENT IS NECESSARY TO PLOT X VALUES ON THE C XAXIS, YVALUES ON THE YAXIS IN CON.FOR IF (NORIEN.EQ.1) NORIEN=-1 C THE FOLLOWING CALCULATES NX,NY,NZ EXACTLY AS IN FORDAP: IF(NX.LE.1)NX=MAX((XMAX-XMIN)/DX+1.5,1.) IF(NY.LE.1)NY=MAX((YMAX-YMIN)/DY+1.5,1.) IF(NZ.LE.1)NZ=MAX((ZMAX-ZMIN)/DZ+1.5,1.) C IUNITS=1 IF (IRIGHT.EQ.1) IUNITS=IUNITS+10 IF (INDIC.EQ.0) . WRITE(*,11)XMIN,XMAX,DX,NX,YMIN,YMAX,DY,NY,ZMIN,ZMAX,DZ, . NZ,NORIEN,IUNITS 11 FORMAT(T2,'XMIN=',F6.4,' XMAX=',F6.4,' DX=', . F6.4,' NX=',I5,/T2,'YMIN=',F6.4,' YMAX=',F6.4,' DY=', . F6.4,' NY=',I5,/T2,'ZMIN=',F6.4,' ZMAX=',F6.4,' DZ=', . F6.4,' NZ=',I5,/T2,'NORIEN=',I5,' IUNITS=',I5) C IF (INDIC.EQ.0) THEN WRITE(2)WORDS,NORIEN,YMIN,YMAX,DY,XMIN,XMAX,DX,ZMIN,ZMAX,DZ, . A,B,C,COSA,COSB,COSC,NY,NX,NZ,IUNITS IF (NOFORM.NE.1) GO TO 26 WRITE(19,8)WORDS WRITE(19,21)NORIEN 21 FORMAT(3I5) WRITE(19,22)YMIN,YMAX,DY 22 FORMAT(6F12.3) WRITE(19,22)XMIN,XMAX,DX WRITE(19,22)ZMIN,ZMAX,DZ WRITE(19,22)A,B,C,COSA,COSB,COSC WRITE(19,21)NX,NY,NZ WRITE(19,21)0,0 IF (IRIGHT.NE.1) WRITE(19,21) 11 !DEFAULTS SWITCHED FOR FORMATTED FILE IF (IRIGHT.EQ.1) WRITE(19,21) 1 END IF C 26 INDIC=INDIC+1 READ(1,END=999)ZER1,ZER2 20 READ(1,END=999)Y,(R(I),I=1,NX) C C RRMAX,RRMIN ARE THE MAXIMUM AND MINIMUM VALUES WRITTEN TO CON INPUT FILE C DO 32 IIJ=1,NX IF(R(IIJ).GT.RRMAX) RRMAX=R(IIJ) IF(R(IIJ).LT.RRMIN) RRMIN=R(IIJ) 32 CONTINUE C WRITE(2)(R(I),I=1,NX) GO TO 10 C 999 WRITE(*,30) 30 FORMAT(' PROGRAM ENCOUNTERED END OF FILE') STOP 100 BACKSPACE(1) READ(1)SEV1,RMAX,CCC WRITE(*,35)RMAX,CCC 35 FORMAT(' RMAX,SCALE FACTOR= ',2F15.6) WRITE(*,36)RRMIN,RRMAX 36 FORMAT(' MAXIMUM, MINIMUM VALUES WRITTEN: ',2F15.6) END