编译旧Fortran代码报参数列表语法错误,求问题原因
报错原因分析
可能的触发原因
- 变量名拼写与使用混乱:你贴出的代码片段中if分支内赋值的变量是
i0l_canorg,但实际调用calc_supcan1的报错行第一个参数写的是i0lcanorg(缺少中间的下划线);同时你贴的代码片段里调用语句第一个参数用的是i_canorg,和你刚赋值的i0l_canorg完全是两个变量,变量名混用会直接导致参数列表解析错误。 - 数组下标非法:检查
r1rivout、r1envflw两个数组的声明长度,确认i_canorg的取值没有超过数组下标的合法范围,部分Fortran编译器遇到非法下标时会优先报参数列表语法错误,而非直接提示下标越界。 - 子程序形参与实参不匹配:核对
calc_supcan1的定义,确认它要求的入参数量、每个参数的类型(整型/实型)是否和你传入的参数完全对应,比如子程序要求第4个入参为整型,但你传入的是实型数组元素,也会触发这类语法报错。 - 未显式声明变量触发类型不匹配:Fortran默认I-N开头的变量为整型,其余为实型,如果你没有给
i0l_canorg这类新增变量加显式声明,编译器自动识别的变量类型可能和子程序要求的入参类型不符,进而引发参数列表报错。
内容的提问来源于stack exchange,提问作者lsr729
相关产品推荐
相关产品推荐

