¿ Quieres imprimir esta página ? Volver a la página principal de Recursos iSeries AS400 ¿ Necesitas ayuda ? En pruebas
Recursos iSeries AS400. Compartiendo generamos conocimiento
Novedades en Recursos iSeries AS400
Últimas noticias del iSeries AS400
RTVUSRDIR - Recupera ID Usuario

Categoría : Programación
Autor : Jose Manuel Berrio
Título : Compilar todos los miembros de cualquier archivo (QRPGSRC, QRPGLESRC, QCLSRC, ...) utilizando ciclos


Descripción del truco:
El siguiente programa CLLE realiza lo siguiente:

1. Declara un archivo y le asigna un indicador de apertura.
DCLF FILE(XXLIBRERIA/MIEMBRORPG) OPNID(AR1)

2. Declara variables para trabajar con el archivo 3. Declara las variables generales si se desea enviar mensajes informativos al usuario.

4. Recupera en nombre del usuario que ejecuta el proceso.

5. Chequea que exista el archivo declarado en el paso 1. XXLIBRERIA/MIEMBRORPG.
Si existe lo borra y lo crea de nuevo sino va al TAG CREAR y lo crea con el comando DSPFD.

6. Valida si el Archivo XXLIBRERIA/MIEMBRORPG tiene registros con una de las variables declaradas para trabajar con el archivo, así:
RTVMBRD FILE(XXLIBRERIA/MIEMBRORPG) NBRCURRCD(&REGISTROS)


7. Si la variable &REGISTROS es igual Cero(0) el archivo no tiene registros y va al final del programa así:
IF COND(&REGISTROS *EQ 0) THEN(GOTO CMDLBL(FINAL))

8. Si la variable &REGISTROS NO es igual Cero(0) el archivo SI tiene registros y los lee todos utilizando un ciclo así:

/* Leer un registro del Archivo */
RCVF OPNID(AR1)

9. Se monitorea la lectura de los registros del archivo así:
MONMSG MSGID(CPF0864) EXEC(CHGVAR VAR(&EOF) VALUE(\'1\'))

a la Variable &EOF se le asigna el valor de \'1\' cuando se lea el ULTIMO registro del archivo y se termina el ciclo que recorre todos los registros del archivo XXLIBRERIA/MIEMBRORPG) identificado como OPNID(AR1)

10. El ciclo se realiza así:
DOWHILE COND(&EOF = \'0\')
la variable &EOF controla el fin de archivo.


Notas:

-El comando SNDMSG Enviar un mensaje al usuario indicándole cual programa se va a compilar

- En la instrucción:
IF COND(&PRIM *EQ \'RC\' *OR &PRIM *EQ \'RV\' *OR &PRIM *EQ \'RM\') THEN(DO) se valida se compile solo aquellos programas que empiecen con las letras RC. RV ó RM.

- En caso de que los programas a compilar sean RPG o RPGLE y si los programas a compilar sean módulos se compilan con el comando CRTRPGMOD, sino se compilan con el comando CRTBNDRPG.


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(&REGISTROS) 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(&REGISTROS)
IF COND(&REGISTROS *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


Ver código fuente CL

Fecha 21-07-2005

Tienes algún truco que quieras compartir con todos los profesionales de Recursos iSeries i5 AS400?. Envianoslo y si resulta seleccionado te enviaremos un vale de Amazon por valor de 50$

Comentarios de usuarios

Nombre:
Mail:
Comentario:
 

Subir a la parte superior de la web

Dossiers técnicos iSeries y AS400
- Dossier de seguridad
- Alta disponibilidad.
¿Buscas trabajo ?
Inscríbete en nuestra lista laboral y recibirás las ofertas de trabajo en tu buzón de correo electrónico.
Nuestros links preferidos
- Tendencias tecnologías de la información
Expertos en materías relacionadas con las tecnologías de la información, nos dan su punto de vista sobre las tendencias actuales y futuras
- Los últimos anuncios sobre hardware-software para iSeries AS400 realizados por IBM
- Freeware. Software gratuito para el iSeries AS400
- Utilidades para el iSeries AS400 realizadas por profesionales
- Documentos. Trucos e ideas para resolver tus problemas
- Manuales. Los manuales y links más interesantes del iSeries AS400

  Links patrocinados
  •  
  •  

[ Soy nuevo |   Profesionales |   AS qué |   Empresas |    Foros |   Recomiéndanos |    Productos ]
 
Recursos iSeries AS400. Es una web de: PUBLICACIONES HELP400, S.L. CIF:B-60-202827 Gran Vía de les Corts Catalanes, núm. 715, Entresuelo – 3ª - Barcelona - Tel.+34.932.310.049