* From: p.a.coppen@let.kun.nl
* Date: Wed, 26 Feb 1997 10:46:03 -0600 (CST)
*---------------------------------------------------------------------*
*								      *
*	Call: FENCE(P)						      *
*	Purpose: returns a pattern that only matches P in a forward   *
*		 scan. This means alternatives within P are	      *
*		 discarded if P matches				      *
*	Note: In the system implementation of FENCE(), alternatives   *
*	      really are discarded. What happens here is that the     *
*	      first match for P sets a flag that causes failure	      *
*	      of other alternatives. In reality all alternatives to   *
*	      P are tested (possibly causing all kinds of side	      *
*	      effects). This shortcoming will be most problematic     *
*	      if alternatives within P involve ABORT, FENCE,	      *
*	      unevaluated expressions and unconditional value	      *
*	      assignment.					      *
*	Cross-references: UNIQUE()				      *
*	Important note: This function is commented. You can	      *
*			uncomment it if your implementation	      *
*			does not have a system FENCE()		      *
*	Side-effects: who knows? All side effects from all alterna-   *
*		      tives to P may occur.			      *
*								      *
*---------------------------------------------------------------------*
-INCLUDE "unique.sno"
	DEFINE("FENCE(P)N")				   :(FENCE_END)
FENCE	N = UNIQUE()
	FENCE = EVAL("@" N " P '' $ *$('" N "' DIFFER(" N ")")
+							      :(RETURN)
FENCE_END
