Reputation: 17
I want to call a COBOL program with SQL UDF in a Select statement. Please let me know if you need more information.
COBOL Data Structure:
01 WS-FOO.
03 WS-FOO-ID PIC X(16).
03 WS-FOO-NAME PIC X(16).
COBOL Code:
PROCEDURE DIVISION USING WS-FOO.
SQL Function thats not working:
CREATE FUNCTION ANTHONY.FOO (CHAR(16), CHAR(16))
RETURNS CHAR(16)
EXTERNAL NAME FOO.FOO
LANGUAGE COBOL
NO SQL
PARAMETER STYLE SQL;
Upvotes: 1
Views: 1932
Reputation: 4542
You need to read section about PARAMETER STYLE in the Info Center page on CREATE FUNCTION (external scalar).
If your UDF has two parameters, your COBOL program will need those two parameters plus other parameters as described for PARAMETER STYLE SQL. You may prefer the simpler parameter list for PARAMETER STYLE GENERAL. With GENERAL, you will compile your COBOL code into an ILE service program. I will change the lengths in this example.
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;
In your COBOL Data Division Linkage Section
01 LS-BAR-ID CHAR(6).
01 LS-BAR-NAME CHAR(10).
01 LS-BAR-RESULT CHAR(16).
Followed by
PROCEDURE DIVISION USING LS-BAR-ID, LS-BAR-NAME
RETURNING LS-BAR-RESULT.
Upvotes: 4