Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обращение к глобалу по расширенной ссылке / 11 сообщений из 11, страница 1 из 1
05.02.2021, 15:32
    #40042183
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Добрый день.
Имеется код, где anul - это год, exp - область, "PUTL"_anul - название глобала
Код: javascript
1.
2.
3.
4.
 s anul=2020,exp="EXPU",PUTLgod="PUTL"_anul
 f  s luna=$o(^|exp|PUTLgod(luna)) q:luna=""  d
 .
 .................

Как можно обращаться к глобалу по расширенной ссылке в этом случае ???

В случае когда простое обращение(без раширенной в свою область) т.е. так:
Код: javascript
1.
2.
s PUTLgod="^PUTL"_anul 
f  s luna=$o(@PUTLgod@(luna)) q:luna=""  d


Это работает.
Спасибо
...
Рейтинг: 0 / 0
05.02.2021, 16:21
    #40042222
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Спасибо. Вроде решилось
Код: javascript
1.
2.
3.
4.
5.
6.
 s anul=2020
 s exp="EXPU",PUTLgod="PUTL"_anul
 s perem="^|exp|"_PUTLgod
 f  s luna=$o(@perem@(luna)) q:luna=""  d
 . f  s data=$o(@perem@(luna,data)) q:data=""  d
..............
...
Рейтинг: 0 / 0
05.02.2021, 16:38
    #40042232
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Хотя меня смущает это:
Код: javascript
1.
s perem="^|exp|"

Если честно, я не допонимаю как это работает так ...
Т.е. exp это переменная, а выше в кавычках - это строка ..
...
Рейтинг: 0 / 0
05.02.2021, 21:48
    #40042379
П.С.М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Valeriu,
Почитайте про оператор косвенности. Хотя бы у той же ИС в документации к Cache/IRIS. Там у них и примеры есть с описанием.
ЗЫ ссылку и примеры не могу привести, пишу с моб.гаджета, не удобно мне экр.клавиатурой пользоваться
...
Рейтинг: 0 / 0
06.02.2021, 11:56
    #40042544
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Valeriu
Т.е. exp это переменная, а выше в кавычках - это строка
Просто синтаксис расширенной глобальной ссылки допускает указывать между | переменную, которой присвоено значение окружения; это может быть область (e.g. "EXPU") или предполагаемая область ("^^полный путь к БД"), есть ещё ряд вариантов.
...
Рейтинг: 0 / 0
08.02.2021, 08:58
    #40043143
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Valeriu
Хотя меня смущает это:
Код: javascript
1.
s perem="^|exp|"

Если честно, я не допонимаю как это работает так ...
Т.е. exp это переменная, а выше в кавычках - это строка ..

Она и там переменная...

Если смущает - тогда пиши так

Код: javascript
1.
2.
 s exp="EXPU",PUTLgod="PUTL"_anul
 s perem="^|"_exp_"|"_PUTLgod


Думаю так будет еще удобнее, т.к. не нужно будет далее следить за значением переменной exp ...
...
Рейтинг: 0 / 0
08.02.2021, 09:03
    #40043144
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Valeriu
Хотя меня смущает это:
Код: javascript
1.
s perem="^|exp|"

Если честно, я не допонимаю как это работает так ...

Вот не большая иллюстрация...

Код: javascript
1.
2.
3.
TMP>s a=1,b=2,c="a+b"
TMP>w @c
3
...
Рейтинг: 0 / 0
08.02.2021, 14:32
    #40043286
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Код: sql
1.
s perem="^|"_exp_"|"_PUTLgod


Оставлять ли в ^|окружении| переменную или заменять её значением, дело вкуса, но написанное выше просто неверно: выражение разрешится в ^|EXPU|PUTLgod, и что, у нас есть переменная EXPU? Будет <UNDEFINED>.

Поэтому:
Код: sql
1.
s perem="^|"""_exp_"""|"_PUTLgod
...
Рейтинг: 0 / 0
08.02.2021, 15:11
    #40043317
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Спасибо всем за отзывы.
Примерно решилось так.
Имею 3 области откуда собираю данные по расширенной ссылке:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
test(string) ;
 s $ztrap="error"
 s (luna,data,ruta,graf,subd,schimb,tab,n16,n30,n31,n32,n33,n34,n35,n36,n37,c16,c30,c31,c32,c33,c34,c35,c36,c37)=""
 k RT16,RT30,RT31,RT32,RT33,RT34,RT35,RT36,RT37
 s god=string,anulcurent=$p(^UST,"\",2)
 i god=anulcurent s PUTLgod="PUTL"
 i god'=anulcurent s PUTLgod="PUTL"_god
 f exp="EXPU","EXPD","EXPT" d
 . s perem="^|exp|"_PUTLgod,zs3="^|exp|"_"ZS3"
 . f  s luna=$o(@perem@(luna)) q:luna=""  d
 . . f  s data=$o(@perem@(luna,data)) q:data=""  d
 . . . f  s ruta=$o(@perem@(luna,data,ruta)) q:ruta=""  d 
 . . . . f  s graf=$o(@perem@(luna,data,ruta,graf)) q:graf=""  d 
 . . . . . f  s subd=$o(@perem@(luna,data,ruta,graf,subd)) q:subd=""  d
 . . . . . . f  s schimb=$o(@perem@(luna,data,ruta,graf,subd,schimb)) q:schimb=""  d
 . . . . . . . f  s tab=$o(@perem@(luna,data,ruta,graf,subd,schimb,tab)) q:tab=""  d
 . . . . . . . . s sod=@perem@(luna,data,ruta,graf,subd,schimb,tab)
 . . . . . . . . i $p(@zs3@(subd),"\",5)=1 d
........................................................................ etc.etc.etc.
 q
 ;;
error
 s err=$ze
 i err'="" d
 . s ^errAUTONOM($h)=$ze
 s %fcgi("o","stdout")=err
 s %fcgi("o","header","Content-Type")="text/html"
 q
 ;; 

...
Рейтинг: 0 / 0
18.02.2021, 15:43
    #40046748
kalin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
Valeriu,
Ужас :) Энтузиасты еще не перевелись писать такой код.
...
Рейтинг: 0 / 0
20.02.2021, 10:21
    #40047444
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обращение к глобалу по расширенной ссылке
kalin,
Этот код(серверная логика) уже десятилетием работает в разных
М-системах: MSM, GT.M, Cache(да и в остальных я думаю работал бы)
и в разных вариантах на клиентах (терминалы, десктоп) без переписывания кода заметьте !
Сейчас пишутся маленькие модули на М для получения и отправки данных
ВЕБ клиенту не изменяя уже ранее написанный основной код.
Вот и все, никакой ужас... ;)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обращение к глобалу по расширенной ссылке / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]