Работа с логическими данными
Логические данные представляют собой двоичное значение — YES (TRUE) или NO (FALSE). Вы используете логические значения и выражения во многих частях вашего приложения. Многие функции, методы и процедуры возвращают значения, сообщающие об успешном или неудачном выполнении. В коде ABL вы обычно проверяете возвращаемое значение, чтобы определить, как продолжить выполнение.
Когда вы определяете логическую переменную, вы можете её инициализировать. Возможные значения: YES, NO, TRUE или FALSE. YES — это то же самое, что TRUE, а NO — это то же самое, что FALSE. Если вы не инициализируете переменную при её определении, начальным значением по умолчанию будет NO.
Логические выражения
Логическое выражение может содержать комбинацию сравнения и логических операторов. Операторы сравнения включают <, >, <=, >= и =. Кроме того, ABL предоставляет логические операторы AND, OR и NOT.
Оператор |
Пример |
Пояснение |
AND | CreditLimit = 1000 AND Country = “USA” | Равно ли значение переменной CreditLimit значению 1000 и равно ли значение переменной Country значению “USA” |
OR | Country = “UK” OR Country = “USA” | Равно ли значение переменной Country значениям “UK” или “USA” |
NOT | (NOT (Balance = 0)) AND Country = “USA” | Не равно ли значение переменной Balance нулю и при этом переменная Country должна иметь значение “USA” |
При использовании комбинации сравнения и логических операторов часто существует множество способов фильтрации данных с использованием различных выражений. Следующие примеры эквивалентны:
(NOT (Balance = 0)) AND Country = "USA" Balance <> 0 and Country = "USA"
Приоритет операторов
Как и в случае с числовыми выражениями, логическое выражение также имеет приоритет над операторами. Лучше всего использовать круглые скобки для явного управления порядком вычисления логического выражения, точно так же, как вы делаете это для числовых выражений.
В следующем примере кода показано логическое выражение, в котором используются круглые скобки. В этом выражении используются операторы сравнения и логические операторы AND и NOT.
FOR EACH Customer WHERE (NOT (Customer.CreditLimit)) > dTotal AND (Customer.Balance = 0): /* do something with the records that match the where clause */ END.