文章
· 十二月 31, 2024 阅读大约需 2 分钟

第六十一章 假脱机设备 - 假脱机和特殊变量

第六十一章 假脱机设备 - 假脱机和特殊变量

写入 ^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 文件来修改。通常,$IOUSE 命令重置,以包含当前设备的 ID。但是,当设备是仅输出设备(如后台处理程序)时,$IO 将继续包含当前输入设备的 ID

关闭假脱机设备

当您对设备 2 发出 CLOSE 时,系统会自动设置节点 ^SPOOL(doc_num,2147483647) 以存储有关关闭假脱机文档的信息以及输出达到的最高索引号。

更改命名空间

SPOOL 设备保持打开状态的情况下更改命名空间时,后台设备将在命名空间更改生效之前自动关闭。^SPOOL 全局变量中的结束记录将写入正确的数据库。

Abort Job Processing

如果打开假脱机设备,请卸载当前目录,然后发出 HALT 命令或 SYSTerminate($JOB) 方法。Process 类中,IRIS 会为后续尝试访问此假脱机设备返回一个持久错误。为避免这种情况,请更改命名空间以自动关闭任何打开的 SPOOL 设备。

讨论 (0)1
登录或注册以继续