![[Toc]](../../toc.gif)
![[Index]](/idx.gif)
Using "open" compound variables
If you're using compound variables completely defined in your source code,
you may use a technique I call "open compound variables" shown in the
example below.
The advantage of this method: You can add new variables to the end of the
compound variable without maintaining a counter (stem.0 is not used). I
often forget to correct the counter after adding new entries to the
compound variable.
Note that using this method in Classic REXX is only useful if you define
the compound variable completely in the source code (no changes at
runtime)!
In Object-Oriented REXX you can use it anyway because there you can get
all stem entries very simply with the DO ... OVER construct (see the code
at the end of the example).
/* sample for using "open" compound variables */
/* drop the stem (to be sure) */
drop nameStem.
/* define the compound variable */
nameStem.1 = "Albert"
nameStem.2 = "Robert"
nameStem.3 = "William"
/* use the compound variable */
/* use the function symbol to find the last entry */
/* of the compound variable */
do i = 1 while symbol( "nameStem." || i ) = "VAR"
say "Entry no. " || i || " is " nameStem.i
end /* do i = 1 while symbol( "nameStem." || i ) = "VAR" */
/* Note: i-1 is the number of stem entries. You */
/* can save this value in the variable */
/* nameStem.0 and use the normal methods */
/* in the rest of your program. */
say "The compound variable contains " || i-1 || " entries."
/* another useful method for a loop over all entries v2.50 */
/* Note that this method is only possible in Object REXX!!! v2.50 */
parse version thisVersion .
if thisVersion = "OBJREXX" then
do
say "In Object REXX you can use also the DO OVER construct:"
j = 0;
do i over nameStem.
j = j + 1;
say "Entry no. " || i || " is " namestem.i
end /* do i over namestem. */
say "The compound variable contains " || j || " entries."
end /* if thisVersion = "OBJREXX" then */
(see also Defining compound variables)
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs