《COP语法手册》word版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
柜面操作平台COP语法手册
目录
COP类型定义 (4)
常量 (4)
数据类型 (4)
COP的变量 (5)
COP的运算符和表达式 (5)
COP资源定义 (6)
域单元定义(Field) (6)
XML格式定义 (6)
内容说明 (7)
示例 (8)
表格单元的定义(Grid) (8)
XML格式定义 (8)
内容说明 (9)
示例 (9)
选择列表单元的定义(List) (10)
XML格式定义 (10)
内容说明 (11)
示例 (11)
菜单单元的定义(Menu) (12)
XML格式定义 (12)
内容说明 (13)
示例 (13)
窗口单元的定义(Window) (15)
XML格式定义 (15)
内容说明 (16)
示例 (17)
资源定义操作函数 (19)
资源命名规则 (19)
COP基本语法 (19)
语法约定 (19)
函数定义 (20)
变量的定义和赋值 (20)
记录和数组的定义 (21)
类型定义 (21)
条件语句 (22)
关系运算符和关系表达式 (22)
逻辑运算符和关系表达式 (22)
IF语句 (23)
SWITCH语句 (23)
循环语句 (24)
GOTO语句 (24)
WHILE语句 (25)
FOR语句 (25)
BREAK语句和CONTINUE语句 (26)
C函数调用语句 (27)
资源对象操作方法 (27)
数据域对象操作方法 (27)
菜单对象操作方法 (30)
列表对象操作方法 (30)
表格对象操作方法 (30)
窗体对象操作方法 (34)
文件对象操作方法 (39)
设备对象操作方法 (40)
终端操作方法 (40)
密码键盘操作方法 (40)
磁卡读写器操作方法 (41)
打印机操作方法 (41)
通用设备操作方法 (42)
通讯设备操作方法 (43)
数据库操作语句 (43)
外部调用接口 (43)
SQL简介 (44)
SQL语句 (46)
视图操作语句 (46)
表操作语句 (47)
索引操作语句 (49)
记录操作语句 (50)
游标操作语句 (51)
数据库操作语句 (51)
其它操作函数及变量 (53)
常用函数 (53)
其他函数 (54)
COP内部变量 (55)
调试语句 (55)
COP类型定义
常量
●整型常量
如12,56等。
●浮点型常量
如3.14159,2.18等。
●字符型常量
如“ABC”,“C12x”等,COP平台不识别以‘’标识的字符。
●进制型常量
如 0x123345AB7E等, COP要求16进制型常量为偶数位,否则将丢失最后一位。
数据类型
COP提供以下数据类型:
●INTEGER
整数,同C语言的int型,定义的范围:(-2,147,483,647,+2,147,483,647)。
●CHAR(n)
长度为n的字符串,占用n+1个字节空间,n=1时,代表字符。
●FLOAT
浮点数,同C语言的double,占用8个字节空间。
●DECIMAL(m,n)
十进制浮点数,有效位数为m(m<=32),小数点后为n(n<=m)位,占用空间同数据库的dec_t型。
●DATE
日期类型,以long类型存储DATE类型变量,表示始于1899年12月31日以来的天数。
DATE型变量的输入和显示形式为“YYYY/MM/DD”(年/月/日)。
●TIME
时间类型,COP以long类型存储TIME类型变量,表示始于零时零分零秒以来的秒数。
TIME型变量的输入和显示形式为“HH:MM:SS”(时:分:秒)。
●CHN(n)
双字节型字符串类型,占用n+1个存储单元,要求n=2*m。
●HEX(n)
二进制类型,占用n个存储单元。
●STRUCT
结构类型,COP允许自定义结构类型数据。
COP以”结构变量名.名”引用结构变量。
格式:
STRUCT struct_name
{
标识符类型
+
}
●ARRAY(n)
数组类型
格式: VAR 变量名(n)类型名
数组定义中,元素的类型名为以上的基本类型或自定义类型,数组的下界为1,上界为n。
COP的变量
和其它高级语言一样,在COP中用来标识变量名、函数名、数组名、数据类型名的有效字符称为标识符(identifier)。
简单地说,标识符就是一个名字。
COP规定标识符只能由字母、数字和下划线三种字符组成,并且第一个字符必须是字母或下划线。
如下面是合法的标识符,也是合法的变量名。
sum, average, class, _above, student1, base
一个变量应该有一个名字,在内存中占据一定的存储单元,在该单元中存放变量的值。
COP对变量名的大小写敏感。
COP中变量的定义方法如下:
VAR 变量名类型名
COP的运算符和表达式
COP支持如下运算符:
⏹算术运算符:+,-,*,/,%(整数取模)
⏹串连结运算符:^
⏹关系运算符:〉,〈,>=,<=,= =,!=
⏹逻辑运算符:!(逻辑非),&&(逻辑与),| |(逻辑或)
COP的表达式:
用运算符和括号将运算对象(也称操作数)连接起来的、符合COP语法规则的式子称COP表达式。
运算对象包括常量、变量、函数、对象等。
例如,下面是一个合法的COP表达式:
a*b/c-1.5
COP语言规定了运算符的优先级和结合性。
在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。
如果在一个运算对象两侧的运算符的优先级别相同,则按规定的“结合性”处理。
COP规定了各种运算符的结合性,算术运算符和串连结运算符的结合性为“左结合”,即运算对象先与左面的运算符结合。
在逻辑运算符中,“&&”和“| |”也是“左结合”,“ !”为“右结合”。
关系运算符没有结合性。
表达式具有如下含义:
可以是一个对象的一个属性;
可以是一个变量;
可以是一个常量;
可以是一个数据单元;
可以是一个函数;
可以是另外两个表达式的加、减、乘、除、求模、连结;
可以是单目运算符‘-’后紧跟另外一个表达式。
COP资源定义
COP语法规则的资源定义采用XML技术,将资源定义信息存放在XML格式文件中,文件的格式定义符合XML的“WELL FORMED”的要求。
COP资源定义采用XML格式进行描述,以节点作为定义描述的基本单位,每个节点定义描述资源的某一属性。
由于其采用了节点定义的方式,而对节点解析时可以忽略某些节点的存在,故使其在应用中的扩展极为方便,对于以后应用中的扩展将不影响原来的定义。
资源定义的文件命名采用以定义的资源名称加“.xml”后缀,如数据域ZHANGH的资源定义文件名为ZHANGH.xml、窗口win9301I1的资源定义文件名为win9301I1.xml等。
不同的资源(数据域单元、表格单元、选择列表单元、菜单单元、窗口单元)定义文件放在不同的目录下,由相应的环境变量分别指定(FLDPATH、GRIDPATH、LISTPATH、MENUPATH、WINPATH)。
域单元定义(Field)
XML格式定义
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_FieldUnit UnitName="fld_name" Type="valuetype" Version=“ver_no”> <Title>%s</Title>
<MaxLength>%d</MaxLength>
<Scale>%d</Scale>
<DispSize>%d</DispSize>
<DispFormat>%s</DispFormat>
<ObjName>%s</ObjName>
<DefaultValue>%s</DefaultValue>
<InputFormat>%c</InputFormat>
<OutputFormat>%c</OutputFormat>
<ForeColor>%s</ForeColor>
<Align>%c</Align>
<VerifyMode>%c</VerifyMode>
<ShiftMode>%c</ShiftMode>
<AutoSkip>%c</AutoSkip>
<ListBox>%s</ListBox>
<PreAction>%s</PreAction>
<EditAction>%s</EditAction>
<PostAction>%s</PostAction>
<Help>%s</Help>
</Cop_FieldUnit>
内容说明
fld_name 数据域名称
valuetype 数据域值类型
<Title> 数据域说明
<MaxLength> 数据域值的长度
<Scale> 值类型为float,decimal型
时小数位长度
<DispSize> 数据域在显示时的长度
<DispFormat> 数据域的显示模式(模版)
<ObjName> 数据域所属OBJ名称
<DefaultValue> 数据域定义的缺省值
<InputFormat> 数据域的输入模式
<OutputFormat> 数据域的输出模式
<ForeColor> 数据域的显示颜色
<Align> 数据域值的对齐方式
<VerifyMode> 数据域的值校验模式
<ShiftMode> 数据域自动转换模式
<AutoSkip> 数据域自动跳转标志
<ListBox> 数据域关联选择列表
<PreAction> 数据域域前调用过程
<EditAction> 数据域编辑中调用过程
<PostAction> 数据域后调用过程
<Help> 数据域帮助信息、注释
字段的取值说明:
valuetype 数据域值类型,包括CHAR,INTEGER,DECIMAL,TIME,DATE,SHORT,FLOAT,CHINESE,HEX等;
<InputFormat> 数据域的输入模式,0-只读(光标不进入) 1-可输 2-必输3—只读(光标可进入) 4-列表必输;5—覆盖模式可输 6—覆盖模式必输
<OutputFormat> 数据域的输出模式, 0-不显示 1-正常显示2-反转显示 3-高亮显示 4-下划线 5-显示X…..;
<ObjName> 数据域所属OBJ名称, 目前只支持0-一般类型;
<ForeColor> 数据域的显示颜色,保留;
<Align> 数据域值的对齐方式,0-左对齐 1-右对齐;
<VerifyMode> 数据域的值校验模式,是否要求两次输入并检查其一致性;
<ShiftMode>数据域自动转换模式,0-不转换 1-转换为大写 2-转换为小写;
<AutoSkip>数据域自动跳转标志,1—是 0—否。
示例
数据域单元ZHANGH(帐号)的XML定义如下所示:(ZHANGH.xml)
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_FieldUnit UnitName="ZHANGH" Type="CHAR" Version="1.0">
<Title>帐号</Title>
<MaxLength>20</MaxLength>
<Scale>0</Scale>
<DispSize>20</DispSize>
<DispFormat>NNNNNNNNNNNNNNNNNNNN</DispFormat>
<InputFormat>1</InputFormat>
<OutputFormat>1</OutputFormat>
<Align>0</Align>
<VerifyMode>0</VerifyMode>
<ShiftMode>0</ShiftMode>
<AutoSkip>1</AutoSkip>
<Help>帐户号</Help>
</Cop_FieldUnit>
表格单元的定义(Grid)
XML格式定义
<?xml version="1.0" encoding="GB2312" standalone="yes" ?> <Cop_GridUnit UnitName="grd_name" Version=“ver_no”> <Height>%d</Height>
<Width>%d</Width>
<MatrixY>%d</MatrixY>
<MatrixX>%d</MatrixX>
<Border>%s</Border>
<OpenMode>%s</OpenMode>
<Deltay>%d</Deltay>
<PreAction>%s</PreAction>
<EditAction>%s</EditAction>
<PostAction>%s</PostAction>
<Items>
[<Item ItemName=“fld_name” Type= “valuetype”>
<Title>%s
<Position>%d,%d</Position>
</Title>
<Size>%d</Size>
<Position>%d,%d</Position>
<DispSize>%d</DispSize>
<Format>%s</Format>
<PreAction>%s</PreAction>
<PostAction>%s</PostAction>
</Item>]+
</Items>
</Cop_GridUnit>
注:格式定义中的“[]”表示可选,“[]+”表示可以重复,关于说明同语法部分有关的说明(下同)。
内容说明
grid_name 表格的名称
<Height> 表格的高度
<Width> 表格的宽度
<MatrixY> 表格数据矩阵的行坐标
<MatrixX> 表格数据矩阵的列坐标
<Border> 表格显示有无边框标志
<OpenMode> 表格的编辑模式
<Deltay> 表格的行间距
<PreAction> 表格前调用的过程
<EditAction> 编辑表格时调用的过程
<PostAction> 退出表格时调用的过程<Items> 表格项内容
fld_name 表格项名称
valuetype 表格项值类型
<Title> 表格项标题
<Position> 表格项标题坐标(行坐标无效)
<Size> 表格项宽度
<Position> 表格项坐标(行坐标无效)
<DispSize> 表格项显示宽度
<Format> 表格项的显示模式
<PreAction> 表格项列前调用过程
<PostAction> 表格项列后调用过程
字段的取值说明:
<Border>表格显示有无边框标志,B-有边框;
<OpenMode>表格的编辑模式,包括模式隐藏(NODISPLAY)、只读(READONLY)、输入(INPUTMODE )。
示例
表格F93181的XML定义如下所示:(F93181.xml)
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_GridUnit UnitName="F93181" Version="1.0">
<Height>13</Height>
<Width>70</Width>
<MatrixY>1</MatrixY>
<MatrixX>1</MatrixX>
<Border>B</Border>
<OpenMode>I</OpenMode>
<Deltay>1</Deltay>
<PreAction>preF93181</PreAction>
<EditAction>pckF93181</EditAction>
<PostAction>pstF93181</PostAction>
<Items>
<Item ItemName="PATLCD" Type="CHAR">
<Title>柜员类型代码
<Position>1,1</Position>
</Title>
<Size>2</Size>
<Position>2,1</Position>
<DispSize>2</DispSize>
<Format>NN</Format>
<PreAction>prePATLCD</PreAction>
<PostAction>pstPATLCD</PostAction>
</Item>
<Item ItemName="PARCNM" Type="INTEGER">
<Title>增加条数
<Position>1,15</Position>
</Title>
<Size>2</Size>
<Position>2,15</Position>
<DispSize>2</DispSize>
<Format>NN</Format>
</Item>
</Items>
</Cop_GridUnit>
选择列表单元的定义(List)
XML格式定义
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_ListUnit UnitName="list_name",Type="valuetype" Version=“ver_no”> <Title>%s</Title>
<Height>%d</Height>
<Width>%d</Width>
<Position>%d,%d</Position>
<Help>%s</Help>
<Items>
[<Item>
<Value>%s</Value>
<Title>%s</Title>
<ActNo>%d</ActNo>
<Help>%s</Help>
</Item>]+
</Items>
<SubList>
[<sublist_name>value_list</sublist_name>]+
</SubList>
</Cop_ListUnit>
内容说明
list_name 选择列表单元的名称
valuetype 选择列表单元项的值类型
<Title> 选择列表单元的标题
<Height> 选择列表单元显示的高度(行数)
<Width> 选择列表单元显示的宽度(列数)
<Position> 选择列表单元的坐标
<Help> 选择列表单元的注释说明
<Items> 选择列表单元各子项
<Value> 选择列表单元子项值
<Title> 选择列表单元子项标题
<ActNo> 选择列表单元子项序号
<Help> 选择列表单元子项说明
<SubList> 选择列表单元的子列表
<sublist_name> 选择列表单元的子列表名称
value_list 选择列表单元的子列表值
字段的取值说明:
valuetype选择列表单元项的值类型,同FIELD类型。
示例
选择列表LBPNGZZL的XML定义如下所示:(LBPNGZZL.xml)
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_ListUnit UnitName="LBPNGZZL",Type="CHAR">
<Heigth>10</Height>
<Width>25</Width>
<Position>1,1</Position>
<Items>
<Item>
<Value>01</Value>
<Title>转帐支票</Title>
</Item>
<Item>
<Value>02</Value>
<Title>普通支票</Title>
</Item>
<Item>
<Value>03</Value>
<Title>现金支票</Title>
</Item>
</Items>
<SubList>
<LBCETY1001>01,02</LBCETY1001>
<SubList>
</Cop_List>
菜单单元的定义(Menu)
XML格式定义
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_MenuUnit UnitName="menu_name" Type=“menu_type” Version= “ver_no”> <Title>%s</Title>
<DispAttr>%s</DispAttr>
<Height>%d</Height>
<Width>%d</Width>
<Father>%s</Father>
<Help>%s</Help>
<Items>
[<Item Trcd=“trcd”>
<Title>%s</Title>
<ItemWidth>%d</ItemWidth>
<HotKey>%s</HotKey>
<Position>%d,%d</Position>
<Priority>%d</Priority>
<ActFlag>%s</ActFlag>
<ActName>%s</ActName>
<Help>%s</Help>
</Item>]+
</Items>
</Cop_MenuUnit>
内容说明
menu_name 菜单单元的名称
menu_type 菜单单元的类型
<Title> 菜单单元的标题
<DispAttr> 菜单单元的显示属性
<Height> 菜单单元的高度(显示行数)
<Width> 菜单单元的宽度(显示列数)
<Father> 菜单单元的父菜单项
<Help> 菜单单元的说明、注释
<Items> 菜单单元的各菜单项(子菜单)
trcd 菜单项(子菜单)的交易码
<Title> 菜单项(子菜单)的名称
<ItemWidth> 菜单项(子菜单)的宽度
<HotKey> 菜单项(子菜单)的热键
<Position> 菜单项(子菜单)的坐标
<Priority> 菜单项(子菜单)的优先级
<ActFlag> 菜单项(子菜单)的类型
<ActName> 菜单项(子菜单)过程(菜单)名称
<Help> 菜单项(子菜单)的说明、注释
字段的取值说明:
menu_type 菜单单元的类型,0—竖向菜单 1—横向菜单;
<ActFlag> 菜单项(子菜单)的类型, 1-程序或2-子菜单;
<ActName> 程序名或子菜单名。
示例
菜单sysmenu的XML定义如下所示:(sysmenu.xml)
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_Menu UnitName="sysmenu" Type="0" Version="1.0">
<Title>系统菜单</Title>
<DispAttr>2</DispAttr>
<Height>11</Height>
<Width>40</Width>
<Items>
<Item Trcd="">
<Title>交易码输入</Title>
<HotKey>1</HotKey>
<Position>1,1</Position>
<Priority>0</Priority>
<ActFlag>2</ActFlag>
<ActName>sysinputtrcd</ActName>
</Item>
<Item Trcd="">
<Title>交易菜单</Title>
<HotKey>2</HotKey>
<Position>2,1</Position>
<Priority>0</Priority>
<ActFlag>1</ActFlag>
<ActName>tranmenu(6,24)</ActName> </Item>
<Item Trcd="">
<Title>组合交易</Title>
<HotKey>3</HotKey>
<Position>3,1</Position>
<Priority>0</Priority>
<ActFlag>2</ActFlag>
<ActName>call8888</ActName>
</Item>
<Item Trcd="">
<Title>终端设置</Title>
<HotKey>4</HotKey>
<Position>4,1</Position>
<Priority>0</Priority>
<ActFlag>2</ActFlag>
<ActName>setterm</ActName>
</Item>
<Item Trcd="">
<Title>功能代码维护</Title>
<HotKey>5</HotKey>
<Position>5,1</Position>
<Priority>0</Priority>
<ActFlag>2</ActFlag>
<ActName>function_code</ActName> </Item>
<Item Trcd="">
<Title>重新联接通讯</Title>
<HotKey>6</HotKey>
<Position>6,1</Position>
<Priority>0</Priority>
<ActFlag>2</ActFlag>
<ActName>key_CTRL_Z</ActName>
</Item>
<Item Trcd="">
<Title>退出</Title>
<HotKey>q</HotKey>
<Position>11,1</Position>
<Priority>0</Priority>
<ActFlag>0</ActFlag>
<ActName>exitmenu</ActName>
<Help>exitmenu</Help>
</Item>
</Items>
</Cop_Menu>
窗口单元的定义(Window)
XML格式定义
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_WinUnit UnitName="win_name" Pages= “page_nums” Version=“ver_no”> <Device>%s</Device>
<Title>%s</Title>
<Height>%d</Height>
<Width>%d</Width>
<Position>%d,%d</Position>
<BackColor>%s</BackColor>
<ForeColor>%s</ForeColor>
<DispAttr>%d</DispAttr>
<PreAction>%s</PreAction>
<EditAction>%s</EditAction>
<PostAction>%s</PostAction>
<Help>%s</Help>
<Items>
[<Fld Name=“fld_name” PageNo= “num_no”>
<Position> start_y,start_x,end_y,end_x</Position>
</Fld>]+
[<Text PageNo= “num_no”>text_descript
<Position>start_y,start_x,end_y,end_x</Position>
</Text>]+
[<Line Pageno= “num_no”>
<Position>start_y,start_x,end_y,end_x</Position>
</Line>]+
[<Grid Name=“grid_name” Pageno= “num_no”>
<Position>start_y,start_x,end_y,end_x</Position>
</Grid>]+
[<List Name=“list_name” PageNo= “num_no”>
<Position>start_y,start_x,end_y,end_x</Position>
</List>]+
</Items>
</Cop_WinUnit>
内容说明
win_name 窗口单元的名称
page_nums 窗口单元的页数
<Device> 窗口单元的设备类型
<Title> 窗口单元的标题
<Height> 窗口单元的高度(显示行数)
<Width> 窗口单元的宽度(显示列数)
<Position> 窗口单元的起始坐标
<BackColor> 窗口单元显示的背景颜色
<ForeColor> 窗口单元显示的前景颜色
<DispAttr> 窗口单元的显示属性
<PreAction> 进入窗口单元前调用过程
<EditAction> 操作窗口单元时调用过程
<PostAction> 退出窗口单元时调用过程
<Help> 窗口单元的说明、注释
<Items> 窗口单元各项的内容
Fld 窗口单元项为域类型
Fld_name 窗口单元项域名称
Text 窗口单元项为文本类型
text_descript 窗口单元项文本内容
Line 窗口单元项为线类型
Grid 窗口单元项为表格类型
grid_name 窗口单元项表格名称
List 窗口单元项为选择列表类型
list_name 窗口单元项选择列表名称
num_no 窗口单元项所在窗口页码
<Position> 窗口单元项在窗口的位置(为线时终点坐标才有效)
字段的取值说明:
<Device>窗口单元的设备类型,0-窗体 1-打印机 2-……;
<DispAttr>窗口单元的显示属性,0—无边框,无页号 1—有边框,无页号 2—无边框,有页号 3—有边框,有页号。
示例
窗口win9301I1的XML定义如下所示:(win9301I1.xml)
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
<Cop_WinUnit UnitName="win9301I1" Version="1.0">
<Device>1</Device>
<Height>23</Height>
<Width>80</Width>
<Position>0,0</Position>
<DispAttr>1</DispAttr>
<Items>
<Text>机构号:
<Position>1,2,0,0</Position> </Text>
<Fld Name="FDYNGYJG">
<Position>1,9,0,0</Position> </Fld>
<Text>柜员号:
<Position>1,14,0,0</Position> </Text>
<Fld Name="FDJIO1GY">
<Position>1,21,0,0</Position> </Fld>
<Text>柜员姓名:
<Position>1,29,0,0</Position> </Text>
<Fld Name="FDGUIYXM">
<Position>1,38,0,0</Position> </Fld>
<Text>交易日期
<Position>1,59,0,0</Position> </Text>
<Fld Name="FDJIOYRQ">
<Position>1,68,0,0</Position> </Fld>
<Text>流水号:
<Position>2,2,0,0</Position> </Text>
<Fld Name="FDGUIYLS">
<Position>2,9,0,0</Position> </Fld>
<Text>终端号:
<Position>2,21,0,0</Position> </Text>
<Fld Name="FDZHNGDH">
<Position>2,28,0,0</Position> </Fld>
<Text>交易时间:
<Position>2,59,0,0</Position> </Text>
<Fld Name="FDJIOYSJ">
<Position>2,68,0,0</Position> </Fld>
<Line Name="LINE1">
<Position>3,0,3,80</Position>
</Line>
<Fld Name="FDJIAOYM">
<Position>4,1,0,0</Position> </Fld>
<Fld Name="FDSHOQGY">
<Position>4,5,0,0</Position> </Fld>
<Fld Name="FDJIOYMC">
<Position>4,30,0,0</Position> </Fld>
<Fld Name="FDSHOQMM">
<Position>4,68,0,0</Position> </Fld>
<Fld Name="FDCOMMLN">
<Position>5,5,0,0</Position> </Fld>
<Fld Name="FDJIOYMS">
<Position>5,5,0,0</Position> </Fld>
<Fld Name="FD_COFF2">
<Position>5,5,0,0</Position> </Fld>
<Fld Name="FD_COFF1">
<Position>5,5,0,0</Position> </Fld>
<Fld Name="FDJIOYXH">
<Position>5,5,0,0</Position> </Fld>
<Fld Name="FDCHSHDM">
<Position>5,68,0,0</Position> </Fld>
<Text>柜员代号
<Position>6,5,0,0</Position> </Text>
<Fld Name="GUIYDH">
<Position>6,18,0,0</Position> </Fld>
<Text>密码
<Position>6,40,0,0</Position> </Text>
<Fld Name="JIOYMM">
<Position>6,55,0,0</Position> </Fld>
<Text>F1 帮助 ESC 退出
<Position>21,2,0,0</Position> </Text>
</Items>
</Cop_WinUnit>
资源定义操作函数
资源定义的操作函数用于对资源内容的操作,基本用于平台内部,在平台应用程序中不用这些函数,此处略。
资源命名规则
COP资源的主要由域单元、表格单元、菜单单元、选择列表单元以及窗口单元组成,各单元的命名要符合一定的规则,便于记忆和查询。
域FIELD命名规则:
如是后台SOP定义决定前台的数据字典字段,其名称将不改变,名字的字符长度一般为6位长或7位长;如是前台自定义的数据字典字段,其名字的字符长度至少为8位,并按用途分类,名字的前两位代表用途(FD:应用系统的全局字段、FZ:应用系统使用的一般字段、TX:文本显示字段、SYS:平台系统专用字段),后几位一般按实际应用优先对应于相应的后台SOP数据字典名或其他。
COP基本语法
COP语言是一种解释执行语言,语法与JavaScript语言基本相同,可以用任何文本编辑工具编写程序,所有源程序必须以.cop作扩展名,编译后的代码以.jav作为扩展名。
和其它高级语言一样,COP语言的语句用来向计算机系统发出操作指令。
一个语句经过编译、解释后产生若干条机器指令。
语法约定
关键字不区分大小写字母,其它的标识符要区分大小写字母。
‘(’和‘)’是语法的一部分,要写入程序中,如:
VAR custo_no DECIMAL(6,2)
‘[’和‘]’表示其中的文法体在程序中可出现一次或不出现。
例如:
CALL 函数名(参数)[=>变量]
‘[’和‘]+’表示其中的文法体在程序中可出现多次或不出现。
例如:
WHILE 条件表达式
{
[执行语句]+
}
‘|’表示选择若干任选项之一,不可同时选一个以上。
例如:
SELECT [ALL| DESTINCT| UNIQUE] FROM 数据库表名‘{’和‘}’除表示程序中固定的语法分隔外,还表示其中的文法体在程序中出现且仅出现一次,例如:
{APPEND| UPDATE| READONLY}
表示程序中必须出现APPEND、UPDATE、READONLY之一。
同理,‘{’和‘}+’表示其中的文法体在程序中必须出现一次或多次。
COP程序中的注释以“/*”开始,以“*/”结束,且不能嵌套。
程序也支持对单行的注释//。
在下文的文法中,ID表示标识符,var表示变量,FLD表示数据域,con表示常量,exp 表示表达式。
函数定义
COP语法中,一个函数为一个COP文件,文件名与函数名要相同(在编译成中间码后调用函数时是以中间码文件名为准的)。
函数的文件格式如下:
[#include “...”]+
[局部类型定义语句]+
FUNCTION FuncName(参数:类型)
{
[变量定义语句]+
[执行语句] +
}
函数的编译必须在全局类型定义文件和全局变量定义文件之后编译,否则运行时报错。
变量的定义和赋值
一个程序应该包括数据描述部分和数据操作部分。
数据描述主要定义数据结构(用数据类型表示),数据操作的任务是对已提供的数据进行加工。
变量定义就是一种数据描述。
语法:
VAR var [, var]+ 数据类型
说明:定义一个与COP数据类型相关的变量,VAR变量定义语句必须为程序的第一条语句,所定义的变量在该模块内具有其作用。
例:
VAR a1, a2 char(4)
VAR scr1 char(20)
VAR ret integer
赋值语句的语法:
var = exp
例:
a1 = ”abcd”
jine = FLD:ZHANGH
记录和数组的定义
COP语法中,可定义结构类型和新的类型,定义方式如下:
结构定义语法:
STRUCT
{
分量名:类型
}
例:
VAR arr1 STRUCT
{
a1:integer
b1(10):char
}
数组定义语法:
VAR 变量名(N) 类型
例:
VAR arry1(10) integer
类型定义
类型定义用来将一种类型或结构定义为一个新的类型名,其语法如下:
TYPEDEF 数据类型新的类型名
例:
typedef integer INT
typedef STRUCT
{
a1:integer
b1: char(10)
}
newab
VAR ab(10) newab
条件语句
关系运算符和关系表达式
关系运算是逻辑运算中比较简单的一种。
所谓“关系运算”实际上是“比较运算”。
将两个值进行比较,判断比较的结果是否符合给定的条件。
如果符合给定的条件,则称关系表达式为
“真”(即“条件满足”),否则称关系表达式为“假”。
COP提供6种关系运算符:
〈(小于)
〈= (小于或等于)
〉(大于)
〉= (大于或等于)
= = (等于)
!= (不等于)
用关系运算符将两个表达式连接起来的式子,称关系表达式。
例如,下面都是合法的关系表达式:
a>b, a+b>b+c
关系表达式的值是一个逻辑值,即“真”或“假”,COP逻辑关系运算适用于字符及字符串类型。
逻辑运算符和关系表达式
用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。
COP语言提供三种逻辑运算符:
&& 逻辑与
| | 逻辑或
! 逻辑非
其中,“&&”和“| |”是双目运算符,它要求有两个操作数。
“!”是一目运算符,只要求有一个运算量。
例如:设a,b为两个关系表达式,则
a &&
b 为真,当a、b同时为真
a | |
b 为真,当a、b之一为真
! a 为假,当a为真
在COP语言中,运算表达式也可以是一个逻辑表达式,当此运算表达式的值为0,则表示“假”;若此运算表达式的值不等于0,则表示为“真”。
另外,一个逻辑表达式的左右加上一对括号仍是一个逻辑表达式。
IF语句
IF语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的操作。
语法:
IF 逻辑表达式
{
[执行语句]+
}
[ELSE
{
[执行语句]+
}
]
例:
if (!num1 && num2 >= 0)
{
a1 = num2 * 10
a2 = 3
}
else
{
a1 = num1 * 10
a2 = 5
}
由逻辑表达式的说明可以看出,逻辑表达式的前后有无括号均可,在其它语句中亦然。
IF后和ELSE后的执行语句用大括号括起来,为单条语句时大括号可省略。
在COP语言中允许IF语句的嵌套,但最多为8层。
SWITCH语句
SWITCH语句是多分支选择语句。
IF语句只有两个分之可供选择,而实际问题中常常需要用到多分支的选择。
这当然可以用嵌套的IF语句来处理,但如果分支太多,则嵌套的IF 语句层数多,程序变得冗长而且可读性降低。
COP提供SWITCH语句直接处理多分支选择。
语法:
SWITCH exp1
{
[CASE exp2:
[执行语句]+
]+
[DEFAULT:
[执行语句]+
]
}
说明:
exp1依次与exp2比较,如果某个exp2等于exp1,则进入相应分支并执行。
例:
switch char1
{
case "1":
chine="一"
break
case "2":
chine="二"。