1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
|