For the storing code to work better, you should change the line that stores the length to:
length(Str9Z)+1->V
The length() command returns the number of characters in the string, not including the null byte that actually terminates the string. Without that last byte, it doesn't actually store the end of the string signifier to the appvar, so calling length() or trying to display the string would result in garbage being added to the end until a zero byte is reached in RAM.
For the reading code, the easiest thing to do would be to simply display the string from the appvar, without copying it out, like this:
Disp D