Fortran 77行续接是否必须在第73列放置&符号?
Fortran 77行尾第73列&符号的作用说明
首先直接给出核心结论:标准Fortran 77固定格式语法中,第73列的&不是行续接的必需项,是否可删除取决于你使用的编译器和编译选项。
基础规则背景
标准Fortran 77采用固定格式语法,对每行列的用途有严格定义:
- 第1-5列:语句标号区
- 第6列:续行标记区(非空格/非0的字符就代表当前行是上一行的续行,你已知的第6列&就是这类标记)
- 第7-72列:有效代码区
- 第73列及以后:默认被编译器忽略,最初是为穿孔卡预留的序号位
行尾&的实际用途
你看到的第73列的&,是多数现代Fortran编译器新增的非标准扩展特性,主要用于开启「允许代码行超过72列」的编译选项时,明确标记当前行需要续接,避免编译器把72列之后的内容识别为有效代码产生歧义。
不同场景下的处理建议
- 如果你使用严格兼容标准Fortran 77的编译规则(不开启长行扩展):73列的&会被编译器直接忽略,完全可以删除,只靠第6列的续行标记就能正常完成行续接,删除后的标准写法如下:
CHARACTER*256 MYSTRING DATA MYSTRING / 'Lorem ipsum dolor sit amet, consectetur adipiscin &g elit, sed do eiusmod tempor incididunt ut labore et dolore magna & aliqua.' / PRINT *, MYSTRING
- 如果你使用较新的编译器,且开启了支持长于72列代码行的扩展选项:建议保留73列的&,部分编译器在该模式下如果没有行尾&,会将前后两行识别为独立语句,引发字符串未闭合的语法错误。
- 如果没有强制使用Fortran 77的要求,更建议切换到Fortran 90及以后的自由格式语法,不需要受列数限制,续行规则也更灵活。
内容的提问来源于stack exchange,提问作者Flux
相关产品推荐
相关产品推荐

