Então, eu tenho uma consulta para listar nossos programas de RPG:
SELECT OBJNAME
FROM
(SELECT OBJNAME AS SCHEMA FROM TABLE (QSYS2.OBJECT_STATISTICS('*ALLSIMPLE', 'LIB')) S) AS SCHEMAS
,LATERAL (SELECT * FROM TABLE(QSYS2.OBJECT_STATISTICS(SCHEMAS.SCHEMA, 'PGM')) X) AS PROGRAMS
LEFT JOIN QSYS2.PROCEDURES
ON QSYS2.PROCEDURES.PROCNAME = PROGRAMS.OBJNAME
AND QSYS2.PROCEDURES.PROCSCHEMA = PROGRAMS.OBJLONGSCHEMA
WHERE
PROCNAME IS NULL
AND SCHEMAS.SCHEMA = 'MYLIB'
;
Agora, existe alguma maneira, dado o nome de um programa de RPG, de obter o conteúdo dele via SQL?
(Ou, falhando o SQL, alguma outra maneira de obter o conteúdo de um aplicativo C#?)
Depende da sua definição de "conteúdo"...
Na v7.3 e mais na v7.4, a IBM adicionou alguns serviços para informações do programa, informações do módulo, etc... IBM i Services (SQL)
Mas se você está pensando em "conteúdo" como em uma lista de fontes...
Então você precisaria ter o programa compilado com DBGVIEW(*LIST|*COPY|*ALL) e então usar as APIs do depurador para recuperar o código-fonte...