第六十一章 假脱机设备 - 假脱机和特殊变量
写入 ^SPOOL
时,IRIS
会不断更新 $X
并$Y
特殊变量。$X
表示写入当前索引行的字符数,$Y
包含当前 OPEN
期间写入的行数。请注意,$Y
的值不一定与 node
索引相同。例如:
/* Writing to the ^SPOOL global */
OPEN 2:(2:3)
USE 2
WRITE "Hello " SET x1=$X,y1=$Y,z1=$ZA
WRITE "world",! SET x2=$X,y2=$Y,z2=$ZA
WRITE "Good to see you",! SET x3=$X,y3=$Y,z3=$ZA
CLOSE 2
/* Displaying the ^SPOOL global */
WRITE ^SPOOL(2,3),^SPOOL(2,4)
WRITE !,"$X=",x1," ",x2," ",x3
WRITE !,"$Y=",y1," ",y2," ",y3
WRITE !,"$ZA=",z1," ",z2," ",z3
在此示例中,第一个 WRITE
集 $X=6
(当前列号),第二个和第三个 WRITE
都设置为 $X=0
(因为行返回)。第一个 WRITE
设置为 $Y=0
,第二个 $Y=1
(因为行返回),第三个 $Y=2
。但请注意,正在写入的行是 ^SPOOL(2,3)
和 ^SPOOL(2,4)
。要确定索引号,请使用 $ZA
。
写入 spool
文件会将 $ZA
特殊变量设置为下一个可用的索引号。因此,如果要写入 index=3
,并且不包含行终止符,则 $ZA=3
(因为下一个 WRITE
继续写入索引 3
),但如果包含行终止符,则 $ZA=4
。
USE
命令将 $ZB
设置为 包含 OPEN
命令中指定的假脱机文件的doc_num
。
$IO
特殊变量不会通过写入 spool
文件来修改。通常,$IO
由 USE
命令重置,以包含当前设备的 ID
。但是,当设备是仅输出设备(如后台处理程序)时,$IO
将继续包含当前输入设备的 ID
。
关闭假脱机设备
当您对设备 2
发出 CLOSE
时,系统会自动设置节点 ^SPOOL(doc_num,2147483647)
以存储有关关闭假脱机文档的信息以及输出达到的最高索引号。
更改命名空间
在 SPOOL
设备保持打开状态的情况下更改命名空间时,后台设备将在命名空间更改生效之前自动关闭。^SPOOL
全局变量中的结束记录将写入正确的数据库。
Abort Job Processing
如果打开假脱机设备,请卸载当前目录,然后发出 HALT
命令或 SYS
的 Terminate($JOB
) 方法。Process
类中,IRIS
会为后续尝试访问此假脱机设备返回一个持久错误。为避免这种情况,请更改命名空间以自动关闭任何打开的 SPOOL
设备。