IBM SC34-5764-01 User Manual
Page 85

The following examples show how results differ when a subroutine or function uses or does not use
PROCEDURE.
The next two examples are the same, except they use functions rather than subroutines.
/******************************* REXX ********************************/
/* This program uses a PROCEDURE instruction to protect the
*/
/* variables within its subroutine.
*/
/*********************************************************************/
number1 = 10
CALL subroutine
SAY number1 number2
/* Produces
10
NUMBER2 */
EXIT
subroutine: PROCEDURE
number1 = 7
number2 = 5
RETURN
Figure 33. Example of Subroutine Using the PROCEDURE Instruction
/******************************* REXX ********************************/
/* This program does not use a PROCEDURE instruction to protect the
*/
/* variables within its subroutine.
*/
/*********************************************************************/
number1 = 10
CALL subroutine
SAY number1 number2
/* Produces 7
5
*/
EXIT
subroutine:
number1 = 7
number2 = 5
RETURN
Figure 34. Example of Subroutine without the PROCEDURE Instruction
/******************************* REXX ********************************/
/*
This program uses a PROCEDURE instruction to protect the
*/
/*
variables within its function.
*/
/*********************************************************************/
number1 = 10
SAY pass() number2
/* Produces
7
NUMBER2 */
EXIT
pass: PROCEDURE
number1 = 7
number2 = 5
RETURN number1
Figure 35. Example of Function Using the PROCEDURE Instruction
Writing Subroutines and Functions
Chapter 6. Writing Subroutines and Functions
63