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

Is it possible to capture the backspace or left and right arrow keys in COBOL?

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

ACCEPT MY-DUMMY
    CONTROL KEY IN MY-KEYSTROKE

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

是否有任何方法可以仅捕获此 ACCEPT 的这些击键并防止主机使用它们?


除了已接受的答案:

可以将异常代码添加到异常键前面,以区分左右箭头击键。

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(引用自 ACUCOBOL runtime manual

By default, the left and right arrows act as edit keys, and the up and down arrows act as both edit and exception keys. You can change the behavior of the arrows at run time to switch between different modes if you need to. You do this via the SET ENVIRONMENT verb and the appropriate KEYSTROKE settings.

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

顺便说一句:"Newer" ACUCOBOL 版本(读作 "not completely outdated")支持 ACCEPT OMITTED