pml基础手册与总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PML开发介绍与总结
1 pml语言简介 (2)
1.1 pml变量 (2)
1.2 变量类型 (2)
1.3 自定义变量类型 (3)
1.4 定义变量 (3)
1.5 函数(Function)和方法(Method) (4)
1.6 使用ANY类型的变量作为函数参数 (5)
1.7 变量的方法 (6)
1.8 自定义变量类型的方法 (7)
1.9 方法的重载 (8)
1.10 Unset和Undefined (9)
1.11 删除变量 (10)
2 Pml的一些特点 (10)
3 Pml表达式 (11)
4 pml流程控制 (11)
4.1选择结构 (12)
4.2 do循环 (13)
4.3 GoLabel跳转语句 (14)
5 pml数组 (15)
5.1 定义数组 (15)
5.2 数组的赋值 (15)
5.3 多维数组 (15)
5.4 数组的方法 (16)
5.5 利用数组进行字符串处理 (17)
5.6 数组排序 (18)
5.7 Do values循环和Do indices循环访问数组变量 (19)
6 pml宏文件概念及其运行 (19)
6.1 概念 (19)
6.2 带参数的宏文件 (20)
语言简介介
1pml语言简
pml是用于pdms二次开发的面向对象的编程语言,它的面向对象属性是与其他脚本语言的最大区别,也是现代高级语言的基本特征。pml提供了编辑窗体和菜单的功能,且语法简单方便,使得pml能实现高级语言的大部分功能,用户可以开发自己的菜单窗体,完成需求定制。
pml提供了大量的变量类型(object type)及与变量类型相对应的方法(method)。pml 提供的方法实用,具有针对性。比如数组(Array object)可以存放不同的数据类型,可以进行排序、清空没有赋值的元素、查找、删除等等方法,这是大多数高级语言没有提供的功能。
1.1pml变量
对于pml语言,每个变量即是一个object,对应一个变量类型object type。不同类型的变量只能保存对应类型的数据。pml变量的特点:
变量名称唯一,且不能重复。
每个object type即是一个类(class),有属于类的通用的方法和属性。因此每个pml 的变量(object)都可以调用所属类的方法。
每个变量对应一个变量类型,在定义变量前,对应的变量类型必须存在。
1.2变量类型
Pml的变量类型比较多,可以分为三类,built-in、system-defined、user-defined。
Built-in变量类型包括以下几种:
字符串
实数
布尔
数组
system-defined变量类型包括Direction,Position,Orientation等多种类型,详细信息可以参考手册。
user-defined变量类型是指用户自定义的类型。
1.3自定义变量类型
Pml提供的变量类型可以满足大部分情况的使用,如果有需要,用户也可以定义自己的变量类型。下面是一个自定义变量类型的示例。
define object FACTORY
member .Name is STRING
member .Workers is REAL
member .Output is REAL
endobject
自定义变量类型的名称是FACTORY,该变量类型有3个成员(member),分别是
Name,Workers和Output。任意一个FACTORY类型的pml变量都默认有这3个成员。比如设变量!MyFactory是FACTORY类型,则可以通过!访问或赋值变量的Name成员,如下面的表达式分别读取和设置了变量!MyFactory的Name属性,!FactoryName = !
! = ‘APPLE’
Pml对成员的类型没有限制,自定义变量类型的变量也可以作为成员,如下例,成员Site 的类型是FACTORY。
define object PRODUCT
member .Code is STRING
member .Total is REAL
member .Site is FACTORY
endobject
为了方便区分,变量类型一般用大写表示,变量一般首字母大写。
自定义变量类型一般以变量类型的名称为文件名(字母必须是小写),以.pmlobj为后缀保存到PMLLIB文件夹下面。程序会自动加载定义文件。
1.4定义变量
Pml的变量分为全局变量(global)和局部变量(local)两种,全局变量在整个程序运行期间一直存在,而局部变量只在所在的宏文件或函数内有效。比如一个宏文件包含下面的语句,
!Y = 3
!!X = 5
$p $!Y $!!X
运行后得到结果 3 5
运行完成后在pdms中分别查询变量!Y和!!X,!Y是Undefined,而!!X是实数类型变量,值是5。因为!Y是局部变量,宏文件运行完成后自动释放。
Pml变量名的最大允许长度是16个字符(包含前面的符号!),变量名必须以字母开头,可以是字母和数字的组合。确定变量名时要简单易懂、避免重复,可以添加自定义的前缀进行区分。在编写程序时,为了避免重复和减少资源占用,应该尽量减少使用全局变量,使用!!CD为前缀的变量是系统预留的全局变量,在定义变量时要避免重复。
定义一个built-in类型变量(REAL,STRING,BOOL,ARRAY)可以通过直接赋值确定其变量类型,比如!MyVariable = 2,则变量! MyVariable会自动根据所赋值的类型确定为real 类型,不用另外指定变量类型。当定义一个值为空的变量时,可以采用如下的方
式!MyVariable2 = STRING(),指定!MyVariable的类型为字符串,而值为空(UNSET)。
对应其他类型变量的定义需采用下面的形式,!MyVariable3 = object DIRECTION()
和方法((Method)
1.5函数
函数((Function)和方法
函数一般定义在一个单独的文件中,文件名必须是小写的函数名称,后缀为.pmlfnc。函数定义文件一般存放在PMLLIB文件夹中。每个函数定义文件只能包含一个函数,且文件的第一行必须是define function开头。所有的用户自定义函数都是global类型变量。
函数和方法类似,都可以带有参数和指定返回值。参数和返回值的类型必须在函数和方法定义时指定,当在主程序中调用函数或方法时必须把对应类型的值传递给函数或方法,经过处理后把返回值传递给主程序。
下面的语句定义了一个函数!!Area
Define Function !!Area( !Length is REAL, !Width is REAL ) is REAL
!Area = !Length * !Width
Return !Area
EndFunction
!!Area的功能是根据主程序传递过来的参数!Length和!Width计算矩形面积并将面积返回主程序。参数!Length、!Width 和返回值都是REAL类型,返回值用关键词Return指定,