exec sql include sqlca; exec sql include ../regression; exec sql define STR 'abcdef'; exec sql define INSERTNULL 1; exec sql define NUMBER 29; int main(void) { exec sql begin declare section; int i; char s[200]; exec sql end declare section; ECPGdebug(1, stderr); exec sql whenever sqlerror do sqlprint(); exec sql connect to REGRESSDB1; exec sql create table test (a int, b text); exec sql insert into test values (NUMBER, STR); exec sql ifdef INSERTNULL; exec sql insert into test values (NULL, 'defined'); exec sql endif; exec sql ifndef INSERTNULL; exec sql insert into test values (NULL, 'not defined'); exec sql elif SOMEOTHERVAR; exec sql insert into test values (NULL, 'someothervar defined'); exec sql else; exec sql insert into test values (NULL, 'someothervar not defined'); exec sql endif; exec sql define NUMBER 29; exec sql select INSERTNULL, NUMBER::text || '-' || STR INTO :i, :s; printf("i: %d, s: %s\n", i, s); exec sql undef STR; exec sql ifndef STR; exec sql insert into test values (NUMBER, 'no string'); exec sql endif; exec sql define TZVAR; /* no value */ exec sql define TZVAR 'UTC'; exec sql ifndef TZVAR; exec sql SET TIMEZONE TO 'GMT'; exec sql elif TZNAME; exec sql SET TIMEZONE TO TZNAME; exec sql else; exec sql SET TIMEZONE TO TZVAR; exec sql endif; /* test handling of a macro defined on the command line */ exec sql select CMDLINESYM INTO :i; printf("original CMDLINESYM: %d\n", i); exec sql define CMDLINESYM 42; exec sql select CMDLINESYM INTO :i; printf("redefined CMDLINESYM: %d\n", i); exec sql define CMDLINESYM 43; exec sql select CMDLINESYM INTO :i; printf("redefined CMDLINESYM: %d\n", i); exec sql undef CMDLINESYM; exec sql ifdef CMDLINESYM; exec sql insert into test values (NUMBER, 'no string'); exec sql endif; /* this macro should not have carried over from define_prelim.pgc */ exec sql ifdef NONCMDLINESYM; exec sql insert into test values (NUMBER, 'no string'); exec sql endif; exec sql disconnect; return 0; }