The traditional BASIC language (excluding QuickBASIC and its derivatives) has a flat name space for variables. Size of an array is fixed at the declaration. In contrast, length of a string can vary. No pointer variables are provided except for assembly language interfaces. Allocation of variables in main memory is automatically controlled by the interpreter. For that reason, garbage collections are occasionally required.
A file is either a sequence of lines or an array of fixed-width records. Manipulation of variable-sized objects except strings is almost impossible.