Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 [gt.m] Видимость переменной  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1936
Добрый день.

Никак не могу добиваться, видимость одной ЛОКАЛЬНОЙ
переменной в любой точке выполнение рутины.
При запуске я должен получать в нее какое-то значение ,
которая должна сохранятся неизменной.

> d log

log   ;; 
  s SYSGLD=$ZG ;здесь получаю
listen
 ; тело рутины
 ....
 d label
label
 s newvar=SYSGLD ; здесь уже ее нету

Спасибо.
10 мар 17, 11:12    [20280665]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12794
Valeriu, "пропасть" переменная может только в двух случаях:
- ее "заньюшили"
- ее "кильнули"
Третьего не дано...
10 мар 17, 11:32    [20280767]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12794
Valeriu, твой "пример" у меня отлично работает...

tmpKSA ;;Тест;;[ 10.03.2017 11:37 ]
log   ;; 
	s SYSGLD=$ZG ;здесь получаю
listen
	; тело рутины
	d label
	q
label
	s newvar=SYSGLD 
	w !,newvar
	q
10 мар 17, 11:38    [20280810]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 699
Valeriu,
Я бы для транзитных переменных использовал % префикс.
s %SYSGLD=$ZG ;здесь получаю
10 мар 17, 11:47    [20280867]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1936
Прошу прощения, это был просто пример не проверенный ...
Примерно так:
FCGIjobs ;;New Routine created and compiled tools "WEB-MEditor for GT.M" 
log   ;; GT.M native socket server
 s SYSGLD=$ZG
 i $d(SYSGLD) s ^xx($h,"zerro")=SYSGLD
listen
 i $d(SYSGLD) s ^xx($h,"first")=SYSGLD
 k (tcpdev,nr)
 s timeo=30
 s port=9999
 s nr=0
 s ^fcgilog(1,"knownserver")=port_"`"_$j
 s tcpdev="SCK$"_$S
 i $d(SYSGLD) s ^xx($h,"second")=SYSGLD ;здесь уже пусто ..
 .....

Может из за того что дальше открывается сокет ? ...
Я честно, не знаю где копать.
10 мар 17, 12:29    [20281170]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12794
Valeriu, твой случай "второй" из моего перечня.
tmpKSA ;;Тест;;[ 10.03.2017 13:27 ]
log   ;;
	;здесь получаю
	s SYSGLD=$ZG 
listen
	; тело рутины
	k (tcpdev,nr)
	; Тут ей уже капец!!!
	d label
	q
label
	s newvar=SYSGLD
	w !,newvar
	q
10 мар 17, 13:29    [20281641]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 699
krvsa,
Нужно пояснить человеку, что такая конструкция удаляет все локальные переменные, кроме взятых в скобки.
10 мар 17, 13:30    [20281655]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12794
AlexKB
Нужно пояснить человеку, что такая конструкция удаляет все локальные переменные, кроме взятых в скобки.

Так это кагбэ в любой документации написано...
Ведь он для чего-то тот "исключающий килл" там написал.
10 мар 17, 13:33    [20281685]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 699
krvsa,
Лично я вижу главное назначение форума помочь человеку, тонко и деликатно, а не закидывать шапками и резкими словами, выпячивая свое Я. Кому то это может быть и обидным...
10 мар 17, 13:37    [20281719]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12794
AlexKB
а не закидывать шапками и резкими словами, выпячивая свое Я

Ух, йож твайю клёшь...

Это ты все увидел в моих буквах?
10 мар 17, 13:41    [20281741]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3070
Блог
AlexKB
krvsa,
Лично я вижу главное назначение форума помочь человеку, тонко и деликатно, а не закидывать шапками и резкими словами, выпячивая свое Я. Кому то это может быть и обидным...
Можете привести пример шапкозакидательства со стороны krvsa и уточнить какие именно его слова Вы сочли за резкие?
10 мар 17, 14:18    [20282008]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1936
Спасибо,
я как-то не задумался...
Век живи - век учись.
10 мар 17, 15:19    [20282425]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Видимость переменной  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1406
   ...
   k (tcpdev,nr)
   ...

Эта конструкция вообще-то вредная. В описании некоторых классов Cache (например, %SYSTEM.WorkMgr) встречается прямой запрет на неё, т.к. она портит локальную среду, кем-то для вас организованную (в данном примере - work manager'ом).
Хотите "локализоваться" - вставляйте:
   ...
   new var1,var2,...,varN
   ...

или:
   ...
   new var1 set var1="начальное значение 1"
   new var2 set var2="начальное значение 2"
   ...

Сам не раз наступал на эти грабли: бывало, вставишь `Kill (кроме)`, "пиша" что-то по-быстрому, типа отладочного кода, а потом удивляешься UNDEF'ам. Но вроде отучился.
10 мар 17, 17:07    [20282998]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить