Skip to content

Procedures

Daniel Long edited this page Sep 24, 2026 · 2 revisions

Procedures

Defining and Calling Procedures

**FREE

// Forward declaration (prototype)
DCL-PR Add INT(10);
  a INT(10) VALUE;
  b INT(10) VALUE;
END-PR;

// Call it
DCL-S result INT(10);
result = Add(3 : 5);
DSPLY %CHAR(result);  // 8

RETURN;

// Implementation
DCL-PROC Add;
  DCL-PI *N INT(10);
    a INT(10) VALUE;
    b INT(10) VALUE;
  END-PI;

  RETURN a + b;
END-PROC;

The procedure interface (DCL-PI) must be named: *N, or the procedure's own name (DCL-PI Add INT(10);). As on IBM i, DCL-PI INT(10); is an error.

Optional Parameters

DCL-PROC Greet;
  DCL-PI *N VARCHAR(100);
    name VARCHAR(50) VALUE;
    title VARCHAR(20) VALUE OPTIONS(*NOPASS);
  END-PI;

  IF %PARMS >= 2;
    RETURN 'Hello, ' + title + ' ' + name;
  ELSE;
    RETURN 'Hello, ' + name;
  ENDIF;
END-PROC;

Clone this wiki locally