<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=us-ascii" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18813"></HEAD>
<BODY 
style="WORD-WRAP: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space">
<DIV><SPAN class=479463201-01082009><FONT color=#000080 size=2 
face="Lucida Sans">I'll look into it over the weekend. Can you please log a 
bug.</FONT></SPAN></DIV>
<DIV><SPAN class=479463201-01082009><FONT color=#000080 size=2 
face="Lucida Sans"></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=479463201-01082009><FONT color=#000080 size=2 
face="Lucida Sans">Julian</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="BORDER-LEFT: #000080 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px" 
dir=ltr>
  <DIV dir=ltr lang=en-us class=OutlookMessageHeader align=left>
  <HR tabIndex=-1>
  <FONT size=2 face=Tahoma><B>From:</B> mondrian-bounces@pentaho.org 
  [mailto:mondrian-bounces@pentaho.org] <B>On Behalf Of </B>Eric 
  McDermid<BR><B>Sent:</B> Friday, July 31, 2009 10:36 AM<BR><B>To:</B> Mondrian 
  developer mailing list<BR><B>Subject:</B> [Mondrian] Problem moving UDF 
  returning a list from 2.4 to 3.1.1<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV>I'm having some trouble with a UDF returning a List that worked under 
  2.4, but fails with a parse error under 3.1.1. &nbsp;I'm not sure whether the 
  problem is a flaw in the UDF or in how the newer version of Mondrian is 
  attempting to use it. &nbsp;</DIV>
  <DIV><BR></DIV>
  <DIV>Here's the function, which simply reverses the order of a set:</DIV>
  <DIV>
  <DIV><BR></DIV>
  <DIV><FONT class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>&nbsp;&nbsp;public class ReverseFunction implements 
  UserDefinedFunction {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public Object 
  execute(Evaluator eval, Argument[] args) {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>List memberList = 
  (List) args[0].evaluate(eval);</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>Collections.reverse(memberList);</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return 
  memberList;</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public String 
  getDescription() {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return "Reverses 
  the order of a set";</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public String 
  getName() {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return 
  "Reverse";</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public Type[] 
  getParameterTypes() {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return new Type[] 
  {new SetType(MemberType.Unknown)};</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public String[] 
  getReservedWords() {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return 
  null;</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public Type 
  getReturnType(Type[] arg0) {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return 
  arg0[0];</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>public Syntax 
  getSyntax() {</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>return 
  Syntax.Function;</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>}</SPAN></FONT></DIV>
  <DIV><FONT class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>&nbsp;&nbsp;}</SPAN></FONT></DIV>
  <DIV><BR></DIV>
  <DIV>
  <DIV>The stack trace for the underlying cause of the error is here:</DIV>
  <DIV><BR></DIV>
  <DIV><FONT class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span>Caused by: mondrian.olap.MondrianException: Mondrian 
  Error:Internal error: Cannot convert calc to list: 
  mondrian.olap.fun.UdfResolver$CalcImpl@315d04</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:803)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Util.newInternal(Util.java:1465)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.AbstractExpCompiler.compileList(AbstractExpCompiler.java:286)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.BetterExpCompiler.compileList(BetterExpCompiler.java:77)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.AbstractExpCompiler.compileList(AbstractExpCompiler.java:260)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.fun.SetFunDef$MemberSetListCalc.createCalc(SetFunDef.java:147)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.fun.SetFunDef$MemberSetListCalc.compileSelf(SetFunDef.java:134)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.fun.SetFunDef$MemberSetListCalc.&lt;init&gt;(SetFunDef.java:120)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.fun.SetFunDef.compileCall(SetFunDef.java:89)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.mdx.ResolvedFunCall.accept(ResolvedFunCall.java:152)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.AbstractExpCompiler.compile(AbstractExpCompiler.java:79)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.AbstractExpCompiler.compileAs(AbstractExpCompiler.java:124)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.calc.impl.AbstractExpCompiler.compileIter(AbstractExpCompiler.java:311)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.QueryAxis.compile(QueryAxis.java:122)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Query.compile(Query.java:519)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Query.resolve(Query.java:456)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Query.&lt;init&gt;(Query.java:231)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Query.&lt;init&gt;(Query.java:187)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Parser.makeQuery(Parser.java:870)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.CUP$Parser$actions.CUP$Parser$do_action(Parser.java:1764)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Parser.do_action(Parser.java:699)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  java_cup.runtime.lr_parser.parse(lr_parser.java:569)</SPAN></FONT></DIV>
  <DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span><FONT 
  class=Apple-style-span size=3><SPAN style="FONT-SIZE: 11px" 
  class=Apple-style-span></SPAN></FONT></SPAN><FONT class=Apple-style-span 
  size=3><SPAN style="FONT-SIZE: 11px" class=Apple-style-span>at 
  mondrian.olap.Parser.parseInternal(Parser.java:772)</SPAN></FONT></DIV>
  <DIV><BR></DIV>
  <DIV>The immediate problem is in AbstractExpCompiler.compileList(). &nbsp;It 
  compiles the expression "Reverse([Requested Dates])", gets a 
  mondrian.olap.fun.UdfResolver$CalcImpl instance as a result, then complains 
  because said calc is neither null, a ListCalc, or an IterCalc.</DIV>
  <DIV><BR></DIV>
  <DIV>UDF documentation seems a little thin, and I've been unable to find an 
  example of a UDF returning a list in either mondrian/udf or in UdfTest to use 
  as a reference point.&nbsp;&nbsp;Searching the archive, I do see that Pappyn 
  Bart asked a somewhat similar question back in 2007, but I didn't see a clear 
  resolution.</DIV>
  <DIV><BR></DIV>
  <DIV>Can anyone help me sort this problem out, or failing that at least point 
  me to an example of a UDF that does successfully return a list that I can 
  compare against?</DIV>
  <DIV><BR></DIV>
  <DIV>&nbsp;-- Eric</DIV>
  <DIV><BR></DIV>
  <DIV><BR></DIV></DIV></DIV></BLOCKQUOTE></BODY></HTML>