Scope of local variables

A local variable is valid within the statement block in which it is defined and within any nested statement blocks, unless you redefine the variable within the statement block.

In the beginning of the SPL procedure in the following figure, the integer variables x, y, and z are defined and initialized.
Figure 1. Define and initialize variables.
CREATE PROCEDURE scope()
   DEFINE x,y,z INT;
   LET x = 5; 
   LET y = 10;
   LET z = x + y; --z is 15
   BEGIN
      DEFINE x, q INT; 
      DEFINE z CHAR(5);
      LET x = 100;
      LET q = x + y;   -- q = 110
      LET z = 'silly'; -- z receives a character value
   END
   LET y = x; -- y is now 5
   LET x = z; -- z is now 15, not 'silly'
END PROCEDURE;

The BEGIN and END statements mark a nested statement block in which the integer variables x and q are defined as well as the CHAR variable z. Within the nested block, the redefined variable x masks the original variable x. After the END statement, which marks the end of the nested block, the original value of x is accessible again.