文章 姚 鑫 · 二月 12, 2021 2m read

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

包含JOB状态信息。

大纲

$ZJOB
$ZJ

描述

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

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

Bit Set to Meaning
1 1 Job 从终端提示符启动。
1 0 Jobroutine开始.
2 1 JobJOB命令启动.
2 0 Job 通过在终端提示下登录或从例程登录开始。
4 1 已启用。 CTRL-C可以中断正在运行的程序。
4 0 被禁用,但已通过OPENUSE命令显式启用了的终端行除外。
8 1 已收到并挂起。
8 0 未收到。值8由OPENUSE命令以及CTRL-C引起的错误陷阱清除。
1024 1 无论其他条件如何,日志记录都会被禁用。
1024 0 如果其他条件指示日志记录,则为此作业启用日志记录。

不能使用SET命令修改此特殊变量。尝试执行此操作会导致错误。

1
0 181
文章 姚 鑫 · 二月 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

image

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

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

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

大纲

$ZHOROLOG
$ZH

描述

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

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

注意:由于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 129
文章 姚 鑫 · 二月 9, 2021 9m read

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

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

大纲

$ZERROR
$ZE 

描述

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

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

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

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

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

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

大纲

$ZEOS

大纲

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

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

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

示例

以下示例以/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 107
文章 姚 鑫 · 二月 7, 2021 2m read

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

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

大纲

$ZEOF

描述

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

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

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

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

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

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

在本文中,我们将讨论一个我每天都会使用的应用程序,当监控 InterSystems IRIS 平台上的应用程序和集成解决方案并查找所发生的错误时,我就会用到它。

在查找用来记录 InterSystems IRIS、Ensemble 和 Caché DBMS 中对象变化的解决方案时,我发现了一篇关于使用宏进行日志记录的好文章。 受到该文章的启发,我对其介绍的项目进行了分叉,并做了相应调整以满足一些特定需求。 生成的解决方案以面板子类 %CSP.Util.Pane 的形式实现,它具有主命令窗口、“Run”(运行)按钮和已启用的命令配置。

该应用程序允许查看和编辑 global 数组、执行查询(包括 JDBC 和 ODBC)、通过电子邮件发送搜索结果(压缩的 XLS 文件)、查看和编辑对象,以及用几个简单图表来表示系统协议。

该 apptools-admin 应用程序基于 jQuery-UI、UiKit、chart.js 和 jsgrid.js。 欢迎查看源代码

安装

仓库中详细介绍了所有安装方法。

0
0 198
文章 姚 鑫 · 二月 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命令修改此特殊变量。尝试这样做会导致错误。

注意

$ZCHILDJOB的成功启动

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

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

MSM语言模式下的$ZC

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

如果使用%SYSTEM.Process类的LanguageMode(8)方法将当前语言模式设置为MSM,则$ZC特殊变量将在顺序文件读取期间设置。

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

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

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

大纲

$ZB

描述

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

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

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

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

文件结束行为

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

要配置文件结束处理,请转到管理门户,依次选择“系统”,“配置”,“兼容性设置”。查看和编辑SetZEOF的当前设置。

0
0 165
问题 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 227
文章 姚 鑫 · 二月 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 155
文章 姚 鑫 · 二月 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 Character ASCII Code Effect on $X
12 $Y=0
13 $Y=$Y
10 $Y=$Y+1
8 $Y=$Y
9 $Y=$Y
任何可打印的ASCII字符 32-126 $Y=$Y

OPENUSE命令的S(ECRET)协议关闭回显。它还可以防止$Y在输入过程中被更改,因此它指示真实的光标位置。

更改垂直位置的WRITE $CHAR()也会更改$Y

0
0 143
文章 Nicky Zhu · 二月 3, 2021 6m read

下一篇: 案例: 建立只能使用SQL的用户

IRIS通过认证(Authentication)与授权(Authorization)两项机制控制外部用户对系统及应用、数据资源的可访问性。因此。如需要进行权限控制,则需要通过配置认证和授权进行。

IRIS中的认证 {#2}

认证可以验证任何试图连接到InterSystems IRIS®的用户的身份。一旦通过认证,用户就与IRIS建立了通信,从而可以使用其数据和工具。有许多不同的方法可以验证用户的身份;每种方法都称为验证机制。IRIS 通常被配置为只使用其中一种方式。 支持的认证方式

  • 实例认证:通过用户名/密码对登录平台,即密码认证
  • LDAP:通过第三方LDAP服务器(如Windows Active Directory )完成认证
  • 操作系统认证:建立操作系统用户-平台用户映射,使用操作系统用户登录平台
  • Kerberos:使用Kerberos协议进行认证
  • 代理认证:使用自定义的代码实现认证过程

系统服务与认证 {#2.1}

在安装时,IRIS会启动一系列系统级的服务用与控制与外部用户或系统的交互,这些服务都绑定了默认的认证机制 image 图中红框标出的即为系统安装后会自动启用并需经认证才可使用的系统服务,认证手段可配置。 例如,如果变更%Service_Console的身份验证方法,取消密码方法,用户就不能通过输入用户名密码登入Terminal。

0
0 704
文章 姚 鑫 · 二月 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的影响。

0
0 126
文章 姚 鑫 · 二月 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语句或使用系统实用程序向用户添加角色,可以为用户分配角色。

0
0 162
文章 Claire Zheng · 二月 1, 2021 1m read

Hi大家好!

有时您需要在帖子中放入带格式的 ObjectScript。

为此,请将代码放入编辑器,将其选中,然后点击 ObjectScript 按钮。

在保存/预览帖子后,代码将突出显示为 ObjectScript。

请参见下面的 gif:

如果您使用 Markdown 编辑器,将代码放入两个标签的范围内就可以突出显示 ObjectScript: 

<pre><code> .... 您的代码... </code></pre>

0
0 217
问题 Weiwei Yang · 一月 25, 2021

生产环境要使用80端口访问服务器,采用直接部署程序的方式,是在Linux服务器上同时部署HealthConnect和Apache。类似的现在想要使用Docker技术,在一台服务器上部署了HealthConnect和Apache容器,该如何配置http.conf文件,使80端口的请求转到HealthConnect上呢?如果这种方式不可行,有没有其他方法呢?

1
0 199
文章 Hao Ma · 一月 30, 2021 13m read

检查Apache工作状态

确认Apache正常工作, apache的版本已经安装路径。

[root@centos7 ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 24 2019 13:45:48
[root@centos7 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
  Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Active: active (running) since Mon 2020-06-15 16:46:36 CST; 5min ago
    Docs: man:httpd(8)
          man:apachectl(8)
Main PID: 6506 (httpd)
  Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
    Tasks: 272
  Memory: 31.3M
  CGroup: /system.
0
0 682
文章 Hao Ma · 一月 30, 2021 6m read

本文介绍InterSystems Web Gateway的安装和配置。

在2018以前的ISC产品中, InterSystems Web Gateway被称为CSP Gateway。, CSP是Cache'的页面技术。InterSystems的产品页面,Web服务等大多是CSP写成的。IRIS发布后CSP Gateway改名成Web Gateway, 但内部的配置文件,说明等等还到处可见CSP Gateway的叫法。在本文里不同的地方有这两个说法别奇怪,他们是一个东西。 IRIS通过它和外部Web服务器连接。 本文的内容适用任何ISC产品的部署,包括页面的选项Cache'. IRIS,HealthConnect, Ensemble等等。它的作用和表现是一样的。 无论您使用的是Cache',IRIS , HealthConnect还是HealthShare, 只有在生产环境中使用HTTP请求,基本上都需要使用Web Gateway。

如果需要更详细的内容,请参考在线文档:InterSystems Web Gateway

什么是Web Gateway

CSP是Cache' Server Page的缩写,如同JSP(Java Server Page)是Java的前端技术, CSP是InterSystems的前端技术。

0
3 1068
文章 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 557
文章 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 577