Datastage Basic - 如何在转换函数中抑制 "previously undefined" 警告消息

Datastage Basic - How to Supress "previously undefined" Warning Message in Transform Function

我有一个数据阶段例程转换函数,它做的事情比下面的要复杂一些(接受可以为 null 的 Arg1):

Ans = Len(Arg1)

在某些情况下,我在转换阶段调用此转换函数,并且对于某些行,我正在传递可为 null 的时间戳列,并且我相信几个空值正在传递到我的函数,当我运行 我通过 datastage director 的工作,我看到我的转换阶段“完成(查看日志)”并且显示了一些警告消息,他们基本上是这样说的(重复了很多次):

Program "ABC": Line 2, Variable "Arg1" previously undefined. Empty string used.

我试图通过使用“ISNULL”函数来检测这种情况,但不幸的是我的努力没有成功,我尝试了以下方法:

If ISNULL(Arg1) THEN
   Ans = 0
END
ELSE IF Arg1 = $Null THEN
   Ans = 0
END
ELSE
   Ans = Len(Arg1)
END

同样的问题,只是警告消息中的行号不同。

我不明白为什么会这样,“ISNULL”函数似乎很简单,我相信错误消息指的是 Arg1 为空的事实。我找到了一些与此相关的帖子,但我没有直接的 link,是否准确,datastage basic 中的 undefined = null,或者我可以通过其他方式捕获这种情况吗?

我进行了广泛的搜索,most of what is written 关于此应用程序的内容陈旧过时,并没有真正提供有关警告消息本身的任何相关信息。有没有更好的资源可以查询datastage警告信息的相关信息,感觉好像不了解datastage的一个核心租户。我如何在函数内部捕获这种情况并仅使用数据阶段基本代码(不更改我的输入或列类型)来抑制警告消息?

您需要使用 IsAssigned() 函数来捕捉这种情况,而不是 IsNull() 函数。

@RayWurlod 很接近,实际上是“Assigned”函数完成的,所以我的最终解决方案如下:

If NOT(ASSIGNED(Arg1)) THEN
   Ans = 0
END
ELSE
   Ans = Len(Arg1)
END