diff options
Diffstat (limited to 'synthe/ascibinxyatonm.for')
-rw-r--r-- | synthe/ascibinxyatonm.for | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/synthe/ascibinxyatonm.for b/synthe/ascibinxyatonm.for new file mode 100644 index 0000000..6ed4d01 --- /dev/null +++ b/synthe/ascibinxyatonm.for @@ -0,0 +1,61 @@ + PROGRAM ASCIBIN + DIMENSION X(2000000),Y(2000000) + CHARACTER*80 NOME,NOMEFUORI +c WRITE(5,10) + type 10 +10 FORMAT(2X,'ASCII INPUT FILE NAME ?',/,2X,'#--> ',$) + accept 11, NOME +c WRITE(5,12) + type 12 +12 FORMAT(2X,'BINARY OUTPUT FILE NAME ?',/,2X,'#-->',$) + accept 11, NOMEFUORI + CALL READASCII(X,Y,N,NOME) + CALL SAVEBIN(X,Y,1,N,NOMEFUORI) + STOP' DONE !' +11 FORMAT(80A) + END + SUBROUTINE READASCII(X,Y,N,NAME) + CHARACTER*80 NAME + DIMENSION X(1),Y(1) + NMAX=2000000 + OPEN(UNIT=1,FILE=NAME,STATUS='OLD',READONLY,ERR=20) +c READ(1,*)NPTI +C TYPE*,NPTI + DO I=1,NMAX + READ(1,*,END=10,ERR=30) X(I),Y(I) +c TYPE*,I,X(I),Y(I) + ENDDO +10 N=I-1 + READ(1,*,END=15,ERR=30) W,F + WRITE(5,40)NMAX,NMAX + READ(5,50)J + IF(J.EQ.1HC.OR.J.EQ.1Hc)GOTO 15 + STOP'READASCII..==> TOO MANY POINTS STOP' +15 CLOSE(1) + RETURN +20 STOP' READASCII..==> ERROR OPENING YOUR FILE' +30 STOP' READASCII..==> ERROR READING YOUR FILE' +40 FORMAT(1X,'READASCII..==> WARNING !!!',/,16X,'YOUR FILE + 1 CONTAINS MORE THAN ',I5,' POINTS.',/,16X'ONLY THE FIRST + 2 ',I5,' POINTS HAVE BEEN READ.',/,16X,'CONTINUE OR QUIT ? + 3 (C/Q)',/,1X,'READASCII..==> ',$) +50 FORMAT(A) + END + SUBROUTINE SAVEBIN(W,YCONV,NPT0,NPT1,NOME) + CHARACTER*80 NOME + REAL*8 WBIN(2000000) + DIMENSION W(1),YCONV(1) +C CONVERTS THE ASCII DATA FROM NORMA IN +C BINARY FORM TO BE READ FROM SYNTHE + OPEN(UNIT=22,FILE=NOME,FORM='UNFORMATTED',STATUS='NEW') + DO 500 I=NPT0,NPT1 +C WAVELENGTHS ARE EXPRESSED NOW IN NANOMETERS TO CONFORM TO +C THE USE OF SYNTHE + WBIN(I)=0.1*W(I) +c wbin(i)=w(i) + WRITE(22) WBIN(I),YCONV(I) +c TYPE*,I,WBIN(I),YCONV(I) +500 CONTINUE + CLOSE(22) + RETURN + END |