powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение списка переменных внутри процесса
5 сообщений из 5, страница 1 из 1
Получение списка переменных внутри процесса
    #37652492
Игорь-Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Не подскажете ли каким образом возможно получить строку с перечисленными именами и значениями существующих переменных внутри текущего процесса.
Написал что-то следующее, но оно выполняется только для процессов, где PID'=$j, в случае, когда d Rset.Execute($j) , как указано ниже, возвращает ERROR=<NOJOB> :
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
testQuery()
	n t,Rset,a
	s t("nameSpace")=$znspace,a=""	 	
	s Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:VariableByPid")
	d Rset.Execute($j)  w $test,!
	while Rset.%Next(){s a=a_Rset.GetData(1)_"="_Rset.GetData(2)_$c(10)}	
	d Rset.Close()
	k Rset,t
	q a


Необходимо для отлова run-time error в блоке, который был присвоен переменной $ZT. Узлу глобала будет присвоена строка с вышеказанной информацией.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
      #define defaultNameSpace "NameSpace"
      #define errLog ^|$$$defaultNameSpace|ImportErrorsGlobal
      .....
      s $zt="errTask"
      ..... 
errTask	
#; обработка ошибки	     
      s err=$i($$$errLog),$$$errLog(err)=$ze,$$$errLog(err,"dateANDtime")=$zd(+$h)_" "_$zt($piece($h,",",2)),
      $$$errLog(err,"StackLevel")=$st,$$$errLog(err,"Variables")=$$testQuery
      q



И вообще, подскажите, возможно я "забиваю гвозди микроскопом" и существует что-то более лаконичное и красивое для решения вопроса?
...
Рейтинг: 0 / 0
Получение списка переменных внутри процесса
    #37652506
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да это действительно похоже на забивание гвоздей микросокопом
вот так можно получить
Код: sql
1.
2.
3.
4.
5.
6.
7.
s var="" 
f { 
s var=$o(@var) 
q:var=""  
; var - имя переменной
; @var - значение этой переменной
}
...
Рейтинг: 0 / 0
Получение списка переменных внутри процесса
    #37652572
Игорь-Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я попробую уточнить: необходимо сохранить результат команды zw в переменную/узел глобала.

При использовании локальных индексированных переменных вида
Код: vbnet
1.
t("nameSpace")

и предложенного Вами варианта возникает ошибка вида:
<UNDEFINED>testQuery+4^Test *t
Возможно бежать $o и по индексу локальной переменной, но по-моему как-то это усложняет задачу, возможны несколько уровней.

Вот тестовая программка, которая выдает ошибку:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
testQuery()
	n t,a	
	s t("nameSpace")=$znspace,a=""	 	
	s var=""
	zw
	f {s var=$o(@var)  q:var=""  s a=a_var_"="_@var_$c(10)}
	q a	
...
Рейтинг: 0 / 0
Получение списка переменных внутри процесса
    #37652598
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь-Р.,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
testQuery() 
	n t,a	
	s t("nameSpace")=$znspace,a=""	 	
	zw
	w !,!
	
	s ^||var=""
	f 
	{
		s ^||var=$o(@$g(^||var))  q:^||var="" 
		w:$d(@^||var)#10=1 ^||var,"=",@^||var,!
		continue:$d(@^||var)\10=0
		s ^||var2=^||var
		for
		{
			s ^||var2=$q(@^||var2) q:^||var2=""
			w:$d(@^||var2)#10=1 ^||var2,"=",@^||var2,!
		}
	}
...
Рейтинг: 0 / 0
Получение списка переменных внутри процесса
    #37652661
Игорь-Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Получение списка переменных внутри процесса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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