主题:无法读取subroutine中的数值 (已解决)
求 教 各 位 師 兄 師 姐 ﹕
需要編寫一個程序來進行計算。結構是先選擇K數值﹐ 分為SUB K=1和SUB K=2兩種情況。 然後在 各自的SUB里調用一個可以改變參數的SUB P。
遇到的問題是可以改變參數 ﹐ 但接下來讀取時發現數值為0﹐
懇 請 指 教!
程 序 是 這 樣 ﹕
program test
implicit none
real*8 k,rIS,rnr
print*,'First choose k value: (k=1 or 2)'
print*, '1:k=',k,'(insert 1 or 2)'
read(*,*) rnr
if(rnr.eq.1) then
call subk1
else if(rnr.eq.2) then
call subk2
endif
end
subroutine p
rIS=2.0
100 print*, 'parameters now:'
print*, ' 1: rIS =',rIS,'cm'
print*,'Write number to change'
print*,'If nothing change write 0 to continue.'
read(*,*) rnr
if(rnr.eq.0) then
go to 199
endif
go to
1(101)
2rnr
101 print*,'change 1 rIS =',rIS
read(*,*) rIS
go to 100
199 continue
return
end
subroutine subk1
call p
write(6,*) 'setup1=',rIS
end
subroutine subk2
call p
write(6,*) 'setup2=',rIS
return
end
需要編寫一個程序來進行計算。結構是先選擇K數值﹐ 分為SUB K=1和SUB K=2兩種情況。 然後在 各自的SUB里調用一個可以改變參數的SUB P。
遇到的問題是可以改變參數 ﹐ 但接下來讀取時發現數值為0﹐
懇 請 指 教!
程 序 是 這 樣 ﹕
program test
implicit none
real*8 k,rIS,rnr
print*,'First choose k value: (k=1 or 2)'
print*, '1:k=',k,'(insert 1 or 2)'
read(*,*) rnr
if(rnr.eq.1) then
call subk1
else if(rnr.eq.2) then
call subk2
endif
end
subroutine p
rIS=2.0
100 print*, 'parameters now:'
print*, ' 1: rIS =',rIS,'cm'
print*,'Write number to change'
print*,'If nothing change write 0 to continue.'
read(*,*) rnr
if(rnr.eq.0) then
go to 199
endif
go to
1(101)
2rnr
101 print*,'change 1 rIS =',rIS
read(*,*) rIS
go to 100
199 continue
return
end
subroutine subk1
call p
write(6,*) 'setup1=',rIS
end
subroutine subk2
call p
write(6,*) 'setup2=',rIS
return
end