У меня 2 ошибки компилятора в этой функции под названием kawa
.
Первая ошибка в первой строке:
ошибка 471 - Недопустимые элементы в списке аргументов
Я думаю, что явместо этого предполагается написать function kawa(dd,ee,owari2,r,t,ttt,s,at12)
.
Вторая ошибка в строке
t (i) = 0
, говорящая неверный аргумент наleft
Я попробовал следующее:
t(i)=0.0
, но все равно не получилось. объявить t
как двойную точность в основной программе.
function kawa(dd,ee,owari2,r(all),t(all),ttt(all),s(all),at12(all))
integer m,i
double precision denmin, denmax,sumgosa,alfa,sumgosa3
double precision w(250),nmax(250),ice(250),bata(250)
double precision sumw,sumr,fw,sumdp,batat,gosa,sumfw
double precision ttt(250)
double precision dp(250),den(250),k(250),n
denmin=dd
denmax=0.5
sumgosa=0
alfa=ee
do i=0, owari2,+1
w(i)=r(i)
if(t(i)<0) then
t(i)=0
else
ttt(i)=tttt(i)+2
endif
if(ttt(i)<0) then
ttt(i)=0
else
k(i)=((denmin+(denmax-denmin)*t(i)/3)/denmin)**2.0
nmax(i)=denmax*denmax/denmin/denmin-k(i)
ice(i)=r(i)
endif
if(at(i)>2)then
ice(i)=0
else
bata(i)=alfa*ttt(i)
end if
enddo
sumfw=0
sumr=0
do m=0, owari2,+1
fw=0
sumdp=0
sumw=0
sumr=0
i=m
batat=bata(i)
do i=m,0,-1
n=m-i
if(ice(i)-batat<=0) then
dp(i)=0
fw=w(i)+fw
w(i)=0
batat=batat-ice(i)
ice(i)=0
else if(n>nmax(i)) then
dp(i)=(ice(i)-batat)/denmax
else
dp(i)=(ice(i)-batat)/denmin*((k(i)+n)**0.5)
ice(i)=ice(i)-batat
batat=0
den(i)=(w(i)+fw)/dp(i)
w(i)=w(i)+fw
fw=0
endif
if(den(i)>denmax) then
den(i)=denmax
fw=w(i)-dp(i)*denmax
w(i)=dp(i)*denmax
endif
sumdp=sumdp+dp(i)
sumw=sumw+w(i)
sumr=sumr+r(i)
enddo
sumfw=sumfw+fw
i=m
if(s(i)==32767)then
gosa=0
goto 10
else
gosa=(sumdp-s(i))*(sumdp-s(i))
endif
enddo
10 sumgosa =sumgosa+gosa
kawa=sumgosa**0.5
end function kawa