资源描述:
《fortran90程序设计chapter13》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、13.1接口界面块第十三章接口与模块13.1接口界面块在调用执行外部子程序时,一般要用EXTERNAL语句对调用的外部子程序进行声明,但这种声明只给出外部子程序名,并没有给出外部函数子程序名和参数的类型。由于主调程序单元与外部子程序独立编写,分别编译,所以仅声明子程序名有时系统难以获得外部子程序详细、准确的调用信息,从而无法正确编译,导致程序调用失败。FORTRAN90新增接口界面块功能可有效解决这些问题,同时还能提高程序的可读性。接口界面块可用在主程序单元、模块单元、外部子程序单元中,以指明主调程序与被调用外部子程序之间的接口信息,以便保证外部子程序的正确使用。例如,
2、使用接口界面块求三个整数最大值的示例程序如下:!主程序单元PROGRAMmainIMPLICITNONEINTERFACEFUNCTIONmax3(a,b,c)IMPLICITNONEINTEGERmax3,a,b,cENDFUNCTIONENDINTERFACEINTEGERx,y,zREAD*,x,y,zWRITE(*,"(1X,'三个数的最大值为:',I4)")max3(x,y,z)END!求三个整数最大值的外部函数子程序FUNCTIONmax3(a,b,c)INTEGERmax3,a,b,c,maxmax=aIF(B>max)max=BIF(C>max)max=
3、Cmax3=maxENDFUNCTION36513.1接口界面块接口界面块如同EXTERNAL语句一样,在一般情况下可缺省。对于一些常规函数和子例行程序,使用时不需要用INTERFACE接口声明它们的接口信息,但遇到以下情况必须在主调程序中使用接口界面块:l外部函数返回结果是一个数组,即外部函数名类型为数组。l外部函数返回结果是一个字符串,且长度不是常数,也不是假定长度(*)。l外部函数返回结果是一个指针。l外部子程序形式参数(哑元)是一个数组片段。l外部子程序实在参数是关键字变元或是缺省的可选变元。l外部子程序扩展了赋值号的使用范围。l外部子程序参数个数不确定。l外部
4、子程序改变参数传递位置。接口界面块的一般格式:<接口界面块>→INTERFACE<接口界面体>ENDINTERFACE<接口界面体>→{<函数接口界面定义>∣<子例行程序接口界面定义>}<函数接口界面定义>→[<类型>]FUNCTION<函数名>(<形式参数表>)<函数名形式参数类型说明>ENDFUNCTION<子例行程序接口界面定义>→SUBROUTINE<子例行程序名>(<形式参数表>)<形式参数类型说明>ENDSUBROUTINE说明:①接口界面块可出现在除BLOCKDATA数据块单元以外的其它三个程序单元(主程序单元、外部子程序单元、模块单元)中,放置在程序单元
5、说明部分前面。②接口接体可以并列包含若干个函数或子例行程序接口界面定义。③每个函数或子例行程序接口定义只给出子程序的FUNCTION语句、SUBROUTINE语句、函数名与形式参数类型说明部分、ENDFUNCTION语句、ENDSUBROUTINE语句,不允许出现可执行语句。④接口界面体中的函数名、子例行程序名、形式参数个数和形式参数类型必须与被调用的函数名、子例行程序名、形参个数和形参类型相同,但形参名称可以不同。⑤接口界面体中不允许出现ENTRY、DATA、FORMAT、语句函数语句。例如,定义一个接口界面块,声明了2个子例行程序接口界面和2个函数接口界面。INTE
6、RFACE!定义矩阵相乘子例行程序P1接口界面SUBROUTINEP1(A,B,C)INTEGER,DIMENSION(50,50)::A,B,CENDSUBROUTINE!定义矩阵转置子例行程序P2接口界面36513.1接口界面块SUBROUTINEP2(A1,A2)INTEGER,DIMENSION(40,50)::A1,A2ENDSUBROUTINE!定义矩阵相乘函数F1接口界面FUNCTIONF1(X,Y)INTEGER,DIMENSION(50,50)::F1,X,YENDFUNCTION!定义计算向量X和Y内积的函数F2接口界面FUNCTIONF2(X,Y)
7、REALF2,X(10),Y(10)ENDFUNCTIONENDINTERFACE接口界面块定义后,在调用其定义的外部子程序时可使用关键词指定实在参数,允许改变实在参数传递位置,如:CALLP1(matrix1,matrix2,matrix3)!按形参定义次序依次传递CALLP1(A=matrix1,C=matrix3,B=matrix2)!按指定形参关键字传递CALLP1(A=matrix1,C=matrix3)!B数组内容区默认值13.2模块外部子程序为人们提供了一种并行设计、共享使用子程序的有效机制,对提高程序设计质量和效率有很大帮