Всякая переменная, объявленная командой NewData или Let, содержит на самом деле не одно значение, а целый столбец данных. Имя переменной означает "взять из столбца текущее значение". Например, в команде
#Series X=xx Y=yyинструкция X=xx говорит, что X-координату каждой i-ой точки серии необходимо взять из i-ой ячейки столбца xx.
Операция прямого доступа к столбцу позволяет обращаться к ячейкам, позиция которых отлична от текущей. Для этого после имени переменной указывается номер ячейки, заключённый в квадратные скобки.
В следующем примере треугольником будут отмечены только точки с положительной Y-координатой, у которых предыдущая точка имела отрицательную Y-координату:
#Let byte ss = if (yy[@-1]<0 and yy>0, 5, 0) #Series X=xx Y=yy S=ssНомер текущей ячейки всегда содержится в переменной @ или RowIndex. Нумерация ячеек начинается с нуля. Записи yy и yy[@] в выражениях эквивалентны.
Ещё одно полезное применение — обращение к данным, хранящимся в другой матрице. Допустим, на графике изображаются точки нескольких классов, причём точек может быть очень много, а число классов невелико. Рядом с каждой точкой должно выводиться имя класса (name), которое может быть довольно длинным. Держать дублирующую информацию об именах классов в основной матрице точек не рационально. Лучшее решение заключается в том, чтобы завести отдельную матрицу для имён классов:
#NewData text class_name #NewData xx, yy, class_id #Let text tr = class_name[class_id] #Series X=xx Y=yy TR=tr С=class_id