COS基础简介

吱昂-张 2020-06-22 02:22:24
一、 基本命令
COS中命令不多,我们先介绍最常用的。注意:所有COS命令不区分大小写,同时大部分都有缩写。既然COS不是强类型,那么我们不需要事先声明变量。我们就从设定变量开始:
------设定变量
SET是设定变量的命令,缩写为S,语法为Set x=value。
例如,在Terminal里执行
Set x="Hello, World"
如果需要同时将很多变量赋为相同的值,这是你可以Set (x,y,z)=value:
Set (x,y,z) = "yes"
有时,你也会看到这样的写法:Set x=value1, y=value2。这是缩写,等同于
Set x=value1
Set y=value2
------输出结果
WRITE命令将结果输出到当前设备,缩写为W,语法为 Write x。
例如,在Terminal里执行
Set x="Hello, World"
Write x
也可以一次输出多个变量,变量间用,分割,如
Write "The value is: ", x
虽然WRITE命令在今后面向对象编程中很少用到,但在调试时很常用。有
时需要将结果按格式输出时,可以加入控制字符,如!# ?等。!表示回车,#表示刷出新屏,?后面跟数字表示在那一列输出。
在Terminal里执行
Write "Current time is",!,?15,$ZT($ZTS)
------执行代码
DO用来执行代码,缩写为D,语法为 Do routine。例
如,在Terminal里执行
Do $System.OBJ.ShowObjects("d")


------IF判断
IF判断缩写为I,语法为:
IF expression1 {
. . .
}ELSEIF expression2 {
. . .
}ELSE {
. . .
}
例如:在Terminal里执行
if 2=1 {w "2=1"} else {w "2<>1"}
------FOR循环
For循环的缩写为F,语法为
FOR start:increment:end {. . .},start表示循环变量初始值,increment表示酶每次循环变量增值,end表示循环变量值达到该值跳出。
例如,在Terminal里执行
FOR i=2:1:10 {w i,!}
有时,你会看到没有end条件的For循环,这时需要指定循环退出条件。
如下面的例子里当i大于10时会退出循环:
FOR i=1:1 {if i>10 {quit} else {w i,!}}
------WHILE循环
While循环没有缩写,语法为:
WHILE expression,... {}
例如,在Terminal里执行
Set y=1 WHILE y < 10 { Set y=y+1 WRITE y,! }
------终止执行
QUIT是终止执行命令,缩写为Q。可以带返回参数,语法为:

QUIT expression
------条件执行
顾名思义满足条件后执行,经常会看到command:(expression) 的语法。
如Set :(x=1) y=2。该语法是当expression表达式为True时,执行相应命令,等同于
if (expression) command。
所以
Set :(x=1) y=2
等同于
if (x=1) {set y=2}
二、 操作符
COS里操作符主要分为3类:算术操作符、逻辑操作符、字符串操作符。下面介绍常用的操作符。
注意,COS里的操作符没有优先级,严格从左到右,必要时使用()来分隔操作顺序!
------算术操作符
加减乘除: + - * /
例如,下面的表达式将返回6。
W 2+3*5-1/4
幂: **
例如,下面的表达式将返回8。
W 2**3
整除: /
例如,下面的表达式将返回0。
W 2/3
余数: #
例如,下面的表达式将返回2。
W 2#3
------逻辑操作符
与: & &&
&和&&都是与操作符,区别在于&&在左操作数为0时就立刻返回0,而不去判断右操作数了。
例如,下面的表达式将返回0。
W 0&&2

或: ! ||
!和||都是或操作符,区别在于||在左操作数非0时就立刻返回1,而不去判断右操作数了。
例如,下面的表达式将返回1。
W 1||0
非: '
COS里非是'例如,下面的表达式将返回0。
w '1
由于操作符严格从左到右,所以下面的表达式返回0。
SET x=1,y=0
WRITE x=1!y=0
------数值关系运算符
大于: >
例如,下面的表达式将返回0。
W 2>3
小于: <
例如,下面的表达式将返回1。
W 2<3
等于: =
例如,下面的表达式将返回0。
W 2=3
大于等于: >=
例如,下面的表达式将返回0。
W 2>=3
小于等于: <=
例如,下面的表达式将返回1。
W 2<=3
------字符串操作符
连字符: _
例如,下面的表达式将返回"Hello World"。
W "Hello"_" World"
注意,正是因为_是连字符,所以_不能出现在包名、类名、属性名和方法名里;
但可以出现在表名、字段名里。
三、 $的用法
$在COS语法中,经常看到$符号,有时是一个,有时是2个或3个$。下面简单介绍一下什么时候会出现$及其含义:
$:
Cache’提供了很多系统函数(function)和系统变量,它们都以$开头。如我们熟悉的$Piece(根据分割符获取或替换子字
符串的系统函数) ;$Horolog(获得当前时间的系统变量).

$$:
上面可以用$<function>来调用系统函数,用户也可以定义自己的函数(function),并使用$$<function>来调用该函数。例如,定义一个名为Test的函数在如下Routine(*.mac)中,并用$$来调用它:
Main
Test() PUBLIC
Set x="test"
w x,!
Quit x
Testme()
Set y=$$Test()
w y,!
Q
$$$:
在COS中,$$$代表宏。例如,我们熟悉的$$$OK,$$$ERROR()。当然,我们也可以定义自己的宏。下面的例子建立一个名为GETDATESTR的宏,返回日期类型的YYYY-MM-DD字符串格式。在studio里新建User.MyInc.inc文件,并定义宏GETDATESTR,该宏带一个参数:
#define GETDATESTR(%n) $ZD(%n,3)
可以在别的类里引用该宏,方法是在引用类的头部增加Include User.MyInc ,
注意不需要加inc后缀名。之后,可以在类中方法里如下调用该宏:
ClassMethod Today()
{
Set y = $$$GETDATESTR($h)
W "Today is:", y,!
}
...全文
72 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

8,028

社区成员

发帖
与我相关
我的任务
社区描述
高性能数据库开发
社区管理员
  • 高性能数据库开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧