文章
姚 鑫 · 二月 6, 2021 阅读大约需 2 分钟

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

第二十六章 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,则$ZC特殊变量将在顺序文件读取期间设置。这提供了与MSM $ZC变量的兼容性。(在所有其他语言模式中,$ZC不是在文件读取过程中设置的;$ZC$ZCHILD的缩写,具有完全不同的功能。)

在MSM语言模式下,成功的顺序文件读取将设置$ZC=0

在MSM语言模式下,文件结束条件设置$ZC=-1(负1)。未出现<ENDOFFILE>错误。

但是,Caché $ZC与MSM $ZC不同:

如果文件的最后一行没有以分隔符结束,则MSM设置其$ZC=-1(负1)。Caché不检查分隔符;在本例中,它设置$ZC=0而不是-1。

如果读取过程中发生I/O错误,MSM会将其$ZC设置为1。Caché不支持此功能;相反,Caché会发出<read>错误。

00
1 0 0 7