Я просто хочу добавить немного больше к ответу, данному Deuian. Я согласен, базовые переменные REXX - это ответ.
Простые переменные REXX по умолчанию имеют собственное имя. Например:
/* REXX */
SAY X
будет печатать «X», пока X
не будет присвоено другое значение:
/* REXX */
X = 'A'
SAY X
напечатает «А».
Пока нет большого сюрприза. Стеблевые переменные немного отличаются. Головка стебля никогда не оценивается, оценивается только бит после начальной точки.
Проиллюстрировать:
/* REXX */
X. = 'empty' /* all unassigned stem values take on this value */
A. = 'nil'
B = 'A' /* simple variable B is assigned value A */
X = 'A' /* simple variable X is assigned value A */
SAY X.A /* prints: empty */
X.A = 'hello' /* Stem X. associates value of A with 'hello' */
SAY X.A /* prints: hello */
SAY X.B /* prints: hello */
SAY X.X /* prints: hello */
Обратите внимание, что имена стволов X
и A
не оцениваются, однако переменные X
и A
, стоящие после них, вычисляются. Некоторые люди находят это немного запутанным — подумайте об этом некоторое время, и это обретет смысл.
Версия REXX для Z/OS не предоставляет естественного способа перебора основной переменной. Самый простой способ сделать это — создать свой собственный индекс. Например:
/* REXX */
X. = ''
DO I = 1 TO 10
J = RANDOM(100, 500) /* Random # 100..500 */
X.INDEX = X.INDEX J /* concatinate J's with 1 space between */
X.J = 'was picked' /* Associate 'was picked' with whatever J evalauates to */
END
DO I = 1 TO WORDS(X.INDEX) /* Number of blank delimited 'words' */
J = WORD(X.INDEX, I) /* Extract 1 'word' at a time */
SAY J X.J /* Print 'word' and its associated value */
END
Довольно тривиально, но иллюстрирует идею. Просто убедитесь, что INDEX
(или любое другое имя, которое вы выберете) для хранения имен индексации никогда не всплывает как ассоциативное значение! Если это возможно, используйте другую переменную для хранения индекса.
Последняя точка. Обратите внимание, что каждый из моих примеров начинается с /* REXX */
, возможно, вы обнаружите, что это должна быть первая строка ваших REXX-программ под Z/OS.
person
NealB
schedule
04.11.2010