FILLARRAY function

Purpose: FILLARRAY will fill an INTEGER, SINGLE or DOUBLE data type array with values from a comma separated string.


 Syntax:

 RetVal% = FILLARRAY(InputStr$, vt_ArrayType%, MaxCnt%, Array)

 Parameters:

  • RetVal% Returns the upper bound used in the array.
  • InputStr$ String holding a comma separated list of numbers.
  • vt_ArrayType% Can be vt_INTEGER or 2, vt_SINGLE or 3, or vt_DOUBLE or 4.
  • MaxCnt% Maximum useable upper bound of array.
  • Array Array to be filled.

Example:

 
 DIM in$, i, j, k, y, f#
 DIM d#[20,20]

 'Create a test file(normally this file would be created by some other program)
 OPEN "test.data" FOR OUTPUT AS FP1
 PRINT #FP1,"1.1,3.3,5.5,7.7,9.9,11.11"
 PRINT #FP1,"1.2,4.3,6.5,8.6,9.9,11.11"
 PRINT #FP1,"5.2,4.4,6.4,3.7,2.9,12.11"
 PRINT #FP1,"3.2,1.4,4.6,3.8,3.9,12.13"
 PRINT #FP1,"4.2,2.4,6.4,3.5,2.9,10.11"
 PRINT #FP1,"2.6,1.2,4.5,9.1,7.9,10.01"
 CLOSE FP1


 OPEN "test.data" FOR INPUT AS FP1
 j = 20
 i = 0
 WHILE NOT EOF(FP1)
    LINE INPUT FP1, in$
    y = FILLARRAY(in$, vt_DOUBLE, j, &(d#[i,0]))
    i++
 WEND
 CLOSE FP1

 PRINT "Input Matrix"
 FOR i = 0 TO 5
    FOR j = 0 TO 5
       PRINT USING$("###.### " ,d#[i,j]);
    NEXT
    PRINT
 NEXT

 FOR i = 0 TO 4
    IF d#[i,i] = 0 THEN
       FOR k = i+1 TO 5
          IF d#[k,i] <> 0. THEN
             EXIT FOR
          END IF
       NEXT
       IF k > 5 THEN
          EXIT FOR
       END IF
       FOR j = 0 TO 5
          SWAP d#[i,j], d#[k,j]
       NEXT
    END IF
    FOR j = i+1 TO 5
       f# = -d#[j,i]/d#[i,i]
       FOR k = i TO 5
          d#[j,k] = d#[j,k] + f# * d#[i,k]
          IF ABS(d#[j,k]) < .00000001 THEN d#[j,k] = 0.
       NEXT
    NEXT
 NEXT

 PRINT
 PRINT "Transformed Matrix"
 FOR k = 0 TO 5
    FOR j = 0 TO 5
       PRINT USING$("####.### ", d#[k, j]);
    NEXT
    PRINT
 NEXT

 f# = 1.
 FOR i = 0 TO 5
    f# = f# * d#[i,i]
 NEXT
 PRINT
 PRINT "Determinate = ";USING$("#####.#####", f#)

BCX Console Sample Programs using FILLARRAY function.

S148.bas