A key concept with table arrays is that indices are real numbers, but only when retrieving table values, not when setting. You do not use the same index entries when retrieving as when setting. The zero row, column is where the real-number index is stored. Simple example:

*DIM,springvari,TABLE,4,1,1,TIME,

! Time values

springvari(1,0) = 0.0 ! table row (retrieve-row) index set to zero column

springvari(2,0) = 1.0 ! table index

springvari(3,0) = 1.5 ! table index

springvari(4,0) = 2.0 ! table index

! Load values

springvari(1,1) = 50.0

springvari(2,1) = 50.0

springvari(3,1) = 275.0

springvari(4,1) = 500.0

The above is actually a 1-dimensional array, so the second index would normally not be used in regular arrays. Do not use the same index entries when retrieving as when setting:

/com, %springvari(3,1)% ! do not do this. It is past the maximum range and will return the max value 500

! do this:

/com, %springvari(1.5,1)% ! returns 275.0. Note that you set index (3,1) to this value but used (1.5,1) to retrieve

/com, %springvari(1.75,1)% ! returns 387.5 (linear interpolated)

! or just do this since it is really meant to be a 1-dimensional array:

/com, %springvari(1.75)% ! returns 387.5

! you can't return the index numbers set as table entries:

/com, %springvari(3,0)% ! the second index is ignored since it's meant to be a 1D array. So same as %springvari(3)% which returns max value (500) since it is past the max index 2.0