第二十九章 Caché 命令大全 USE 命令

第二十九章 Caché 命令大全 USE 命令

将设备建立为当前设备。

重点

  1. 设备所有权是通过OPEN命令建立的。唯一的例外是主设备,它被分配给进程,通常是登录的终端。如果use命令中指定的设备不属于该进程,则Ccaché会发出<NOTOPEN>错误消息。

大纲

USE:pc useargument,...
U:pc useargument,...

其中ueargument可以是:

device:(parameters):"mnespace"

参数

  • pc 可选 - 后置表达式
  • device 要选择为当前设备的设备,由设备ID或设备别名指定。设备ID可以是整数(设备号)、设备名称或顺序文件的路径名。如果是字符串,则必须用引号引起来。
  • parameters 可选-用于设置设备特性的参数列表。参数列表括在括号中,列表中的参数用冒号分隔。参数可以是位置参数(在参数列表中按固定顺序指定)或关键字(按任意顺序指定)。允许混合使用位置参数和关键字参数。各个参数及其位置和关键字高度依赖于设备。
  • mnespace 可选-包含要与此设备一起使用的控件助记符的助记符空间的名称,指定为引号字符串。

描述

使用设备将指定的设备建立为当前设备。该进程必须已经使用OPEN命令建立了对设备的所有权。

在发出另一个USE命令以选择另一个拥有的设备作为当前设备或该过程终止之前,当前设备将一直保持为当前设备。

Use命令可以将诸如终端设备、磁带设备、假脱机设备、TCP绑定、进程间管道、命名管道和JOB间通信等设备建立为当前设备。USE命令也可用于打开顺序文件。设备参数将文件路径名指定为带引号的字符串。

USE命令提供的参数高度依赖于设备。在许多情况下,可用的参数与OPEN命令提供的参数相同;但是,某些设备参数只能使用OPEN命令设置,而其他设备参数只能使用USE命令设置。

USE命令可以指定多个用逗号分隔的useargument。但是,一次只能有一个当前设备。如果您指定多个使用参数,则最后一个使用参数中指定的设备将成为当前设备。这种USE形式可用于为多个设备设置参数,然后将最后命名的设备建立为当前设备。

参数

pc

可选的后置条件表达式。如果后置条件表达式为true(计算为非零数值),则Caché执行命令。如果后置条件表达式为假(计算为零),则Caché不执行命令。

device

要选择为当前设备的设备。指定与在相应的OPEN命令中指定的设备ID(或其他设备标识符)相同的设备ID。

parameters

参数列表,用于设置要用作当前设备的设备的工作特性。如果有多个参数,则需要使用括号。(指定参数时始终使用括号是很好的编程实践。)请注意左括号前所需的冒号。在括号内,冒号用于分隔多个参数。

可以使用位置参数或关键字参数指定设备的参数。还可以在同一参数列表中混合使用位置参数和关键字参数。

在大多数情况下,指定相互矛盾、重复或无效的参数值不会导致错误。只要有可能,Caché就会忽略不适当的参数值,并采用适当的默认值。

在许多情况下,可用的参数与OPEN命令支持的参数相同。对于顺序文件、TCP设备和进程间通信管道,某些参数只能使用OPEN命令设置;对于顺序文件,某些参数只能使用USE命令设置。USE参数特定于所选择的设备类型和特定的实现。

如果未指定USE参数列表,则Caché将使用设备的默认OPEN参数。设备的默认参数是可配置的。转到管理门户,选择“系统”,“配置”,“设备设置”,“设备”以显示当前设备列表。

image.png

对于所需的设备,单击“编辑”以显示其“打开参数:”选项。以与指定OPEN命令参数(包括括号在内)相同的方式指定此值。例如, ("AVL":0:2048)。

image.png

Positional Parameters

必须在参数列表中以固定顺序指定位置参数。可以省略位置参数(并接收默认值),但必须保留冒号以指示省略的位置参数的位置。尾随冒号不是必需的;多余的冒号将被忽略。各个参数及其位置高度依赖于设备。位置参数有两种类型:值和字母代码字符串。

值可以是整数(例如,记录大小)、字符串(例如,主机名),也可以是计算结果为值的变量或表达式。

字母代码字符串使用单个字母指定打开操作的设备特征。对于大多数设备,此字母代码字符串是位置参数之一。可以在字符串中指定任意数量的字母,并以任意顺序指定字母。字母代码不区分大小写。字母代码字符串用引号括起来;字母代码字符串中不允许有空格或其他标点符号(例外情况:KY后面可以跟以反斜杠分隔的名称:因此:K\Name\)。例如,打开顺序文件时,可以指定字母代码字符串“ANDFW”(附加到现有文件、创建新文件、删除文件、固定长度记录、写访问权限)。字母代码字符串参数的位置和单个字母的含义高度依赖于设备。

Keyword Parameters

关键字参数可以在参数列表中按任意顺序指定。参数列表可以完全由关键字参数组成,也可以混合包含位置参数和关键字参数。(通常,先指定位置参数(在其正确位置),然后指定关键字参数。)必须用冒号()分隔所有参数(位置或关键字)。关键字参数的参数列表一般语法如下:

USE device:(/KEYWORD1=value1:/KEYWORD2=value2:.../KEYWORDn=valuen):"mnespace"

各个参数及其位置高度依赖于设备。作为一般规则,可以使用位置参数或关键字参数指定相同的参数和值。可以使用/params关键字将字母代码字符串指定为关键字参数。

mnespace

包含此设备使用的设备控件助记符的助记符空间的名称。默认情况下,Caché提供两个助记空格:^%XMAG用于磁带设备,^%X364(兼容ANSI X3.64)用于所有其他设备和顺序文件。默认助记空格按设备类型分配。

转到管理门户,选择系统、配置、设备设置、IO设置。查看和编辑“文件”、“磁带”、“其他”或“终端助记空间”设置。

image.png

助记符空间是包含读和写命令使用的设备控制助记符的入口点的例程。读取和写入命令使用/mmemonic(Params)语法调用这些设备控制助记符。这些设备控制助记符执行诸如将光标移动到指定的屏幕位置或倒带等操作。

使用mnespace参数覆盖默认助记空间分配。指定包含与此设备一起使用的控件助记符入口点的ObjectScript例程。需要用双引号括起来。仅当计划将设备控件助记符与READWRITE命令一起使用时,才指定此选项。如果助记空间不存在,则Caché会发出<NOROUTINE>错误。

示例

在本例中,use命令将顺序文 "STUDENTS" 设置为当前设备,并设置文件指针,以便后续读取从文件开始处的偏移量256开始。

 USE "STUDENTS":256

注意

设备所有权

设备所有权是通过OPEN命令建立的。唯一的例外是主设备,它被分配给进程,通常是登录的终端。如果use命令中指定的设备不属于该进程,则Caché会发出<NOTOPEN>错误消息。

当前设备

当前设备是通过读写命令进行I/O操作的设备。读命令从当前设备获取输入,写命令将输出发送到当前设备。

Caché在$IO特殊变量中维护当前设备的ID。如果使用请求成功,Caché会将$IO设置为指定设备的ID。%Library.Device类的GetType()方法返回当前设备的设备类型。
terminal

DHC-APP>w ##class(%Library.Device).GetType()
1

studio

w ##class(%Library.Device).GetType()
9

主设备

特殊设备号0(零)指的是主设备。每个进程都有一个主要设备。Caché在$PRINCIPAL特殊变量中维护主体设备的ID。
terminal

DHC-APP>w $PRINCIPAL
|TRM|:|7864

studio

w $PRINCIPAL
|TCP|1972|16692

启动Caché时,主体设备会自动打开。最初,主体设备($PRINCIPAL)和当前设备($IO)相同。

发出USE命令后,当前设备($IO)通常是执行的上一个USE命令中命名的设备。

尽管许多进程可以具有相同的主体设备,但一次只能拥有一个。在某个进程成功向设备发出OPEN命令之后,其他任何进程都无法对该设备发出OPEN,直到第一个进程通过显式发出CLOSE命令,暂停或由于该用户结束会话来释放该设备。

尽管可以从终端提示中为除主设备之外的其他设备发出OPENUSE,但是Caché每次返回到>提示时,都会隐式发出USE 0。要继续使用非0的设备,必须在>提示符下输入的每一行中发出USE命令。

当执行以下任一操作时,主要设备将自动成为当前设备:

  • 登陆
  • 发出USE 0命令。
  • 在未设置错误陷阱时导致错误。
  • 关闭当前设备。
  • 返回终端提示。
  • 通过发出停止命令退出Caché。

USE 0表示对主体设备的OPEN命令。如果另一个进程拥有该设备,则该进程将在隐式OPEN上挂起,就像遇到任何OPEN一样。

尽管USE 0意味着主体设备的OPEN 0,但是对进程不拥有的任何其他设备发出USE命令(由于先前的OPEN命令)会产生<NOTOPEN>错误。

注意:虽然大多数Caché平台允许关闭主输入设备,但Cachéfor UNIX®不允许。因此,当另一个JOB的子JOB尝试在的登录终端上执行I/O时,它将挂起,直到注销Caché。此时,输出可能会出现,也可能不会出现。

在UNIX®r上使用空设备。

当向空设备发出OPENUSE命令(在UNIX®上为/ dev / null)时,Caché会将空设备视为虚拟设备。随后的READ命令立即返回一个空字符串(“”)。随后的WRITE命令立即返回成功的设备。没有读取或写入实际数据。在基于UNIX®的系统上,设备/ dev / null完全绕过UNIX®的openwriteread系统调用。

默认情况下,其他进程使用JOB命令启动的进程的主体设备为/ dev / null

例如,如果打开/ dev / null而不是在Caché内打开,则通过从UNIX®外壳将Caché输出重定向到/ dev / null,UNIX®系统调用的作用与对任何其他设备的作用相同。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352