#Caché

1 关注者 · 982 帖子

  

InterSystems Caché 是一个多模型 DBMS 和应用服务器。

查看此处提供的更多详细信息

文档

文章 Qiao Peng · 三月 5, 2021 3m read

Global 扫描和切片

这是一个在 IRIS 2020.1 和 Caché 2018.1.3 上工作的代码示例
不会与新版本保持同步
也不会获得 InterSystems 提供的支持服务!   

大多数情况下,默认存储使用的 global 只有 1 个表示 IDKEY 的下标级别。 对于索引 global,可能有 2 个或更多下标级别。

数组、父子关系或扩展了基础数据类的持久化类 是具有更多下标级别的示例。 但所有这些 global 都非常统一。

1
0 216
文章 姚 鑫 · 二月 25, 2021 3m read

第四十七章 Caché 变量大全 ^$JOB 变量

提供系统间IRIS进程(JOB)信息。

大纲

^$JOB(job_number)
^$J(job_number)

参数

  • job_number 输入ObjectScript命令时创建的系统特定OBJ编号。每个活动的InterSystems IRIS进程都有一个唯一的作业号。登录到系统会启动一个作业。在UNIX®系统上,作业号是调用InterSystems IRIS时启动的子进程的PIDJOB_NUMBER必须指定为整数;不支持十六进制值。

描述

可以将^$JOB结构化系统变量用作$DATA$ORDER$QUERY函数的参数,以获取有关本地InterSystems IRIS系统上是否存在InterSystems IRIS作业的信息。

示例

以下示例显示如何将^$JOB用作$DATA$ORDER$QUERY函数的参数。

作为$DATA的参数

$DATA(^$JOB(job_number))

^$JOB作为$DATA的参数返回一个整数值,该值指示指定的作业是否作为节点存在于^$JOB中。下表显示了$DATA可以返回的整数值。

ValueMeaning
0JOB不存在
1JOB存在

以下示例测试系统间IRIS进程是否存在。

DHC-APP>SET x=$JOB
 
DHC-APP>WRITE 
0
0 180
文章 姚 鑫 · 二月 24, 2021 6m read

第四十六章 Caché 变量大全 ^$GLOBAL 变量

提供有关全局变量和进程私有全局变量的信息。

大纲

^$|nspace|GLOBAL(global_name)
^$|nspace|G(global_name)

^$||GLOBAL(global_name)
^$||G(global_name)

参数

  • |nspace|[nspace] - 可选-扩展SSVN引用,可以是显式名称空间名称,也可以是隐含名称空间。必须计算为带引号的字符串,该字符串括在方括号([“nspace”])或竖线(|“nspace”|)中。命名空间名称不区分大小写;它们以大写字母存储和显示。
  • global_name 计算结果为包含无下标全局名称的字符串的表达式。全局名称区分大小写。使用^$||global()语法时,与进程专用全局名称相对应的无下标全局名称:^a表示^||a

描述

可以将^$GLOBAL用作$DATA$ORDER$QUERY函数的参数,以返回有关当前名称空间(默认名称空间)或指定名称空间中是否存在全局变量的信息。还可以使用^$global返回有关存在进程私有全局变量的信息。

进程私有全局变量

可以使用^$global获取有关所有命名空间中是否存在进程私有全局变量的信息。可以将进程专用全局的查找指定为^$||global^$|“^”|global

例如,要获取有关进程

0
0 192
文章 姚 鑫 · 二月 23, 2021 3m read

第四十五章 Caché 变量大全 $ZVERSION 变量

包含一个字符串,描述do命令后面的InterSystems IRIS.line的当前版本。

大纲

$ZVERSION 
$ZV

描述

$ZVERSION包含一个字符串,该字符串显示当前运行的InterSystems IRIS®Data Platform实例的版本。

以下示例返回$ZVERSION字符串:

DHC-APP>WRITE $ZVERSION
Cache for Windows (x86-64) 2016.2 (Build 736U) Fri Sep 30 2016 11:46:02 EDT

此字符串包括InterSystems IRIS安装的类型(产品和平台,包括CPU类型)、版本号(2018.1)、该版本中的内部版本号(内部版本号中的“U”表示UNICODE以及创建此版本的InterSystems IRIS的日期和时间。“EST”是东部标准时间(美国东部的时区),“EDT”是东部夏令时

通过调用GetVersion()类方法可以返回相同的信息,如下所示:

DHC-APP>WRITE $SYSTEM.Version.GetVersion()
Cache for Windows (x86-64) 2016.2 (Build 736U) Fri Sep 30 2016 11:46:02 EDT

以通过调用其他

0
0 110
文章 姚 鑫 · 二月 22, 2021 7m read

第四十四章 Caché 变量大全 $ZTRAP 变量

包含当前错误陷阱处理程序的名称。

大纲

$ZTRAP
$ZT

描述

$ZTRAP包含当前错误陷阱处理程序的行标签名和/或例程名。有三种方法可以设置$ZTRAP:

  • SET $ZTRAP=“location”
  • SET $ZTRAP=“*location”
  • SET $ZTRAP=“^%ET” or “^%ETN”

在这里,位置可以指定为标签(当前例程中的行标签)、^routine(指定外部例程的开始)或label^routine(指定外部例程中的指定标签)。

然而,$ZTRAP=label^routine不能用于程序块。过程块中的$ZTRAP不能用于转到过程体之外的位置;过程块中的$ZTRAP只能引用该过程块中的一个位置

Location

使用设置命令,可以将位置指定为带引号的字符串。

  • 在例程中,可以将位置指定为标签(当前例程中的行标签)、^routine(指定外部例程的开始)或label^routine(指定外部例程中的指定标签)。不要在引用过程或过程中的标签的例程中指定位置。这是一个无效位置;当InterSystems IRIS试图执行$ZTRAP时,会导致运行时错误。
  • 在过程中,可以将位置指定为标签;过程块中私有标签。过程块中的$ZTRAP不能用于转到过程体之外的位置;过程块中的$ZTRAP只能引用该过程块中的一个位
0
0 129
文章 姚 鑫 · 二月 21, 2021 7m read

第四十三章 Caché 变量大全 $ZTIMEZONE 变量

包含格林威治子午线的时区偏移量。

大纲

$ZTIMEZONE
$ZTZ

描述

$ZTIMEZONE可以通过两种方式使用:

  • 返回计算机的本地时区偏移量。
  • 为当前进程设置本地时区偏移量。

$ZTIMEZONE包含从格林威治子午线偏移的时区(以分钟为单位)。 (格林威治子午线包括整个英国和爱尔兰。)此偏移量表示为-1440到1440范围内的有符号整数。格林威治以西的时区指定为正数;格林威治东部的时区指定为负数。 (时区必须以分钟为单位,因为并非所有时区都以小时为单位。)默认情况下,$ZTIMEZONE初始化为计算机操作系统设置的时区。

注意:$ZTIMEZONE将本地时间调整为固定的偏移量。它不适应夏令时或其他当地时间的变化。 InterSystems IRIS从基础操作系统获取本地时间,该操作系统将本地时间变体应用于为该计算机配置的位置。因此,使用$ZTIMEZONE调整的本地时间将从配置的语言环境中获取其本地时间变化,而不是在$ZTIMEZONE中指定的时区。

使用格林威治子午线($ZTIMEZONE = 0)的时区计数来计算UTC时间。它与当地格林威治时间不同。格林威治标准时间(GMT)一词可能令人困惑;格林威治的当地时间与冬季的UTC相同。在夏季,它与UTC的差异为一小时。这是因为应用了称为英国夏令时的本地时间

0
0 133
文章 姚 鑫 · 二月 20, 2021 6m read

第四十二章 Caché 变量大全 $ZTIMESTAMP 变量

包含协调世界时间格式的当前日期和时间。

大纲

$ZTIMESTAMP
$ZTS

描述

$ZTIMESTAMP包含协调的通用时间值形式的当前日期和时间。这是世界范围内的时间和日期标准;此值很可能与当地的时间(和日期)值不同。

$ZTIMESTAMP将日期和时间表示为以下格式的字符串:

ddddd,sssss.fff

其中ddddd是一个整数,指定自1840年12月31日起的天数;sssss是一个整数,指定自当天午夜以来的秒数,fff是一个可变的数字,指定小数秒。这种格式类似于$HOROLOG,只是$HOROLOG不包含分数秒。

假设当前日期和时间(世界协调时)如下:

2018-02-22 15:17:27.984

当时,$ZTIMESTAMP的值为:

64701,55047.984

$ZTIMESTAMP报告协调世界时(UTC),它独立于时区。因此,$ZTIMESTAMP提供了一个跨时区的统一时间戳。这可能不同于本地时间值和本地日期值。

$ZTIMESTAMP时间值是一个十进制数值,以秒及其分数为单位计算时间。分数秒的位数可能从零到九不等,具体取决于计算机时钟的精度。在视窗系统上,小数精度是三位小数;在UNIX系统上,它是六位十进制数字。$ZTIMESTAMP在此小数部分中抑制尾随零或尾随小数点。请注意,在午夜

0
0 180
文章 姚 鑫 · 二月 19, 2021 2m read

第四十一章 Caché 变量大全 $ZSTORAGE 变量

包含进程的最大可用内存。

大纲

$ZSTORAGE
$ZS

描述

$ZSTORAGE包含JOB的进程私有内存的最大内存量(以KB为单位)。此内存可用于局部变量、堆栈和其他表。此内存限制不包括例程目标代码的空间。此内存根据需要分配给进程,例如在分配数组时。

一旦将此内存分配给进程,通常在该进程退出之前不会释放它。但是,当大量内存被使用(例如,大于32MB)然后被释放时,系统间IRIS会尝试在可能的情况下将释放的内存释放回操作系统。

还可以使用$ZSTORAGE设置最大内存大小。例如,以下语句将作业的最大进程专用内存设置为524288 KB

SET $ZSTORAGE=524288

更改$ZSTORAGE会更改$STORAGE特殊变量的初始值,该变量包含进程的当前可用内存(以字节为单位)。

$ZSTORAGE的最大值为2147483647$ZSTORAGE默认值为262144$ZSTORAGE的最小值为128$ZSTORAGE值大于最大值或小于最小值会自动默认为最大值或最小值。$ZSTORAGE设置为整数值;InterSystems IRIS截断任何小数部分(如果指定)。

可以通过更改最大每进程内存(KB)系统配置设置来更改$ZSTORAGE默认值。在管理门户中,依次选择System Administration

image

0
0 107
文章 姚 鑫 · 二月 18, 2021 6m read

第四十章 Caché 变量大全 $ZREFERENCE 变量

包含当前全局变量global引用。

大纲

$ZREFERENCE
$ZR

描述

$ZREFERENCE包含上次全局引用的名称和下标。这就是所谓裸指针。

注意:最后一个全局引用是最近访问的全局节点。通常,这是对全局的最新显式引用。但是,某些命令可能在内部使用$ORDER函数遍历全局下标(ZWRITE命令就是一个例子),或者它们可能在内部引用其他全局脚本。发生这种情况时,$ZREFERENCE包含上次访问的全局节点,该节点可能不是为命令指定的全局节点。

最后一个全局引用可以是全局(^myglob)或进程专用全局(^||myppg)。$ZREFERENCE以最初用于该变量的形式返回进程专用全局前缀,而不管随后对该变量使用哪个进程专用全局前缀。在接下来的$ZREFERENCE描述中,单词“global”指的是这两种类型的变量。

最后一个全局引用是命令或函数最近引用的全局。由于ObjectScript按从左到右的顺序执行操作,因此最后一个全局引用始终是最右侧的全局引用。当命令或函数使用多个参数时,最右侧参数中指定的全局参数是最后一个全局引用。当参数包含多个全局引用时,最右侧指定的全局引用是最后一个全局引用。即使使用圆括号来定义操作顺序,从左到右的严格顺序也是正确的。

当发出显式全局引用时,InterSystems IRIS会更

0
0 101
文章 姚 鑫 · 二月 17, 2021 1m read

第三十七章 Caché 变量大全 $ZPARENT 变量

包含当前进程的父进程的ID

大纲

$ZPARENT
$ZP

描述

$ZPARENT包含使用JOB命令创建当前进程的父进程的ID。如果当前进程不是使用JOB命令创建的,则$ZPARENT包含0(零)。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

第三十八章 Caché 变量大全 $ZPI 变量

包含pi的值。

大纲

$ZPI

描述

$zpi包含数值常量Pi到小数点后18位的值(3.141592653589793238)。

该值经常用于三角函数,例如正弦函数$ZSIN

第三十九章 Caché 变量大全 $ZPOS 变量

包含读取顺序文件期间的当前文件位置。

大纲

$ZPOS

描述

$ZPOS包含顺序文件读取期间的当前文件位置。如果没有正在进行的顺序文件读取,则$ZPOS包含0(零)。

当打开文件进行顺序读取时,每次从该设备读取都会将$ZPOS设置为文件中下一次读取的位置。$ZPOS值是读取、读取*或读取#n结束时的实际文件偏移量(以字节为单位)。用户在读取多字节字符集时必须适当小心。

可以使用$ZSEEK函数设置当前文件位置。不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

0
0 66
文章 姚 鑫 · 二月 16, 2021 2m read

第三十六章 Caché 变量大全 $ZORDER 变量

包含下一个全局节点的值。

大纲

$ZORDER
$ZO

描述

$ZORDER包含当前全局引用之后的下一个全局节点的值(在$QUERY序列中,而不是$ORDER序列中)。如果没有下一个全局节点,访问$ZORDER将导致<unfined>错误,指示$ZORDER成功访问的最后一个全局节点。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

示例

下面的示例使用WHILE循环重复调用$ZORDER以遍历一系列下标节点:

/// d ##class(PHA.TEST.SpecialVariables).ZORDER()
ClassMethod ZORDER()
{
	SET ^||a="groceries"
	SET ^||a(1)="fruit"
	SET ^||a(1,1)="apples"
	SET ^||a(1,2)="oranges"
	SET ^||a(3)="nuts"
	SET ^||a(3,1)="peanuts"
	SET ^||a(2)="vegetables"
	SET ^||a(2,1)="lettuce"
	SET ^||a(2,2)="tomatoes"
	SET ^||a(2,1,1)="iceberg"
	SET ^||a(2,1,2)="romaine"
	SET $ZE
0
0 169
文章 姚 鑫 · 二月 15, 2021 3m read

第三十五章 Caché 变量大全 $ZNSPACE 变量

包含当前命名空间名称。

大纲

$ZNSPACE

描述

$ZNSPACE包含当前命名空间的名称。通过设置$ZNSPACE,可以更改当前名称空间。

要获取当前命名空间名称,请执行以下操作:

DHC-APP>SET ns=$ZNSPACE
 
DHC-APP>WRITE ns
DHC-APP

还可以通过调用%SYSTEM.SYS类的Namespace()方法来获取当前命名空间的名称,如下所示:

DHC-APP>SET ns=$SYSTEM.SYS.NameSpace()
 
DHC-APP>WRITE ns
DHC-APP

可以使用%SYS.Namespace类的Existes()方法测试命名空间是否已定义,如下所示:

DHC-APP>WRITE ##class(%SYS.Namespace).Exists("USER")
1
DHC-APP>WRITE ##class(%SYS.Namespace).Exists("LOSER")
0

对于UNIX®系统,默认命名空间建立为系统配置选项。对于Windows系统,它是使用命令行启动选项设置的。

命名空间名称不区分大小写。InterSystems IRIS始终以全大写字母显示显式名称空间名称,以全小写字母显示隐含的名称空间名称。

要获取指定进程的命名空间名称,请使用%SYS

0
0 112
文章 姚 鑫 · 二月 14, 2021 1m read

第三十四章 Caché 变量大全 $ZNAME 变量

包含当前例程名称。

大纲

$ZNAME
$ZN

描述

$ZNAME包含在当前进程上执行的例程的名称。通常,这是ZLOAD加载的当前例程。如果当前没有执行任何例程,则$ZNAME包含空字符串。

当ZLOAD加载一个例程时,它将成为所有名称空间中当前进程的当前加载例程。因此,可以使用$ZNAME显示任何名称空间中当前加载的例程的名称,而不仅仅是加载该例程的名称空间。

例程名称区分大小写。

请注意,尝试ZLOAD例程失败会删除当前加载的例程,并将$ZNAME设置为空字符串。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

$ZNAME值可以通过以下任何命令设置:

  • ZLOAD command
  • ZSAVE command
  • 无参数ZREMOVE命令(设置为空字符串)
  • DO command
  • GOTO command with ^routine
0
0 121
文章 姚 鑫 · 二月 13, 2021 2m read

第三十三章 Caché 变量大全 $ZMODE 变量

包含当前I/O设备打开参数。

大纲

$ZMODE
$ZM

描述

$ZMODE包含使用OPENUSE命令为当前设备指定的参数。返回的字符串包含用于以规范形式打开当前I/O设备的参数。这些参数值由反斜杠分隔符分隔。TCP/IP IO上的开放参数(如“M”)被规范化为“PSTE”“Y”“K”参数值始终放在最后。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

示例

以下示例使用$ZMODE返回当前设备的参数:

/// d ##class(PHA.TEST.SpecialVariables).ZMODE()
ClassMethod ZMODE()
{
	WRITE !,"当前的开放模式有: ",$PIECE($ZMODE,"\")
	WRITE !,"NLS集合为: ",$PIECE($ZMODE,"\",2)
	WRITE !,"网络编码是: ",$PIECE($ZMODE,"\",4)
}
  • 终端
DHC-APP> d ##class(PHA.TEST.SpecialVariables).ZMODE()
 
当前的开放模式有: RY
NLS集合为: Latin1
网络编码是: GB18030
  • 控制台
d ##class(PHA.TEST.SpecialVariables).ZMODE()
0
0 131
文章 姚 鑫 · 二月 12, 2021 2m read

第三十二章 Caché 变量大全 $ZJOB 变量

包含JOB状态信息。

大纲

$ZJOB
$ZJ

描述

$ZJOB包含一个数字,其中每个位代表作业状态的一个特定方面。 $ZJOB返回一个整数,该整数由设置的状态位的总和组成。例如,如果$ZJOB = 5,则表示设置了1位和4位。

要测试单个$ZJOB位设置,可以使用整数除(\)和模(#)运算符。例如,$ZJOB\x#2,其中x是位号。下表显示了位的布局(按位的位置值)、其设置和含义:

BitSet toMeaning
11Job 从终端提示符启动。
10Jobroutine开始.
21JobJOB命令启动.
20Job 通过在终端提示下登录或从例程登录开始。
41<INTERRUPT> 已启用。 CTRL-C可以中断正在运行的程序。
40<INTERRUPT>被禁用,但已通过OPENUSE命令显式启用了<INTERRUPT>的终端行除外。
81<Interrupt>已收到并挂起。
80未收到<Interrupt>。值8由OPENUSE命令以及CTRL-C引起的错误陷阱清除。
10241无论其他条件如何,日志记录都会被禁用。
10240如果其他条件指示日志记录,则为此作业启用日志记录。

不能使用SET命令修改此特殊变量

1
0 176
文章 姚 鑫 · 二月 11, 2021 1m read

第三十一章 Caché 变量大全 $ZIO 变量

包含有关当前终端I / O设备的信息。

$ZIO
$ZI

描述

$ZIO包含有关当前I / O设备的信息。

对于作为终端的终端设备,$ZIO包含字符串TRM:。如果当前终端设备是远程连接的,则$ZIO包含有关远程连接的信息。

对于通过TELNET连接的终端设备,$ZIO包含以下内容:host | port

参数描述
host远程主机IP地址,格式为IPv4:nnn.nnn.nnn.nnn(其中nnn是十进制数字)或IPv6格式:h:h:h:h:h:h:h:h,其中h为十六进制数。
por远程IP端口号。

这两个值由竖线字符分隔。例如127.0.0.1 | 23

如果当前设备不是终端:

  • 如果是文件,则$ZIO包含文件的完整规范路径名。
  • 如果不是文件,则$ZIO包含空字符串。

以下示例返回当前设备信息:

/// d ##class(PHA.TEST.SpecialVariables).ZIO()
ClassMethod ZIO()
{
   SET x = $CASE($ZIO,
				"TRM:":"终端",
				"CON:":"控制台",
				"":"既不是终端也不是文件")
   WRITE "当前设备是 ",x
}

image

0
0 137
文章 姚 鑫 · 二月 10, 2021 1m read

第三十章 Caché 变量大全 $ZHOROLOG 变量

包含自Caché启动以来经过的秒数。

大纲

$ZHOROLOG
$ZH

描述

$ZHOROLOG包含自最近的Caché启动以来经过的秒数。这是一个计数,与时钟变化和日期范围无关。该值表示为浮点数,表示秒和秒的分数。小数位数与平台有关。 $ZHOROLOG在此小数部分截断尾随零。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

注意:由于Windows操作系统的限制,使Windows系统进入休眠或待机模式可能会导致$ZHOROLOG返回不可预测的值。此问题不会影响$HOROLOG$ZTIMESTAMP值。

示例

本示例输出当前的$ZHOROLOG值。

DHC-APP>WRITE $ZHOROLOG
94657.76444

以下示例说明如何使用$ZHOROLOG计时事件并进行基准测试。本示例通过100次执行对应用程序进行计时,然后找到平均运行时间。

/// d ##class(PHA.TEST.SpecialVariables).ZHOROLOG()
ClassMethod ZHOROLOG()
{
Cycletime
	SET start=$ZHOROLOG
	FOR i=1:1:100 { DO Myapp }
	SET end=$ZHOROLOG
	WRITE !,"平均运行时间是 ",(
0
0 119
文章 姚 鑫 · 二月 9, 2021 9m read

第二十九章 Caché 变量大全 $ZERROR 变量

包含上一个错误的名称和位置。

大纲

$ZERROR
$ZE 

描述

$ZERROR包含最新错误的名称,最新错误的位置(在适用的情况下)以及(对于某些错误代码而言)有关导致错误的原因的其他信息。 $ZERROR始终包含相应语言模式的最新错误。

$ZERROR值旨在错误后立即使用。由于$ZERROR值可能不会在例程调用中保留,因此希望保留$ZERROR值以供以后使用的用户应将其复制到变量中。强烈建议用户在使用后立即将$ZERROR设置为空字符串(“”)。

$ZERROR中包含的字符串可以是以下任何一种形式:

<error>
<error>entryref
<error> info
<error>entryref info
  • <error> 错误名称。错误名称始终以全部大写字母返回,并用尖括号括起来。它可能包含空格。
  • entryref 对发生错误的代码行的引用。它由标签名称和距该标签的行偏移量组成,后跟^和程序名称。此entryref紧跟在错误名称的右尖括号之后。从终端调用$ZERROR时,此entryref信息没有意义,因此不会返回。对最近使用ZLOAD加载到例程缓冲区中的例程的引用。
  • info 特定于某些错误类型的附加信息(见下表)。此信息与<error><error>entryref之间用空格分隔。如果有多个组件要提供
0
0 151
文章 姚 鑫 · 二月 8, 2021 1m read

第二十八章 Caché 变量大全 $ZEOS 变量

读取压缩流时包含流结束状态。

大纲

$ZEOS

大纲

$Zeos包含一个布尔值,该值指示是否已接收并处理传入(压缩)流的末尾。如果$Zeos=1,则已接收到压缩数据流的流结束。仅当流压缩/解压缩处于活动状态(/GZIP=1)时,$ZOS值才有意义。可以通过从OPENUSE命令发出/GZIP命令关键字来激活流压缩/解压缩。

在通过将设置更改为/GZIP=0来禁用流压缩/解压缩之前,必须检查$Zeos值。如果在处理压缩传入流的末尾之前发出/GZIP=0USE命令,则使用会生成<Translate>错误。如果尚未到达压缩传入流的末尾($ZEOS=0),则必须发出块读取命令,直到$ZEOS=1

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

示例

以下示例以/GZIP=1(启用压缩)开头。它执行一个循环,测试$ZEOS=1,并发出读取命令,直到$ZEOS=1。然后,它可以设置/GZIP=0(禁用压缩):

  OPEN dev:/GZIP=1
  READ block#length
  FOR {QUIT:$ZEOS
       READ x:10 }
  USE dev:/GZIP=0
0
0 105
文章 姚 鑫 · 二月 7, 2021 2m read

第二十七章 Caché 变量大全 $ZEOF 变量

包含指示是否已到达文件末尾的标志。

大纲

$ZEOF

描述

在每次顺序文件读取之后,Caché设置$ZEOF特殊变量以指示是否已到达文件末尾。提供此特殊变量是为了与使用$ZC设备状态检查的MSM例程兼容。

Caché将$ZEOF设置为上次使用的设备的文件状态。例如,如果从顺序文件读取,然后写入主设备,则Caché会将$ZEOF从顺序文件的文件结束状态重置为主设备状态。因此,应该在顺序文件读取之后立即检查$ZEOF值(如果需要,将其复制到变量)。

Caché将$ZEOF设置为下列值:

  • –1 文件结束
  • 0 不在文件末尾

要使用此功能,必须对顺序文件禁用<ENDOFFILE>错误。

  • 要对当前进程禁用此功能,请调用%SYSTEM.Process类的SetZEOF()方法。
  • 若要在系统范围内禁用此功能,请设置Config.Miscellous类的SetZEOF属性,或者转到管理门户并选择“系统管理”、“配置”、“附加设置”、“兼容性(系统、配置、兼容性设置)”。查看和编辑SetZEOF的当前设置。此选项控制在读取顺序文件时Caché遇到意外文件结尾时的行为。当设置为“true”时,Caché设置$ZEOF特殊变量以指示已到达文件末尾。当设置为“false”时,Caché会发出<ENDOFFILE>错误。默认值为“false”。
0
0 102
文章 姚 鑫 · 二月 6, 2021 2m read

第二十六章 Caché 变量大全 $ZCHILD 变量

当前进程的包含最后一个子进程的ID。

DHC-APP>job ##class(PHA.TEST.SpecialVariables).ZB()
 
DHC-APP>w $zchild
16636
DHC-APP>job ##class(PHA.TEST.SpecialVariables).ZB()
 
DHC-APP>w $zchild
5412

image

大纲

$ZCHILD
$ZC 

描述

$ZCHILD包含当前进程使用JOB命令创建的最后一个子进程的ID。如果进程没有使用JOB创建子进程,则$ZCHILD返回0(零)。

在MSM语言模式中,$ZC特殊变量(拼写如下)有不同的用途。用于确定顺序文件读取中的文件结尾。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

注意

$ZCHILDJOB的成功启动

设置$ZCHILD并不意味着JOB已成功启动。它只表示进程已创建,参数已成功传递。

例如,如果使用JOB生成一个不存在的例程,则$TEST$ZCHILD都会报告作业命令成功,尽管JOB会立即终止并显示<NOROUTINE>错误。

MSM语言模式下的$ZC

MSM语言模式支持$ZC特殊变量的特殊使用。

如果使用%SYSTEM.Process类的LanguageMode(8)方法将当前语言模式设置为MSM

0
0 107
文章 姚 鑫 · 二月 5, 2021 4m read

第二十五章 Caché 变量大全 $ZB 变量

包含当前I / O设备的状态信息。

大纲

$ZB

描述

$ZB包含读取操作后特定于当前I / O设备的状态信息

  • 从终端,顺序文件或其他基于字符的I / O设备读取时,$ZB包含读取操作的终止字符。它可以是终止符(例如),如果读取操作不需要终止符,则可以是输入数据的最后一个字符;如果需要终止符但未收到终止符,则可以是空字符串(例如,如果读取操作超时)。
  • 从磁带等基于块的I / O设备读取数据时,$ZB包含I / O缓冲区中剩余的字节数。写入磁带时,$ZB还包含I / O缓冲区中的字节数。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

从基于字符的设备或文件中读取时,$ZB$KEY都可以用于返回READ终止字符。对于基于字符的读取,这两个特殊变量非常相似,但不完全相同。对于基于块的读写(例如磁带),请使用$ZB; $KEY不支持基于块的读取和写入操作。

文件结束行为

默认情况下,Caché通过发出<ENDOFFILE>错误来处理顺序文件的文件结尾;它不会设置$ZB。可以以与MSM兼容的方式配置文件结束行为。在这种情况下,遇到文件结尾时,Caché不会发出错误,而是将$ZB设置为“”(空字符串),并将$ZEOF设置为-1。

要配置文件结束处理,请转到管理门户,依次选择“系统”,“配置”,“兼容性设置”。

0
0 161
问题 haibao yun · 二月 4, 2021
ClassMethod TestArr()
{
	s arrRow = [1,2,3,4,5,6,7]
	s size = arrRow.%Size() - 1
	for i = 0 : 1 : size {
		s ii = (size / size) * i // 有size运算, 就报错
		w arrRow.%Get(ii), !
	}
	q ""
}

如上,cache循环中有 size 就报错, iris不报😂

1
0 224
文章 姚 鑫 · 二月 4, 2021 5m read

# <center> 第二十四章 Caché 变量大全 $ZA 变量

包含当前设备上最后一次读取的状态。

# 大纲

```java
$ZA
```

# 描述

`$ZA`包含当前设备上最后一次读取的状态。

不能使用`SET`命令修改此特殊变量。尝试这样做会导致`<SYNTAX>`错误。

# 注意

## `$ZA`,带终端I / O

`$ZA`被实现为一系列位标志,每个位表示一条特定的信息。下表显示了可能的值、它们的含义,以及如何使用模(`#`)和整数除(`\`)运算符测试它们:

位 | 测试| 含义
---|---|---
0    |`$ZA#2`|     `<CTRL-C>`已到达,无论是否启用中断。
1    |`$ZA\2#2`|    读取超时。
2    |`$ZA\4#2`|    I/O错误。
8    |`$ZA\256#2`|    Caché检测到无效的转义序列。
9    |`$ZA\512#2`|    硬件检测到奇偶校验或成帧错误。
11    |`$ZA\2048#2`|    进程已与其主设备断开连接。
12    |`$ZA\4096#2`|对于COM端口:CTS(清除发送)。从调制解调器发送到其计算机的信号,表示传输可以进行。对于TCP设备:设备在服务器模式下运行。
13    |`$ZA\8192#2`|对于COM端口:DSR(数据集就绪)。从调

0
0 151
文章 姚 鑫 · 二月 3, 2021 2m read

第二十三章 Caché 变量大全 $Y 变量

包含光标的当前垂直位置。

大纲

$Y

描述

$Y包含光标的当前垂直位置。当字符写入设备时,Caché会更新$Y以反映垂直光标位置。

输出的每个换行符(换行符)(ASCII 10)将$Y递增1。换页符(ASCII 12)将$Y重置为0。

$Y是16位无符号整数。当其值达到65536时,$Y换行为0。换句话说,如果$Y为65535,则下一个输出字符将其重置为0。

可以使用set命令为$X$Y赋值。例如,可以使用特殊的转义序列来改变物理游标位置,而不更新$X$Y的值。在这种情况下,在使用转义序列之后,使用set将正确的值分配给$X$Y

注意

NLS字符映射

国家语言支持(NLS)实用程序$X/$Y选项卡定义当前区域设置的$X$Y光标移动字符。

带终端I/O的$Y

下表显示了不同字符对$Y的影响。

Echoed CharacterASCII CodeEffect on $X
<FORM FEED>12$Y=0
<RETURN>13$Y=$Y
<LINE FEED>10$Y=$Y+1
<BACKSPACE>8$Y=$Y
<TAB>9$Y=$Y
任何可打印的ASCII字符32-126$Y=$Y

OPENUSE命令的S(ECRET)协议关闭回显。它还可以防止$Y在输入

0
0 139
文章 姚 鑫 · 二月 2, 2021 3m read

第二十二章 Caché 变量大全 $X 变量

包含光标的当前水平位置。

大纲

$X

描述

$X包含光标的当前水平位置。将字符写入设备时,Caché会更新$X以反映水平光标位置。

输出的每个可打印字符将$X加1。回车符(ASCII 13)或换页符(ASCII 12)将$X重置为0(零)。

$X是16位无符号整数。

  • 在非UNICODE系统上,当$X的值达到65536时,它会换行为0。换句话说,如果$X为65535,则下一个输出字符将其重置为0。
  • 在UNICODE系统上,$X在其值达到16384时换行为0(其余两位用于日语音调编码)。

可以使用set命令为$X$Y赋值。例如,可以使用特殊的转义序列来改变物理游标位置,而不更新$X$Y的值。在这种情况下,在使用转义序列之后,使用set将正确的值分配给$X$Y

注意

NLS字符映射

国家语言支持(NLS)实用程序$X/$Y选项卡定义当前区域设置的$X$Y光标移动字符。

带终端I/O的$X

下表显示了不同字符对$X的影响。

Echoed CharacterASCII CodeEffect on $X
<FORM FEED>12$X=0
<RETURN>13$X=0
<LINE FEED>10$X=$X
<BACKSPACE>8$X=$X-1
<TAB>9$X=$X+1
0
0 124
文章 姚 鑫 · 二月 1, 2021 2m read

第二十一章 Caché 变量大全 $USERNAME 变量

包含当前进程的用户名。

大纲

$USERNAME

描述

$USERNAME包含当前进程的用户名。可以采用以下两种形式之一:

  • 当前用户的名称;例如:Mary。如果不允许多个安全域,则返回此值。
  • 当前用户的名称和系统地址;例如:Mary@jupiter。如果允许多个安全域,则返回此值。

要允许多个安全域,请转到管理门户,选择系统管理、安全、系统安全、系统范围安全参数。选中允许多个安全域复选框。对此设置的更改将应用于新调用的进程;更改它不会影响当前进程返回的值。

不能使用set命令或new命令修改此值。但是,新的$ROLES还会堆叠当前的$username值。

通常,$username值是在连接时指定的用户名。但是,如果允许未经验证的访问,则用户终端或ODBC客户端可以连接到Caché,而无需指定用户名。在本例中,$username包含字符串“UnnownUser”

使用JOB命令创建进程时,它继承与其父进程相同的$USERNAME$ROLES值。

可以使用SQL CREATE USER语句创建用户名,使用SQL DROP USER语句删除用户名。可以使用SQL ALTER USER语句更改用户密码。通过使用SQL GRANT语句或使用系统实用程序向用户添加角色,可以为用户分配角色。您可以使用$ROLES特殊变量访问分

0
0 160
文章 Jeff Liu · 一月 27, 2021 13m read

1.关于本文

就像Caché模式匹配一样,正则表达式也可以在Caché中用来识别文本数据中的模式--只是表达能力更强。本文简要介绍了正则表达式,以及在Caché中如何使用它。这里提供的信息基于各种来源,最值得拜读的是Jeffrey Friedl的《掌握正则表达式》一书,当然还有Caché在线文档。本文无意讨论正则表达式的所有可能性和细节。如果你想了解更多,请参考第5章中列出的信息来源。

使用模式进行文本处理有时会变得很复杂。在处理正则表达式时,我们通常有几种实体:我们正在搜索模式的文本、模式本身(正则表达式)和匹配(文本中与模式匹配的部分)。为了便于区分这些实体,本文档中使用了以下约定。

文本样本以单色字体单独列出,不加引号。

This is a "text string" in which we want to find "something".

除非不明确,否则正文中的正则表达式会以灰色背景显示,如本例。\".*?\".

需要时用不同的颜色突出显示匹配。

这是一个"text string",我们要在其中找到"something"

代码样本显示在如下的文本框里

set t=" This is a ""text string"" in which we want to find ""something "

set r="\"".*?\""



1
0 531
文章 Louis Lu · 一月 15, 2021 31m read

# 什么是核心文件? 它们什么时候有用?

本文档中的信息以 2019 年 6 月 30 日发布的 InterSystems 产品最新版本为准。 此更新涵盖了截至 2020 年 4 月 14 日发现的错误,但不包括 InterSystems 产品新版本中的更改。
不过,现有产品的细节不会经常变化。
本文的 PDF 版本可以从 WRC 获取
目录
核心文件基础知识 SuSE Linux Windows
AIX Ubuntu Linux 测试
Docker macOS (Darwin) 健全性测试
HP–UX OpenVMS 传输
RedHat Linux Solaris 索引

核心文件基础知识

Caché、Ensemble、HealthShare 和 InterSystems IRIS 数据平台非常可靠。 我们的绝大多数客户从未经历过任何种类的故障。 但是,在极少数情况下,进程发生过故障,并因此生成了核心文件(在 Windows 和 OpenVMS 上称为进程转储文件process dump file)。 核心文件记录了进程发生故障时的进程状态,包括进程寄存器和内存(是否包括共享内存的信息取决于配置)。 核心文件实质上是发生故障的进程在试图执行错误操作时的瞬时画面。 我们可以根
































1
0 575