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

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

第三十三章 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()

当前的开放模式有: SADY
NLS集合为: Latin1
网络编码是: RAW

下面的示例使用Use命令设置当前设备的参数。它在USE命令前后使用$ZMODE检查当前参数。为了测试是否设置了特定参数,此示例使用带有反斜杠分隔符的$PIECE函数,并使用CONTAINS运算符([)测试值。

/// d ##class(PHA.TEST.SpecialVariables).ZMODE1()
ClassMethod ZMODE1()
{
Zmodetest
    WRITE !, $ZMODE
    IF $PIECE($ZMODE,"\")["S" {
        WRITE !, "S is set"  
    } ELSE {
        WRITE !, "S is not set" 
    }
    USE 0:("":"IS":$CHAR(13,10))
    WRITE !, $ZMODE
    IF $PIECE($ZMODE,"\")["S" {
        WRITE !, "S is set"  
    } ELSE {
        WRITE !, "S is not set" 
    }
    QUIT
}

DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZMODE1()

RY\Latin1\K\GB18030\
S is not set
SIRY\Latin1\K\GB18030\
S is set
00
1 0 0 9