APT_CombinedOperatorController,1: Null string argument.
Moderators: chulett, rschirm, roy
APT_CombinedOperatorController,1: Null string argument.
Hi,
Iam using following exp IsNull(column_name) Then '' Else If Num(column_name)) Then column_name) Else 'aaa'
the source data type is char. The above expression is working fine in server but in parallel Iam getting APT_CombinedOperatorController,1: Null string argument.warning, even I tried Using NVL function in source query.
It would be helpful some one provide resolution.
Thanks In Adavance
Rgr
Iam using following exp IsNull(column_name) Then '' Else If Num(column_name)) Then column_name) Else 'aaa'
the source data type is char. The above expression is working fine in server but in parallel Iam getting APT_CombinedOperatorController,1: Null string argument.warning, even I tried Using NVL function in source query.
It would be helpful some one provide resolution.
Thanks In Adavance
Rgr
Thanks,
RGR
RGR
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
If you replace the derivation with a simple constant value, does the job run without that warning? The expression itself does not look like it would cause that error message (I assume you didn't cut-and-paste as there is a sytactical error with parenthesis in the statement).
<a href=http://www.worldcommunitygrid.org/team/ ... TZ9H4CGVP1 target="WCGWin">
</a>
</a>
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
If you are still getting the warning after having removed the statement then I would suggest you look elsewhere for the cause.
<a href=http://www.worldcommunitygrid.org/team/ ... TZ9H4CGVP1 target="WCGWin">
</a>
</a>
I am having a similar problem.
Stage Variable Defintion populated with :
If IsNull(linkname.VARIABLE_NAME)
Then "000"
Else If Len(Trim(linkname.VARIABLE_NAME)) <> 3
Then "000"
Else If (Num(linkname.VARIABLE_NAME))
Then linkname.VARIABLE_NAME
Else "000"
If the incoming variable string is not a 3-digit number, then the sv should contain string "000" else it should contain the value from the incoming variable.
It appears that the NUM function is evaluating the variable even though the IF/ELse structure should have bypassed this. Perhaps DS parallel evaluates all the nested conditions to T/F and then processes the structure acording to the T/F results, isntead of only processing the variables/functions it needs to.
I forced this by having another sv prior to this which evaluated the null value to a string containing '' (an EMPTY string; I guess this differs from a NULL string). The (now 2nd, but really the original) sv that I was working with origianlly now uses the 1st sv instead of the incoming variable.
This solved the situation for me, but I consider this a workaround. I think the real solution would involve DS parallel evaluating only what it needs to and doing this in a single sv.
Stage Variable Defintion populated with :
If IsNull(linkname.VARIABLE_NAME)
Then "000"
Else If Len(Trim(linkname.VARIABLE_NAME)) <> 3
Then "000"
Else If (Num(linkname.VARIABLE_NAME))
Then linkname.VARIABLE_NAME
Else "000"
If the incoming variable string is not a 3-digit number, then the sv should contain string "000" else it should contain the value from the incoming variable.
It appears that the NUM function is evaluating the variable even though the IF/ELse structure should have bypassed this. Perhaps DS parallel evaluates all the nested conditions to T/F and then processes the structure acording to the T/F results, isntead of only processing the variables/functions it needs to.
I forced this by having another sv prior to this which evaluated the null value to a string containing '' (an EMPTY string; I guess this differs from a NULL string). The (now 2nd, but really the original) sv that I was working with origianlly now uses the 1st sv instead of the incoming variable.
This solved the situation for me, but I consider this a workaround. I think the real solution would involve DS parallel evaluating only what it needs to and doing this in a single sv.
To the best of my knowledge, it basically goes "left to right" and stops evaluating as soon as it can. Your problem may have strictly been a null versus empty string issue but I'm going to have to defer that judgement to those that have a more intimate knowledge of How Things Work, like Ray or Arnd.
-craig
"You can never have too many knives" -- Logan Nine Fingers
"You can never have too many knives" -- Logan Nine Fingers
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
You can inspect the generated C++ code in the RT_SCnnn directory, where nnn is the job number.
In theory it's left to right, as Craig believes, but the optimizer may make "decisions" that change that. Inspecting the generated code is the only way you can be sure.
In theory it's left to right, as Craig believes, but the optimizer may make "decisions" that change that. Inspecting the generated code is the only way you can be sure.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.