文章 姚 鑫 · 十二月 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

当前文件位置。

0
0 102
文章 Hao Ma · 十二月 23, 2024 6m read

技术支持团队在不同的项目中发现了类似中间人攻击的情况, 和各位分享一下。

我们的系统一般是安装在内网里,没有恶意的中间人攻击的风险。但是在有些医院发现了这样的情况:IT在网络中安装了某种网络监控或者嗅探的设备, 它会在通信通道中模拟其中一方,或者双方的通信节点, 以截获通信双方的网络流量。通常它不影响双方的通信,但偶尔,它会中断双方的连接, 造成业务的中断。实质上这也是一种中间人攻击的情况,只不过这是用户允许的行为,偶然出现了故障。 

 

我们看看以下的例子:

以下的wireshark抓包截图中, 172.18.1.131和172.18.1.145在正常的通信过程中, 忽然收到了RST消息,造成了TCP连接上的复位。

 

其中172.18.1.131是intersystems的health connect系统, 它在序号50134的包里面首先发送了RST,因此客户怀疑是不是Health Connect出错,中断了连接,也就把问题提交了InterSystems的技术支持。

我们的技术支持检查了各种内部日志,没有发现任何错误,咨询了InterSystems的网络专家,才发现这是个网络层的错误,也就是说: 这个RST不是Health Connect发送的, 同样, 序号50135的RST消息, 也不一定是172.18.1.145发送的,这是中间网络层的行为。

0
0 364
文章 姚 鑫 · 十二月 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 文件。

0
0 105
文章 姚 鑫 · 十二月 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 操作系统提供了表。

0
0 126
文章 姚 鑫 · 十二月 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 操作必须指定要读取的字符数。

0
0 116
文章 姚 鑫 · 十二月 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® 默认为不创建新文件。

0
0 126
公告 Claire Zheng · 四月 19, 2023

为支持医疗信息行业人才发展,InterSystems 为中国市场量身定制了贴近需求、灵活、实操性强的技术认证培训计划,由 InterSystems 资深技术专家亲自授课,帮助用户快速掌握 InterSystems 技术,确保用户从快速发展的 InterSystems 技术中获益,以更好地服务于医院信息化建设。点击此处查看课程详情:InterSystems中国技术培训认证

2
1 424
文章 姚 鑫 · 十二月 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.
0
0 127
文章 姚 鑫 · 十二月 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”模式参数打开该文件,否则无法写入该文件。尝试读取超过文件末尾会导致错误。
0
0 96
文章 姚 鑫 · 十二月 13, 2024 3m read

第四十九章 终端输入 输出 - 转义序列编程

转义序列编程

转义序列的 ANSI 标准使智能终端的编程变得实用。字符串中转义字符及其后面的所有字符不会显示在屏幕上,但会更新$X$Y 。使用WRITE *语句将转义序列发送到终端,并通过直接设置$X和$Y来保持它们最新。

ANSI 标准建立了转义序列的标准语法。特定转义序列的效果取决于使用的终端类型。

每次READ之后在$ZB中查找传入的转义序列。 IRISANSI 标准转义序列和任何其他使用 ANSI 形式的转义序列放入$ZB中。 IRIS 可识别两种形式的转义序列:

常规形式

  • An ESC.
  • 可选字符“O”(字母),十进制值 79
  • 零个或多个十进制值为 32–47 的字符。
  • 十进制值 48–126 的一个字符。

控制形式

  • ESC字符,十进制值 27
  • “[”字符,十进制值 91
  • 零个或多个十进制值为 48–63 的字符。
  • 零个或多个十进制值为 32–47 的字符。
  • 十进制值 64–126 的一个字符。

此外,序列不能超过 16 个字符。违反这些形式或规则的转义序列设置$ZA的位 8,其值为 256

示例

假设正在对一个终端进行编程,其帮助键发送两个字符序列Escape-? ( ?的十进制值为 63

%SYS>SET HELP=$C(27,63)
ASK READ !
0
0 154
文章 姚 鑫 · 十二月 12, 2024 2m read

第四十八章 终端输入 输出 - PRINT 和 ZPRINT 命令

PRINT 和 ZPRINT 命令

将当前加载的 IRIS 例程的一行或多行写入当前设备。

ZPRINT与PRINT`具有相同的效果和参数。

语法

PRINT 
ZPRINT 
PRINT x 
ZPRINT x 
PRINT x:y 
ZPRINT x:y
参数 Definition 定义
(none) 不带参数的PRINTZPRINT命令打印整个例程。
x,y 变量xy指示要打印的行范围。它们可以是 TAG+OFFSET 形式的行引用,也可以是 +7 形式的行号。引用不在例程中的行意味着例程最后一行后面有空行。 x = 要打印的第一行或唯一一行。 y = 要打印的最后一行。

示例

此示例打印当前例程的第一行、从 INIT 开始的四行以及从 FINI 到结尾的所有行:

INIT
  SET a=1
  SET b=2
  SET c=3
  SET d=4
FINI
  SET x=24
  SET y=25
  SET z=26
  PRINT +1,INIT:INIT+3,FINI:+9999

对终端进行编程

使用 IRIS 对格式化 CRT 屏幕进行编程

终端 I/O 的几个功能有助于对格式化屏幕进行编程:

  • 使用WRITE *轻松发送控制序列。
  • 使用READ接收转义序列响应。
0
0 169
文章 姚 鑫 · 十二月 11, 2024 2m read

第四十七章 终端输入 输出 - DTM PC 控制台的助记符空间

DTM PC 控制台的助记符空间

IRIS 提供 IRIS 例程 %XDTM 来匹配开发 DTM 应用程序时使用的助记符。该助记词空间可用,但未设置为终端默认助记词空间。如果您将为 DTM 创建的应用程序移植到 IRIS,可以:

  • 在管理门户中将 ^%XDTM 配置为终端( MnemonicTerminal )的默认助记词空间,或者
  • OPENUSE命令中引用 ^%XDTM 助记符空间。

DTM 示例

UNIX

  OPEN "/dev/tty04/"::"^%XDTM"

Windows

  OPEN "c:\sys\user"::"^%XDTM"

然后 IRIS 可以正确解释WRITE /mnemonic命令中的 DTM 控制助记符,如下表所示。

0
0 99
文章 姚 鑫 · 十二月 10, 2024 4m read

第四十六章 终端输入 输出 - CLOSE 命令

CLOSE 命令

释放设备的所有权,这是通过OPEN命令获得的。

语法

CLOSE device

终端预定义助记符空间

IRIS 提供了两个预定义的助记符空间供终端使用:

  • ^%X364 用于 ANSI X3.64 终端
  • ^%XDTM 用于 DTM PC 控制台

如果激活这些助记符空间之一,则可以在WRITE /mnemonic命令中使用与它们关联的控制助记符。还可以创建自己的助记符空间。有关助记符空间的更多信息,请参阅使用助记符空间控制设备。

以下部分描述了这些助记符空间的控制助记符。

X3.64的助记符空间

IRISANSI X3.64 定义提供内置助记符空间。该助记符空间是管理器命名空间中的 IRIS 例程 %X364。要使用例程 %X364,请执行以下任一操作:

  • IRIS 系统管理员在IO Settings配置设置中输入 %X364 作为默认助记符空间。从管理门户中,选择“系统管理” 、 “配置” 、 “设备设置” 、 “IO 设置” 。
  • 发出指定此助记符空间的OPEN命令:
 OPEN "terminal"::"^%X364"

下表列出了助记符。

0
0 108
文章 姚 鑫 · 十二月 9, 2024 3m read

第四十五章 终端输入 输出 - WRITE 命令

WRITE 命令

将零个或多个字符写入终端

语法

WRITE *variable 
WRITE *-n
WRITE # 
WRITE /mnemonic
参数 定义
(none) 不带参数的WRITE将写入当前设备上的所有局部变量。
*variable WRITE *变量写入一个字符,其十进制值等于x 。对于 ASCII 字符,变量的值应为 0255 范围内的整数;对于 Unicode 字符,变量的值应为 >255。按照约定,从 0127 的值表示 7ASCII 字符,而 128255 表示扩展 ASCII 字符集,与应用程序本身相关。如果硬件和软件设置正确, IRIS 可以处理 8 位数据。示例:您可以使用第八位来表示国际字符集。 IRIS 例程通常使用WRITE *来发送设备相关功能的控制字符。示例:WRITE *27,*91,*50,*74 清除终端屏幕。 WRITE *不会更改$X$Y ;假设WRITE *输出高度特定于输出设备。
*-1 *-1会清除输入缓冲区。它清除等待下一个READ命令的所有字符。因此,所有预先输入的字符都被清除。
输入缓冲区保存从键盘到达的字符,甚至是您在例程执行READ命令之前键入的字符。因此,甚至可以在问题出现在屏幕上之前就回答问题。
0
0 89
文章 姚 鑫 · 十二月 8, 2024 3m read

第四十四章 终端输入 输出 - 特殊协议字符影响终端 I O

特殊协议字符影响终端 I O

每个操作系统都会拦截某些协议字符 (UNIX) 或组合键(例如 Windows 平台上的CTR-ALT-DEL ),以防止这些字符影响 IRISWindows 控制台不会尝试覆盖这些操作系统特征。

其他特殊字符可以改变例程的执行方式,但不会出现在READ命令变量中。在图像模式下操作终端会取消这些效果,并使 IRIS 像对待任何其他字符一样对待这些字符。

READ受输出和输入控制字符的影响。 READ只是读取除终止字符之外的所有其他控制字符。它不回应他们。

输出控制字符影响例程的流程和输出。下表对此进行了描述:

输出控制字符

输出控制字符 十进制值 定义
Ctrl-C 3 如果启用了中断,则Ctrl-C会中断例程的执行。该例程的行为就像发生错误。如果禁用中断,则Ctrl-C会导致 IRIS 丢弃当前READ中迄今为止输入的任何内容。可以使用Ctrl-C中断需要网络操作的全局模块请求。要捕获Ctrl-C ,请设置特殊变量$ZTRAP 。有关其他信息,请参阅有关启用中断的部分。
Ctrl-S 19 Ctrl-S暂停到终端的输出。当 IRIS 遇到Ctrl-Q时,终端输出将恢复。
Ctrl-Q 17 Ctrl-Q恢复由Ctrl-S暂停的输出。

输入控制字符影响输入。

0
0 93
文章 姚 鑫 · 十二月 7, 2024 2m read

第四十三章 终端输入 输出 - READ 命令

Read 命令

从键盘读取 032 KB 的内容到指定变量中。超时参数是可选的。该命令不能以井号 (#) 或冒号 (:) 结尾

语法

READ variable:timeout                                             ; Variable-length read
READ variable#length:timeout  ; Fixed-length read
READ *variable:timeout                                           ; Single-character read

示例

下表提供了如何使用这些参数的几个示例。

READ 命令参数:示例

例子 影响
READ ^GLO 从当前设备读取字符,直到找到终止符,并将结果字符串放入全局^GLO中。
READ X:60 从当前设备读取,直到找到终止符,并将读取的字符串放入变量X中。在超时之前最多等待 60 秒输入结束。敲击按键不会重置超时值。
READ *X 从当前设备读取单个字符并将其十进制值放入局部变量X中。
READ X#1 从当前设备读取单个字符并将其字符串值放入局部变量X中。
0
0 112
文章 姚 鑫 · 十二月 6, 2024 2m read

第四十二章 终端输入 输出 - 显式终止符

显式终止符

OPENUSE命令中的终止符参数允许您将特定字符定义为READWRITE命令的终止符。这些显式终止符可用于补充指定协议提供的终止符字符。终止符参数还可用于覆盖协议对字符的指定,并将其指定为终止符。将字符重新定义为终止符的能力的例外情况是:ASCII 0 (NULL)ASCII 3 ( Ctrl-C ) 以及两个输出控制字符Ctrl-Q (XON)Ctrl-S (XOFF)。它们保留其功能,并且不能重新定义为终止符。

示例

此示例将 ZBackspaceTab定义为主设备的终止符。下划线是连接运算符。

  USE 0:("":"":"Z"_$CHAR(8,9))

通过对无主终端发出OPEN命令,您可以隐式清除 IRIS 内部显式终止符列表。当出现协议字符串时, IRIS 会执行以下操作:

  1. 清除其显式终止符列表。
  2. 根据协议字符串设置协议。
  3. 将终止符字符串(如果有)复制到显式终止符的内部列表中。

下表给出了显式终止符字符串的示例。

Terminator String 终止符字符串 Definition 定义
USE 0:(80:"C":$CHAR(27)) 转义字符终止READ,而不是开始转义序列。
USE 0:(80:"C":"") 空字符串清除所有终止符。
0
0 106
文章 姚 鑫 · 十二月 5, 2024 3m read

第四十一章 终端输入 输出 - 协议终止符

协议终止符

OPENUSE 协议定义了哪些 READ 输入字符、控制序列和击键被视为隐式终止符。这四种协议是 I(图像模式)、N(正常模式(默认))、R(读取行调用模式)和 T(终止符模式):

  • I(图像模式)接受所有 256 个八位字符作为数据,不将任何字符视为 READ 输入终止符或命令行编辑字符。因此,您应该在图像模式下仅使用单个字符或固定长度的READ操作。如果没有定义终止字符,普通的READ会导致错误。
  • N(普通模式)和 C(CRT 模式)接受除以下六种字符之外的所有字符作为数据:ASCII 3、8、10、13、21 和 127。其中两种字符:ASCII 10(换行符)和 13(回车符)终止 READ 并提交输入。 ASCII 3 ( Ctrl-C ) 丢弃输入并发出如果启用 BREAK,则会出现错误。 ASCII 8(退格)和 127(删除)执行单字符退格擦除,然后继续读取。 ASCII 21 执行多字符退格,擦除所有先前的字符,然后继续读取。
  • R(读取行调用模式)接受除以下 20 种以外的所有字符作为数据:ASCII 1 到 8、10 到 14、16、18、21、23、24、27 和 127 ASCII 10(换行)和 13(回车) return) 终止 READ 并提交输入。
0
0 103
文章 姚 鑫 · 十二月 4, 2024 5m read

第四十章 终端输入 输出 - 用于OPEN和USE的字母代码协议

用于OPEN和USE的字母代码协议

特殊情况或终端可能需要不同的协议。使用协议字母代码参数(或相应的关键字参数),可以更改 IRIS 与终端通信的规则。协议对正常读取和单字符读取的影响是一样的。

禁用所有特殊协议的正常模式足以满足大多数终端 I/O 的需要。在正常模式下,IRIS 会回显每个传入的 ASCII 字符,并将其发送回以显示在终端上。 Return或有效的转义序列结束READ命令。

对终端发出OPEN会关闭所有先前的协议,除非您使用 +- 选项。

下表描述了有效的协议字符及其效果。

用于开放和使用的字母代码协议

协议字符 姓名 定义
B BREAK 如果启用了中断 (+B),则Ctrl-C将中断正在运行的例程并使用错误。如果禁用中断 (-B),则Ctrl-C不会引起中断,并且不会显示“^C”。该协议的使用取决于登录模式默认建立的BREAK命令,如下:
如果以程序员模式登录,则始终启用中断 ( BREAK 1 )。 OPENUSE命令中指定的 B(或 /BREAK)协议无效。
如果以应用程序模式登录,则默认为BREAK 0 ,并且可以通过OPENUSE命令中指定的 B(或 /BREAK)协议来启用或禁用中断。
0
0 98
文章 姚 鑫 · 十二月 3, 2024 4m read

第四十章 终端输入 输出 - OPEN 和 USE 命令的关键字参数

OPENUSE 命令的关键字参数

下表描述了使用OPENUSE命令控制终端设备的关键字参数。对于每个关键字,该表列出了OPENUSE相应的字母代码协议。有关使用这些协议的其他信息可以在字母代码协议表中找到。

终端设备的 OPENUSE 关键字参数

关键词 默认 字母代码协议 描述
/BAUD=n /BAUD= n设置端口的调制解调器波特率。支持的值取决于操作系统支持。 /SPEED/BAUD 的别名。
/BREAK[=n] /BREAK[= n ] 0 B /BREAK 或 /BREAK= n (对于n的非零值)启用协议。 /BREAK= n如果n值为零,则会禁用协议。
/COMPARAMS=str 对应于portstate位置参数。 (此关键字提供了一种以与位置无关的方式指定 COM 端口状态字节代码字符串的方法。)可以包含在str中的端口状态字节代码列在本页前面的表中。
/COMPRESS=str "" 指定流数据压缩类型。可以启用 ZLIBZSTD 压缩类型。可以指定/COMPRESS=""来禁用压缩。 /COMPRESS="zlib"相当于/GZIP=1 。要压缩字符串,请使用 %SYSTEM.Util.Compress().
0
0 92
文章 姚 鑫 · 十二月 2, 2024 4m read

第三十九章 终端输入 输出 - terminator

terminator

第三个位置参数:最多八个字符的字符串,其中任何一个都将终止READ 。这些终止符是协议中内置终止符的补充。请参阅使用终止符结束 I/O 操作。

portstate

4 个位置参数:按位置顺序最多包含 8 个字节的字符串,用于控制 COM 端口状态。端口状态字节如下(字节从1开始按从左到右的顺序编号):

Byte 字节 意义 Values
1 Disconnect 断开 D=断开(挂断)端口。空白=不断开端口。
2 Modem Control 调制解调器控制 1=使用调制解调器控制。0=不使用调制解调器控制。空白=调制解调器控制没有变化。
3 Data Bits 数据位 5=五个数据位。 6=六个数据位。 7=七个数据位。 8=八个数据位。空白=数据位设置没有变化。
4 Parity 平价 0=无奇偶校验。 1=奇校验。 2=偶校验。 3=标记奇偶校验。 4=空间奇偶校验。空白=奇偶校验设置没有更改。
5 Stop Bits 停止位 1=一个停止位。 5=1.5 个停止位。2=两个停止位。空白=停止位设置没有变化。
6 Flow Control 流量控制 X=使用Xon/Xoff流量控制。 C=使用CTS/RTS流量控制。 D=使用DSR/DTR流量控制。 N=禁用流量控制。
0
0 119
文章 姚 鑫 · 十二月 1, 2024 3m read

第三十八章 终端输入 输出 - USER命令

USER命令

使指定终端成为当前设备。在编程器模式下,同一行代码上的所有后续 I/O 命令都引用该设备。在应用程序模式下,您在USE命令中命名的设备将一直保留为当前设备,直到下一个USE命令为止。

USE 语法

USE命令采用以下参数:

USE terminal:(margin:protocols:terminator):"mnespace"

终端参数可以是一个表达式,其值为终端设备的名称。零 (0) 是该进程的主要设备。 $IO是当前设备。终端的最大长度为 256 个字符。

参数由冒号 (:) 分隔。如果省略参数,则必须指定冒号。命令或其参数列表不得以冒号结束。

可选参数列表包含在括号中,可以包含margin protocolsterminator参数。可以将可选的marginportsterminator参数指定为位置参数(按所示顺序),或使用语法 /KEYWORD=value 指定为关键字参数。关键字参数可以按任意顺序指定;由于 IRIS 按从左到右的顺序执行参数,因此在某些情况下,参数之间的交互可能决定首选顺序。可以在同一参数列表中混合位置参数和关键字参数。如果指定多个参数,则需要使用括号。

要使用USE命令指定 COM 端口状态和波特率,请使用适当的关键字参数。

0
0 118
公告 Michael Lei · 十二月 1, 2024
您好,欢迎阅读 十一月 2024 开发人员社区通讯。
统计信息
✓ 十一月发布了 33 篇新帖子:
 30篇新文章
 2个新公告
 1个新问题

✓ 十一月有 32 位新成员加入
✓ 所有时间发布了 2,284 篇帖子
✓ 所有时间有 2,071 位成员加入

0
0 67
文章 姚 鑫 · 十一月 30, 2024 3m read

第三十七章 终端输入 输出 - $ZB 显示结束读取的内容

$ZB 显示结束读取的内容

$ZB显示当前设备上最后一次READ操作结束的字符序列或事件。不能设置$ZB ;每次执行READ时,IRIS 都会设置$ZB的值。可以使用此值来作用于不可打印的字符,例如向上箭头键或功能键。

$ZB可以包含以下任意内容:

  • 终止符,例如回车符
  • 转义序列
  • 固定长度READ x#y的字符数y
  • READ *x的单个字符
  • 定时读取过期后出现空字符串

$ZB永远不会包含超过 64 个字符。较长的转义序列无效。

$ZB 示例

以下示例将用户指定的输入字符分配给READ命令变量x ,并将输入终止符(通常是 Return 字符)分配给$ZB特殊变量。从终端提示符发出此命令时,您需要设置一个变量以在与READ命令相同的命令行上捕获$ZB的值。这是因为用于发出命令行的行返回被写入$ZB作为终止符。此示例使用ZZDUMP显示$ZB捕获的字符的值。

USER>READ x SET y=$ZB
USER>ZZDUMP y

0000: 0D 
USER>

OPEN and USE 命令

OPEN 命令

建立终端的所有权。可选参数列表可以设置右边距、指定设备协议以及指定一个或多个终止字符。在参数列表之后,可以选择指定超时参数和/mnespace参数。

0
0 90
文章 姚 鑫 · 十一月 29, 2024 2m read

第三十六章 终端输入 输出 - 开关控制 $X 的转义序列更新

开关控制 $X 的转义序列更新

要选择非默认行为来更新进程的$X ,请发出%SYSTEM.Process类的 DX( n ) 方法。

系统管理员可以通过类中设置 Config.Miscellaneous 的DX属性来更改系统范围的默认行为。

在这两种情况下, n 的值都在 04 之间,如下所示:

Value Default Behavior for Updating $X
0 Default for InterSystems IRIS
1 DSM behavior
2 DTM/MSM behavior

$TEST 显示定时操作结果

$TEST特殊变量由采用超时值的命令设置。这些命令包括OPENREAD$TEST的值可以设置为 10

  • 如果定时命令在超时到期之前成功,则$TEST设置为 1
  • 如果定时命令超时, $TEST将设置为 0

注:没有超时的OPENREAD命令对$TEST没有影响。

$ZA 显示读取状态

$ZA特殊变量包含许多位标志,显示当前设备上最后一次READ的状态。不能设置$ZAIRIS 控制其价值。 $ZA在下一次READ之前保持有效。 $ZA包含表中列出的值的总和,这显示了程序如何测试此变量。 ( $ZA还包含调制解调器连接状态的位标志,此处未列出。

0
0 77
文章 姚 鑫 · 十一月 28, 2024 2m read

第三十五章 终端输入 输出 - 特殊变量显示 I O 条件

WRITE * and $X and $Y

WRITE *不会更改$X$Y 。因此,可以将控制序列发送到终端, $X$Y仍将反映真实的光标位置。某些控制序列确实会移动光标,因此可以在需要时直接设置$X$Y

$X$Y 示例

在以下示例中,控制序列将 VT100 终端中的光标移动到第 10 行、第 20 列,并相应地设置$X$Y

 ; set DY and DX to desired 
 ; values for $Y and $X 
 SET DY=10
 SET DX=20
 ; ...
 ; escape sequence moves
 ; cursor to desired position
 WRITE *27, *91, DY+1, *59, DX+1, *72
 ; ...
 ; updates $X and $Y
 SET $Y=DY
 SET $X=DX

转义序列对 $X$Y的影响各不相同

转义序列可以改变$X$Y值上的回显效果。三个因素控制着这种影响:

  • 操作系统,设置默认行为。
  • 是否在OPENUSE命令中指定了 /NOXY(禁用$X$Y处理)。
  • 可以使用%SYSTEM.Process类的 DX() 方法来设置$X如何处理当前进程的转义序列。可以通过类中设置 Con
0
0 82
文章 姚 鑫 · 十一月 27, 2024 2m read

第三十四章 终端输入 输出

概述

ObjectScript 提供支持串行异步 ASCII 终端的命令。还可以将这些命令与控制台 I/O 结合使用。

使用终端 I/O,例程可以:

  • 启用或禁用传入字符的回显。
  • 发送和接收 ANSI 标准转义序列。
  • 控制键盘中断并编程特殊的用户交互,包括格式化屏幕、反向视频和用于跳过字段的特殊键。
  • 启用和禁用Ctrl-C中断的识别。
  • 通过 XON ( Ctrl-Q ) 和 XOFF ( Ctrl-S ) 控制传入和传出数据流。
  • 指定 COM 端口状态参数和调制解调器波特率。
  • 当指定自己的终止字符集时,请遵循外部协议。
  • 与非终端设备通信,例如自动化仪器。

在大多数平台上,打印机被视为终端 I/O 设备。 UNIX® 系统始终将打印机作为终端 I/O 设备来处理。在 Windows 上,通过串行通信端口连接的打印机被视为终端 I/O 设备。否则,Windows 系统将打印机作为顺序文件 I/O 设备处理。

登录终端或控制台是主要设备

登录 IRIS 的终端或控制台是主要设备。无需打开主要设备。如果尚未发出OPENUSE ,则进程第一次发出READWRITE时,系统会自动打开主设备,并将其设置为当前设备,就像您已显式发出OPEN 0 USE 0一样。

在本页的其余部分中, “终端”一词用于指代终端和控制台。

特殊变量显示 I/O 条件

I/O 命令可以影响特殊变量的值。

0
0 83
文章 姚 鑫 · 十一月 26, 2024 2m read

第三十三章 UDP 客户端 服务器通信 - IPv4 和 IPv6

UDP 支持 IPv4IPv6 互联网协议。由于这些协议不兼容,服务器和客户端都必须使用相同的Internet协议,否则传输将失败。

IPv4 地址具有以下格式。 n0255 范围内的十进制整数:

n.n.n.n

可以将 IPv4 协议指定为"0.0.0.0" 。

IPv6 地址具有以下完整格式。 h是一个具有四个十六进制数字的十六进制数:

h:h:h:h:h:h:h:h

通常,IPv6 地址的缩写方式是消除前导零并用双冒号 (::) 替换连续的零部分; IPv6 地址中只能使用一个双冒号。通过使用 IPv4 缩写规则,可以将 IPv6 协议指定为“::” (意味着所有 8h部分的值为 0000)。

建立互联网协议:

  • 客户端必须在 %New() 方法中建立 IPv4IPv6。默认为 IPv4
  • 这必须与GetHostAddr()方法中指定并在Send()方法中提供(以二进制形式)的 IPv4IPv6 协议匹配。

以下是 IPv4 传输:

Server
 SET sobj=##class(%Net.UDP).%New(3001,"127.0.0.1")



  SET inmsg=sobj.Recv() 
Client
 SET cobj=##class(%Net.UDP).
0
0 131
文章 姚 鑫 · 十一月 25, 2024 3m read

第三十二章 UDP 客户端 服务器通信

本页介绍如何使用 UDP 在进程之间建立远程通信。

介绍

通过%Net.UDP来支持 UDP。此类提供以下方法: Send()数据包到指定的目的地和端口、 Recv()来自套接字的数据包以及Reply()发送器最后收到的数据包。

目标被标识为本地主机名或者 IPv4IPv6 主机地址。该端口可以是指定的端口号或动态端口分配。

建立UDP套接字

要使用 UDP,必须使用%New()方法来创建 UDP 套接字对象。然后,该对象实例用于发送、接收和回复数据包传输。

创建 UDP 套接字对象时,可以指定端口号和主机地址,如下例所示:

  SET UPDOref=##class(%Net.UDP).%New(3001,"0.0.0.0")

端口号和主机地址都是可选的。 %New()方法返回 UDP 套接字对象实例的 OREF(对象引用)。

  • 服务器等待接收请求,然后提供所请求的信息。因此,传输的这一方可以称为接收方或提供方。当提供者创建 UDP 对象时,它必须定义接收请求的端口号。
  • 客户端发送信息请求,然后接收回复。因此,传输的这一方可以称为发送方或请求方。当请求者创建 UDP 对象时,它可以使用动态端口号。默认值为0。当它发送数据包时,必须指定提供者的主机名和端口号。

主机地址

Send()方法指定目标的二进制地址。这是主机地址的二进制版本。

0
0 109