-qextname
类别
用途
为所有全局实体的名称添加下划线。
语法
@PROCESS:
@PROCESS EXTNAME[(name1, name2,...)] | NOEXTNAME
缺省值
-qnoextname
参数
- NAME
- 标识某个特定的全局实体(或多个实体)。 对于指定实体的列表,以冒号分隔每个名称。 例如:name1: name2:...。
主程序的名称不受影响。
用途
-qextname 选项有助于将混合语言程序移植到 IBM Open XL Fortran ,而无需修改。
使用此选项可避免可能由以下原因引起的命名问题:
- 名为 main, MAIN或与系统子例程同名的 Fortran 子例程,函数或公共块
- 从 Fortran 引用并在例程名称末尾包含下划线的非Fortran 例程注: IBM Open XL Fortran 服务和实用程序过程 (例如 flush_ 和 dtime_) 的名称中已包含这些下划线。 通过使用 -qextname 选项进行编译,您可以在没有尾部下划线的情况下对这些过程的名称进行编码。
- 非Fortran 例程,用于调用 Fortran 过程并在 Fortran 名称末尾使用下划线
- 非Fortran 外部或全局数据对象,在数据名称末尾包含下划线并与 Fortran 过程共享
如果程序只有几个 -qextname 解决的命名问题实例,那么您可能希望使用 ld 命令的 -brename 选项来选择新名称。
必须使用相同的 -qextname 设置来编译程序的所有源文件,包括任何必需模块文件的源文件。
如果使用 xlfutility 模块来确保正确声明服务和实用程序子程序,那么在使用 -qextname进行编译时,必须将名称更改为 xlfutility_extname 。
如果在编译单元中引用了多个 "服务和实用程序" 子程序,那么使用未指定名称的 -qextname 和 xlfutility_extname 模块可能会导致过程声明检查无法正确工作。
此选项还会影响在 -qextern, -qinline和 -qsigtrap 选项中指定的名称。 您不必在命令行上包含其名称中的下划线。
示例
@PROCESS EXTNAME
SUBROUTINE STORE_DATA
FLUSH(10) ! Using EXTNAME, we can drop the final underscore.
END SUBROUTINE
@PROCESS(EXTNAME(sub1))
program main
external :: sub1, sub2
call sub1() ! An underscore is added.
call sub2() ! No underscore is added.
end program
