Variables declared with the STATIC attribute are allocated storage prior to
program execution. They remain allocated until the program terminates.
Noe it down one more thing that,STATIC is the default for external variables.
Where you want variables to retain their value from one invocation of the procedure to another declare them with the static attribute
DCL Var FIXED BIN(15) STATIC INIT(100);
In above staement the value of Var remains the same throughout the program.
*******************************************************
MAIN: PROCEDURE OPTIONS(MAIN);
DCL 1 STRUCTURE,
2 A FIXED DEC (6,2),
2 B CHAR(20);
.
.
P1: PROC;
DCL Name CHAR(10) STATIC init('muralee');
END P1;
P2: PROC;
DCL LIST(500) FIXED STATIC;
.
END P2;
END MAIN;
*********************************************************
Try to print the value of name in P2 and it'll give you the idea about the STATIC.