在 AS400 上,如何使用结构化参数从 SQL 用户定义函数调用 COBOL 程序



我想在 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;

您需要在信息中心页面的创建函数(外部标量)上阅读有关参数样式的部分。

如果您的 UDF 有两个参数,则 COBOL 程序将需要这两个参数以及其他参数,如参数样式 SQL 中所述。 您可能更喜欢参数样式常规的更简单的参数列表。 使用 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.

最新更新