Commodore‎ > ‎BASIC‎ > ‎Keywords‎ > ‎


Keyword Abbreviation Token (hex) Version(s) Classification
DIM D{Shift+I} 86 1.0 to 7.0 Command and Statement

DIM variable [ ( dimension1 [ , dimensionN ] ... ) ] [ , variable [ ( dimension1 [ , dimensionN ] ... ) ] ]...
Parameters Type Legal Value(s) Default Value Note(s)
variable Float, Integer, or String any non-reserved name   Required
dimension1 Integer 0~32767 Required if parentheses () are used
dimensionN Integer 0~32767 In theory, up to 255 dimensions

Variable declaration and initialization.

This statement is always optional for scalar (non-array) variables.  However, because variable look-up speed is based on their order of creation, it may be benefitial (sometimes dramatically) to list the most-often used variable(s) near the beginning of the program.  For 1-dimensional arrays, this statement is again optional if the array needs 11 or fewer elements (i.e., an array index from 0 to 10).  If more than 1 dimension is needed, or the single dimension needs more than 11 elements, then DIM is required.
Because arrays begin indexing with zero, DIM always creates one extra element than the numbered specified for each dimension.  For example, DIM A(20) would allocate 21 elements, accessed with A(1) to A(20) and also A(0).
In theory, any (every) dimension of an array could contain up to 32768 elements, but you would get an OUT OF MEMORY error long before that value is reached for a single dimension.  In theory, an array could have 255 dimensions, but the limit of BASIC line lengths, together with the syntax used, means far fewer dimensions are possible (for example, less than 40 dimensions with an 80-character line limit).
Numeric arrays are initialized to zero; string arrays are initialized as an empty string.  The same applies to scalars (non-arrays) if they have not been created already; their value is un-changed if the have been previously created.  If an array already exists, then specifying it in a DIM statement (wheather the dimensions are the same or not), will generate a REDIM'D ARRAY ERROR.
10 DIM I,X,Y  : REM declare often-used scalars first, for speed
20 DIM I%(20) : REM a 1-D integer array
30 DIM I(30)  : REM a 1-D floating-point array
40 DIM I$(4)  : REM a 1-D string array (not really needed)
50 DIM F(4),G(4) : REM two 1-D arrays in a single statement
60 DIM M(2,2) : REM a 2-D array (3x3 elements)
70 DIM I,X,Y  : REM does nothing
80 DIM M(2,2) : REM error! REDIM'D ARRAY
Compare With  
See Also  
FRE, POINTER, Variable Format 
© H2Obsession, 2014