|
如題:在第2個迴圈內,我因為同一個檔案想一次讀2行再讓他返回前一行,並進行計算,檔案還沒讀完但卻在讀完2行之後就直接跳出,我該怎麼辦呢?!
stat2和stat3都在讀完一次之後就不再是0,是我哪裡有設計錯誤嗎?!
感謝各位高手幫忙解答!!!
以下為程序代碼:
[Fortran] 纯文本查看 复制代码 01 | program radiosonde_PWV_B |
04 | integer :: stat , stat 2 , stat 3 , height_m 1 , height_m 2 , yr 1 , doy 1 , hr 1 , yr 2 , doy 2 , hr 2 |
05 | character :: filename * 13 , filename_new * 13 |
06 | real * 8 :: timeall 1 , part_vapor_weight 1 , timeall 2 , part_vapor_weight 2 , pwv |
08 | open ( 11 , file = 'list.txt' ) |
09 | close ( 11 , status = 'delete' ) |
10 | call system ( 'dir /b *.radio2 > list.txt' ) |
11 | open ( 11 , file = 'list.txt' ) |
15 | read ( 11 , * , iostat = stat ) filename |
17 | open ( 22 , file = filename ) |
18 | filename_new = filename ( 1 : 6 ) / / '.radio3' |
19 | open ( 33 , file = filename_new ) |
23 | do while ( stat 2 == 0 .and. stat 3 == 0 ) |
24 | read ( 22 , * , iostat = stat 2 ) timeall 1 , height_m 1 , part_vapor_weight 1 , yr 1 , doy 1 , hr 1 |
25 | read ( 22 , * , iostat = stat 3 ) timeall 2 , height_m 2 , part_vapor_weight 2 , yr 2 , doy 2 , hr 2 |
26 | if ( stat 2 /= 0 .or. stat 3 /= 0 ) exit |
29 | pwv = ( part_vapor_weight 1 + part_vapor_weight 2 ) * ( height_m 2 - height_m 1 ) * 1 D 3 / 2 |
30 | write ( 33 , 50 ) timeall 1 , height_m 1 , height_m 2 , pwv , yr 1 , doy 1 , hr 1 |
31 | 50 format ( f 12.7 , 1 x , i 5.5 , 1 x , i 5.5 , 1 x , f 12.7 , 1 x , i 4 , 1 x , i 3.3 , 1 x , i 2.2 ) |
32 | else if ( hr 1 /= hr 2 ) then |
以下為測試數據:
|
|