/**************************************************************************** ** (c) Copyright IBM Corp. 2007 All rights reserved. ** ** The following sample of source code ("Sample") is owned by International ** Business Machines Corporation or one of its subsidiaries ("IBM") and is ** copyrighted and licensed, not sold. You may use, copy, modify, and ** distribute the Sample in any form without payment to IBM, for the purpose of ** assisting you in the development of your applications. ** ** The Sample code is provided to you on an "AS IS" basis, without warranty of ** any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR ** IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do ** not allow for the exclusion or limitation of implied warranties, so the above ** limitations or exclusions may not apply to you. IBM shall not be liable for ** any damages you suffer as a result of using, copying, modifying or ** distributing the Sample, even if IBM has been advised of the possibility of ** such damages. ***************************************************************************** ** ** SOURCE FILE NAME: utilcli.h ** ** SAMPLE: Declaration of utility functions used by DB2 CLI samples ***************************************************************************** ** ** For more information on the sample programs, see the README file. ** ** For information on developing CLI applications, see the CLI Guide ** and Reference. ** ** For information on using SQL statements, see the SQL Reference. ** ** For the latest information on programming, building, and running DB2 ** applications, visit the DB2 Information Center: ** http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp ****************************************************************************/ #ifndef UTILCLI_H #define UTILCLI_H #define MAX_UID_LENGTH 18 #define MAX_PWD_LENGTH 30 #define MAX_STMT_LEN 255 #define MAX_COLUMNS 255 #ifdef DB2WIN #define MAX_TABLES 50 #else #define MAX_TABLES 255 #endif #ifndef max #define max(a,b) (a > b ? a : b) #endif /* macro for environment handle checking */ #define ENV_HANDLE_CHECK(henv, cliRC) \ if (cliRC != SQL_SUCCESS) \ { \ rc = HandleInfoPrint(SQL_HANDLE_ENV, henv, \ cliRC, __LINE__, __FILE__); \ if (rc != 0) return rc; \ } /* macro for connection handle checking */ #define DBC_HANDLE_CHECK(hdbc, cliRC) \ if (cliRC != SQL_SUCCESS) \ { \ rc = HandleInfoPrint(SQL_HANDLE_DBC, hdbc, \ cliRC, __LINE__, __FILE__); \ if (rc != 0) return rc; \ } /* macro for statement handle checking */ #define STMT_HANDLE_CHECK(hstmt, hdbc, cliRC) \ if (cliRC != SQL_SUCCESS) \ { \ rc = HandleInfoPrint(SQL_HANDLE_STMT, hstmt, \ cliRC, __LINE__, __FILE__); \ if (rc == 2) StmtResourcesFree(hstmt); \ if (rc != 0) TransRollback(hdbc); \ if (rc != 0) return rc; \ } /* macro for statement handle checking in applications with multiple connections */ #define MC_STMT_HANDLE_CHECK(hstmt, henv, cliRC) \ if (cliRC != SQL_SUCCESS) \ { \ rc = HandleInfoPrint(SQL_HANDLE_STMT, hstmt, \ cliRC, __LINE__, __FILE__); \ if (rc == 2) StmtResourcesFree(hstmt); \ if (rc != 0) MultiConnTransRollback(henv); \ if (rc != 0) return rc; \ } /* macro for DB2_API checking */ #define DB2_API_CHECK(MSG_STR) \ SqlInfoPrint(MSG_STR, &sqlca, __LINE__, __FILE__); \ if (sqlca.sqlcode < 0) \ { \ return 1; \ } /* macro for expected error checking checking */ #define EX_STMT_HANDLE_CHECK(hstmt, hdbc, cliRC) \ if (cliRC != SQL_SUCCESS) \ { \ rc = HandleInfoPrint(SQL_HANDLE_STMT, hstmt, \ cliRC, __LINE__, __FILE__); \ if (rc == 2) StmtResourcesFree(hstmt); \ } /* functions used in ...CHECK_HANDLE macros */ int HandleInfoPrint(SQLSMALLINT, SQLHANDLE, SQLRETURN, int, char *); void CLIAppCleanUp(SQLHANDLE *, SQLHANDLE a_hdbc[], int); int StmtResourcesFree(SQLHANDLE); void TransRollback(SQLHANDLE); void MultiConnTransRollback(SQLHANDLE); /* functions to check the number of command line arguments */ int CmdLineArgsCheck1(int, char *argv[], char *, char *, char *); int CmdLineArgsCheck2(int, char *argv[], char *, char *, char *, char *); int CmdLineArgsCheck3(int, char *argv[], char *, char *, char *, char *, char *, char *); /* function used in DB2_API_CHECK */ void SqlInfoPrint(char *, struct sqlca*, int, char*); /* other utility functions */ int CLIAppInit(char *, char *, char *, SQLHANDLE *, SQLHANDLE *, SQLPOINTER); int CLIAppTerm(SQLHANDLE *, SQLHANDLE *, char *); int StmtResultPrint(SQLHANDLE, SQLHANDLE); #endif