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

Откуда: г Волжский
Сообщений: 13246
Как правильно использовать $ETRAP для получения нужного эффекта?
Вот программка
tmp 
  
A
  
!,"End"
  
q
A
  
s $et="d ERROR"
  
B
  
!,"End A"
  
q
B
  
C
  
!,"End B"
  
q
C
  
D
  
!,"End C"
  
q
D
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec
  s $ec
=""
  
q
При запуске получаю вывод на экран

,M9,                                                                            
End C
End B
End A
End

А хотелось бы получить

,M9,                                                                            
End A
End

Иными словами, как использовать обработчик ошибок для возврата на нужный мне уровень?
В данном случае на уровень процедуры A.
16 ноя 15, 11:13    [18422482]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Фух... Экспериментальным путем получил желаемое
tmp 
  
n $et
  s $et
="d ERROR"
  
A
  
!,"End"
  
q
A
  
B
  
!,"End A"
  
q
B
  
C
  
!,"End B"
  
q
C
  
n $et
  s $et
=""
  
D
  
!,"End C"
  
q
D
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec
  s $ec
=""
  
q
16 ноя 15, 11:27    [18422589]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Т.е. получается следующее:
- Объявлять $etrap можно хоть в начале программы
- "сбрасывать" $etrap нужно на два уровня ниже уровня желаемого возврата
16 ноя 15, 11:30    [18422606]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2717
это просто непонимание $etrap, в эту переменную просто нужно установить команду которая будет выполнена при срабатывании ошибки и все, и просто прерывается текущий стек.
есть еще $ztrap в данном случае выполнение происходит на уровне где переменная была объявлена. т.е. если в первом примере поставить
s $zt="ERROR"
то результат уже будет иной
,M9,
End
тогда как, с $ztrap можно получить результат как с $etrap, уточнив что ошибку нужно обработать в месте ее срабатывания таким образом
s $zt="*ERROR"
и результат будет аналогичен как был с $etrap
,M9,
End C
End B
End A
End
16 ноя 15, 11:58    [18422824]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
DAiMor
это просто непонимание $etrap

Ты так много написал, а пример так и не сделал... Каков твой вариант для нужного мне вывода?
16 ноя 15, 13:07    [18423223]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2717
krvsa
DAiMor
это просто непонимание $etrap

Ты так много написал, а пример так и не сделал... Каков твой вариант для нужного мне вывода?

если нужно установить обработчик ошибок на том же уровне то try catch
либо нужно устанваливать ниже по стеку
tmp 
  
do A
  
write !,"End"
  
quit
A
  
try {
    
do B
  
catch err {
    
write !,$ecode
    set $ecode
=""
  
}
  
write !,"End A"
  
quit
B
  
do C
  
write !,"End B"
  
quit
C
  
do D
  
write !,"End C"
  
quit
D
  
write 1/0
  
write !,"End D"
  
quit
даст такой результат

,M9,
End A
End
16 ноя 15, 13:13    [18423279]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
DAiMor
если нужно установить обработчик ошибок на том же уровне то try catch

Я разве про него спрашивал?
16 ноя 15, 13:39    [18423493]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2717
krvsa
DAiMor
если нужно установить обработчик ошибок на том же уровне то try catch

Я разве про него спрашивал?
Так если может задача стояла об установке обработчика на конкретном уровне, и так чтобы управление вернулось на тот же уровень, то только try catch, $etrap и $ztrap так эту задачу не решит, его нужно ниже уровнем опускать. Ошибка произошла и выполнение на данном уровне стека не может быть продолжена. а вот Try catch может, обрамить ошибку на одном уровне стека, и тут же продолжить выполнение после сбоя.
16 ноя 15, 14:59    [18424135]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
DAiMor, забудь про try catch. Я х/з как тебе еще сказать... Нет его.

Как вернуться на нужный мне уровень я уже показал своим примером.
Но там подключается другая проблема... Я не получаю нужных мне переменных "окружения".
test
  
n
  s $et
="d ERROR"
  
val=1
  
A
  
!,"End"
  
q
A
  
val
  
val=2
  
B
  
!,"End A"
  
q
B
  
val
  
val=3
  
C
  
!,"End B"
  
q
C
  
val,$et
  s $et
=""
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec,!
  
zw val
  
s $ec=""
  
q
Вывод на экран

,M9,                                                                            
val=3
End A
End

А нужно

val=5
16 ноя 15, 15:24    [18424308]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2717
test
  
n
  s $zt
="*ERROR"
  
val=1
  
A
  
!,"End"
  
q
A
  
val
  
val=2
  
B
  
!,"End A"
  
q
B
  
val
  
val=3
  
C
  
!,"End B"
  
q
C
  
val,$et
  s $et
=""
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec,!
  
zw val
  
s $ec=""
  
q
krvsa
А нужно

val=5
,M9,
val=5

End C
End B
End A
End
16 ноя 15, 15:34    [18424361]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
DAiMor, ты через строчку челе читаешь?

Мне нужен вывод

,M9,                                                                            
val=5
End A
End
16 ноя 15, 15:55    [18424508]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2717
test
  
n
  s 
val=1
  
A
  
!,"End"
  
q
A
  
val
  
val=2
  
B
  
!,"End A"
  
q
B
  
val
  
s $zt="*ERROR"
  
val=3
  
C
  
!,"End B"
  
q
C
  
val
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec,!
  
zw val
  
s $ec=""
  
zquit 1
  
q
,M9,
val=5

End A
End
16 ноя 15, 16:07    [18424589]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
Проблема в том, что ты слишком рано чистишь $ec. Как только ты это сделал, обработка ошибок закончена. Нужен контроль $estack. Перечитай "синего Кирстена", там $et-обработка разжёвана достаточно подробно.
tmp 
  
A
  
!,"End"
  
q
A
  
new $et,$es set $ec=""
  
s $et="g ERROR"
  
B
Afinita
  
!,"End A"
  
q
B
  
C
  
!,"End B"
  
q
C
  
D
  
!,"End C"
  
q
D
  
1/0
  
!,"End D"
  
q
ERROR
  
q:$es>0
  
!,$ec
  s $ec
=""
  
Afinita
16 ноя 15, 16:10    [18424615]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov
Перечитай "синего Кирстена", там $et-обработка разжёвана достаточно подробно.

Почитаю, она вроде у нас есть...
16 ноя 15, 16:12    [18424632]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
krvsa
DAiMor, забудь про try catch. Я х/з как тебе еще сказать... Нет его.
Обычно указывание $zv снимает подобного рода недоразумения.
16 ноя 15, 16:16    [18424675]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov, с go to точно не пойдет...

Пока за рабочий вариант примем последний вариант от DAiMor. Спасибо за него.
16 ноя 15, 16:17    [18424680]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
DAiMor
zquit 1
Это так же не пойдет...

Т.ч. и вариантов пока нет.
16 ноя 15, 16:19    [18424700]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
На самом деле, костыль с "g Afinita" лишний: надо просто завершить обработку ошибки на уровне $estack=1.
tmp 
  
A
  
!,"End"
  
q
A
  
new $et,$es set $ec=""
  
s $et="g ERROR"
  
B
  
!,"End A"
  
q
B
  
C
  
!,"End B"
  
q
C
  
D
  
!,"End C"
  
q
D
  
1/0
  
!,"End D"
  
q
ERROR
  
q:$es>1
  
!,$ec
  s $ec
=""
  
q
Вообще, механизм $et, на мой взгляд, весьма мощный и позволяет делать всё, что умеет $zt, и даже много больше. При этом лишён странных ограничений try/catch: почему, например, нельзя делать quit из catch-блока?
ИМХО, зря ISC, гонясь за модой, практически убрала $et под сукно и даже почему-то не рекомендует ей пользоваться. С Cache 4.1 по Cache 2015.1 пользуемся, проблем никаких.
16 ноя 15, 16:20    [18424710]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Дело в том, что в нашей задачке такое реализовано. Но пока никак не можем повторить отдельно на маленькой модели.

Там нет все ваших подходов. Но работает как нужно.
16 ноя 15, 16:21    [18424716]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
servit
krvsa
DAiMor, забудь про try catch. Я х/з как тебе еще сказать... Нет его.
Обычно указывание $zv снимает подобного рода недоразумения.

Напишу так...
try catch есть но нужно сделать без него.
16 ноя 15, 16:25    [18424747]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
krvsa, чем goto не угодила? Если "не кошерно", исправь в моем последнем варианте "g ERROR" на "d ERROR" и "$es>1" на "$es>2".

P.S. Плюс моего варианта в том, что он написан на стандартном M.
16 ноя 15, 16:28    [18424769]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov
чем goto не угодила?

Взял твой последний пример...
tmp 
  
val
  
val=1
  
A
  
!,"End"
  
q
A
  
new $et,$es,val
  
set $ec=""
  
val=2
  
s $et="g ERROR"
  
B
  
!,"End A"
  
q
B
  
val
  
val=3
  
C
  
!,"End B"
  
q
C
  
val
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
q:$es>1
  
!,$ec,!
  
zw val
  
s $ec=""
  
q
Вывод

,M9,
val=3
End A
End

А нужно

,M9,
val=5
End A
End
16 ноя 15, 16:42    [18424901]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov
Плюс моего варианта в том, что он написан на стандартном M.

Вот за чистоту и боремся...
16 ноя 15, 16:43    [18424910]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
Мсье знает толк в извращениях... С уровня стека ты ушёл? Ушёл. Значит и значение val видишь действующее на том уровне, где ты оказался. Однако можно добиться того, что ты хочешь, примерно так:
tmp 
  
val,zzzsave,zzzname
  
val=1
  
A
  
!,"End"
  
q
A
  
new $et,$es set $ec=""
  
s $et="g ERROR"
  
val val=2
  
B
  
!,"End A"
  
q
B
  
val val=3
  
C
  
!,"End B"
  
q
C
  
val val=4
  
D
  
!,"End C"
  
q
D
  
val val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
if $st=$st(-1) for zzzname="val" merge zzzsave($st,zzzname)=@zzzname ; сохраняем интересующий контекст на данном уровне
  
q:$es>1
  
!,$ec
  for 
zzzname="val" @zzzname=zzzsave($st(-1),zzznamezw @zzzname ; восстанавливаем сохраненный контекст
  
s $ec=""
  
q

P.S. Здесь уже без goto никак, но тут уж "или шашечки, или ехать".
16 ноя 15, 17:16    [18425139]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
krvsa,
tmp 
  
val=1
  
A
  
!,"End"
  
q
A
  
val=2
  
B
  
!,"End A"
  
q
B
  
s $zt="ERROR"
  
val=3
  
C
  
!,"End B"
  
q
C
  
val=4
  
D
  
!,"End C"
  
q
D
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec,!
  
zw val
  
s $zt=""
  
s $ze=""
  
s $ec=""
  
q
,M9,
val=5

End A
End
16 ноя 15, 18:41    [18425703]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
servit,

зачем преумножать сущности и привлекать нестандартные переменные, когда вполне можно обойтись стандартом? ТС $zv не указал, значит возможно код пишется не только под Каше, а $zt-обработка в каждом MUMPSe своя. К тому же $et (потенциально) функционально богаче, чем $zt. Например, если убрать проверку в строке ERROR+1, получаем прототип обработчика, сохраняющего контекст на всех пройденных уровнях стека.
17 ноя 15, 01:12    [18426988]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov
значит возможно код пишется не только под Каше

Да.
Нужно сделать для разных версий Кащея и под GT.M...

Но повторюсь, у нас сейчас это работает. Но проклятый нидзя-код (используется только $et) пока не удается разобрать.
17 ноя 15, 08:14    [18427214]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
servit
,M9,
val=5

End A
End
У тебя val=5 только потому, что убраны команды

val

А это уже не то, что нужно...
17 ноя 15, 08:32    [18427243]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Смог таки разобраться в том нидзя-коде.

Вот как можно все организовать
tmp 
  
n
STARTMENU
  
f  q:'$$iteration
  
q
iteration()
  
prc
  
s $et="d ERROR"
  
S $ec=""
  
!!,"Menu",!
  
!,1," test"
  
!,2," exit"
  
!!
  
case
  
q:case'=1 0
  
prc="A^tmp"
  
@prc
  
!,"End"
  
1
A
  
val
  
val=1
  
B
  
!,"End A"
  
q
B
  
val
  
val=2
  
C
  
!,"End B"
  
q
C
  
val
  
val=3
  
1/0
  
q
ERROR
  
s $et=""
  
!
  
zw val
  
s $et="d ERR"
  
q
ERR
  
q:$st($st-3,"PLACE")'["STARTMENU+1^tmp"
  
s $et="d ERROR"
  
s $ec=""
  
q
В этом случае вы получаете нужное значение переменных. А второй обработчик позволяет вывести на нужный уровень стека.
17 ноя 15, 09:52    [18427502]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Спасибо всем, кто откликнулся на проблему.
17 ноя 15, 10:09    [18427620]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
Много лишнего кода. Второй обработчик только ради того, чтобы пропустить 2 строчки первого?
Привязка к конкретным меткам (потеря универсальности) вместо простой проверки $estack?

Впрочем все это ИМХО, главное, что тебе твой вариант нравится.
17 ноя 15, 10:46    [18427918]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Alexey Maslov
Много лишнего кода.

Это для пущей наглядности. :))
Поскольку во всех книжках как раз кода кот наплакал и ниже второго уровня никто примеров не дает.
А тут полная эмуляция нашей (по крайней мере) задачи.
Alexey Maslov
Второй обработчик только ради того, чтобы пропустить 2 строчки первого?

Не совсем понял про строчки...
Второй обработчик выводит на нужный уровень стека для "возврата" в нужное место программы.
Alexey Maslov
Привязка к конкретным меткам (потеря универсальности) вместо простой проверки $estack?

Это как частный случай... Т.с. для простоты и иллюстрации.
Как выводить на нужный уровень стека каждый может решить для себя самостоятельно.
17 ноя 15, 11:24    [18428178]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
Вот вариант с $es...
tmp 
  
n
  f  q
:'$$iteration
  
q
iteration()
  
n $es,prc
  
s $et="d ERROR"
  
S $ec=""
  
!!,"Menu",!
  
!,1," test"
  
!,2," exit"
  
!!
  
case
  
!
  
q:case'=1 0
  
prc="A^tmp"
  
@prc
  
!,"End"
  
1
A
  
val
  
val=1
  
B
  
!,"End A"
  
q
B
  
val
  
val=2
  
C
  
!,"End B"
  
q
C
  
val
  
val=3
  
1/0
  
q
ERROR
  
s $et=""
  
zw val
  
s $et="d ERR"
  
q
ERR
  
q:$es>2
  
s $et="d ERROR"
  
s $ec=""
  
q
17 ноя 15, 11:34    [18428222]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
krvsa
servit
,M9,
val=5

End A
End
У тебя val=5 только потому, что убраны команды

val

А это уже не то, что нужно...
  s $et="d ERROR"
tmp 
  
val
  
val=1
  
A
  
!,"End"
  
q
A
  
val
  
val=2
  
B
  
!,"End A"
  
q
B
  
val
  
val=3
  
C
  
!,"End B"
  
q
C
  
val
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
if $st($st(-1),"ECODE")="" {
    
!,$ec,!
    
zw val
  
}
  
s:$st=4 $ec=""
  
q
17 ноя 15, 12:10    [18428499]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
servit
 s:$st=4 $ec=""
Или так: s:$st($st,"PLACE")["C+" $ec=""
17 ноя 15, 12:22    [18428584]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
servit, нас полностью устраивает наш последний вариант.
17 ноя 15, 13:41    [18429079]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1566
Есть черновик статьи про обработку ошибок в Каше. ISC отказала в ее публикации на хабре, но если "народу интересно", можно поискать другое место. Материал родился в результате попыток объяснить коллегам, как работает $et и чем отличается от $zt.
17 ноя 15, 13:53    [18429174]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
gluconat_ca
Member

Откуда:
Сообщений: 105
Нужный эффект, правда не в каше, но это, думаю не важно, можно получить (из своего опыта) переопределением в обработчике ошибки переменной $et.
ERROR
 
;делаем то что надо на уровне возникновения ошибки
 ;а затем:
 
s $et="i '$es s $ec="""""
 ;это позволит подняться до нужного уровня (там, где заньючили  $es и т.д.)
18 ноя 15, 15:55    [18436386]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3119
Блог
gluconat_ca
Нужный эффект, правда не в каше, но это, думаю не важно
+ В Caché Ваш вариант тоже работает:
  s $et="d ERROR"
tmp 
  
val
  
val=1
  
A
  
!,"End"
  
q
A
  
val
  
val=2
  
B
  
!,"End A"
  
q
B
  
val,$es
  s 
val=3
  
C
  
!,"End B"
  
q
C
  
val
  
val=4
  
D
  
!,"End C"
  
q
D
  
val
  
val=5
  
1/0
  
!,"End D"
  
q
ERROR
  
!,$ec,!
  
zw val
  
s $et="s:'$es $ec="""""
  
q

,M9,
val=5

End A
End
18 ноя 15, 16:27    [18436598]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно использовать $ETRAP  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13246
gluconat_ca, спасибо за вариант.
19 ноя 15, 08:15    [18438928]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить