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

Откуда:
Сообщений: 2
Недавно начал разбираться с gt.m и столкнулся с проблемой.
Необходимо временно перенаправить вывод в какой-нибудь буфер, чтобы в случае возникновения ошибок в работе программы не отдавать неполный контент, а вывести только сообщение об ошибке

Исходный код:
test
 
;
 


test 
  
a,b,
  
a=1,b=2 
  
a,! 
  
b,! 
  
c,! 
  
q  
GTM>do test^test

>1
>2
>%GTM-E-UNDEF, Undefined local variable: c

Я изобрел такое решение
test2 
  

  
f="testFile" 
   
  
a,b,
  
a=1,b=2 
  
;s c=3   ; !!! 
  
s $ZTRAP="goto err" 
   
  
open f:(NEWERSION
  
use 
   
a,! 
   
b,! 
   
c,! 
  
close 
   
  
d,e,
  
open 
  
use 
   
read 
   
read 
   
read 
  
close 
   
  
d,! 
  
e,! 
  
g,!         
  

         
err 
  
s $ZTRAP="" 
  
close 
  
"Error" 
  
q
GTM>do test2^test
>Error

Если раскомментировать c=3   ; !!!

GTM>do test2^test
>1
>2
>3

Но я считаю, что использование файловой системы не самое корректное решение. Есть ли возможность перенаправить вывод не в файл, а в глобал, например, или в поток?
15 фев 16, 11:21    [18816924]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Куда можно перенаправить вывод?  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13116
osuss
Есть ли возможность перенаправить вывод не в файл, а в глобал, например, или в поток?

Не совсем перенаправление... Но все же.
test
 
WRITE("Test")
 
q
WRITE(Text)
 
^tmp($i(^tmp))=$g(Text)
 
q
28 апр 16, 14:45    [19117732]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Куда можно перенаправить вывод?  [new]
О-О-О
Member

Откуда: Нижний Новгород
Сообщений: 211
krvsa,

C gt.m не знаком, но в Каше есть две чудные фишки.

Set $ZTrap="OshibkaPoSMS" // Переход к метке/коду (Goto OshibkaPoSMS), если возникла ошибка.
и выполняется нужный код. Эту стоку помещаете в самом начале исполняемого кода.

А код куда переход будет во время ошибки в самом низу программы.



Есть вторая фишка $ETrap - выполняется команда, в случае возникновения ошибки.

Есть ещё $Ecode и $ZError, но я почему то их не использую (чем то они мне не угодили).
29 апр 16, 19:06    [19123427]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Куда можно перенаправить вывод?  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13116
О-О-О, только мне это зачем?

В ГТ.М есть такие же обработчики ошибок...
4 май 16, 08:10    [19131953]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Куда можно перенаправить вывод?  [new]
osuss
Member

Откуда:
Сообщений: 2
О-О-О

Тут суть не обработке ошибок, а в том, что нужно куда-то "складировать" весь вывод перед отправкой его клиенту/на экран/еще куда и показывать или весь вывод или только ошибку
10 май 16, 14:54    [19153424]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить