【问题标题】:OpenVMS - Trying to create an action for invalid selectionOpenVMS - 尝试为无效选择创建操作
【发布时间】:2019-12-03 18:42:00
【问题描述】:

我正在尝试编写一个简单的 .com 文件,让用户可以选择从选择列表中打开文件。当您选择数字时,它会很好地打开文件,但如果您选择了无效的选择,它应该让您返回选择列表。那是行不通的。

我一直在查看 OpenVMS 用户手册,但无法解决这个问题。

$! CHOICE.COM
$! Test file to offer choice to open one of two files
$!
$ ON WARING THEN EXIT
$ HOME:
$ WRITE SYS$OUTPUT “”
$ WRITE SYS$OUTPUT “1 – FILEA”
$ WRITE SYS$OUTPUT “2 – FILEZ”
$ WRITE SYS$OUTPUT “”
$ WRITE SYS$OUTPUT “”
$ INQUIRE P1 “Enter the number of the file to open or type X to exit:”
$ IF P1.EQS.”1”
$              THEN
$                   @FILEA.COM
$                    ENDIF
$ IF P1.EQS.”2”
$              THEN
$                   @FILEZ.COM
$                    ENDIF
$ IF P1.EQS.”X”
$              THEN
$                   EXIT
$ IF P1.EQS.””
$              THEN
$                   WRITE SYS$OUTPUT “Invalid Choice – try again!”
$                   WAIT 0:0:5
$                   GOTO HOME
$   ENDIF
$ !

我希望用户返回主页的选择无效:

【问题讨论】:

  • ON WARING?我不认为 DCL 支持搅拌机。您唯一的错误选择是""。如果您将代码更改为使用if/then/else 来检查输入,那么最终的else 将是您无法处理的所有选择。
  • 另外,每个if 块都可以在完成时转移控制权,例如$ goto Done 带有标签 $ Done: exit 在文件末尾添加。或者 $ goto Home 如果合适的话。无论哪种情况,最终的if 都会消失。如果你最终放弃了所有好的选择,那么剩下的就是坏的。

标签: openvms


【解决方案1】:

好的,在程序员的帮助下,我有答案了。

$! CHOICE.COM
$! Test file to offer choice to open one of two files
$!
$ ON WARING THEN EXIT
$ HOME:
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT "1 - FILEA"
$ WRITE SYS$OUTPUT "2 - FILEZ"
$ WRITE SYS$OUTPUT ""
$ WRITE SYS$OUTPUT ""
$ INQUIRE P1 "Enter the number of the file to open or type X to exit:"
$ IF P1.EQS."1"
$ THEN
$   @FILEA
$   EXIT
$ ENDIF
$ IF P1.EQS."2"
$ THEN
$   @FILEZ
$   EXIT
$ ENDIF
$ IF P1.EQS."X" THEN EXIT
$ WRITE SYS$OUTPUT "Invalid Choice - try again!"
$ WAIT 0:0:5
$ GOTO HOME

【讨论】:

  • 旁白:最好的做法是单次退出,即在过程末尾添加$ Done: exit,并在其中包含所有代码goto。这样,您可以稍后添加代码来处理清理等,而无需尝试寻找并理解代码中的每个exit。这不是一个硬性规定,例如在终止之前记录一些信息的$ Failed: 退出可能是有意义的。 WARINGWARNING?
猜你喜欢
  • 2021-06-03
  • 2013-09-25
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 2014-07-20
  • 2022-09-29
  • 1970-01-01
  • 2017-06-16
相关资源
最近更新 更多