Preserve

Used with KeyPgRedimReDim to preserve contents will resizing an array

Syntax
	KeyPgRedimReDim Preserve array(...) [KeyPgAsAs DataTypedatatype]

Description
	Used with KeyPgRedimReDim so that when an array is resized, data is not reset but 
	is preserved. This means when the array is enlarged that only new data 
	is reset, while the old data remains the same (but not necessarily at 
	the same absolute addresses in memory).

	NOTE: ReDim KeyPgPreservePreserve may not work as expected in all cases:
		KeyPgPreservePreserve's current behavior is to keep the original data contiguous 
		in memory, and only expand or truncate the size of the memory (if 
		resizing is not possible, the whole original data block is first 
		shifted to another memory location).
		Its behavior (with a single dimension) is well-defined only when the 
		upper bound is changed.  If the lower bound is changed, the current 
		result is that the data is in effect shifted to start at the new 
		lower bound.
		If there are multiple dimensions, only the upper bound of only the 
		first dimension may be changed safely.  If the first dimension is 
		reduced, the existing mappable data may be lost.  If lower-order 
		dimensions are resized at all, the effects can be hard to predict 
		(because multidimensional arrays are stored in row-major order : 
		values differing only in the last index are contiguous).

Example
	ReDim array(1 To 3) As Integer
	Dim i As Integer

	array(1) = 10
	array(2) = 5
	array(3) = 8

	ReDim Preserve array(1 To 10)

	For i = 1 To 10
	   Print "array("; i; ") = "; array(i)
	Next

Differences from QB
	* Preserve wasn't supported until PDS 7.1

See also
	* KeyPgDimDim
	* KeyPgLboundLBound
	* KeyPgRedimReDim
	* KeyPgUboundUBound

