找回密码
 欢迎注册
搜索
热搜: 活动 交友 discuz
查看: 2342|回复: 7

Cache Object Script语言

[复制链接]
发表于 2003-4-15 09:59:37 | 显示全部楼层 |阅读模式
Cache Object Script语言(简称为COS)。它适于开发1.业务逻辑2.应用集成3.数据处理。COS将被编译成“对象代码”,并在Cache虚拟机内执行。“对象代码”具有字符串操作、数据访问等功能。
在下面这些情况下使用COS:
1.在Cache Terminal中。
2.作为Cache对象类的方法中使用的语言。
3.创建Cache例程。
4.在Cache SQL中,作为存贮过程和触发器的编写语言。
5.在CSP中作为服务端脚本语言。
COS的特性:
1.强大的字符串功能。
2.内在的支技对象技术,包括方法、属性、多态性。
3.大量控制应用流程的命令。
4.一套处理设备I/O的命令。
5.支持多维、稀疏数据组:local和Global。
COS语言概要:
1.没有保留关键字,使用如“$”等字符区分内部命令和用户变量。
2.给变量付值用Set命令。
3.空格在COS也有一定意义:无前导空格的是标签符,命令必须有前导空格。
4.COS由一系列语句组成,每个语句都定义了某些程序功能。语句由命令和参数组成。
5.每个COS命令都有一个长名和一个短名,如“Write”和“W”同。
6.COS中在任何使用表达式的地方都可以使用函数,在对象中调用的函数称为方法。
7.函数一般由系统提供,用户可以自定义函数叫过程(Procedure)。
8.COS支持丰富的表达式。
9.变量是无类型的,可分为:局部变量,Globals变量,数组变量,系统变量,对象属性。
10.COS有多种操作符,如:“+”“-”等。
 楼主| 发表于 2003-4-15 10:49:12 | 显示全部楼层

Cache Object Script语言

COS语法:
1.用户自定义的内容在COS中是大小写敏感的,而系统内建的命令和函数是不敏感的。
2.与类相关的所有名称都是大小写敏感的。但却不能只用大小写来区别类名!
3.调用命令和函数:Write x
4.空格必须出现在一行代码的最前面;命令和参数之间必须有空格;一行可以写多个命令,命令之间一定要有空格;命令与注释间必须有空格。
5.注释用“//”和“;”或“/*”“*/”。
6.编译器编译时会去除注释,用$Text可以保留注释。
7.COS只能认识数字和字符两种字面形式。
8.特殊标识:前导“^”指示为Global名称;前导“%”的标只是“一直可见的”或系统变量,例程名称也可用“%”前导。
9.标签名必须字母开头,最多31字符长度,一行代码只能有一个标签,标签也大小写敏感。
10.虽然COS没有保留关键字,但由于COS支持内嵌SQL语句,所以使用名称时小心于SQL保留字冲突。
数据类型和值:
1.COS变量没有类型,每个变量都可以是字符,数字或对象值。
2.COS字符串中双引号“"”可以嵌套使用。
3.“_”可以联接字符串。
4.数字可包括0-9和“.”,可以使用前导或后继“0”,不可以用“,”或贷币符号。“E”或“e”必须直接与数字相联,长度大于19位或指数大于130的数字将成为未知数。
5.值为对象值的变量参引到一个内存中的对象。可以用$IsObejct来测试是否对象变量。但不能将Global付给对象变量。一个对象付给一个变量后,其参引数自动加一。
6.一个Global数组变量与其它数组一样,只是有前导“^”,它可以存贮在数据库中。
7.COS中变量不用定义,只需直接使用,可用$Data和$Get函数判断其是否已定义。注:$Get可以返回默认值,但不会设置变量值。
8.在逻辑操作中,字面会转化为0(false)或1(ture),表示布尔值。
9.COS没有日期数据类型,它提供一系日期函数用来操作或把日期显示为特定的字符值。$Horolog、$ZDateTime、$ZH提供了三种日期格式。
 楼主| 发表于 2003-4-15 12:24:44 | 显示全部楼层

Cache Object Script语言

COS中的变量:
1.局部变量,在单个程过程(Procedure block)块中有效。
2.全局变量,在一个例程中有效,除非进入了一个Procedure block。
3.Globals变量,可以自动存贮在数据库中的变量,Global变量可以和一般的变量同样使用。
4.数组变量,可以有一个或多个下标。数据变量可以局部的、全局的或Global。
5.系统变量,系统变量以“$”为前导,提供一些系信息。大部分系统变量是只读的,但$IO是可读写的。
6.对象属性,严格来说,对象属性不是一个变量,但可以和变量一样使用。
7.虽然COS变量无类型,但内部还是对不同的值类型进行自动转换的。
8.对象值对是一个内存对象的引用,这个值不能用来从数据库读取对象!内容对消失时,自动取消变量的引用。
9.全局变量使用%前导,但在程序块以外定义的变量也是全局变量。
操作符与表达式:
1.COS包含很多操作符,比较特殊的有“[”包含,“]”跟随,“]]”之后排序,“@”间接引用,“?”模式匹配。
2.操作符的顺序可以用括号来改变。
3.表达式可以是数学表达式,字符串表达式,逻辑表达式,对象表达式。
4.逻辑表达式用于:逻辑操作,数字关系操作,字符关系操作,它一般于IF、$Select和条件表达式一起使用。
5.数字操作有:正负+-,加减+-,乘除*/,幂运算**,整除\\,取模#。
6.逻辑操作有:二进制与&、&&,非与\'&,或!、||,非或\'!,非\'。
7.字符操作有:联接“_”。
8.数字关系操作:小于<,大于>,大于等于\'<,小于等于\'>。
9.字符关系操作:相同=,不相同\'=,包括[,不包括\'[,跟随](以ASCII顺序),不跟随\'],之后排序]],非之后排序\']]。
10.模式匹配:?,A表示大小写字母,C表示33个ASCII控制字符,E表示255个ASCII,L表示26个小写字母,N表示10个数据字符,P表示33个ASCII标点字符,U表示26个大写字符。
11.模式中,指定出现次数用n.n形式;用数字加模式符组合多重模式;还有组合模式;模糊模式。
12.可以使用多个模式“或”;模式嵌套;有多种解释方法的,只要有一种就是真。
13.间接引用@,Cache认识5种类型:名称、模式、参数、下标、$TEXT参数。

 楼主| 发表于 2003-4-15 12:56:00 | 显示全部楼层

Cache Object Script语言

COS命令:
1.调用命令:Do,Quit,Job,Xecute
2.指配:Set,Kill,New
3.流程控制:If,ElseIf,Else;For;While,Do/While。
4.输入输出:Write;Read;一些I/O命令。
5.命令可以没有、有、或有多个参数。多个参数用“,”隔开;“:”作多个参数分隔符;同一行命令之间必须有两个以上空格。
6.后条件命令用“Command:pc”的形式。
7.Do例程时,例程要有前导“^”符。可以在“^”前加上例程的标签符。调用类方法用##Class。
8.Quit用于返回值。
9.Job运行后台程序,一般没有用户交互的。
10.Xecute,可以一次运行多个命令。
11.IF ElseIf Else类似C语言语法。
12.For ControlVariable = StartValue:IncrementAmount:EndValue {}
13.do {code} while condition
14.while condition {code}
15.Write $$label^routine()调用全程中的子程序。
16.Read中:!回车;#换页;?n换几行。
17.COS中还包括:事物处理命令:Lock,TStart,TCommit,TRollBack;设备相关:Open,Use,Close;调试命令:Break,GoTo;Hang:挂起正在运行的程序。
发表于 2003-4-15 13:31:45 | 显示全部楼层

Cache Object Script语言

哪能下这个数据库
 楼主| 发表于 2003-4-15 13:41:00 | 显示全部楼层

Cache Object Script语言

COS中的函数:
1.函数可以有或没有返回值,COS支持很多系统函数和用户自定义函数。
2.调用系统函数用$name(parameters)。
3.自定义函数是一种特殊的例程,它有名称、参数、作用域、返回值。
4.COS推荐使用过程(Procedure)来实现自定义函数。过程、例程、子例程、函数、方法是比较相近的但有各自的特点。
5.过程可以是私有或公共的,可以有或没有参数,自动管理其中使用的变量,可以使用和改变外部变量,可以有或没有返回值。
6.子例程总是公共的,不能有返回值。函数也总是公共的,需要显式定义局部变量,必须有返回值。方法是类定义的一部分。例程是COS一个程序,它可以包含一个或多个过程、子例程、函数、及这些的结合。
7.COS还支持在宏中定义用户代码。
8.例程存为*.MAC文件,这样调用:Do ^RoutineName或 Set x = ^RoutineName
9.子例程是*.MAC中的代码块,调用:Do Subroutine^Routine
10.函数这样调用:Do Function^Routine 或 $$Function()
11.过程也可以用DO调用或在表达式中用$$调用。
12.过程中的公共参数使用时,将调用New方法,在过程Quit时,回收。
13.如果过程中需要的参数是给它所调用的子例程使用的,那么这个参数必须定义为公共参数。
14.默认定义的是私有过程。
15.参数可以值传递或地址传递。
16.在同一个过程中,不能有两个相同标签,但在同一例程的不同过程中,可以有相同的标签。过程内定义的过程只能在这个过程中调用。
17.在过程中用Do调用的过程如是没有标签,表示是过程内部定义的过程,有标签,表示过程外部定义的过程。
18.在过程中,如果有GoTo,那么标签必定是在过程内部。
19.在过程中,使用Xecute和间接引用调用的是外部过程。
20.COS中还可以定义函数或子例程,但并不推荐使用。
21.子例程定义以标签开始,Quit结束,可以用Do,GoTo,Quit调用。
22.函数不应该用,使用过程来替换。
 楼主| 发表于 2003-4-15 14:59:22 | 显示全部楼层

Cache Object Script语言

多维数组:
1.多维数组是包括一个或多个元素的可持久变量,每个元素是一个唯一的下标标识,下标可以使用多种字面混合。
2.简而言之,多维数组是可持久化的,通过多个下标表示的多维数据。单个节点也称为“Globals”,它是Cache数据库的基本组成块。它存在于一种树形形式,是稀疏存贮的,有多种设置。
3.稀疏存贮可以不用为数组预留内存,从而节约内存开销。
4.Global可以转变为数组,属性可以转变为数组,变量也可以转变为数组。
5.可以使用Set,Kill,$Order,$Data存取操作数组数据。
字符串操作:
1.$length,测长度。
2.$Justify,调整长度。
3.$ZConvert,转换大小写。
4.$find,查找子串。
5.$Extract,提取子串。
6.$Piece,截取。
7.$ListBuild,$List,$ListLength,$ListFind。
调用外部命令:
1.使用%CLI 、$ZF(-1)、$ZF(-2)
2.在Cache Terminal中使用%CLI。
3.Set CallResults = $ZF(-1,command),可以用“!”替换。
4.用$ZF 可在Cache中调用用其它语言(如C)写的例程。
 楼主| 发表于 2003-4-15 15:47:08 | 显示全部楼层

Cache Object Script语言

事物处理:
1.可以在使用SQL语句或COS命令的应用程序中使用事物。
2.使用Lock加锁或解锁。
3.$INCREMENT不受事物控制。
4.%ETN 自动处理回滚。
还有错误处理,例程调试等这里不详细写了!
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

快速回复 返回顶部 返回列表