Ibm midrange 如何知道哪些成员嵌入了SQL

Ibm midrange 如何知道哪些成员嵌入了SQL,ibm-midrange,Ibm Midrange,我在IBMi上有一个库,它有许多源文件和成员。我必须对嵌入了SQL的成员执行一些操作。有没有一种简单的方法可以让我只识别那些嵌入了SQL的成员,而不管这个成员是否被编译。您是在谈论带有SQL函数的HLL源代码(即RPG SQL) 如果是这样,您可能可以查看源成员类型 如果您使用的是仅包含SQL指令的非类型化源成员,那么您必须阅读源成员并确定其是否包含您感兴趣的SQL指令。您是在谈论具有SQL函数(即RPG SQL)的HLL源吗 如果是这样,您可能可以查看源成员类型 如果只使用SQL指令获取非类型

我在IBMi上有一个库,它有许多源文件和成员。我必须对嵌入了SQL的成员执行一些操作。有没有一种简单的方法可以让我只识别那些嵌入了SQL的成员,而不管这个成员是否被编译。

您是在谈论带有SQL函数的HLL源代码(即RPG SQL)

如果是这样,您可能可以查看源成员类型


如果您使用的是仅包含SQL指令的非类型化源成员,那么您必须阅读源成员并确定其是否包含您感兴趣的SQL指令。

您是在谈论具有SQL函数(即RPG SQL)的HLL源吗

如果是这样,您可能可以查看源成员类型


如果只使用SQL指令获取非类型化源成员,则必须阅读源成员并确定其是否包含您感兴趣的SQL指令。

因为您注释了它们都包含“EXEC SQL”块,您应该能够发出类似于此的FNDSTRPDM命令来打印匹配源成员的列表

FNDSTRPDM STRING('EXEC SQL') FILE(LIBNAME/QRPGLESRC) MBR(*ALL) OPTION(*NONE) PRTMBRLIST(*YES) 

由于您注释了它们都包含“EXEC SQL”块,所以您应该能够发出类似于此的FNDSTRPDM命令来打印匹配源成员的列表

FNDSTRPDM STRING('EXEC SQL') FILE(LIBNAME/QRPGLESRC) MBR(*ALL) OPTION(*NONE) PRTMBRLIST(*YES) 

我说的是RPG和COBOL成员,其成员类型为SQLRPGLE、SQLRPG、SQLCBL等。这些成员具有带有SQL语句的普通EXEC SQL块。然后我建议使用成员类型。。。这就是PDM&RDi用来确定调用哪个编译器的方法。我也在RPGLE成员类型中看到过execsqls。如果根据成员类型进行筛选,则可能会丢失一些成员。EXEC SQL在RPGLE中有效。如果不使用成员类型,则必须读取源成员并查找未注释的EXEC SQL函数,以确定它是否包含嵌入式SQL。FWIW:成员类型是要使用的最佳数据元素。。。正如我提到的,PDM和RDi使用它来确定调用哪个编译器。如果成员类型错误,源代码可能无法编译。您是否考虑过将包含EXEC SQL的RPGLE成员的成员类型更改为SQLRPGLE?您希望对成员执行什么类型的操作?我指的是成员类型为SQLRPGLE、SQLRPG、SQLCBL等的RPG和COBOL成员。这些成员具有带有SQL语句的普通EXEC SQL块。然后我建议使用成员类型。。。这就是PDM&RDi用来确定调用哪个编译器的方法。我也在RPGLE成员类型中看到过execsqls。如果根据成员类型进行筛选,则可能会丢失一些成员。EXEC SQL在RPGLE中有效。如果不使用成员类型,则必须读取源成员并查找未注释的EXEC SQL函数,以确定它是否包含嵌入式SQL。FWIW:成员类型是要使用的最佳数据元素。。。正如我提到的,PDM和RDi使用它来确定调用哪个编译器。如果成员类型错误,源代码可能无法编译。您是否考虑过将包含EXEC SQL的RPGLE成员的成员类型更改为SQLRPGLE?您希望对成员执行什么类型的操作?通过这种方式,我们将获得字符串中包含“EXEC SQL”的成员。假设某个成员有包含execsql的注释。这还需要对每个源文件运行命令(这可能需要花费时间)。FNDSTRPDM将搜索*所有成员中出现的字符串。如果源的注释中有“EXEC SQL”,而该源不执行SQL,这是一个问题,但运行时间不长(如果有问题,可以提交),这样我们将获得字符串中也包含“EXEC SQL”的成员。假设某个成员有包含execsql的注释。这还需要对每个源文件运行命令(这可能需要花费时间)。FNDSTRPDM将搜索*所有成员中出现的字符串。如果源的注释中有“EXEC SQL”,而该源没有执行SQL,这是一个问题,但运行时间不长(如果有问题,可以提交)