fortran - 如果只有一种阅读格式不正确,如何避免在屏幕上打印所有阅读格式错误消息?
问题描述
这是我的简单(测试)代码:
MODULE TEST_MODULE
USE, INTRINSIC :: ISO_C_BINDING
IMPLICIT NONE
INTEGER, PARAMETER :: IP = C_INT
INTEGER, PARAMETER :: LP = C_BOOL
INTEGER, PARAMETER :: CP = C_CHAR
INTEGER( IP ), PARAMETER :: UN = 15
INTEGER( IP ) :: DATA_00, DATA_01, DATA_02
CHARACTER(*), PARAMETER :: FMTR = 'BASE\DATA_STORAGE.TXT'
CONTAINS
FUNCTION DATA_READING( ) RESULT( ERROR_TMP )
LOGICAL( LP ) :: ERROR_TMP
ERROR_TMP = .FALSE.
OPEN( UNIT = UN, FILE = FMTR, ACTION = 'READ', STATUS = 'UNKNOWN', ERR = 100 )
READ( UN, * , ERR = 101 ) DATA_00
READ( UN, * , ERR = 102 ) DATA_01
READ( UN, * , ERR = 103 ) DATA_02
CLOSE( UNIT = UN, STATUS = 'KEEP')
RETURN
100 WRITE(*,*) "ERROR - NO SUCH A FILE OR FILE LOCATION !!!"
ERROR_TMP = .TRUE.
101 WRITE(*,*) "ERROR - FMT OF READING - DATA_TMP_00 - 101 !!!"
ERROR_TMP = .TRUE.
102 WRITE(*,*) "ERROR - FMT OF READING - DATA_TMP_01 - 102 !!!"
ERROR_TMP = .TRUE.
103 WRITE(*,*) "ERROR - FMT OF READING - DATA_TMP_02 - 103 !!!"
ERROR_TMP = .TRUE.
END FUNCTION DATA_READING
END MODULE TEST_MODULE
PROGRAM TEST_CODE
USE, NON_INTRINSIC :: TEST_MODULE
IMPLICIT NONE
LOGICAL( LP ) :: GLOBAL_ERR
GLOBAL_ERR = DATA_READING()
IF ( GLOBAL_ERR ) STOP ( "ERROR - DATA READING !!!" )
PRINT *, DATA_00
PRINT *, DATA_01
PRINT *, DATA_02
END PROGRAM TEST_CODE
该DATA_STORAGE.TXT
文件包含:
1407
1408
1409
当我运行程序时,它会以正确的方式从指定文件加载数据——不会出现全局错误消息,因为文件中的所有数据都是整数类型。例如,如果第一个数据的值1407.23
是真实类型的,则在启动后,程序将在屏幕上打印所有错误标签,包括关于是否存在全局错误的标签。
我的问题是:
如何在屏幕上只打印属于输入格式不正确的数据的错误标签?
代码在两个IDE中测试:
Code::Blocks 1712 GFortan 6.3.0
Visual Studio 2010 with Intel Parallel XE 2011
解决方案
推荐阅读
- vue.js - 事件发出后如何处理道具状态的变化?
- ruby - 从 ruby 中的 rtf 文本解析纯文本
- java - 记住游戏算法的递归函数?
- mysql - mysqldump 一个带有表条件的数据库
- docker - 如何使用 network_mode 和 depends_on 配置 Docker Compose 容器
- mysql - 从大表中删除行时数据库锁定
- javascript - 为什么我不能总结一个数组的所有属性?
- java - 虽然我已经初始化了 lateinit 属性 songurl
- html - 这是什么符号,为什么它在 Chrome 中有效?
- laravel - Laravel 路线未定义,但路线存在并在修补程序中工作