diff --git a/src/snc/gen_code.c b/src/snc/gen_code.c
index 74665ab0fb6ef325715cbddcb22e56ceda86fd46..0a97324d68714130968431a15314d3e21033dabf 100644
--- a/src/snc/gen_code.c
+++ b/src/snc/gen_code.c
@@ -21,8 +21,6 @@ in the file LICENSE that is included with this distribution.
 #include "main.h"
 #include "gen_code.h"
 
-static void gen_preamble(char *prog_name);
-static void gen_header_preamble(char *prog_name);
 static void gen_main(char *prog_name);
 static void gen_user_var(Program *p);
 static void gen_global_c_code(Expr *global_c_list);
@@ -57,26 +55,55 @@ void generate_code(Program *p, const char *header_name)
 
 	set_gen_h();
 
-	gen_code("/* Generated with snc from %s */\n", p->prog->src_file);
+	/* Initial comments */
+	gen_code("/* Header file for program %s, ", p->name);
+	gen_code("generated by snc from %s */\n", p->prog->src_file);
+
+	/* The usual C header file humdrum */
 	gen_code("#ifndef INCL%sh\n", p->name);
 	gen_code("#define INCL%sh\n", p->name);
 
-	/* Generate preamble code */
-	gen_header_preamble(p->name);
+	/* Includes */
+	gen_code("#include \"epicsTypes.h\"\n");
+	gen_code("#include \"seqCom.h\"\n");
 
 	/* Generate literal C code intermixed with global definitions */
 	gen_defn_c_code(p->prog, 0);
 
-	/* Generate global, state set, and state variable declarations */
-	gen_user_var(p);
+	if (!p->options.reent)
+	{
+		gen_code("/* Warning: Access to SNL variables from outside */\n");
+		gen_code("/* the program is only supported in reentrant mode */\n");
+	}
+	else
+	{
+		/* Generate global, state set, and state variable declarations */
+		gen_user_var(p);
+	}
+
+	/* The usual C header file humdrum */
 	gen_code("#endif /* INCL%sh */\n", p->name);
 
 	set_gen_c();
 
-	gen_code("/* Generated with snc from %s */\n", p->prog->src_file);
-	gen_preamble(p->name);
+	/* Initial comments */
+	gen_code("/* C code for program %s, ", p->name);
+	gen_code("generated by snc from %s */\n", p->prog->src_file);
+
+	/* Includes */
+	gen_code("#include <string.h>\n");
+	gen_code("#include <stddef.h>\n");
+	gen_code("#include <stdio.h>\n");
+	gen_code("#include <limits.h>\n");
+	gen_code("\n");
 	gen_code("#include \"%s\"\n", header_name);
 
+	if (!p->options.reent)
+	{
+		/* Generate global, state set, and state variable declarations */
+		gen_user_var(p);
+	}
+
 	/* Generate code for each state set */
 	gen_ss_code(p);
 
@@ -100,30 +127,6 @@ static void gen_main(char *prog_name)
 	gen_code("#include \"seqMain.c\"\n");
 }
 
-/* Generate header preamble (includes, defines, etc.) */
-static void gen_header_preamble(char *prog_name)
-{
-	/* Program name (comment) */
-	gen_code("\n/* Header file for program \"%s\" */\n", prog_name);
-
-	/* Includes */
-	gen_code("#include \"epicsTypes.h\"\n");
-	gen_code("#include \"seqCom.h\"\n");
-}
-
-/* Generate preamble (includes, defines, etc.) */
-static void gen_preamble(char *prog_name)
-{
-	/* Program name (comment) */
-	gen_code("\n/* C code for program \"%s\" */\n", prog_name);
-
-	/* Includes */
-	gen_code("#include <string.h>\n");
-	gen_code("#include <stddef.h>\n");
-	gen_code("#include <stdio.h>\n");
-	gen_code("#include <limits.h>\n");
-}
-
 void gen_var_decl(Var *vp)
 {
 	gen_type(vp->type, vp->name);