美文网首页
第五十四章 Caché 函数大全 $QSUBSCRIPT 函数

第五十四章 Caché 函数大全 $QSUBSCRIPT 函数

作者: Cache技术分享 | 来源:发表于2020-10-14 08:33 被阅读0次

    第五十四章 Caché 函数大全 $QSUBSCRIPT 函数

    返回变量名称或下标名称。

    大纲

    $QSUBSCRIPT(namevalue,intexpr)
    $QS(namevalue,intexpr)
    

    参数

    • namevalue 字符串或计算结果为字符串的表达式,它是带有或不带有下标的局部变量,进程专用全局变量或全局变量的名称。
    • intexpr 一个整数代码,用于指定要返回的名称:变量名称,下标名称或名称空间名称。

    描述

    $QSUBSCRIPT根据intexpr的值返回变量名称或namevalue的指定下标的名称。如果namevalue是全局变量,则还可以返回名称空间名称(如果已明确指定)。 $QSUBSCRIPT不返回默认的名称空间名称。

    参数

    namevalue

    带引号的字符串或计算结果为字符串的表达式,该字符串是本地或全局引用。它可以采用以下形式:Name(s1,s2,...,sn)。

    如果字符串是全局引用,则它可以包含名称空间引用。因为namevalue是带引号的字符串,所以名称空间引用周围的引号必须加倍以正确地解析为文字引号。

    名称值必须以规范形式引用变量名(完全扩展的引用)。要将$QSUBSCRIPT与裸露的全局引用或间接引用一起使用,可以使用$NAME函数返回相应的完全扩展的引用。

    intexpr

    一个整数表达式代码,指示要返回的值。假定namevalue参数的格式为NAME(s1,s2,...,sn),其中n是最后一个下标的序号。 intexpr参数可以具有以下任何值:

    代码 返回值
    < -1 产生一个 <FUNCTION> 错误;这些号码保留用于将来的扩展。
    -1 如果全局变量名称值包含一个名称空间,则返回名称空间名称;否则,返回名称空间名称。否则,返回空字符串(“”)。
    0 返回变量名称。为全局变量返回^NAME,为进程专用全局变量返回`^ NAME`。不返回名称空间名称。
    <=n 返回整数n指定的订阅级别的下标名称,其中1为第一个下标级别,n为定义的最高下标级别。
    >n 大于n的整数将返回空字符串(“”),其中n是定义的最高下标级别。

    示例

    以下示例在namevalue是具有一个下标级别和指定名称空间的下标全局值时返回$QSUBSCRIPT值:

    /// d ##class(PHA.TEST.Function).QSUBSCRIPT()
    ClassMethod QSUBSCRIPT()
    {
        SET global="^|""account""|%test(""customer"")"
        WRITE !,$QSUBSCRIPT(global,-1)  ; account
        WRITE !,$QSUBSCRIPT(global,0)   ; ^%test
        WRITE !,$QSUBSCRIPT(global,1)   ; customer
        WRITE !,$QSUBSCRIPT(global,2)   ; null string
    }
    
    
    DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT()
     
    account
    ^%test
    customer
    

    以下示例在namevalue是具有两个下标级别的进程专用全局变量时返回$QSUBSCRIPT值。 $ZREFERENCE特殊变量包含最近引用的全局变量的名称

    /// d ##class(PHA.TEST.Function).QSUBSCRIPT1()
    ClassMethod QSUBSCRIPT1()
    {
        SET ^||myppg(1,3)="apples"
        WRITE !,$QSUBSCRIPT($ZREFERENCE,-1)  ; null string
        WRITE !,$QSUBSCRIPT($ZREFERENCE,0)   ; ^||myppg
        WRITE !,$QSUBSCRIPT($ZREFERENCE,1)   ; 1
        WRITE !,$QSUBSCRIPT($ZREFERENCE,2)   ; 3
    }
    
    
    DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT1()
     
     
    ^||myppg
    1
    3
    

    以下示例为指定为裸全局引用的全局变量返回$QSUBSCRIPT值。 $NAME函数用于将裸露的全局引用扩展为规范形式:

    /// d ##class(PHA.TEST.Function).QSUBSCRIPT2()
    ClassMethod QSUBSCRIPT2()
    {
        SET ^grocerylist("food","fruit",1)="apples"
        SET ^(2)="bananas"
        WRITE !,$QSUBSCRIPT($NAME(^(2)),2)   ; returns "fruit"
    }
    
    DHC-APP>d ##class(PHA.TEST.Function).QSUBSCRIPT2()
     
    fruit
    

    相关文章

      网友评论

          本文标题:第五十四章 Caché 函数大全 $QSUBSCRIPT 函数

          本文链接:https://www.haomeiwen.com/subject/ztjipktx.html