Operator precedence && or ||.. which is greater

http://www.csc.calpoly.edu/~csturner/courses/101/Hints/operator_precedence.html
http://www.uni-bonn.de/~manfear/javaoperators.php
The above two links are where i read about operator precedence. They say && has more precedence than ||, if thats the case then the output for the following should be true, true , true, but the actual output is as below. Can anyone give me a chart that lists the operator precedence correctly. or have i missed something..pls let me know.. thaks..
class ABC{
  static boolean a, b, c;
  public static void main (String[] args) {
    boolean x = (a = true) || (b = true) && (c = true);
    System.out.print(a + "," + b + "," + c);
output: true false false

If && has higher precedence then shouldnt (b = true)
&& (c = true) get executed first before evaluating
for || operator.??No.
a || b && c
The precedence only means that && binds tighter than || -- that is, that, as somebody said earlier, the above is equivalent to
a || (b && c)
rather than
(a || b) && c
It's still evaluated left to right though. First a, then, iff a is false, (b && c). But for us, since a was true, there was no need to eval (b && c)

Similar Messages

  • (Error in documentation?) Math operator precedence problem

    Hello,
    I apologize in advance, while I do know programming (I'm a PHP and Perl programmer) I'm fairly new to Java so this may well be a silly question, but that's why I am here. I hope you'll show me where my error is so I can finally set this to rest before it drives me mad :)
    (Also, I hope I'm posting this in the right forum?)
    So, I am taking a Java class, and the question in the homework related to operand precendence. When dealing with multiplication, division and addition, things were fine, the documentation is clear and it also makes sense math-wise (multiplication comes before addition, etc etc).
    However, we got this exercise to solve:
    If u=2, v=3, w=5, x=7 and y=11, find the value assuming int variables:
    u++ / v+u++ *w
    Now, according to the operator precedence table (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html) the unary operator u++ comes first, before multiplication, division and addition.
    This would mean I could rewrite the exercise as:
    ((u+1)/v) + ((u+1)*w) = (3/3) + (4*5) = 1+20 = 21
    However, if I run this in Java, the result I get is 15.
    I tried breaking up the result for the two values in the Java code, so I could see where the problem is with my calculation.
    For
    System.out.println(u++ /v);
    I get 0
    For
    System.out.println("u++ *w");
    I get 15
    My professor suggested I attempt to change the values from int to float, so I can see if the division came out to be something illogical. I did so, and now I get:
    For
    System.out.println(u++ /v);
    I get 0.66667
    For
    System.out.println("u++ *w");
    I get 15.0000
    Which means that for the first operation (the division) the division happens on 2/3 (which is 0.6667) and only afterwards the u value is increased. That is, the u++ operation is done after the division, not before. The same happens with the multiplication; when that is carried out, the value of u is now 3 (after it was raised by one in the previous operation) and the first to be carried out is the multiplication (3*5=15) and only then the u++.
    That is entirely against the documentation.
    This is the script I wrote to test the issue:
    public class MathTest {
         public static void main (String [] args) {
              float u=2, v=3, w=5, x=7, y=11;
              System.out.println("Initial value for 'u': " + u);
              float tmp1 = u++ /v;
              System.out.println("u++ /v = " + tmp1);
              System.out.println("First ++ value for 'u': " + u);
              float tmp2 = u++ *w;
              System.out.println("u++ *w= " + tmp2);
              System.out.println("Second ++ value for 'u': " + u);
              System.out.println(tmp1+tmp2);
    The output:
    Initial value for 'u': 2.0
    u++ /v = 1.0
    First ++ value for 'u': 3.0
    u++ *w= 20.0
    Second ++ value for 'u': 4.0
    21.0
    Clearly, the ++ operation is done after the division and after the multiplication.
    Am I missing something here? Is the documentation wrong, or have I missed something obvious? This is driving me crazy!
    Thanks in advance,
    Mori

    >
    The fact that u++ is evaluated but in the calculation itself the "previously stored" value of u is used is completely confusing.
    >
    Yes it can be confusing - and no one is claiming otherwise. Here are some more thread links from other users about the same issue.
    Re: Code Behavior is different in C and Java.
    Re: diffcult to understand expression computaion having operator such as i++
    Operator Precedence for Increment Operator
    >
    So, when they explain that ++ has a higher precedence, the natural thing to consider is that you "do that first" and then do the rest.
    >
    And, as you have discovered, that would be wrong and, to a large degree, is the nut of the issue.
    What you just said illustrates the difference between 'precedence' and 'evaluation order'. Precedence determines which operators are evaluated first. Evaluation order determines the order that the 'operands' of those operators are evaluated. Those are two different, but related, things.
    See Chapter 15 Expressions
    >
    This chapter specifies the meanings of expressions and the rules for their evaluation.
    >
    Sections in the chapter specify the requirements - note the word 'guarantees' in the quoted text - see 15.7.1
    Also read carefully section 15.7.2
    >
    15.7. Evaluation Order
    The Java programming language guarantees that the operands of operators appear to be evaluated in a specific evaluation order, namely, from left to right.
    15.7.1. Evaluate Left-Hand Operand First
    The left-hand operand of a binary operator appears to be fully evaluated before any part of the right-hand operand is evaluated.
    If the operator is a compound-assignment operator (§15.26.2), then evaluation of
    the left-hand operand includes both remembering the variable that the left-hand
    operand denotes and fetching and saving that variable's value for use in the implied
    binary operation.
    15.7.2. Evaluate Operands before Operation
    The Java programming language guarantees that every operand of an operator (except the conditional operators &&, ||, and ? appears to be fully evaluated before any part of the operation itself is performed.
    15.7.3. Evaluation Respects Parentheses and Precedence
    The Java programming language respects the order of evaluation indicated explicitly by parentheses and implicitly by operator precedence.
    >
    So when there are multiple operators in an expression 'precedence' determines which is evaluated first. And, the chart in your link shows 'postfix' is at the top of the list.
    But, as the quote from the java language spec shows, the result of 'postfix' is the ORIGINAL value before incrementation. If it makes it easier for then consider that this 'original' value is saved on the stack or a temp variable for use in the calculation for that operand.
    Then the evalution order determines how the calculation proceeds.
    It may help to look at a different, simpler, but still confusing example. What should the value of 'test' be in this example?
    i = 0;
    test = i++; The value of 'test' will be zero. The value of i++ is the 'original' value before incrementing and that 'original' value is assigned to 'test'.
    At the risk of further confusion here are the actual JVM instructions executed for your example. I just used
    javap -c -l Test1to disassemble this. I manually added the actual source code so you can try to follow this
            int u = 2;
       4:iconst_2       
       5:istore  5
            int v = 3;
       7:iconst_3       
       8:istore          6
            int w = 5;
      10:iconst_5       
      11:istore          7
            int z;
            z = z = u++ / v + u++ * w;
       13:  iload   5
       15:  iinc    5, 1
       18:  iload   6
       20:  idiv
       21:  iload   5
       23:  iinc    5, 1
       26:  iload   7
       28:  imul
       29:  iadd
       30:  dup
       31:  istore  8
       33:  istore  8The Java Virtual Machine Specification has all of the JVM instructions and what they do.
    http://docs.oracle.com/javase/specs/jvms/se7/jvms7.pdf
    Your assignment to z and formula starts with line 13: above
    13: iload 5 - 'Load int from local variable' page 466
    15: iinc 5, 1 - 'Increment local variable by constant' page 465
    18: iload 6 - another load
    20: idiv - do the division page
    21: iload 5 - load variable 5 again
    23: iinc 5, 1 - inc variable 5 again
    26: iload 7 - load variable 7
    28: imul - do the multiply
    29: iadd - do the addition
    30: dup - duplicate the top stack value and put it on the stack
    31: istore 8 - store the duplicated top stack value
    33: istore 8 - store the original top stack value
    Note the description of 'iload'
    >
    The value of the local variable at index
    is pushed onto the operand stack.
    >
    IMPORTANT - now note the description of 'iinc'
    >
    The value const is first sign-extended to an int, and then
    the local variable at index is incremented by that amount.
    >
    The 'iload' loads the ORIGINAL value of the variable and saves it on the stack.
    Then the 'iinc' increments the VARIABLE value - it DOES NOT increment the ORIGINAL value which is now on the stack.
    Now note the description of 'idiv'
    >
    The values are popped
    from the operand stack. The int result is the value of the Java
    programming language expression value1 / value2. The result is
    pushed onto the operand stack.
    >
    The two values on the stack include the ORIGINAL value of the variable - not the incremented value.
    The above three instructions explain the result you are seeing. For postfix the value is loaded onto the stack and then the variable itself (not the loaded original value) is incremented.
    Then you can see what this line does
      21:  iload   5 - load variable 5 againIt loads the variable again. This IS the incremented value. It was incremented by the 'iinc' on line 15 that I discussed above.
    Sorry to get so detailed but this question seems to come up a lot and maybe now you have enough information and doc links to explore this to any level of detail that you want.

  • Operator precedence and associatively

    Greetings,
    I'm a Java newbie, and reflecting that is this concept questions. I'm trying to understand operator precedence and associatively. I understand that operator associatively is how items are read in an expression - like, they (items) are read from left to right. The book I'm trying to learn from talks a lot about this but it all blows over my head.
    I was wondering if one of you Java wizards could explain this concept to me in greater detail. I would really appreciate any thoughts.
    thanks a lot!
    Stephen

    Thousands will disagree with me, but IMHO you should use brackets to make things clear rather
    than assume everyone knows all the precedence rules.
    Basically the concept is:
    1 + 2 * 3 : Does the plus get done first (leaving 3 * 3) or does the the multiply (leaving 1 + 6) ?
    * has a higher precedence so you get 1 + (2 * 3). If you had written it that way in the first place
    you would be less likely to get it wrong when debugging at 3am.
    Associativity comes in when you have two operators of the same precedence.
    Hope this helps !

  • I created a new apple id for my iphone and ipad which work great and allow me to access Icloud. on my macbook air can't get it to use my new apple id for icloud. Help?

    I created a new apple id for my iphone and ipad which work great and allow me to access Icloud. on my macbook air  I can't get it to use my new apple id for icloud. It keeps going back to my old apple id and doesn't afford me to alter it. I use system preferences-icloud and it just wants to verify the old apple id but doesn't afford me the opportunity to delete teh account or edit it like the iphone5 and ipad. Help?

    Welcome to the Apple Community.
    You need to use the sign out option on the left side.

  • I use hd simplepass identity protection which works great with firefox 3.6 but firefox 4 does not recognize so i had to uninstall 4 and reinstall 3.6 what do i do to make simplepass work with firefox 4

    I use hd simplepass identity protection which works great with firefox 3.6. I updated to firefox 4 and when I tried to use simplepass to log into my bookmarked account firefox gave an error message. I had to uninstall firefox 4 and reinstall 3.6 and now I am able to use simplepass again

    The company that make the bioscanner for HP have abandoned it. For more details see https://support.mozilla.com/en-US/questions/799388

  • Help with operator precedence.

    I'm having trouble telling whether + and - signs are unary or binary in figuring out operator precedence. I understand that the unary makes things positive and negative and that the binary is addition and subtraction. here is an example from my notes.
    a + b > - c I I ! d && e == f - g % h. It says that the a+b is the first order of evaluation. Heres the full order is gives for the order of evaluation. (132948765) What I don't understand is how the first plus is unary and not binary because it seems to be addition, and I was under the influence that the unary+ is not used very much. Could someone clear this up. Thanks
    Edited by: javaguy84 on Oct 4, 2007 10:38 PM
    Edited by: javaguy84 on Oct 4, 2007 10:39 PM

    What I don't understand is how the first plus is unary and not binary because it seems
    to be additionYou're right the first plus is a binary operator - otherwise the "a" would be left stranded: unconnected to the rest of the expression.
    In trying to figure out why the plus is the first operator (first in order of operation I mean, not leftmost) it might be helpful to bear in mind: With binary operations (and other places) Java evaluates things left to right. The left hand operand will be completely evaluated before work starts on the right hand operand.
    This is in addition to operator precedence and parentheses.
    See if that helps figure out the order.
    jverd is correct this is a dumb question. It has as much to do with expressions and their evaluation as a crossword puzzle has to English literature. Its dumbness is not of your making, but you might like to raise with your teacher that view that expressions like this would be wrong even if they were correct.
    (Finally there isn't really an order completely defined for this expression because some of the subexpressions may - or may not - ever be evaluated.)
    Post back if you can't figure it out. But give your reasons. Ie list step by step how you think the expression would be evaluated.
    [Edit] Except that assignment operators are evaluated right to left!

  • I have downloaded the Fliqio clock which is great - but I can only have it as a screensaver until I lock my phone

    I have downloaded the Fliqio clock on my iPhone 5s which is great - but i want to keep it as a screen saver when I lock my phone, but it does not allow this
    It will only appear if I do not lock it
    Can anyone help please?

    Third party apps cannot do much to change the lock screen. Music apps are about the only exception I know of. Some clock apps have a setting to disable auto lock while they are running. I generally use that type of setting when I'm using my iPhone as an alarm clock. As you'd be likely to have your phone plugged in overnight anyway, this shouldn't be a problem.

  • The program vectorworks 2008 (not 2009) does not work with the new operating system Mavericks, which is a disaster because it forces us to change the program, and is very expensive. Apple should fix this problem

    The program vectorworks 2008 (not 2009) does not work with the new operating system Mavericks, which is a disaster because it forces us to change the program, and is very expensive. Apple should fix this problem

    Why should Apple fix the problem? Maybe you should consider NOT upgrading if an expensive piece of (obsolete) software you're running won't work with it...

  • My pc has win the operating system view, which does not support lightroom 5. I want to buy version 4

    My pc has win the operating system view, which does not support lightroom 5. I want to buy version 4?

    Thank you, Jim, for your prompt reply. Amazon has it for $151.99, Ebay has a few copies that end up being about as expensive after international shipping and other fees, and I don't trust most of the other sites after reading reviews on them. Looks like I'm going to have to fork out some dollars. How unfortunate.
    Thanks again,
    Michelle

  • How can I stop the loading of "Getting Started with Mozilla Firefox?", which has greatly slowed down the startup of Firefox.

    Firefox used to start up fairly quickly, but now it loads an additional more complicated tab, which has greatly slowed down the start up process. How can I eliminate the loading of this time waster?

    See these articles for some suggestions:
    *https://support.mozilla.com/kb/Firefox+has+just+updated+tab+shows+each+time+you+start+Firefox
    *https://support.mozilla.com/kb/How+to+set+the+home+page - Firefox supports multiple home pages separated by '|' symbols
    *http://kb.mozillazine.org/Preferences_not_saved
    Use this to go to the Firefox Profile Folder
    *Help > Troubleshooting Information > Profile Directory: Open Containing Folder
    *http://kb.mozillazine.org/Profile_folder_-_Firefox

  • I have an Apple I Phone 4S which is great but, can someone help me how to get the photos and videos to my PC which runs on MS XP. I would like to be able to edit and copy to a DVD.

    I have an Apple I Phone 4S which is great but, can someone help me how to get the photos and videos to my PC which runs on MS XP. I would like to be able to edit and copy photos and videos to a DVD.

    Connect your iPhone to your computer. Tp your pc should recognize your iPhone as a camera. Use what ever application you have on the pc to transfer files from a camera to your computer.

  • JAVA operator precedence table is wrong.

    I can not understand why JAVA auto-increment/decrement operator does not follow the rules of Operator Precedence table at http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html
    The precedent order is as follow:
    postfix: expr++ expr--
    unary: ++expr --expr +expr -expr ~ !
    multiplicative: * / %
    From the above we know that x++/x-- is higher then ++x/--x and multiplicative is the lower then both.
    I tested the following in JAVA:
    int y,x = 2;
    y = --x * x++;
    System.out.println(x); //Output is 1.
    Why?
    Theoretically, x++ must be performed before --x, finally then the multiplication (*) and the answer should be
    x++ value=2, stored variable=3
    --x value=2, stored variable=2
    Therefore 2 * 2 = 4.
    Why JAVA is not following the rules that it setup for itself??
    After much research, my conclusion is JAVA Operator Precedence table in java.sun.com website is wrong. The right version should be the same as this website: http://www.sorcon.com/java2/precedence.htm.
    Please run your example code in JAVA before you want to prove me wrong.
    Thank you.

    Hi jsalonen, thank you for your reply. Yes, I see your theory but sorry to say that I don't agree with you. Let's take your example -x++ for our discussion below:
    First let's agree with this:
    x = 2;
    y = -x;
    System.out.println("y = " + y); // y = -2
    System.out.println("x = " + x); // x = 2
    From the above, we can see that by using the negation operator doesn't mean that we have changed the value of x variable. The system just assigns the value of x to the expression but still keeping the value of variable x. That's why we got the output above, agree?
    Now, let's evaluate your example:
    int y, x = 2;
    y = -x++;
    System.out.println("y = " + y); // -2
    System.out.println("x = " + x); // 3
    Hence below is the sequence of process:
    1. -x is evaluated first. Value in variable x is assigned to the expression. At this point the value of x is 2 and this value get negated. However the variable x still storing 2.
    2. Now x++ get evaluated, since this is a postfix increment operator, the value will get assigned first then increase. However x is already assigned, we can not assign it twice, just like if you perform x++ first, you have assigned x then increase and you didn't assign it again for the negation operator. If you did, x would be 3 and get negated to -3. Note that system also cannot perform 2++ because 2 is not a variable. Therefore it is logical to say that x is assigned to the expression and got negated by negation operator then increase the varaible x by 1. So here we increase the value of x by 1 and the result is 3. Therefore variable x is storing 3.
    Now, try the follwing
    x = 2;
    y = -x + x++;
    What is the value of x after -x? It's 2. Remember 2 is assign back to expression but x still retained the original value. If not we would expect x++ to be (-2)++, right?
    But see the output for yourself:
    System.out.println("y = " + y); // 0
    System.out.println("x = " + x); // 3
    As for the subexpression theory, sorry to say that I don't agree with you as well. See the expression below:
    y = -x + x++;
    We can identify that there are 4 operators in this statement, right? (assignment operator, negation operator, addition operator and increment operator)
    since JAVA has defined all the operators in the table and already given each of them a priory and associativity, I don't see any subexpression here. If yes why didn't they mention about subexpression rule in the table? Shouldn't that be defined explicitly so that it doesn't confuse people?
    In conclusion, I still think that JAVA need to correct the operators precedence table at http://java.sun.com/docs/books/tutorial/java/nutsandbolts/operators.html so that they don't confused people for another 10 years. :) Moreover the table is not complete because it did not include . and [ ] and (params) operators.

  • Operator Precedence Doubt

    public class PrecedenceEx {
         public static int m(int i) {
              System.out.print(i + ", "); return i;
         public static void main(String s[]) {
                  m(m(1) - m(2) + m(3) * m(4));
    Output is : 1, 2, 3, 4, 11
    I used operator precedence and got 3, 4, 1, 2, 11
    Why is operator precedence not applicable here.

    Operator precedence is applicable.
    m(1) + m(2) * m(3)
    In the above, precendence does NOT mean that m(2)*m(3) is executed before m(1). Expressions are evaluated left to right. Precedence simply means that the * binds more tightly than the +, so that it's like
    m(1) + ((m(2) * m(3))
    rather than
    (m(1) + m(2)) * m(3).
    So m(1) is evaluated first, then m(2), then m(3), then the results of m(2) * m(3) are computed, and the result of that is added to the m(1) that was computed previously.

  • VMM (2012 R2) PRO/Operations Manager Integration Requires Named Instance for SSAS -- Which is Great in a NOT Clustered Environment

    This is my third or maybe 4th time posting this question... surely I can't be the only person that has run into this issue...
    Subject more or less captures the essence of my question... I have a clustered SQL 2012 (SP2) environment that runs on 3 nodes (active-passive-passive), one of which runs Analysis Services. As I've come to learn (and likely everyone already knows) SSAS in a
    clustered configuration is _ONLY_ accessible using the hostname, FQDN, or VIP. Addressing the named instance results in a failure (I think this is partially a SQL browser bug as looking closely at the requests to SSAS using a named instance results in the
    browser issuing a bogus TCP port where no service is actually running). Additionally, not providing a named instance in the VMM console UI results in an error message:
    Please enter SSAS instance name
    Would greatly appreciate any guidance on this issue. Thank you.

    Since you're on your 4th time of asking, let me at least say I'll try to make this your last.
    While I haven't got an answer this exact minute, I'll look into it tomorrow as I have access to a clustered SSAS that I can play with.
    Probably the reason no-ones answered so far is that for VMM the SSAS instance must be on the same instance as the SCOM Reporting Services and since that can't be clustered most will install standalone.
    Regards,
    Steve
    <a href="http://systemcenter.ninja/">My System Center Blog</a>

  • Decrement operator precedence confusion

    Here is the snippet from a book:
    int y = 5;
    int result = y-- * 3 / --y;
    System.out.println("y = " + y);
    System.out.println("result = " + result);Assuming increment and decrement have highest precedence, I don't get the explanation:
    Order of operations dictates that the multiplication is evaluated first(WHY???). The valueof y is 5, so 5 * 3 is 15. The multiplication is done, so the post - decrement occurs and y
    becomes 4. Now the division is evaluated and y is pre - decremented to 3 before the division,
    resulting in 15 / 3 , which is 5. The output of this code is:
    y = 3
    result = 5
    Any comments would be appreciated.

    AntShay wrote:
    Oh, no!
    There's something more I don't get :)
    Why is 5 *** 3 takes place instead of 4 *** 3? Pre-decrement has higher precedence, hasn't it?
    So, from my point of view this should work as follow (please correct me where I'm wrong):
    int y = 5;
    int result = y-- *** 3 / --y;
    1) y-- gets evaluated (y=4 now)
    2) --y gets evaluated (y=3)
    3) 3 *** 3 = 9
    4) 9/3 = 3I don't know if pre-dec has higher precedence than mult, but even if it does, that doesn't matter. That's not what precedence means. It doesn't mean you jump around and do those operations first. I just means "This is where the implied parentheses go." The only affect it has on order of evaluation is when you have to evaluate something inside the implied parens first to get an operand for the next operation.
    3 + 4 * 5In the above, mult has higher precedence than add, so it's equivalent to
    3 + (4 * 5)It doesn't mean "first do all multiplications, then all adds." It means the implied parens are as above.
    So:
    1. evaluate 3
    2. evaluate the RH operand of +++
    2.1 evaluate 4
    2.2 valuate 5
    2.3 multiply 4 *** 5 --> 20
    3. evaluate 3 +++ 20
    So we did the mult before the add because we had to in order to get the value of the RHS operand of the plus. Indirectly it's because mult has higher precedence, but that's just a consequence of the implied parens, and we still evaluated the 3 before doing the mult. We did NOT do "all mults first, then all adds."
    Similarly, if it had been
    2 + 3 + 4 * 5we would eval 2, then eval 3, then add, then eval the RHS of the second plus operator, which means we'd have to eval 4 *** 5. Note that we do NOT eval 4 *** 5 as the very first step before all adds.
    Now, say pre-dec has higher precedence than mult. It may, it may not, I don't know and I don't care. It doesn't matter here, but let's say it does.
    y-- * 3 / --yis the same as
    (y--) * 3 / (--y)Operands are still evaluated L to R. We don't just jump around.
    1. Evaluate y--
    1.1 value of expression is 5
    1.2 decrement y to 4
    2. Evaluate 3.
    3. Multiply #1 *** #2 --> 5 *** 3 = 15
    4. Evaluate --y
    4.1 decrement y
    4.2 valueof expression is 3
    5. evaluate #3 / #4 --> 15 / 3 = 5
    Edited by: jverd on Feb 12, 2010 11:54 AM
    Edited by: jverd on Feb 12, 2010 11:56 AM

Maybe you are looking for

  • Issue with XML parsing

    Hey guys, Issue goes like this : I've got an XML which has a name space reference as shown below : <root>      <node1>         <*ns*:node2>test_data</ns:node2>     </node1> </root> -- I'm using the functions in the XSL processor package to access the

  • How to apply basic motion to multiple clips

    Hello! How do I apply basic motion parameters to multiple clips? ie Scale, center and crop? Do I have to set the parameters for each specific clip or can I apply the parameters to multiple clips at once? Thanks

  • Problem with views -- not picking up new records from table?

    Hello, I'm having trouble with some of my views and I can't understand what is wrong. I have a table that contains three months of data. The view references the table, but only picks up the prior two months of data. When I query the table the latest

  • Add file config for hole application?

    Hi everyone, Is there any one worked with build file config for hole fusion adf application? It is similar with web.config in .NET ASP web site. I think in jdeveloper, we can use web.xml for add some parameter but don't know how to read this paramete

  • Existance of decimal point in String using UDF

    hi, How would i know the existance of decimal point in String using UDF in SAP XI message mapping? Regards, Sanghamitra