将长度为 8 的字符串转换为 *EUR 日期以进行比较

Convert string of length 8 to *EUR date for comparing

我想把一个长度为8的字符串转换成日期类型来比较。该字符串的格式为 DDMMYYYY (*EUR)。

它没有分隔日期和月份以及月份和年份的句点。如果我向 %date BIF 输入类似“01012018”的值,编译器会告诉我表达式对于格式 *EUR:

来说太短了
 D dateEUR         s               d   datfmt(*EUR)
 C                   eval      dateEUR = %date('01012018':*EUR)

我以前比较两个日期的方法是获取两个日期,将它们存储在数据结构中,用子字段重新排序日期,然后从重叠的子字段中获取重新排序的结果日期。

有人知道如何在 RPGLE 中将 8A 字符串转换为 DATE 类型吗?

您指定的格式将取决于您是否存储日期分隔符。如果您的日期在一个 10 字节的字符字段中,如 DD-MM-YYYY(带破折号),这又是 EUR 格式:

      %date(alpha_date : *eur)

如果您的日期不需要标准分隔符(8 字节字符字段中的 DDMMYYYY),只需将数字零 (0) 附加到格式名称的末尾即可:

      %date(alpha_date : *eur0)