#include exec sql include sqlca; extern void ECPGdebug(int n, FILE *dbgs); exec sql whenever not found sqlprint; exec sql whenever sqlerror db_error(msg); void db_error (char *msg) { sqlca.sqlerrm.sqlerrmc[sqlca.sqlerrm.sqlerrml] = '\0'; printf ("%s: db error %s\n", msg, sqlca.sqlerrm.sqlerrmc); exit (1); } int main () { exec sql begin declare section; struct personal_struct { varchar name[8]; struct birth_struct { long born; short age; } birth; } personal; exec sql end declare section; char msg[128]; FILE *dbgs; if ((dbgs = fopen("log", "w")) != NULL) ECPGdebug(1, dbgs); strcpy(msg, "connect"); exec sql connect 'mm'; strcpy(msg, "declare"); exec sql declare cur cursor for select name, born, age from meskes; exec sql open cur; while (1) { strcpy(msg, "fetch"); exec sql fetch in cur into :personal; printf ("%8.8s was born %d (age = %d)\n", personal.name.arr, personal.birth.born, personal.birth.age); } strcpy(msg, "close"); exec sql close cur; strcpy(msg, "commit"); exec sql commit; if (dbgs != NULL) fclose(dbgs); return (0); }