携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第43天,点击查看活动详情
使用^GETPPGINFO
- 使用
^GETPPGINFO工具以块为单位显示当前进程私有全局变量及其空间分配^GETPPGINFO不列出进程私有全局变量的下标或值。可以通过指定进程ID(PID)来显示特定进程的进程私有全局变量,也可以通过指定“*”通配符字符串来显示所有进程的进程私有全局变量。 - 必须在
%SYS命名空间中才能调用^GETPPGINFO。
s ^||fruit("apple","red") = "apple red"
s ^||fruit("banana","yellow") = "banana yellow"
s ^||fruit("pear","blue") = "pear blue"
s ^||person("china","悟空")="china 悟空"
s ^||person("usa","美国队长")="usa 美国队长"
s $namespace = "%SYS"
d ^GETPPGINFO("*")
s $namespace = "dhc-app"
- 指定进程ID显示信息。
Process ID: 28668 --> Total PPG Block count 7, block size 8,192
PPG: fruit uses 2 blocks
PPG: person uses 2 blocks
- 将进程globe导出
%SYS>d ^GETPPGINFO("*","T","E:/temp/ppg.txt")
%SYS>d ^GETPPGINFO("*","MNN","E:/temp/ppg.txt")
全局变量
- 全局变量是一种特殊类型的变量,它自动存储在Caché数据库中。它被映射到特定的命名空间,并且只能在该命名空间内访问,除非使用扩展引用。全局可以由任何进程访问。全局在创建它的进程终止后仍然存在。它会一直存在,直到被明确删除。
s mylocal = "这是局部变量"
s ^myglobal = "这是存储在当前命名空间中的全局变量"
%SYS>zw ^|"dhc-app"|myglobal
^|"dhc-app"|myglobal="这是存储在当前命名空间中的全局变量"
- 将全局的设置或终止视为日志记录的事务事件;回滚事务将撤消这些操作。
k ^myglobal("a")
zw ^myglobal("a")
ts
s ^myglobal("a") = "tro"
tro
zw ^myglobal("a")
- 全局名称限制为
31个字符,不包括前缀字符。可以指定长度超过31个字符的名称,但仅使用前31个字符。因此,全局名称的前31个字符必须是唯一的。
s ^abcdef1234abcdef1234abcdef1234a = 1
s ^abcdef1234abcdef1234abcdef1234ab = 2
zw ^abcdef1234abcdef1234abcdef1234ab
- 可以使用
$ZREFERENCE特殊变量来确定最近使用的全局变量的名称。可以使用$QSUBSCRIPT函数返回指定全局变量节点的名称,或使用$QLENGTH函数返回下标的数量。
s ^color(1) = "red"
s ^color(2) = "yellow"
s ^color(3) = "write"
s ^color(4) = "black"
s ^color(5) = "green"
s ID = ""
for {
s ID = $o(^color(ID))
q:(ID = "")
s data = $zr
w "$ZREFERENCE:" _ @data,!
w "$QSUBSCRIPT:" _ $qs($zr,0),!
w "$QLENGTH:" _ $ql($zr),!
}
- 对于当前进程,局部变量名必须是唯一的。其他进程可能具有同名的局部变量。进程全局变量或全局变量可以与局部变量,百分比变量同名。例如:
yx、^||yx、^yx、%yx是个不同的变量。
k ^yx, ^||yx
s yx = 1
w yx,!
s ^||yx = 2
zw ^||yx
s ^yx = 3
zw ^yx
s %yx =4
w %yx,!
1
^||yx=2
^yx=3
4
- 推荐变量使用顺序局部变量 -> 进程全局变量 -> 全局变量。百分比变量看情况使用。
下标变量与数组变量
- 局部变量、进程私有变量和全局变量都可以采用下标。
- 下标的最大长度为
511个编码字节。超过最大下标长度会导致错误。但是,允许的最长整数是309位;超过此限制将导致<MAXNUMBER>错误。因此,必须将长度超过309个字符的数字下标指定为字符串。 - 局部变量的最大下标级别数为
255。全局变量或进程私有全局变量的最大下标级别数为253。超过最大下标级别数会导致错误。 - 下标为数字的为数组变量。下标变量包含数组变量。
变量类型和转换
| from | to | 规则 |
|---|---|---|
| Number | String | 使用表示数字值的字符串,例如上例中变量num的2.2。 |
| String | Number | 字符串的前导字符被解释为数字文字,例如,“-1.20abc”被解释为-1.2,而“abc123”被解释为0。 |
| Object | Number | 使用给定对象引用的内部对象实例编号。该值为整数。 |
| Object | String | 使用n@cls形式的字符串,其中n是内部对象实例编号,cls是给定对象的类名。 |
| Number | Object | 不允许 |
| String | Object | 不允许 |
使用#Dim定义变量类型
- 在Studio中编写代码时,可以使用
#Dim预处理器指令。#Dim提供有关所需变量类型的信息。Studio使用此信息通过Studio Assist功能完成代码。
#Dim President As %String = "yaoxin"
w President,!