/**************************************************************** * * * Copyright 2001, 2012 Fidelity Information Services, Inc * * * * This source code contains the intellectual property * * of its copyright holder(s), and is made available * * under a license. If you do not know the terms of * * the license, please stop and do not read further. * * * ****************************************************************/ #include "mdef.h" #include #include "fao_parm.h" #include "error.h" #include "op.h" #include "mval2fao.h" #include "tp_restart.h" #include "gtmmsg.h" #define FAO_BUFFER_SPACE 2048 error_def(ERR_TPRETRY); void op_zmess(unsigned int cnt, ...) { va_list var; const err_ctl *ectl; const err_msg *eptr; UINTPTR_T fao[MAX_FAO_PARMS]; char buff[FAO_BUFFER_SPACE]; unsigned int errnum, j; int faocnt; VAR_START(var, cnt); errnum = va_arg(var, int); cnt--; if (ectl = err_check(errnum)) { GET_MSG_INFO(errnum, ectl, eptr); faocnt = eptr->parm_count; faocnt = (faocnt > MAX_FAO_PARMS ? MAX_FAO_PARMS : faocnt); faocnt = mval2fao(eptr->msg, var, &fao[0], cnt, faocnt, buff, buff + SIZEOF(buff)); va_end(var); if (faocnt != -1) { if (ERR_TPRETRY == errnum) { /* A TP restart is being signalled. Set t_fail_hist just like a TRESTART command would */ op_trestart_set_cdb_code(); } rts_error(VARLSTCNT(faocnt+2) errnum, faocnt, fao[0], fao[1], fao[2], fao[3], fao[4], fao[5], fao[6], fao[7], fao[8], fao[9], fao[10], fao[11]); } } else { va_end(var); rts_error(VARLSTCNT(1) errnum); } }