PGM /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + *PROGRAMA: Crea archivo con miembros del archivo Fuente + * y los COMPILA. + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/ /* Declara el archivo y le asigna un indicador de apertura */ DCLF FILE(XXLIBRERIA/MIEMBRORPG) OPNID(AR1) /* Declara variables para trabajar con el archivo */ DCL VAR(®ISTROS) TYPE(*DEC) LEN(10 0) VALUE(0) DCL VAR(&MLNAME) TYPE(*CHAR) LEN(10) DCL VAR(&EOF) TYPE(*CHAR) LEN(1) VALUE(\'0\') DCL VAR(&PRIM) TYPE(*CHAR) LEN(2) /* Declara las variables generales */ DCL VAR(&USUARIO) TYPE(*CHAR) LEN(10) /* Recupera en nombre del usuario que ejecuta el proceso */ RTVJOBA USER(&USUARIO) CHGCURLIB CURLIB(XXLIBRERIA) /* Chequea que exista el archivo XXLIBRERIA/MIEMBRORPG */ CHKOBJ OBJ(XXLIBRERIA/MIEMBRORPG) OBJTYPE(*FILE) MONMSG MSGID(CPF9801) EXEC(GOTO CMDLBL(CREAR)) /* Si existe lo borra y lo crea de nuevo sino va al TAG CREAR y lo crea */ DLTF FILE(XXLIBRERIA/MIEMBRORPG) MONMSG MSGID(CPF3220) CREAR: /* Crea el archivo XXLIBRERIA/MIEMBRORPG con todos los programas RPGLE del+ archivo *CURLIB/QRPGLESRC para posteriormente recorrerlo y compilar + todos los programas */ DSPFD FILE(*CURLIB/QRPGLESRC) TYPE(*MBRLIST) OUTPUT(*OUTFILE) + OUTFILE(XXLIBRERIA/MIEMBRORPG) /* Compila Programas */ COMPILA: /* Valida si el Archivo tiene registros */ RTVMBRD FILE(XXLIBRERIA/MIEMBRORPG) NBRCURRCD(®ISTROS) IF COND(®ISTROS *EQ 0) THEN(GOTO CMDLBL(FINAL)) /* Leer un registro del Archivo */ RCVF OPNID(AR1) MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) VALUE(\'1\')) DOWHILE COND(&EOF = \'0\') CHGVAR VAR(&PRIM) VALUE(%SST(&AR1_MLNAME 1 2)) IF COND(&PRIM *EQ \'RC\' *OR &PRIM *EQ \'RV\' *OR &PRIM *EQ \'RM\') THEN(DO) /* Enviar un mensaje de cual programa se va a compilar */ SNDMSG MSG(\'Miembro [ \' *CAT &AR1_MLNAME *CAT \' ] Leído + para compilar\') TOUSR(&USUARIO) + MSGTYPE(*INFO) /* Compila el Miembro leído del archivo */ /* SI es un Modulo se compila así: */ CRTRPGMOD MODULE(*CURLIB/&AR1_MLNAME) SRCFILE(*CURLIB/QRPGLESRC) MONMSG MSGID(CPF0000) /* SI es un Programa normal se compila así: */ CRTBNDRPG PGM(XXLIBRERIA/AR1_MLNAME) SRCFILE(*CURLIB/QRPGLESRC) MONMSG MSGID(CPF0000) ENDDO /* Leer otro registro del Archivo */ RCVF OPNID(AR1) MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) VALUE(\'1\')) ENDDO DLTF FILE(XXLIBRERIA/MIEMBRORPG) FINAL: ENDPGM