aboutsummaryrefslogtreecommitdiff
path: root/synthe/ascibinxyatonm.for
diff options
context:
space:
mode:
Diffstat (limited to 'synthe/ascibinxyatonm.for')
-rw-r--r--synthe/ascibinxyatonm.for61
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