第六十一章 假脱机设备 - 假脱机和特殊变量
第六十一章 假脱机设备 - 假脱机和特殊变量
写入 ^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 设备。