использование REXX для доступа к дискам vm370

REXX для меня совершенно новый, пока нравится. Я использую SixPack, работающий на Hercules. 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

person Jonathan Engwall    schedule 06.12.2019    source источник
comment
Нужно запустить, и показать, диагностику. Сделайте это с помощью ключевого слова Trace (см. руководство rexx)   -  person NicC    schedule 07.12.2019


Ответы (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, это дало бы вам сообщение об ошибке, что намного лучше. Я ВСЕГДА добавляю это в свой код.

person Robert Schreiber    schedule 06.06.2020
comment
Привет боб! Давно не виделись! - person Ross Patterson; 10.10.2020