 /* ------------------------------------------------- */
 /* SELECT del nou id_message YMESG                   */
 /* -------------------------------------------------
 XSELECT_YMESG:PROC;

    EXEC SQL SELECT MAX(YMESG)
         INTO :VD2044.YMESG
         FROM VD02044;

    VD2044.YMESG = VD2044.YMESG + 1;
    ymesg_pic = VD2044.YMESG;
    ymesg_char= ymesg_pic;

 END XSELECT_YMESG; */
 /* ------------------------------------------------- */
 /* Insert del nou id_message amb YESTAD = 'RECEIVED' */
 /* ------------------------------------------------- */
 XINSERT_YMESG:PROC;

    EXEC SQL SET :VD2044.YMESG = NEXT VALUE FOR VEXG.SQ02044;

    ymesg_pic = VD2044.YMESG;
    ymesg_char= ymesg_pic;

    VD2044.YMTID  = '';
    IF KR5060.YMTID = '' THEN VD2044.YMTID  = KR5060.YMTID;
    VD2044.YCIA   = KR5060.YCLI;
    VD2044.WTRANS = ztrn;
    VD2044.WSTRNG = zjcl;
    VD2044.WSTEP  = zpas;
    VD2044.WPROG  = zprog;
    VD2044.WAPP   = '';
    VD2044.YUSER  = zusuari;
    VD2044.YTMESG = Msg_type;
    VD2044.WORIGE = '';
    VD2044.WDESTI = '';
    VD2044.YESTAD = 'RECEIVED';
    VD2044.YESEXT = '';
    VD2044.NRETRY = 0;
    VD2044.WERROR = '';
    VD2044.WDESCE = '';

    EXEC SQL INSERT  INTO VD02044
         (YMESG,YCIA,WTRANS,WSTRNG,WSTEP,WPROG,WAPP,YUSER,YTMESG,
          WORIGE,WDESTI,YESTAD,YESEXT,NRETRY,WERROR,WDESCE,TIHOST,
          YMTID)
         VALUES
         (:VD2044.YMESG,:VD2044.YCIA,:VD2044.WTRANS,
          :VD2044.WSTRNG,:VD2044.WSTEP,
          :VD2044.WPROG,:VD2044.WAPP,:VD2044.YUSER,:VD2044.YTMESG,
          :VD2044.WORIGE,:VD2044.WDESTI,:VD2044.YESTAD,:VD2044.YESEXT,
          :VD2044.NRETRY,:VD2044.WERROR,:VD2044.WDESCE,
          CURRENT_TIMESTAMP,:VD2044.YMTID);

 END XINSERT_YMESG;

 /* ------------------------------------------------- */
 /* Update del nou id_message amb YESTAD = 'ENQUEUED' */
 /* ------------------------------------------------- */
 XUPDATE_YMESG:PROC;

    /* Afegir YCERT, vstsjbg 25.06.2014 */
    If kr5060.YEMCON = 'S' then VD2044.YCERT = 'T';
    Else VD2044.YCERT = 'F';
    /* ------------- vstsjbg 25.06.2014 */

    VD2044.YCIA   = KR5060.YCLI;
    VD2044.WORIGE = trim(from_2044,' ');
    VD2044.WDESTI = trim(to_2044,' ');
    VD2044.YESTAD = 'ENQUEUE';
    EXEC SQL UPDATE VD02044
             SET   WORIGE = :VD2044.WORIGE,
                   WDESTI = :VD2044.WDESTI,
                   YESTAD = :VD2044.YESTAD,
                   YCERT  = :VD2044.YCERT,
                   TIMQ   = CURRENT_TIMESTAMP
             WHERE YMESG  = :VD2044.YMESG AND
                   YCIA   = :VD2044.YCIA;

 END XUPDATE_YMESG;

 /* ------------------------------------------------- */
 /* Update del nou id_message per informar d'error    */
 /* ------------------------------------------------- */
 XUPDATE_YMESG_ERROR:PROC;

    dcl resp_pic pic'99999999' init(0);
    dcl resp_cha char(8) init('');

    VD2044.YCIA   = KR5060.YCLI;
    VD2044.WORIGE = from_2044;
    VD2044.WDESTI = to_2044;
    VD2044.WDESCE = text_error;
    %IF @PARMVSI_YENTR  = 'B'
    %THEN %DO;

       resp_pic = KR5060.YRETX2;
       resp_cha = resp_pic;

       VD2044.WERROR = resp_cha;
    %END;
    %ELSE DO;
       resp_pic = KR3803.mqresp;
       resp_cha = resp_pic;
       VD2044.WERROR =  resp_cha;
       resp_pic = KR3803.mqretc;
       resp_cha = resp_pic;
       VD2044.WERROR = VD2044.WERROR||' '||resp_cha;
    %END;
    VD2044.YESTAD = 'ERROR';
    EXEC SQL UPDATE VD02044
             SET   WERROR = :VD2044.WERROR,
                   WDESCE = :VD2044.WDESCE,
                   YESTAD = :VD2044.YESTAD,
                   WORIGE = :VD2044.WORIGE,
                   WDESTI = :VD2044.WDESTI
             WHERE YMESG  = :VD2044.YMESG AND
                   YCIA   = :VD2044.YCIA;

 END XUPDATE_YMESG_ERROR;
 /* ------------------------------------------------- */
 XOMPLIR_SQLCODE:PROC;

    @SQLCODE(1) = -803;    /* DUPLICADO EN INSERT O UPDATE */
    @NUM_SQLCODE = 1;

 END XOMPLIR_SQLCODE;
