Перечисление объектов во всех библиотеках внутри QSYS.LIB

Практически исчерпывающая информация о таблицах (PF, включая PF-SRC, LF и т. д.) находится в QSYS2.SYSTABLES.

Однако когда дело доходит до перечисления всех объектов (например, включая PGM, SRVPGM, DTAQ, DTAARA и т. д.) в определенной библиотеке, существует ли единый источник информации?

Интересно, можно ли запросить такую ​​информацию без предоставленной *ALLOBJ привилегии, если нужно узнать только имя и тип файла?

Прямо сейчас единственное, что приходит на ум, это полагаться на SYSTABLES и перечислять все объекты, связанные с PF + LF. Затем определите источник, из которого эти объекты были скомпилированы (если есть), и молитесь, чтобы остальные объекты также были скомпилированы из этого источника.

Однако это не поможет, если исходник, скажем, только PGM.

Любые идеи?


person im_infamous    schedule 28.05.2018    source источник
comment
Вам требуется доступ *OBJOPR к объекту, прежде чем вы даже сможете увидеть, что он существует (кроме как через каталог базы данных, как вы упомянули). Я бы посоветовал вам попросить вашего администратора IBM i помочь вам с этим - возможно, они могли бы запланировать вам еженедельную (или любую другую) выписку "всех объектов", чтобы вы могли запросить это. Однако мой вопрос здесь таков: что вам на самом деле нужно знать с точки зрения бизнеса? Поскольку есть и другие механизмы, которые могут быть полезны, например, если вы хотите узнать об объектах, которые изменились, для этого есть опции аудита действий.   -  person MandyShaw    schedule 28.05.2018
comment
P.S. Что касается *OBJOPR, вы можете увидеть объект, указанный в его родительской библиотеке (например, через dsplib) без доступа *OBJOPR к объекту, я, честно говоря, не могу вспомнить, и у меня нет под рукой системы IBM i, чтобы проверить.   -  person MandyShaw    schedule 28.05.2018
comment
@MandyShaw спасибо за ваш вклад. бизнес-перспектива довольно прямолинейна - иметь единую точку всех бизнес-объектов, чтобы отслеживать пространство имен для пересечения имен объектов (и избегать последующей замены при установке из-за того же имени).   -  person im_infamous    schedule 29.05.2018
comment
Я сбит с толку. Почему бы вам не захотеть заменить объект при установке новой версии (я так понимаю, что с объектами данных нужно быть осторожным)? Обо всем этом обычно заботится ваша система управления изменениями, какую из них вы используете?   -  person MandyShaw    schedule 29.05.2018
comment
Но если вам нужен полный список, предложите запланировать dspobjd *all *all в выходной файл для соответствующих библиотек с подходящим интервалом и с учетом доступа, как указано выше.   -  person MandyShaw    schedule 29.05.2018
comment
Если вы имеете в виду, что не хотите случайно выбирать существующее имя, наверняка вам просто нужно какое-то хранилище элементов управления, например. таблица, в которой разработчики регистрируют выбранные ими имена?   -  person MandyShaw    schedule 29.05.2018
comment
@MandyShaw пришлось разработать эту таблицу почти с нуля из-за того, что большая устаревшая кодовая база была заброшена в течение длительного времени.   -  person im_infamous    schedule 30.05.2018
comment
Затем я бы сделал одноразовый dspobjd *all *all для каждой из соответствующих библиотек, чтобы выполнить первоначальный сбор информации. Обратитесь за помощью к администраторам IBM i, если вы не уверены, что у вас есть полномочия на все действия. Но если люди разрабатывают для вас дополнительный код, я бы посоветовал им разобраться в этом — у них, вероятно, есть свои собственные механизмы/соглашения по кодированию, которые им нужно будет привести в соответствие с кодовой базой.   -  person MandyShaw    schedule 30.05.2018
comment
@MandyShaw спасибо за ваши идеи, сделаю   -  person im_infamous    schedule 31.05.2018
comment
Вам может показаться, что сервисная функция OBJECT_STATISTICS проще, как в ответе ниже, она в основном делает то же самое более удобным для sql способом (при условии, что вы можете сказать ей перечислить объекты /всех/типов за один раз, что я думаю это хорошая идея, если вы что-то упустили — вы не упомянули, например, jobd, sbsd, outq или другие элементы управления работой, любой из которых может иметь ключевое значение для того, как ваше приложение работает на практике).   -  person MandyShaw    schedule 31.05.2018


Ответы (1)


Ознакомьтесь с OBJECT_STATISTICS UDTF.

Найти все журналы в библиотеке МЯЦТ.

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MJATST ','JRN') ) AS X;

or

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MJATST ','*JRN') ) AS X ;

Найти все журналы и приемники журналов в библиотеке МЯЦТ.

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MJATST ','JRN JRNRCV') ) AS X;

or

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MJATST ','*JRN *JRNRCV') ) AS X ;

Найдите все программы и сервисные программы в библиотеке MYLIB. Используйте *ALLSIMPLE, чтобы быстро вернуть список, опуская подробную информацию.

SELECT * FROM TABLE (QSYS2.OBJECT_STATISTICS('MYLIB','PGM SRVPGM', '*ALLSIMPLE') ) AS X;
person David G    schedule 29.05.2018
comment
Это оно! обновил свой ответ примерами из исходной ссылки - person im_infamous; 30.05.2018