<br>The functions we&#39;ve identified as required are:<br><br>LEFT<br>LEN<br>UCASE<br>INSTR<br>mid<br><br>Since we&#39;re implementing MID and LEFT I expect we&#39;d also handle Substring while we&#39;re at it, since they provide the same functionality.
<br><br><br><div><span class="gmail_quote">On 2/12/07, <b class="gmail_sendername">Julian Hyde</b> &lt;<a href="mailto:julianhyde@speakeasy.net">julianhyde@speakeasy.net</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Matt,</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Can you give me a list of functions you need? Already 
on my list (see <a href="http://mondrian.pentaho.org/documentation/roadmap.html#Feature_Standard_functions" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://mondrian.pentaho.org/documentation/roadmap.html#Feature_Standard_functions
</a>) 
are:</span></font></div>
<ul dir="ltr">
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Cint(String) returns Number 
*</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>CStr(Number) returns String 
*</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Power(Number, Number) returns 
  Number</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Log(Number) returns Number</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Sqrt(Number) returns Number</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Substring(String, Integer) returns 
  String</span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Substring(String, Integer, Integer) returns 
  String</span></font></div></span></font></div></li>
  <li>
  <div align="left"><font color="#000080" face="Verdana" size="2"><span>Trim</span></font></div></li></ul>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>* CInt and CStr&nbsp;are subsumed by the Cast operator 
which I implemented recently, but will help people to run MDX queries 
unchanged.</span></font></div></span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>See further comments inline.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Julian</span></font></div><br>
<blockquote style="border-left: 2px solid rgb(0, 0, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
  <div dir="ltr" align="left" lang="en-us">
  <hr>
  <font face="Tahoma" size="2"><b>From:</b> <a href="mailto:mondrian-bounces@pentaho.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mondrian-bounces@pentaho.org</a> 
  [mailto:<a href="mailto:mondrian-bounces@pentaho.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mondrian-bounces@pentaho.org</a>] <b>On Behalf Of </b>Matt 
  Campbell<br><b>Sent:</b> Friday, February 09, 2007 8:26 AM<br><b>To:</b> 
  Mondrian developer mailing list<br><b>Subject:</b> [Mondrian] VBA functions / 
  IIF<br></font><br></div><span class="q">
  <div></div><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font>
<font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font>
  <div><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><font color="#000080" face="Verdana" size="2"></font><br>
The client 
  tool we&#39;re using (Cognos) issues some vba functions in its MDX 
  occasionally:&nbsp; INSTR, MID, LEN, etc.&nbsp; We&#39;ve been considering how 
  best to deal with it.&nbsp; We could just create some UDFs that mimic what the 
  vba function does, but we could also create them as builtin Mondrian 
  functions.&nbsp; Does anyone have an opinion?&nbsp;<span><font color="#000080" face="Verdana" size="2">&nbsp;</font></span></div></span></blockquote>
<div><span><font color="#000080" face="Verdana" size="2">
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>I&#39;d prefer that functions like this are implemented as 
UDFs. </span></font><font color="#000080" face="Verdana" size="2"><span>mondrian.udf.ValUdf is an example (implemented by Gang 
Chen) of a VB function implemented in this way.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>Even though they are implemented as UDFs, these 
functions would be available out-of-the-box. Include them in 
src/main/META-INF/services/mondrian.spi.UserDefinedFunction and they will be 
picked up automatically.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>As usual, we need a handful of testcases in 
FunctionTest for each function.</span></font></div></font></span></div><span class="q">
<blockquote style="border-left: 2px solid rgb(0, 0, 128); padding-left: 5px; margin-left: 5px; margin-right: 0px;">
  <div><span>&nbsp;</span><br><br>We also plan on 
  overriding IIF to support some additional parameter types.&nbsp; Right now IIF 
  supports iif( &lt;logical expression&gt;, &lt;string&gt;,&lt;string&gt;) and 
  iif(&lt;logical expression&gt;,&lt;number&gt;,&lt;number&gt;).&nbsp; We&#39;d like 
  to add iif(exp,value, str), iif(exp,str, value), iif(exp,value, value).&nbsp; 
  All of these permutations are supported by AS2K.&nbsp;<span><font color="#000080" face="Verdana" size="2">&nbsp;</font></span></div>
  <div><span><font color="#000080" face="Verdana" size="2"></font></span>&nbsp;</div></blockquote>
</span><div><span>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span>You&#39;re welcome to add other overloads to Iif. 
</span></font><font color="#000080" face="Verdana" size="2"><span>Iif is currently a builtin function, and it should stay 
that way.</span></font></div>
<div dir="ltr" align="left"><font color="#000080" face="Verdana" size="2"><span></span></font>&nbsp;</div></span><span><font color="#000080" face="Verdana" size="2"></font></span></div>
<div><span><font color="#000080" face="Verdana" size="2">Julian</font></span></div></div>
<br>_______________________________________________<br>Mondrian mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:Mondrian@pentaho.org">Mondrian@pentaho.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://lists.pentaho.org/mailman/listinfo/mondrian" target="_blank">
http://lists.pentaho.org/mailman/listinfo/mondrian</a><br><br></blockquote></div><br>