[net.micro.amiga] BASIC help needed: passing arrays to SUBs

cosell@BBN-PROPHET.ARPA (Bernie Cosell) (07/24/86)

Hi-
  Perhaps someone can help me with a simple (I assume) problem I'm
having with AmigaBasic and can't get around no matter what I try.

The problem is simple: I'm trying to given a array argument to a 
SUBprogram.  The manual sure makes it look like it is supposed to work,
but everything I try earns me a "type mismatch" on the CALL statement.

For example:
   SUB pcell (a(1), i) STATIC
     print a(i)
   END SUB

   DIM x(10)
   x(1) = 1.5
   PRINT x(1)
   CALL pcell(x, 1)

The PRINT works find, but I get the aforementioned "type mismatch" error
on the CALL statement.  What am I doing wrong??

Much thanks
  /Bernie

Bernie Cosell                       Internet:  cosell@prophet.bbn.com
Bolt, Beranek & Newman, Inc         USENET:    bbncc5!bpc
Cambridge, MA   02238               Telco:     (617) 497-3503

innes@unccvax.UUCP (Norm Innes) (07/29/86)

> Hi-
>   Perhaps someone can help me with a simple (I assume) problem I'm
> having with AmigaBasic and can't get around no matter what I try.
> 
> The problem is simple: I'm trying to given a array argument to a 
> SUBprogram.  The manual sure makes it look like it is supposed to work,
> but everything I try earns me a "type mismatch" on the CALL statement.
> 
> For example:
>    SUB pcell (a(1), i) STATIC
>      print a(i)
>    END SUB
> 
>    DIM x(10)
>    x(1) = 1.5
>    PRINT x(1)
>    CALL pcell(x, 1)
> 
> The PRINT works find, but I get the aforementioned "type mismatch" error
>on the CALL statement.  What am I doing wrong??

It appears that the array parameter in the call should be followed by (), as
suggested by the example on page 6-3 of the Amiga Basic manual.  On page 6-4
it states that an integer should not be passed to a single presision (in this
case, passing 1 to i).  The call should therefore look like:
 
   n = 1
   CALL pcell(x(),n)
 

mitsu@well.UUCP (Mitsuharu Hadeishi) (07/30/86)

WHOAA()()()()()

     If you want to pass an array to a subprogram in AmigaBasic,
you simply use CALL Subprogram(array(),etc.) . . .
				-Mitsu (mitsu@well.UUCP)