powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Команда Xecute
47 сообщений из 47, показаны все 2 страниц
[gt.m] Команда Xecute
    #39334052
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня !
Вопрос.
Можно каким-то образом возврат (в
виде функции) результат команды Xecute ?

Спасибо.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334055
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuрезультат команды Xecute ?
У команд нет возвращаемых значений...

У некоторых еще можно использовать переменные окружения... Но не более того.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334056
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuМожно каким-то образом возврат (в
виде функции) результат команды Xecute ?Примеры прилагаются.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334060
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit,

Хм.. в Каше есть то что мне надо - $Xecute
Жаль, мне в GT.M такую функцию бы ....
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334074
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuмне в GT.M такую функцию бы ....
Она там не нужна.
Т.к. там нет процедуроблока.

Если тебе нужна именно функция с экзекютом, так вот она
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
   n
   s cmd="IF Prm2=0 s out=99 ELSE s ^testnum=Prm1/Prm2 s out=0"
   s val=$$xecute(cmd,1,0)
   w !,val
   q
xecute(Command,Prm1,Prm2)
   n out
   x Command
   q out
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334083
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334121
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriukrvsa,
Ругается...
Пошел запускать свой ГТ.М...
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334126
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu , нужно было добавить еще пробел после ELSE ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
tmp ;;;;[ 26.10.2016 10:01 ]
  s cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  s val=$$xecute(cmd,1,0)
  w !,val
  q
xecute(Command,Prm1,Prm2)
  n out
  x Command
  q out
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334288
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa Valeriu , нужно было добавить еще пробел после ELSE ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
tmp ;;;;[ 26.10.2016 10:01 ]
  s cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  s val=$$xecute(cmd,1,0)
  w !,val
  q
xecute(Command,Prm1,Prm2)
  n out
  x Command
  q out


в данном случае после ELSE ничего никогда не будет выполняться по определению
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334293
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Понятно, но я хотел получить другой результат...
Захват ошибки при компиляции и отправка на ВЕБ страницу.
Примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
GET 
  s file="gl.m"
  s cmd="zl """_file_"""" 
  ;s cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
  s val=$$xecute(cmd)
  w !,val
  q
xecute(Command)
  n out
  x Command
  q out
 ;
Но GT.M по своему интерпретирует это.
Как не крутил, на нулевое устройство выплевывает результат.
(Я в рутине специально ошибку допускаю)

Код: plaintext
1.
2.
3.
4.
5.
6.
GTM>D 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

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

все ровно, СПАСИБО !
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334296
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaОна там не нужна... Т.к. там нет процедуроблока.Процедуроблок тут не при чём. Функции $xecute может быть полезна в ситуациях, когда (из-за ограничений рабочей среды) есть возможность выполнить только "однострочник", но хочется при этом вернуть значение. Написать свою обёртку вокруг Xecute, как ты предлагаешь, конечно, можно, но об этом надо заранее позаботиться, а тут - готовое решение. Подобное можно сказать о многих "плюшках" Cache: $replace, $system.Event.*, etc - всё это с разной степенью лёгкости и эффективности моделируется на MUMPSe, но оно когда есть "из коробки", это удобно.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334298
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
пишет что не определена переменная out, к которой обращаются в строке xecute+3^FCGIZL
потому что в строке s cmd="zl """_file_"""" ее изменение не предусмотрено.поправьте код на
Код: plaintext
1.
2.
3.
xecute(Command)
  n out
  x Command
  q $g(out)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334313
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa Valeriu , нужно было добавить еще пробел после ELSE ...
Код: plaintext
s cmd="IF Prm2=0 s out=99 ELSE  w !,Prm1/Prm2 s out=0"
Добавляя к ранее сделанному замечанию.
Если уж надо в одной строке и IF и ELSE использовать, то нужно погрузить ветку IF в X
Код: plaintext
s cmd="X ""IF Prm2=0 s out=99"" ELSE  w !,Prm1/Prm2 s out=0"
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334333
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, есть куча вариантов как использовать команду XECUTE , т.ч. просто показывайте свои варианты и не стоит критиковать мой "набросок"...
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334335
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovФункции $xecute может быть полезна в ситуациях ...
Ну нет в ГТ.М такой функции... Просто нет.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334378
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaНу нет в ГТ.М такой функции... Просто нет.Никто с этим не спорит, там много чего нет, но кое-что ненароком может и появиться; например, функции $list*. Это интересно "прогрессивной общественности"?
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334385
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslovно кое-что ненароком может и появиться; например, функции $list*
Это точно? Или просто слухи?
А, то наша молодежь понавтыкать ее успела в программки в дело и без дела...
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334422
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaРебята, есть куча вариантов как использовать команду XECUTE , т.ч. просто показывайте свои варианты и не стоит критиковать мой "набросок"...
Я высказался по IF и ELSE в одной строка, тем более что "набросок" скопипастил Valeriu.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334434
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_caЯ высказался по IF и ELSE в одной строка
Я понял.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334435
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЭто точно? Или просто слухи?По-крайней мере тикет #9 $LIST functions пока не закрыт.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334439
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitПо-крайней мере тикет #9 $LIST functions пока не закрыт.
Ясно...
Одной заботой мне будет меньше.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334447
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitkrvsaЭто точно? Или просто слухи?По-крайней мере тикет #9 $LIST functions пока не закрыт.Не думаю, что есть какой то смысл смотреть на эти тикеты там. Всего 10 тикетов, из них только один закрыт, и не потому что реализован, а просто дан ответ. С такой скоростью реализации запросов, они никогда не будут реализованы.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334457
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMorС такой скоростью реализации запросов, они никогда не будут реализованы.Они уже реализованы: 12118934 .
Осталось только внедрить.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334534
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriukrvsa,
Понятно, но я хотел получить другой результат...
Захват ошибки при компиляции и отправка на ВЕБ страницу.


Ошибки компиляции всегда идут на stderr. Ищите способ перенаправить.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334583
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitDAiMorС такой скоростью реализации запросов, они никогда не будут реализованы.Они уже реализованы: 12118934 .
Осталось только внедрить.
Интервью переехало сюда http://thedarkaugust.blogspot.ru/2016/03/blog-post_20.html
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334595
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,

Раньше, для десктопных приложений это проблему я
решил написав функцию (VB6) на стороне клиента. (Xecute)
используя сокет
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
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

А ошибки ловил в переменную
Код: vbnet
1.
Ret = m.Compile("zl """ & RtnName & """")

А здесь задача словить их на сервере ...
Я испробовал много, но безрезультатно.
Как не вертись ошибка на терминале выскакивает.
Можно так, напрямую, но это тоже не выход - у меня клиент на ВЕБ.
Код: plaintext
1.
2.
[root@GTM gtm63A]# mumps -dir 2>/tmp/COMPILERR.stderr
GTM>zl "gl.m"
GTM> [code=plaintext]
А вот что испробовал и не только ..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
GET
 n compile
 s p="zlinc"
 s e="Errors"
 ;zsy "2>/tmp/COMPILERR.stderr"
 o 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
 s %fcgi("o","stdout")=in_$C(13,10)
 s %fcgi("o","header","Content-Type")="text/plain"
 ;c TCPIO 
 q   
 ;
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334627
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
Для PIPE есть параметр открытия, называется он 'stderr', который поможет принять основной программе вывод в stderr того, что запускается через PIPE.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334644
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,
Пробовал:
Код: plaintext
1.
2.
3.
4.
5.
 s p="zlink" 
 s e="Errors" 
 o p:(shell="/bin/bash":command="cat":STDERR=e)::"pipe" 
 u p 
 ;u e 
 ....
Может быть неправильно использую ? ):
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334645
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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"
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334701
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriugluconat_ca,
Пробовал:
Код: plaintext
1.
2.
3.
4.
5.
 s p="zlink" 
 s e="Errors" 
 o p:(shell="/bin/bash":command="cat":STDERR=e)::"pipe" 
 u p 
 ;u e 
 ....
Может быть неправильно использую ? ):примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 s p="zlink" 
 s e="Errors" 
 o p:(shell="/bin/bash":command="mumps -direct ^test":STDERR=e)::"pipe" 
 s io=$i
 ;чтение ошибок
 f  u e   r t  q:$zeof   u io  w t,!
 ;чтение обычного вывода  
 f  u p   r t  q:$zeof   u io  w t,!
 c p
программа test.m
Код: plaintext
1.
test
 zl "fuflo.m"
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334721
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(с подачи ну я) вызов mumps в параметре command можно упростить.
Код: plaintext
 o p:(shell="/bin/bash":command="mumps fuflo.m":STDERR=e)::"pipe"
Пути к файлу - это уже технические детали, можно опустить :)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334769
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca and Евгений !!!

Спасибо большое !!! То что надо !
А я все таки неправильно делал.. ;)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
FCGIZL ;;Compilation tools WinBuilder company "ELTRANSSOFT" :[26.10.2016 15:50:00]
 ;;
 ; Selectam routin
 n $zt s $zt=$$ztx()
 s rou=$P(%fcgi("i","header","DOCUMENT_URI"),"/",4)
 s file=$$FUNC^%TRIM(rou)
 s:$E(file)="%" $E(file)="_"
 i %fcgi("i","header","REQUEST_METHOD")="GET" d GET q
 i %fcgi("i","header","REQUEST_METHOD")="PUT" d PUT q
 q
PUT ;
 o file:(newversion)
 u file w %fcgi("i","stdin")
 u 0 c file
 q 
 ;
GET 
 s p="zlink" 
 s e="Errors" 
 o p:(shell="/bin/bash":command="mumps "_file_"":STDERR=e)::"pipe" 
 s io=$i
 ;÷òåíèå îøèáîê
 s out=""
 f  u e   r tstderr  q:$zeof   u io  s out=out_tstderr
 ;÷òåíèå îáû÷íîãî âûâîäà  
 f  u p   r terr  q:$zeof   u io  w "T#######"_t,!
 c p
 s %fcgi("o","stdout")=out_$C(13,10)
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;
zt()
 i $zv["GT.M" q "g Error^FCGIZL"
 q "Error^FCGIZL"
 ;
Error
 s %fcgi("o","stdout")=%fcgi("o","stdout")_" <script type=""text/javascript"">"_$c(13,10)
 s $et="",$ec="",$zt=""
 s output=$zs
 s $zs=0
 s %fcgi("o","stdout")=%fcgi("o","stdout")_" alert ("""_output_""")"_$c(13,10)
 s %fcgi("o","stdout")=%fcgi("o","stdout")_" </script>"_$c(13,10)
 d out(%fcgi("o","stdout"))
 q
А здесь отправка клиенту в %fcgi("o","stdout")
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
###############
%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)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334783
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пропустил саму команду ZLINK, но это по документации как бы не ошибка

Код: plaintext
1.
<<The following GT.M commands and functions can initiate auto-ZLINKing:
DO >>

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

Еще раз спасибо.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334800
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Там еще нюансик. Используется имя рутины для образования имени файла с расширением m. И если первый символ имени рутины процент, то заменяется на подчеркивание.
Код: plaintext
1.
rname -> rname.m
%rname -> _rname.m
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334802
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я,
Да, в курсе. Я там вроде учел.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334924
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в идеале это должно выглядеть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
GET 
 s p="zlink" 
 s e="Errors" 
 o p:(shell="/bin/bash":command="mumps zl "_file_"":STDERR=e)::"pipe" 
 s io=$i
  ;read error stderr
 s (out,local)=""
 f  u e   r tstderr  q:$zeof   u io  s out=out_tstderr
 ;read simple error  
 f  u p   r terr  q:$zeof   u io  s local=local_terr
 c p
 s %fcgi("o","stdout")=out_$C(13,10)
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334941
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
кое-что лишнее
Код: plaintext
:command="mumps zl "_file_"":STDERR=e)
надо:
Код: plaintext
:command="mumps "_file_"":STDERR=e)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334960
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёлы палы,из-за копи паста остались ещё лишние закорючки:
Код: plaintext
1.
2.
3.
4.
:command="mumps "_file_"":STDERR=e)

в итоге:

:command="mumps "_file:STDERR=e)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334967
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
надо бы ещё перед close p поставить use io если уж приближаться к идеальному рабочему коду :)
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334970
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,
Первоначально примерно так и было.
Думал так будет правильнее.
Я как делаю.
С начало сохраняю как простой текст в файле. (.m)
Потом само компилирование и запись в object файле (.o)
Хотя команда DO предполагает компилирование(выше указал)
думаю , что ZLINK должен быть в любом случае, а старый файл (.о) удалить.
Во всяком случае вопрос как бы уже отработан. Остались нюансы.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39334978
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
В любом случае ненужные переключения между устройствами надо бы убрать, вне зависимости от использования или не использования этого кода в 'продакшене'.
Код: plaintext
1.
f  u e   r tstderr  q:$zeof   u io  s out=out_tstderr
f  u p   r terr  q:$zeof   u io  s local=local_terr
подчищая останется:
Код: plaintext
1.
2.
3.
4.
u e
f  r tstderr  q:$zeof   s out=out_tstderr
u p
f   r terr  q:$zeof   s local=local_terr
u io
Вот, кстати, чем иногда плох копи-паст кода - может остаться после правки лишнее, что было необходимым в исходном месте.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39335004
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,
Да. Спасибо. Согласен.
Еще предстоит мне пробовать словить ошибку
при использованием команде ZWRITE.
Вроде как бы понятно, но там есть нюансик.
При выборе в команде маску для глобала и если
она без ошибок, тогда все ОК.
Например: zwr ^glob(,8924,*)
Если ошибка при выборе например zwr ^glob(,8924*) (просто забыли запятую),
тогда приложение зависает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
GETT 
 s in=""
 w "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  ;
 ; ***************
 s in=""
 s p="Files"
 s e="Errors"
 o p:(command="cat 2>/tmp/zwr.err":stderr=e)::"pipe"
 ;o p:(command="cat":stderr=e)::"pipe"
 u p
 ;u e
 x "zwr "_var
 w /eof
 f i=0:1 r record q:$zeof  d
 . s in=in_record_$C(13,10)
 s %fcgi("o","stdout")=in
 s %fcgi("o","header","Content-Type")="text/plain"
 ;c e
 c p 
 q  ;
Можно конечно по глобалу пройтись $Q, но тогда нельзя использовать уже стандарт, что предполагается командой zwr:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
GET ;
 s in="",Ret="" 
 s nod="",in=""
 f i=1:1:1000 s var=$Q(@var) q:var=""  d
 . s nod(i)=var_"="_@var
 s n=-1
 s ind="" f i=0:1 s ind=$o(nod(ind)) q:ind=""  d
 . s n=n+1 s dummy(n)=nod(ind)
 . s in=in_dummy(n)_$c(13,10)
 s %fcgi("o","stdout")=in
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39335008
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriugluconat_ca,
Хотя команда DO предполагает компилирование(выше указал)
думаю , что ZLINK должен быть в любом случае, а старый файл (.о) удалить.
Во всяком случае вопрос как бы уже отработан. Остались нюансы.

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

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

Я понял так, что речь больше шла о проверке на компилируемость без ошибок. Вторая цель требует тщательного изучения документации, тем более что в последн(-ей,-их) верси(-и,-ях) gt.m есть нововведения по этой части.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39335023
gluconat_ca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
А почему бы не использовать предварительную проверку аргумента ZWRITE на 'валидность' ?
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39335034
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gluconat_ca,
Это тоже вариант, но уже сложнее мне кажется...
Во всяком случае посмотрю и этот.
Спасибо.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39339633
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги Valeriu, gluconat_ca, и другие читающие этот форум, но скромно молчащие о своём интересе к M[UMPS]-системам. Есть предложения, которые, возможно, вас заинтересуют. Киньте сообщение на почту в профиле; обещаю ответить каждому.
...
Рейтинг: 0 / 0
[gt.m] Команда Xecute
    #39339766
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov,
Отправил !
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Команда Xecute
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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