diff --git a/ecrire/inc_debug_sql.php3 b/ecrire/inc_debug_sql.php3
index 91ea0c02ecb01f55e359786fa4b0c9eb68e5f427..49a04a553a534f385de35e3f7bbadd7f312f6257 100644
--- a/ecrire/inc_debug_sql.php3
+++ b/ecrire/inc_debug_sql.php3
@@ -170,11 +170,10 @@ function debug_sequence($id, $nom, $niv, $sequence) {
 }
 
 // appelee a chaque compilation de boucle (inc-compilo)
-function boucle_debug_compile ($id, $nom, $pretty, $sourcefile, $code) {
+function boucle_debug_compile ($id, $nom, $code) {
 	global $debug_objets;
 
 	$debug_objets['code'][$nom.$id] = $code;
-	$debug_objets['pretty'][$nom.$id] = $pretty;
 }
 
 // appelee a chaque compilation de squelette (inc-compilo)
@@ -193,21 +192,21 @@ function squelette_debug_compile($nom, $sourcefile, $code, $squelette) {
 	}
 }
 
-// appelee a chaque analyse syntaxique de squelette (inc-parser)
+// appelee a chaque analyse syntaxique de squelette
 function boucle_debug ($nom, $id_parent, $id, $type, $crit, $avant, $milieu, $apres, $altern) {
 	global $debug_objets;
-
 	$debug_objets['courant'] = $nom;
 	$debug_objets['parent'][$nom.$id] = $id_parent;
+	$debug_objets['pretty'][$nom.$id] = 
+	  "BOUCLE$id($type)" . ereg_replace("[\r\n]", " ", $crit) ;
 	// on synthetise avec la syntaxe standard, mais "<//" pose pb 
 	$debug_objets['boucle'][$nom.$id] = 
-	  "<B$id>" .
-	  $avant . "<BOUCLE$id($type)" . $crit .
-	  '>' .
+	  (!$avant ? "" : "<B$id>$avant") . 
+	  "<BOUCLE$id($type)$crit>" .
 	  $milieu .
 	  "</BOUCLE$id>" .
-	  $apres . "</B$id>" .
-	  $altern . '<//B' . $id . ">";
+	  (!$apres ? "" : "$apres</B$id>") . 
+	  (!$altern ? "" : "$altern<//B$id>");
 }
 
 function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
diff --git a/inc-compilo.php3 b/inc-compilo.php3
index c4bc4692be57f5ff5261cc24a8f86069dd2d45cb..b53fa8fd62cccb35254665e6ce0cda8046a7e2f2 100644
--- a/inc-compilo.php3
+++ b/inc-compilo.php3
@@ -491,7 +491,7 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle='') {
 
 // affichage du code produit
 
-function code_boucle(&$boucles, $id, $nom, $sourcefile)
+function code_boucle(&$boucles, $id, $nom)
 {
 	$boucle = &$boucles[$id];
 
@@ -525,8 +525,6 @@ function code_boucle(&$boucles, $id, $nom, $sourcefile)
 	$pretty = "BOUCLE$id(".strtoupper($boucle->type_requete) . ")" .
 		ereg_replace("[\r\n]", " ", $pretty);
 
-	if ($GLOBALS['var_mode'] == 'debug')
-		boucle_debug_compile ($id, $nom, $pretty, $sourcefile,$boucle->return);
 	return $pretty;	
 }
 
@@ -632,12 +630,16 @@ function calculer_squelette($squelette, $nom, $gram, $sourcefile) {
 			'(&$Cache, &$Pile, &$doublons, &$Numrows, $SP) {' .
 			$f($id, $boucles) .
 			"\n}\n\n";
+		if ($GLOBALS['var_mode'] == 'debug')
+		  boucle_debug_compile ($id, $nom, $boucles[$id]->return);
+
 	}
 
 	$code = "";
 	foreach($boucles as $id => $boucle) {
-		$code .= "\n//\n// <" .
-		  code_boucle($boucles, $id, $nom, $sourcefile).
+		$code .= "\n//\n// <BOUCLE " .
+#		  code_boucle($boucles, $id, $nom). # pas au point
+		  $boucle->type_requete .
 		  ">\n//\n" .
 		  $boucle->return;
 	}
diff --git a/inc-html-squel.php3 b/inc-html-squel.php3
index 0dd84265a2cf699bd66cd6a6bbf645a993e9501c..c86aafe32c3b29f06dbf1453fb1e5a6ff88c34fa 100644
--- a/inc-html-squel.php3
+++ b/inc-html-squel.php3
@@ -502,7 +502,7 @@ function phraser($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 		if (substr($soustype, 0, 6) == TYPE_RECURSIF) {
 			$result->type_requete = TYPE_RECURSIF;
 			$result->param[0] = substr($soustype, strlen(TYPE_RECURSIF));
-			$milieu = substr($milieu, strpos($milieu, '>'));
+			$milieu = substr($milieu, strpos($milieu, '>')+1);
 			$params = "";
 		} else {
 			$result->type_requete = $soustype;