/********************************************************************/ /* */ /* TESTMON : MONMSG のテスト */ /* */ /* Office Quattro Co,.Ltd 2021/03/28 08:08:08 created */ /* */ /* */ /********************************************************************/ #pragma comment(COPYRIGHT, "as400-net.com EnterpriseServer (C) CopyRight \ Office Quattro.Corp. 2020- All right reserved. Users Restricted \ Rights - Use, duplication or disclosure restricted by Office Quattro \ Corp. Licenced Materials-Property of Office Quattro.") #include #include #include #include /* triml */ #include #include #include #include #define TRUE 0 #define FALSE -1 int bLR = FALSE; typedef struct { int BYTESPRO; int BYTESAVL; char MSGID[7]; char RESRVD; char EXCPDATA[100]; } ERRSTRUCTURE; /* Define the error return structure */ ERRSTRUCTURE errcode;/* Error Code Structure for RCVMSG */ volatile _INTRPT_Hndlr_Parms_T ca; /*************************************************************/ /* 内 部 使 用  関  数 */ /*************************************************************/ void GetParam(int argc, char *argv[]); void INZSR(void); void LRRTN(char *argv[]); void MonitorMSG(_INTRPT_Hndlr_Parms_T ca, char *argv[]); /*************************************************************/ /* IMPORT  関  数 */ /*************************************************************/ /*************************************************************/ /* IMPORT  変  数 */ /*************************************************************/ /*************************************************************/ /* 外 部 呼 出 し  関  数 */ /*************************************************************/ /*************************************************************/ /* グ ロ ー バ ル 変 数 */ /*************************************************************/ /*------( 受取りパラメータ値 )----------*/ /*------( 受取りパラメータ値 )----------*/ char ref[133], MSG[133], ERR[1]; /********************************************************************/ /* m a i n --- main module of this pgm */ /* */ /* 1. */ /* 2. */ /* 3. */ /* */ /*------------------------------------------------------------------*/ int main(int argc, char *argv[]){ int rc, sho=10, bunbo = 0; #pragma exception_handler(MONMSG, ca, 0, _C2_MH_ESCAPE, _CTLA_HANDLE) GetParam(argc, argv); /*[ パラメータの取得 ]*/ INZSR(); /*[ 初期設定 ]*/ rc = sho / bunbo; LRRTN(argv); exit(0); MONMSG: #pragma disable_handler MonitorMSG(ca, argv); exit(0); } /*************************************/ void GetParam(int argc, char *argv[]) /*************************************/ { } /****************/ void INZSR(void) /****************/ { errcode.BYTESPRO = 160; errcode.BYTESAVL = 0; ERR[0] = ' '; } /************************/ void LRRTN(char *argv[]) /************************/ { if(bLR == TRUE) return; bLR = TRUE; exit(0); } /********************************************************/ void MonitorMSG(_INTRPT_Hndlr_Parms_T ca, char *argv[]) /********************************************************/ { char Send_Program_Name[13], Send_Instruction_Num[5], msg[512]; int msglen, wait_time = 0, len; typedef struct { Qmh_Rcvpm_RCVM0200_t rcvm0200; char msg[512]; } RCVM0200; RCVM0200 rcvm0200; _GetExcData(&ca); QMHRCVPM(&rcvm0200, sizeof(RCVM0200), "RCVM0200", "* ",1, "*ANY ", (char*)&ca.Msg_Ref_Key, wait_time,"*SAME ", &errc msglen = rcvm0200.rcvm0200.Length_Message_Available; memcpy(msg, rcvm0200.msg, msglen); msg[msglen] = 0x00; memcpy(Send_Program_Name, rcvm0200.rcvm0200.Send_Program_Name, 12); Send_Program_Name[12] = 0x00; len = triml(Send_Program_Name, ' '); if(len > 0) Send_Program_Name[len] = 0x00; memcpy(Send_Instruction_Num, rcvm0200.rcvm0200.Send_Instruction_Num, 4); Send_Instruction_Num[4] = 0x00; sprintf(MSG, "MONMSG プログラム %s-STMT:%s で次のエラーがありました。 \n %s", Send_Program_Name, Send_Instruction_Num, msg); printf("TESTMON[%d] %s\n", __LINE__, MSG); getchar(); ERR[0] = 'E'; LRRTN(argv); }