Refactor array structure location

Pull out a couple of routines to allow datAlter to easily
do the same thing itself when it adds new elements.
datAlter now attempts to resize structure arrays