RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Странная ситуация с разименованием в Rexx


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Improver
To : Aleksey Tarasow
Subj : Странная ситуация с разименованием в Rexx

> Налетел на такую проблему:
> =====
> /**/
> !globalv = '!REXXDW. !global. ind. items.'
> !globalv=!globalv' Base. PumpBase. Sql. test.'
>
> call testproc 'test'
> say 'test.structure='test.structure
> say 'test.tabtype='test.tabtype
> say 'test.structure1='test.structure1
> say 'test.tabtype1='test.tabtype1
> exit
>
> testproc: Procedure Expose (!globalv)
> rc=Arg(1)
> Structure='test1'
> TabType='COM'
> call value rc'.Structure',Structure
> call value rc'.TabType',Tabtype
> call value rc'.Structure1',Structure
> call value rc'.TabType1',Tabtype
>
> say '*test.structure='test.structure
> say '*test.tabtype='test.tabtype
> say '*test.structure1='test.structure1
> say '*test.tabtype1='test.tabtype1
> return
> =====
> Возврат будет таким:
> *test.structure=test1
> *test.tabtype=COM
> *test.structure1=test1
> *test.tabtype1=COM
> test.structure=TEST.STRUCTURE
> test.tabtype=TEST.TABTYPE
> test.structure1=test1
> test.tabtype1=COM
>
>
> Кто кажет почему такая фигна, и как её обойти? Уже сутки мозги ломаю.

Ошибка в том, что в подпрограмме используешь локальные переменные "Structure" и "TabType", а потом их же используешь, как часть переменной "test.", при этом там, фактически, вместо "Structure" и "TabType" подставляются их значения. Это какая фишка REXX...

Wed 18 Feb 2015 20:42 Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox




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.