I am trying to create a function that uses a variable parameter list.
So i can invoke the function like;
function cat(var1, var2) or function cat(var1, var2, var3) or function cat(var1, var2, var3, var4) etc
Everything I try causes a crash or fails to work.
My latest attempt is trying to implement the "REPEATED" option of the USING clause which doesn't crash but it also doesn't work;
Function;
$set preservecase case repository(update ON) ID DIVISION. FUNCTION-ID. CAT. WORKING-STORAGE SECTION. 01 WS-BUFFER PIC X(1024) VALUE SPACES. 01 WS-FUNC PIC 9(2) COMP VALUE 16. 01 WS-RESULT PIC 9(2) COMP. 01 WS-PARMS PIC 99 COMP. 01 WS-SIZE PIC 9(5). 01 P PIC 9(3). 01 R PIC XXX COMP-X. LINKAGE SECTION. 01 STR PIC X(1024) OCCURS 10. 01 RESULT PIC X(1024). PROCEDURE DIVISION USING STR REPEATED RETURNING RESULT. CALL X"91" USING WS-RESULT WS-FUNC WS-PARMS. display "parameters=" ws-parms SET R TO 1 PERFORM VARYING P FROM 1 BY 1 UNTIL P > WS-PARMS CALL "C$PARAMSIZE" USING P GIVING WS-SIZE display "size=" ws-size MOVE STR(P)(1:WS-SIZE) TO RESULT(R:WS-SIZE) ADD WS-SIZE TO R END-PERFORM GOBACK. END FUNCTION CAT.
Calling program;
identification division. program-id. Program1. environment division. repository. function CAT. data division. working-storage section. 01 parm1 pic x(8) value "tony". 01 parm2 pic x(8) value "blink". procedure division. display function CAT(parm1, parm2) accept parm1. goback. end program Program1.
I am working with Visual COBOL and a INT/GNT output project
Any help at all is very much appreciated