/* * LICENSE AND DISCLAIMER * ---------------------- * THIS MATERIAL CONTAINS IBM COPYRIGHTED SAMPLE PROGRAMMING SOURCE * CODE ('SAMPLE CODE'). * IBM GRANTS YOU A NONEXCLUSIVE LICENSE TO COMPILE, LINK, EXECUTE, * DISPLAY, REPRODUCE, DISTRIBUTE AND PREPARE DERIVATIVE WORKS OF * THIS SAMPLE CODE. THE SAMPLE CODE HAS NOT BEEN THOROUGHLY * TESTED UNDER ALL CONDITIONS. IBM, THEREFORE, DOES NOT GUARANTEE * OR IMPLY ITS RELIABILITY, SERVICEABILITY, OR FUNCTION. IBM * PROVIDES NO PROGRAM SERVICES FOR THE SAMPLE CODE. * * ALL SAMPLE CODE CONTAINED HEREIN IS PROVIDED TO YOU "AS IS" WITHOUT * ANY WARRANTIES OF ANY KIND. THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGMENT ARE EXPRESSLY * DISCLAIMED. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED * WARRANTIES, SO THE ABOVE EXCLUSIONS MAY NOT APPLY TO YOU. IN NO * EVENT WILL IBM BE LIABLE TO ANY PARTY FOR ANY DIRECT, INDIRECT, * SPECIAL OR OTHER CONSEQUENTIAL DAMAGES FOR ANY USE OF THE SAMPLE CODE * INCLUDING, WITHOUT LIMITATION, ANY LOST PROFITS, BUSINESS * INTERRUPTION, LOSS OF PROGRAMS OR OTHER DATA ON YOUR INFORMATION * HANDLING SYSTEM OR OTHERWISE, EVEN IF WE ARE EXPRESSLY ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * * (C) COPYRIGHT IBM CORP. 2006 * ALL RIGHTS RESERVED. * US GOVERNMENT USERS RESTRICTED RIGHTS - * USE, DUPLICATION OR DISCLOSURE RESTRICTED * BY GSA ADP SCHEDULE CONTRACT WITH IBM CORP. * LICENSED MATERIAL - PROPERTY OF IBM */ /***************************************************************************/ /* COMPILE STATEMENT */ /* CRTSQLCI OBJ(JOLAB00/HRTSTATUS) SRCFILE(JOLAB00/HRTSTATUS) */ /* COMMIT(*NONE) OBJTYPE(*PGM) OUTPUT(*PRINT) */ /***************************************************************************/ /***************************************************************************/ /* */ /* Program name: HRTSTATUS */ /* Function: EDIT RJ MONITOR TABLE */ /* */ /* Parameters: argv[1] - char [10] - SRC Journal Name */ /* argv[2] - char [10] - SRC Library Name */ /* argv[3] - char [10] - TGT Journal Name */ /* argv[4] - char [10] - TGT Library Name */ /* argv[5] - char [18] - RDB Name */ /* argv[6] - char [10] - MSG ID */ /* argv[7] - char [2] - RSNCODE */ /* argv[8] - char [6] - MSG TIME */ /* argv[9] - char [7] - MSG DATE */ /* argv[10] - char [10] - TABLE NAME */ /* */ /* */ /***************************************************************************/ #include #include #include #include #include #include #include #include #include #include #include /***************************************************************************/ /* SQL Error Handling and SQL Descriptor areas in C and C++ */ /***************************************************************************/ EXEC sql include SQLCA; EXEC sql include SQLDA; /***************************************************************************/ /* M A I N F U N C T I O N */ /***************************************************************************/ int main(int argc, char *argv[]) { /* variable for exception handling */ volatile _INTRPT_Hndlr_Parms_T ca; volatile int com = 0; /*************************************************************************/ /* Variables to store command line arguments */ /*************************************************************************/ char srcLib[10]; char srcJrn[10]; char tgtLib[10]; char tgtJrn[10]; char rdb[18]; char msgId[10]; char time[10]; char date[10]; char table[10]; int rsncode; EXEC SQL BEGIN DECLARE SECTION; char stmt[1024]; long ID = 0; char SRCH_TBL[7]; char timestamp[22]; char RJ[7]; long countInactive = 0; EXEC SQL END DECLARE SECTION; printf("testing\n"); /*************************************************************************/ /* Localize command line arguments */ /*************************************************************************/ sprintf(srcJrn,"%s",argv[1]); sprintf(srcLib,"%s",argv[2]); sprintf(tgtJrn,"%s",argv[3]); sprintf(tgtLib,"%s",argv[4]); sprintf(rdb,"%s",argv[5]); sprintf(msgId,"%s",argv[6]); rsncode = atoi(argv[7]); sprintf(time,"%s",argv[8]); sprintf(date,"%s",argv[9]); sprintf(table,"%s",argv[10]); printf("*argv[1] *%s*\n",argv[1]); printf("*argv[2] *%s*\n",argv[2]); printf("*argv[3] *%s*\n",argv[3]); printf("*argv[4] *%s*\n",argv[4]); printf("*argv[5] *%s*\n",argv[5]); printf("*argv[6] *%s*\n",argv[6]); printf("*RSNCODE %i*\n",rsncode); printf("*(int)argv[7] %i*\n",(int)argv[7]); printf("*argv[7] as int %i*\n",argv[7]); printf("*argv[7] as string %s*\n",argv[7]); printf("*atoi i argv[7] %s*\n",atoi(argv[7])); printf("*argv[8] *%s*\n",argv[8]); printf("*argv[9] *%s*\n",argv[9]); printf("*argv[10] *%s*\n",argv[10]); /*************************************************************************/ /* Convert Date and Time into SQL TIMESTAMP format */ /*************************************************************************/ sprintf(timestamp,"20%c%c-%c%c-%c%c-%c%c.%c%c.%c%c.00",date[1],date[2], date[3],date[4],date[5],date[6],time[0], time[1],time[2],time[3],time[4],time[5]); /*************************************************************************/ /* Check If entry exists in SQL Table */ /*************************************************************************/ sprintf(stmt,"SELECT RJ_ID FROM %s/%s",srcLib,table); sprintf(stmt,"%s WHERE SRCLIB = UPPER('%s') AND SRCJRN = UPPER('%s')", stmt,srcLib,srcJrn); sprintf(stmt,"%s AND TGTLIB = UPPER('%s') AND",stmt,tgtLib); sprintf(stmt,"%s TGTJRN = UPPER('%s') AND RDB = UPPER('%s')",stmt,tgtJrn,rdb); EXEC SQL PREPARE SRCH_TBL FROM :stmt; EXEC SQL DECLARE C1 CURSOR FOR SRCH_TBL; EXEC SQL OPEN C1 USING :SRCH_TBL; EXEC SQL FETCH C1 INTO :ID; EXEC SQL CLOSE C1; /*************************************************************************/ /* Check if SQL stmt failed */ /*************************************************************************/ if(sqlca.sqlcode < 0) { printf("Select Failed\n"); } if(ID == 0) { stmt[0] = 0x00; sprintf(stmt, "INSERT INTO %s/%s VALUES(DEFAULT,",srcLib,table); sprintf(stmt, "%s 'INACTIVE','N',UPPER('%s'),UPPER('%s'),", stmt,srcLib,srcJrn); sprintf(stmt, "%s UPPER('%s'), UPPER('%s'),UPPER('%s'),", stmt,tgtLib,tgtJrn,rdb); sprintf(stmt, "%s UPPER('%s'), %i, UPPER('%s'),%i,%i)", stmt,msgId,rsncode,timestamp,1,0); printf("*%s*\n",stmt); EXEC SQL EXECUTE IMMEDIATE :stmt; if(sqlca.sqlcode < 0) { printf("Insert Failed 2\n"); } } else { sprintf(stmt,"SELECT TIMES_INACTIVE FROM %s/%s WHERE RJ_ID = %i", argv[2],argv[9],ID); EXEC SQL PREPARE RJ FROM :stmt; EXEC SQL DECLARE COUNT_INACTIVE CURSOR FOR RJ; EXEC SQL OPEN COUNT_INACTIVE USING :RJ; EXEC SQL FETCH COUNT_INACTIVE INTO: countInactive; EXEC SQL CLOSE COUNT_INACTIVE; stmt[0] = 0x00; sprintf(stmt, "UPDATE %s/%s SET STATUS = 'INACTIVE',",srcLib,table); sprintf(stmt, "%s NOTIFIED = 'N', MSGID = '%s', RSNCODE = %i,", stmt,msgId,rsncode); sprintf(stmt, "%s TS = '%s', TIMES_INACTIVE = %i WHERE RJ_ID = %i", stmt,timestamp,countInactive+1,ID); EXEC SQL EXECUTE IMMEDIATE :stmt; if(sqlca.sqlcode < 0) { printf("Update Failed\n"); printf("%s\n",stmt); } } }