Rexx - использование квадратных кронштейнов
Вопрос
Я вполне новый для Rexx, действительно основные вещи здесь, я хочу быстро получить последний элемент массива.
Открытый объект Rexx 4.2.0 для Windows:
test.0=2
test.1="foo"
test.2="bar"
say test.[test.0]
.
==> Вывод, как и хотел:
bar
.
Мое легкое предположение - это то, что интерпретатор Rexx Open Object Rexx находится на работе.Квадратные скобки не могут быть использованы с Rexx на Z / OS.
1-е вещи, которые пришли на мой взгляд (не RTFM):
say test.test.0
say test.(test.0)
.
==> Выход не хорошо:
TEST.TEST.0
5 *-* say test.(test.0)
Error 16 running Test.REX line 5: Label not found
Error 16.1: Label "SYNTAX" not found
.
Есть ли другие использовать квадратные скобки? Почему происходит от C / Java / Python, я собираюсь проверить.
Не могу найти больше информации о квадратных кронштейнах Использование в Rexx, чем это: # хвост ReginaldВыражение
Так что под z / OS на данный момент я застрял:
temp=test.0
say test.temp
. Решение
Вы уже нашли ответ на ваш вопрос.
единственный путь под Mainframe Rexx (Z / OS, Z / VSE, Z / VM), как вы закодированы выше:
.temp=test.0 say test.temp
Лучшая документация для понимания того, что делает интерпретатор REXX, можно найти в ссылке Z / OS TSO / E Rexx под Составные символы (ссылка v2.1). Он описывает, почему Test.test.0 не будет работать, из-за того, как переводчик обрабатывает линию; В этом случае он ищет стволовый тест.
Обратите внимание, что вы можете кодировать
test.test.0 = 0
.
, и у вас будет действительный Stem Test.test.0 (хотя и, вероятно, бесполезно в большинстве случаев).
Следующая тема в ссылке обсуждается переменные стебля, которые также имеют много полезной информации.
Я настоятельно рекомендую прочитать как Z / OS TSO / E REXX Справочник и
Другие советы
Другое чистое (не объект) rexx альтернативы:
interpret "say test." || test.0
.
или
say value("test." || test.0)
. Переводчик Rexx по умолчанию на z / os - классический Rexx, а не oorexx.Ooorexx не был портирован в z / os.
Имейте в виду, что (в Z / OS, по крайней мере) переменной «0,0» не обновляется автоматически.E.g.:
list.1 = 17
list.2 = 12
say 'List.0 is' list.0
.
даст «список,0», что является значением по умолчанию (имя переменной) для инициализированной переменной.