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

Откуда: Chisinau
Сообщений: 1926
Всем доброго дня !
Вопрос.
Можно каким-то образом возврат (в
виде функции) результат команды Xecute ?

Спасибо.
26 окт 16, 08:15    [19822211]     Ответить | Цитировать Сообщить модератору
 Re: Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Valeriu
результат команды Xecute ?

У команд нет возвращаемых значений...

У некоторых еще можно использовать переменные окружения... Но не более того.
26 окт 16, 08:20    [19822222]     Ответить | Цитировать Сообщить модератору
 Re: Команда Xecute  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3049
Блог
Valeriu
Можно каким-то образом возврат (в
виде функции) результат команды Xecute ?
Примеры прилагаются.
26 окт 16, 08:21    [19822225]     Ответить | Цитировать Сообщить модератору
 Re: Команда Xecute  [new]
Valeriu
Member

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

Хм.. в Каше есть то что мне надо - $Xecute
Жаль, мне в GT.M такую функцию бы ....
26 окт 16, 08:30    [19822244]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Valeriu
мне в GT.M такую функцию бы ....

Она там не нужна.
Т.к. там нет процедуроблока.

Если тебе нужна именно функция с экзекютом, так вот она
   n
   s 
cmd="IF Prm2=0 s out=99 ELSE s ^testnum=Prm1/Prm2 s out=0"
   
val=$$xecute(cmd,1,0)
   
!,val
   
q
xecute(Command,Prm1,Prm2)
   
out
   
Command
   
out
26 окт 16, 08:49    [19822281]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
krvsa,
Ругается...

GTM>d GETT^FCGIZL
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
At M source location xecute+2^FCGIZL
26 окт 16, 09:02    [19822303]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Valeriu
krvsa,
Ругается...

Пошел запускать свой ГТ.М...
26 окт 16, 09:57    [19822501]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Valeriu, нужно было добавить еще пробел после ELSE...
tmp ;;;;[ 26.10.2016 10:01 ]
  
cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  
val=$$xecute(cmd,1,0)
  
!,val
  
q
xecute(Command,Prm1,Prm2)
  
out
  
Command
  
out
26 окт 16, 10:02    [19822527]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
krvsa
Valeriu, нужно было добавить еще пробел после ELSE...
tmp ;;;;[ 26.10.2016 10:01 ]
  
cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  
val=$$xecute(cmd,1,0)
  
!,val
  
q
xecute(Command,Prm1,Prm2)
  
out
  
Command
  
out


в данном случае после ELSE ничего никогда не будет выполняться по определению
26 окт 16, 12:16    [19823350]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
krvsa,
Понятно, но я хотел получить другой результат...
Захват ошибки при компиляции и отправка на ВЕБ страницу.
Примерно такой:
GET 
  
file="gl.m"
  
cmd="zl """_file_"""" 
  ;s cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  
val=$$xecute(cmd)
  
!,val
  
q
xecute(Command)
  
out
  
Command
  
out
 
;
Но GT.M по своему интерпретирует это.
Как не крутил, на нулевое устройство выплевывает результат.
(Я в рутине специально ошибку допускаю)

GTM>GET^FCGIZL
q X t w " ;
^-----
At column 17, line 20, source module /usr/gtm63A/gl.m
%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found
%GTM-E-UNDEF, Undefined local variable: out
At M source location xecute+3^FCGIZL

Бьюсь уже сколько и ни вкакую.

все ровно, СПАСИБО !
26 окт 16, 12:20    [19823374]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1349
krvsa
Она там не нужна... Т.к. там нет процедуроблока.
Процедуроблок тут не при чём. Функции $xecute может быть полезна в ситуациях, когда (из-за ограничений рабочей среды) есть возможность выполнить только "однострочник", но хочется при этом вернуть значение. Написать свою обёртку вокруг Xecute, как ты предлагаешь, конечно, можно, но об этом надо заранее позаботиться, а тут - готовое решение. Подобное можно сказать о многих "плюшках" Cache: $replace, $system.Event.*, etc - всё это с разной степенью лёгкости и эффективности моделируется на MUMPSe, но оно когда есть "из коробки", это удобно.
26 окт 16, 12:25    [19823401]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1082
Valeriu,
пишет что не определена переменная out, к которой обращаются в строке xecute+3^FCGIZL
потому что в строке cmd="zl """_file_"""" ее изменение не предусмотрено.
поправьте код на
xecute(Command)
  
out
  
Command
  
q $g(out)
26 окт 16, 12:27    [19823407]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
krvsa
Valeriu, нужно было добавить еще пробел после ELSE...
cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
Добавляя к ранее сделанному замечанию.
Если уж надо в одной строке и IF и ELSE использовать, то нужно погрузить ветку IF в X
cmd="X ""IF Prm2=0 s out=99"" ELSE  w !,Prm1/Prm2 s out=0"
26 окт 16, 12:48    [19823498]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Ребята, есть куча вариантов как использовать команду XECUTE, т.ч. просто показывайте свои варианты и не стоит критиковать мой "набросок"...
26 окт 16, 13:15    [19823616]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Alexey Maslov
Функции $xecute может быть полезна в ситуациях ...

Ну нет в ГТ.М такой функции... Просто нет.
26 окт 16, 13:16    [19823619]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1349
krvsa
Ну нет в ГТ.М такой функции... Просто нет.
Никто с этим не спорит, там много чего нет, но кое-что ненароком может и появиться; например, функции $list*. Это интересно "прогрессивной общественности"?
26 окт 16, 13:47    [19823739]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
Alexey Maslov
но кое-что ненароком может и появиться; например, функции $list*

Это точно? Или просто слухи?
А, то наша молодежь понавтыкать ее успела в программки в дело и без дела...
26 окт 16, 13:53    [19823767]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
krvsa
Ребята, есть куча вариантов как использовать команду XECUTE, т.ч. просто показывайте свои варианты и не стоит критиковать мой "набросок"...

Я высказался по IF и ELSE в одной строка, тем более что "набросок" скопипастил Valeriu.
26 окт 16, 14:33    [19823921]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
gluconat_ca
Я высказался по IF и ELSE в одной строка

Я понял.
26 окт 16, 14:46    [19823977]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3049
Блог
krvsa
Это точно? Или просто слухи?
По-крайней мере тикет #9 $LIST functions пока не закрыт.
26 окт 16, 14:46    [19823978]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12703
servit
По-крайней мере тикет #9 $LIST functions пока не закрыт.

Ясно...
Одной заботой мне будет меньше.
26 окт 16, 14:47    [19823984]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
DAiMor
Member

Откуда: Brno, Czech Republic
Сообщений: 2273
servit
krvsa
Это точно? Или просто слухи?
По-крайней мере тикет #9 $LIST functions пока не закрыт.
Не думаю, что есть какой то смысл смотреть на эти тикеты там. Всего 10 тикетов, из них только один закрыт, и не потому что реализован, а просто дан ответ. С такой скоростью реализации запросов, они никогда не будут реализованы.
26 окт 16, 14:53    [19824010]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
servit
Member

Откуда: г. Кишинёв, Республика Молдова
Сообщений: 3049
Блог
DAiMor
С такой скоростью реализации запросов, они никогда не будут реализованы.
Они уже реализованы: 12118934.
Осталось только внедрить.
26 окт 16, 14:57    [19824039]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu
krvsa,
Понятно, но я хотел получить другой результат...
Захват ошибки при компиляции и отправка на ВЕБ страницу.


Ошибки компиляции всегда идут на stderr. Ищите способ перенаправить.
26 окт 16, 15:44    [19824314]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1082
servit
DAiMor
С такой скоростью реализации запросов, они никогда не будут реализованы.
Они уже реализованы: 12118934.
Осталось только внедрить.

Интервью переехало сюда http://thedarkaugust.blogspot.ru/2016/03/blog-post_20.html
26 окт 16, 16:16    [19824573]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca,

Раньше, для десктопных приложений это проблему я
решил написав функцию (VB6) на стороне клиента. (Xecute)
используя сокет
Public Function Compile(str As String) As String
GTMCmd.SendData "COMPILE " & str & vbCrLf
Do Until m_blnHeaderArrived
  DoEvents
 Loop
  Compile = m_var(0)
End Function
А ошибки ловил в переменную
Ret = m.Compile("zl """ & RtnName & """")
А здесь задача словить их на сервере ...
Я испробовал много, но безрезультатно.
Как не вертись ошибка на терминале выскакивает.
Можно так, напрямую, но это тоже не выход - у меня клиент на ВЕБ.
[root@GTM gtm63A]# mumps -dir 2>/tmp/COMPILERR.stderr
GTM>zl "gl.m"
GTM>
+ А вот что испробовал и не только ..
GET
 
compile
 
p="zlinc"
 
e="Errors"
 ;zsy "2>/tmp/COMPILERR.stderr"
 
p:(shell="/bin/bash":command="2>/tmp/zlink.err")::"pipe"
 ;s file="gl.m"
 ;o p:(shell="/bin/sh":comm="cat")::"PIPE"
 ;s compile="zl """_file_"""" 
 ;U TCPIO x compile
 ;u p ZL file
 
zl file
 
;w "Cito za h.. ???",!
 ; r x
 ;w /eof f  r x q:$zeof  u p w x,!
 ;s %fcgi("o","stdout",i)=x_$C(13,10)
 ;u p i x="" s in="During compilation, the error is not detected in routine : "_$zd_file
 
%fcgi("o","stdout")=in_$C(13,10)
 
%fcgi("o","header","Content-Type")="text/plain"
 ;c TCPIO 
 
q   
 
;
26 окт 16, 16:24    [19824632]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu,
Для PIPE есть параметр открытия, называется он 'stderr', который поможет принять основной программе вывод в stderr того, что запускается через PIPE.
26 окт 16, 16:43    [19824793]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca,
Пробовал:
 p="zlink" 
 
e="Errors" 
 
p:(shell="/bin/bash":command="cat":STDERR=e)::"pipe" 
 

 
;u e 
 ....
Может быть неправильно использую ? ):
26 окт 16, 16:59    [19824887]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1082
Valeriu,
Компилируйте по-другому.
Гоним все stdXXX во временный файл:
zsystem "mumps routine.m > /tmp/appname"_$j_".output 2>&1 3>&1"
Гоним временный файл в текущий девайс:
zsystem "cat /tmp/appname"_$j_".output"
Чистимся:
zsystem "rm /tmp/appname"_$j_".output"
Подключаем рутину:
zlink "' + AName + '.m"
26 окт 16, 16:59    [19824889]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu
gluconat_ca,
Пробовал:
 p="zlink" 
 
e="Errors" 
 
p:(shell="/bin/bash":command="cat":STDERR=e)::"pipe" 
 

 
;u e 
 ....
Может быть неправильно использую ? ):
примерно так:
 p="zlink" 
 
e="Errors" 
 
p:(shell="/bin/bash":command="mumps -direct ^test":STDERR=e)::"pipe" 
 
io=$i
 
;чтение ошибок
 
f  u e   t  q:$zeof   u io  t,!
 
;чтение обычного вывода  
 
f  u p   t  q:$zeof   u io  t,!
 
p
программа test.m
test
 
zl "fuflo.m"
26 окт 16, 17:59    [19825171]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
(с подачи ну я) вызов mumps в параметре command можно упростить.
 p:(shell="/bin/bash":command="mumps fuflo.m":STDERR=e)::"pipe"
Пути к файлу - это уже технические детали, можно опустить :)
26 окт 16, 18:24    [19825249]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca and Евгений !!!

Спасибо большое !!! То что надо !
А я все таки неправильно делал.. ;)
+
FCGIZL ;;Compilation tools WinBuilder company "ELTRANSSOFT" :[26.10.2016 15:50:00]
 ;;
 ; Selectam routin
 
$zt s $zt=$$ztx()
 
rou=$P(%fcgi("i","header","DOCUMENT_URI"),"/",4)
 
file=$$FUNC^%TRIM(rou)
 
s:$E(file)="%" $E(file)="_"
 
%fcgi("i","header","REQUEST_METHOD")="GET" GET q
 i 
%fcgi("i","header","REQUEST_METHOD")="PUT" PUT q
 q
PUT ;
 
file:(newversion)
 
file %fcgi("i","stdin")
 
file
 

 
;
GET 
 
p="zlink" 
 
e="Errors" 
 
p:(shell="/bin/bash":command="mumps "_file_"":STDERR=e)::"pipe" 
 
io=$i
 
;÷òåíèå îøèáîê
 
out=""
 
f  u e   tstderr  q:$zeof   u io  out=out_tstderr
 
;÷òåíèå îáû÷íîãî âûâîäà  
 
f  u p   terr  q:$zeof   u io  "T#######"_t,!
 
p
 
%fcgi("o","stdout")=out_$C(13,10)
 
%fcgi("o","header","Content-Type")="text/plain"
 
q
 
;
zt()
 
i $zv["GT.M" "g Error^FCGIZL"
 
"Error^FCGIZL"
 ;
Error
 
%fcgi("o","stdout")=%fcgi("o","stdout")_" <script type=""text/javascript"">"_$c(13,10)
 
s $et="",$ec="",$zt=""
 
output=$zs
 s $zs
=0
 
%fcgi("o","stdout")=%fcgi("o","stdout")_" alert ("""_output_""")"_$c(13,10)
 
%fcgi("o","stdout")=%fcgi("o","stdout")_" </script>"_$c(13,10)
 
out(%fcgi("o","stdout"))
 
q
А здесь отправка клиенту в %fcgi("o","stdout")
+
###############
%fcgi("i","header",$C(0,0)_"гHTTP_COO")="KIESID=64217703691,3; __utma=14483063.753646529.1469952638.1474649849.1474781382.33; __utmz=14483063.1469952638.1.1.utmcsr=(dire"
%fcgi("i","header",")|utmccn=(direct)|utmcmd=(none); SID=64217703691,3; submenuMark-0=opened")=""
%fcgi("i","header","DOCUMENT_URI")="/gt.m/zl/ gl.m"
%fcgi("i","header","HTTP_ACCEPT")="*/*"
%fcgi("i","header","HTTP_ACCEPT_ENCODING")="gzip, deflate, sdch"
%fcgi("i","header","HTTP_ACCEPT_LANGUAGE")="ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4"
%fcgi("i","header","HTTP_CONNECTION")="keep-alive"
%fcgi("i","header","HTTP_HOST")="192.168.1.111:8082"
%fcgi("i","header","HTTP_REFERER")="http://192.168.1.111:8082/MENUJS.m"
%fcgi("i","header","HTTP_USER_AGENT")="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36"
%fcgi("i","header","QUERY_STRING")=""
%fcgi("i","header","REMOTE_ADDR")="192.168.1.104"
%fcgi("i","header","REQUEST_METHOD")="GET"
%fcgi("i","header","SID")="64217703691,3"
%fcgi("o","header","Content-Type")="text/plain"
%fcgi("o","header","Set-Cookie")="SID=64217703691,4"
%fcgi("o","stdout")=$C(9)_" q X t w "" ;"_$C(9)_" ^-----"_$C(9,9)_"At column 17, line 20, source module /usr/gtm63A/gl.m%GTM-E-SPOREOL, Either a space or an end-of-line was expected but not found"_$C(13,10)
26 окт 16, 19:57    [19825565]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
Я пропустил саму команду ZLINK, но это по документации как бы не ошибка

<<The following GT.M commands and functions can initiate auto-ZLINKing:
DO >>

Добавил в коде.

Еще раз спасибо.
26 окт 16, 20:19    [19825646]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
ну я
Member

Откуда: Stalingrad
Сообщений: 1082
Valeriu,
Там еще нюансик. Используется имя рутины для образования имени файла с расширением m. И если первый символ имени рутины процент, то заменяется на подчеркивание.
rname -> rname.m
%rname -> _rname.m
26 окт 16, 21:10    [19825720]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
ну я,
Да, в курсе. Я там вроде учел.
26 окт 16, 21:15    [19825730]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
А в идеале это должно выглядеть примерно так:
GET 
 
p="zlink" 
 
e="Errors" 
 
p:(shell="/bin/bash":command="mumps zl "_file_"":STDERR=e)::"pipe" 
 
io=$i
  
;read error stderr
 
(out,local)=""
 
f  u e   tstderr  q:$zeof   u io  out=out_tstderr
 
;read simple error  
 
f  u p   terr  q:$zeof   u io  local=local_terr
 
p
 
%fcgi("o","stdout")=out_$C(13,10)
 
%fcgi("o","header","Content-Type")="text/plain"
 
q
 
;
27 окт 16, 07:54    [19826369]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu,
кое-что лишнее
:command="mumps zl "_file_"":STDERR=e)
надо:
:command="mumps "_file_"":STDERR=e)
27 окт 16, 09:05    [19826491]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Ёлы палы,из-за копи паста остались ещё лишние закорючки:
:command="mumps "_file_"":STDERR=e)

в итоге:

:command="mumps "_file:STDERR=e)
27 окт 16, 09:25    [19826601]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu,
надо бы ещё перед close p поставить use io если уж приближаться к идеальному рабочему коду :)
27 окт 16, 09:33    [19826639]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca,
Первоначально примерно так и было.
Думал так будет правильнее.
Я как делаю.
С начало сохраняю как простой текст в файле. (.m)
Потом само компилирование и запись в object файле (.o)
Хотя команда DO предполагает компилирование(выше указал)
думаю , что ZLINK должен быть в любом случае, а старый файл (.о) удалить.
Во всяком случае вопрос как бы уже отработан. Остались нюансы.
27 окт 16, 09:37    [19826648]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu,
В любом случае ненужные переключения между устройствами надо бы убрать, вне зависимости от использования или не использования этого кода в 'продакшене'.
f  u e   tstderr  q:$zeof   u io  out=out_tstderr
f  u p   terr  q:$zeof   u io  local=local_terr
подчищая останется:
e
f  r tstderr  q:$zeof   s out=out_tstderr
p
f   r terr  q:$zeof   s local=local_terr
io
Вот, кстати, чем иногда плох копи-паст кода - может остаться после правки лишнее, что было необходимым в исходном месте.
27 окт 16, 09:49    [19826682]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca,
Да. Спасибо. Согласен.
Еще предстоит мне пробовать словить ошибку
при использованием команде ZWRITE.
Вроде как бы понятно, но там есть нюансик.
При выборе в команде маску для глобала и если
она без ошибок, тогда все ОК.
Например: zwr ^glob(,8924,*)
Если ошибка при выборе например zwr ^glob(,8924*) (просто забыли запятую),
тогда приложение зависает.
+
GETT 
 
in=""
 
"VAR***"_var 
 
;   set p="something" o p:(command="cat")::"PIPE"
 ;   u p
 ;   ; NOW ZWRITE and ZWRITE what You want
 ;   w $$ENCODE^FCGIJSON(var)
 ;   ; Now leave Code as it is!!!!
 ;   u p w /EOF s %fcgi("o","stdout")=""
 ;   u p f i=1:1 r in q:$ZEOF  s %fcgi("o","stdout")=%fcgi("o","stdout")_in_$C(10)
 ;   u 0 c p zwr  w $L(%fcgi("o","stdout")),!
 ;   q  ;
 ; ***************
 
in=""
 
p="Files"
 
e="Errors"
 
p:(command="cat 2>/tmp/zwr.err":stderr=e)::"pipe"
 ;o p:(command="cat":stderr=e)::"pipe"
 
p
 
;u e
 
"zwr "_var
 
/eof
 
i=0:1 record q:$zeof  d
 
in=in_record_$C(13,10)
 
%fcgi("o","stdout")=in
 
%fcgi("o","header","Content-Type")="text/plain"
 ;c e
 

 
q  ;
Можно конечно по глобалу пройтись $Q, но тогда нельзя использовать уже стандарт, что предполагается командой zwr:
+
GET ;
 
in="",Ret="" 
 
nod="",in=""
 
i=1:1:1000 var=$Q(@varq:var=""  d
 
nod(i)=var_"="_@var
 
n=-1
 
ind="" i=0:1 ind=$o(nod(ind)) q:ind=""  d
 
n=n+1 dummy(n)=nod(ind)
 . 
in=in_dummy(n)_$c(13,10)
 
%fcgi("o","stdout")=in
 
%fcgi("o","header","Content-Type")="text/plain"
 
q
 
;
27 окт 16, 10:09    [19826745]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu
gluconat_ca,
Хотя команда DO предполагает компилирование(выше указал)
думаю , что ZLINK должен быть в любом случае, а старый файл (.о) удалить.
Во всяком случае вопрос как бы уже отработан. Остались нюансы.


Если задача стоит в выявлении ошибок компиляции программы, для этого нужно использовать вызов mumps с нужными ключами.

ZLINK подключает (прилинковывает) к текущему M-процессу новую или модифицированную программу, автоматически компилируя её. Так что он нужен больше тогда когда нужно что-то менять во время работы.

Я понял так, что речь больше шла о проверке на компилируемость без ошибок. Вторая цель требует тщательного изучения документации, тем более что в последн(-ей,-их) верси(-и,-ях) gt.m есть нововведения по этой части.
27 окт 16, 10:10    [19826752]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
gluconat_ca
Member

Откуда:
Сообщений: 84
Valeriu,
А почему бы не использовать предварительную проверку аргумента ZWRITE на 'валидность' ?
27 окт 16, 10:17    [19826790]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
gluconat_ca,
Это тоже вариант, но уже сложнее мне кажется...
Во всяком случае посмотрю и этот.
Спасибо.
27 окт 16, 10:23    [19826828]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1349
Коллеги Valeriu, gluconat_ca, и другие читающие этот форум, но скромно молчащие о своём интересе к M[UMPS]-системам. Есть предложения, которые, возможно, вас заинтересуют. Киньте сообщение на почту в профиле; обещаю ответить каждому.
2 ноя 16, 10:30    [19849380]     Ответить | Цитировать Сообщить модератору
 Re: [gt.m] Команда Xecute  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1926
Alexey Maslov,
Отправил !
2 ноя 16, 12:08    [19849997]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Caché Ответить