|
首先,这个问题我已经通过修改代码解决了。但还是没有搞懂为什么是这样,故来问一下。
问题描述:从do while 开始,我循环读取了两个文本,使用status1、status2来查询文件读取状态。接着是在do循环下,使用了两个并列的if语句。程序执行完,结果只有第二个if语句判断后的结果。当我把两个文件中任何一个文件的读取给注释掉,执行结果都正确。
最后我的解决办法是,写两个do while。第一个do while下,读取并判断第一个文件;第二个do while 读取判断第二个文件。结果经过我对比检查是正确的。
so,我还是不知道第一种方法为什么错,请求赐教!谢谢!!
[Fortran] 纯文本查看 复制代码 01 | program flash_density_test |
05 | character ( len = 512 ) :: cRead , dRead |
06 | character ( len = 10 ) :: datee |
07 | character ( len = 15 ) :: time |
09 | character ( len = 4 ) :: timingerror |
11 | integer :: status 1 = 0 , status 2 = 0 |
13 | integer , parameter :: nx = 150 , ny = 140 |
14 | real , dimension ( nx , ny ) :: md |
15 | character ( len = 10 ) :: year , month , day , hour , minn , sec , ti , station 1 , ex 1 , ex 2 , ex 3 |
25 | open ( 11 , file = '2006.txt' , status = 'old' ) |
26 | OPEN ( 12 , file = 'output1.txt' , status = 'replace' ) |
27 | OPEN ( 13 , file = 'xinan.grd' , form = 'unformatted' , status = 'replace' ) |
28 | OPEN ( 14 , file = '20170210_27.txt' , status = 'old' ) |
31 | read ( 11 , "(A512)" , iostat = status 1 ) cRead |
33 | CALL parserRead ( cRead ) |
38 | READ ( 14 , "(A512)" , iostat = status 2 ) dRead |
40 | CALL parserRead 1 ( dRead ) |
47 | if ( lon >= ( i -1 ) * 0.1 .and. lon < i * 0.1 .AND. lat >= ( j -1 ) * 0.1 .AND. lat < j * 0.1 ) then |
50 | if ( lon 1 >= ( i -1 ) * 0.1 .and. lon 1 < i * 0.1 .AND. lat 1 >= ( j -1 ) * 0.1 .AND. lat 1 < j * 0.1 ) then |
58 | write ( 12 , '(1x,150f7.1)' ) ( ( md ( i , j ) , i = 1 , nx ) , j = 1 , ny ) |
60 | write ( 13 ) ( ( md ( i , j ) , i = 1 , nx ) , j = 1 , ny ) |
66 | subroutine parserRead ( c ) |
71 | if ( c ( k : k ) == "/" ) c ( k : k ) = "|" |
73 | READ ( c , * ) datee , time , lat , lon , timingerror , station |
74 | do k = 1 , LEN_TRIM ( datee ) |
75 | if ( datee ( k : k ) == "|" ) datee ( k : k ) = "/" |
77 | end subroutine parserRead |
79 | subroutine parserRead 1 ( d ) |
84 | if ( d ( h : h ) == "/" ) d ( h : h ) = "|" |
86 | READ ( d , * ) year , month , day , hour , minn , sec , lat 1 , lon 1 , ti , station 1 , ex 1 , ex 2 , ex 3 |
88 | if ( year ( h : h ) == "|" ) year ( h : h ) = "/" |
90 | end subroutine parserRead 1 |
|
|