/* * 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. 2007 * 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: CRTBNDC PGM(LIB/JRNFLUSH) SRCFILE(LIB/JRNFLUSH) */ /* */ /* */ /* Program name: JRNFLUSH */ /* Function: This program will emit and force to disk a user */ /* flavored journal entry every X number of seconds. */ /* This program can be used to ensure cached journal */ /* entries linger in memory at most X seconds. */ /* */ /* */ /* */ /* Parameters: argv[1] - char [10] - Library Name */ /* Parameters: argv[2] - char [10] - Journal Name */ /* Parameters: argv[3] - char [10] - Number of Seconds to wait */ /* */ /***************************************************************************/ #include #include #include #include /* For calling sleep() */ #include /* For calling CL commands */ #include /* needed for decimal conversion */ /***************************************************************************/ /* M A I N F U N C T I O N */ /***************************************************************************/ int main(int argc, char *argv[]) { /* Variables to hold command line arguments */ char library[10]; char journal[10]; int seconds; /* Parameters for QCMDEXEC API */ int length; char stmt[400]; decimal(15,5) packed_length; /***************************************************************************/ /* Check if Valid Number of Arguments */ /***************************************************************************/ if(argc != 4) { printf("\n\n\n\n\n\n\n\n\n\n\nImproper Number of Paramaters\n"); printf("Parameters:\n"); printf(" 1) Library Name holding journal\n"); printf(" 2) Journal Name\n"); printf(" 3) Number of seconds to wait in between each cache flush\n"); return; } /***************************************************************************/ /* Copy command line arguments into variable name */ /***************************************************************************/ sprintf(library,"%s",argv[1]); sprintf(journal,"%s",argv[2]); seconds = atoi(argv[3]); /* Prepare for QCMDEXC API */ sprintf(stmt, "SNDJRNE JRN(%s/%s) TYPE('FL') ENTDTA('Force cache to disk') FORCE(*YES)", library, journal); length = strlen(stmt); cpynv(NUM_DESCR(_T_PACKED,15,5), &packed_length, NUM_DESCR(_T_SIGNED,4,0), &length); /***************************************************************************/ /* Repetively Force and Sleep... Forever */ /***************************************************************************/ while(1){ QCMDEXC(stmt, packed_length); sleep(seconds); } return; }