第十七章 疯狂Caché M语言兼容性(一)

第十七章 Caché M语言兼容性

Caché为以下各项提供语言兼容模式:

  • DSM-11
  • Open M [DSM]
  • Open M [DTM]
  • Open M [MSM]

通过将许多更常见的M编程语言命令和函数的语法容纳到CachéObjectScript中,这些模式使得将应用程序从上述安装移植到Caché成为可能。CachéObjectScript是ISO 11756-1999年标准M编程语言的超集。国际标准化组织11756-1999年标准与以前的美国国家标准协会的M编程语言相同。

显示和切换语言模式

Caché提供%SYSTEM.Process类的LanguageMode()方法,允许显示和设置语言模式。LanguageMode(N)将语言设置为模式n并返回上一个值。不带参数的LanguageMode()返回当前值。

如果在不同方言下创建的分区中已有例程,请不要使用LanguageMode()修改当前方言。

注意:不能从GUI实用程序设置语言模式。必须使用LanguageMode()方法。

如果按照本节中概述的步骤移植、管理和转换DSM模式例程,则不需要使用LanguageMode()方法调用来设置语言模式。如果要使用LanguageMode()查看当前语言模式,请发出以下命令:

  WRITE ##class(%SYSTEM.Process).LanguageMode()
0

还可以通过任何影响例程加载的命令来设置语言模式。当前方言将设置为例程的方言。在DO的情况下,在离开例程时恢复以前的方言。对于在命令间接(XECUTE)内完成的ZLOADGOTO,也会发生这种情况。

Caché中表示的通用语言模式如下所示。

Caché语言模式

LanguageMode()值语言模式
0Caché
1DSM-11
2DTM
5DSM
6DSM-J (Japanese version)
7DTM-J (Japanese version)
8MSM

DSM-11语言兼容性

使用已移植的DSM-11例程时,Caché在DSM模式下运行。您无需进行大量更改即可运行已移植到Caché的DSM-11例程。本节讨论各种命令和功能如何在DSM-11模式下运行。

使用%SYSTEM.Process类的LanguageMode(1)方法设置DSM-11语言模式。

注意:要特别注意LockZAllocateZDeallocation

使用常规内联锁装置。

常规联锁装置提供了标准M锁定命令的替代方案。开发了常规联锁装置,以便DSM-11应用程序不会用完DSM-11锁表中的空间。

此功能是专门为DSM-11兼容模式设计的,应用程序从DSM-11移植。不过,它也可以在Caché 语言模式下运行。

打开特殊设备锁定 Global

设备编号20到46和200到223用作常规联锁设备。它们是进程协同使用的伪设备,因此它们可以控制对相同数据的更新。例程联锁设备号存在于所有Open M和Caché系统上。

两个或多个进程必须同意将其中一个设备号用于特定目的。一个进程为该设备发出Open命令,并对与该设备关联的数据执行任何必要的处理。如果第二个进程试图打开该设备,则必须等到第一个进程关闭该设备。因此,第二个进程在成功打开设备或超时之前不执行任何处理。任何数量的进程都可以尝试打开设备;每个进程都会一直等到下一个进程,然后才会使用Close命令释放设备。

以这种方式,对例程联锁设备的打开命令保证了进程对与该设备相关联的数据的独占访问,只要所有应用程序:

  • 在使用此技术时保持一致(与Lock命令一样)
  • 商定与每个例行联锁设备相关的数据
    在该进程向该设备号发出关闭命令后,另一个进程可以打开该设备并独占访问数据。

为例行联锁设备发出I/O命令

打开和关闭是您可以向常规联锁设备发出的唯一I/O命令。没有读写命令,因为使用例程联锁设备不涉及将数据传入或传出任何设备或存储区。

打开命令

Open命令打开一个例行的联锁设备,并防止其他进程成功地向同一设备号发出Open命令。

语法

Open device[::timeout]
参数描述
device设备编号,从20到46或从200到223。必须确保使用给定设备编号的所有例程都同意该编号的含义。其含义通常是哪些全局现在被认为是锁定的,因此对其他进程不可用。
timeout一个正整数,其值(以秒为单位)是Caché 等待打开完成的最长时间。如果指定0,则Open会立即将控制权返回给进程。

关闭命令

CLOSE命令关闭例程联锁设备,并将其释放给其他进程。

语法

Close device

使用DSM-11模式例程

在Caché系统上使用DSM-11模式例程时,请牢记以下几点:

  • DSM-11和InterSystems例程可以在同一命名空间中共存。
  • Caché和DSM-11模式例程可以根据需要相互调用。Caché在每个例程的基础上适应执行例程的已保存语言模式。
  • DSM-11模式例程只能保存为中间源代码(.int)例程。不能在宏源代码(.Mac)级别操作它们。
  • Caché仅提供对DSM-11语言的运行时支持。它不支持DSM-11开发环境,也不支持调用DSM-11库实用程序或宏-11例程。
  • 只能在Caché开发环境中对DSM-11例程进行进一步开发。
  • 当使用全屏编辑器或ZLoad命令加载例程时,Caché会将语言模式设置为与例程的语言模式相匹配。
  • 如果使用LanguageMode()方法更改语言模式,使其与加载的例程的语言模式不匹配,然后尝试执行ZInsert,则会收到<language mismatch>错误消息。

将例程从DSM-11模式转换为Caché模式

可以随时编辑DSM-11例程以符合Caché,并将其语言模式更改为Caché。Caché Studio编辑器便于将DSM-11模式例程转换为Caché模式。

常规操作

保存和恢复例程

在Caché系统上具有DSM-11模式例程后,可以将实用程序%RO%RI或Caché Studio与其配合使用。这些实用程序维护例程的DSM-11模式,允许使用Caché%RO%RI实用程序将从DSM-11主机复制到Caché主机的例程复制到其他Caché命名空间和/或主机。

列出当前命名空间中的例程

%RD实用程序列出当前Caché命名空间中的例程,在其长格式显示中包括一列“lang”,反映每个例程的已保存语言模式。对于Caché模式例程,“LANG”列为空,而对于DSM-11模式例程,则包含“DSM11”。您还可以使用管理门户列出例程。

%RCOPY和%RCOMPIL

%RCOPY%RCOMPIL例程实用程序可以识别并保留每个例程的语言模式。%RCOPY复制例程并生成备份版本。%RCOMPIL编译宏源代码和中间代码例程。使用%RCOPY重命名DSM-11模式例程,而无需将其转换为Caché模式。也可以使用CachéStudio。

CachéStudio和例程行编辑器

如果保存并编译,Caché Studio和例程行编辑器(X^%)可以识别并保留每个例程的语言模式。Caché Studio中的例程属性对话框显示当前例程的语言模式。

从DSM-11系统传输全局数据

ANSI整理的全局参数

要将ANSI整理的全局变量从DSM-11系统传输到Caché系统,请首先使用采用DSM-11文件格式的CachéStudio从DSM-11系统读取它们。

字符串排序的全局变量

要将字符串整理的全局变量从DSM-11系统传输到Caché,请首先使用DSM-11%gto实用程序从DSM-11系统读取全局变量。然后,在InterSystems主机上使用%GCREATE实用程序创建每个全局变量,并赋予其纯字符串排序特征。最后,使用%Gigen实用程序加载全局变量。

DSM-11兼容模式下的I/O编程

以下各节讨论CachéDSM-11兼容模式的输入和输出编程特性。

DSM-11兼容模式下的终端I/O

在caché中,终端的open命令提供了五个参数:margin, protocol, terminators, portstate, baud.在caché中,终端的use命令只提供三个参数:margin, protocol, terminators。

相比之下,在DSM-11中,OpenUse命令可容纳11个参数。这些参数中的大多数都存在,因为DSM-11还充当它自己的操作系统。在DSM-11兼容模式下,Caché模拟DSM-11语法,接受但忽略与操作系统相关的参数。

以下两个表格描述了十一个DSM-11打开和使用命令参数的高速缓存DSM-11兼容模式解释。

DSM-11兼容模式打开/使用命令参数

参数DSM-11的含义DSM-11兼容模式解释
p1: margin设置设备的右边距。与DSM-11相同。在功能和参数位置上都与Caché 模式页边距参数相同。
p2: output ring buffer设置输出环形缓冲区的大小。接受了,但被忽略了。
p3: input field length指定字段长度。此参数仅用于DSM-11向后兼容。读取命令现在是指定字段长度的首选技术。接受了,但被忽略了。
p4: input ring buffer设置输入环形缓冲区的大小。接受了,但被忽略了。
p5: set status修改设备特征与系统间模式协议参数相关的位掩码。
p6: clear status修改设备特征与Caché模式协议参数相关的位掩码。
p7: set X andY更改端子的$X$Y设置。详情见下表。
p8: line parameter register根据控制器类型分配的值。接受了,但被忽略了。
p9: terminators为设备建立一组线路终结器。与DSM-11相同。在功能上等同于Caché模式终止符参数,尽管它占据不同的参数位置。
p10: set application interrupt key为设备建立一组应用程序中断键。接受了,但被忽略了。
timeout指定在请求的设备不空闲时暂停执行的时间长度。与DSM-11相同。在功能和参数位置上都与Caché模式超时参数相同。

Caché模式中的协议参数是包含以下内容某种组合的字符串:

  • B (enable Ctrl-C)
  • C (CRT)
  • F (flush)
  • I (image)
  • P (printer)
  • S (secret, no echo)
  • T (terminators).

同样,DSM-11具有设置状态和清除状态参数,这两个参数都是位掩码。

要启用协议,必须在SET STATUS参数中包括其位。要关闭协议,必须将其位包括在清除状态参数中。在DSM-11兼容模式下,Caché接受但忽略特定于操作系统的位。下表列出了支持的位。

DSM-11兼容模式设置和清除状态位

BitValue描述
0 (1)0-回声;1-无回声Caché“S”协议的标识。
2 (4)0-硬拷贝;1-CRTCaché“C”协议的标识。
6 (64)0-转义处理已禁用;1-转义处理已启用确定读取时如何处理转义序列。在Caché模式下,转义序列总是终止非图像模式读取,转义序列在$ZB中显示为字符串。在DSM 11模式下,转义序列始终终止正常读取,但转义序列仅在转义处理启用时才会被处理。启用转义处理时,第二个字符的十进制ASCII码出现在$ZB的高位字节中,转义字符本身的十进制ASCII码出现在低位字节中。禁用转义处理时,将转义字符视为任何终止符,并且不处理转义序列的其余字符。它们保留在输入缓冲器中,在那里它们可以被后续的读取命令访问。
7 (128)0-不发送光标控制序列;1-发送光标控制序列确定参数7的处理方式:设置$X$Y。当在DSM-11语言兼容模式下打开/使用时提供参数7值时,$X$Y会相应更新,如果位7打开,则会将适当的光标控制序列(VT52或ANSI,取决于位16)传输到终端。
14 (16384)0-不转换;1-转换为大写确定是否在输入时转换大小写。
16 (65536)0 – VT52; 1 – ANSI确定适当的光标控制序列。
19 (524288)0-忽略删除字符;1-确认删除字符确定输入缓冲区中没有要删除的内容时按Delete键的效果。如果该位为ON,则删除字符将被忽略。如果该位为OFF,则读取终止,删除字符在$ZB的低位字节中显示为127。
20 (1048576)0-接受未编程的ctrl键;1-忽略未编程的ctrl键。确定按下非编程控制键的效果。当该位关闭时,所有未编程的控制键都被接受为正常字符。该位开启时,未编程的控制键将被忽略。它们不会回显或放置在输入缓冲区中。
23 (8388608)0-禁用全部传递;1-启用全部传递与Caché 图像模式协议相同。该位打开时,所有控制字符直接传递到程序,无需过滤或解释。
25 (33554432)0-启用提前键入;1-禁用提前键入确定对提前键入的处理。位25开启时,禁用提前打字。在每次读取之前刷新输入缓冲区。当位25关闭时,启用提前打字。在每次读取之前不会刷新输入缓冲区。
26 (68108864)0-默认为第25位,提前键入控制;1-不刷新提前键入缓冲区。当位26关闭时,除了位25提供的控制外,不会授予任何额外的提前键入控制。位26开启时,除非位25明确指示,否则永远不能刷新预打缓冲区。例如,“带提示阅读”不会提前清除键入内容。

在Windows上,CachéObjectScript在数据库文件和使用Open打开的文件之间为每个进程分配打开的文件配额。当Open导致太多文件分配给Open命令时,您会收到<TOOMANYFILES>错误消息。Caché不限制打开的文件数;每个进程的最大打开文件数是特定于平台的设置。

警告:仅当设备的最后一次打开/使用处于DSM-11模式时,才会在读/写时接受DSM-11兼容模式特有的打开/使用参数。DSM-11模式特有的参数是p5/p6(位6、7、19、20、25、26)和p7。

正在终止读取

如果终止符完成读取,在Caché 模式下,特殊变量$ZB将终止符字符作为字符串包含,而在DSM-11模式下,终止符的ASCII十进制值在$ZB的低位字节中返回。

如果转义序列终止读取,则Caché模式以$ZB中的字符串形式返回ASCII转义序列,而DSM-11模式返回一个整数,转义字符(27)在$ZB的低位字节,第二个字符加16,然后在高位字节取模64。

磁带I/O

磁带的I/O命令在Caché和DSM-11中非常相似。两者都使用位置参数样式,并且每个参数中特定参数的位置和值非常相似。但是,格式代码存在一些差异,这说明了DSM-11兼容模式下磁带I/O的这些独特特征:

  • Caché不支持DSM-11“B”格式。
  • DSM-11提供“C”格式,指定连续(非挂起)I/O。这使程序能够在磁带I/O进行时继续执行其他操作。可以通过发出WRITE*10命令随时检查I/O的状态,该命令会更新$Za。虽然Caché实际上不能在OpenVMS、UNIX®或Windows操作系统上执行此操作,但它在DSM-11兼容模式下接受“C”格式,因此使用该格式编码的DSM-11应用程序不需要更改源代码即可运行。取而代之的是,Caché执行以下步骤:
  • 执行I/O。
  • 等待程序完成,然后继续。
  • 当程序发出WRITE*10时,用完成状态更新$Za
  • DSM-11“T”格式指定在DSM-11兼容模式下禁止磁带标记陷阱。
  • 用于指定DSM-11和Caché的磁带密度的格式字符串字符相关如下:
DSM-11 模式Caché 模式磁带密度 (BPI)
31800
421600
536250
  • 在DSM-11模式下,ZA和ZB特殊变量返回与DSM-11兼容的磁带操作值。
  • 在Caché模式下,磁带控制功能使用WRITE*-n(负值)完成,而DSM-11兼容模式使用WRITE*n(正值)完成。除了DSM-11提供更新$ZaWRITE*10之外,两种模式对控制功能的绝对值分配是相同的。如上所述,这对于检查异步I/O操作状态的DSM-11“C”格式选项很有用。

作业间通信设备(JOBCOM)

Caché提供设备224至255,用于两种语言模式的作业间通信

VIEW命令和$VIEW函数

在DSM-11兼容模式下,Caché不支持VIEW命令或$VIEW函数。

ZALLOCATEZDEALLOCATE

ZALLOCATEZDEALLOCATE命令在Caché和DSM-11中的行为不同:

  • 在DSM-11模式下,ZALLOCATE只能通过ZDeALLOCATE撤销,LOCK+只能通过Lock撤销。此外,某个位置的任意数量的ZAllocate命令都可以使用单个ZDeAllocate来撤消。
  • 在Caché 模式中,ZAllocateZDeAllocation等同于Lock+Lock

Config.Miscellous类的ZaMode属性允许选择ZAllocateZDeallocation在系统范围内执行的行为:Caché模式或DSM-11模式。

确定要使用的模式

在DSM-11兼容模式下,默认情况下,ZAllocateZDeallocation的行为与在DSM-11中相同。由于这些模式之间的差异,请始终检查从DSM-11系统移植的代码,以确保LockZAllocate嵌套特征的更改不会影响应用程序的完整性。

在ZSTU中设置模式

如果已将ZaZd命令移植到Caché模式,但仍在DSM-11模式下编译,请在ZSTU启动例程中设置ZaMode,以确保ZaZd将在Caché模式下解释。

DSM-11模式的扩展功能

Caché在两种语言模式下都支持以下功能:

  • $ZNext
  • $ZOrder
  • $ZPrevious
  • $ZSort

这些是Caché中不推荐使用的遗留函数。

不支持的DSM-11功能

Caché不支持以下DSM-11功能:

  • $ZCall
  • $ZUCI

注意:由于$ZUCI函数可以缩写为$zu,因此必须确保从移植到Caché的DSM-11应用程序中删除对它的所有引用,以便Caché不会将它们视为对Caché$zu(N)($ZUTIL(N))函数的调用。

DSM-11模式的扩展特殊变量。

Caché在两种语言模式下都支持以下特殊变量:

  • $ZORDER
  • $ZREFERENCE
  • $ZVERSION

Caché仅在DSM-11模式下支持这些特殊变量:

  • $ZA
  • $ZB
    $ZA$ZB都返回DSM-11值。

DSM-11兼容模式的扩展命令

Caché在两种语言模式下都支持以下DSM-11命令:

  • ZTRAP
    Caché在DSM-11兼容模式下支持以下命令:
  • ZPrint
  • ZWrite
  • ZBreak

ZPrint与Caché 模式打印命令相同。
ZWrite与无参数的WRITE命令相同。

在DSM-11 M中,ZBreak OnZBreak Off命令控制无参数BREAK命令的处理。%SYSTEM.Process类的BreakMode()方法模拟此DSM-11行为,并在两种语言模式下工作。

发出BreakMode(0)将禁用无参数中断命令的处理(类似于ZBreak off)。发出BreakMode(1)可启用无参数中断命令的处理(类似于ZBreak ON)。发出不带参数的BreakMode()将返回交换机的当前状态,而不会更改它。

DSM-11兼容模式的错误处理

错误讯息

在DSM-11模式下,$ZERROR特殊变量返回的错误消息使用与其对应的DSM-11相同的拼写。

中断2错误处理

在DSM-11模式下,Caché支持DSM-11版本2错误处理。DSM-11版本2风格的错误处理规定,无论何时发生M错误,都会清除整个帧堆栈,并执行转到错误处理例程的GOTO。
要保留这种错误处理方式,请使用Break 2命令启用DSM-11版本2错误处理。要恢复正常的DSM-11错误处理,请发出Break-2命令。您只能在DSM-11兼容模式下调用这些命令。

如果在DSM-11兼容模式下执行的例程调用正常语言模式例程(如系统实用程序),则Caché 标准错误处理将在该例程的整个执行过程中应用。

$TEXT注释行

Caché支持双分号功能,允许在编译结果中包含特定的注释行。当$TEXT函数引用注释行,并且例程将在没有源代码的情况下分发时,此功能是必需的。由于DSM-11没有等效功能,因此DSM-11模式下的$TEXT要求源代码始终可用。

DSM语言兼容性

使用已移植的DSM例程时,Caché在DSM模式下运行。无需进行大量更改即可运行已移植到Caché的DSM例程。本节讨论各种命令和函数如何在DSM模式下运行。使用%SYSTEM.Process类的LanguageMode(5)方法设置DSM语言模式。

将例程从DSM移植到Caché

使用已移植的DSM例程时,Caché在DSM模式下运行。要将例程从DSM移植到缓存,请使用DSM%RS实用程序将本机DSM应用程序保存到磁带或磁盘。然后,使用CachéStudio编辑器或%RI实用程序恢复缓存系统上的应用程序。

%RI实用程序和DSM格式的还原实用程序可识别本机DSM%RS文件,并将其加载(编译并保存)为DSM模式例程。

在Caché系统上使用DSM模式例程时,请记住以下几点:

  • DSM和Caché例程可以在名称空间中共存。
  • Caché和DSM例程可以根据需要相互调用。Caché在每个例程的基础上适应执行例程的已保存语言模式。
  • Caché仅提供对DSM语言的运行时支持。它不支持DSM开发环境,也不支持调用DSM库实用程序或任何与OpenVMS相关的外部例程($ZCALL)。
  • 当使用ZLoad命令加载例程时,Caché设置语言模式以匹配例程的语言模式。
  • 如果使用LanguageMode()方法更改语言模式,使其与加载的例程的语言模式不匹配,然后尝试执行ZInsert,则会收到<language mismatch>错误消息。

备注:目前,%RI^%RDE报告DSM模式例程中某些DSM语言功能的<语法>错误。这表示该语法不是有效的CachéObjectScript语法。但是,如果它是当前在DSM兼容模式下识别的DSM语言功能,则代码将正确解释。

在DSM语言模式下编程。

在Caché中,CloseOpenUseJob命令以冒号()字符分隔的基于位置的参数值为特色。例如:

Use terminal:[([margin]:[protocols]:[terminators])]:"mnespace"

相比之下,在DSM中,CloseOpenUseZuseJob命令具有关键字语法,其中关键字和Not Position赋予参数值含义。例如:

Use terminal:[keylist]:"mnespace"

其中keylist为下列值之一:

keyword [=value](keyword[=value][,...])

在每种情况下,目的都是将有关操作的信息传送到指定的设备。例如,程序员可能想要将读取命令输入字符转换为大写。在Caché本地语言模式中,此操作使用以下语法完成:

Use 0pen:(:"+U")

在DSM语言模式下,以下操作可实现相同的功能:

Use 0pen:CONVERT

目前,DSM语言模式支持终端类型设备的某些关键字。以下关键字是可识别的,但被视为Open命令的无操作:

BLOCKSIZE=n

通过Open命令将以下关键字应用于顺序文件(仅限Windows平台)时,可以识别以下关键字并使其发挥作用:

  • DELETE
  • NEWVERSION
  • READONLY
  • RECORDSIZE

通过USE命令将DISCONNECT关键字应用于顺序文件时,可以识别该关键字并使其起作用。

通过CLOSE命令将以下关键字应用于顺序文件时,可以识别和使用以下关键字:

  • DELETE
  • NODELETE
  • RENAME

以下例外适用于DSM语言模式下的Caché :

  • 关闭新创建的文件时,如果未向其写入任何内容,DSM将删除该文件。但是,在Caché中,DSM语言模式下的CLOSE命令不会删除文件。
  • 使用顺序文件的Open命令指定的RECORDSIZE关键字当前仅影响读取操作。
  • 使用CLOSE命令指定RENAME关键字并将要关闭的文件标记为删除时,DSM将删除该文件,然后生成%DSM-E-RENAMERR错误。但是,在Caché中,DSM语言模式中的Close命令会重命名文件,但不会将其删除。
  • 使用CLOSE命令指定RENAME和DELETE关键字时,DSM将删除文件,然后生成%DSM-E-RENAMERR错误。但是,在Caché中,DSM语言模式中的CLOSE命令会删除文件。

以下关键字可识别并可用于USE命令:

  • CENABLE
  • CLEARSRCR
  • CONVERT
  • CURSOR
  • DEVTYPE=s
  • DOWNSCRO
  • ECHO
  • ERASELIN
  • LINE
  • NOCENABL
  • NOCONVERT
  • NOCURSOR
  • NOECHO
  • NOLINE
  • NOREADPFLU
  • NOTYPE
  • READPFLU
  • TERMINATOR=s
  • TYPE
  • UPSCROLL
  • WIDTH=n
  • X=n
  • Y=n
    中断0必须处于活动状态,才能使CENABLE和NOCENABL具有其预期效果。中断0是应用程序模式中的默认值。但是,中断1是编程器模式下的默认值,并且在每次编程器模式提示时都会隐式重新声明。因此,必须在每个程序员模式提示符处重新键入Break 0,以交互测试CENABLE和NOCENABL关键字。

CLEARSCR、DOWNSCRO、ERASELIN、UPSCROLL、X=n和Y=n关键字导致将VT100转义序列写入指定设备,并且仅适用于识别序列的设备。当指定的设备是控制台窗口时,Caché会自动将转义序列转换为执行所需结果的窗口操作。

LINE和NOLINE关键字启用和禁用Caché读取行调用。默认情况下,最初可以禁用读取行调用。默认情况下,使用%SYSTEM.Process类的LineRecall()方法为的进程启用读取行调用。

在DSM中,除非/typehead命令行限定符对DSM进程有效,否则type和notype关键字无效。

在DEC OSF/1 AXP的DSM中也是如此,但NOREADPFLU关键字可用于动态完成与/typehead命令限定符相同的事情,而READPFLU则取消/typehead行为。

因此,在DSM兼容模式下提供NOREADPFLU和READPFLU,以便可以在应用程序启动时为主器件指定NOREADPFLU,以实现与DSM/TYPEAHEAD限定符相同的行为。

DSM兼容模式可识别以下关键字,但会将它们视为无操作可供使用:

  • ESCAPE (in effect by default)
  • FLUSH
  • NOPACK
  • PACK

DSM语言模式还支持作业命令的几个关键字。以下关键字是可识别且功能强大的:

  • DATA
  • INPUT
  • OUTPUT

以下关键字是可识别的,但被视为作业的无操作:

  • DETACHED (also a no-op on DSM systems)
  • ERROR
  • NAME
  • PRIORITY
  • OPTIONS

DSM兼容模式当前处理除BREAKVIEW命令之外的所有其他标准M命令,这两个命令(根据标准)接受特定于实现者的参数。

https://juejin.im/post/5ed6f345f265da7708477f5e

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论