diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index c4d47d976bcbeb87f06a773a1bd7fb1fcb04143d..e6009b454ec7ae71debadf7a3dc64b7667abfc39 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -837,5 +837,11 @@ Wed Mar  1 10:49:03 CET 2000
 
 	- Synced preproc.y with gram.y.
 	- Added output of arrays.
+
+Thu Mar  2 11:25:09 CET 2000
+
+	- Fixed some parsing problems. A variable can now be a reserved
+	  SQL keyword.
+	- Made sure double quotes in statements are correctly quoted.
 	- Set library version to 3.1.0.
 	- Set ecpg version to 2.7.0.
diff --git a/src/interfaces/ecpg/preproc/extern.h b/src/interfaces/ecpg/preproc/extern.h
index 7cf42946f419984637e58f6f2bc3f01eecd18fb2..1134e42c7ee7cb1cf80ac3352849c245237febac 100644
--- a/src/interfaces/ecpg/preproc/extern.h
+++ b/src/interfaces/ecpg/preproc/extern.h
@@ -39,7 +39,7 @@ extern const char *get_dtype(enum ECPGdtype);
 extern void lex_init(void);
 extern char *make_str(const char *);
 extern void output_line_number(void);
-extern void output_statement(char *, int, char *);
+extern void output_statement(char *, int, char *, char *, struct arguments *, struct arguments *);
 extern void output_simple_statement(char *);
 extern char *hashline_number(void);
 extern int	yyparse(void);
diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c
index 91b2308317289393dacdcf34d5482991adb95ea3..d67f9eae5af7d477e72d7dd204aa8fb35376c0ae 100644
--- a/src/interfaces/ecpg/preproc/output.c
+++ b/src/interfaces/ecpg/preproc/output.c
@@ -13,7 +13,15 @@ output_line_number()
 void
 output_simple_statement(char *cmd)
 {
-	fputs(cmd, yyout);
+	int i, j = strlen(cmd);;
+	
+	/* do this char by char as we have to filter '\"' */
+	for (i = 0; i < j; i++) {
+		if (cmd[i] != '"')
+			fputc(cmd[i], yyout);
+		else
+			fputs("\\\"", yyout);
+	}
 	output_line_number();
         free(cmd);
 }
@@ -86,19 +94,20 @@ hashline_number(void)
 }
 
 void
-output_statement(char * stmt, int mode, char *descriptor)
+output_statement(char * stmt, int mode, char *descriptor,
+	char *con, struct arguments *insert, struct arguments *result)
 {
-	int i, j=strlen(stmt);
+	int i, j = strlen(stmt);
 
 	if (descriptor == NULL)
-		fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"", connection ? connection : "NULL");
+		fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"", con ? con : "NULL");
 	else
 	        fprintf(yyout, "{ ECPGdo_descriptor(__LINE__, %s, \"%s\", \"",
-	                        connection ? connection : "NULL", descriptor);
+	                        con ? con : "NULL", descriptor);
 
 	/* do this char by char as we have to filter '\"' */
-	for (i = 0;i < j; i++) {
-		if (stmt[i] != '\"')
+	for (i = 0; i < j; i++) {
+		if (stmt[i] != '"')
 			fputc(stmt[i], yyout);
 		else
 			fputs("\\\"", yyout);
@@ -109,9 +118,9 @@ output_statement(char * stmt, int mode, char *descriptor)
 		fputs("\", ", yyout);
 		
 		/* dump variables to C file */
-		dump_variables(argsinsert, 1);
+		dump_variables(insert, 1);
 		fputs("ECPGt_EOIT, ", yyout);
-		dump_variables(argsresult, 1);
+		dump_variables(result, 1);
 		fputs("ECPGt_EORT);", yyout);
 	}
 	else
@@ -120,7 +129,8 @@ output_statement(char * stmt, int mode, char *descriptor)
 	mode |= 2;
 	whenever_action(mode);
 	free(stmt);
-	free(descriptor);
+	if (descriptor != NULL)
+		free(descriptor);
 	if (connection != NULL)
 		free(connection);
 }
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index c1fe45c4a4440e62e00c01ee20934d8651519417..a65c822488cabc5bfc753233964d7a9b0cf0562a 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -350,17 +350,18 @@ make_name(void)
 %type  <str>    storage_clause opt_initializer c_anything blockstart
 %type  <str>    blockend variable_list variable c_thing c_term
 %type  <str>	opt_pointer cvariable ECPGDisconnect dis_name storage_modifier
-%type  <str>	stmt symbol opt_symbol ECPGRelease execstring server_name
+%type  <str>	stmt ECPGRelease execstring server_name
 %type  <str>	connection_object opt_server opt_port c_stuff opt_reference
 %type  <str>    user_name opt_user char_variable ora_user ident
 %type  <str>    db_prefix server opt_options opt_connection_name c_list
-%type  <str>	ECPGSetConnection cpp_line ECPGTypedef c_args
+%type  <str>	ECPGSetConnection cpp_line ECPGTypedef c_args ECPGKeywords
 %type  <str>	enum_type civariableonly ECPGCursorStmt ECPGDeallocate
 %type  <str>	ECPGFree ECPGDeclare ECPGVar opt_at enum_definition
 %type  <str>    struct_type s_struct declaration declarations variable_declarations
 %type  <str>    s_struct s_union union_type ECPGSetAutocommit on_off
-%type  <str>	ECPGAllocateDescr ECPGDeallocateDescr
-%type  <str>	ECPGGetDescriptorHeader 
+%type  <str>	ECPGAllocateDescr ECPGDeallocateDescr symbol opt_symbol
+%type  <str>	ECPGGetDescriptorHeader ECPGColId ECPGColLabel ECPGTypeName
+%type  <str>	ECPGLabelTypeName
 
 %type  <descriptor> ECPGFetchDescStmt ECPGGetDescriptor
 
@@ -391,64 +392,64 @@ statement: ecpgstart opt_at stmt ';'	{ connection = NULL; }
 
 opt_at:	SQL_AT connection_target	{ connection = $2; }
 
-stmt:  AlterTableStmt			{ output_statement($1, 0, NULL); }
-		| AlterGroupStmt	{ output_statement($1, 0, NULL); }
-		| AlterUserStmt		{ output_statement($1, 0, NULL); }
-		| ClosePortalStmt	{ output_statement($1, 0, NULL); }
-		| CommentStmt		{ output_statement($1, 0, NULL); }
-		| CopyStmt		{ output_statement($1, 0, NULL); }
-		| CreateStmt		{ output_statement($1, 0, NULL); }
-		| CreateAsStmt		{ output_statement($1, 0, NULL); }
-		| CreateGroupStmt	{ output_statement($1, 0, NULL); }
-		| CreateSeqStmt		{ output_statement($1, 0, NULL); }
-		| CreatePLangStmt	{ output_statement($1, 0, NULL); }
-		| CreateTrigStmt	{ output_statement($1, 0, NULL); }
-		| CreateUserStmt	{ output_statement($1, 0, NULL); }
-  		| ClusterStmt		{ output_statement($1, 0, NULL); }
-		| DefineStmt 		{ output_statement($1, 0, NULL); }
-		| DropStmt		{ output_statement($1, 0, NULL); }
-		| TruncateStmt		{ output_statement($1, 0, NULL); }
-		| DropGroupStmt		{ output_statement($1, 0, NULL); }
-		| DropPLangStmt		{ output_statement($1, 0, NULL); }
-		| DropTrigStmt		{ output_statement($1, 0, NULL); }
-		| DropUserStmt		{ output_statement($1, 0, NULL); }
-		| ExtendStmt 		{ output_statement($1, 0, NULL); }
-		| ExplainStmt		{ output_statement($1, 0, NULL); }
-		| FetchStmt		{ output_statement($1, 1, NULL); }
-		| GrantStmt		{ output_statement($1, 0, NULL); }
-		| IndexStmt		{ output_statement($1, 0, NULL); }
-		| ListenStmt		{ output_statement($1, 0, NULL); }
-		| UnlistenStmt		{ output_statement($1, 0, NULL); }
-		| LockStmt		{ output_statement($1, 0, NULL); }
-		| ProcedureStmt		{ output_statement($1, 0, NULL); }
-		| ReindexStmt		{ output_statement($1, 0, NULL); }
-		| RemoveAggrStmt	{ output_statement($1, 0, NULL); }
-		| RemoveOperStmt	{ output_statement($1, 0, NULL); }
-		| RemoveFuncStmt	{ output_statement($1, 0, NULL); }
-		| RemoveStmt		{ output_statement($1, 0, NULL); }
-		| RenameStmt		{ output_statement($1, 0, NULL); }
-		| RevokeStmt		{ output_statement($1, 0, NULL); }
+stmt:  AlterTableStmt			{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| AlterGroupStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| AlterUserStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ClosePortalStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CommentStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CopyStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateAsStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateGroupStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateSeqStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreatePLangStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateTrigStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreateUserStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+  		| ClusterStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DefineStmt 		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| TruncateStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropGroupStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropPLangStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropTrigStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropUserStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ExtendStmt 		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ExplainStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| FetchStmt		{ output_statement($1, 1, NULL, connection, argsinsert, argsresult); }
+		| GrantStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| IndexStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ListenStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| UnlistenStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| LockStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ProcedureStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ReindexStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RemoveAggrStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RemoveOperStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RemoveFuncStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RemoveStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RenameStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| RevokeStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
                 | OptimizableStmt	{
 						if (strncmp($1, "/* " , sizeof("/* ")-1) == 0)
 							output_simple_statement($1);
 						else
-							output_statement($1, 1, NULL);
+							output_statement($1, 1, NULL, connection, argsinsert, argsresult);
 					}
-		| RuleStmt		{ output_statement($1, 0, NULL); }
+		| RuleStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
 		| TransactionStmt	{
 						fprintf(yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1);
 						whenever_action(2);
 						free($1);
 					}
-		| ViewStmt		{ output_statement($1, 0, NULL); }
-		| LoadStmt		{ output_statement($1, 0, NULL); }
-		| CreatedbStmt		{ output_statement($1, 0, NULL); }
-		| DropdbStmt		{ output_statement($1, 0, NULL); }
-		| VacuumStmt		{ output_statement($1, 0, NULL); }
-		| VariableSetStmt	{ output_statement($1, 0, NULL); }
-		| VariableShowStmt	{ output_statement($1, 0, NULL); }
-		| VariableResetStmt	{ output_statement($1, 0, NULL); }
-		| ConstraintsSetStmt	{ output_statement($1, 0, NULL); }
+		| ViewStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| LoadStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| CreatedbStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| DropdbStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| VacuumStmt		{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| VariableSetStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| VariableShowStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| VariableResetStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ConstraintsSetStmt	{ output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
 		| ECPGAllocateDescr	{	fprintf(yyout,"ECPGallocate_desc(__LINE__, \"%s\");",$1);
 								whenever_action(0);
 								free($1);
@@ -488,8 +489,8 @@ stmt:  AlterTableStmt			{ output_statement($1, 0, NULL); }
 						whenever_action(2);
 						free($1);
 					} 
-		| ECPGExecute		{	output_statement($1, 0, NULL); }
-		| ECPGFetchDescStmt	{ 	output_statement($1.str, 1, $1.name); }
+		| ECPGExecute		{	output_statement($1, 0, NULL, connection, argsinsert, argsresult); }
+		| ECPGFetchDescStmt	{ 	output_statement($1.str, 1, $1.name, connection, argsinsert, argsresult); }
 		| ECPGFree		{
 						fprintf(yyout, "{ ECPGdeallocate(__LINE__, \"%s\");", $1);
 
@@ -509,7 +510,8 @@ stmt:  AlterTableStmt			{ output_statement($1, 0, NULL); }
 					}
 		| ECPGOpen		{	
 						struct cursor *ptr;
-						 
+						struct arguments *p;
+ 
 						for (ptr = cur; ptr != NULL; ptr=ptr->next)
 						{
 					               if (strcmp(ptr->name, $1) == 0)
@@ -521,16 +523,15 @@ stmt:  AlterTableStmt			{ output_statement($1, 0, NULL); }
 							sprintf(errortext, "trying to open undeclared cursor %s\n", $1);
 							mmerror(ET_ERROR, errortext);
 						}
-                  
-						fprintf(yyout, "{ ECPGdo(__LINE__, %s, \"%s\",", ptr->connection ? ptr->connection : "NULL", ptr->command);
-						/* dump variables to C file*/
-						dump_variables(ptr->argsinsert, 0);
-						dump_variables(argsinsert, 0);
-						fputs("ECPGt_EOIT, ", yyout);
-						dump_variables(ptr->argsresult, 0);
-						fputs("ECPGt_EORT);", yyout);
-						whenever_action(2);
-						free($1);
+
+						/* merge variables given in prepare statement with those given here */
+						for (p = argsinsert; p && p->next; p = p->next);
+						if (p)
+							p->next = ptr->argsinsert;
+						else
+							argsinsert = ptr->argsinsert;
+
+						output_statement(ptr->command, 0, NULL, ptr->connection, argsinsert, ptr->argsresult);
 					}
 		| ECPGPrepare		{
 						if (connection)
@@ -3840,138 +3841,10 @@ TypeId:  ColId
  *  list due to shift/reduce conflicts in yacc. If so, move
  *  down to the ColLabel entity. - thomas 1997-11-06
  */
-ColId:  ident					{ $$ = $1; }
-		| datetime			{ $$ = $1; }
-		| ABSOLUTE			{ $$ = make_str("absolute"); }
-		| ACCESS			{ $$ = make_str("access"); }
-		| ACTION			{ $$ = make_str("action"); }
-		| AFTER				{ $$ = make_str("after"); }
-		| AGGREGATE			{ $$ = make_str("aggregate"); }
-		| BACKWARD			{ $$ = make_str("backward"); }
-		| BEFORE			{ $$ = make_str("before"); }
-		| CACHE				{ $$ = make_str("cache"); }
-		| COMMENT			{ $$ = make_str("comment"); } 
-		| COMMITTED			{ $$ = make_str("committed"); }
-		| CONSTRAINTS			{ $$ = make_str("constraints"); }
-		| CREATEDB			{ $$ = make_str("createdb"); }
-		| CREATEUSER			{ $$ = make_str("createuser"); }
-		| CYCLE				{ $$ = make_str("cycle"); }
-		| DATABASE			{ $$ = make_str("database"); }
-		| DEFERRED			{ $$ = make_str("deferred"); }
-		| DELIMITERS			{ $$ = make_str("delimiters"); }
-		| DOUBLE			{ $$ = make_str("double"); }
-		| EACH				{ $$ = make_str("each"); }
-		| ENCODING			{ $$ = make_str("encoding"); }
-		| EXCLUSIVE			{ $$ = make_str("exclusive"); }
-		| FORWARD			{ $$ = make_str("forward"); }
-		| FUNCTION			{ $$ = make_str("function"); }
-		| HANDLER			{ $$ = make_str("handler"); }
-		| IMMEDIATE			{ $$ = make_str("immediate"); }
-		| INCREMENT			{ $$ = make_str("increment"); }
-		| INDEX				{ $$ = make_str("index"); }
-		| INHERITS			{ $$ = make_str("inherits"); }
-		| INSENSITIVE			{ $$ = make_str("insensitive"); }
-		| INSTEAD			{ $$ = make_str("instead"); }
-		| INTERVAL			{ $$ = make_str("interval"); }
-		| ISNULL			{ $$ = make_str("isnull"); }
-		| ISOLATION			{ $$ = make_str("isolation"); }
-		| KEY				{ $$ = make_str("key"); }
-		| LANGUAGE			{ $$ = make_str("language"); }
-		| LANCOMPILER			{ $$ = make_str("lancompiler"); }
-		| LEVEL				{ $$ = make_str("level"); }
-		| LOCATION			{ $$ = make_str("location"); }
-		| MATCH				{ $$ = make_str("match"); }
-		| MAXVALUE			{ $$ = make_str("maxvalue"); }
-		| MINVALUE			{ $$ = make_str("minvalue"); }
-		| MODE				{ $$ = make_str("mode"); }
-		| NEXT				{ $$ = make_str("next"); }
-		| NOCREATEDB			{ $$ = make_str("nocreatedb"); }
-		| NOCREATEUSER			{ $$ = make_str("nocreateuser"); }
-		| NOTHING			{ $$ = make_str("nothing"); }
-		| NOTNULL			{ $$ = make_str("notnull"); }
-		| OF				{ $$ = make_str("of"); }
-		| OIDS				{ $$ = make_str("oids"); }
-		| ONLY				{ $$ = make_str("only"); }
-		| OPERATOR			{ $$ = make_str("operator"); }
-		| OPTION			{ $$ = make_str("option"); }
-		| PASSWORD			{ $$ = make_str("password"); }
-		| PENDANT			{ $$ = make_str("pendant"); }
-		| PRIOR				{ $$ = make_str("prior"); }
-		| PRIVILEGES			{ $$ = make_str("privileges"); }
-		| PROCEDURAL			{ $$ = make_str("procedural"); }
-		| READ				{ $$ = make_str("read"); }
-		| RELATIVE			{ $$ = make_str("relative"); }
-		| RENAME			{ $$ = make_str("rename"); }
-		| RESTRICT			{ $$ = make_str("restrict"); }
-		| RETURNS			{ $$ = make_str("returns"); }
-		| ROW				{ $$ = make_str("row"); }
-		| RULE				{ $$ = make_str("rule"); }
-		| SCROLL			{ $$ = make_str("scroll"); }
-		| SEQUENCE                      { $$ = make_str("sequence"); }
-		| SERIAL			{ $$ = make_str("serial"); }
-		| SERIALIZABLE			{ $$ = make_str("serializable"); }
-		| SHARE				{ $$ = make_str("share"); }
-		| START				{ $$ = make_str("start"); }
-		| STATEMENT			{ $$ = make_str("statement"); }
-		| STDIN                         { $$ = make_str("stdin"); }
-		| STDOUT                        { $$ = make_str("stdout"); }
-		| SYSID                         { $$ = make_str("sysid"); }
-		| TEMP				{ $$ = make_str("temp"); }
-		| TEMPORARY			{ $$ = make_str("temporary"); }
-		| TIME				{ $$ = make_str("time"); }
-		| TIMESTAMP			{ $$ = make_str("timestamp"); }
-		| TIMEZONE_HOUR                 { $$ = make_str("timezone_hour"); }
-                | TIMEZONE_MINUTE               { $$ = make_str("timezone_minute"); }
-		| TRIGGER			{ $$ = make_str("trigger"); }
-		| TRUNCATE			{ $$ = make_str("truncate"); }
-		| TRUSTED			{ $$ = make_str("trusted"); }
-		| TYPE_P			{ $$ = make_str("type"); }
-		| VALID				{ $$ = make_str("valid"); }
-		| VERSION			{ $$ = make_str("version"); }
-		| ZONE				{ $$ = make_str("zone"); }
-		| SQL_AT			{ $$ = make_str("at"); }
-		| SQL_BOOL			{ $$ = make_str("bool"); }
-		| SQL_BREAK			{ $$ = make_str("break"); }
-		| SQL_CALL			{ $$ = make_str("call"); }
-		| SQL_CONNECT			{ $$ = make_str("connect"); }
-		| SQL_CONTINUE			{ $$ = make_str("continue"); }
-		| SQL_COUNT			{ $$ = make_str("count"); }
-		| SQL_DATA			{ $$ = make_str("data"); }
-		| SQL_DATETIME_INTERVAL_CODE	{ $$ = make_str("datetime_interval_code"); }
-		| SQL_DATETIME_INTERVAL_PRECISION	{ $$ = make_str("datetime_interval_precision"); }
-		| SQL_DEALLOCATE		{ $$ = make_str("deallocate"); }
-		| SQL_DISCONNECT		{ $$ = make_str("disconnect"); }
-		| SQL_FOUND			{ $$ = make_str("found"); }
-		| SQL_GO			{ $$ = make_str("go"); }
-		| SQL_GOTO			{ $$ = make_str("goto"); }
-		| SQL_IDENTIFIED		{ $$ = make_str("identified"); }
-		| SQL_INDICATOR			{ $$ = make_str("indicator"); }
-		| SQL_INT			{ $$ = make_str("int"); }
-		| SQL_KEY_MEMBER		{ $$ = make_str("key_member"); }
-		| SQL_LENGTH			{ $$ = make_str("length"); }
-		| SQL_LONG			{ $$ = make_str("long"); }
-		| SQL_NAME			{ $$ = make_str("name"); }
-		| SQL_NULLABLE			{ $$ = make_str("nullable"); }
-		| SQL_OCTET_LENGTH		{ $$ = make_str("octet_length"); }
-		| SQL_OFF			{ $$ = make_str("off"); }
-		| SQL_OPEN			{ $$ = make_str("open"); }
-		| SQL_PREPARE			{ $$ = make_str("prepare"); }
-		| SQL_RELEASE			{ $$ = make_str("release"); }
-		| SQL_RETURNED_LENGTH		{ $$ = make_str("returned_length"); }
-		| SQL_RETURNED_OCTET_LENGTH	{ $$ = make_str("returned_octet_length"); }
-		| SQL_SCALE			{ $$ = make_str("scale"); }
-		| SQL_SECTION			{ $$ = make_str("section"); }
-		| SQL_SHORT			{ $$ = make_str("short"); }
-		| SQL_SIGNED			{ $$ = make_str("signed"); }
-		| SQL_SQLERROR			{ $$ = make_str("sqlerror"); }
-		| SQL_SQLPRINT			{ $$ = make_str("sqlprint"); }
-		| SQL_SQLWARNING		{ $$ = make_str("sqlwarning"); }
-		| SQL_STOP			{ $$ = make_str("stop"); }
-		| SQL_STRUCT			{ $$ = make_str("struct"); }
-		| SQL_UNSIGNED			{ $$ = make_str("unsigned"); }
-		| SQL_VAR			{ $$ = make_str("var"); }
-		| SQL_WHENEVER			{ $$ = make_str("whenever"); }
-		;
+ColId: ECPGColId			{ $$ = $1; }
+	| ECPGTypeName			{ $$ = $1; }
+	;
+
 /* Column label
  * Allowed labels in "AS" clauses.
  * Include TRUE/FALSE SQL3 reserved words for Postgres backward
@@ -3982,55 +3855,9 @@ ColId:  ident					{ $$ = $1; }
  *  rather than in ColId if there was a shift/reduce conflict
  *  when used as a full identifier. - thomas 1997-11-06
  */
-ColLabel:  ColId			{ $$ = $1; }
-		| ABORT_TRANS           { $$ = make_str("abort"); }
-		| ANALYZE               { $$ = make_str("analyze"); }
-		| BINARY                { $$ = make_str("binary"); }
-		| CASE                  { $$ = make_str("case"); }
-		| CLUSTER		{ $$ = make_str("cluster"); }
-		| COALESCE              { $$ = make_str("coalesce"); }
-		| CONSTRAINT		{ $$ = make_str("constraint"); }
-		| COPY			{ $$ = make_str("copy"); }
-		| CURRENT		{ $$ = make_str("current"); }
-		| CURRENT_USER		{ $$ = make_str("current_user"); }
-		| DEC			{ $$ = make_str("dec"); }
-		| DECIMAL		{ $$ = make_str("decimal"); }
-		| DEFERRABLE		{ $$ = make_str("deferrable"); }
-		| DO			{ $$ = make_str("do"); }
-		| ELSE                  { $$ = make_str("else"); }
-		| END_TRANS             { $$ = make_str("end"); }
-		| EXPLAIN		{ $$ = make_str("explain"); }
-		| EXTEND		{ $$ = make_str("extend"); }
-		| FALSE_P		{ $$ = make_str("false"); }
-		| FLOAT			{ $$ = make_str("float"); }
-		| FOREIGN		{ $$ = make_str("foreign"); }
-		| GLOBAL		{ $$ = make_str("global"); }
-		| GROUP			{ $$ = make_str("group"); }
-		| INITIALLY		{ $$ = make_str("initially"); }
-		| LISTEN		{ $$ = make_str("listen"); }
-		| LOAD			{ $$ = make_str("load"); }
-		| LOCK_P		{ $$ = make_str("lock"); }
-		| MOVE			{ $$ = make_str("move"); }
-		| NEW			{ $$ = make_str("new"); }
-		| NONE			{ $$ = make_str("none"); }
-		| NULLIF                { $$ = make_str("nullif"); }
-		| NUMERIC               { $$ = make_str("numeric"); }
-		| ORDER			{ $$ = make_str("order"); }
-		| POSITION		{ $$ = make_str("position"); }
-		| PRECISION		{ $$ = make_str("precision"); }
-		| RESET			{ $$ = make_str("reset"); }
-		| SESSION_USER		{ $$ = make_str("session_user"); }
-		| SETOF			{ $$ = make_str("setof"); }
-		| SHOW			{ $$ = make_str("show"); }
-		| TABLE			{ $$ = make_str("table"); }
-		| THEN                  { $$ = make_str("then"); }
-		| TRANSACTION		{ $$ = make_str("transaction"); }
-		| TRUE_P		{ $$ = make_str("true"); }
-		| USER			{ $$ = make_str("user"); }
-		| VACUUM		{ $$ = make_str("vacuum"); }
-		| VERBOSE		{ $$ = make_str("verbose"); }
-		| WHEN                  { $$ = make_str("when"); }
-		;
+ColLabel:  ECPGLabelTypeName			{ $$ = $1; }
+	| ECPGColLabel                  { $$ = $1; }
+	;
 
 SpecialRuleRelation:  CURRENT
 				{
@@ -4364,7 +4191,7 @@ type: simple_type
 			$$.type_dimension = -1;
   			$$.type_index = -1;
 		}
-	| symbol
+	| ECPGColLabel
 		{
 			/* this is for typedef'ed types */
 			struct typedefs *this = get_typedef($1);
@@ -4427,9 +4254,6 @@ s_union: UNION opt_symbol
 	    $$ = cat2_str(make_str("union"), $2);
 	}
 
-opt_symbol: /* empty */ 	{ $$ = EMPTY; }
-	| symbol		{ $$ = $1; }
-
 simple_type: unsigned_type		{ $$=$1; }
 	|	opt_signed signed_type	{ $$=$2; }
 	;
@@ -4469,7 +4293,7 @@ variable_list: variable
 		$$ = cat_str(3, $1, make_str(","), $3);
 	}
 
-variable: opt_pointer symbol opt_array_bounds opt_initializer
+variable: opt_pointer ECPGColLabel opt_array_bounds opt_initializer
 		{
 			struct ECPGtype * type;
                         int dimension = $3.index1; /* dimension of array */
@@ -4788,7 +4612,7 @@ ECPGSetConnection:  SET SQL_CONNECTION to_equal connection_object
 /*
  * define a new type for embedded SQL
  */
-ECPGTypedef: TYPE_P symbol IS type opt_type_array_bounds opt_reference
+ECPGTypedef: TYPE_P ECPGColLabel IS type opt_type_array_bounds opt_reference
 	{
 		/* add entry to list */
 		struct typedefs *ptr, *this;
@@ -4880,7 +4704,7 @@ opt_reference: SQL_REFERENCE { $$ = make_str("reference"); }
 /*
  * define the type of one variable for embedded SQL
  */
-ECPGVar: SQL_VAR symbol IS type opt_type_array_bounds opt_reference
+ECPGVar: SQL_VAR ECPGColLabel IS type opt_type_array_bounds opt_reference
 	{
 		struct variable *p = find_variable($2);
 		int dimension = $5.index1;
@@ -4998,110 +4822,204 @@ action : SQL_CONTINUE {
 }
 
 /* some other stuff for ecpg */
-/*
- * no longer used
-ecpg_expr:  c_expr 
-				{	$$ = $1; }
-		| a_expr TYPECAST Typename
-				{	$$ = cat_str(3, $1, make_str("::"), $3); }
-		| '-' ecpg_expr %prec UMINUS
-				{	$$ = cat2_str(make_str("-"), $2); }
-		| '%' ecpg_expr
-				{       $$ = cat2_str(make_str("%"), $2); }
-		| '^' ecpg_expr
-				{       $$ = cat2_str(make_str("^"), $2); }
-		| '|' ecpg_expr
-				{       $$ = cat2_str(make_str("|"), $2); }
-		| ';' a_expr
-				{       $$ = cat2_str(make_str(";"), $2); }
-		| a_expr '%'
-				{       $$ = cat2_str($1, make_str("%")); }
-		| a_expr '^'
-				{       $$ = cat2_str($1, make_str("^")); }
-		| a_expr '|'
-				{       $$ = cat2_str($1, make_str("|")); }
-		| a_expr '+' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("+"), $3); }
-		| a_expr '-' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("-"), $3); }
-		| a_expr '*' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("*"), $3); }
-		| a_expr '/' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("/"), $3); }
-		| a_expr '%' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("%"), $3); }
-		| a_expr '^' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("^"), $3); }
-		| a_expr '|' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("|"), $3); }
-		| a_expr '<' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("<"), $3); }
-		| a_expr '>' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str(">"), $3); }
-		| a_expr '=' NULL_P
-                                {       $$ = cat2_str($1, make_str("= NULL")); }
-		| NULL_P '=' ecpg_expr
-                                {       $$ = cat2_str(make_str("= NULL"), $3); }
-		| a_expr '=' ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("="), $3); }
-		| a_expr Op ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("="), $3); }
-		| Op ecpg_expr
-				{	$$ = cat2_str($1, $2); }
-		| a_expr Op
-				{	$$ = cat2_str($1, $2); }
-		| a_expr AND ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("and"), $3); }
-		| a_expr OR ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("or"), $3); }
-		| NOT ecpg_expr
-				{	$$ = cat2_str(make_str("not"), $2); }
-		| a_expr LIKE ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("like"), $3); }
-		| a_expr NOT LIKE ecpg_expr
-				{	$$ = cat_str(3, $1, make_str("not like"), $4); }
-		| a_expr ISNULL
-				{	$$ = cat2_str($1, make_str("isnull")); }
-		| a_expr IS NULL_P
-				{	$$ = cat2_str($1, make_str("is null")); }
-		| a_expr NOTNULL
-				{	$$ = cat2_str($1, make_str("notnull")); }
-		| a_expr IS NOT NULL_P
-				{	$$ = cat2_str($1, make_str("is not null")); }
-		| a_expr IS TRUE_P
-				{	$$ = cat2_str($1, make_str("is true")); }
-		| a_expr IS NOT FALSE_P
-				{	$$ = cat2_str($1, make_str("is not false")); }
-		| a_expr IS FALSE_P
-				{	$$ = cat2_str($1, make_str("is false")); }
-		| a_expr IS NOT TRUE_P
-				{	$$ = cat2_str($1, make_str("is not true")); }
-		| a_expr BETWEEN b_expr AND b_expr
-				{
-					$$ = cat_str(5, $1, make_str("between"), $3, make_str("and"), $5); 
-				}
-		| a_expr NOT BETWEEN b_expr AND b_expr
-				{
-					$$ = cat_str(5, $1, make_str("not between"), $4, make_str("and"), $6); 
-				}
-		| a_expr IN '(' in_expr ')'
-				{
-					$$ = cat_str(4, $1, make_str(" in ("), $4, make_str(")")); 
-				}
-		| a_expr NOT IN '(' in_expr ')'
-				{
-					$$ = cat_str(4, $1, make_str(" not in ("), $5, make_str(")")); 
-				}
-		| a_expr all_Op sub_type '(' SubSelect ')'
-				{
-					$$ = cat_str(4, $1, $2, $3, cat_str(3, make_str("("), $5, make_str(")"))); 
-				}
-		| row_expr
-				{       $$ = $1; }
-		| civariableonly
-			        { 	$$ = $1; }
+
+/* additional ColId entries */
+ECPGKeywords: 	SQL_AT				{ $$ = make_str("at"); }
+		| SQL_BREAK			{ $$ = make_str("break"); }
+		| SQL_CALL			{ $$ = make_str("call"); }
+		| SQL_CONNECT			{ $$ = make_str("connect"); }
+		| SQL_CONTINUE			{ $$ = make_str("continue"); }
+		| SQL_COUNT			{ $$ = make_str("count"); }
+		| SQL_DATA			{ $$ = make_str("data"); }
+		| SQL_DATETIME_INTERVAL_CODE	{ $$ = make_str("datetime_interval_code"); }
+		| SQL_DATETIME_INTERVAL_PRECISION	{ $$ = make_str("datetime_interval_precision"); }
+		| SQL_DEALLOCATE		{ $$ = make_str("deallocate"); }
+		| SQL_DISCONNECT		{ $$ = make_str("disconnect"); }
+		| SQL_FOUND			{ $$ = make_str("found"); }
+		| SQL_GO			{ $$ = make_str("go"); }
+		| SQL_GOTO			{ $$ = make_str("goto"); }
+		| SQL_IDENTIFIED		{ $$ = make_str("identified"); }
+		| SQL_INDICATOR			{ $$ = make_str("indicator"); }
+		| SQL_KEY_MEMBER		{ $$ = make_str("key_member"); }
+		| SQL_LENGTH			{ $$ = make_str("length"); }
+		| SQL_NAME			{ $$ = make_str("name"); }
+		| SQL_NULLABLE			{ $$ = make_str("nullable"); }
+		| SQL_OCTET_LENGTH		{ $$ = make_str("octet_length"); }
+		| SQL_OFF			{ $$ = make_str("off"); }
+		| SQL_OPEN			{ $$ = make_str("open"); }
+		| SQL_PREPARE			{ $$ = make_str("prepare"); }
+		| SQL_RELEASE			{ $$ = make_str("release"); }
+		| SQL_RETURNED_LENGTH		{ $$ = make_str("returned_length"); }
+		| SQL_RETURNED_OCTET_LENGTH	{ $$ = make_str("returned_octet_length"); }
+		| SQL_SCALE			{ $$ = make_str("scale"); }
+		| SQL_SECTION			{ $$ = make_str("section"); }
+		| SQL_SQLERROR			{ $$ = make_str("sqlerror"); }
+		| SQL_SQLPRINT			{ $$ = make_str("sqlprint"); }
+		| SQL_SQLWARNING		{ $$ = make_str("sqlwarning"); }
+		| SQL_STOP			{ $$ = make_str("stop"); }
+		| SQL_VAR			{ $$ = make_str("var"); }
+		| SQL_WHENEVER			{ $$ = make_str("whenever"); }
+		;
+
+ECPGTypeName:	  SQL_BOOL		{ $$ = make_str("bool"); }
+		| SQL_INT		{ $$ = make_str("int"); }
+		| SQL_LONG		{ $$ = make_str("long"); }
+		| SQL_SHORT		{ $$ = make_str("short"); }
+		| SQL_STRUCT		{ $$ = make_str("struct"); }
+		| SQL_SIGNED		{ $$ = make_str("signed"); }
+		| SQL_UNSIGNED		{ $$ = make_str("unsigned"); }
+		| DOUBLE		{ $$ = make_str("double"); }
+
+ECPGLabelTypeName:	 FLOAT		{ $$ = make_str("float"); }
+			| ECPGTypeName	{ $$ = $1; }
+		;
+
+opt_symbol:	symbol		{ $$ = $1; }
+		| /*EMPTY*/	{ $$ = EMPTY; }
+		;
+
+symbol:		ColLabel	{ $$ = $1; }
+
+ECPGColId:  /* to be used instead of ColId */
+	 ECPGKeywords			{ $$ = $1; }
+	| ident				{ $$ = $1; }
+	| datetime			{ $$ = $1; }
+	| ABSOLUTE			{ $$ = make_str("absolute"); }
+	| ACCESS			{ $$ = make_str("access"); }
+	| ACTION			{ $$ = make_str("action"); }
+	| AFTER				{ $$ = make_str("after"); }
+	| AGGREGATE			{ $$ = make_str("aggregate"); }
+	| BACKWARD			{ $$ = make_str("backward"); }
+	| BEFORE			{ $$ = make_str("before"); }
+	| CACHE				{ $$ = make_str("cache"); }
+	| COMMENT			{ $$ = make_str("comment"); } 
+	| COMMITTED			{ $$ = make_str("committed"); }
+	| CONSTRAINTS			{ $$ = make_str("constraints"); }
+	| CREATEDB			{ $$ = make_str("createdb"); }
+	| CREATEUSER			{ $$ = make_str("createuser"); }
+	| CYCLE				{ $$ = make_str("cycle"); }
+	| DATABASE			{ $$ = make_str("database"); }
+	| DEFERRED			{ $$ = make_str("deferred"); }
+	| DELIMITERS			{ $$ = make_str("delimiters"); }
+	| EACH				{ $$ = make_str("each"); }
+	| ENCODING			{ $$ = make_str("encoding"); }
+	| EXCLUSIVE			{ $$ = make_str("exclusive"); }
+	| FORWARD			{ $$ = make_str("forward"); }
+	| FUNCTION			{ $$ = make_str("function"); }
+	| HANDLER			{ $$ = make_str("handler"); }
+	| IMMEDIATE			{ $$ = make_str("immediate"); }
+	| INCREMENT			{ $$ = make_str("increment"); }
+	| INDEX				{ $$ = make_str("index"); }
+	| INHERITS			{ $$ = make_str("inherits"); }
+	| INSENSITIVE			{ $$ = make_str("insensitive"); }
+	| INSTEAD			{ $$ = make_str("instead"); }
+	| INTERVAL			{ $$ = make_str("interval"); }
+	| ISNULL			{ $$ = make_str("isnull"); }
+	| ISOLATION			{ $$ = make_str("isolation"); }
+	| KEY				{ $$ = make_str("key"); }
+	| LANGUAGE			{ $$ = make_str("language"); }
+	| LANCOMPILER			{ $$ = make_str("lancompiler"); }
+	| LEVEL				{ $$ = make_str("level"); }
+	| LOCATION			{ $$ = make_str("location"); }
+	| MATCH				{ $$ = make_str("match"); }
+	| MAXVALUE			{ $$ = make_str("maxvalue"); }
+	| MINVALUE			{ $$ = make_str("minvalue"); }
+	| MODE				{ $$ = make_str("mode"); }
+	| NEXT				{ $$ = make_str("next"); }
+	| NOCREATEDB			{ $$ = make_str("nocreatedb"); }
+	| NOCREATEUSER			{ $$ = make_str("nocreateuser"); }
+	| NOTHING			{ $$ = make_str("nothing"); }
+	| NOTNULL			{ $$ = make_str("notnull"); }
+	| OF				{ $$ = make_str("of"); }
+	| OIDS				{ $$ = make_str("oids"); }
+	| ONLY				{ $$ = make_str("only"); }
+	| OPERATOR			{ $$ = make_str("operator"); }
+	| OPTION			{ $$ = make_str("option"); }
+	| PASSWORD			{ $$ = make_str("password"); }
+	| PENDANT			{ $$ = make_str("pendant"); }
+	| PRIOR				{ $$ = make_str("prior"); }
+	| PRIVILEGES			{ $$ = make_str("privileges"); }
+	| PROCEDURAL			{ $$ = make_str("procedural"); }
+	| READ				{ $$ = make_str("read"); }
+	| RELATIVE			{ $$ = make_str("relative"); }
+	| RENAME			{ $$ = make_str("rename"); }
+	| RESTRICT			{ $$ = make_str("restrict"); }
+	| RETURNS			{ $$ = make_str("returns"); }
+	| ROW				{ $$ = make_str("row"); }
+	| RULE				{ $$ = make_str("rule"); }
+	| SCROLL			{ $$ = make_str("scroll"); }
+	| SEQUENCE                      { $$ = make_str("sequence"); }
+	| SERIAL			{ $$ = make_str("serial"); }
+	| SERIALIZABLE			{ $$ = make_str("serializable"); }
+	| SHARE				{ $$ = make_str("share"); }
+	| START				{ $$ = make_str("start"); }
+	| STATEMENT			{ $$ = make_str("statement"); }
+	| STDIN                         { $$ = make_str("stdin"); }
+	| STDOUT                        { $$ = make_str("stdout"); }
+	| SYSID                         { $$ = make_str("sysid"); }
+	| TEMP				{ $$ = make_str("temp"); }
+	| TEMPORARY			{ $$ = make_str("temporary"); }
+	| TIME				{ $$ = make_str("time"); }
+	| TIMESTAMP			{ $$ = make_str("timestamp"); }
+	| TIMEZONE_HOUR                 { $$ = make_str("timezone_hour"); }
+        | TIMEZONE_MINUTE               { $$ = make_str("timezone_minute"); }
+	| TRIGGER			{ $$ = make_str("trigger"); }
+	| TRUNCATE			{ $$ = make_str("truncate"); }
+	| TRUSTED			{ $$ = make_str("trusted"); }
+	| TYPE_P			{ $$ = make_str("type"); }
+	| VALID				{ $$ = make_str("valid"); }
+	| VERSION			{ $$ = make_str("version"); }
+	| ZONE				{ $$ = make_str("zone"); }
+	;
+
+ECPGColLabel:  ECPGColId		{ $$ = $1; }
+		| ABORT_TRANS           { $$ = make_str("abort"); }
+		| ANALYZE               { $$ = make_str("analyze"); }
+		| BINARY                { $$ = make_str("binary"); }
+		| CASE                  { $$ = make_str("case"); }
+		| CLUSTER		{ $$ = make_str("cluster"); }
+		| COALESCE              { $$ = make_str("coalesce"); }
+		| CONSTRAINT		{ $$ = make_str("constraint"); }
+		| COPY			{ $$ = make_str("copy"); }
+		| CURRENT		{ $$ = make_str("current"); }
+		| CURRENT_USER		{ $$ = make_str("current_user"); }
+		| DEC			{ $$ = make_str("dec"); }
+		| DECIMAL		{ $$ = make_str("decimal"); }
+		| DEFERRABLE		{ $$ = make_str("deferrable"); }
+		| DO			{ $$ = make_str("do"); }
+		| ELSE                  { $$ = make_str("else"); }
+		| END_TRANS             { $$ = make_str("end"); }
+		| EXPLAIN		{ $$ = make_str("explain"); }
+		| EXTEND		{ $$ = make_str("extend"); }
+		| FALSE_P		{ $$ = make_str("false"); }
+		| FOREIGN		{ $$ = make_str("foreign"); }
+		| GLOBAL		{ $$ = make_str("global"); }
+		| GROUP			{ $$ = make_str("group"); }
+		| INITIALLY		{ $$ = make_str("initially"); }
+		| LISTEN		{ $$ = make_str("listen"); }
+		| LOAD			{ $$ = make_str("load"); }
+		| LOCK_P		{ $$ = make_str("lock"); }
+		| MOVE			{ $$ = make_str("move"); }
+		| NEW			{ $$ = make_str("new"); }
+		| NONE			{ $$ = make_str("none"); }
+		| NULLIF                { $$ = make_str("nullif"); }
+		| NUMERIC               { $$ = make_str("numeric"); }
+		| ORDER			{ $$ = make_str("order"); }
+		| POSITION		{ $$ = make_str("position"); }
+		| PRECISION		{ $$ = make_str("precision"); }
+		| RESET			{ $$ = make_str("reset"); }
+		| SESSION_USER		{ $$ = make_str("session_user"); }
+		| SETOF			{ $$ = make_str("setof"); }
+		| SHOW			{ $$ = make_str("show"); }
+		| TABLE			{ $$ = make_str("table"); }
+		| THEN                  { $$ = make_str("then"); }
+		| TRANSACTION		{ $$ = make_str("transaction"); }
+		| TRUE_P		{ $$ = make_str("true"); }
+		| USER			{ $$ = make_str("user"); }
+		| VACUUM		{ $$ = make_str("vacuum"); }
+		| VERBOSE		{ $$ = make_str("verbose"); }
+		| WHEN                  { $$ = make_str("when"); }
 		;
-*/
 
 into_list : coutputvariable | into_list ',' coutputvariable;
 
@@ -5130,15 +5048,13 @@ indicator: /* empty */			{ $$ = NULL; }
 	| SQL_INDICATOR cvariable 	{ check_indicator((find_variable($2))->type); $$ = $2; }
 	| SQL_INDICATOR name		{ check_indicator((find_variable($2))->type); $$ = $2; }
 
-ident: IDENT	{ $$ = $1; }
+ident: IDENT		{ $$ = $1; }
 	| CSTRING	{ $$ = make3_str(make_str("\""), $1, make_str("\"")); };
 
 /*
  * C stuff
  */
 
-symbol: ident	{ $$ = $1; }
-
 cpp_line: CPP_LINE	{ $$ = $1; }
 
 c_stuff: c_anything 	{ $$ = $1; }
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c
index 8cbb1d38777148f0875f06ff43155596189256cf..10b8af6cf95af7d0d880d8c3a0312b78e83790c3 100644
--- a/src/interfaces/ecpg/preproc/variable.c
+++ b/src/interfaces/ecpg/preproc/variable.c
@@ -222,8 +222,6 @@ dump_variables(struct arguments * list, int mode)
 
     /* Then the current element and its indicator */
     ECPGdump_a_type(yyout, list->variable->name, list->variable->type,
-/*	(list->indicator->type->typ != ECPGt_NO_INDICATOR) ? list->indicator->name : NULL,
-	(list->indicator->type->typ != ECPGt_NO_INDICATOR) ? list->indicator->type : NULL, NULL, NULL);*/
 	list->indicator->name, list->indicator->type, NULL, NULL);
 
     /* Then release the list element. */