如何扫描RPGLE程序的源代码



我想扫描RPGLE程序的源代码,但出现了问题。我在下面解释这个问题。来源:

fTcsprefix if   e             disk    rename(tcsprefix:testpr)  
f                                     prefix (@)    

如果PREFIX关键字存在于源代码中,我想扫描它。但当扫描时,会在记录格式名称中找到它。我该如何避免这种情况?

我正在使用:

**C   'PREFIX'     SCAN    SRCDTA     S1**

尝试扫描'PREFIX',即使用前导空格。除非您能保证PREFIX关键字后面总是有一个空格,否则您也不能依赖于搜索字符串中的尾随空格。(你可以试试。)


用于更广泛的测试:

如果编码标准不能保持清晰的语法,则需要扩展逻辑。此语句查找PREFIX的位置:

 C   'PREFIX'     SCAN    SRCDTA     S1

它将位置存储在S1中。然后,您可以使用S1来测试之前的位置是否包含空白或")"。如果发现任何其他有效字符,则可以扩展逻辑以测试添加的有效字符。此外,您知道PREFIX有六个字符长,所以您可以测试S1+6位置的字符,看看它是空白还是"("或其他有效字符。

当程序找到PREFIX,并且发现前面和后面的字符都可以接受时,它应该知道它找到了一个匹配项。

SCAN找到匹配项时,您可能应该将源行传递给一个子过程,该子过程测试前面和后面的字符并返回一个指示符值。指示器会告诉你的程序是否匹配。

您也可以考虑根本不使用SCAN。请改用%scan() BIF,并使用自由格式的编码样式。

您可以使用ILE RPG中的ILE C运行时正则表达式过程。

http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rtref/regexh.htm%23regexh
请注意,IBMi上的RE库遵循POSIX标准
http://www.regular-expressions.info/posix.html

下面是一篇文章;完整的源代码包含调用函数所需的原型
http://iprodeveloper.com/rpg-programming/validate-e-mail-address-regular-expression

相关内容

  • 没有找到相关文章

最新更新