fortran主程序调用一个子程序,子程序又调用另一个子程序,如何编译。

fortran主程序调用一个子程序,子程序又调用另一个子程序,如何编译。,第1张

大致思路就是只要不把他们放在一个程序内就OK了,放在同一个文件或者不同f文件都是一样的。对于第二个问题,回答也是可以的

比如说这样的程序调用:

PROGRAM

MAIN

CALL

SUB1

END

SUBROUTINE

S

CALL

SUB2

END

SUBROUTINE

SUB2()

CALL

SUB3

END

SUBROUTINE

SUB3()

END

这几个子程序主程序PROGRAM

MAIN可以放在同一个f文件里面编译,也可以分别放置不同f文件,编译时效果一样。

调用子程序很简单的,主程序里加M98Pxxxx(xxxx为子程序的程序号),另外还要编一个程序为Oxxxx的程序,程序的结尾一定要以M99结尾加工运行主程序时执行到M98Pxxxx后就会自动调用Oxxxx程序,一直执行至遇到M99后会自动返回主程序的

如用G10座标偏移一次加工5个产品的主程序

以下是加工的主程序:

Oxxxx

G28 U0 W0

G10 P0 X0 Z0

M98 P(调用加工程序) 第一个零件

M1

G10 P0 X0 Z_(Z为一个总长)第二个零件

M98 P

M1

G10 P0 X0 Z_(Z为二个总长)第三个零件

M98 P

M1

G10 P0 X0 Z_(Z为三个总长)第四个零件

M98 P

M1

G10 P0 X0 Z_(Z为四个总长)第五个零件

M98 P

M1

G28 U0 W0

G10 P0 X0 Z0

M30

子程序格式:

O

T0101 M3 S2000

M99

你这种情况不是子程序反回主程序的问题,而是你的子程序2有问题,你仔细检查一下没有执行的子程序的代码。下面的代码运行完全正常 Rem 开始 Call 子程序1() Call 子程序2() Call 子程序3() Goto 开始 Sub 子程序1() MessageBox "我是子程序1" End Sub Sub 子程序2() MessageBox "我是子程序2" End Sub Sub 子程序3() MessageBox "我是子程序3" End Sub

能的。

比如以下实例:

#include <iostream>

void A()

{};

void a()

{

cout>>"a">>endl;

};

void b()

{

a();//,a函数定要先于b函数声明

}

void main()

{

A();

a();

b();

}

运行这个程序,结果为

a

a

说明a()运行了两次。一次自身调用,还有一次是通过b()函数实现的。C语言也是同样的。

因此C/C++ 中子程序(子函数)能相互调用。

子程序(subroutine)是一个概括性的术语,任何高级程序所调用的程序,都被称为子程序。它经常被使用在汇编语言层级上。子程序的主体(body)是一个代码区块,当它被调用时就会进入运行。

一般程序设计语言包含两种基本的抽象:过程抽象和数据抽象。过程抽象有时也称控制抽象。子程序是最主要过程抽象机制。面向对象语言中的方法与子程序的概念十分相似,不同在于它们的调用以及它们与类或对象关联的方式。每个子程序只有一个入口。在执行期间,调用程序单位被停止执行,即任意时刻只有一个子程序在执行子程序执行完毕后,总是将控制返回给调用程序

扩展资料:

子程序的应用

1、零件上若干处具有相同的轮廓形状,在这种情况下,只要编写一个加工该轮廓形状的子程序,然后用主程序多次调用该子程序的方法完成对工件的加工。

2、加工中反复出现具有相同轨迹的走刀路线,如果相同轨迹的走刀路线出现在某个加工区域或在这个区域的各个层面上,采用子程序编写加工程序比较方便,在程序中常用增量值确定切入深度。

3、在加工较复杂的零件时,往往包含许多独立的工序,有时工序之间需要适当的调整,为了优化加工程序,把每一个独立的工序编成一个子程序,这样形成了模块式的程序结构,便于对加工顺序的调整,主程序中只有换刀和调用子程序等指令。

参考资料来源:百度百科-子程序

参考资料来源:百度百科-计算机科学

编码不容易,望能帮到楼主。楼主好好看

CRLFMACRO;宏定义,实现回车换行

MOVAH,2

MOVDL,0DH

INT21H

MOVAH,2

MOVDL,0AH

INT21H

ENDM

DSEGMENT

SCOREDB76,69,84,90,73,88,89,63,100,80;数组接收分数

SDB5DUP();预留5个位置存储每个分数段的人数

WORDSDB"THENUMBERBETWEEN60~69IS:$"

WORDS1DB"THENUMBERBETWEEN70~79IS:$"

WORDS2DB"THENUMBERBETWEEN80~89IS:$"

WORDS3DB"THENUMBERBETWEEN90~99IS:$"

WORDS4DB"THENUMBERBETWEEN100IS:$"

DENDS

CODESEGMENT

ASSUMECS:CODE,DS:D

BG:

MOVAX,D

MOVDS,AX

CALLCOUNT;调用子程序

MOVAH,9;输出每个分数段的人数

LEADX,WORDS

INT21H

MOVAH,2

MOVDL,S

ADDDL,30H

INT21H

CRLF

MOVAH,9

LEADX,WORDS1

INT21H

MOVAH,2

MOVDL,S1

ADDDL,30H

INT21H

CRLF

MOVAH,9

LEADX,WORDS2

INT21H

MOVAH,2

MOVDL,S2

ADDDL,30H

INT21H

CRLF

MOVAH,9

LEADX,WORDS3

INT21H

MOVAH,2

MOVDL,S3

ADDDL,30H

INT21H

CRLF

MOVAH,9

LEADX,WORDS4

INT21H

MOVAH,2

MOVDL,S4

ADDDL,30H

INT21H

CRLF

MOVAH,4CH

INT21H

COUNT:;子程序入口

MOVCX,10;循环10次

MOVSI,0

LOP:

INT3

MOVAL,SCORE[SI]

CMPAL,70

JBNUMBER6;比较进入不同的标号进行计算每个分数段人数

CMPAL,80

JBNUMBER7

CMPAL,90

JBNUMBER8

CMPAL,100

JENUMBER10

JMPNUMBER9

NUMBER6:;不同标号之下的作用是计算每个分数段人数并存于预留的位置中

MOVBL,S

INCBL

MOVS,BL

JMPL

NUMBER7:

MOVBL,S1

INCBL

MOVS1,BL

JMPL

NUMBER8:

MOVBL,S2

INCBL

MOVS2,BL

JMPL

NUMBER9:

MOVBL,S3

INCBL

MOVS3,BL

JMPL

NUMBER10:

MOVBL,S4

INCBL

MOVS4,BL

JMPL

L:

INCSI

LOOPLOP

RET;子程序结束,放回主程序

CODEENDS

ENDBG

以上就是关于fortran主程序调用一个子程序,子程序又调用另一个子程序,如何编译。全部的内容,包括:fortran主程序调用一个子程序,子程序又调用另一个子程序,如何编译。、法兰克系统的 子程序怎么调用编个例子吧、关于子程序能继续调用另一个子程序吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10114639.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存