Cannot Pass More Than 21 Dynamic Array Elements to Subprogram (34279)
The information in this article applies to:
- Microsoft QuickBASIC 4.0
- Microsoft QuickBASIC 4.0b
- Microsoft QuickBASIC 4.5
- Microsoft BASIC Compiler for MS-DOS and OS/2 6.0
- Microsoft BASIC Compiler for MS-DOS and OS/2 6.0b
- Microsoft Basic Professional Development System (PDS) for MS-DOS and MS OS/2 7.0
This article was previously published under Q34279 SUMMARY
Passing more than 20 individual elements of a dynamic array to a
subprogram or function procedure will produce the compiler error "Too
many arguments in function call." This limitation occurs for all types
of dynamic arrays. Either the whole array should be passed, or each
item should be copied to a temporary variable and then passed to the
subprogram or function.
MORE INFORMATION
This limitation occurs because of special handling done for dynamic
arrays. When a subprogram is called, there is no way of ensuring that
the dynamic array will not move. Therefore, when individual array
elements are passed by reference, each is copied into a temporary
location. These temporary locations are passed to the routine and then
reassigned to the array when the routine is exited. There is a limit
of 20 temporary locations.
The following is a complete code example:
DECLARE SUB test2 (a1!, a2!, a3!, a4!, a5!, a6!, a7!, a8!, a9!,_
a10!, a11!, a12!, a13!, a14!, a15!, a16!, a17!,_
a18!, a19!, a20!, a21!)
x = 30
DIM a(x)
CALL test2(a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9),_
a(10), a(11), a(12), a(13), a(14), a(15), a(16), a(17),_
a(18), a(19), a(20), a(21))
END
SUB test2 (a1!, a2!, a3!, a4!, a5!, a6!, a7!, a8!, a9!, a10!, a11!,_
a12!, a13!, a14!, a15!, a16!, a17!, a18!, a19!, a20!, a21!)
PRINT "hello"
END SUB
The following is the compiler output:
Microsoft (R) QuickBasic Compiler Version 4.00b
Copyright (C) Microsoft Corp. 1982-1988. All rights reserved.
0053 0006 ...a(18),a(19),a(20),a(21))
^ Too many arguments in function call
43059 Bytes Available
37660 Bytes Free
0 Warning Error(s)
1 Severe Error(s)
Modification Type: | Minor | Last Reviewed: | 1/9/2003 |
---|
Keywords: | KB34279 |
---|
|