Как найти использование подпрограммы в RPG на IBM i? - PullRequest
2 голосов
/ 25 июня 2019

Если у меня есть сервисная программа с одним модулем, который содержит три подпроцедуры. Есть ли способ программно найти использование отдельных подпроцессов в библиотеке / файле?

Так что-то вроде этого:

MYLIB/MYSRVPGM  <-- My service program object
  PROC1  <-- My first sub-procedure
  PROC2  <-- My second sub-procedure
  PROC3  <-- My third sub-procedure

Тогда у меня есть программа ILE, которая использует PROC1 и PROC3, но не PROC2.

MYLIB/MYPGM  <-- My ILE program object which uses PROC1 and PROC3

Я ищу способ поиска PROC1 или PROC3 и вижу результат возврата MYLIB/MYPGM. Однако поиск PROC2 не должен возвращать результат.

До сих пор я пытался использовать DSPPGMREF, но он возвращает только общий объект (т.е.: MYLIB/MYSRVPGM), а не отдельные используемые подпроцедуры.

Еще один маршрут, который я рискнул, использовал FNDSTRPDM, но это просто сканирование источника для строки PROC1. Это может быть в комментарии и возвращать ложное срабатывание.

Я знаю, что для этого существуют сторонние инструменты, но они не являются жизнеспособными вариантами в настоящее время из-за стоимости. Хотя бесплатные или относительно дешевые могут быть вариантом (я просто не знаю ни о чем). Мне не повезло?

Ответы [ 3 ]

3 голосов
/ 26 июня 2019

Если у вас есть модули для программ, вы можете использовать API List Module Information (QBNLMODI), чтобы получить список импорта модулей.https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/qbnlmodi.htm

0 голосов
/ 26 июня 2019

Я использую плагин iSphere в RDi для этого. Если вы не используете RDi, значит, вы уже отстали от всего, что касается разработки для IBM i. iSphere не имеет прямой возможности поиска импорта, но у него есть средство поиска источников, которое мне нравится больше, чем FNDSTRPDM. Для заданной строки вы можете выполнить поиск члена, исходного файла, всех исходных файлов в библиотеке или даже всего в фильтре RDi.

Да, это поиск по источнику, но относительно легко определить, является ли что-то комментарием или нет.

0 голосов
/ 26 июня 2019

Единственное, что мне известно о том, что может работать из существующих * PGM / * SRVPGM объектов, - это построить что-то вокруг API отладки

Вы сказали, что сторонние инструменты не вариант, я полагаю, вы имеете в виду коммерческие, за которые вы заплатили бы немалые деньги.

А как насчет открытого исходного кода? Взгляните на Easy / 400 Проверка библиотеки программ

...