Caché程序员必须知道符号与缩写
第一章 Caché ObjectScript中使用的缩写
以下是Caché ObjectScript中使用的文字符号。(此列表不包括表示格式约定的符号,这些符号不是语言的一部分。) CachéSQL中使用的符号有一个单独的表。每个符号的名称后跟其ASCII数字值。
[空格]或[制表符]
- 空格(
Tab(9)
或Space(32)
):除了标签和一些注释行之外,每行代码前都需要前导空格(空格或制表符)。 - 在命令中,命令名和第一个参数之间需要一个(且只需要一个)空格。
- 在最后一个命令参数和同一行上的任何后续命令或注释之间需要尾随空格(空格或制表符)。
- 在同一行上的标签和后面的命令或注释之间也需要尾随空格。
[两个空格、两个制表符或一个空格和一个制表符]
- 双空格:在同一行上,无参数命令和下一个命令之间必须有尾随的双空格。
!
- 感叹号(33):或逻辑运算符(完全求值)。
- 在
READ
和WRITE
命令中,指定新行。 - 作为终端提示的第一个字符,加载交互子外壳。
"
-
Quotes(34)
:用于括起字符串文字。 - 在动态SQL中,用于将SQL代码封装为
%Prepare()
方法的字符串参数。 - 有关直引号(
"
)和方向引号(""
)之间的区别,请参阅使用 《疯狂Caché》 中的模式匹配。
""
- 双引号:用于指定空字符串(
""
),为零长度字符串。 - 用于在带引号的字符串中指定单引号字符。
#
- 井号(35):模除运算符。可用于确定位值。例如,
$ZA#2
返回1的位值(0或1);使用整数除法(\
)运算符$ZJOB\1024#2
返回1024的位值(0或1)。 - 在读写命令中,换页。在定长读取中,要读取的字符数。
- 用于从类中引用类参数值的前缀:
#ParameterName
。 - 许多宏预处理器指令的前缀,例如:
#DEFINE
、#INCLUD
E和#IF
。 - 在类语法中,用于返回参数值的参数前缀。例如,
##class(%Library.Boolean).#XSDTYPE
或myinstance.#EXTENTQUERYSPEC
. - 在
ZBREAK
调试中,一种迭代计数器,用于禁用指定的断点或观察点。例如,下面的代码禁用LABEL^ROU
处的断点100次迭代:ZBREAK-LABEL^ROU#100
。 - 运行时表达式的分隔符:
#(Expr)#
,其中expr是Caché ObjectScript表达式。 - 在注解例行程序ZFENTRY中,一种表示双精度数据类型的argtype前缀:
#D
或#F
。 - 正则表达式行尾注释指示符(仅在(
?x
)模式下)。
##
- 双井符号:对象类调用前缀:
##class(Classname).method name()
或##class(Classname).#parametername
。 -
##Super()
语法用于调用重写的超类方法。 - 某些宏预处理器指令的前缀,包括
##Continue
、##Expression
、##Function
、##LIT
、##SQL
和##UNIQUE
。##
在ObjectScript中调用SQL执行一行SQL代码:##SQL
(SQL命令)。 - 编译时表达式的分隔符:
##(Expr)##
,其中expr是ObjectScript表达式。
##;
- 双井符号分号:单行注释指示符;可以在ObjectScript或嵌入式SQL的第1列中使用。
#;
- 井号分号:单行注释指示符,可在第一列使用。
$
- 美元符号(36):内部(系统)函数前缀:
$name(参数)
。 - 特殊变量前缀:
$NAME
。 -
$Znnn
(以$Z
开头的名称)可以是用户定义的函数,也可以是使用%ZLANG
语言扩展库定义的特殊变量。它还可以是内部(系统间提供的)函数或特殊变量。 - 正则表达式字符串锚的结尾;例如,
(USA)$
。 - 在
ZBREAK
调试中,一种单步断点。 - 作为终端提示的第一个字符,加载交互子外壳。
$$
- 双美元符号:外部(用户编写的)函数前缀:
$$name
(参数)。当上下文由外部函数引用建立时,$$
由$STACK
返回。 - 添加到例程名称前缀,以直接调用该例程。
$$$
- 三元符号:宏调用前缀。
%
- 百分号(37):允许作为名称的第一个字符
- (1)局部变量名称,表示具有特殊作用域规则的
“%Variable”
,用于锁定。 - (2)例程名称,通常表示系统实用程序。
- (3)包类名称,如
%SYSTEM.class
、%Library.class
,以及%Library
包内的类名,包括%String
等数据类型。 - (4)%持久化对象属性名和方法名,如
%Dialect
、%New()
、%OpenId()
。%On
...开头的回调方法。 - (5)标签。
- 需要作为宏参数的第一个字符。
- 某些嵌入式SQL变量的前缀:
%msg
、%ROWCOUNT
,以及某些SQL关键字的前缀:%STARTSWITH
。 -
i%
(实例变量)。
%%
- 双百分号:在ObjectScript计算字段代码和触发器代码中使用的伪字段引用变量关键字
%%CLASSNAME
、%%CLASSNAMEQ
、%%ID
和%%TABLENAME
的前缀。
&
- 与号(38):与逻辑运算符(完全求值)。
$BITLOGIC
位串和运算符。 - 在正式参数列表中,一个可选的非函数变量名前缀,它将参数标记为应该通过引用传递的参数。
&
是一个标记,不是变量名的一部分。例如,Calc(x,&y)
。 - 嵌入式代码的
Shell
调用前缀。例如&sql
(SQL命令);&js
;&html
。 - UNIX®批处理命令。
&&
- 双与号:AND逻辑运算符(部分求值).
- 正则表达式和逻辑运算符。
'
- 撇号(39):一元NOT运算符。可以与:逻辑运算符
‘&(NOT AND)
、’|(NOT OR)
;关系运算符‘=
(不等于)、’<
(不小于)、‘>
(不大于);或模式匹配’(操作数?
模式)组合使用。 - 欧洲数字组分隔符。
( )
- 圆括号(40,41):用于括起过程或函数参数列表。即使是空的,括号也是必需的。
- 用于嵌套表达式;嵌套覆盖了操作符从左到右严格求值的Caché 默认设置,并允许优先使用表达式。
- 用于指定局部变量的数组下标:
A(1,1)
、全局变量^a(1,1)
或进程私有全局变量^||a(1,1)
。 - 用于括起交替模式匹配(跟在
?
后面)。 - 带有
NEW
和KILL
命令,独占指示器。 - 对于后置条件句,如果后置条件句包含空格,则为必填项。
- 用于在
&SQL shell
调用命令后面包含嵌入式SQL代码:&SQL
(SQL命令)。 - 正则表达式匹配字符串)或字符串列表。正则表达式分组构造。
- 设置JSON对象或数组值时,用于括起Caché 文字或表达式。
*
- 星号(42):乘法运算符。
- 在
$ZSEARCH
中,表示零个、一个或多个字符的通配符。 - 在
$EXTRACT
、$LIST
和$PICET
中,$LIST
和$PICE
指定字符串末尾的最后一项;可以与带符号整数一起使用,以指定距末尾的偏移量,例如*-2
、*+1
。 - 在WRITE命令中,指定字符的整数代码。例如,
WRITE *65
写字母“A”
。
节点: LAPTOP-ARLL3DSO,实例: CACHE
用户名:yx
密码:******
DHC-APP>w *65
A
DHC-APP>
- 作为
$ZTRAP
字符串值的前缀,指定调用堆栈级别应保持不变。 - 在
ZBREAK
语言中,表示局部变量的一种名称前缀。在返回给$ZERROR
的某些错误代码中,表示未定义的局部变量、类、方法或属性的名称前缀。 - 正则表达式0个或多个字符限定符。
**
- 双星号:求幂运算符。例如,
4**3=64
。
*+
- 星号加号:在
SET $EXTRACT
、SET $LIST
和SET $PICET
中,指定字符串最后一项之外的偏移量;用于附加值。 - 例如,
*+1
将项目附加到字符串的末尾。
*-
- 星号减号:在
WRITE
命令中,指定设备控制整数代码。例如,WRITE *-10
清除终端输入缓冲区。 - 在
$EXTRACT
中,$LIST
、$LISTGET
和$PICECT
指定从字符串的最后一项向后偏移;例如,*-1
是倒数第二项。
*/
- 星号斜杠:多行注释结束指示符。注释以
/*
开头。
+
- 加号(43):一元算术正运算符。当附加到字符串或返回字符串的函数后,强制进行数值计算;例如,
WRITE+“007.0”
或WRITE+$PICE(STR,“,”,2)
.. - 加法运算符。
- 标签的整数行计数偏移量:标签+偏移量。在
$ZTRAP
中,距过程顶部的整数行计数偏移量:+OFFS^PROCENAME
。 - 对于
LOCK
和ZBREAK
命令,启用或应用/递增后面的项目的前缀。 - 正则表达式1个或多个字符限定符。
+=
- 加号、等号命令和输出到文件的函数表示输出数据附加到现有文件内容。仅等号表示输出数据覆盖现有文件的内容。请参见
$ZF(-100)
。
,
- 逗号(44):在函数和过程中,多参数分隔符。
- 在命令中,多参数分隔符。
- 在数组变量中,下标级别分隔符。
- 美国数字组分隔符或欧洲小数点字符(可配置)。
- 在
$ECODE
中,环绕错误代码:,M7
,
,,
- 两个逗号:在函数中,未指定位置参数的占位符(采用默认值)。
–
- 减号(45):一元算术负运算符。
- 减法运算符。
- 对于
LOCK
和ZBREAK
命令,禁用或递减/
删除后面的项的前缀。 - 正则表达式字符范围运算符;例如
[A-Z]
。
––
- 双减号:使用
ZBREAK
命令时,删除后面项目的前缀。 - 正则表达式减去(除)逻辑运算符。
.
- 句点(46):美国小数点字符或欧洲数字组分隔符(可配置)。
- 用于引用对象实例的方法或属性的Object点语法:
myinstance.Name
。 - Windows和UNIX®:作为路径名或路径名的一部分,指定当前目录。由
$ZSEARCH
使用。 - 可以包含在全局名称或例程名称中。
- 指定按引用传递的实际参数列表中变量或数组名称的前缀:
SET x=$$Calc(num,.result)
。 - 模式匹配重复指示器。
- 正则表达式单字符通配符。
- 无参数
DO
命令后面的代码块结构行前缀。
..
- 双句点:相对点语法:指定当前对象的方法或属性的前缀。例如,编写
..foo()
- Windows和UNIX®:作为路径名或路径名的一部分,指定当前目录的父目录。由
$ZSEARCH
使用。
..#
- 双句点,井号:从同一类的方法中引用类参数的前缀。例如,编写
..#MyParam
...
- 三句点(省略号):形式参数列表或实际参数列表中最后(或唯一)参数的后缀,用于指定可变数量的参数。例如
Calc(x,y,params...)
。此语法通常用于动态调度方法,如方法%DispatchMethod(Method As%string,params...)
- 在
ZWRITE
输出中,尾部省略号表示字符串截断。 - 在终端提示符中,表示长的隐含名称空间已被截断为最后
24
个字符的前导字符。 - (代码中省略号的这种字面上的用法不应与我们的文档中的格式约定用法混淆,在我们的文档中,省略号表示一个参数可以重复多次,或者有意省略一段代码。)
/
- 斜杠(47):除法运算符(保留余数)。
- 在
OPEN
、CLOSE
和USE
命令中,I/O关键字参数前缀。在读和写中,设备控制助记前缀。) - 用
ZBREAK
命令指子命令前缀。
//
- 双斜杠:单行注释指示符。
///
- 三重斜杠:单行注释指示符。可在第1列中用于宏注释。
/*
- 斜杠星号:多行注释开始指示符。注释以
*/
结尾。
:
- 冒号(58):在命令中,后置条件指示符,例如,
WRITE:x=0 “nothing”
。 - 在
OPEN
、USE
、CLOSE
、JOB
、LOCK
、READ
和ZBREAK
等命令中,参数的占位符分隔符和/或参数内的参数分隔符。例如,LOCK var1:10
,+var2:15
, 或OPEN "|TCP|4":(:4200:"PSTE"::32767:32767)
- 在
$CASE
和$SELECT
函数中,用于指定test:value
配对项目。 - 在JSON对象中,用于指定键:值对。例如,设置
JSONobj={“name”:“Sam”}
。 - 在
$JOB
特殊变量VALUE中,分隔进程ID(PID)和节点名。例如11368:MYCOMPUTER
. - 前缀,指示嵌入的ObjectScript代码(如SQL触发器代码)中的ObjectScript标签,其中标签不能在第1列中编码。
;
- 分号(59):单行注释指示符。
;;
- 双分号:保留单行注释指示符。
<
- 小于(60):小于运算符。
- 用于包含嵌入式JavaScript或嵌入式HTML代码,跟在
&js
或&html
指令后面:&js
。
<=
- 小于、等号:小于等于运算符。
'<
- 非运算符,小于:大于或等于运算符。
=
- 等号(61):等于比较运算符。
- 在
SET
命令中,赋值运算符。
'=
-
NOT
运算符,等号:不等于比较运算符
>
- 大于(62):大于运算符。
>=
- 大于,等号:大于或等于运算符..
'>
- 非运算符,大于:小于等于运算符。
?
- 问号(63):模式匹配运算符..
- 正则表达式0或1个字符的量词后缀。正则表达式模式前缀。例如(
?i
)模式打开; (?-i
)模式关闭。 - 在
$ZCONVERT
转换表结果中,表示无法翻译的字符。 - 在
$ZSEARCH
中,表示单个字符的通配符。 - 在读写命令中,列位置指示符。
- 在
ZBREAK
命令中,显示帮助文字。 - 在动态SQL中,由
%Execute()
方法提供的输入参数变量。
?#
- 问号和井号:正则表达式嵌入注释前缀。例如,(
?#
这是一条注释)。
@
- 在符号(64)处:间接运算符。对于下标间接,显示为:
@array@
(下标)。
A, a
- 字母
“A”
(65,97):模式匹配代码(跟在aa ?后面)。
C, c
- 字母
“C”
(67,99):模式匹配代码(跟在a ?后面)..`
E, e
- 字母
“E”
(69,101):科学记数运算符。例如,4E3=4000
。 - 大写的
“E”
是标准的指数运算符;小写的“e”
是可配置的指数运算符,使用%SYSTEM.Process
类的Science Notation()
方法。 - 模式匹配代码(跟在
a ?
后面)。
I, i
- 字母
“i”
(73,105):$NUMBER
函数中的整数指示符。
i%
- 字母
“i”
百分比:实例变量语法:i%PropertyName
。
L, l
- 字母
“L”
(76,108):模式匹配代码(跟在a ?后面)..
N, n
- 字母
“N”
(78,110):模式匹配代码(跟在a ?后面)..
P, p
- 字母
“P”
(80,112):模式匹配代码(跟在a ?后面)。
U, u
- 字母
“U”
(85,117):模式匹配代码(跟在a ?后面)。
[
- 左方括号(91):包含运算符。
[ ]
- 方括号(91,93):用于将名称空间名称、目录名或空字符串括在扩展的全局引用
^[“NAMESPACE”]GLOBAL
中。用于使用以下语法指定进程专用全局名称:^[“^”]ppgname
或^[“^”,“”]ppgname
。 - 在用于包含命名空间名称
^$[“NAMESPACE”]global()
以指定扩展SSVN引用的结构化系统变量(SSVN)中。 - 在
XECUTE
命令或过程定义中,包含公共变量列表:[a,b,c]
- 在
ZWRITE
或无参数写入命令显示中,将对象引用(OREF
)括起来。 - 正则表达式匹配列表
[ABCD]
或范围[A-D]
中的任何字符。 - JSON动态数组表达式,返回
%DynamicArray
的实例。例如,设置JSONarray=[1,2,3]
。
[: :]
- 方括号和冒号:正则表达式字符型关键字。例如,
[:alpha:]
。
\
- 反斜杠(92):整数除运算符(去掉余数)。可与模(
#
)运算符一起使用,以确定位值;例如,$ZA\16#2
返回$Za
16位的值(0或1)。 - 正则表达式转义前缀。JSON字符串转义前缀,例如
\“
。
]
- 右方括号(93):跟随操作符。
]]
- 双右方括号:在运算符之后排序。
^
-
CARET(94)
:全局变量名前缀,例如^myglobal(I)
。 - 例程调用前缀,例如,
DO ^ROUTING
或DO LABEL^ROUTE
。 - 采用
^system^dir
格式的隐含命名空间前缀。 -
$BITLOGIC
位字符串异或(异或)运算符。 - 正则表达式字符串锚点的开头;例如,
^A
.正则表达式字符类型关键字INVERSE。例如,[:^alpha:]
。
^^
- 双脱字符:当前系统的隐含名称空间前缀,格式为
^^
。或^^目录路径。
^$
- 加号美元:结构化系统变量前缀。例如,
^$GLOBAL()
或^$|“NAMESPACE”|GLOBAL()
。
^$[
- 插入美元括号:在结构化系统变量(SSVN)中,用于括起命名空间名称
^$[“NAMESPACE”]global()
以指定扩展的SSVN引用。
^$|
- 加号美元竖:在结构化系统变量(SSVN)中,用于括起命名空间名称
^$|“NAMESPACE”|global()
以指定扩展的SSVN引用。
^%
- 插入百分比:系统全局前缀,例如
^%utility
或^%qStream
.
^(
- 插入括号:一个全局引用,其中隐含最近命名的下标全局名称。例如:
^(1,2)
^[
- 加号左方括号:请参见方括号。
^|
- 插入符号竖:根据后面的字符,可能是:
- 一个扩展的全局引用,一个全局引用,其中一对条括起引用的命名空间名称、目录名或空字符串。竖线及其内容不是全局名称的一部分。例如:
^|“”|globname
,或^|"Namespace"|globname
。 - 具有前缀
^||
的进程专用全局前缀。这些栏是过程的一部分-私有全局名称。例如,^||ppgname
。-私有全局进程变量这种写法也可以:^|“^”|ppgname
。 - 扩展例程引用,其中一对条括起引用的命名空间名称、解析为命名空间名称的变量或空字符串。例如,
DO ^|"namespace"|routine
。
_
- 下划线(95):连接运算符。
- 作为名称的第一个字符。
{ }
- 大括号(123,125):过程中使用的代码块分隔符,用于
TRY
和CATCH
块,或与IF
、FOR
、DO WHILE
和WHILE
命令一起使用。 - 在SQL计算代码中,将字段名括起来。例如,
SET {Age}=18
,SET {f1} = {f2}
。 - 在
XECUTE
命令中,包含将变量视为私有的代码。 - 正则表达式限定符;例如,
{5}
=5次;{3,6}
=至少3次但不超过6次。带\p
前缀的正则表达式字符类型字母代码或关键字;例如,\p{LL}
,\p{lower}
。带\N
前缀的正则表达式单字符关键字;例如,\N{逗号}
。 - JSON动态对象表达式,返回
%DynamicObject
的实例。例如,设置JSONobj={“name”:“Sam”}
。
{*}
- 花括号内的星号:在SQL计算代码中,指定当前SQL字段名。
|
- 竖线(124):
$BITLOGIC
位串或运算符。 - 正则表达式OR运算符。
- 有关其他用途,请参阅
^|
和^$
。
||
- 双竖线(条形):或逻辑运算符。
- 复合ID指示器。由Caché使用以显示生成的复合对象ID(串联的ID)。这可以是在多个属性上定义的
IDKey(pro1||pro2)
,也可以是父/子关系的ID(父||子)
。
~
- Tilde(126):
$BITLOGIC
位串NOT
(补码)运算符。 - 在Windows路径名中,表示长名称的8.3压缩。例如:
C:\PROGRA~1\
。要转换压缩的目录名,请使用%Library.File
类的NormalizeDirectory()
方法。