[comp.sys.apollo] Dynamic Allocation in an Aegis Script ???

kwongj@caldwr.UUCP (11/18/87)

To Aegis Users:

I have here an Aegis script that prompts a user for a number which 
is used in part to create variables "dynamically". These variables are 
created by concatenating a string prefix to the loop counter number.
The problem is that I can't evaluate it in the same  manner. 
It appears to be assigning values into the variables since I am able to
print out the variable if I explicitly type out the name of the
desired variable. 
--------------------------Aegis script------------------------
#!/com/sh
read -prompt "Enter number of elements:" -type integer num
args ((^num))
FOR n := 0 to ((^num))  
  args ((^n))
  "var^n" := ^n
ENDFOR  
#Check that other "var"s contain expected values. Assuming you entered
#a number greater or equal to 3.
args (("This will print out the first element "+ ^var0))
args (("This will print out the third element "+ ^var3))
#args (("This will print out the third element "+ ^var100))
read -prompt "Enter desired element:" -type integer i
#
# How do you print the value of these 'dynamic' variables ??
#These two statement print the string "vari" where i=number you entered.
#
args (("var^i"))
args ((var^i))
---------------------------End of Aegis Script-------------------
BTW Aegis SR9.5, DN3000s, Domain IX 9.5
                          

James Kwong   
Calif. Depart. of Water Resources     
1416 9 th Street Rm. 249
Sacramento, CA 95802
(916) 322-9430
                                        ucdavis.edu!caldwr!kwongj (Internet)
                                     ...!ucbvax!ucdavis!caldwr!kwongj (UUCP)

Disclaimer:
         The opinions expressed above are mine, not those of the State
         of California or the California Department of Water Resources.

fischer-michael@YALE.ARPA (Michael Fischer) (11/18/87)

    I have here an Aegis script that prompts a user for a number which 
    is used in part to create variables "dynamically". These variables are 
    created by concatenating a string prefix to the loop counter number.
    The problem is that I can't evaluate it in the same  manner. 

Here's a way to evaluate the dynamic variable:

    args (('args ^var' + ^i)) | sh -e

It may not be pretty, but it does write the desired value to standard
output.

--Mike Fischer

-------

ram-ashwin@YALE.ARPA.UUCP (11/18/87)

>    I have here an Aegis script that prompts a user for a number which 
>    is used in part to create variables "dynamically". These variables are 
>    created by concatenating a string prefix to the loop counter number.
>    The problem is that I can't evaluate it in the same  manner. 
>    ...
>    # How do you print the value of these 'dynamic' variables ??
>    #These two statement print the string "vari" where i=number you entered.

Try this:

------------------------------------------------------------------------------
#!/com/sh
eon
read -prompt "Enter number of elements:" -type integer num
for n := 0 to ^num
    "var^n" := ^n
endfor
read -prompt "Enter desired element:" -type integer i
/com/sh "args @"The value of var^i is @^var^i@""
------------------------------------------------------------------------------

I set up the command I want executed (the args command) which includes the
name of the variable I want, and then I 'eval' it using /com/sh.

-- Ashwin Ram --

ARPA:    Ram-Ashwin@cs.yale.edu
UUCP:    {decvax,linus,seismo}!yale!Ram-Ashwin
BITNET:  Ram@yalecs