Microsoft KB Archive/27479

= Cannot Directly Pass Array from FORTRAN to Basic =

Article ID: 27479

Article Last Modified on 8/16/2005

-

APPLIES TO


 * Microsoft Visual Basic for MS-DOS
 * Microsoft BASIC Professional Development System 7.0
 * Microsoft BASIC Professional Development System 7.1
 * Microsoft QuickBasic 4.0
 * Microsoft QuickBASIC 4.0b
 * Microsoft QuickBasic 4.5 for MS-DOS

-



This article was previously published under Q27479



SUMMARY
There is no direct way to pass an array from FORTRAN to a Basic routine. One method that can be used is to set up a fixed length string whose length is the number of bytes in the array being passed. The characters of the string can then be converted to numbers using the CVI, CVL, CVS, or CVD functions. Values may be changed in the array using the MKI$, MKL$, MKS$, or MKD$ functions.



MORE INFORMATION
The Basic program is as follows: DECLARE SUB forsub OPTION BASE 1 CONST bytes = 20         ' Total number of bytes in array. ' (number of elements * bytes per element) TYPE arrsize ele AS STRING * bytes  ' Sets up consecutive bytes in memory to store the END TYPE                 ' whole array from FORTRAN.

CALL forsub

SUB subbas (a AS arrsize) size% = 10             ' Number of elements in array. elem% = 2              ' Number of bytes in each element. DIM arr%(size%)

' This loop converts the FORTRAN array into an array that Basic can use. ' The CVI function should be replaced by a CVL, CVS, OR CVD function if ' the array is not an integer array. If the array is a string array, only ' the MID$ function needs to be used.

FOR i = 0 TO size% - 1 arr%(i + 1) = CVI(MID$(a.ele, i * elem% + 1, elem%)) NEXT i

FOR i = 1 TO size% PRINT arr%(i) NEXT i END SUB The FORTRAN subroutine is as follows: INTERFACE TO SUBROUTINE SUBBAS (N1) INTEGER*2 N1 [NEAR] (10) END

SUBROUTINE FORSUB INTEGER*2 A [NEAR] (10) DO 10 I = 1, 10 10 A(I) = I       A(5) = 99 A(10) = 99 CALL SUBBAS(A) END The OUTPUT is as follows:

1

2

3

4

99

6

7

8

9

99

Additional query words: VBmsdos QuickBas BasicCom

Keywords: KB27479

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.