我想在Select语句中使用SQL UDF调用COBOL程序。如果您需要更多信息,请与我们联系。
COBOL数据结构:
01 WS-FOO.
03 WS-FOO-ID PIC X(16).
03 WS-FOO-NAME PIC X(16).
COBOL代码:
PROCEDURE DIVISION USING WS-FOO.
不起作用的SQL函数:
CREATE FUNCTION ANTHONY.FOO (CHAR(16), CHAR(16))
RETURNS CHAR(16)
EXTERNAL NAME FOO.FOO
LANGUAGE COBOL
NO SQL
PARAMETER STYLE SQL;
答案 0 :(得分:4)
您需要在CREATE FUNCTION (external scalar)的信息中心页面上阅读有关PARAMETER STYLE的部分。
如果您的UDF有两个参数,那么您的COBOL程序将需要这两个参数 plus 其他参数,如PARAMETER STYLE SQL所述。您可能更喜欢PARAMETER STYLE GENERAL的更简单的参数列表。使用GENERAL,您可以将COBOL代码编译为ILE服务程序。我将在此示例中更改长度。
CREATE FUNCTION ANTHONY.FOO ( BAR_ID CHAR(6), BAR_NAME CHAR(10))
RETURNS CHAR(16)
EXTERNAL NAME 'MYLIB/MYSVCPGM(MYPROC)'
LANGUAGE COBOLLE PROGRAM TYPE SUB
NO SQL
PARAMETER STYLE GENERAL;
在您的COBOL数据部门链接部分
01 LS-BAR-ID CHAR(6).
01 LS-BAR-NAME CHAR(10).
01 LS-BAR-RESULT CHAR(16).
其次是
PROCEDURE DIVISION USING LS-BAR-ID, LS-BAR-NAME
RETURNING LS-BAR-RESULT.