如果在 RPGLE 中有 yyyy/mm/dd 格式,如何测试(D)日期?

How to TEST(D) DATE if have format yyyy/mm/dd in RPGLE?

如何测试 yyyy/mm/dd 格式的字符日期?

我尝试使用:

*YMD      TEST(D)       DATE            80

我想测试这个 2021/15/30 日期,因为我想确保该日期经过验证,但似乎它不起作用,即使我测试了正确的日期,如 2021/06/01。我该怎么办?

我也试试这个:

          Eval    DT = %CHAR(%DATE(DATE:*YMD/))    
*YMD      TEST(DE)       DT           
          IF NOT %ERROR()

          Move    DT      DATE
          Write   Currec

          Endif

我输入 2021/06/01 作为输入,但出现了这个错误:

我该怎么办?

我避免使用固定格式代码,所以我还没有确认这是否正确,但我相信您应该为此使用 *YYMD*ISO 而不是 *YMD给定您要检查的格式的特定测试。相关链接:

https://www.ibm.com/docs/en/i/7.3?topic=80-datfmt-date-format-keyword-physical-logical-files https://www.ibm.com/docs/en/i/7.1?topic=codes-test-test-datetimetimestamp

RPG 不支持 YYYY/MM/DD 格式。您可以使用 %XLATE 将 / 更改为 - 然后使用 *ISO 格式。

          EVAL    DATE = %XLATE('/' : '-' : DATE)
*ISO      TEST(DE)       DATE