是否可以在COBOL中捕获退格键或左右箭头键?

时间:2016-07-06 14:14:13

标签: keyboard cobol

我想使用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

1 个答案:

答案 0 :(得分:2)

对于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

BTW:“较新”的ACUCOBOL版本(读作“未完全过时”)支持ACCEPT OMITTED