AQUI UN EJEMPLO, ESPERO TE SIRVA.
SALUDOS,
HECTOR VERA
-----Mensaje original-----
De: Fran Mart�n [mailto:[EMAIL PROTECTED]
Enviado el: Mi�rcoles, 22 de Diciembre de 2004 04:53 a.m.
Para: [email protected]
Asunto: RE: Manejo de API
Hola,
Perdona pero no consigo obtener la longitud y el tipo de los parametros
de
los ficheros de mensajes, por favor necesitar�a si alguien tiene algun
ejemplo os lo agradecer�a.
Un saludo y muchas gracias.
-----Mensaje original-----
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] nombre de Loinaz Balaguer
Enviado el: lunes, 13 de diciembre de 2004 13:59
Para: [email protected]
Asunto: Re: Manejo de API
Hola:
Te env�o un ejemplo con la API QMHRCVM que es parecida y que tiene un
tratamiento de los campos con desplazamiento tipo CHAR(*).
Espero que te sirva.
--
Loinaz Balaguer
T�cnica de Sistemas
Departamento de Nuevas Tecnolog�as
Ayuntamiento de Vitoria-Gasteiz
[EMAIL PROTECTED]
Fran Mart�n escribi�:
> Hola foro,
>
> Alguien me podr�a explicar, como mediante el API QMHRTVM( de
> manejo de mensajes) , puedo obtener el tipo de variable y la longitud
> de un ID de mensajes con par�metros.
>
>
> P.E:
>
> Texto del mensaje : La llamada al programa &1 es fallida.
>
> Necesitar�a saber el tipo de variable que es el parametro &1
>
> Gracias.
>
_____________________________________________________
Forum.HELP400 es un servicio m�s de NEWS/400.
� Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja, env�a el mensaje resultante de pulsar
mailto:[EMAIL PROTECTED]
/*--+------------------------------------------------------------+--*/
/*--+ PROGRAM ID : $MONMSGQ +--*/
/*--+ PROGRAM NAME : CL OF MONITOR MESSAGE QUEUE +--*/
/*--+------------------------------------------------------------+--*/
/*--+ VERSION : 1.1 (2001/05/25) *PGM-->*CMD +--*/
/*--+ 1.0 (1999/10/12) +--*/
/*--+------------------------------------------------------------+--*/
PGM PARM(&MSGQANDLIB &MSGID &ACTION &RPY &CMD &CONTINUE &WAIT)
/*--+------------------------------------------------------------+--*/
/* + DECLARE + */
/*--+------------------------------------------------------------+--*/
/* COMMAND PARAMETER(S) FOR THIS PROGRAM */
DCL VAR(&MSGQANDLIB) TYPE(*CHAR) LEN( 20 ) /* MSGQ AND LIBRARY */
DCL VAR(&MSGQ ) TYPE(*CHAR) LEN( 10 ) /* MESSAGE QUEUE */
DCL VAR(&MSGQLIB ) TYPE(*CHAR) LEN( 10 ) /* LIBRARY */
DCL VAR(&MSGID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */
DCL VAR(&ACTION ) TYPE(*CHAR) LEN( 5 ) /* ACTION */
DCL VAR(&RPY ) TYPE(*CHAR) LEN( 132 ) /* REPLY */
DCL VAR(&CMD ) TYPE(*CHAR) LEN(3000 ) /* COMMAND TO RUN */
DCL VAR(&CONTINUE ) TYPE(*CHAR) LEN( 4 ) /* CONTINUE ? */
DCL VAR(&WAIT ) TYPE(*CHAR) LEN( 6 ) /* WAIT TIME */
/* SHARED PARAMETERS FOR THIS PROGRAM */
DCL VAR(&SH_MSG ) TYPE(*CHAR) LEN( 80 ) /* MESSAGE */
DCL VAR(&SH_MSGID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */
DCL VAR(&SBMJOB ) TYPE(*CHAR) LEN(3500 ) /* SUBMIT JOB COMMAND */
DCL VAR(&CMDLEN ) TYPE(*DEC ) LEN( 15 5) /* LENGTH OF COMMAND */
/*--+--------------------+--*/
/* + PARAMETERS FOR API + */
/*--+--------------------+--*/
/* QMHRCVM */
DCL VAR(&RCM_MSG ) TYPE(*CHAR) LEN( 25 ) /* MESSAGE */
DCL VAR(&MSG_ID ) TYPE(*CHAR) LEN( 7 ) /* MESSAGE ID */
DCL VAR(&MSG_TYP ) TYPE(*CHAR) LEN( 2 ) /* MESSAGE TYPE */
DCL VAR(&MSG_KEY ) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */
DCL VAR(&MSG_KEYBIN) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */
DCL VAR(&RCM_MSGLEN) TYPE(*CHAR) LEN( 4 ) /* LENGTH OF MESSAGE */
DCL VAR(&RCM_FORMAT) TYPE(*CHAR) LEN( 8 ) /* FORMAT */
DCL VAR(&RCM_MSGQ ) TYPE(*CHAR) LEN( 20 ) /* MESSAGE QUEUE */
DCL VAR(&RCM_MSGTYP) TYPE(*CHAR) LEN( 10 ) /* MESSAGE TYPE */
DCL VAR(&RCM_MSGKEY) TYPE(*CHAR) LEN( 4 ) /* MESSAGE KEY */
DCL VAR(&RCM_WAIT ) TYPE(*CHAR) LEN( 4 ) /* WAIT TIME */
DCL VAR(&RCM_ACTION) TYPE(*CHAR) LEN( 10 ) /* ACTION */
DCL VAR(&RCM_ERRCD ) TYPE(*CHAR) LEN( 15 ) /* ERROR CODE */
/*--+------------------------------------------------------------+--*/
/* + START OF PROGRAM + */
/*--+------------------------------------------------------------+--*/
/*--+------------------------------------------------------------+--*/
/* + INITIALIZE + */
/*--+------------------------------------------------------------+--*/
/*- DIVISION OF COMMAND PARAMETER ----------------------------------*/
CHGVAR VAR(&MSGQ ) VALUE(%SST(&MSGQANDLIB 1 10))
CHGVAR VAR(&MSGQLIB ) VALUE(%SST(&MSGQANDLIB 11 10))
/*- CHECK OF COMMAND PARAMETER -------------------------------------*/
/* FOR MSGQ */
IF ((&MSGQLIB *NE '*LIBL' ) *AND (&MSGQLIB *NE '*CURLIB')) DO
CHKOBJ OBJ(&MSGQLIB) OBJTYPE(*LIB)
MONMSG MSGID(CPF9801) EXEC(DO)
RCVMSG MSGQ(*PGMQ) RMV(*YES)
/* MSG: LIBRARY NOT FOUND */
SNDPGMMSG MSGID(CPF9810) MSGF(QCPFMSG) +
MSGDTA(&MSGQLIB) +
MSGTYPE(*ESCAPE)
ENDDO
ENDDO
CHKOBJ OBJ(&MSGQLIB/&MSGQ) OBJTYPE(*MSGQ)
MONMSG MSGID(CPF9801) EXEC(DO)
RCVMSG MSGQ(*PGMQ) RMV(*YES)
/* MSG: MSG QUEUE IN LIBRARY NOT FOUND */
SNDPGMMSG MSGID(CPF2403) MSGF(QCPFMSG) +
MSGDTA(&MSGQANDLIB) +
MSGTYPE(*ESCAPE)
ENDDO
/* IF &ACTION IS *CMD OR *BOTH */
IF ((&ACTION *EQ '*CMD') *OR (&ACTION *EQ '*BOTH')) DO
IF (&CMD *EQ ' ') DO
CHGVAR VAR(&SH_MSG) VALUE('CMD PARAMETER' *BCAT +
'REQUIRED WITH' *BCAT +
'ACTION(' *CAT +
&ACTION *TCAT +
')' )
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA(&SH_MSG) +
MSGTYPE(*ESCAPE)
ENDDO
ENDDO
/*- PARAMETER SETTING ----------------------------------------------*/
/* FOR QMHRCVM */
CHGVAR VAR(%BIN(&RCM_MSGLEN)) VALUE(25)
CHGVAR VAR(&RCM_FORMAT) VALUE('RCVM0200')
CHGVAR VAR(&RCM_MSGQ ) VALUE(&MSGQANDLIB)
CHGVAR VAR(&RCM_MSGTYP) VALUE('*ANY')
CHGVAR VAR(&RCM_MSGKEY) VALUE(' ')
CHGVAR VAR(%BIN(&RCM_WAIT )) VALUE(&WAIT)
CHGVAR VAR(&RCM_ACTION) VALUE('*OLD')
CHGVAR VAR(%BIN(&RCM_ERRCD 1 4)) VALUE(15)
/*--+------------------------------------------------------------+--*/
/* + M A I N + */
/*--+------------------------------------------------------------+--*/
$_MAIN_:
CALL PGM(QMHRCVM ) PARM(&RCM_MSG +
&RCM_MSGLEN +
&RCM_FORMAT +
&RCM_MSGQ +
&RCM_MSGTYP +
&RCM_MSGKEY +
&RCM_WAIT +
&RCM_ACTION +
&RCM_ERRCD )
CHGVAR VAR(&MSG_ID ) VALUE(%SST(&RCM_MSG 13 7))
CHGVAR VAR(&MSG_TYP ) VALUE(%SST(&RCM_MSG 20 2))
CHGVAR VAR(&MSG_KEY ) VALUE(%SST(&RCM_MSG 22 4))
CHGVAR VAR(&MSG_KEYBIN) VALUE(%BIN(&MSG_KEY))
MONMSG MSGID(CPF0819) EXEC(DO)
RCVMSG MSGQ(*PGMQ) RMV(*YES)
ENDDO
/* IF MESSAGE ID FOUND IN MESSAGE QUEUE */
IF (&MSG_ID *EQ &MSGID) DO
/* FOR REPLY ACTION */
IF ((&ACTION *EQ '*RPY') *OR (&ACTION *EQ '*BOTH')) DO
SNDRPY MSGKEY(&MSG_KEY) MSGQ(&MSGQLIB/&MSGQ) RPY(&RPY) RMV(*NO)
MONMSG MSGID(CPF2401 CPF2403 CPF2408 CPF2410 +
CPF2411 CPF2420 CPF2422 CPF2432 +
CPF2433 CPF2477 CPD2406 ) EXEC(DO)
RCVMSG MSGQ(*PGMQ) RMV(*NO ) MSGID(&SH_MSGID)
CHGVAR VAR(&SH_MSG) VALUE('SEE THE PREVIOUSLY' *BCAT +
'LISTED MESSAGE ' *BCAT +
'IN THE JOBLOG ' *BCAT +
'(MSGID:' *CAT +
&SH_MSGID *CAT +
')' )
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA(&SH_MSG) +
MSGTYPE(*ESCAPE)
ENDDO
ENDDO
/* FOR SBMJOB ACTION */
IF ((&ACTION *EQ '*CMD') *OR (&ACTION *EQ '*BOTH')) DO
CHGVAR VAR(&SBMJOB ) VALUE('SBMJOB CMD(' *CAT +
&CMD *CAT +
')' )
CHGVAR VAR(&CMDLEN ) VALUE(3500)
CALL PGM(QCMDEXC) PARM(&SBMJOB &CMDLEN)
ENDDO
ENDDO
IF (&CONTINUE *EQ *YES) GOTO $_MAIN_
/*--+------------------------------------------------------------+--*/
/* + END OF PROGRAM + */
/*--+------------------------------------------------------------+--*/
$_EXIT_:
ENDPGM