Массивы с переменной длиной элементов
С переменной длиной элементов массива могут быть только строковые и байтовые массивы.
Объявление этих массивов возможно двумя способами: в стиле СУБД ЛИНТЕР или в стиле СУБД Ingres. Смешение стилей в одном исходном тексте модуля основного языка не допускается.
1 способ (в стиле СУБД ЛИНТЕР)
< массив с переменной длиной элементов >::=
{VARCHAR | VARBIT}
< имя > < размер1 > [< размер2 >] < длина элемента >
2 способ (в стиле СУБД Ingres)
{[VARCHAR]|VARBIT} struct
{
short length;
char text< длина элемента >;
} < имя >< размер1 > [< размер2 >];
< имя >::=переменная основного языка
< размер1 >::='['< значение >']'
< размер2 >::='['< значение >']'
< длина элемента >::='['< значение >']'
< значение >::= целое положительное число
Описание
-
< Длина элемента >задает максимальный размер элемента массива. -
VARCHAR, VARBIT – тип данных элемента массива. Объявление этих массивов возможно двумя способами: в стиле СУБД ЛИНТЕР или в стиле СУБД Ingres. Смешение стилей в одном исходном тексте модуля основного языка не допускается.
-
В случае объявления в стиле СУБД ЛИНТЕР массивы транслируются в виде:
-
VARCHAR[n]][m]:
struct { short len; char arr[m]; } < имя >[n]; -
VARBIT [n][m]:
struct { short len; unsigned char arr[m]; } < имя >[n];
-
-
В случае объявления в стиле СУБД Ingres массивы транслируются в виде:
-
VARCHAR[n]][m]:
struct { short length; char text[m]; }< имя >[n] -
VARBIT [n][m]:
struct { short length; unsigned char text[m]; }< имя >[n]
-