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

Откуда: г Волжский
Сообщений: 12773
Наш админ при настройке глобальной директории разделил каталоги для файлов программ (ФП) (*.m) и файлов объектного кода (ФОБ) (*.o)...

Появилась проблема при компиляции динамически создаваемых программ.

Формируем файл /srv/bd/soi/r/find30739.m, даем команду

zlink "/srv/bd/soi/r/find31388"

Вылетает по ошибке

И файл ФОК создается в каталоге ФП...

Как компилить программы в случае с разделением каталогов?
28 апр 17, 15:37    [20444156]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12773
Сделал тестовую программку...

tmpKSA ;;Тест;;[ 28.04.2017 16:10 ]
	s rtn="test"_$j
	s txt($i(txt))=" n"
	s tim=$$Time^zfunc(,3)
	s txt($i(txt))=" w !,"_$$Qt^zfunc(tim)
	s txt($i(txt))=" q"
	s io=$i
	s file=$$path^zsys("m")_rtn_".m"
	w !,"save ",file r *yy
	s dev=$$fOpen^zsys(file)
	i dev="" q:$q "" q
	u dev
	s row=""
	f  s row=$o(txt(row)) q:row=""  w txt(row),!
	c dev
	u io
	w !,"zlink ",rtn r *yy
	zlink rtn
	w !,"ok" r *yy
	w !,tim
	d @("^"_rtn)
	d delRtn^zsys(rtn) 
	q

Первый запуск - все отлично

save /srv/bd/soi/r/test1293.m                                                   
zlink test1293                                                                  
ok                                                                              
16:12:03                                                                        
16:12:03                                                                        
/srv/bd/soi/r/test1293.m                                                        
1                                                                               
/srv/bd/soi/o/test1293.o                                                        
1

Концовка это удаление файлов программы (ФП и ФОК), единички - удаление успешно.
Файлов действительно нет.

Но повторный запуск удручает

save /srv/bd/soi/r/test1293.m                                                   
zlink test1293                                                                  
ok                                                                              
16:13:24                                                                        
16:12:03                                                                        
/srv/bd/soi/r/test1293.m                                                        
1                                                                               
/srv/bd/soi/o/test1293.o                                                        
1           

Т.е. стартует старая программа...
Она не перезаписывается.
28 апр 17, 16:17    [20444386]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12773
Более расширенная версия программы

tmpKSA ;;Тест;;[ 28.04.2017 16:25 ]
	s rtn="test"_$j
	s txt($i(txt))=" n"
	s tim=$$Time^zfunc(,3)
	s txt($i(txt))=" w !,"_$$Qt^zfunc(tim)
	s txt($i(txt))=" q"
	s io=$i
	s file=$$path("m")_rtn_".m"
	w !,"save ",file r *yy
	s dev=$$fOpen(file)
	i dev="" q:$q "" q
	u dev
	s row=""
	f  s row=$o(txt(row)) q:row=""  w txt(row),!
	c dev
	u io
	w !,"zlink ",rtn r *yy
	zlink rtn
	w !,"ok" r *yy
	w !,tim
	d @("^"_rtn)
	d delRtn^zsys(rtn) 
	q
path(Type)
	n path
	s:$g(Type)="" Type="m"
	s path=$p($zro," ")
	q:Type="o" $p(path,"(")_"/"
	s path=$s(path["(":$p($p(path,"(",2),")"),1:path)
	q path_"/"
fOpen(File,Typ,Byte,Sym)
	n oet
	s:$g(Typ)="" Typ="W"
	q:":\/"[$e($re(File)) ""
	s oet=$et
	s $ec=""
	s $et="d fOpenErr^zsys("""_$$Trans^zfunc(oet)_""")"
	d FOPEN
	s $et=oet
	q $s($t:File,1:"")
FOPEN ; Собственно открытие
	i Typ="W" o File:(newversion:noreadonly):0 q
	i Typ="M" o File::0 q
	o File:(readonly):0
	q
delRtn(Rtn,Type)
	n ok,path
	s:$g(Type)="" Type=0
	s path=$$path("m")
	s ok=1
	w:'Type !,path_Rtn_".m" r *yy
	s:'Type ok=$$delFile(path_Rtn_".m")
	w !,ok r *yy
	i 'ok q:$q ok q
	s path=$$path("o")
	w !,path_Rtn_".o" r *yy
	s ok=$$delFile(path_Rtn_".o")
	w !,ok r *yy
	q:$q ok
	q
delFile(File)
	n ok
	s ok=$$com("rm","-f "_File)
	q:$q ok
	q
com(Com,Prm)
	n p,str
	s p="runCommand"
	s Com=$$At^zfunc(Com)
	s:$g(Prm)'="" Com=Com_" "_Prm
	i $l(Com)>250 q:$q 0 q
	o p:(COMMAND=Com:READONLY)::"PIPE"
	u p
	r str
	c p
	q:$q $s(str="":1,1:str)
	q
28 апр 17, 16:22    [20444405]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 682
krvsa,
ZLOAD разве не нужно?
28 апр 17, 16:35    [20444459]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12773
Сделал полностью автономный пример...

tmpKSA ;;Тест;;[ 28.04.2017 16:39 ]
	s rtn="test"_$j
	s txt($i(txt))=" n"
	s tim=$$Time(,3)
	s txt($i(txt))=" w !,"_$$Qt(tim)
	s txt($i(txt))=" q"
	s io=$i
	s file=$$path("m")_rtn_".m"
	w !,"save ",file r *yy
	s dev=$$fOpen(file)
	i dev="" q:$q "" q
	u dev
	s row=""
	f  s row=$o(txt(row)) q:row=""  w txt(row),!
	c dev
	u io
	w !,"zlink ",rtn r *yy
	zlink rtn
	w !,"ok" r *yy
	w !,tim
	d @("^"_rtn)
	d delRtn(rtn)
	q
path(Type)
	n path
	s:$g(Type)="" Type="m"
	s path=$p($zro," ")
	q:Type="o" $p(path,"(")_"/"
	s path=$s(path["(":$p($p(path,"(",2),")"),1:path)
	q path_"/"
fOpen(File,Typ,Byte,Sym)
	n oet
	s:$g(Typ)="" Typ="W"
	q:":\/"[$e($re(File)) ""
	s oet=$et
	d FOPEN
	s $et=oet
	q $s($t:File,1:"")
FOPEN ; Собственно открытие
	i Typ="W" o File:(newversion:noreadonly):0 q
	i Typ="M" o File::0 q
	o File:(readonly):0
	q
delRtn(Rtn,Type)
	n ok,path
	s:$g(Type)="" Type=0
	s path=$$path("m")
	s ok=1
	w:'Type !,path_Rtn_".m" r *yy
	s:'Type ok=$$delFile(path_Rtn_".m")
	w !,ok r *yy
	i 'ok q:$q ok q
	s path=$$path("o")
	w !,path_Rtn_".o" r *yy
	s ok=$$delFile(path_Rtn_".o")
	w !,ok r *yy
	q:$q ok
	q
delFile(File)
	n ok
	s ok=$$com("rm","-f "_File)
	q:$q ok
	q
com(Com,Prm)
	n p,str
	s p="runCommand"
	s Com=$$At(Com)
	s:$g(Prm)'="" Com=Com_" "_Prm
	i $l(Com)>250 q:$q 0 q
	o p:(COMMAND=Com:READONLY)::"PIPE"
	u p
	r str
	c p
	q:$q $s(str="":1,1:str)
	q
Time(Sec,Type)
	n hour,min,sec
	s Sec=$g(Sec,$H)
	q:Sec[":" $p(Sec,":")*3600+($p(Sec,":",2)*60)+$p(Sec,":",3)
	s Type=$g(Type,1)
	s:Sec["," Sec=$p(Sec,",",2)
	s hour=$tr($j(Sec\3600,2)," ",0)
	s min=$tr($j(Sec#3600\60,2)," ",0)
	s sec=$tr($j(Sec#60,2)," ",0)
	q $s(Type=1:hour_":"_min,Type=2:min_":"_sec,1:hour_":"_min_":"_sec)
Lt(Str)
	q $e(Str,$f(Str_".",$e($tr(Str_"."," ")))-1,$l(Str))
Rt(Str)
	n space
	s space=$j("",$l(Str))
	q $e(Str,0,$f(Str_space,space)-$l(Str)-1)
At(Str)
	q $$Rt($$Lt(Str))
Qt(Str,Sym)
	s:$g(Sym)="" Sym=$c(34)
	q Sym_$g(Str)_Sym
28 апр 17, 16:39    [20444474]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12773
AlexKB
ZLOAD разве не нужно?

Я не разбираюсь в ГТ.М

Т.ч. ответа у меня нет.
28 апр 17, 16:40    [20444479]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
AlexKB
Member

Откуда: Запорожье
Сообщений: 682
krvsa,
В программном буфере уже есть программа, зачем движку ее заменять, вот и исполняется старая.
28 апр 17, 16:43    [20444495]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 12773
Нашел таки проблему...

Если zlink убирать в подпрограмму - тогда и получаю проблему.

Если делать как в примере - все работает

tmpKSA ;;Тест;;[ 28.04.2017 16:46 ]
	n
	s rtn="test"_$j
	s txt($i(txt))=" n"
	s tim=$$Time(,3)
	s txt($i(txt))=" w !,"_$$Qt(tim)
	s txt($i(txt))=" q"
	s io=$i
	s file=$$path("m")_rtn_".m"
	w !,"save ",file r *yy
	s dev=$$fOpen(file)
	i dev="" q:$q "" q
	u dev
	s row=""
	f  s row=$o(txt(row)) q:row=""  w txt(row),!
	c dev
	u io
	w !,"zlink ",rtn r *yy
	zlink rtn
	w !,"ok" r *yy
	w !,tim
	d @("^"_rtn)
	d delRtn(rtn)
	q
path(Type)
	n path
	s:$g(Type)="" Type="m"
	s path=$p($zro," ")
	q:Type="o" $p(path,"(")_"/"
	s path=$s(path["(":$p($p(path,"(",2),")"),1:path)
	q path_"/"
fOpen(File,Typ,Byte,Sym)
	n oet
	s:$g(Typ)="" Typ="W"
	q:":\/"[$e($re(File)) ""
	s oet=$et
	d FOPEN
	s $et=oet
	q $s($t:File,1:"")
FOPEN ; Собственно открытие
	i Typ="W" o File:(newversion:noreadonly):0 q
	i Typ="M" o File::0 q
	o File:(readonly):0
	q
delRtn(Rtn,Type)
	n ok,path
	s:$g(Type)="" Type=0
	s path=$$path("m")
	s ok=1
	w:'Type !,path_Rtn_".m" r *yy
	s:'Type ok=$$delFile(path_Rtn_".m")
	w !,ok r *yy
	i 'ok q:$q ok q
	s path=$$path("o")
	w !,path_Rtn_".o" r *yy
	s ok=$$delFile(path_Rtn_".o")
	w !,ok r *yy
	q:$q ok
	q
delFile(File)
	n ok
	s ok=$$com("rm","-f "_File)
	q:$q ok
	q
com(Com,Prm)
	n p,str
	s p="runCommand"
	s Com=$$At(Com)
	s:$g(Prm)'="" Com=Com_" "_Prm
	i $l(Com)>250 q:$q 0 q
	o p:(COMMAND=Com:READONLY)::"PIPE"
	u p
	r str
	c p
	q:$q $s(str="":1,1:str)
	q
Time(Sec,Type)
	n hour,min,sec
	s Sec=$g(Sec,$H)
	q:Sec[":" $p(Sec,":")*3600+($p(Sec,":",2)*60)+$p(Sec,":",3)
	s Type=$g(Type,1)
	s:Sec["," Sec=$p(Sec,",",2)
	s hour=$tr($j(Sec\3600,2)," ",0)
	s min=$tr($j(Sec#3600\60,2)," ",0)
	s sec=$tr($j(Sec#60,2)," ",0)
	q $s(Type=1:hour_":"_min,Type=2:min_":"_sec,1:hour_":"_min_":"_sec)
Lt(Str)
	q $e(Str,$f(Str_".",$e($tr(Str_"."," ")))-1,$l(Str))
Rt(Str)
	n space
	s space=$j("",$l(Str))
	q $e(Str,0,$f(Str_space,space)-$l(Str)-1)
At(Str)
	q $$Rt($$Lt(Str))
Qt(Str,Sym)
	s:$g(Sym)="" Sym=$c(34)
	q Sym_$g(Str)_Sym
28 апр 17, 16:53    [20444574]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1932
krvsa,
Попробуйте первоначально переместится в соответствующий каталог командой:
s $zro="/home/databallet/o(/home/databallet/r) /usr/gtm63A" (ваш путь)
Потом сохраняйте и компилируйте
29 апр 17, 06:32    [20445567]     Ответить | Цитировать Сообщить модератору
 Re: [GT.M] zlink  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 1932
http://tinco.pair.com/bhaskar/gtm/doc/books/pg/UNIX_manual/ch08s50.html
29 апр 17, 07:06    [20445574]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить