在 RPGLE 中,我如何检查 10 大小变量的最后 3 个字符是否为数字

In RPGLE how can i check the last 3 character of a 10 size variable to be a numeric or not

我有一个大小为 10 的变量。它存储一个大小为 10 的值,如 'KUNAL12345'。如何检查值的最后 3 个字符是否为数字。在这种情况下,最后 3 个字符是 345,这是数值。

你可以这样使用%check(我没有测试)

dcl-c digits '0123456789';
dcl-s value char(10) inz('KUNAL12345');
if %check(%subst(value:8:3):digits) = 0;
  // each of the three last characters is a digit character
endif;

或如@jtaylor 所说

if %checkr(value:digits) < 8;
  // each of the three last characters is a digit character
endif;

您可以使用 sql regexp 函数。匹配字符串末尾 3 位数字的正则表达式是 \d\d\d$

here is a nice writeup

d text            s             80a   varying
d match           s             80a   varying
d i5              s              5i 0
d numMatches      s             10i 0
 /free
      text        = 'steve 7335' ;

      exec sql
      set         :numMatches = regexp_count( :text, '\d\d\d$', 1 ) ;
      if          numMatches > 0 ;
      endif ;

      text        = 'steve 733z3' ;
      exec sql
      set         :match :i5 = regexp_substr( :text, '\d\d\d$', 1, 1 ) ;

      if          i5 = -1 ;
      // not a match
      endif ;