Well, do it!
I wrote it: No more "###" and so on. I know this! The problem is, the input decides the output. I do not know the input.
https://www.qb64.org/wiki/Data_typesAs a programmer, you're going to know what the maximum value is that an user can input -- you define it with your variable type.
If you use _BYTE for your variable types, you reserve a maximum of 4 spaces (-128 to 127).
If you use INTEGER for your variable types, you reserve a maximum of 6 spaces (-32768 to 32767).
If you use LONG for your variable types, you reserve a maximum of 11 spaces.
If you use _INTEGER64 for your variable types, you reserve a maximum of 20 spaces.
The point of PRINT USING is to create a form which will line up and keep all your data in a nice neat row. To do that, you have to allocate space for the largest result, and not dynamically adjust your fields on the fly.
If all you want is to do something like bplus has done above, then don't even use PRINT USING at all. Just print the answer as it exists.
INPUT "Integer please ", a&
PRINT "The number input was"; a&
As per your examples above:
DIM a AS INTEGER, b AS INTEGER
a = -5
b = 6
PRINT a ^ 3
PRINT
PRINT "The Number:"; b ^ 3; "is right!"
PRINT
PRINT "The Number:"; b ^ 3; "is right!"
PRINT
INPUT "Enter a number: ", b
PRINT "The Number:"; b ^ 3; "is right!"
PRINT
PRINT "The Number:"; b ^ 3; "is right!"
PRINT
PRINT (a) ^ 2
PRINT
PRINT -3 ^ 2
PRINT
PRINT (-3) ^ 2
PRINT
END
What's the obsession with USING? For what it seems you want to do, it's not needed at all. Just print the dang value to the screen and be done with it.