三种例行程序(procdures,function,traps)的使用

一、列型程序的种类

例行程序有三种:Procedures, Functions 和Traps

Procedure没有返回值,可用指令直接调用

Function有特定类型的返回值,必须通过表达式调用

Trap例行程序提供处理中断的方法。Trap例行 程序和某个特定中断连接,一旦中断条件满足,将被自动执行。Trap例行程序不能在程序中直接调用。

二、例行程序范围

例行程序范围是指例行程序可被调用的范围。

例行程序的声明前带有 Local 标识,则该例行程序可在所属模块内调用,否则为Global。

在同一模块中,例行程序不能与其他例行程序和数据同名

在不同模块中, Global 例行程序不能与模块、另一个 Global 例行程序, Global 数据同名

例行程序范围的使用原则如下:

Global 例行程序可以包含在任何模块内

Local 例行程序只能在其所属的模块内被调用

在同一范围内,Local 例行程序隐含所有同名的Global 例行程序和数据

在同一范围内,例行程序隐含所有同名的指令和预定义例行程序及数据

三、列型程序数据

在调用带参数的例行程序时,必须提供相应实参。

例行程序的参数有四种存取模式:

INPUT-通常例行程序参数被设为该模式并作为例行程序数据来处理。在例行程序内改变该 变量对相应自变量没有影响。

INOUT-如果例行程序参数被设为该模式,则相应的自变量必须是可被例行程序修改的 VAR 或 RS数据

VAR -如果例行程序参数被设为该模式,则相应的自变量必须是可被例行程序修改的

VAR数据.

PERS-如果例行程序参数被设为该模式,则相应的自变量必须是可被例行程序修改的PERS数据

可选参数:一个例行程序参数可以被设置为可选参数,并在参数前带有“”标识, 用例行程序时,该参数可以缺省

可选参数在调用例行程序时缺省,则在程序中不被引用,这意味着该参数在使用之前要先检测是否缺省.

四、列型程序声明

一个例行程序包含例行程序声明(包括参数)、数据、程序体、一个backward handler(指针对procedure)和一个error handler。例行程序的声明不能嵌套。

五、程序列型Procedure

Procedure的声明:

举例如下:

Procedure的终止:

Procedure可以通过return指令终止运行,也可以通过例行程序的结束标识(ENDPROC、BACKWARD、ERROR)终止运行

Procedure的调用:

Procedure的调用在示教器上是通过指令ProcCall来完成的。在调用带有参数的例行程序时,强制参数必须指定,而且参数的顺序要正确;可选参数可以缺省。

六、列行程序--Function

Function的声明:

举例如下:

Function的终止:

Function 必须通return指令终止运行, return指令返回的数据类型必须与Function的数据类型一致。

Function的调用:

Function必须通过表达式来完成调用,如赋值指令,不能通过 ProcCall来完成的。在调用带有参数的Function 时,强制参数必须指定,而且参数的顺序要正确;可选参数可以缺省。

七、列行程序--Trap

Trap 的声明:

举例如下:

Trap 的终止:

Trap可以通过return指令终止运行,也可以通过例行程序的结束标(ENDTRAP、ERROR)终止运行。然后在中断触发点继续执行。

Trap的调用:

Trap例行程序提供了处理中断的方法。一个中断例行程序必须通过CONNECT指令与某个特定的中断连接。一旦中断触发,控制会立即转移到相应的Trap例行程序;如果中断触发,但是没有相关联的Trap例行程序,将被视为致命错误,比如程序立即停止运行

原文地址:https://www.cnblogs.com/csflyw/p/11707644.html