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

Rad*_*tor 0 datetime rpgle datetime-format ibm-midrange

我想将长度为 8 的字符串转换为日期类型以进行比较。该字符串的格式为 DDMMYYYY (*EUR)。

它没有将日期与月份和月份与年份分开的时间段。如果我向 %date BIF 输入一个类似 '01012018' 的值,编译器会告诉我该表达式对于 *EUR 格式来说太短了:

 D dateEUR         s               d   datfmt(*EUR)
 C                   eval      dateEUR = %date('01012018':*EUR)
Run Code Online (Sandbox Code Playgroud)

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

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

Nif*_*riz 5

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

      %date(alpha_date : *eur)
Run Code Online (Sandbox Code Playgroud)

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

      %date(alpha_date : *eur0)
Run Code Online (Sandbox Code Playgroud)