Массивы с переменной длиной элементов
С переменной длиной элементов массива могут быть только строковые и байтовые массивы.
Объявление этих массивов возможно двумя способами: в стиле СУБД ЛИНТЕР или в стиле СУБД 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]
-