急,请各位大侠帮忙
急,菜鸟求助FORTRAN
我所编的程序是先进行排序,然后排序好的数据在进行插值。我先是分别编的,都得到了正确的结果。但是我想把;两个程序结合起来,编译链接之后没有任何输出。感觉是排好序的数据没有正确使用,但不知道怎么改,求助大家谢谢。下面是所编的程序:
C REORDER PERIOD IN RAY.DSP
DIMENSION T(500),V(500),ER(500)
DIMENSION T1(100)
CHARACTER LINE*6,B1*1,B2*1,B3*1,B4*1
C DATA T1/10.0,12.0,14.0,16.0,18.0,20.0, T1内容来进行插值
C $ ,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0
C $ ,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0
C $ ,54.0,56.0,58.0,60.0/
open(1,file='ray01.dsp')
open(2,file='tfile.txt')
LINE='SURF96'
B1='R'
B2='C'
B3='X'
B4='0'
i=1
10 READ(1,101,END=997) T(I),V(I),ER(I)
101 FORMAT(22X,F5.2,5X,F7.4,5X,F7.4)
i=i+1
goto 10
997 ERR=-2
N=i-1
DO 11 J=1,N-1
P=J
DO 12 I=J+1,N
IF(T(I).LT.T(P)) THEN
P=I
ENDIF
12 CONTINUE
A=T(J)
T(J)=T(P)
T(P)=A
A=V(J)
V(J)=V(P)
V(P)=A
A=ER(J)
ER(J)=ER(P)
ER(P)=A
11 CONTINUE
c select fixed period and velocity
do 20 m=1,100
read(2,110,end=999) t1(m)
110 format(f5.2)
do 21 n=1,118
if(t1(m).ge.t(n).and.t1(m).lt.t(n+1)) then
a=(t1(m)-t(n+1))/(t(n)-t(n+1))
b=(t1(m)-t(n))/(t(n+1)-t(n))
v(m)=a*v(n)+b*v(n+1)
write(*,*) t(1),t(2)
write(*,112) line,b1,b2,b3,b4,t1(m),v(m)
112 FORMAT(A6,1X,A1,1X,A1,1X,A1,2X,A1,7X,F5.2,5X,F7.4,5X,F7.4)
endif
21 continue
rewind(2)
20 continue
999 err=-2
end
我所编的程序是先进行排序,然后排序好的数据在进行插值。我先是分别编的,都得到了正确的结果。但是我想把;两个程序结合起来,编译链接之后没有任何输出。感觉是排好序的数据没有正确使用,但不知道怎么改,求助大家谢谢。下面是所编的程序:
C REORDER PERIOD IN RAY.DSP
DIMENSION T(500),V(500),ER(500)
DIMENSION T1(100)
CHARACTER LINE*6,B1*1,B2*1,B3*1,B4*1
C DATA T1/10.0,12.0,14.0,16.0,18.0,20.0, T1内容来进行插值
C $ ,22.0,24.0,26.0,28.0,30.0,32.0,34.0,36.0
C $ ,38.0,40.0,42.0,44.0,46.0,48.0,50.0,52.0
C $ ,54.0,56.0,58.0,60.0/
open(1,file='ray01.dsp')
open(2,file='tfile.txt')
LINE='SURF96'
B1='R'
B2='C'
B3='X'
B4='0'
i=1
10 READ(1,101,END=997) T(I),V(I),ER(I)
101 FORMAT(22X,F5.2,5X,F7.4,5X,F7.4)
i=i+1
goto 10
997 ERR=-2
N=i-1
DO 11 J=1,N-1
P=J
DO 12 I=J+1,N
IF(T(I).LT.T(P)) THEN
P=I
ENDIF
12 CONTINUE
A=T(J)
T(J)=T(P)
T(P)=A
A=V(J)
V(J)=V(P)
V(P)=A
A=ER(J)
ER(J)=ER(P)
ER(P)=A
11 CONTINUE
c select fixed period and velocity
do 20 m=1,100
read(2,110,end=999) t1(m)
110 format(f5.2)
do 21 n=1,118
if(t1(m).ge.t(n).and.t1(m).lt.t(n+1)) then
a=(t1(m)-t(n+1))/(t(n)-t(n+1))
b=(t1(m)-t(n))/(t(n+1)-t(n))
v(m)=a*v(n)+b*v(n+1)
write(*,*) t(1),t(2)
write(*,112) line,b1,b2,b3,b4,t1(m),v(m)
112 FORMAT(A6,1X,A1,1X,A1,1X,A1,2X,A1,7X,F5.2,5X,F7.4,5X,F7.4)
endif
21 continue
rewind(2)
20 continue
999 err=-2
end