Exercise - writing a function – IBM SC34-5764-01 User Manual

Page 90

Advertising
background image

Exercise - Writing a Function

Write a function named AVG that receives a list of numbers separated by blanks and computes their
average. The final answer can be a decimal number. To call this function, you would use:

AVG(number1 number2 number3...)

Use the WORDS (see section “WORDS” on page 198) and WORD (see section “WORD” on page 197)
built-in functions.

ANSWER

/*************************** REXX ************************************/
/*

This internal subroutine checks for valid input of "HEADS",

*/

/*

"TAILS", or "" (to quit).

If the input is anything else, the

*/

/*

subroutine says the input is not valid and gets the next input.

*/

/*

The subroutine keeps repeating until the input is valid.

*/

/*

Commonly used variables return information to the main program

*/

/*********************************************************************/
check:

DO UNTIL outcome = 'correct'

SELECT

WHEN flip = 'HEADS' THEN

outcome = 'correct'

WHEN flip = 'TAILS' THEN

outcome = 'correct'

WHEN flip = '' THEN

EXIT

OTHERWISE

outcome = 'incorrect'
PULL flip

END

END
RETURN

Figure 42. Possible Solution (Internal Subroutine Named CHECK)

/******************************* REXX ********************************/
/*

This external subroutine receives the valid input, analyzes it,

*/

/*

gets a random "flip" from the computer, and compares the two.

*/

/*

If they are the same, the user wins.

If they are different,

*/

/*

the computer wins.

The routine returns the outcome to the

*/

/*

calling program.

*/

/*********************************************************************/
throw:

ARG input
IF input = 'HEADS' THEN

userthrow = 0

/* heads = 0

*/

ELSE

userthrow = 1

/* tails = 1

*/

compthrow = RANDOM(0,1)

/* choose a random number

*/

/* between 0 and 1

*/

IF compthrow = userthrow THEN

outcome = 'human'

/* user chose correctly

*/

ELSE

outcome = 'machine'

/* user chose incorrectly

*/

RETURN outcome

Figure 43. Possible Solution (External Subroutine named THROW)

Writing Subroutines and Functions

68

CICS TS for VSE/ESA: REXX Guide

Advertising