Как вы делаете LOCATE в Unidata с BASICTYPE 'U' для @ AM? - PullRequest
0 голосов
/ 06 декабря 2010

Я обычно использую BASICTYPE 'P' в нашем магазине, но у меня была возможность использовать 'U' для проекта, и я заметил, что не могу выполнить поиск в динамическом массиве, ограниченном метками атрибутов.* Ссылаясь на документы, прямо говорится, что в типе U не указание выражения атрибута является синтаксической ошибкой.Это кажется мне огромным упущением.

Как бы это сделать, не прибегая к циклу for для поиска этих предметов?

Ответы [ 3 ]

2 голосов
/ 07 августа 2013

Если ваш массив ограничен метками атрибутов, вам просто нужно выполнить поиск в следующем синтаксисе:

LOCATE expression IN array_name SETTING position_var THEN | ELSE ...

Это немного сложнее найти в массиве с разделителями и метками значения, который будет:

LOCATE expression IN array_name<1> SETTING position_var THEN | ELSE ...
0 голосов
/ 29 мая 2013

В случае BASICTYPE 'U' вы можете использовать вместо этого оператор FIND.

Из руководства:

Синтаксис
FIND expr IN dyn.array[,occur] SETTING f [,v[,s]] {THEN statements | ELSE statements}

Описание
Команда UniBasic FIND определяет положение данного выражения в динамический массив. FIND возвращает атрибут, значение и позицию подзначения найденного строка. Выражение должно соответствовать всему элементу массива, чтобы сделать matc

0 голосов
/ 11 февраля 2011

Существует две формы оператора LOCATE

Одна принимает форму Locate xxx в настройках yyy zzz, затем aaa else bbb, а другая Locate (xxx; yyy; zzz), затем aaa else bbb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...