首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何定义与外部子例程同名的Fortran子例程?

在Fortran中,如果要定义与外部子例程同名的子例程,可以使用INTERFACE关键字来声明外部子例程的接口。接口声明可以包含子例程的名称、参数列表和返回类型。通过这种方式,编译器可以区分同名的子例程,并正确地链接它们。

下面是一个示例代码:

代码语言:txt
复制
INTERFACE
    SUBROUTINE external_subroutine(arg1, arg2)
        INTEGER, INTENT(IN) :: arg1
        REAL, INTENT(OUT) :: arg2
    END SUBROUTINE external_subroutine
END INTERFACE

SUBROUTINE external_subroutine(arg1, arg2)
    INTEGER, INTENT(IN) :: arg1
    REAL, INTENT(OUT) :: arg2
    ! 在这里实现子例程的功能
END SUBROUTINE

在上面的示例中,INTERFACE块声明了外部子例程external_subroutine的接口,包括参数列表和返回类型。然后,在接口声明之后,可以定义与外部子例程同名的子例程,并在其中实现具体的功能。

需要注意的是,接口声明和子例程定义之间的参数列表和返回类型必须一致,否则会导致编译错误。

对于Fortran的云计算相关问题,腾讯云提供了一系列的产品和服务,例如云服务器、云数据库、云存储等。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于腾讯云的信息和产品介绍。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ABAP 模块化编程概念详解

类型: 内部子例程:内部子例程的源代码与调用程序位于同一个ABAP程序 中 外部子例程:外部子例程的源代码位于另外的ABAP程序中,而不是位于调用程序内部。...注意: 子例程中应避免使用主程序的变量,应使用参数 在子例程中定义的变量,只在子例程中有效 子例程的定义方式 子例程定义方式 子例程的定义方式: 以FORM开头、以 ENDFORM 结尾的...: 在主程序中定义的变量 这些变量在整个主程序和调用的每个子例程中均可见(可进行处理) 局部变量: 在子例程中定义的变量称作局部变量, 这些变量只存在于相关的子例程中(与形式参数相同),只能在子例程中使用...注意: 当全局变量和局部变量同名时,在子例程中局部变量起作用,而全局变量的值不改变。..."INCREMENT为宏的名称。 ...... END-OF-DEFINITION. 与子例程不同的是,宏通过&N(N为索引)接收传入的参数,不需要定义接收参数的类型及格式。

1.6K21

【SQL国际标准】ISOIEC 9075:2023 系列SQL的国际标准详情

在该等效编译单元中,每个嵌入的 SQL 语句都已替换为一个或多个宿主语言语句,其中一些语句调用外部调用的 SQL 过程,该过程在执行时具有与执行 SQL 语句等效的效果; — 用于直接调用 SQL...外部调用的过程>和 的例程>的数据库语言包括以下功能。 —用于指导控制流的语句规范。 —将表达式的结果分配给变量和参数。...它还包括信息架构表的定义,这些表包含与 SQL 服务器模块和 SQL 调用的例程相关的架构信息。 ISO/IEC 9075-5至8官网暂无此内容。...—SQL 数据的结构和完整性约束。 —与 SQL 数据相关的安全和授权规范。 —ISO/IEC 9075 系列的功能和子功能,以及每个在 SQL 实现中的支持。...SQL调用例程的能力,并使用Java编程语言定义的类作为SQL结构化用户自定义类型。

58700
  • Architecture of SQLite

    这里的信息对于那些想理解或修改SQLite内部工作的人很有用。 附近的图表显示了SQLite的主要组件以及它们如何进行互操作。 下面的文本解释了各种组件的角色。 ?...为了避免名称冲突,SQLite库中的所有外部符号都以前缀sqlite3开头。那些用于外部使用的符号(换句话说,那些构成SQLite的API的符号)添加了下划线,因此以sqlite3开头。...attach.c、delete.c、insert.c、select.c、trigger.c update.c和vacuum.c文件处理同名SQL语句的代码生成。...vdbe.h头文件定义了虚拟机与SQLite库和vdbeInt.h的其余部分之间的接口,后者定义了虚拟机本身私有的结构和接口。其他各种vdbe*.c文件是虚拟机的帮助程序。...utf.c源文件包含Unicode转换子例程。SQLite在printf.c中有自己的printf()私有实现(带有一些扩展),在random.c中有自己的伪随机数生成器(PRNG)。

    1.4K30

    如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果

    最近接手一个小项目,要求使用谷歌的aapt.exe获取apk软件包中的信息。依稀记得去年年中时,有个同事也问过我如何获取被调用进程的输出结果,当时还研究了一番,只是没有做整理。...但是,实际情况并不是我们想的那么简单。比如我文前提到的问题:别人提供了一个Console控制台程序,我们将如何获取其执行的输出结果呢?...它是我们启动子进程时,控制子进程启动方式的参数。...我们之后将hWrite交给我们创建的子进程,让它去将信息写入管道。而我们父进程,则使用hRead去读取子进程写入管道的内容。...,外部一定要释放这段空间以免造成内存泄露。

    3.9K10

    Python 异步: 协程(4)

    现在我们对什么是协程有了一些了解,让我们通过将它们与其他熟悉的编程结构进行比较来加深这种理解。 2. 协程与例程和子例程 “例程”和“子例程”在现代编程中通常指的是同一事物。...也许更准确地说,例程是程序,而子例程是程序中的函数。例程有子例程。它是一个离散的表达式模块,它被分配了一个名称,可以接受参数并可以返回一个值。...协程与生成器 生成器是一种可以暂停其执行的特殊函数。生成器函数可以像普通函数一样定义,尽管它在暂停执行并返回值时使用 yield 表达式。...协程与任务 子例程和协程可能代表程序中的“任务”。但是,在 Python 中,有一个称为 asyncio.Task 对象的特定对象。...协程与线程 协程比线程更轻量级。 Thread:与协程相比重量级 Coroutine:与线程相比是轻量级的。 协程被定义为一个函数。

    62630

    Python 异步: 协程(4)

    现在我们对什么是协程有了一些了解,让我们通过将它们与其他熟悉的编程结构进行比较来加深这种理解。2. 协程与例程和子例程“例程”和“子例程”在现代编程中通常指的是同一事物。...也许更准确地说,例程是程序,而子例程是程序中的函数。例程有子例程。它是一个离散的表达式模块,它被分配了一个名称,可以接受参数并可以返回一个值。...协程与生成器生成器是一种可以暂停其执行的特殊函数。生成器函数可以像普通函数一样定义,尽管它在暂停执行并返回值时使用 yield 表达式。...协程与任务子例程和协程可能代表程序中的“任务”。但是,在 Python 中,有一个称为 asyncio.Task 对象的特定对象。...协程与线程协程比线程更轻量级。Thread:与协程相比重量级Coroutine:与线程相比是轻量级的。协程被定义为一个函数。

    83020

    与机器学习算法相关的数据结构

    image.png 但是这些数据结构的好处是,即使在更通用的编程语言中,实现向量和矩阵也是很简单的,假设语言中有任何Fortran DNA。...左子节点中的值始终小于父节点中的值,而父节点中的值又小于右子节点中的值。因此,二叉树中的数据被自动排序。插入和访问在O(log n)平均有效。与链表一样,它们很容易转换为数组,这是树排序的基础。...通常,顶部的最高排序值是从堆中提取的,以便对列表进行排序。与树不同,大多数堆只是存储在数组中,元素之间的关系仅是隐式的。 堆叠 堆栈被定义为“先进后出”,一个元素被推到堆栈顶部,覆盖前一个元素。...3乘3的等式: image.png 结论 在我所做的大部分工作中,我使用了很多基本的固定长度数组。我使用复杂的数据结构,使程序在运行方式和与外部世界的接口方面更加流畅,也更方便用户使用。...问题 如果你想自己练习并实现ML算法的数据结构,请尝试解决以下一些问题: 1. 将矩阵向量乘法代码片段封装到一个名为MatrixTimeVectoral的子例程中,为子例程设计调用语法。 2.

    2.4K30

    Fortran 与 C 数组传递的三种方式

    02 Fortran 数组 在高级编程语言初期,Fortran 数组设计与 C 是一致的,只要拿到数组第一个元素的地址即可,相匹配上;但随着 Fortran 在科学计算领域的发展,其没有实现链表、哈希等内置数据结构...当然了,Fortran 与 C 函数可以通过指针(地址)传递数组,Fortran 与 Fortran 函数传递的方式,肯定也包括以上三种,以及新范式(:)的传递方式。...从 C 例程中访问数组 end program main ! 从 Fortran 读取 C 本地数组的方式 1: !...在 C 中打印:1.000000 2.000000 3.000000 这里在 Fortran 中绑定 C 中的同名数组,从而直接访问 C 数组。...从 C 例程中访问数组 end program main ! 从 Fortran 读取 C 本地数组的方式 2: ! 地址:2205703485936 !

    1.4K10

    汇编语言中断及外部设备操作篇--06

    RAM芯片 CMOS RAM 芯片 端口操作示例:提取CMOS RAM中存储的时间信息 在屏幕中间显示当前的月份 外设连接与中断 CPU通过端口与外部设备“连接” 外中断:由外部设备发生的事件引起的中断...(v1.0) 改写中断例程的方法 改写中断例程-以int 9为例 实现方法 用中断响应外设 如何操作外部设备?...BIOS提供的磁盘直接服务——int 13h 用BIOS int 13h对磁盘进行读操作 用BIOS int 13h对磁盘进行写操作 DOS中断对磁盘文件的支持——int 21H 让计算机“唱歌” 外部设备与如何被控制的...当一个程序中存在若干子功能的时候,一般不采用挨个判断方式,而采用查表法来决定当前应该调用哪一个子功能 ---- 读写磁盘 如何操作磁盘?...——int 21H ---- 让计算机“唱歌” 外部设备与如何被控制的?

    93910

    S7-200 smart做一个电机控制库

    组件"(Components) 节点:选择项目中的哪些子例程要作为指令包括在库中。 要包括子例程,请在左侧列表中选择子例程,然后单击"添加"(Add) 按钮。...要删除子例程,请选择右侧的子例程,然后单击"删除"(Remove) 按钮。 不能直接添加中断例程;但如果子例程引用了中断例程,STEP 7 Micro/WIN SMART 会自动包含该中断例程。...当打开新项目时,项目树中的库文件夹显示在项目选项中为用户自定义库配置的文件夹中的库,指令库的调用方法与子程序基本一样。...然后按照上述方法生成自定义库。注意此时使用V存储区的绝对寻址,或者定义符号表有误,则不能正常生成库指令。 如何更改库版本?...这个项目是包含库子例程代码的项目,而不是调用库指令的项目。 3.进行必要的更改。

    5.1K20

    如何编写可重入(Reentrant)且线程安全(Thread-safe)的代码

    可重入函数不能调用不可重入的函数。 不可重入的函数经常(但不总是)可以通过其外部接口和用法识别。例如 strtok 是不可重入的,因为它保存着将被分隔为子串的字符串。...标准库子例程被改写为可重入的。...然而,在多线程程序中可变通地使用线程不安全的子例程。注意,不可重入的函数通常都是线程不安全的,但将其改写为可重入时,一般也会使其线程安全。...C 标准函数库(libc.a) BSD兼容函数库(libbsd.a) 某些标准 C 函数是不可重入的,如 ctime 和 strtok 。它们的可重入版本函数名是原始子例程名添加“_r”后缀。...在编写多线程程序时,应使用子例程的可重入版本来替代原有版本。

    52321

    如何编写可重入(Reentrant)且线程安全(Thread-safe)的代码

    可重入函数不能调用不可重入的函数。 不可重入的函数经常(但不总是)可以通过其外部接口和用法识别。例如 strtok 是不可重入的,因为它保存着将被分隔为子串的字符串。...标准库子例程被改写为可重入的。...然而,在多线程程序中可变通地使用线程不安全的子例程。注意,不可重入的函数通常都是线程不安全的,但将其改写为可重入时,一般也会使其线程安全。...C 标准函数库(libc.a) BSD兼容函数库(libbsd.a) 某些标准 C 函数是不可重入的,如 ctime 和 strtok 。它们的可重入版本函数名是原始子例程名添加“_r”后缀。...在编写多线程程序时,应使用子例程的可重入版本来替代原有版本。

    22220

    用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    至此,我们实现了计算并绘制MACD指标线的功能,读者应该掌握了如何获得指定股票在指定时间段内的交易数据,而后可以稍微改写上述的范例程序,绘制出其他股票在指定时间范围内的MACD走势图。...return df 从第3行到第8行的程序语句通过import语句导入了必要的依赖包,第10行定义的calEMA方法和DrawMACD.py范例程序中的完全一致,所以就省略了该方法内部的代码。...第13行定义计算MACD的calMACD方法和DrawMACD.py范例程序中的同名方法也完全一致,但在最后的第15行,是通过return语句返回整个df对象,而不是返回仅仅包含MACD指标的相关列,这是因为...验证MACD指标卖点的CalSellPointByMACD.py范例程序与之前CalBuyPointByMACD.py范例程序很相似,下面只分析不同的程序代码部分。 1 # !...、calMACD和getMACDByCode三个方法和CalBuyPointByMACD.py范例程序中的代码完全一致,所以本节仅仅是给出了这些方法的定义,不再重复讲述了。

    4.2K10

    ARM汇编语言模块结构和条件执行

    常数可以是:数字、布尔值、字符、字符串 模块示例 AREA指令是一个伪指令,用于段定义。ARM汇编程序由段组成,段是相对独立的指令或数据单位,每个段由AREA伪指令定义,并定义段的属性。...此操作是通过将 ARM 半主机 SVC(缺省为 0x123456)与下列参数结合使用来完成的 r0 等于 angel_SWIreason_ReportException (0x18) r1 等于 ADP_Stopped_ApplicationExit...调用子例程 若要调用子例程,应使用跳转和链接指令,其语法是:BL destination BL 指令:将返回地址存放到链接寄存器中,将pc设置为子例程的地址。...destination是子例程的第一个指令处的标签,也可以是程序相对表达式。 在执行子例程代码后,可以使用 BX lr 指令返回。...按照约定,寄存器 r0 到 r3 用于将参数传递给子例程,并且 r0 还用于将结果传递回调用方。

    97340

    美团的技术实力怎么样?

    具体通过以下 5 个手段实现: 1、事件声明聚合: 发布者和订阅者只能使用预定义的事件,严格禁止使用临时事件,事件需要按照约定聚合定义在一个文件中(解决临时事件滥用问题); 2、区分不同组件的同名事件:...1.4 与美团 modular-event 对比有哪些什么不同? modular-event 使用静态常量定义事件,为什么 ModularEventBus 用接口定义事件?...与 @Ignore 不同是,@Deprecated 修饰的类或方法依然是有效的事件定义。 示例程序 // 虽然过时,但依然是有效的事件定义 @Deprecated("Don't use it.")...接口定义的一系列 observe() 接口订阅事件,使用示例: 示例程序 // 以生命周期感知模式订阅(不需要手动注销订阅) EventDefineOfMainEvents.open().observe...post() 接口发布事件,使用示例: 示例程序 // 发布事件,允许在子线程发布 EventDefineOfMainEvents.open().post("XIAO PENG") // 延迟发布事件

    74610
    领券