#InterSystems IRIS for Health

0 关注者 · 862 帖子

InterSystems IRIS for Health™ 是全球第一个也是唯一一个专门为医疗应用程序的快速开发而设计的数据平台,用于管理全世界最重要的数据。它包括强大的开箱即用的功能:事务处理和分析、可扩展的医疗保健数据模型、基于 FHIR 的解决方案开发、对医疗保健互操作性标准的支持等等。所有这些将使开发者能够快速实现价值并构建具有突破性的应用程序。了解更多信息

InterSystems 官方 Michael Lei · 一月 21, 2025

InterSystems 已更正导致在使用特定 $LIST 语法时引入无效数据库和日志记录的缺陷。 遇到此缺陷的可能性非常低,但它对操作的影响可能会很大。

受影响的产品

  • InterSystems IRIS® 数据平台:2023.3、2024.1.0、2024.1.1、2024.1.2、2024.2、2024.3 版
  • InterSystems IRIS® for Health:2023.3、2024.1.0、2024.1.1、2024.1.2、2024.2、2024.3 版
  • HealthShare® Health Connect:2023.3.0、2024.1、2024.1.1、2024.1.2、2024.2、2024.3 版
  • HealthShare® Unified Care Record and Suite:2024.2 版
  • 基于上述产品的所有产品组合

该问题仅影响 Unicode 安装。

使用以下语法在 global 中向列表附加新元素时,会出现此问题:

SET $LIST(<global reference>, *+1) = value.

当此调用的结果列表超出最大字符串长度时,正确的行为是返回 <MAXSTRING> 错误。此错误会出现在 InterSystems IRIS、InterSystems IRIS for Health 和 Health Connect 2023.3 之前的版本中。 在 2023.3 及后续版本中,无效值会保存到数据库而不是生成 <MAXSTRING> 错误.

任何后续引用 global 节点的尝试都会导致出现 <MAXSTRING> 错误。

global 更新也会产生日志记录(假设对此 global 的更新通常都会记录)。任何尝试应用生成的日志记录(包括启动时恢复、日志恢复和镜像操作)都会失败并出现 <MAXSTRING> 错误,同时停止对日志文件的进一步处理。

如果此缺陷给您带来了影响,请联系全球响应中心 (WRC) 寻求帮助。

此缺陷的更正标识为 DP-437169 。在从 InterSystems IRIS、InterSystems IRIS for Health 和 Health Connect 2024.1.3 与 2025.1.0 开始的未来所有版本中,都将包含此更正。 您也可以通过临时分发获取。 HealthShare Unified Care Record 2025.1 版与产品套件会在发布时包含该更正,但在先前版本的维护版中将不包含该更正。 如果您对此提醒有任何疑问,请联系全球响应中心

0
0 59
文章 姚 鑫 · 一月 18, 2025 2m read

第七十七章 设备特殊变量

^%IS 的更多功能

^%IS 还可用于执行以下任务:

  • 右边距抑制 — 可以设置终端线,以便每当选择该设备时,都会抑制右边距问题;默认值是自动假定的。
  • 自动设备选择 - 如果在调用 ^%IS 实用程序时存在变量 IOP,则实用程序会自动尝试打开该设备,而不是请求设备。如果 ^%IS 不成功,则将变量 POP 设置为 1
  • 预配置的终端 — 使用 Management Portal,可以配置不向用户请求任何设备信息的设备。

^%IS Global 的结构

^%IS 全局变量存储在 %SYS 命名空间中。它包含两个下标。第一个下标是在 Management Portal 中为设备配置的助记词名称。选择 System AdministrationConfiguration > Device SettingsIO Settings 以显示不同设备类型的默认助记词。第二个下标可以是 01

节点 0 的内容

节点 0 包含设备面板 Location 值:

^%IS(mnemonic,0) = Location

节点 1 的内容

节点 1 包含其他 Device panel 字段值,用插入符号 (^) 分隔:

^%IS(mnemonic,1) = Device #^Type^Subtype^Prompt code^not used 
^Other Open parameters^Alternate device

在此示例中,助记词名称为 2(这是 IRIS 假脱机程序的默认名称)的设备编号为 2,设备类型为 SPL(假脱机),设备子类型为 PK-DEC。未为短线类型设备定义其他值。

^%IS(2,1) = 2^SPL^PK-DEC^^^^^

设备特殊变量

某些 I/O 命令会影响某些系统变量的值。本节定义这些变量,并说明您可能希望使用它们的原因。仅当向当前设备发出 I/O 命令时,才会更改这些变量。这些设备特殊变量总结如下表:

设备特殊变量

Variable 变量Purpose 目的
$IO包含当前设备的设备 ID,所有输出操作都指向该 IDIRIS 在登录时将 $IO 的值设置为主输出设备,只有 USECLOSE 命令、BREAK 命令或返回程序员模式才能更改此值。
$X包含自当前设备上最后一次回车以来写入的可打印字符的运行总数。此数字的范围从 0 到设备的宽度。
$Y包含自当前设备上上次换页以来写入的换行符的运行总数。此数字的范围从 0 到设备的长度。
$ZA包含对终端设备执行 READ 命令后的 READ 状态信息。
$ZB包含当前设备上结束的最后一个 READ 操作的字符序列或事件。
$ZMODE包含您与当前设备的 OPENUSE 命令一起使用的参数。
0
0 63
文章 姚 鑫 · 一月 18, 2025 2m read

第七十六章 使用 ^%IS - 示例

示例

调用 CURRENT^%IS 后,将 $X$Y 设置为 DXDY 以定位光标。

  DO CURRENT^%IS
  WRITE *27,*61,*DY+32,*DX+32 
  SET $X=DX,$Y=DY

IN^%IS 入场点

IN^%IS 中的一个内部入口点,可以由仅计划从设备进行 input 的例程调用。此入口点可用于确保您不选择仅输出设备,例如打印机。

%SYS> Do IN^%IS

Device: 3 
Right margin: 132= <RETURN>
[you can't read from this device] 
Device: <RETURN>  
Right margin: 80= <RETURN>
%SYS>

OUT^%IS 入口点

OUT^%IS 中的一个内部入口点,可以由仅计划向设备输出的例程调用。

Spooling

IRIS 假脱机独立于您的操作系统执行的假脱机。IRIS 中的假脱机是一种技术,可让自动将程序的输出保存在全局中,而不是立即打印。稍后可以通过将 global 的内容发送到打印机来打印输出。

助记词 SPOOL 是默认助记词。要指定假脱机,请输入 “SPOOL” 以响应 Device 提示符。然后,系统要求提供假脱机文件名和描述。这是 ^SPOOL 全局变量中使用的名称,而不是操作系统级别的单独文件名。

如果任何现有文件名以您指定的名称开头或与您指定的名称匹配,则会显示这些名称,并要求您选择一个名称。如果未选择任何现有文件,则系统允许您创建具有指定名称和描述的新文件,如以下示例所示:

Device: SPOOL
Name:TEST
1. 1 TEST 02 Nov 1999 10:17 am First test 
2. 2 TEST 02 Nov 1999 10:18 am Second Test 
Select one: <Return> not found
Create new document 'TEST'? Yes => yes
Description: Third Test

如果因为要继续添加到现有文件而重新选择现有文档,系统将为您提供以下选项:

  1. 添加到文件的最末尾;
  2. 在最后一页的顶部重新启动,在这种情况下,将被删除的行将显示在屏幕上;
  3. 从第 1 页(开头)重新开始。

当你调用它进行假脱机时,你可以将下表中列出的变量传递给 ^%IS

可以传递给 ^%IS 的假脱机变量

Variable 变量Function 功能
IODOC文档名称(当此变量存在且不是空字符串时,所有问题都将被隐藏,并自动创建具有此名称的新文档)。
IODES自由文本描述。
IOPGM应在打印时调用的例程的名称,以允许用户为正确的表单对齐方式设置打印机。
0
0 61
文章 姚 鑫 · 一月 16, 2025 3m read

第七十五章 使用 ^%IS - OPEN 参数

OPEN 参数

默认情况下,OPEN 命令使用 ^%IS 全局中定义的设备的规范。在使用 ^%IS 时,可以通过指定其他设置来覆盖这些设置。

发出 USE 命令

运行 ^%IS 后,应用程序必须向 ^%IS 打开的设备发出 USE 命令。你可以使用变量 IO,只要你明白每次调用 ^%IS 时它的值都会发生变化。然后,后续的IRIS I/O 命令,例如 READWRITE,将引用该设备。

发出 CLOSE 命令

用户或应用程序开发人员必须关闭使用 ^%IS 实用程序打开的设备。

^%IS 助记词

^%IS 有几个功能可以简化它的使用。例如,如果想将 I/O 发送到自己的终端,只需在“设备”提示符处按 Enter 键即可。还可以使用内置的默认助记词或您自己定义的新助记词。

设备助记词

为各种设备提供助记符很有用,在某些情况下,为单个设备提供多个助记符也很有用。多个助记符允许您为设备指定不同的设备特征,并根据设备的使用方式改变特征。例如,通常用于数据输入的终端,因此具有终端的特性,可能连接了辅助打印机。通过分配不同的助记词来打开具有不同特征的同一设备,当您需要硬拷贝时,您可以将终端/打印机组合视为打印机。

默认助记词

^%IS 全局变量在安装时使用几个默认助记词进行初始化。例如,IRIS 假脱机程序有两个默认助记词,SPOOL2。只需键入 “2”“SPOOL” 即可将输出发送到 IRIS 后台处理程序。

如果您登录的是 RT:LT:VT: 类型的设备,并且终端是当前设备,则 ^%IS 将接受 0“”IO 的值以响应 “Device” 提示。它将使用适合您的终端类型的模板 (RT0:LT0: VT0:) 来为终端生成信息。

备用设备

如果用户在 Device 提示符处输入 “A”,则输出将转到为当前设备定义的备用设备。通常,用户希望备用设备是打印机。您可以创建一个带有助记符 “A” 的设备,指向打印机,而不是为系统中的每个设备定义单独的备用设备。然后,当用户在 ^%IS “Device” 提示符处输入 “A” 时,输出将转到该设备。

CURRENT^%IS 入场点

CURRENT^%IS 实用程序中的一个内部入口点,可用于获取当前设备的设备参数。对 ^%IS 的此调用将返回不同变量的值,因此可以为主设备保留一组参数,为具有不同特征的设备保留另一组参数。通常,在登录时调用此内部入口点,以允许应用程序访问主体设备的设备特征。CURRENT^%IS 返回下表中列出的变量的值:

CURRENT 返回值

Variable 变量Example 例Description 描述
FF3WRITE @FF should be used for form feed on this device WRITE @FF 应用于此设备上的换页
BS*8WRITE @BS should be used to backspace WRITE @BS 应用于退格
RM80Right margin 右边距
SL24Screen/page length 屏幕/页面长度
SUBC-VT100Device subtype 设备子类型
XY(see Example below) (见下面的示例)Set $X to DX and $Y to DY to perform direct cursor positioning将 $X 设置为 DX 并将 $Y 设置为 DY 以执行直接光标定位
0
0 66
文章 姚 鑫 · 一月 15, 2025 3m read

第七十四章 使用 ^%IS

^%IS 是一个通用的设备选择实用程序,用于基于字符的应用程序。可以使用内置的 ^%IS 实用程序来允许用户选择要将 I/O 操作定向到的设备。每当要选择设备时,应用程序都应该调用 ^%IS 实用程序。此实用程序允许用户指定要使用的设备和相应的 OPEN 命令参数,打开所选设备,然后将特定于设备的信息返回给调用程序。用户输入已在 ^%IS 全局中定义的助记词。^%IS 依赖于 Management Portal 中建立的 IO 配置默认值。

^%IS 如何运作

设备提示

当您调用 ^%IS 实用程序时,IRIS 会提示输入设备名称。可以通过以下方式之一进行响应:

  • 输入所需的设备名称或 ID 号。
  • 输入设备的助记词。
  • Enter 选择当前设备。

^%IS 响应如下:

  • 如果输入设备助记词,则 ^%IS 会在 ^%IS 全局变量中找到对应的设备并打开它。
  • 如果输入设备名称,则 ^%IS 会向该设备发出 OPEN 命令。
  • 如果设备是 IRIS 设备 ID,则 ^%IS 会检查设备表,查看该编号是否被重新映射到另一个实际的设备编号。然后 ^%IS 为设备发出 OPEN

其他问题

如果指定的设备是终端,则实用程序会提示您使用默认的右边距。按 Enter 键选择该边距或键入其他值。如果程序稍后尝试写入超过指定的右边距,则操作系统会在达到边距时插入“CR LF” (回车和换行) 。如果选择的设备不是终端,则实用程序会询问其他类型的次要问题。

例子

在以下示例中,用户按 Enter 键指定终端。该工具将提示输入右边距,建议默认值为 80。在 => 提示符下,用户输入 132 作为新的边距设置。

%SYS>DO ^%IS
Device: <RETURN>
Right margin: 80 => 132
%SYS>

^%IS 设置变量 IO 并返回其他变量的值

当您选择设备时,^%IS 将变量 IO 设置为 OPEN 命令中使用的设备名称或编号。^%IS 还返回下表中列出的变量的值:

^%IS 设备变量值

Variable 变量Example 例Description 描述
%ANSYes 是的通用对话答案。
IO64所选设备的设备编号或设备助记词。
IOF#换页。WRITE # 发出表单 feed 并更改 $Y。WRITE @IOF 应用于表单提要。
IOBS*8退格键。WRITE $CHAR(8) 发出退格键并更改$X。WRITE *8 发出退格键,但不会更改$X。WRITE @IOBS 应该用于退格。
IOM80右边距。
IOSL66屏幕/页面长度。
IOTTRM设备类型。
IOSTC-VT220设备子类型(本例中为 VT220)。
IOPAR("auv":0:2048) (“AUV”:0:2048)任何其他 OPEN 参数。
MSYSM/WNT M/WNT 系列系统类型(如 UNIX®、Windows)。
POP0.如果不为零,则指定未选择任何设备。也就是说,用户输入 STOP 以响应 Device: 提示符。
RMSDFRWRead/Write permissions. 读/写权限。
0
0 59
文章 姚 鑫 · 一月 14, 2025 2m read

第七十三章 管理设备和助记词空间 - 设备的解释级别

^%ISOPEN 命令一起使用的设备标识符最多要经过三个级别的解释。因此,如果在 ^%ISDevice: 提示符处输入助记词 47,则使用的最终设备 ID 可能会有所不同。下面介绍了这三个级别。

级别 1:%IS 实用工具级别

如果使用 ^%IS 实用程序选择设备,则使用第一级。^%IS 全局中的助记词可以与设备编号相关联。然后,^%IS 实用程序向该设备编号发出 OPEN 命令。

级别 2:OPEN 命令级别

OPEN 命令中,IRIS 会检查此数字是否存在于 Device panel 表的 Alias 列中。如果是这样,它会将其转换为该设备的实际设备号或名称。

注:如果想通过 ^%IS 的助记词访问该设备,请确保不要定义与设备 ID 匹配但与其他设备关联的别名。

定义默认助记词

程序员可以通过在其应用程序中使用 WRITE /mnemonic 命令来控制设备。例如,当程序员使用以下命令使用 %X364 助记词时,他们可以将光标移动到终端设备上当前行中的特定列:

  WRITE /CHA(column)

由助记词的任何特定值引起的操作由 WRITE 命令使用的助记词空间决定。助记词空间是具有定义设备操作和属性的入口点 (助记词) 的例程。

WRITE 命令使用设备的 OPENUSE 命令中定义的助记词空间。如果 OPENUSE 命令不包含助记词空间参数,则 IRIS 会为设备类型使用默认助记词空间。

预定义的助记词空间

IRIS 附带预定义的(默认)助记词 ^%X364。这是 X3.64 (ANSI) 终端的默认助记词空间。它是终端、顺序文件和其他设备启动时的默认值。

这些默认值在 Management Portal 中定义。依次选择 System AdministrationConfiguration (配置)Device Settings (设备设置)、IO Settings (IO 设置)。

如果创建自己的助记词空间例程,您可能希望更改 IRIS 用于这些设备类型中的一个或多个的默认助记词空间。

0
0 62
文章 姚 鑫 · 一月 13, 2025 2m read

第七十二章 管理设备和助记词空间 - 定义设备

定义设备

可以在 Management PortalDevices (设备) 配置设置中定义、编辑和删除设备。您输入的信息存储在 ^%IS 全局变量中。有关此全局的更多信息,请参阅 ^%IS 全局的结构。

如果在 IRIS 运行时进行设备更改,系统会提示是否要在不重新启动 IRIS 的情况下激活更改。如果同意激活更改,则新定义将立即提供给用户。

访问设备

Windows 系统上,必须将设备编号用于作业间通信设备和常规联锁设备。对于终端和打印机,可以使用您分配的设备助记词或设备编号。

UNIX 系统上,可以使用 UNIX 文件规范来引用文件,也可以设置设备编号来引用文件。

可以通过以下两种方式之一访问设备:

  • ^%IS 实用程序的 Device: 提示符处输入设备助记词。
  • 发出 OPEN 命令并输入设备 ID 或别名。

允许用户使用 ^%IS 实用程序选择设备

如果希望基于字符的应用程序的用户以交互方式选择设备,请从应用程序中调用 ^%IS 实用程序。您可以在 允许用户指定设备 中了解有关 ^%IS 实用程序的更多信息。

要使用 ^%IS 实用程序选择设备:

  1. Device: 提示符处,输入设备助记词。

预定义的助记词空间

Mnemonic 记忆Corresponding Device 对应设备
<ENTER> %Terminal screen 终端屏幕
SPOOLSpooler 后台处理程序
2Spooler 后台处理程序
`PRN
File name: MYFILE.TXT DEV$:[TEST]MYFILE.TXT C:\MGR\MYFILE.TXT指定路径中的文件,如果没有路径规范,则位于当前目录中。
  1. 根据设备类型,您会看到另一个提示:
Device 装置Prompt 提示Valid Responses 有效响应
Terminal 终端Right Margin 右边距一个数字,表示每行的字符数。
Printer 打印机Right Margin 右边距一个数字,表示每行的字符数。
Spooler 后台处理程序Name (of file)平台的有效文件名,路径可选。
File Name 文件名Parameters 参数设备类型的 OPEN 命令的有效参数列表。

使用 OPEN 命令访问设备

您可以在终端或 ObjectScript 应用程序中使用 OPEN 命令来打开特定设备以进行读取和写入。指定设备时,可以使用其设备 ID 或别名。

0
0 66
文章 姚 鑫 · 一月 12, 2025 2m read

第七十一章 管理设备和助记词空间 - 设备 ID

可以通过数字或操作系统名称来识别设备。可以在 OPEN 命令中使用此标识符。

设备别名

可以为定义的每个 IRIS 设备定义一个或多个别名值。当用户在 OPEN 命令中指定别名时,IRIS 会将其转换为设备 ID

IRIS 提供的默认设备 ID 适用于大多数用户。但是,某些用户可能希望覆盖这些默认值。可以通过在 Management Portal 中提供别名作为设备配置设置的一部分来实现此目的。

默认设备 ID 和助记词

当安装 IRIS 时,这些是每种设备类型的默认设备编号和助记符。

默认设备编号和助记词

Device 装置Device ID 设备 IDMnemonic 记忆Notes 笔记
Principal0TERM无法更改此设备的设备 ID
Spooler后台处理程序2 SPOOL

但是,IRIS 还可以识别可用于定义设备的其他设备编号。下表列出了已识别的默认设备编号。

IRIS 默认设备编号

Device Number 设备编号Type 类型Definition 定义
0Principal device 主设备对于交互式流程,这是用户登录的终端。对于 IRIS jobbed 进程,这是 null 设备(默认情况下)或创建作业床进程的 job 命令的参数列表中提供的设备。
1messages.logWriteToConsoleLog()使用此设备编号将错误消息或其他特殊消息发送到系统消息日志。例如,从终端发出以下命令会将指定的字符串写入消息日志: OPEN 1 USE 1 WRITE “This is a test” CLOSE 1.另请参阅 WriteToConsoleLog() method. 方法。
2IRIS system spoolerIRIS 系统后台处理程序这是一个存储输出的全局变量,因此您可以在其他时间将其定向到物理 I/O 设备。
63View buffer 查看缓冲区VIEW 命令和 $VIEW 函数一起使用,以在内存和磁盘之间传输数据。
20-46, 200-223Routine interlock devices提供与 DSM 锁定应用程序的兼容性。
4-19, 64-199, 224-255, 2048-2375IJC devices IJC 设备作业间通信 (IJC) 逻辑设备。用于在 IRIS 进程之间传输信息。可以控制这些设备的可用性。有关更多信息,请参见 IRIS 流程之间的通信。
NoneThe Null device/dev/null:NL 上的 Null 设备:用于处理不希望显示的输出的 Null 设备。
256-2047终端、打印机和平面文件。

注:* 设备 50 的硬编码块大小为 2048

设备类型

除了助记词和设备编号外,IRIS 还支持 I/O 设备类型。每个内部设备编号都属于其中一种类型。下表显示了设备类型:

Type 类型Meaning 意义
TRMTerminal 终端
SPLSpooling device 绕线装置
IPC进程间通信设备
OTH任何其他设备,例如打印机
0
0 72
文章 姚 鑫 · 一月 9, 2025 3m read

第七十章 管理设备和助记词空间

设备管理实用程序

下表总结了用于管理设备的实用程序。

IRIS 设备实用程序

Action 行动Utility 效用Description 描述
Define devices 定义设备管理门户中的设备配置允许定义用户可以使用 ^%IS 实用程序访问的设备。设备存储在 ^%IS 全局变量中。可以编辑和删除这些设备定义。在 Devices (设备) 子部分中,定义设备,包括助记词和别名。提供默认设备。在 Device Sub-Types 子部分中,定义设备子类型。提供了默认子类型。
Define default mnemonic spaces定义默认助记词IO configuration options in the Management Portal管理门户中的 IO 配置选项可以使用 WRITE /mnemonic 命令控制设备。在此面板上,输入 IRIS 在执行 WRITE /mnemonic 命令时使用的默认助记词的名称,该命令前面没有带有助记词空间规范参数的 OPENUSE 命令。
Allow users to select a device interactively in character-based applications.允许用户在基于字符的应用程序中以交互方式选择设备。^%IS routine请参阅允许用户指定设备 (^%IS)。
Allow users to store print output in a spool file允许用户将打印输出存储在后台打印文件中^%IS and ^%SPOOL routines请参阅 SPOOL 设备。

默认设备

设备

当安装IRIS 时,将定义默认设备。这些显示在 Management PortalDevices configuration 子部分中。依次选择 System AdministrationConfiguration (配置)、Device Settings (设备设置)、Devices (设备)。查看已定义设备的列表。

设备子类型

IRIS 附带了许多默认的设备子类型。每个设备子类型定义设备特征,例如屏幕长度和换页特征。

子类型的完整列表位于 Management PortalDevice Subtypes 配置选项中。依次选择 System Administration (系统管理)、Configuration (配置)、Device Settings (设备设置)、Device Subtypes (设备子类型)。查看已定义的子类型的列表。

识别设备

Management Portal Devices configuration (设备配置) 部分中定义设备时,您需要提供三个设备标识符来指定设备:

  • 助记词,在 ^%IS Device 提示符处使用。
  • 设备 ID,用于 OPEN 命令。
  • 别名,可用于代替 OPEN 命令中的设备 ID

与物理设备名称相比,这些设备标识符具有以下几个优势:

  • 无论您有多少个物理设备,它们都会唯一地标识逻辑设备。
  • 它们为每个逻辑设备分配不同的特征。
  • 它们允许用户应用程序通过一致的数字引用设备,而无需知道实际的物理设备名称,这些名称可能因平台而异。

设备助记词

可以将一个或多个助记词与特定设备相关联。使用助记词来响应 ^%IS 例程发出的 Device: 提示符。

助记词具有以下优势:

  • 它们非常灵活,因为您可以更改助记词指向的位置,而开发人员不必更改其应用程序。
  • 用户和开发人员很容易记住它们。例如,可以使用 mnemonic Printer 设置打印机设备,也可以为文件名设置 Device ID 并为其提供助记词 FILE
0
0 68
文章 姚 鑫 · 一月 9, 2025 2m read

第六十九章 打印机 - 使用助记词空间控制设备

助记词是执行设备控制操作(如光标移动和设备属性)的 IRIS 例程。每个操作都与一个标签相关联。这些标签是 WRITE /mnemonic 命令中使用的助记词。有关 WRITE /mnemonic 语法的更多信息,请参阅本文档其他页面中每种设备类型的 WRITE 命令说明。

预定义的助记词空间

IRIS 提供下表中描述的预定义助记词空间。

预定义的助记词空间

Routine Name 例程名称Device Type Default 设备类型 默认Description 描述
^%X364终端、顺序文件、其他设备X3.64 (ANSI) 端子的助记词空间。有关信息,请参阅 X3.64 的助记词空间。
^%XDTMDTM PC ConsoleDTM PC 控制台的助记词空间。有关信息,请参阅 DTM PC Console 的助记词空间。

设置默认助记词

可以在 Management Portal 中更改以下设备类型的默认助记词空间。依次选择 System Administration、Configuration (配置)、Device Settings (设备设置)、 IO Settings (IO 设置)。这将显示以下内容的助记词:

  • Terminals 终端

  • Sequential files 顺序文件

  • Other 其他

定义默认助记词空间后,如果发出 WRITE /mnemonic 命令,则使用当前设备默认助记词空间中的控制助记词,除非默认助记词空间被当前设备的 OPENUSE 命令的 mnespace 参数覆盖。

创建助记词空间

可以创建自己的助记词空间例程。例如,可能希望为终端 I/O 创建自己的 I/O

  1. 创建一个包含你想要的控制助记符的 IRIS 例程。请记住以下有关您的例程的要点:
  • 此例程中的入口点必须为大写。这些入口点是在 WRITE /mnemonic 命令中引用的助记词。
  • 某些入口点可能需要参数。入口点助记词空间中的代码在当前设备上执行操作。
  • 光标移动例程不会将光标向任何方向移过屏幕边缘,也不会包装光标。
  1. 要使此助记词空间对所有用户可用,请为 IRIS 例程指定一个以 % 开头的名称,并将其放在 %SYS 命名空间中。

选择助记空格

在向设备发出 WRITE /mnemonic 命令之前,您需要决定是否要对 Management Portal 配置设置中指定的设备类型使用默认助记词空间。

使用默认助记词空间时,在为设备发出 OPENUSE 命令时,请勿包含 mnespace 参数。

要使用另一个助记空格,请在为设备发出的 OPENUSE 命令的 mnespace 参数中指定其名称。

  USE "device"::"^%X364"
0
0 67
文章 姚 鑫 · 一月 7, 2025 3m read

第六十八章 打印机 - 在 UNIX® 上指定打印机

要在 UNIX 设备名称为 /dev/tty06 的终端上打开 I/O 设备,请输入以下命令

   OPEN "/dev/tty06"

UNIX 系统上,打印机由 OPEN 命令上的名称标识,并在 tty 设备上作为“字符特殊”文件处理。因此,支持的 OPENUSE 命令参数与终端 I/O 相同, 而不是顺序文件 I/O 的参数。

UNIX 上,OPEN 支持大多数终端 I/O 关键字参数,如终端 I/O 中所述。

将输出定向到打印机

可以使用 %IS 实用程序将输出定向到打印机。可以使用命令 DO ^%IS 调用 %IS 实用程序。(也可以使用 DO OUT^%IS 来指定选择的是仅输出设备。无论哪种情况,IRIS 都会返回 Device: 提示符。要指定打印机,请使用默认助记符 “|PRN|“ 或其他已配置打印机的助记符。然后,%IS 实用程序会建议 OPEN 参数;对于打印机,默认值为 “W” (只写)。可以通过按 Enter 键来接受参数 default,如以下示例所示:

%SYS>DO ^%IS
Device: |PRN|
Parameters? "W" => <RETURN>
%SYS>

这将打开指定的打印机作为当前进程的输出设备。

%IS 实用程序设置各种变量。以下是 Windows 系统上的打印机默认值。

%IS 设置的变量

Variable 变量Value 价值Description 描述
IO`PRN
IOF#换页字符。WRITE # 发出表单 feed 并更改 $YWRITE @IOF 应用于表单提要。
IOBS$C(8)退格/叠印字符 (ASCII 8)。WRITE $CHAR(8) 发出退格键并更改$X。WRITE *8 发出退格键,但不会更改$XWRITE @IOBS 应该用于退格。
IOM132右边距;行长度(以字符为单位)。
IOSL66页面长度(以字符为单位)。
IOTOTH设备类型。这里是 “其他”。
IOSTP-DEC设备子类型名称。
IOPAR("W") (“W”)OPEN 参数。此处为 “W”,因为打印机是只写设备。
MSYSM/WNT系统类型(如 UNIX® 或 Windows)。M/WNTWindows 上的 IRIS
POP0指示已运行 %IS(并且这些变量已初始化)。如果为 0,则指定设备。如果为 1,则未指定设备(用户输入 STOP 以响应 Device: 提示符)。

这些值中的大多数也可以从 Management Portal 查看和设置。依次选择 System AdministrationConfigurationDevice Settings。查看 DevicesDevice Subtypes 的当前内容。选择 Edit (编辑) 以查看特定打印机的设置。

%IS 打印机设置变量

调用 %IS 进行假脱机时,可以向其传递 IOPGM 变量,该变量指定设置打印机表单对齐的例程的名称。

打印机作为备用设备

可以通过定义名为 “A” 的新设备并指定 |PRN|.然后,当使用 %IS 时,在 Device: 提示符处指定 A

您可以将打印机设置为终端进程的备用 I/O 设备。转到 Management Portal。依次选择 System AdministrationConfiguration (配置)、Device Settings (设备设置)、Devices (设备)。为当前终端设备选择 Edit(编辑),并指定 Alternate Device (备用设备) 值。

0
0 98
文章 姚 鑫 · 一月 5, 2025 2m read

第六十六章 打印机

打印机

本页讨论了如何在 IRIS 数据平台中配置和使用打印设备。打印机是仅物理输出设备。打印机可以是字符打印机,也可以是非字符设备,例如传真或绘图仪。

在大多数情况下,输出不会直接发送到打印机。通常,要打印的输出首先发送到逻辑假脱机设备(^SPOOL 全局)。然后,可以将 ^SPOOL 全局的内容发送到物理打印机。有关假脱机的更多详细信息,请参阅 假脱机设备。

打印机概述

请注意,WindowsUNIX 处理打印机 I/O 的方式不同。

  • Windows 系统将打印机作为顺序 I/O 设备处理,因此遵循与顺序文件 I/O 相同的语法。但是,通过串行通信端口连接的打印机将作为终端 I/O 设备处理。
  • UNIX 系统始终将打印机作为终端 I/O 设备进行处理。UNIX 将其视为 tty 设备上的 “字符特殊” 文件,因此遵循与终端 I/O 相同的语法。

Windows 系统上,您可以使用 %Library.Device.InstalledPrinters() 方法返回系统上当前打印机的计数。您可以使用 %Library.Device.GetPrinters() 方法返回系统上当前打印机的列表。

指定打印机

可以为打印机分配一个介于 2562047 之间(包括 2562047)的设备编号。此设备编号范围也用于终端和平面文件。

Windows 系统上,可以使用打印机的设备编号或分配的设备助记词来引用打印机。Windows 默认打印机助记词为 |PRN|.

有两种方法可以指定打印机:

  • 调用 %IS 实用程序,它允许您使用 %IS 全局中定义的助记符来指定设备。此实用程序将打开设备并设置其参数。
  • 使用操作系统设备名称(指定为带引号的字符串)发出 I/O 命令 OPENUSECLOSE

打开打印机

打开打印机时,可以使用设备名称指定设备。设备名称必须用引号括起来。此设备名称的最大长度为 256 个字符。表格如下:

OPEN "device" 
USE "device" 
CLOSE "device"

Windows 上,还可以将打印机连接到串行通信端口。在这种情况下,打印机的处理方式与终端 I/O 相同,语法如下:

OPEN "comn:"

其中 n 是打印机所连接的端口号。

0
0 88
InterSystems 官方 Michael Lei · 一月 5, 2025

2024.3 版  InterSystems IRIS® 数据平台、InterSystems IRIS® for Health 和 HealthShare® Health Connect 现已正式发布 (GA)。

版本亮点

在此版本中,您可以期待一系列激动人心的更新,包括:

  1. 数据库和 WIJ 文件的扩展速度大大提高
  2. 能够通过 Visual Trace 重新发送消息
  3. 增强的规则管理器功能
  4. 向量搜索增强功能
  5. 等等。

请通过开发者社区分享您的反馈,与我们共同打造更好的产品。

文档

请访问以下链接了解所有亮点功能的详细信息:

此外,请查看此版本的升级信息

抢先体验计划 (EAP)

目前提供多个 EAP。 请查看此页面并注册您感兴趣的计划。

如何获取软件?

像往常一样,持续交付 (CD) 版本包含适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。

经典安装包

安装包可从 WRC 的 InterSystems IRIS、InterSystems IRIS for Health 和 Health Connect持续交付版本页面获取。此外,还可以在评估服务网站获取套件。

可用性和软件包信息

此版本提供适用于所有受支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅“支持的平台”文档

安装包和预览版密钥可从 WRC 的预览版下载网站或通过评估服务网站获取。

此持续交付版本的版本号为:2024.3.0.217.0

容器镜像可通过 InterSystems 容器注册表获取。 容器带有 2024.3latest-cd 标签。

0
0 115
文章 姚 鑫 · 一月 4, 2025 2m read

第六十五章 假脱机设备 - 列出假脱机文档

列出假脱机文档

%SPOOL 实用程序菜单 List documents 的选项 2 显示当前为运行 %SPOOL 的目录假脱机的文档列表。如果没有 Despool start-end 值,则文档尚未解散(打印)。

每个假脱机文档的描述显示在有关该文档的其余信息之后的一个或多个单独行上。

在以下示例中,用户选择了选项 2。显示屏将显示存储在后台处理程序中的两个文档。第一份记录在 830 日下午 2:23 存储,并于当天下午 2:25 打印。第二份于 34 日上午 11:39 存储,并于当天上午 11:42 打印。

Spool function: 2   List documents

# Name      Lines   Spool start     Despool start-end 
1 SPOOLFILE  1     30 Aug  2:23 pm  30 Aug  2:25 pm- 2:25 pm
  This is my test spool file

3 LONGFILE   1     04 Mar 11:39 am  04 Mar 11:42 am- 11:42 am 
  This is a very long description line that shows you what happens when you
have a long description. It shows you how the text wraps from line to line.
This particular description was made intentionally long, so as to wrap at least
twice.

删除假脱机文档

%SPOOL 实用程序菜单的选项 3 删除文档允许删除一个或多个假脱机文档,当 %SPOOL 提示您输入名称时,输入要删除的文档的名称,或输入 ??以显示所在名称空间的当前 Spool 文档。输入 以获取帮助文本。

%SPOOL 确认这是正确的文档,并且要删除它。如果回答“是”,则 %SPOOL 将删除该文档,并允许命名要删除的其他文档。

下面的示例删除名为 SPOOLFILE 的假脱机文档。

Spool function: 3   Delete document       
Name: ??

# Name        Lines  Spool start        Despool start-end 
1 SPOOLFILE     1    30 Aug  2:23 pm  30 Aug  2:25 pm- 2:25 pm
  This is my test spool file

Name: SPOOLFILE

1 SPOOLFILE    30 Aug 2003  2:23 pm  this is my test spool file
SPOOLFILE has 1 pages.
Is this correct?  Yes=>Y
Delete SPOOLFILE? No=> Y [Deleted]       

Name:
0
0 48
文章 姚 鑫 · 一月 4, 2025 3m read

第六十四章 假脱机设备 - 使用 %SPOOL 打印

使用 %SPOOL 打印

%SPOOL 实用程序菜单的选项 1 Print(打印)允许您在任何设备上打印 ^SPOOL 全局中的一个或多个文档,继续打印中断的文档,以及将单张纸张手动送入信纸质量打印机。通过将输出发送到后台处理程序,可以在输出设备打印文档时释放终端用于其他用途。

可以在完全创建后台打印文档之前或之后开始打印。如果打印机赶上新输出,则打印过程将暂停 5 秒钟,然后打印在此期间累积的所有输出。打印过程知道您何时关闭了后台打印文档,并在文档完成时完成。

%SPOOL 打印文档时,它会跟踪已打印的页面。它还会创建页面索引,以便可以按页码对文档进行排序,并从您选择的任何页面的顶部开始打印。

如果停止打印(例如,在终端输出期间按 Ctrl-c,或者打印机损坏),则可以稍后在最后一个部分打印的页面的顶部或文档中任何其他页面的顶部继续打印。请注意,IRIS 不会将文档开头的换页数计为页数中的页数。

%SPOOL 使用术语 despool 来表示打印。仅当文档已打印(depooled)时,Despool start-end 列和描述行中才会有值。

使用 Print 函数

  1. 在 “Spool function:” 提示符下,输入 1
  2. 在“Name:”提示符下,输入 要显示帮助文本,请输入 ??列出当前命名空间中的所有现有 spool 文档,或输入要打印的 spool 文档的名称。%SPOOL 确认这是正确的文档。
  3. %SPOOL 询问要开始打印的页面时,请按回车键从第一页开始,或输入文档中的任意页码。如果您尝试从打印过程尚未到达的页面顶部开始打印,则会显示以下消息:警告:打印尚未到达此点。在此警告之后,%SPOOL 将询问是否确定要在所选页面上开始打印。如果输入 No,它将返回到 “ Start at page:” 提示符。如果输入 Yes 以确认起始页,则 %SPOOL 将显示相关页面的前几行,并再次确认这是正确的页面。
  4. 系统将提示您输入副本数。
  5. %SPOOL 允许输入要打印的其他后台打印文档的名称。当按 Return 键响应 “ Name:” 提示时,它会询问输出设备及其右边距。输入此信息以开始打印。

请注意,%SPOOL 在每页之后都会发出一个换页,无论您是在屏幕还是打印机上打印。

以下示例演示如何在 ^SPOOL 全局变量中打印文档,在本例中称为 SPOOLFILE。文档将在名为 MYPRINTER 的设备上打印。

%SYS>DO ^%SPOOL

Spool function: 1  Print 
Name: ??

#  Name        Lines   Spool start      Despool start-end
1  SPOOLFILE   1      30 Aug  2:23 pm    30 Aug  2:25 pm-2:25 pm
  This is my test spool file

Name: SPOOLFILE

1  SPOOLFILE    30 Aug 2003  2:23 pm  this is my test spool file
SPOOLFILE has 1 pages.
Is this correct?  Yes=>Y
Start at page:  1=>Y
How many copies?  1=>Y

Name:RETURN
Print spooled files on
Device: MYPRINTER RETURN Parameters: "WNS"=>
Free this terminal? Yes =>Y
Starting Job in background . . . started.

Spool function:
0
0 61
InterSystems 官方 Michael Lei · 一月 3, 2025

InterSystems IRIS® 数据平台、InterSystems IRIS® for Health 和 HealthShare® Health Connect 2025.1  的首个开发者预览版已发布到 WRC 开发者预览网站。容器可在我们的容器注册表中找到,并已添加 latest-preview 标签。

这些开发者预览版包含用于迁移到 IBM Open XL C/C++ for AIX 17.x 编译器的功能,从而在旧版编译器接近支持终止时确保与未来的 AIX 版本兼容。 此迁移侧重于 aixopenssl30 目标,支持 AIX 7.2 和 7.3 上的 SSL3。

可以在以下链接中找到初始文档:

可用性和软件包信息

此版本提供适用于所有受支持平台的经典安装包。有关完整列表,请参阅“支持的平台”文档

安装包和预览版密钥可从 WRC 的预览版下载网站或通过评估服务网站(勾选“Show Preview Software”(显示预览软件)框)获取。

0
0 75
文章 姚 鑫 · 一月 1, 2025 2m read

第六十二章 假脱机设备 - 查看 ^SPOOL 全局

查看 ^SPOOL 全局

与任何下标的全局变量一样,您可以通过发出 WRITE 命令来显示 spool 文件中的行,如下所示:

   WRITE "1st spool file node: ",^SPOOL(1,1),!

但是,要查看和编辑假脱机文件本身,请转到管理门户并选择 System ExplorerGlobals。选择您当前的命名空间,找到 SPOOL 全局变量,然后单击 data。这将显示类似于以下示例的假脱机文件数据。

在下面的假脱机文件中,() 终止字符结束假脱机文件中的每个节点行。这些终止字符是假脱机文件的一部分,作为 $CHAR(13,10) 连接到文本字符串(ReturnLine Feed)。

^SPOOL(1,1)=<<"First line of text"_$C(13,10)>>
^SPOOL(1,2)=<<"Second line of text"_$C(13,10)>>
^SPOOL(1,2147483647)={59605,43605{3{

在下面的假脱机文件中,没有行终止字符。两个 WRITE 命令写入一个 node 行,该行由关闭 spool 文件终止。

^SPOOL(1,1)=First half of line Second half of line
^SPOOL(1,2147483647)={59605,43725{2{

在下面的假脱机文件中,returnline feed 字符在 WRITE 命令中显式编码。$CHAR(10) 换行字符将启动新的节点行,而 $CHAR(13) 返回字符将连接到这些节点行中。

^SPOOL(1,1)=<<"AAAAAAAAAA"_$C(10)>>
^SPOOL(1,2)=<<$C(13)_"BBBBBBBBBB"_$C(13)_"XXXX"_$C(13,10)>>
^SPOOL(1,2147483647)={59605,44993{3{

当您关闭假脱机文件时,IRIS 会生成假脱机文件的最后一行。它由文字 1,2147483647 组成;$HOROLOG 格式的日期和时间 (59605,44993) 以及假脱机文件中的行数,包括最后一行。

可以编辑或删除这些短线夹文件文本行。使用 Management Portal System ExplorerGlobals 选项中 SPOOL 全局变量的数据显示。

0
0 77
文章 姚 鑫 · 十二月 31, 2024 2m read

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

写入 ^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
0 79
文章 姚 鑫 · 十二月 29, 2024 2m read

第六十章 假脱机设备 - WRITE 命令

WRITE 命令

要将一行写入 ^SPOOL 全局变量,请发出 WRITE 命令,以行终止符字符结尾。例如

   /* Writing to the ^SPOOL global */
   OPEN 2 
   USE 2 
     WRITE "First line of text",!
     WRITE "Second line of text",!
   CLOSE 2

   /* Displaying the ^SPOOL global */
   WRITE ^SPOOL(1,1),^SPOOL(1,2)

每行都以行终止符(感叹号)结尾,并存储在单独的全局节点中。

但是,在生成单个打印行时,可能需要使用多个 WRITE 命令;如果 WRITE 不包含行终止符,则下一个 WRITE 命令将附加到同一打印行。两者都写入同一个全局节点。此行保存在缓冲区中,在发出行终止字符或关闭后台处理程序设备之前,不会写入后台处理程序全局。

以下示例在发出 CLOSE 时写入一个全局节点:

   /* Writing to the ^SPOOL global */
   OPEN 2 
   USE 2 
     WRITE "First half of line "
     WRITE "Second half of line"
   CLOSE 2

   /* Displaying the ^SPOOL global */
   WRITE ^SPOOL(1,1)

行终止符字符通常是 (感叹号)WRITE 命令代码字符。这相当于回车符 (ASCII 13) 和换行符 (ASCII 10)。要终止一行,这两个控制字符都是必需的。仅发出回车符 (ASCII 13) 会导致回车符连接到 line 节点中,而不是启动新的 line 节点。在 Terminal 中,这种类型的行显示为回车前的文本被其后的文本覆盖。

以下示例在 ^SPOOL 文件中仅写入两个 line 节点:

   /* Writing to the ^SPOOL global */
   OPEN 2
   USE 2
     WRITE "AAAAAAAAAA",$CHAR(10),$CHAR(13)
     WRITE "BBBBBBBBBB",$CHAR(13)
     WRITE "XXXX",!
   CLOSE 2

   /* Displaying the ^SPOOL global */
   WRITE ^SPOOL(1,1),^SPOOL(1,2)
0
0 82
文章 姚 鑫 · 十二月 27, 2024 2m read

第五十九章 假脱机设备

介绍

IRIS数据平台使能够将打印输出直接发送到您的打印机或屏幕,或将其保留在后台打印中以供以后打印。IRIS 假脱机独立于您的操作系统执行的假脱机。

IRIS 中的假脱机是一种技术,可让自动将程序的输出保存在 ^SPOOL 下标全局中,而不是立即打印。可以通过将 ^SPOOL 全局的内容发送到打印机来稍后打印输出。本页介绍使用此假脱机工具的两种方法:使用 ObjectScript 命令(OPEN、USE、WRITE、CLOSE)或使用 %IS%SPOOL 实用程序。

打开和使用假脱机设备

要将输出发送到当前命名空间中的 spool 全局变量,请打开 spooler 并将其指定为输出设备。

假脱机程序是 IRIS 提供的预定义设备。它在设备表中被分配了设备编号 2。此设备号可用于在 OPENUSECLOSE 命令中标识后台处理程序设备。

您可以通过 Management Portal 访问后台处理程序设备信息。依次选择 System AdministrationConfiguration (配置)、Device Settings (设备设置)、Devices (设备)。在这里,将找到设备 2 和名为 SPOOL 的设备。默认情况下,它们都映射到同一物理设备(设备 2),并且具有相同的 option 值。

当将 IRIS 假脱机程序设置为当前设备时,IRIS 会将发送到设备 2 的任何输出存储在当前命名空间的全局 ^SPOOL 中。^SPOOL 中的每一行都位于单独的全局节点中。

有两种方法可以打开 IRIS 后台处理程序并将其设置为当前输出设备:

  • 发出 OPENUS 命令
  • 调用 %IS 实用程序

用于假脱机设备的 OPENUSE 命令

可以通过向该设备发出 OPENUSE 命令来直接打开假脱机设备。

OPEN 2:(doc_num:index) USE 2

用于假脱机的 OPEN 位置参数

Parameter 参数Definition 定义
doc_num要打开的后台打印文档(文件)的编号。Spool 文档存储在 ^SPOOL 全局变量中。默认值为 1
index线轴文档中的行号,1 或更大。默认值为 1

这些是位置参数。如果省略这两个参数,则它们默认为 (1:1)。可以设置第一个参数 (doc_num) 并省略第二个参数 (index),默认为 1。但是,如果设置第二个参数,则应指定第一个参数。

IRIS 使用这些值来查找要打印的行。它将 doc_num 参数视为 ^SPOOL 全局的第一个下标。它将 index 参数视为 ^SPOOL 全局变量的第二个下标。

USE 命令

当在命令 OPEN 2:(doc_num:index) 后对设备 2 发出 USE 2 时,IRIS 会将任何后续输出发送到位于 ^SPOOL(doc_num:index) 的后台处理程序。每个输出行都作为单独的全局节点存储在 ^SPOOL 中。

0
0 106
文章 姚 鑫 · 十二月 25, 2024 2m read

第五十八章 File 输入 输出 - WRITE 命令

WRITE 命令

在定位的 READWRITE 之后,后续的 READWRITE 操作将按顺序进行,直到下一个带有 position 参数的 USE 命令。

WRITE 命令将数据(一次一条记录)写入作为当前设备的顺序文件。

语法

WRITE x
  • x 变量 x 中的数据将作为一条记录写入顺序文件中。

CLOSE 命令

CLOSE 命令放弃对顺序文件的所有权。

如果指定的文件未打开或不存在,则 IRIS 将忽略 CLOSE 并返回而不发出错误。

语法

CLOSE file 
CLOSE file:"D" 
CLOSE file:("R":newname)
  • file 文件 任何有效的文件规范,用引号括起来。指定的文件必须已打开。在 UNIX 路径名中,可以使用波形符 (~) 扩展来指示当前用户的主目录。例如:~myfile~/myfile
  • "D" 关闭并删除具有参数中指定的名称的文件。
  • ("R":newname) 使用参数中指定的名称关闭文件,并将其重命名为 newname

CLOSE-Only 命令关键字

下表描述了仅使用 CLOSE 命令控制顺序文件的关键字。

顺序文件的 CLOSE-only 命令关键字

/DELETE[=n] /DEL[=n]

0,除非文件在打开时标记为删除。

对应于 D 参数代码,该代码指定应删除该文件。对于非零值 n/DELETE/DELETE=n 将启用参数代码,对于零值 n/DELETE=n 将禁用参数代码。

/RENAME=name /REN=name

请勿重命名文件。

对应于 R 参数 code 和文件名 positional 参数。R 参数代码指定应重命名文件,文件名 positional 参数提供文件的新名称。

0
0 87
文章 Louis Lu · 一月 26, 2022 2m read

许多使用InterSystems IRIS的用户在调试代码的时候习惯使用命令行的方式,比如运行一个函数查看输出或者查看代码运行过程中保存在global中的数据等等。

对于将 InterSystems IRIS 安装在 Windows 操作系统的用户,只需要点击右下角图标选择Terminal 就可以很方便的使用。

但是对于将其安装到 Linux 或者Docker 容器中的用户,要使用命令行却不那么方便,下面我将会介绍在我们 Openexchange 中的一个应用 -- Web Terminal。

也就是说可以在网页中直接执行Terminal中的命令。

或者查看SQL执行结果:

可以在其中输入 /help ,获取更多帮助信息

安装

1. 点击进入项目下载页面,选择下载最新的版本。

2. 在任意的命名空间下导入下载的xml文件。

注意在这里选择导入文件的同时也要勾选上 “编译导入的项”

3. 之后会出现下面提示导入成功的提示

如果出现类似于下面的错误提示:

请将下载的 WebTerminal-v4.9.3.xml 文件编辑做下面修改

1 . 第1611行:修改为 

set requiredRole = "%DB_IRISSYS"

2. 第1730行:修改为

set dbPrefix = "IRIS"

重新导入就可以了。

使用

3
0 382
文章 姚 鑫 · 十二月 24, 2024 2m read

第五十七章 File 输入 输出 - READ 命令

在定位的 READWRITE 之后,后续的 READWRITE 操作将按顺序进行,直到下一个带有 position 参数的 USE 命令。

READ 命令从当前设备读取数据,一次读取一条记录。读取超过文件末尾会导致错误。

语法

READ x#n:timeout
  • x 该变量将保存从文件中读取的记录。
  • n 可选 – 对于可变长度读取,为要读取的字符数,指定为整数。对于固定长度的读取,此参数将被忽略。
  • timeout 超时 可选 – 在超时之前等待读取操作完成的秒数。整数值或解析为整数的变量。

timeout 参数虽然是可选的,但强烈建议使用,因为如果指定了 timeout,则 READ 的成功或失败由 $TEST 特殊变量的值指示。如果读取尝试在超时到期之前成功,则 $TEST 设置为 1;如果超时到期,则 $TEST 设置为 0

以下示例显示了从 Windows 顺序文件中读取固定长度记录的 READ 操作。它创建一个顺序文件,将数据写入该文件,然后关闭该文件。然后,它会打开此文件以进行 4 个字符的固定长度读取 (“RF”:4)。它将 USE position 参数设置为第一条记录(记录 0);每个读取操作都会推进此位置。FOR 循环将每个四字符的记录读取到下标变量中。然后,ZWRITE 命令显示所有这些下标局部变量及其值。

  SET myf="C:\InterSystems\IRIS\mgr\temp\myfixedlengthfile"
  OPEN myf:("NW") USE myf WRITE "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  CLOSE myf
  OPEN myf:("RF":4) USE myf:0 FOR i=1:1:7 {READ x(i):5}
  CLOSE myf
  ZWRITE

示例

以下示例读取固定长度文件的第三、第四和第五条记录:

   SET myfile="FIXED.LEN"
   OPEN myfile:("FR":100)
   USE myfile:2 
   READ var1(3),var1(4),var1(5)
0
0 80
文章 姚 鑫 · 十二月 23, 2024 2m read

第五十六章 File 输入 输出 - USE 命令

US 命令

USE 命令使打开的顺序文件成为当前设备。可以打开多个顺序文件,但一次只能使用一个顺序文件。

语法

USE file:position
  • file 文件

任何有效的文件规范,用引号括起来。指定的文件必须已打开。在 UNIX 路径名中,可以使用波形符 (~) 扩展来指示当前用户的主目录。例如:~myfile~/myfile

  • position 位置

可选 — 文件中下一个 READWRITE 的位置。position 值是一个数字表达式,其含义取决于文件的记录格式。对于固定长度的记录,position 是相对于零的绝对记录号,其中每条记录都包含在前面的 OPEN 命令中指定的字符数。对于流或可变长度记录,position 是相对于零的绝对字节位置。默认设置是从文件开头开始按顺序读取或写入记录。

可以使用 $ZSEEK 函数设置文件位置,该位置由字符数相对于顺序文件的开头、当前位置或结尾的偏移量指定。$ZPOS 特殊变量包含从顺序文件开头开始的当前字符计数位置。

USE-only 命令关键字

除了上面列出的与 OPEN 共享的命令关键字外,USE 命令还有自己的一组关键字:

顺序文件的 USE-only 命令关键字

/POSITION=n

当前文件位置。(文件指针位置在首次打开文件时位于文件的开头,除非文件是在追加模式下打开的。在这种情况下,文件指针位置位于文件的末尾。

对应于 positional 参数,该参数设置文件中下一个 READWRITE 的位置。

0
0 52
文章 姚 鑫 · 十二月 22, 2024 2m read

第五十五章 File 输入 输出 - 与非 InterSystems IRIS 软件的交互

与非 InterSystems IRIS 软件的交互

Windows 系统上,在 IRIS 中打开顺序文件以进行 “WL” 写入访问通常会阻止非 IRIS 应用程序打开顺序文件进行写入访问。同样,非 IRIS 应用程序打开顺序文件进行写入访问通常会阻止 IRIS 进程并发 “WL” 写入访问。

但是,某些非 IRIS 应用程序,包括记事本和写字板应用程序,会打开一个文件,在共享模式下复制文件,然后立即关闭它。因此, IRIS 进程仍然可以以 “WL” 模式打开文件。当这些非 IRIS 应用程序之一尝试将其副本中的更改保存到原始文件,或尝试重新打开原始文件时,将发生错误。更严重的情况可能发生如下:如果这些非 IRIS 应用程序之一打开了一个文件,然后 IRIS 打开、修改和关闭文件,然后非 `` 应用程序保存对文件的更改,两个进程所做的更改都被保存,文件数据的完整性可能会受到损害。

UNIX 系统上,在 IRIS 中打开一个顺序文件以进行 “WL” 写访问通常不会影响非 IRIS 应用程序的行为。您必须使用锁来可靠地限制来自非 IRIS 应用程序的写入访问。

示例

以下示例打开文件 “LUDWIG.B“ID 文件。因为它没有指定 mode 参数,所以默认情况下,它以读取访问权限和 stream 模式打开文件:

  OPEN "LUDWIG.B"

以下示例将打开一个新文件 “LIST.FILE“,具有写入权限,采用流格式。请注意,如果只包含括号通常包含的第一个参数,则不需要括号。

  OPEN "LIST.FILE":"WNS"

以下示例在当前目录中打开一个文件 “CARDS”,该文件具有读取和写入访问权限,以及 80 个字符的固定长度记录。

  OPEN "CARDS":("FRW":80)

以下示例在目录 c:\usr\dir 中打开流格式文件 “STRNG”,其中包含非默认终止符

  OPEN "c:\usr\dir\STRNG":("S"::$CHAR(0)_$CHAR(255))
0
0 77
文章 姚 鑫 · 十二月 20, 2024 2m read

第五十四章 File 输入 输出 - OPEN 参数关键字

OPEN 参数关键字

下表描述了顺序文件的 OPEN 命令参数关键字:

顺序文件的 OPEN关键字参数

/PARAMS=str /PAR=str

No defaul

对应于 parameters 位置参数。(它提供了一种以与位置无关的方式指定参数字母代码字符串的方法)。

/RECORDSIZE=int /REC=int

无默认值

对应于 reclen 位置参数,该参数为固定长度记录建立记录大小。(目前仅针对 READ 操作实现。

/TERMINATOR=str /TER=str

无默认值

对应于 terminators 位置参数,该参数建立用户定义的终止符。str 是一串用户定义的记录终止符,仅适用于 Stream 模式。它们允许覆盖默认终止符:回车符、换行符和换页符。用户定义的终止符仅适用于输入,它们不会影响数据写入文件的方式(终止符作为特殊字符写入文件)。如果有多个用户定义的终止符,则会将其视为终止符列表,而不是用作单个终止符的多字符序列。

OPEN 模式锁定

当两个进程尝试打开同一个顺序文件时,第二个 OPEN 会根据第一个OPEN 使用的模式成功或失败。下表显示了使用独占 (“L”) 和非独占读取和写入模式的两个打开之间的交互。请注意,这些交互的解释取决于平台。为 Windows 操作系统和 UNIX 操作系统提供了表。

在下表中,横轴表示第一个 OPEN 的打开模式,纵轴表示第二个 OPEN 的打开模式。1 表示第二个 OPEN 成功;0 表示第二个 OPEN 失败。

Windows OPEN 模式交互

 WRWRLWLRWLR
W111001
RW111001
RL111001
WL000000
RWL000000
R111001

对于 Windows 系统,此表中的交互同样适用于来自同一IRIS 实例的并发打开、来自两个不同 IRIS 实例的并发打开,或IRIS 和非 IRIS 应用程序的并发打开(对非IRIS 应用程序有限制,如下所述)。

UNIX® OPEN 模式交互

 WRWRLWLRWLR
W111111
RW111111
RL111001
WL110001
RWL110001
R111111

对于 UNIX 系统,此表中的交互仅与来自同一IRIS 实例的并发打开。它们不管理来自两个不同IRIS 实例的并发打开,也不管理 IRIS 和非 IRIS 应用程序的并发打开。

0
0 69
文章 姚 鑫 · 十二月 19, 2024 4m read

第五十三章 File 输入 输出 - OPEN模式参数

A /APPEND /APP

Append:WRITE 操作将数据附加到现有文件的末尾。默认设置是覆盖现有数据,而不是 append

S /STREAM

流格式,回车符、换行符或换页符作为默认终止符。S、V、F 和 U 模式是互斥的。Stream record format 是默认格式。

V /VARIABLE

请勿尝试在可变长度顺序文件末尾以外的任何位置插入记录;WRITE 将使文件中的所有数据从 WRITE 之后的点开始无法访问。S、V、F 和 U 模式是互斥的。流记录 (S) 格式是默认格式。

使用转换表写入的可变长度记录(例如使用 UTF8 转换的 Unicode 数据)可能会导致存储的记录具有与输入数据不同的字符串长度。IRIS 在读取此记录时使用原始输入字符串长度。

F /FIXED /FIX

Fixed length:每条记录都是 reclen 参数中指定的长度。例如:OPEN “myfile”:(“RF”:4) USE “myfile”:0 READ x:5此示例将前 4 个字符的记录读入变量 x。这仅适用于 READ 操作(不适用于 WRITE 操作)。S、V、F 和 U 模式是互斥的。

U /UNDEFINED

未定义的长度:指定文件记录具有未定义的长度,因此 READ 操作必须指定要读取的字符数。最大记录长度在 reclen 参数中指定。输出时无翻译。默认值为最大字符串长度。S、V、F 和 U 模式是互斥的。

K\name\ Knum /TRANSLATE[=n]: /IOTABLE[=name] /TRA[=n]: /IOT[=name]

I/O 转换模式:当您为设备使用“K”参数时,如果已在系统范围内启用转换,则该设备将进行 I/O 转换。通过指定表的名称,可以标识翻译所基于的先前定义的表。使用关键字时,指定 /TRANSLATE 以启用 I/O 转换(n=1 表示启用;n=0 禁用),并使用 /IOTABLE=name 指定要使用的转换表。有关可用转换表的列表,请参阅 $ZCONVERT 函数文档中的编码转换。用于打开和关闭协议的 +- 选项不适用于 K 协议。(旧形式 Knum,其中 “num” 表示 table 加载到的插槽的编号,正在逐步淘汰,但仍受支持。系统管理器可以在选择窗口的 %NLS 实用程序中为每种表类型显示插槽编号。此参数可以与 OPEN 命令或 USE 命令一起使用。

Y\name\ Ynum /XYTABLE[=name] /XYT[=name]

$X/$Y Action Mode:对设备使用 “Y” 参数时,系统使用指定的 $X/$Y Action Table。通过指定表的名称,可以确定之前定义的 $X/$Y 操作表,该表的转换基于该表。$X/$Y 操作始终处于启用状态。如果未指定 “Y” 且未定义系统默认 $X/$Y,则使用内置的 $X/$Y 操作表。用于打开和关闭协议的 +- 选项不适用于 Y 协议。(旧形式 Ynum,其中 “num” 表示加载表的槽数,正在逐步淘汰,但仍受支持。系统管理器可以在 NLS 实用程序的选择窗口中显示每种表类型的插槽编号。此参数可以与 OPEN 命令或 USE 命令一起使用。

/NOXY [=n

无$X和$Y处理:/NOXY/NOXY=n(对于 n 的非零值)将禁用$X$Y处理。这可以显著提高 READWRITE 操作的性能。$X $Y 变量的值是不确定的,并且 margin 处理(取决于$X)处于禁用状态。/NOXY=0 启用 $X$Y 处理;这是默认设置。此参数可以与 OPEN 命令或 USE 命令一起使用。

/OBUFSIZE=int

Output Buffering:创建输出WRITE 缓冲区。int 变量是一个整数,用于指定缓冲区的大小(以字节为单位)。仅当文件打开时只能写入(“W”,而不是“R”“RW”)时使用。在执行多个小型写入时,尤其是通过 WAN 时,可能会提供显著的性能改进。但是,如果发生系统崩溃,缓冲区中的数据可能会丢失。缓冲区中的数据在 CLOSE、WRITE *-1WRITE *-3 时刷新到磁盘。

/GZIP [=n]

GZIP 压缩:指定与 GZIP 兼容的流数据压缩。/GZIP /GZIP=n(对于 n 的非零值)在 WRITE 时启用压缩,在 READ 时启用解压缩。/GZIP=0 禁用压缩和解压缩。在发出 /GZIP=0 以禁用压缩和解压缩之前,请检查 $ZEOS 特殊变量以确保流数据读取未进行中。/GZIP 压缩对 I/O 转换没有影响,例如使用 /IOTABLE 建立的转换。这是因为压缩是在所有其他转换(加密除外)之后应用的,而解压缩是在所有其他转换(加密除外)之前应用的。

/COMPRESS=str

将流数据压缩类型指定为以下值之一:

  • “zlib” — 使用 zlib 压缩库。/COMPRESS=“zlib” 等效于 /GZIP=1
  • “zstd” — 使用 Zstandard 压缩算法。
  • “lz4” — 使用 LZ4压缩算法。
  • “deflate” — 使用 DEFLATE 压缩算法。

要禁用压缩,请指定 /COMPRESS=“”。要压缩字符串,请使用 %SYSTEM。Util.Compress()Util.Compress() 中。

0
0 88
文章 姚 鑫 · 十二月 18, 2024 3m read

第五十二章 File 输入 输出 - OPEN模式参数

OPEN 模式参数

可以通过以下两种方式之一指定 OPEN 模式参数

  • 用引号字符括起来的字母代码字符串,如 “VRWN”。每个字母都指定一个参数。字母代码可以按任何顺序指定;因为 IRIS 按照从左到右的顺序执行它们,所以在某些情况下,字母代码之间的交互可能会决定首选顺序。
  • 一系列 /keyword 参数,未加引号。这些参数用冒号分隔。关键字参数可以按任意顺序指定;因为 IRIS 以从左到右的顺序执行它们,所以在某些情况下,参数之间的交互可能会决定首选顺序。

指定字母代码参数和关键字参数的组合时,请先指定字母代码字符串,然后指定关键字参数,用冒号分隔。以下示例指定三个字母代码参数,后跟两个关键字参数,后跟 reclen 和 timeout 参数。

  OPEN "mytest":("WNS":/OBUFSIZE=65536:/GZIP=0:32767):10

N /NEW

新建文件。如果指定的文件不存在,则系统创建该文件。如果指定的文件已作为 ReadOnly 文件存在,则系统会删除旧文件并将其替换为同名的新文件(权限允许)。请注意,应使用文件锁定来防止使用此参数的并发进程覆盖同一文件。

如果未指定 “N” 模式(或 “T” 模式),并且在 OPEN 中指定的文件不存在,则 WindowsUNIX® 默认为不创建新文件。此行为可使用 %SYSTEMFileMode() 方法进行配置。Process 类。可以通过设置 Config.Miscellaneous 类的 FileMode 属性来建立系统范围的默认行为。

E /CREATE /CRE

如果文件不存在,请创建一个文件。不会像 “N” 模式那样删除并重新创建现有文件。默认设置是不创建新文件。如果 FileMode()

T /TRUNCATE

Truncate File:如果文件存在且可写,则它将被截断,其属性保持不变。如果指定的文件不存在,则系统会创建一个新文件,就像指定了 “N” 模式一样。“WT”“WNT” 在功能上相同。

D

/DELETE[=n] /DEL[=n]

删除文件: 指定在关闭文件时应自动删除文件。/DELETE/DELETE=n(对于非零值 n)启用参数代码。/DELETE=n(如果值为零,则为 n)将禁用参数代码。默认设置是不删除文件。

R /READ

读取:IRIS 允许读取访问该文件。其他进程也可以访问此文件(但是,请参阅 “L” 参数)。如果尝试在 “R” 模式下打开不存在的文件,则进程将挂起。若要防止这种情况,请使用 timeout。“R” 是所有平台的默认值。系统范围的默认打开模式可以通过设置 OpenMode 来配置

W /WRITE /WRI

Write: IRIS 允许对文件进行 WRITE 访问。在Windows UNIX® 中,“W” 为进程提供对文件的共享写入访问权限,以及对记录的独占写入访问权限。使用 “WL” 指定对文件的独占写入访问权限。如果尝试以 “W” 模式打开不存在的文件,则进程将挂起,直到创建文件或通过超时、进程终止或 RESJOB 解决进程。“R” 是所有平台的默认值。系统范围的默认打开模式可以通过设置 OpenMode 来配置

L

锁定独占:将 “L” 模式与 “W” (写入) 模式一起使用,以指定对文件的独占写入访问权限。“WL” “WRL” 指定当前进程对文件具有独占写入访问权限。使用 “RL” 打开的文件可能仍具有共享读取访问权限。在 WindowsUNIX® 中,“L” 模式对并发打开的影响不同。有关更多详细信息,请参阅下面的“OPEN Mode Locking”部分。在 UNIX® 系统上,如果一个进程指定了对文件的 “WL” (或 “WRL”) 访问,则请求对该文件的读取访问的其他进程必须指定 “RL”,以便 UNIX® 可以协调文件锁定。

0
0 108
文章 姚 鑫 · 十二月 15, 2024 4m read

第五十一章 File 输入 输出 - 文件路径名工具

文件路径名工具

如果当前设备是顺序文件,则$ZIO包含该文件的完整路径名。

可以使用$ZSEARCH返回指定文件或目录的完整文件规范(路径名和文件名)。文件名可能包含通配符, $ZSEARCH使用通配符返回一系列满足通配符的完全限定路径名。

%Library.File 类包含许多提供文件系统服务的方法。这些包括:

  • NormalizeDirectory(),返回指定文件或目录的完整路径名。
  • NormalizeFilenameWithSpaces(),根据主机平台的情况处理路径名中的空格。如果路径名包含空格字符,则路径名处理取决于平台。 WindowsUNIX® 允许路径名中包含空格字符,但包含空格的整个路径名必须用一组附加的双引号 (") 字符括起来。这与 Windows cmd/c语句一致。有关详细信息,请指定cmd / ?Windows 命令提示符下。

波形符 (~) 扩展

Windows 路径名中,波形符 (~) 表示长名称的 8.3 压缩。例如: c:\PROGRA~1\ 。要转换压缩目录名称,请使用 %Library.File 类的 NormalizeDirectory() 方法。

UNIX 路径名中,可以使用波形符 (~) 扩展来指示当前用户的主目录或指定用户的主目录:

  • ~~/myfile.txt分别扩展到当前用户的主目录: /Users/techwriter//Users/techwriter/myfile.txt
  • ~guest/myfile.txt扩展到用户“guest”的主目录: /Users/guest/myfile.txt。但是,如果用户“guest”不存在,IRIS 会扩展为当前用户的完整目录路径名,并附加~guest/myfile.txt作为文字: /Users/techwriter/iris/mgr/user/~guest/myfile.txt
  • ~myfile.tx~123.txt作为文字附加到当前用户的完整目录路径名: /Users/techwriter/iris/mgr/user/~myfile.txt/Users/techwriter/iris/mgr/user/~分别为123.txt

OPEN 命令

OPEN打开一个顺序文件。请记住,不能使用OPEN命令打开IRIS 数据库文件。

OPEN命令本身不会阻止另一个进程打开同一个顺序文件。可以使用OPEN命令“L”模式参数和/ObjectScript LOCK命令来管理并发顺序文件访问。文件锁定支持由底层操作系统的文件访问规则提供。

IRIS 在数据库文件和使用 ObjectScript OPEN命令打开的文件之间分配每个进程的打开文件配额。OPEN命令导致太多文件分配给OPEN命令时,发生错误。 IRIS 进程打开文件的最大数量为 1,024。每个进程的实际最大打开文件数是特定于平台的设置。例如,Windows 默认每个进程最多打开 998 个文件。请参阅适用于系统的操作系统文档。

OPEN语法

OPEN filename{{:({parameters{:reclength{:terminators}}})}{:timeout}}
  • filename

任何有效的文件规范,用引号引起来。该文件路径名不得超过 255 个字符。有效字符可以是 8ASCIIISO Latin-1 Unicode。在 UNIX 路径名中,您可以使用波形符 (~) 扩展来指示当前用户的主目录。例如: ~myfile~/myfile

  • parameters

可选- 一串单字母代码,用引号括起来,定义文件格式和您可以执行的操作类型。 (您还可以使用以斜杠 (/) 字符开头的关键字指定参数。)有关这些代码的定义,请参阅表OPEN 模式参数。如果参数不包含 RW,则 R 为默认值。可以通过设置 Config.Miscellaneous 类的 OpenMode 属性来配置此系统范围的默认打开模式。要打开新文件,必须指定参数 N 表示新文件。否则, OPEN将挂起或因超时而无法成功返回。如果参数不包括 S、V、F 或 U,则新 WindowsUNIX 文件的默认模式为 S,现有文件的默认模式为创建文件时指定的模式。如果未指定 A,则WRITE操作将覆盖文件以前的内容。参数按从左到右的顺序应用。

  • reclen

可选- 对于 WindowsUNIX 系统,指定 (S) 和 (U) 记录的最大记录长度,或指定固定长度 (F) 记录的绝对记录长度。忽略可变长度 (V) 记录。默认值为 32767

  • terminators

可选- 仅适用于流模式的用户定义的记录终止符字符串。它们允许您覆盖默认终止符:回车符、换行符和换页符。用户定义的终止符仅适用于输入,它们不会影响数据写入文件的方式(终止符作为特殊字符写入文件)。如果有多个用户定义的终止符,则会将其视为终止符列表,而不是用作单个终止符的多字符序列。

  • timeout

可选— IRIS 尝试打开文件的秒数。如果在此时间间隔内未成功,则会将$TEST设置为 0 并将控制权返回给进程。如果成功,它将$TEST设置为 1

超时参数虽然是可选的,但强烈建议使用,因为OPEN的成功或失败由$TEST特殊变量的值指示,并且仅在指定超时时才设置$TEST 。如果在超时到期之前打开尝试成功,则$TEST设置为 1;如果超时到期, $TEST将设置为 0

0
0 95
文章 姚 鑫 · 十二月 14, 2024 4m read

第五十章 File 输入 输出

本页介绍在 IRIS 数据平台中使用顺序文件。

重要:在大多数情况下,可以使用 %Library.File 类提供的 API,而不需要此页面上的详细信息。请参阅使用 %Library.File

介绍

所有操作系统都将磁盘 I/O 文件视为顺序文件。 Windows 系统将打印机视为顺序文件 I/O 设备(除非打印机通过串行通信端口连接)。 UNIX® 系统将打印机视为终端 I/O` 设备。有关打印机的更多详细信息,请参阅打印机。

本节讨论 IRIS 如何处理顺序文件。它提供了顺序文件 I/O 的介绍以及相关命令的说明。

  • 要访问顺序文件,必须首先使用OPEN命令打开该文件,并提供文件名作为参数。还可以选择指定OPEN模式参数。如果OPEN指定的文件不存在,则模式参数指定是否创建新文件。您可以同时打开多个文件。
  • 打开顺序文件后,必须指定USE命令来访问该文件,并提供文件名作为参数。 USE命令使指定文件成为当前设备;因此一次只能使用一个文件。 USE命令还可以指定模式参数。
  • 然后,可以对该文件发出多个READWRITE命令。每个READWRITE命令都会向文件传送一条记录或从文件传送一条记录。除非使用“W”模式参数打开该文件,否则无法写入该文件。尝试读取超过文件末尾会导致错误。
  • 您可以使用$ZSEEK函数设置文件位置,该位置由从连续文件的开头、当前位置或结尾开始的字符计数偏移量指定。 $ZPOS特殊变量包含从当前顺序文件开头算起的当前字符计数位置。
  • 完成文件 I/O 后,可以发出CLOSE命令来关闭顺序文件。

这些操作也可以使用 %Library.File 类的方法来执行。

%Library.File.Exists() 方法告诉您指定名称的连续文件是否已存在。

%Library.File.Size 属性返回顺序文件中当前的字符数。

打开文件时以及关闭文件时(如果已修改),%Library.File.DateModified 属性将更新为当前本地日期和时间。

如果文件已通过 %Library.File.Open() 方法打开,则 %Library.File.IsOpen 属性仅返回 1OPEN命令不设置此布尔属性。

指定文件

顺序文件可以由规范(完整)路径名或系统扩展为完整路径名的相对(部分)路径名指定。路径名可以是规范的 (c:\InterSystems\IRIS\mgr\user\myfiles\testfile.txt) 或相对于当前目录 (testfile.txt)。前导句点 (.) 指定当前目录。前导双句点 (..) 指定当前目录的父目录。如果OPEN命令创建新文件,则指定的目录必须已经存在。

%SYSTEM.Process.OSError()方法返回操作系统返回的文件访问错误,例如The system Cannot find the file specified 。此方法返回用尖括号括起来的操作系统错误号,后跟错误文本。下面的 Windows 示例显示了这一点:

USER>OPEN "C:\InterSystems\IRIS\mgr\nodir\testfile.txt":("WNS"):5
 
USER>w $SYSTEM.Process.OSError()
<3> The system cannot find the path specified.

USER>w ##class(%File).TempFilename("txt","C:\InterSystems\IRIS\mgr\nodir\testfile",.oserrnum)

USER>w $SYSTEM.Process.OSError()
<3> The system cannot find the path specified.

以下 Windows 示例均在当前命名空间 (USER) 目录中创建文件:

  • 完整路径名: OPEN "C:\InterSystems\IRIS\mgr\user\testfile1.txt":("WNS"):10
  • 文件名扩展: OPEN "testfile2.txt":("WNS"):10
  • 当前目录扩展: OPEN ".\testfile3.txt":("WNS"):10

以下 Windows 示例在当前命名空间 (USER) 目录的现有子目录中创建一个文件:

  • 当前目录的子目录: OPEN "mytemp\testfile4.txt":("WNS"):10

以下 Windows 示例使用父目录 (..) 语法创建文件:

  • 父目录( C:\InterSystems\IRIS\mgr\ ): OPEN "..\testfile5.txt":("WNS"):10
  • 当前目录(父目录的子目录) C:\InterSystems\IRIS\mgr\user\ : OPEN "..\user\testfile6.txt":("WNS"):10
  • 父目录C:\InterSystems\IRIS\mgr\temp\的另一个子目录: OPEN "..\temp\testfile7.txt":("WNS"):10
  • 父目录C:\InterSystems\IRIS\的父目录: OPEN "..\..\testfile8.txt":("WNS"):10

Windows 路径名使用 \(反斜杠)目录分隔符; UNIX 路径名使用 /(斜杠)目录分隔符。有效字符可以是 8ASCIIISO Latin-1Unicode

Windows 文件路径名规范具有以下格式:

device:\directory\file.type

例如, C:\InterSystems\IRIS\mgr\user\myfiles\testfile.txt 。类型后缀是可选的。

UNIX® 文件路径名规范具有以下格式:

../directory/name

完全展开时,文件路径名不得超过 256 个字符。如果所有目录的路径名长度超过 256,则会生成 <DIRECTORY> 错误。如果由于文件名长度原因路径名长度超过 256,则会生成 <NAMEADD> 错误。

UNIX® 文件路径名最多可以包含 255 个任何类型的字符。虽然字符句点(“.”)和下划线(“_”)可以出现在文件名中的任何位置,但您通常使用它们将名称划分为有意义的部分。例如,您可以定义文件名pat_rec.dat ,使用.dat作为文件类型。

访问当前 UNIX® 默认目录中的文件时,通常只需指定名称。系统填写目录的默认值。

DLL 名称可以指定为完整路径名或部分路径名。如果指定部分路径名,IRIS 会将其扩展至当前目录。通常,DLL 存储在二进制目录(“bin”)中。要定位二进制目录,请调用 %SYSTEM.Util 类的 BinaryDirectory() 方法。

0
0 71