utilidades 141  
febrero 2004    
 
Portada
Dos mandatos publicados en 1995

Dos mandatos publicados en 1995 

En el número 53 de la revista NEWS 3X/400 (abril 1995) publicamos un artículo titulado "Pssst... hay errores ¡Corre la voz!" original de Ernesto Málaga que, presentaba detalladamente dos mandatos de utilidad (MOVPGMMSG y RSNESCMSG) que, apoyados en dos APIs del sistema, simplificaban el reenvío de mensajes de un programa CL hacia su invocador.

A partir de aquella fecha, las utilidades creadas por Ernesto Málaga incorporaban, si era necesario, el uso de dichos mandatos. Formaban parte de esa serie de utilidades "personales" que todos tenemos en nuestra biblioteca y sin las que uno no sabría trabajar.

El problema
Hasta aquí, todo perfecto. Verdaderamente se trata de dos utilidades que, aparte de introducirnos en la gestión de mensajes del OS/400, ilustran la potencia de combinar mandatos, programas CL y APIs. El problema se presenta cuando uno de nuestros lectores recupera de nuestra web (www.help400.com) una de las Utilidades de Ernesto Málaga y, al instalarla, se encuentra con dos mandatos que, aparentemente, no existen. ¿El motivo? Pues que cuando a mediados de 1996 se sustituyó aquel servicio denominado HelpNet (basado en un BBS) por los entonces flamantes servicios de InfoVía e Internet, sólo se recuperaron las Utilidades a partir de enero de aquel año. Como contrapartida, el acceso a su código fuente, hasta entonces reservado a los suscriptores, pasó a la libre disposición de todos los lectores de NEWS/400, fueran o no suscriptores de la revista.

A lo largo de esos ocho años se han recibido muchas consultas al respecto, y nuestra respuesta siempre ha sido que su código fuente se había incluido en la Utilidad del número 66 (el número que coincidió con el cambio de cabecera de la revista, de NEWS 3X/400 a NEWS/400, y con el traspaso a Internet del Servicio HelpNet). No obstante, como los archivos originales habían sido creados en tiempos del Windows 3.11 (el Win95 llegó un poco más tarde) se adjuntaron con nombres ajustados a 8 posiciones (más las 3 de extensión...).

La solución
Sin duda la solución definitiva pasa por cargar en la web los fuentes de los mandatos MOVPGMMSG y RSNESCMSG de forma individualizada. ¿Qué mejor ocasión para "refrescar" aquel artículo? Dicho y hecho. Hemos repasado su contenido y éste, a pesar de los años, sigue vigente. Por tanto, lo hemos incluido completo en el Suplemento de este mes, junto con un índice de las Utilidades de Ernesto Málaga, que podrían estar utilizando dichos mandatos. El enlace situado al inicio de esta página ("código online") le permite recuperar los fuentes de esta utilidad

Guía rápida para instalar MOVPGMMSG y RSNESCMSG

Propósito:
Simplificar la tarea común de retroenviar mensajes desde un programa CL a su invocador, mediante las APIs de la V2R2 y superiores.

Fuentes/Objetos necesarios:
- Mandato MOVPGMMSG: Muestra el prompt para las opciones de mensaje de programa.
- VCP MOVPGMMSG: Programa validador del mandato. Reformatea algunos parámetros y calcula otros, antes de pasarlos a la API QMHMOVPM.
- Mandato RSNESCMSG: Muestra el prompt para la opción de mensaje de programa.

Instalación de MOVPGMMSG y RSNESCMSG:
El mandato MOVPGMMSG requiere de la existencia de dos descripciones de mensajes, USR8001 y USR8002, en cualquier archivo de mensajes que posea. Si no ha creado ningún archivo de mensajes, ejecute el siguiente mandato:

CRTMSGF MSGF(biblioteca/usrmsgf) TEXT('User message file')

...donde biblioteca es el nombre de la biblioteca que va a contener a MOVPGMMSG y RSNESCMSG, y usrmsgf es un nombre arbitrario de su elección. A continuación, ejecute los siguientes mandatos:

CRTCMD CMD(biblioteca/MOVPGMMSG) PGM(*LIBL/QMHMOVPM) +
SRCFILE(biblioteca/srcfile) +
VLDCKR(*LIBL/MOVPGMMSGV) +
ALLOW(*IPBM *BPGM) MSGF(*LIBL/usrmsgf)

CRTCLPGM PGM(biblioteca/MOVPGMMSGV) +
SRCFILE(biblioteca/srcfile)

CRTCMD CMD(biblioteca/RSNESCMSG) PGM(*LIBL/QMHRSNEM) +
SRCFILE(biblioteca/srcfile) ALLOW(*IPGM *BPGM)

ADDMSGD MSGID(USR8001) MSGF(*LIBL/usrmsgf) +
MSG('MSGKEY y MSGTYPE son mutuamente exclusivos.') +
SECLVL('Si se especifica MSGKEY(*TYPE), deberá otorgar +
al parámetro MSGTYPE un valor diferente de *NONE. +
Si se indica una clave de mensaje específica en MSGKEY, +
deberá especificar MSGTYPE(*NONE).')

ADDMSGD MSGID(USR8002) MSGF(*LIBL/usrmsgf) +
MSG('PGMSTKCNT(0) no se permite con PGMQ(*).') +
SECLVL('Si especifica PGMQ(*) para mover mensajes +
de programa desde la cola de mensajes del programa +
actual, el parámetro PGMSTKCNT deberá tener un valor mayor que cero.')

...donde biblioteca y usrmsgf se han definido arriba, y srcfile es el nombre del archivo fuente donde ha entrado el correspondiente código fuente.

La Redacción.


Total Lecturas: 4027  |  Recomendar su lectura:  


   
   

© Publicaciones HELP400, S.L. (Todos los derechos reservados)