【问题标题】:using REXX to access vm370 disks使用 REXX 访问 vm370 磁盘
【发布时间】:2020-06-07 03:32:56
【问题描述】:

REXX 对我来说是全新的,到目前为止我很喜欢。我正在使用在 Hercules 上运行的 SixPack。 VM/370 是一个不错的环境,但我正在努力使其用户友好;为所有可行的东西填写脚本,以免重复我的步骤。 下面附加的文件是为了在 ISFP 中搜索而编写的,而不是我希望它访问磁盘。它搜索指定的文件。 我不知道重写 REXX 程序。它停在奇怪的地方,说“找到”这个或那个。请给点建议。

/* REXX */
ARG PROGNAME
PROGNAME = STRIP(PROGNAME)
ACCESS_TEMPLATE='A2 Y U'
USE VAR ACCESS_TEMPLATE A2 Y U      /* NOT PARSE */
VAR1 = A2
VAR2 = Y
VAR3 = U
IF PROGNAME == '' THEN DO
  SAY 'ENTER MEMBER NAME'
  FULL PROGNAME
  PROGNAME = STRIP(PROGNAME)
  IF PROGNAME == '' THEN DO
    SAY NO MEMBER ENTERED. EXITING THE PROGRAM
    EXIT
  END
END
SEARCH.1 = PROD1.LIB
SEARCH.2 = PROD2.LIB
SEARCH.3 = PROD3.LIB
CNT = 3
FND = 'N'
DO I = 1 TO CNT
  ACCESS 'VAR1' 'VAR2' 'VAR3'
  LIB = LIST.I(PROGNAME)
  IF SYSDSN('LIB') == OK THEN DO
    FND = 'Y'
    TYPE('LIB')
  END
END
IF FND == 'N'THEN DO
  SAY MEMBERS NOT FOUND IN ANY LIBRARIES
  SAY PLEASE CHECK THE MEMBER ENTERED
  EXIT
END

【问题讨论】:

  • 您需要运行并显示诊断程序。使用 Trace 关键字执行此操作(请参阅 rexx 手册)

标签: rexx


【解决方案1】:

这有点晚了,但对新手 REXX 程序员来说是个好建议...

就在你的程序顶部附近放这个:

SIGNAL ON NOVALUE

然后在每一个尽头...

NOVALUE: SAY 'NOVALUE error at line' SIGL
         exit 4

为什么? REXX 有一个“特性”,即每个未定义的变量都以大写形式解析为自己的名称,如下所示:

myvar1='hi there'
mayvar2=', joe'
say myvar1||myvar2

你可能想说的是 “你好,乔” 而是得到了 '你好MYVAR2'

如果您有 SIGNAL ON NOVALUE,它会给您一个错误消息,这会好很多。我总是把它放到我的代码中。

【讨论】:

  • 嗨,鲍勃!好久不见!
猜你喜欢
  • 2015-01-19
  • 2016-12-10
  • 2010-10-20
  • 2011-05-23
  • 2014-04-05
  • 1970-01-01
  • 2017-05-02
  • 2011-12-07
  • 2021-08-09
相关资源
最近更新 更多