一、列型程序的种类
例行程序有三种: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例行程序,将被视为致命错误,比如程序立即停止运行
