In BASIC (the real thing, back in the days when programmers were pimply-faced youths with no life, LOWERCASE WAS A LUXURY, and CPUs were 8 bit), the keyword DIM actually made sense.
You used it to DIMension an array.
Saying
1000 DIM A(100)
would declare an array A of 10
1 elements. (Well, SOMEBODY wanted to accommodate both
OPTION BASE 0-ers and
$[=1-ers, so the array's elements were A(0),...,A(100)).
On some BASICs, saying just DIM B would DIMension B with 11 elements. Multiple dimensions were (usually) supported, by saying DIM C(3,4,5). Not that anyone had the memory for large multidimensional arrays, but then, back then they hadn't even invented the third dimension... Types were supported using the same postfixed sigils as for plain variables; an array of 111 (well, 112) strings was DIM S$(111), and (on BBC BASIC) an array of 16 integers was DIM I%(15).
Arrays weren't originally local variables, of course. We kiddies who used BASIC didn't go in for software engineering. "Besides, local variables are meaningless in the presence of GOTOs!" Later BASICs (e.g. BBC BASIC) had locals, but I don't think arrays could be stuffed on the stack.
Special 10000 point bonus to anyone who can predict what
10 FOR I=10 TO 100
20 DIM A(I)
30 NEXT I
does!
How DIM reached its present sorry state I do not know. I assume you can still DIM X(100). I hope MS broke compatibility with MS BASIC, and that DIM Z no longer gives you an array of 11 elements.
DIM indeed. Like the future of software engineering in an industry dominated by the people who brought you BASICA.