【问题标题】:Is it possible to capture the backspace or left and right arrow keys in COBOL?是否可以在 COBOL 中捕获退格键或左右箭头键?
【发布时间】:2016-07-11 16:57:34
【问题描述】:

我想使用ACCEPT 语句捕获箭头键击。我现在有这个:

ACCEPT MY-DUMMY
    CONTROL KEY IN MY-KEYSTROKE

这适用于向上和向下箭头。但是,对于左右箭头,它不起作用,因为运行时使用这些键在输入字段中导航。

有没有什么方法可以只为这个ACCEPT 捕获这些击键,并防止主机消耗它们?

  • 编译器:ACUCOBOL-GT(我还不知道哪个版本或发行版)
  • 操作系统:Windows 10

除了接受的答案:

可以在异常键前面加上异常代码,以区分左右箭头键击。

SET ENVIRONMENT "KEYSTROKE" TO "EXCEPTION=054,Left kl"
SET ENVIRONMENT "KEYSTROKE" TO "EXCEPTION=055,Right kr"
SET ENVIRONMENT "KEYSTROKE" TO "EXCEPTION=201,BkSp ZB"

ACCEPT DUMMY
    CONTROL KEY IN MY-KEYSTROKE
EVALUATE (MY-KEYSTROKE)
    WHEN 054
        PERFORM DO-SOMETHING
END-EVALUATE

【问题讨论】:

  • 您使用的是哪个编译器和版本?哪个操作系统?
  • 回答:是的,它是......如果你想知道怎么做......它在很大程度上取决于使用的编译器,你必须走不同的路径。 ACUCOBOL 让您设置映射到功能键的击键,如果您使用光标值,您也应该将它们取回。其他供应商有不同的扩展。如果您只需要一个按键并且可以访问 C 库,例如 CALL 'getch'(如果系统使用 curses)甚至可能是更好的选择。
  • 我已将异常键添加到答案中。感谢您的更新。

标签: keyboard cobol


【解决方案1】:

对于 ACUCOBOL(引用自 ACUCOBOL runtime manual

默认情况下,左右箭头作为编辑键,上下箭头同时作为编辑键和例外键。如果需要,您可以在运行时更改箭头的行为以在不同模式之间切换。您可以通过 SET ENVIRONMENT 动词和适当的 KEYSTROKE 设置来执行此操作。

SET ENVIRONMENT "KEYSTROKE" TO "EXCEPTION=055,Left kl"
SET ENVIRONMENT "KEYSTROKE" TO "EXCEPTION=056,Right kr"
ACCEPT OMITTED   CONTROL KEY IN MY-KEYSTROKE
SET ENVIRONMENT "KEYSTROKE" TO "EDIT=Left kl"
SET ENVIRONMENT "KEYSTROKE" TO "EDIT=Right kr"

另见ACUCOBOL User Guide, key table

顺便说一句:“较新”的 ACUCOBOL 版本(读作“未完全过时”)支持 ACCEPT OMITTED

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多