Skip to main content

$QSUBSCRIPT (ObjectScript)

変数名または添え字名を返します。

構文

$QSUBSCRIPT(varname,intexpr)
$QS(varname,intexpr)

引数

引数 説明
varname 添え字の有無に関係なく、変数の名前に評価される式。
intexpr 整数コードに評価される式。返す名前として、変数名、添え字名、ネームスペース名のいずれかを指定します。

説明

$QSUBSCRIPT は、intexpr の値に応じて、変数名、または varname の指定した添え字名の値を返します。varname がグローバル変数の場合、ネームスペース名を明示的に指定していれば、そのネームスペース名を返すこともできます。$QSUBSCRIPT は、既定のネームスペース名を返しません。

引数

varname

任意の変数名。

文字列がグローバル参照の場合、varname には拡張グローバル参照を指定できます。この場合、varname は引用符で囲まれた文字列であることから、ネームスペース参照を囲む引用符がリテラル引用符として正しく解析されるように、その引用符を二重にする必要があります。以下に 2 つの例を示します。

 write $QSUBSCRIPT("^|""SAMPLES""|myglobal(1,4,6)",1)
 write $QSUBSCRIPT("^|""^""|myglobal(3,6)",1)

varname は、変数名をキャノニック形式 (完全な拡張参照) で参照する必要があります。ネイキッド・グローバル参照、または間接参照と共に $QSUBSCRIPT を使用するには、対応する完全な拡張参照を返すために $NAME 関数を使用できます。

intexpr

返す値を指定する整数式コードです。namevalue 引数が形式 NAME(s1,s2,...,sn) を持つと仮定します。ここで n は最終添え字の順序数です。intexpr 引数は、下の値のうちいずれでも持つことが可能です。

Code 返り値
< -1 <FUNCTION> エラーを生成します。これらの数値は後の拡張子用に保存されます。
-1 グローバル変数 namevalue がネームスペース名を含む場合に、ネームスペース名を返します。それ以外では、NULL ("") 文字列を返します。
0 変数名を返します。グローバル変数に対して ^NAME を返し、プロセス・プライベート・グローバル変数に対して ^||NAME を返します。ネームスペース名を返しません。
<=n 整数 n で指定された添え字のレベルに対する添え字値を返します。1 は最初の添え字レベルで、n は、定義された添え字レベルで最高のレベルです。
>n 整数 > n は、NULL 文字列 ("") を返します。ここで、n は定義された添え字の最高レベルです。

以下の例は、namevalue が 1 つの添え字レベルを持つ添字付きグローバルであり、指定されたネームスペースの場合、$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

以下の例は、namevalue が 2 つの添え字レベルを持つプロセス・プライベート・グローバルの場合、$QSUBSCRIPT の値を返します。$ZREFERENCE 特殊変数には、最近参照された変数が含まれています。

   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

以下の例は、ネイキッド・グローバル参照として指定されるグローバル変数に対する $QSUBSCRIPT 値を返します。$NAME 関数は、ネイキッド・グローバル参照をキャノニック形式に拡張するために使用されます。

   SET ^grocerylist("food","fruit",1)="apples"
   SET ^(2)="bananas"
   WRITE !,$QSUBSCRIPT($NAME(^(2)),2)   ; returns "fruit"

関連項目

FeedbackOpens in a new tab