On AS400, How to call a COBOL program from SQL User Defined Function with structured parameter?

StackOverflow https://stackoverflow.com/questions/21152527

  •  28-09-2022
  •  | 
  •  

Вопрос

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;
Это было полезно?

Решение

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.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top