Chapter 6. writing subroutines and functions, What are subroutines and functions, When to write subroutines rather than functions – IBM SC34-5764-01 User Manual

Page 79

Advertising
background image

Chapter 6. Writing Subroutines and Functions

This chapter shows how to write subroutines and functions and discusses their differences and similarities.

What are Subroutines and Functions?

Subroutines and functions are routines made up of a sequence of instructions that can receive data,
process it, and return a value. The routines can be:

Internal

The routine is within the current program, marked by a label, and only that program uses the
routine.

External

A REXX subroutine that exists as a separate file.

In many aspects, subroutines and functions are the same. However, they are different in a few major
aspects, such as how to call them and the way they return values.

v

Calling a subroutine

To call a subroutine, use the CALL instruction followed by the subroutine name (label or program
member name). You can optionally follow this with up to 20 arguments separated by commas. The
subroutine call is an entire instruction.

CALL

subroutine_name

argument1, argument2,...

v

Calling a function

To call a function, use the function name (label or program member name) immediately followed by
parentheses that can contain arguments. There can be no space between the function name and the
left parentheses. The function call is part of an instruction, for example, an assignment instruction.

z = function(argument1, argument2,...)

v

Returning a value from a subroutine

A subroutine does not have to return a value, but when it does, it sends back the value with the
RETURN instruction.

RETURN value

The calling program receives the value in the REXX special variable named RESULT.

SAY 'The answer is' RESULT

v

Returning a value from a function

A function must return a value. When the function is a REXX program, the value is returned with either
the RETURN or EXIT instruction.

RETURN value

The calling program receives the value at the function call. The value replaces the function call, so that
in the following example, z = value.

z = function(argument1, argument2,...)

When to Write Subroutines Rather Than Functions

The actual instructions that make up a subroutine or a function can be identical. It is the way you want to
use them in a program that turns them into either a subroutine or a function. For example, you can call the
built-in function SUBSTR as either a function or a subroutine. This is how to call SUBSTR as a function to
shorten a word to its first eight characters:

a = SUBSTR('verylongword',1,8)

/* a is set to 'verylong' */

You get the same results if you call SUBSTR as a subroutine.

© Copyright IBM Corp. 1992, 2009

57

Advertising