После безсонной ночи проблемку решыл. Может быть ещо комуто пригодится. Извините что rem по украински. Мне так быстрей.
----
BEGIN
KIL_STORINOK:=0; // кількість виведених сторінок на екран
MAX_KIL_POZ:=10; // максимально дозволена кількість позицій в меню
E:=true; // значення кінця даних в сокеті (або інший вид даних - наприклад масив) для зчитування
REPEAT
... ініціалізація командних кнопок
... загрузка загальних даних якщо Е = true (якщо Е = false - означає що є ще попередньозавантажені дані)
REPEAT
REPEAT
if кількість позицій меню <= MAX_KIL_POZ then (ініціалізація меню (поетапно) .. ініціалізовані дані знищуються поетапно з масива/сокета загружених попередньо)
Е = false
UNTIL вивід з циклу MAX_KIL_POZ
if кількість позицій меню = MAX_KIL_POZ then (KIL_STORINOK=KIL_STORINOK + 1 .. вихід з цикла .. Е = false) else
if кінець даних then (KIL_STORINOK=KIL_STORINOK + 1 .. E:=true)
UNTIL цикл перевірки кінця даних
REPEAT
if нажата клавіша <ВИБІР ПОЗИЦІЇ> then ... вираховуємо реальний index для вибраного меню INDEX=MAX_KIL_POZ * (KIL_STORINOK - 1) + (indexВРІЗАНОГО_МЕНЮ_ВИВЕДЕНОГО_НА_ЕКРАН + 1)
if нажата клавіша <ОБНОВИТИ> then (... виходим з циклу команд .. if Е=true then KIL_STORINOK:=0;)
if нажата клавіша <ВИХІД> then ... вихід з циклу команд і меню + підчищення даних які залишилися для зчитування (щоб при наступному вході в меню їх не зчитати а починати з чистого листа)
UNTIL цикл команд
UNTIL цикл ініціалізації меню
END;