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


Responder a