Consultor Eletrônico



Kbase 18301: How to Call an AS/400 CLP from Native 4GL using OS400 EPI
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/16/2008
Status: Verified

GOAL:

How to call an AS/400 CLP from Native 4GL using OS400 EPI

FACT(s) (Environment):

IBM AS/400 (RISC)
Progress/400 DataServer

FIX:

Starting in release 8.0C10, Progress/400 allows the Progress 4GL programs running natively on the AS/400 (using the Progress/400 Native Client) to call OS/400 HLL (High Level Language) programs.

Following there is an example of a CLP program called from a Native 4GL program:

Progress 4GL program:

/* testcall.p */

DEF NEW SHARED VAR param1 AS CHAR FORMAT "X(50)".
DEF NEW SHARED VAR param2 AS DEC FORMAT "999.9999".
DEF NEW SHARED VAR stat AS INT.
DEF NEW SHARED VAR msg AS CHAR EXTENT 50 FORMAT "X(50)".
DEF VAR i AS INT FORMAT ">9".
ASSIGN param1 = "This is a test"
param2 = 3.14156.
OUTPUT TO PRINTER.
DISPLAY param1 param2 WITH FRAME framea.
OS400 EPI STATUS(stat) MESSAGES(msg)
CALL PGM(*LIBL/TESTCLP)
PARM(param1 AS CHARACTER(50) USE INPUT-OUTPUT)
PARM(param2 AS PACKED(15, 5) USE OUTPUT).
DISPLAY param1 param2 WITH FRAME frameb.
DISPLAY "Error: " OS-ERROR " Status " stat WITH FRAME framec.
DO i = 1 TO stat WITH DOWN:
DISPLAY "Msg" i msg[i].
END.
OUTPUT CLOSE.

CLP program:

/* TESTCLP */
PGM PARM(&TEXT &NUMBER)
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50)
DCL VAR(&NUMBER) TYPE(*DEC) LEN(15 5)
CHGVAR VAR(&TEXT) VALUE('TO SHOW THAT IT WORKS')
CHGVAR VAR(&NUMBER) VALUE(123.5623)
RETURN
ENDPGM

To test the example you have to:

1. You need to add PROGRESS and IFSTOOLS library to your library list.
2. Use EDTF to edit the Progress 4GL program.
3. Use STRPDM to edit and compile the CLP program.
4. Run the program: STRPROCLI testcall.p