Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пробег по глобалу / 17 сообщений из 17, страница 1 из 1
06.08.2007, 17:58
    #34708693
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Как организовать пробег по любому глобалу с выводом на экран всех его "свойств"?
То есть есть глобал
^X("one")=....
^X("one",1)=....
^X("one",2)=....
^X("two")=....
^X("two,1")=....
^X("two,2")=....
^X("three")=....
^X("four")=....
ну и тп
Надо чтоб на экран вывелись просто вот эти его неповторящиеся части :
one
two
three
four
и тд

Надо чтоб метод был уникальным.. то есть чтоб в метод подавалось только название глобала!

У меня не получается то ли глобал нормално в метод подать.. так как обращаюсь к огромному глобалу, а он тока выводит кол-во на экран.. и все $D(glob) получаются пустые...
Кроме $D и $G ничего больше не работает, даже не компилиться.. в общем все как-то странно..
В общем, помогите написать универсальный метод для глобала!!!!

Вот что попытались сделать:
ClassMethod global(ByRef glob)
{
if $D(glob){
w "glob= ",glob,!
w "length= ",$LENGTH(glob), !
for i=1:1:glob {
w $D(glob(i), i),!
q:i=20
}

}
else {
w "no such"
}
}
...
Рейтинг: 0 / 0
06.08.2007, 18:25
    #34708770
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
proc(p) ; переда'м имя глобала типа p="^x"
s a="" f s a=$o(@(p_"(a)") q:a="" w !,a
q
...
Рейтинг: 0 / 0
06.08.2007, 18:29
    #34708783
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
или же ... с кавычками, если всё правильно в примере, есть сложность .... требуется уточнение задачи
...
Рейтинг: 0 / 0
06.08.2007, 18:37
    #34708811
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Sergo Gromovили же ... с кавычками, если всё правильно в примере, есть сложность .... требуется уточнение задачи

Есть некий глобал. У него есть какие-то постоянные свойства.
Вот пример простого темпового глобала:
^CacheTemp(50948,"%ClassName")=<<"Returns the object's class.......>>
^CacheTemp(50948,"Format")=<<"Formats th.......l>">>
^CacheTemp(50948,"GetCompBuild")=Returns the build number for the specified component.
^CacheTemp(50948,"GetCompBuildDate")=Returns the build date for the specified component.
^CacheTemp(50948,"GetCompBuildOS")=Returns the operating system Caché was built for.
^CacheTemp(50948,"GetCompBuildTime")=Returns the Time of Build.
^CacheTemp(50948,"GetCompPatchId")=Returns the patch ID[s] included in this version of

В результате мне надо вывести список:
%ClassName
Format
GetCompBuild
GetCompBuildDate
GetCompBuildOS
GetCompBuildTime
GetCompPatchId

То есть, по большому счету, все то, что в скобочках и то, что не ID-шник!!! Назовем это неким "свойством" глобала! Если их там несколько, то можно просто через запятую... все равно!!

И так надо по-любому глобалу!
...
Рейтинг: 0 / 0
06.08.2007, 18:57
    #34708872
Sergo Gromov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
proc(p) ; передаём имя глобала типа p="^x" или p="^x(12345,"
s:$e(p,$l(p))'="," p=p_"("
s a="" f s a=$o(@(p_"a)") q:a="" w !,a
q
...
Рейтинг: 0 / 0
06.08.2007, 19:46
    #34708935
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Смотрите еще функции
$query, а также связанные - $qsubscript, $qlength.

Иногда с ними бывает проще работать, чем с $order
...
Рейтинг: 0 / 0
06.08.2007, 20:28
    #34708978
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
А есть ещё индексная косвенность.
Вот здесь написано : /csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_operators#GCOS_C6551
Чтобы вместо
Sergo Gromov
Код: plaintext
1.
2.
3.
proc(p) ; передаём имя глобала типа p="^x" или p="^x(12345,"
s:$e(p,$l(p))'="," p=p_"("
s a="" f s a=$o(@(p_"a)") q:a="" w !,a
q

писать
Код: plaintext
1.
2.
proc(p) ; передаём имя глобала типа p="^x" или p="^x(12345)"
s a="" f s a=$O(@p@(a)) q:a="" w !,a
...
Рейтинг: 0 / 0
07.08.2007, 09:57
    #34709524
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Я уже начал думать что только мы такой синтаксис используем (@p@(a))
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.08.2007, 10:06
    #34709557
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Мы тоже используем.
Хотя лично я стараюсь его избегать.
...
Рейтинг: 0 / 0
07.08.2007, 10:28
    #34709648
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
спасибо!
только вот еще что: если бежать таким способом s a="" f s a=$O(@p@(a)) q:a="" w !,a
то получается вот что
если есть глобал
^p=1
^p(1,"one")=233
^p(1,"two")=254
^p(1,"three")=254
^p("ID")=44

то выводит такой список
1
ID

то есть он видит тока первое значение! а если мне надо чтобы выводил все ТЕСТОВЫЕ значения, то есть надо, чтоб он еще вовнутрь глобала прошел!

то есть как сделать, чтобы выводил так
one
two
three
ID

И вообще такое возможно сделать?
...
Рейтинг: 0 / 0
07.08.2007, 10:32
    #34709659
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Все получилось отлично, как и надо было!!! Как раз через s a="" f s a=$O(@p@(a)) q:a="" w !,a
просто не тот глобал указали))
Еще раз огромное спасибо!!
...
Рейтинг: 0 / 0
07.08.2007, 10:57
    #34709777
Александр Коблов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Блок А.Н. Мы тоже используем.
Хотя лично я стараюсь его избегать.
А почему?
...
Рейтинг: 0 / 0
07.08.2007, 12:30
    #34710258
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Код: plaintext
А почему?
Программы читаются хуже, на мой взгляд, лишние затраты на разрешение косвенности.
Если можно сделать просто, я попытаюсь сделать просто. Но это вроде не про этот случай :-)
...
Рейтинг: 0 / 0
07.08.2007, 12:46
    #34710384
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Блок А.Н.Программы читаются хуже, на мой взгляд, лишние затраты на разрешение косвенности.
У нас тоже некоторые так считали Но благо что такие времена прошли...
...
Рейтинг: 0 / 0
07.08.2007, 12:50
    #34710398
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
LenRover , давай определимся с терминологией... :)
Код: plaintext
1.
s ^tmp("one")= 1 
Так вот...
tmp - имя глобала
one - узел
1 - значение

Может конечно кто-то подругому называет...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
07.08.2007, 12:53
    #34710416
LenRover
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
Ну да, это и имелось в виду!! Я неправильно обозвала)))
Мне это и требуется, вывести список всех узлов глобала, ну и чтобы они не повторялись (это-то просто, а вот с обходом сложнее..)
...
Рейтинг: 0 / 0
07.08.2007, 16:18
    #34711360
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пробег по глобалу
LenRoverа вот с обходом сложнее..)
Это с непривычки... :)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пробег по глобалу / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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