в oscat_basic есть множество функций работы с массивами.

у большинства из них(может и у всех, не проверял) в начале есть строчка как в заголовке темы
весь текст ниже
Код:
FUNCTION ARRAY_MIN : REAL
VAR_INPUT
	pt : POINTER TO ARRAY[0..32000] OF REAL;
	size : UINT;
END_VAR
VAR
	i: UINT;
	stop: UINT;
END_VAR
-------------------------
stop := (size - SIZEOF(pt)) / SIZEOF(pt);
array_min := pt^[0];
FOR i := 1 TO stop DO
	IF pt^[i] < array_min THEN array_min := pt^[i]; END_IF;
END_FOR;
вызов её выглядет так
X:=oscat_basic.ARRAY_MIN(ADR(some),SIZEOFF(some))

не понимаю как работает первая строчка,
к примеру some массив из 10 значений REAL
тогда на вход фунции попадет указатель на массив и число 40 (размер массива в байтах)
в коде функции получается
stop:=(40-40)/40

иии какой в этом смысл? но это работает же. в переменной stop в итоге размер массива(количество значений real)
что я не так понимаю?