确认 %NULLIND 的行为

问题描述 投票:0回答:2

我有这个 RPG 代码,我一直在尝试将其转换为 Java,但我仍然不明白它在 Java 中会是什么样子。

RPG代码:

 C                   EVAL      %NULLIND(XXXXXXXX) = *OFF                     Birthday    
 C                   MOVEL     *BLANK        XXXXXXXX                        Birthday    
 C                   EVAL      %NULLIND(XXXXXXXX) = *ON                      Birthday    

理解:

  1. XXXXXXXX
    的 NULL 指示符设置为
    *OFF
    ,以便我们可以更改
    XXXXXXXX
  2. 的值
  3. XXXXXXXX
    的值设置为空白
  4. XXXXXXXX
    的值设置为空

我的理解正确吗?

ibm-midrange rpgle
2个回答
0
投票

您的理解是正确的。

但是请注意,我将其称为针对下游流程的黑客工作,该流程无法正确处理空值。

除了在字符字段中存储数值之外。

基本上,某个地方没有检查 NULL,而是开发人员决定确保该字段除了打开 NULL 指示器之外还包含空白。


0
投票

我认为 RPG 的 %NULLIND 与 SQL 的“可空”概念比与 Java 的空对象概念更相关。

我对使用Java访问数据库不是很熟悉,但我认为如果Java代码使用ResultSet,那么它会使用updateNull()将列设置为null,并使用wasNull()检查列是否为null。

ResultSet 文档位于:https://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html

我通过此 IBM 文档页面中的 java.sql.package 链接找到了该文档:: https://www.ibm.com/docs/en/i/7.5?topic=preparedstatements-creating-using

© www.soinside.com 2019 - 2024. All rights reserved.