Rexx - использование квадратных кронштейнов

StackOverflow https://stackoverflow.com//questions/25057337

  •  21-12-2019
  •  | 
  •  

Вопрос

Я вполне новый для 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 Справочник и Руководство пользователя Z / OS TSO / E REXX (как ссылки v2.1).


Другие советы

Другое чистое (не объект) 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», что является значением по умолчанию (имя переменной) для инициализированной переменной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top