var // ну или const
masMask: array[1..3, 1..3] of string = (
( '11', '12', '13' ), ( '21', '22', '23' ), ( '31', '32', '33' )
);
ВНИМАНИЕ! Я не проверял, как оно работает, когда это локальная переменная (var).
UPD. Проверил, нельзя. Var работает только если массив глобальный. Const, разумеется, работает всегда, ибо создаёт глобальный массив и запрещает туда писать. Если же нужно инициализировать локальный var, надо объявить тип
type TSomeTable = array[1..3, 1..3] of string;
создать какую-то константу
const masStart: TSomeTable = …;
var masMask : TSomeTable;
а затем в начале
masMask := masStart;
UPD2. Для чего объявить тип? Читайте правила эквивалентности типов в Паскале, они жёстче, чем в Си. И тот учебник, по которому я учил Паскаль (Зуев), особо упоминает, что два одинаковых array не эквивалентны.
UPD3.
months = (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec);
— это не массив! Это перечисляемый тип. Кстати, из-за правил пересечения идентификаторов очень не советую писать типы и перечисляемые константы без венгерской записи, к тому же название months сбивает с толку. Лучше будет
TMonth = (monJan, monFeb, …);
.