IBM for i/RPG: Как скомпилировать модуль и создать сервисную программу одним вызовом в IBM Rational Developer for i (RDi)
Как избежать необходимости использовать меню компиляции RDi 2 раза подряд - сначала создать модуль SQL RPGLE, а затем создать связанную сервисную программу?
1 ответ
Для этого вы сначала создаете программу CL (назовем ее CRTSRVPRG) следующим образом:
PGM PARM(&LIBRARY &SOURCE &NAME &HASITFCHG)
DCL VAR(&LIBRARY) TYPE(*CHAR) LEN(10)
DCL VAR(&SOURCE) TYPE(*CHAR) LEN(10)
DCL VAR(&NAME) TYPE(*CHAR) LEN(10)
DCL VAR(&HASITFCHG) TYPE(*CHAR) LEN(1)
CRTSQLRPGI OBJ(&LIBRARY/&NAME) SRCFILE(&LIBRARY/&SOURCE) SRCMBR(&NAME) REPLACE(*YES) OBJTYPE(*MODULE) RPGPPOPT(*LVL2) DBGVIEW(*SOURCE) OPTION(*EVENTF)
IF COND(&HASITFCHG = 'Y') THEN(DO)
CRTSRVPGM SRVPGM(&LIBRARY/&NAME) MODULE(&LIBRARY/&NAME) EXPORT(*ALL) SRCFILE(&LIBRARY/&SOURCE)
RTVBNDSRC SRVPGM(&LIBRARY/&NAME) SRCFILE(&LIBRARY/QSRVSRC)
CHGPFM FILE(&LIBRARY/QSRVSRC) MBR(&NAME) SRCTYPE(BND)
ENDDO
ELSE CRTSRVPGM SRVPGM(&LIBRARY/&NAME) MODULE(&LIBRARY/&NAME) EXPORT(*SRCFILE) SRCFILE(&LIBRARY/QSRVSRC) SRCMBR(&NAME)
ENDPGM
Затем в меню Compile / Compile / Work With Compile Command… вы добавляете следующие 2 новые команды:
"Новая сервисная программа или изменение интерфейса"
CALL PGM([ваша библиотека]/CRTSRVPRG) PARM(&L &F &N 'Y') /* OPTION(*EVENTF) SRCMBR(&N) */
"Перекомпилировать сервисную программу"
CALL PGM([ваша библиотека]/CRTSRVPRG) PARM(&L &F &N 'N') /* OPTION(*EVENTF) SRCMBR(&N) */
Совет: вы можете использовать кнопку «Выполнить команду компиляции без запроса» на панели инструментов, чтобы выполнить последнюю команду, не используя меню.
Дополнение в команде
/* OPTION(*EVENTF) SRCMBR(&N) */
дает вам обратную связь для компиляции модуля на вкладке «Список ошибок». К сожалению, отзывов о создании Сервисной программы нет. Для этого вам нужно заглянуть во вкладку "Журнал команд"...