Речь о том случае, когда для хранения строк используется обычный ARRAY N OF CHAR, но последовательность строковых значений не экономично хранить в ARRAY N OF ARRAY M OF CHAR.

Конкретный пример:
в АСУТП специальная вьюшка-индикатор опрашивает контроллер, отправляя ему GetStatusMsg, а контроллер может вернуть от 0 до N отдельных аббревиатур для индикации.
Разумеется, никаких динамических массивов, вся информация должна передаваться через статические поля.

Итоговый вид:
## Код:
```
Status* = EXTENSIBLE RECORD
         indicate*: ARRAY 64 OF CHAR;
         color*: ARRAY 8 OF INTEGER
      END;
```


В indicate надо помещать НЕСКОЛЬКО отдельных строковых значений.
Альтернатива, естественно, типа: ARRAY 8 OF ARRAY 24 OF CHAR - но мы должны правильно оценить все пределы, и если действительно позволять разброс и по количеству элементов, и по длине не сильно ограничивать - то избыток по памяти. Для встроенки, например, уже ощутимо может быть.

Очевидный другой вариант - просто хранить в одной строке через разделитель.

Выбрали простое соглашение:
{SEP_CHAR {VAL_CHAR}}0X

Например: ":val1:val2:<пустое_знач>:val4"
Во-первых, избранный разделитель сразу указан в позиции 0. Во-вторых, конкатенировать очередное значение можно, не проверяя, пустая строка или не пустая.
Если нужен разделитель, гарантировано не входящий в строки, никто не мешает взять невидимые коды. Например, unit separator из ANSI: 1FX

Собиратель значения, таким образом, просто использует станадартную конкатенацию строк (+).

А получатель либо разворачивает в ARRAY OF ARRAY на стеке, либо проходит итерационно.