1 /* Processed by ecpg (regression mode) */
2 /* These include files are added by the preprocessor */
3 #include <ecpglib.h>
4 #include <ecpgerrno.h>
5 #include <sqlca.h>
6 /* End of automatic include section */
7 #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
8 
9 #line 1 "pointer_to_struct.pgc"
10 #include <stdio.h>
11 #include <stdlib.h>
12 
13 
14 #line 1 "regression.h"
15 
16 
17 
18 
19 
20 
21 #line 4 "pointer_to_struct.pgc"
22 
23 
24 /* exec sql whenever sqlerror  sqlprint ; */
25 #line 6 "pointer_to_struct.pgc"
26 
27 /* exec sql whenever sql_warning  sqlprint ; */
28 #line 7 "pointer_to_struct.pgc"
29 
30 /* exec sql whenever not found  sqlprint ; */
31 #line 8 "pointer_to_struct.pgc"
32 
33 
34 typedef  struct {
35 #line 13 "pointer_to_struct.pgc"
36   struct varchar_1  { int len; char arr[ 50 ]; }  name ;
37 
38 #line 14 "pointer_to_struct.pgc"
39  int phone ;
40  } customer ;
41 #line 15 "pointer_to_struct.pgc"
42 
43 
44 typedef  struct ind {
45 #line 20 "pointer_to_struct.pgc"
46  short name_ind ;
47 
48 #line 21 "pointer_to_struct.pgc"
49  short phone_ind ;
50  } cust_ind ;
51 #line 22 "pointer_to_struct.pgc"
52 
53 
main()54 int main()
55 {
56     /* exec sql begin declare section */
57 
58 
59 
60 
61 
62 
63        typedef struct {
64 #line 31 "pointer_to_struct.pgc"
65   struct varchar_2  { int len; char arr[ 50 ]; }  name ;
66 
67 #line 32 "pointer_to_struct.pgc"
68  int phone ;
69  }  customer2 ;
70 
71 #line 33 "pointer_to_struct.pgc"
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 #line 27 "pointer_to_struct.pgc"
91  customer * custs1 = ( customer * ) malloc ( sizeof ( customer ) * 10 ) ;
92 
93 #line 28 "pointer_to_struct.pgc"
94  cust_ind * inds = ( cust_ind * ) malloc ( sizeof ( cust_ind ) * 10 ) ;
95 
96 #line 34 "pointer_to_struct.pgc"
97  customer2 * custs2 = ( customer2 * ) malloc ( sizeof ( customer2 ) * 10 ) ;
98 
99 #line 40 "pointer_to_struct.pgc"
100  struct customer3 {
101 #line 38 "pointer_to_struct.pgc"
102  char name [ 50 ] ;
103 
104 #line 39 "pointer_to_struct.pgc"
105  int phone ;
106  } * custs3 = ( struct customer3 * ) malloc ( sizeof ( struct customer3 ) * 10 ) ;
107 
108 #line 46 "pointer_to_struct.pgc"
109  struct customer4 {
110 #line 44 "pointer_to_struct.pgc"
111   struct varchar_3  { int len; char arr[ 50 ]; }  name ;
112 
113 #line 45 "pointer_to_struct.pgc"
114  int phone ;
115  } * custs4 = ( struct customer4 * ) malloc ( sizeof ( struct customer4 ) ) ;
116 
117 #line 48 "pointer_to_struct.pgc"
118  int r ;
119 
120 #line 49 "pointer_to_struct.pgc"
121   struct varchar_4  { int len; char arr[ 50 ]; }  onlyname [ 2 ] ;
122 /* exec sql end declare section */
123 #line 50 "pointer_to_struct.pgc"
124 
125 
126     ECPGdebug(1, stderr);
127 
128     { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
129 #line 54 "pointer_to_struct.pgc"
130 
131 if (sqlca.sqlwarn[0] == 'W') sqlprint();
132 #line 54 "pointer_to_struct.pgc"
133 
134 if (sqlca.sqlcode < 0) sqlprint();}
135 #line 54 "pointer_to_struct.pgc"
136 
137 
138     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table customers ( c varchar ( 50 ) , p int )", ECPGt_EOIT, ECPGt_EORT);
139 #line 56 "pointer_to_struct.pgc"
140 
141 if (sqlca.sqlwarn[0] == 'W') sqlprint();
142 #line 56 "pointer_to_struct.pgc"
143 
144 if (sqlca.sqlcode < 0) sqlprint();}
145 #line 56 "pointer_to_struct.pgc"
146 
147     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into customers values ( 'John Doe' , '12345' )", ECPGt_EOIT, ECPGt_EORT);
148 #line 57 "pointer_to_struct.pgc"
149 
150 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
151 #line 57 "pointer_to_struct.pgc"
152 
153 if (sqlca.sqlwarn[0] == 'W') sqlprint();
154 #line 57 "pointer_to_struct.pgc"
155 
156 if (sqlca.sqlcode < 0) sqlprint();}
157 #line 57 "pointer_to_struct.pgc"
158 
159     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into customers values ( 'Jane Doe' , '67890' )", ECPGt_EOIT, ECPGt_EORT);
160 #line 58 "pointer_to_struct.pgc"
161 
162 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
163 #line 58 "pointer_to_struct.pgc"
164 
165 if (sqlca.sqlwarn[0] == 'W') sqlprint();
166 #line 58 "pointer_to_struct.pgc"
167 
168 if (sqlca.sqlcode < 0) sqlprint();}
169 #line 58 "pointer_to_struct.pgc"
170 
171 
172     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 2", ECPGt_EOIT,
173 	ECPGt_varchar,&(custs1->name),(long)50,(long)-1,sizeof( customer ),
174 	ECPGt_short,&(inds->name_ind),(long)1,(long)-1,sizeof( struct ind ),
175 	ECPGt_int,&(custs1->phone),(long)1,(long)-1,sizeof( customer ),
176 	ECPGt_short,&(inds->phone_ind),(long)1,(long)-1,sizeof( struct ind ), ECPGt_EORT);
177 #line 60 "pointer_to_struct.pgc"
178 
179 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
180 #line 60 "pointer_to_struct.pgc"
181 
182 if (sqlca.sqlwarn[0] == 'W') sqlprint();
183 #line 60 "pointer_to_struct.pgc"
184 
185 if (sqlca.sqlcode < 0) sqlprint();}
186 #line 60 "pointer_to_struct.pgc"
187 
188     printf("custs1:\n");
189     for (r = 0; r < 2; r++)
190     {
191 	    printf( "name  - %s\n", custs1[r].name.arr );
192 	    printf( "phone - %d\n", custs1[r].phone );
193     }
194 
195     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 2", ECPGt_EOIT,
196 	ECPGt_varchar,&(custs2->name),(long)50,(long)-1,sizeof( customer2 ),
197 	ECPGt_short,&(inds->name_ind),(long)1,(long)-1,sizeof( struct ind ),
198 	ECPGt_int,&(custs2->phone),(long)1,(long)-1,sizeof( customer2 ),
199 	ECPGt_short,&(inds->phone_ind),(long)1,(long)-1,sizeof( struct ind ), ECPGt_EORT);
200 #line 68 "pointer_to_struct.pgc"
201 
202 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
203 #line 68 "pointer_to_struct.pgc"
204 
205 if (sqlca.sqlwarn[0] == 'W') sqlprint();
206 #line 68 "pointer_to_struct.pgc"
207 
208 if (sqlca.sqlcode < 0) sqlprint();}
209 #line 68 "pointer_to_struct.pgc"
210 
211     printf("\ncusts2:\n");
212     for (r = 0; r < 2; r++)
213     {
214 	    printf( "name  - %s\n", custs2[r].name.arr );
215 	    printf( "phone - %d\n", custs2[r].phone );
216     }
217 
218     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 2", ECPGt_EOIT,
219 	ECPGt_char,&(custs3->name),(long)50,(long)-1,sizeof( struct customer3 ),
220 	ECPGt_short,&(inds->name_ind),(long)1,(long)-1,sizeof( struct ind ),
221 	ECPGt_int,&(custs3->phone),(long)1,(long)-1,sizeof( struct customer3 ),
222 	ECPGt_short,&(inds->phone_ind),(long)1,(long)-1,sizeof( struct ind ), ECPGt_EORT);
223 #line 76 "pointer_to_struct.pgc"
224 
225 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
226 #line 76 "pointer_to_struct.pgc"
227 
228 if (sqlca.sqlwarn[0] == 'W') sqlprint();
229 #line 76 "pointer_to_struct.pgc"
230 
231 if (sqlca.sqlcode < 0) sqlprint();}
232 #line 76 "pointer_to_struct.pgc"
233 
234     printf("\ncusts3:\n");
235     for (r = 0; r < 2; r++)
236     {
237 	    printf( "name  - %s\n", custs3[r].name );
238 	    printf( "phone - %d\n", custs3[r].phone );
239     }
240 
241     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from customers limit 1", ECPGt_EOIT,
242 	ECPGt_varchar,&(custs4->name),(long)50,(long)-1,sizeof( struct customer4 ),
243 	ECPGt_short,&(inds->name_ind),(long)1,(long)-1,sizeof( struct ind ),
244 	ECPGt_int,&(custs4->phone),(long)1,(long)-1,sizeof( struct customer4 ),
245 	ECPGt_short,&(inds->phone_ind),(long)1,(long)-1,sizeof( struct ind ), ECPGt_EORT);
246 #line 84 "pointer_to_struct.pgc"
247 
248 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
249 #line 84 "pointer_to_struct.pgc"
250 
251 if (sqlca.sqlwarn[0] == 'W') sqlprint();
252 #line 84 "pointer_to_struct.pgc"
253 
254 if (sqlca.sqlcode < 0) sqlprint();}
255 #line 84 "pointer_to_struct.pgc"
256 
257     printf("\ncusts4:\n");
258     printf( "name  - %s\n", custs4->name.arr );
259     printf( "phone - %d\n", custs4->phone );
260 
261     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select c from customers limit 2", ECPGt_EOIT,
262 	ECPGt_varchar,(onlyname),(long)50,(long)2,sizeof(struct varchar_4),
263 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
264 #line 89 "pointer_to_struct.pgc"
265 
266 if (sqlca.sqlcode == ECPG_NOT_FOUND) sqlprint();
267 #line 89 "pointer_to_struct.pgc"
268 
269 if (sqlca.sqlwarn[0] == 'W') sqlprint();
270 #line 89 "pointer_to_struct.pgc"
271 
272 if (sqlca.sqlcode < 0) sqlprint();}
273 #line 89 "pointer_to_struct.pgc"
274 
275     printf("\nname:\n");
276     for (r = 0; r < 2; r++)
277     {
278 	    printf( "name  - %s\n", onlyname[r].arr );
279     }
280 
281     { ECPGdisconnect(__LINE__, "ALL");
282 #line 96 "pointer_to_struct.pgc"
283 
284 if (sqlca.sqlwarn[0] == 'W') sqlprint();
285 #line 96 "pointer_to_struct.pgc"
286 
287 if (sqlca.sqlcode < 0) sqlprint();}
288 #line 96 "pointer_to_struct.pgc"
289 
290 
291 	/* All the memory will anyway be freed at the end */
292     return( 0 );
293 }
294