/* Processed by ecpg (4.12.0) */
/* These include files are added by the preprocessor */
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
/* End of automatic include section */

#line 1 "indrecs.pgc"
#include <stdlib.h>
#include <sqlca.h>
#include <string>

using namespace std;

int get_conn(  )
{
	int sqlcode;

	/* exec sql begin declare section */
	     
	     
	     
	
#line 12 "indrecs.pgc"
 char * pgdsn = getenv ( "PGDSN" ) ;
 
#line 13 "indrecs.pgc"
 char * pguser = getenv ( "PGUSER" ) ;
 
#line 14 "indrecs.pgc"
 char * pgpass = getenv ( "PGPASS" ) ;
/* exec sql end declare section */
#line 15 "indrecs.pgc"


	if (pgdsn == NULL)
	{
	    printf("PGDSN is not set\n");
	    sqlcode = 100;
	    return 1;
	}
	if (pguser == NULL)
	{
	    printf("PGUSER is not set\n");
	    sqlcode = 100;
	    return 1;
	}
	if (pgpass == NULL)
	{
	    printf("PGPASS is not set\n");
	    sqlcode = 100;
	    return 1;
	}

	{ ECPGconnect(__LINE__, 0, pgdsn , pguser , pgpass , NULL, 0); }
#line 36 "indrecs.pgc"

	sqlcode = sqlca.sqlcode;
	printf("connect sqlcode: %d\n", sqlca.sqlcode);

}

void close_conn() {
	{ ECPGdisconnect(__LINE__, "CURRENT");}
#line 43 "indrecs.pgc"

	printf("disconnect sqlcode: %d\n", sqlca.sqlcode);
}

int main()
{

	/* exec sql whenever sql_warning  sqlprint ; */
#line 50 "indrecs.pgc"

	/* exec sql whenever sqlerror  sqlprint ; */
#line 51 "indrecs.pgc"


	if(!get_conn()) return 1;

	/* exec sql begin declare section */
	 

	  
	 
	 
	 
	 

	  
	 
	 
	 
	 
	 
	 
	 

         
	   
	   
	   
	   
           
           
        
	
#line 56 "indrecs.pgc"
 char query [ 2048 ] = "\0" ;
 
#line 62 "indrecs.pgc"
 struct record_ind_short { 
#line 59 "indrecs.pgc"
 short Tind0 ;
 
#line 60 "indrecs.pgc"
 short Tind1 ;
 
#line 61 "indrecs.pgc"
 short Tind2 ;
 } record_ind_s ;
 
#line 71 "indrecs.pgc"
 struct record_ind_full { 
#line 65 "indrecs.pgc"
 short Tind0 ;
 
#line 66 "indrecs.pgc"
 short Tind1 ;
 
#line 67 "indrecs.pgc"
 short Tind2 ;
 
#line 68 "indrecs.pgc"
 short Tind3 ;
 
#line 69 "indrecs.pgc"
 short Tind4 ;
 
#line 70 "indrecs.pgc"
 short Tind5 ;
 } record_ind_l ;
 
#line 80 "indrecs.pgc"
 struct FavRecord { 
#line 74 "indrecs.pgc"
 int service_id ;
 
#line 75 "indrecs.pgc"
 char service_name [ 11 ] ;
 
#line 76 "indrecs.pgc"
 char display_name [ 11 ] ;
 
#line 77 "indrecs.pgc"
 char jsp_name [ 11 ] ;
 
#line 78 "indrecs.pgc"
 int display_seq ;
 
#line 79 "indrecs.pgc"
 int default_display ;
 } record ;
/* exec sql end declare section */
#line 81 "indrecs.pgc"



	/* exec sql whenever not found  continue ; */
#line 84 "indrecs.pgc"


	string favSql = "select a, b, d, f, c, e from dummy";
	printf("Query String: %s\n", favSql.c_str());

	strcpy(query,favSql.c_str());
	printf("Copied query String: %s\n", query);


	{ ECPGprepare(__LINE__, NULL, 0, "favstmt", query);
#line 93 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 93 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 93 "indrecs.pgc"

        /* declare c_favList cursor for $1 */
#line 94 "indrecs.pgc"


	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c_favList cursor for $1", 
	ECPGt_char_variable,(ECPGprepared_statement(NULL, "favstmt", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
#line 96 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 96 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 96 "indrecs.pgc"

	printf("Opened cursor\n");

	//while(true)
	//{
		printf("Retrieving rec with full indicator\n", query);
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch c_favList", ECPGt_EOIT, 
	ECPGt_int,&(record.service_id),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind0),(long)1,(long)1,sizeof( struct record_ind_full ), 
	ECPGt_char,&(record.service_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind1),(long)1,(long)1,sizeof( struct record_ind_full ), 
	ECPGt_char,&(record.display_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind2),(long)1,(long)1,sizeof( struct record_ind_full ), 
	ECPGt_char,&(record.jsp_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind3),(long)1,(long)1,sizeof( struct record_ind_full ), 
	ECPGt_int,&(record.display_seq),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind4),(long)1,(long)1,sizeof( struct record_ind_full ), 
	ECPGt_int,&(record.default_display),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_l.Tind5),(long)1,(long)1,sizeof( struct record_ind_full ), ECPGt_EORT);
#line 102 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 102 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 102 "indrecs.pgc"

		printf("Retrieved rec with full indicator\n", query);

		printf("Retrieving rec with short indicator\n", query);
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch c_favList", ECPGt_EOIT, 
	ECPGt_int,&(record.service_id),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_s.Tind0),(long)1,(long)1,sizeof( struct record_ind_short ), 
	ECPGt_char,&(record.service_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_s.Tind1),(long)1,(long)1,sizeof( struct record_ind_short ), 
	ECPGt_char,&(record.display_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_short,&(record_ind_s.Tind2),(long)1,(long)1,sizeof( struct record_ind_short ), 
	ECPGt_char,&(record.jsp_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(record.display_seq),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(record.default_display),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 106 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 106 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 106 "indrecs.pgc"

		printf("Retrieved rec with short indicator\n", query);

		printf("Retrieving rec with no indicator\n", query);
		{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch c_favList", ECPGt_EOIT, 
	ECPGt_int,&(record.service_id),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,&(record.service_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,&(record.display_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_char,&(record.jsp_name),(long)11,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(record.display_seq),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
	ECPGt_int,&(record.default_display),(long)1,(long)1,sizeof( struct FavRecord ), 
	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 110 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 110 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 110 "indrecs.pgc"

		printf("Retrieved rec with no indicator\n", query);

	//}

	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close c_favList", ECPGt_EOIT, ECPGt_EORT);
#line 115 "indrecs.pgc"

if (sqlca.sqlwarn[0] == 'W') sqlprint();
#line 115 "indrecs.pgc"

if (sqlca.sqlcode < 0) sqlprint();}
#line 115 "indrecs.pgc"


	close_conn();

  	return( 0 );
}
