#include #include #include #include #include #include #include #include #include #include "asnet.src/h(common)" /* POST_LEN, REP_LEN, MAX_USL,ID_LEN */ #include /* triml */ #define TRUE 0 #define FALSE -1 volatile _INTRPT_Hndlr_Parms_T ca; void PRDCHK(char AutoWeb[1], char Tonakai[1], char eStudio[1], char DTAARA[20]); #pragma map(PRDCHK, "ASNET.COM/PRDCHKCL") #pragma linkage(PRDCHK, OS) void MonitorMSG(_INTRPT_Hndlr_Parms_T ca, char* ref); void RtvJobA(char[], char[], char[], char[], char[], char[], char[], char[], char[], char[], char[], char[], char[], char[], char[]); #pragma map(RtvJobA, "ASNET.COM/RTVJOBA") #pragma linkage(RtvJobA, OS) 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 */ char ref[132]; char job[10], user[10], jobnbr[6], outq[10], outqlib[10], date[6]; char type[1], prtdev[10], langid[3], cntryid[2], ccsid[5]; char dftccsid[5], cymddate[7], sbmmsgq[10], sbmmsgqlib[10]; char jobid[ID_LEN], ascnbr[6]; decimal(5, 0) dftCCSID; void main(void){ #pragma exception_handler(MONMSG, ca, 0, _C2_MH_ESCAPE | _C2_ALL,\ _CTLA_HANDLE) printf("** TESTCHK: PRDCHK のテスト **\n"); getchar(); /*( ライセンスの検査 )*/ strcpy(ref, "LICENSE"); PRDCHK("1", "1", " ", "CLIENT TEST.COM "); printf("NORMAL EOJ.\n"); getchar(); return; MONMSG: #pragma disable_handler MonitorMSG(ca, ref); exit(0); } /***************************************************/ void MonitorMSG(_INTRPT_Hndlr_Parms_T ca, char* ref) /***************************************************/ { char msgid[7], msgkey[4], msg[3000], msgdta[256], reply_msgq[20]; int msg_dta_len, wait_time = 0, len, pgm_stk_cnt = 1; typedef struct { Qmh_Rcvpm_RCVM0200_t rcvm0200_t; char Msg[3000]; } RCVM0200; RCVM0200 rcvm0200; errcode.BYTESPRO = 160; errcode.BYTESAVL = 0; memcpy(msgkey, (void*)&ca.Msg_Ref_Key, 4); msg_dta_len = sizeof(RCVM0200); QMHRCVPM(&rcvm0200, msg_dta_len, "RCVM0200", "* ",0, "*ANY ", msgkey, wait_time,"*SAME ", &errcode); if(strncmp(rcvm0200.rcvm0200_t.Message_Type, "15", 2) == 0){/* エラー */ msg_dta_len = rcvm0200.rcvm0200_t.Length_Message_Available; memcpy(msgdta, rcvm0200.Msg, msg_dta_len); msgdta[msg_dta_len] = 0x00; /*( 現在のこのジョブのタイプを調べる )*/ memcpy(job, "* ", 10); RtvJobA(job, user, jobnbr, outq, outqlib, date, type, prtdev, langid, cntryid, ccsid, dftccsid, cymddate, sbmmsgq, sbmmsgqlib); if(type[0] == '0'){/* バッチ・ジョブ */ /* *SYSOPR にメッセージを送る */ QMHSNDPM(msgid, "QCPFMSG QSYS ", msgdta, msg_dta_len, "*DIAG ", "*SYSOPR ", pgm_stk_cnt, " ", &errcode); }/* バッチ・ジョブ */ /* この *PGMBDY にメッセージを送る */ QMHSNDPM("CPF9897", "QCPFMSG QSYS ", msgdta, msg_dta_len, "*ESCAPE ", "*PGMBDY ", pgm_stk_cnt, " ", &errcode); }/* エラー・メッセージ */ exit(0); }