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

Kun*_*oy 2 rpgle ibm-midrange

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

nfg*_*fgl 6

你可以像这样使用%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;
Run Code Online (Sandbox Code Playgroud)

或如@jtaylor 所说

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

  • 对于 %CHECK 情况,您可以使用 %SUBST(VALUE:%LEN(VALUE)-2) 从倒数第三个字符开始并转到字符串的末尾(没有“length”参数),而不是对 8 进行硬编码需要)。但是......这也不理想,因为“2”对于“倒数第三个字符”来说并不是很自我记录。 (2认同)