IBM SC34-5764-01 User Manual

Page 121

Advertising
background image

Congratulations! Now you know the best ways to program your REXX execs. Have fun writing programs
that will make your life easier!

/********************************************************/
/* SAMPLE #3:

A portion of CATMOUSE EXEC

*/

/* divided into segments and written with 'more'

*/

/* indentation and 'more' comments.

*/

/* Note commands in uppercase (to highlight logic)

*/

/********************************************************/

/********************************************************/
/* Main program

*/

/********************************************************/
DO FOREVER

CALL display
/**********************************/
/* Mouse's turn

*/

/**********************************/
PULL move
IF datatype(move,whole) & move >= 0 & move <=2

THEN SELECT

WHEN mouse+move > len

/* mouse hits wall */

THEN nop

/* and loses turn

*/

WHEN cat > mouse,

& mouse+move >= cat, /* mouse hits cat

*/

THEN mouse = cat

/* and loses game

*/

OTHERWISE mouse = mouse + move /* mouse ...

*/

END

/* moves to new location */

IF mouse = hole THEN LEAVE

/* mouse is home safely

*/

IF mouse = cat

THEN LEAVE

/* mouse hits cat (ouch) */

/**********************************/
/* Cat's turn

*/

/**********************************/
jump = RANDOM(1,spring)

/* determine cat's move

*/

IF cat > mouse

/* cat must jump left

*/

THEN DO

IF cat-jump < 1

/* cat hits wall

*/

THEN nop

/* misses turn

*/

ELSE cat = cat-jump

/* cat jumps left

*/

END

ELSE DO

/* cat must jump right

*/

IF cat+jump > len

/* cat hits wall

*/

THEN nop

/* misses turn

*/

ELSE cat = cat+jump

/* cat jumps right

*/

END

IF cat = mouse THEN LEAVE

/* cat catches mouse

*/

END
/********************************************************/
/* Conclusion

*/

/********************************************************/
CALL display

/* on final display */

IF cat = mouse

/* who won?

*/

THEN say "Cat wins"

/* ... the cat

*/

ELSE say "Mouse wins"

/* ... the mouse

*/

EXIT

Programming Style and Techniques

Chapter 10. Programming Style and Techniques

99

Advertising