RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > > Я боюсь другого, так как я не по сути не контролирую содержание ряда переменных (просто использую то что в них есть), может наступить ситуация когда переменная содержит текст в виде имени самой себя или имя другой критичной переменной (или ещё чего нибудь критичного). Вот тогда способна наступить хрень. Пока рассчитываю избежать коллапса за счет написания присвоения вида value rc'.Structure'. Но вопрос в целом требует отдельной проработки. > > > > > > > Ну, вообще-то, всем переменным изначально (или после drop) присваивается значение, равное её имени, и это ничем страшным не грозит. И поведение переменных "с точкой" тоже вполне логично -- это сделано для удобства их использования в циклах, как некий аналог таблиц. > > > > > > Кроме того, мне кажется, что передавать в подпрограммы имена переменных в качестве аргумента -- как-то не по-рексовски... Нет, в REXX так тоже можно, но вот зачем такой огород городить? Лучше уж передавать значения и использовать по-максимуму локальные переменные, тогда будет легче локализовать ошибки, и коллапса не будет. Применительно к твоему примеру в начале ветки, я бы сделал как-то так: > > > ======= > > > /**/ > > > call testproc > > > parse value RESULT with test.structure ',' test.tabtype ',' test.structure1 ',' test.tabtype1 > > > say 'test.structure='test.structure > > > say 'test.tabtype='test.tabtype > > > say 'test.structure1='test.structure1 > > > say 'test.tabtype1='test.tabtype1 > > > exit > > > > > > testproc: Procedure > > > StructureX='test1' > > > TabTypeX='COM' > > > t.Structure = StructureX > > > t.TabType = TabtypeX > > > t.Structure1 = StructureX > > > t.TabType1 = TabtypeX > > > return t.structure','t.tabtype','t.structure1','t.tabtype1 > > > ======= > > > Кстати, использовать переменную RC в виде "value rc'.Structure'" и т.п. я бы тоже не рекомендовал, т.к. в неё в REXX записывается код возврата после вызова внешних программ, можешь потом получить ещё одну неожиданную багу... > > > > Идея жизни способна. НО с разбором возврата то же проблема, так как не факт что запятые будут только разделяющие, а прогонять каждый возврат через процедуру разбора (которую не так давно обсуждали) большие накладные расходы. > Вместо запятых можно использовать любой символ, какой гарантированно не встретится в возвращаемых значениях, для parse это не проблема... Ну да ладно, может у тебя с числом в начале переменных лучше выйдет. > > > Продолжу ответ в следующем письме, так как он общий. > ок...
__, _,_ _, __, ___,
|_) | | | |_ ` /
| \ | | | , | /
~ ~ `~' ~~~ ~~~ ~~~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.