使用gfortran时OPEN语句中MAXREC说明符出现语法错误求助
解决gfortran编译SGI遗留Fortran OPEN语句的语法错误
问题原因
你原来在SGI Unix上运行的代码用了非标准的maxrec参数——SGI自家的Fortran编译器允许在OPEN语句里用这个参数指定直接访问文件的最大记录数,但gfortran严格遵循标准Fortran语法,根本不认maxrec这玩意儿,所以才会报语法错误,跟参数顺序没关系。
修复方法
直接删掉maxrec=2606这个参数即可,标准Fortran的直接访问文件不需要预先声明最大记录数,只要读写时使用的记录号在文件实际存在的范围内就行。
修正后的代码
open(unit=14, recl=185, file='fort.15', status='old', 1 access='direct')
或者按你调整后的参数顺序编写(仅风格差异,不影响编译):
open(unit=14, file='fort.15', status='old', access='direct', 1 recl=185)
额外提醒
如果原代码中有依赖maxrec做记录数校验的逻辑,需要手动在代码中添加校验:比如在读写记录前判断记录号是否≤2606,避免出现越界访问的问题。
内容的提问来源于stack exchange,提问作者Trisha
相关产品推荐
相关产品推荐

