前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caché 变量大全 $Y 变量

Caché 变量大全 $Y 变量

作者头像
用户7741497
发布2022-05-11 15:36:16
9321
发布2022-05-11 15:36:16
举报
文章被收录于专栏:hml_知识记录hml_知识记录

Caché 变量大全 $Y 变量

包含光标的当前垂直位置。

大纲

代码语言:javascript
复制
$Y

描述

$Y包含光标的当前垂直位置。当字符写入设备时,Caché会更新$Y以反映垂直光标位置。

输出的每个换行符(换行符)(ASCII 10)将$Y递增1。换页符(ASCII 12)将$Y重置为0。

$Y是16位无符号整数。当其值达到65536时,$Y换行为0。换句话说,如果$Y为65535,则下一个输出字符将其重置为0。

可以使用set命令为$X$Y赋值。例如,可以使用特殊的转义序列来改变物理游标位置,而不更新$X$Y的值。在这种情况下,在使用转义序列之后,使用set将正确的值分配给$X$Y

注意

NLS字符映射

国家语言支持(NLS)实用程序$X/$Y选项卡定义当前区域设置的$X$Y光标移动字符。

带终端I/O的$Y

下表显示了不同字符对$Y的影响。

Echoed Character

ASCII Code

Effect on $X

<FORM FEED>

12

$Y=0

<RETURN>

13

$Y=$Y

<LINE FEED>

10

$Y=$Y+1

<BACKSPACE>

8

$Y=$Y

<TAB>

9

$Y=$Y

任何可打印的ASCII字符

32-126

$Y=$Y

OPENUSE命令的S(ECRET)协议关闭回显。它还可以防止$Y在输入过程中被更改,因此它指示真实的光标位置。

更改垂直位置的WRITE $CHAR()也会更改$Y。更改垂直位置的WRITE*不会更改$Y。例如,WRITE$Y,$CHAR(10),$Y执行换行并递增$Y。相比之下,WRITE$Y,*10,$Y执行换行符,但不会递增$Y

因为WRITE*不会改变$Y,所以可以向终端发送一个控制序列,而$Y仍将反映真实的光标位置。由于某些控制序列确实会移动光标,因此可以使用SET命令直接设置$Y。例如,以下命令将光标移动到VT100型端子上的列20和行10,并相应地设置$X$Y

代码语言:javascript
复制
  SET dy=10,dx=20
  WRITE *27,*91,dy+1,*59,dx+1,*72
  SET $Y=dy,$X=dx

设备执行但不输出的ANSI标准控制序列(如转义序列)可能会在$X$Y值与真实光标位置之间产生差异。要避免此问题,请使用WRITE*语句并指定字符串中每个字符的ASCII值。例如,不使用以下代码:

代码语言:javascript
复制
WRITE $CHAR(27)_"[1m"

使用此等效表:

代码语言:javascript
复制
WRITE *27,*91,*49,*109

通常,在显式移动光标的任何转义序列之后,应更新$X$Y以反映实际光标位置。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caché 变量大全 $Y 变量
  • 大纲
  • 描述
  • 注意
    • NLS字符映射
      • 带终端I/O的$Y
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档