Операторы присвоения........................................ 5-1
Простые операторы присвоения........................... 5-1
Операторы присвоения-операции.......................... 5-2
CLEAR (очистить переменную)............................ 5-3
Правила преобразования данных............................... 5-4
ОПЕРАТОРЫ ПРИСВОЕНИЯ
----------------------------------------------------------------
Простые операторы присвоения
================================================================
назначение = источник
----------------------------------------------------------------
назначение Должно быть меткой или переменной
источник Числовая или строковая константа, переменная,
функция или выражение.
Знак = присваивает значение ИСТОЧНИКа НАЗНАЧЕНИЮ; помещает зна-
ченые выражения-ИСТОЧНИКа в переменную-НАЗНАЧЕНИЕ. Если ИСТОЧНИК
и НАЗНАЧЕНИЕ являются разными типами данных, то результат зави-
сит от Правил Преобразования Данных.
Пример:
Name = 'JONES' !Variable = string constant
PI = 3.14159 !Variable = numeric constant
Cosine = SORT(1-Sine*Sine) !Variable = functi on return value
A = B + C + 3 !Variable = numeric expressio
Name = CLIP(FirstName) &' ' Initial &'. '& LastName
!Variable = string expression
См. также: Правила Преобразования Данных
----------------------------------------------------------------
Операторы присвоения-операции
================================================================
назначение += источник
назначение -= источник
назначение *= источник
назначение /= источник
назначение ^= источник
назначение %= источник
----------------------------------------------------------------
назначение Должно быть меткой или переменной
источник Числовая или строковая константа, переменная,
функция или выражение.
Операторы присвоения-операции выполняют арифметические операции
над переменной. Ниже, в примерах, операторы справа и слева функ-
ционально эквивалентны, хотя операторы присвоения-операции дей-
ствуют более эффективно.
Пример:
Оператор присваивания Функциональный эквивалент
--------------------- -------------------------
A += 1 A = A + 1
A -= B A = A - B
A *= -5 A = A * (-5)
A /= 100 A = A / 100
A ^= I+1 A = ^(I + 1)
A %= 7 A = A % 7
----------------------------------------------------------------
CLEAR (очистить переменную)
================================================================
CLEAR(метка[,n])
----------------------------------------------------------------
метка Метка переменной.
n Числовая константа; 1 или -1. Этот параметр задает
значение, которым инициализируется переменная. Если
n=1, то переменная получает максимально возможное
для этого типа данных значение. Для STRING, PSTRING
и CSTRING, это ASCII 255. Если n=-1, то переменная
получает минимально возможное для данного типа дан-
ных значение. Для STRING, PSTRING и CSTRING это
ASCII 0.
Оператор CLEAR очищает переменную, указанную МЕТКой. Если n про-
пущено, то числовые переменные сбрасываются в нуль, а строки за-
полняются пробелами. Если метка принадлежит структуре GROUP,
RECORD или QUEUE, то все переменные в этой структуре очищаются.
Если переменная имеет атрибут DIM, то очищается целиком массив.
Одиночный элемент массива не может быть очищен.
Пример:
CLEAR(Count) !Clear a variable
CLEAR(Cus:Record) !Clear the record structure
CLEAR(Amount,l) !Clear variable to highest possible value
CLEAR(Amount,-I) !Clear variable to lowest possible
ПРАВИЛА ПРЕОБРАЗОВАНИЯ ДАННЫХ
Язык Clarion производит автоматическую конверсию типов данных.
Тем не менее, некоторые вариации могут породить несоответствие
источника и назначения (source & destination). Присвоение "выхо-
дящего-за-рамки" значения приводит к непредсказуемым результатам
Типы данных PSTRING и CSTRING обрабатываются так же, как STRING,
потому что они преобразуются в промежуточные значения типаSTRING
для всех операций. Типы DATE и TIME преобразуются в Кларионовс-
кие Стандартные Дату и Время и обрабатываются как LONG.
Ниже приведены правила преобразования данных из ИСТОЧНИКа в НАЗ-
НАЧЕНИЕ:
BYTE = SHORT
BYTE = USHORT
BYTE = LONG
BYTE = ULONG
Знаковый бит ИСТОЧНИКа игнорируется. НАЗНАЧЕНИЕ полу-
чает младшие 8 бит ИСТОЧНИКа.
BYTE = DECIMAL
BYTE = PDECIMAL
BYTE = REAL
BYTE = SREAL
Знаковый бит ИСТОЧНИКа игнорируется. НАЗНАЧЕНИЕ полу-
чает младшие 8 бит ИСТОЧНИКа. Дробная часть ИСТОЧНИКа
отсекается.
BYTE = STRING
BYTE = CSTRING
BYTE = PSTRING
Если в строке только цифры, то НАЗНАЧЕНИЕ получает их
значение.
SHORT = BYTE
НАЗНАЧЕНИЕ получает значение ИСТОЧНИКа.
SHORT = USHORT
SHORT = LONG
SHORT = ULONG
НАЗНАЧЕНИЕ получает знак и младшие 15 бит ИСТОЧНИКа.
SHORT = DECIMAL
SHORT = PDECIMAL
SHORT = REAL
SHORT = SREAL
НАЗНАЧЕНИЕ получает знак и младшие 15 бит ИСТОЧНИКа.
Дробная часть ИСТОЧНИКа отсекается.
SHORT = STRING
SHORT = CSTRING
SHORT = PSTRING
ИСТОЧНИК должен быть набором цифр БЕЗ знаков формати-
рования. НАЗНАЧЕНИЕ получает знак и целую часть чис-
ла. Дробная часть ИСТОЧНИКа отсекается, хвостовые
пробелы игнорируются.
USHORT = BYTE
НАЗНАЧЕНИЕ получает значение ИСТОЧНИКа.
USHORT = SHORT
USHORT = LONG
USHORT = ULONG
НАЗНАЧЕНИЕ получает младшие 16 бит ИСТОЧНИКа. Знак
ИСТОЧНИКа игнорируется.
USHORT = DECIMAL
USHORT = PDECIMAL
USHORT = REAL
USHORT = SREAL
НАЗНАЧЕНИЕ получает младшие 16 бит из целой части ИС-
ТОЧНИКа. Дробная часть ИСТОЧНИКа отсекается и знак
игнорируется.
USHORT = STRING
USHORT = CSTRING
USHORT = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает целую часть числа.
Дробная часть ИСТОЧНИКа отсекается, а знак и хвосто-
вые пробелы игнорируются.
LONG = BYTE
LONG = SHORT
LONG = USHORT
LONG = ULONG
НАЗНАЧЕНИЕ получает знак и значение ИСТОЧНИКа.
LONG = DECIMAL
LONG = PDECIMAL
LONG = REAL
LONG = SREAL
НАЗНАЧЕНИЕ получает знак и младшие 31 бит ИСТОЧНИКа.
Дробная часть ИСТОЧНИКа отсекается.
LONG = STRING
LONG = CSTRING
LONG = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает знак и целую часть
числа. Десятичная часть ИСТОЧНИКа отсекается, а хвос-
товые пробелы игнорируются.
DATE = BYTE
DATE = SHORT
DATE = USHORT
DATE = ULONG
НАЗНАЧЕНИЕ получает значение ИСТОЧНИКа в виде Кларио-
новской Стандартной Даты.
DATE = DECIMAL
DATE = PDECIMAL
DATE = REAL
DATE = SREAL
НАЗНАЧЕНИЕ получает младшие 31 бит ИСТОЧНИКа в виде
Кларионовской Стандартной Даты. Десятичная часть ИС-
ТОЧНИКа отсекается.
DATE = STRING
DATE = CSTRING
DATE = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает целую часть числа как
Кларионовскую Стандартную Дату. Дробная часть ИСТОЧ-
НИКа отсекается, а хвостовые пробелы игнорируются.
TIME = BYTE
TIME = SHORT
TIME = USHORT
TIME = ULONG
НАЗНАЧЕНИЕ получает значение источника как Клaрионов-
ское Стандартное Время.
TIME = DECIMAL
TIME = PDECIMAL
TIME = REAL
TIME = SREAL
НАЗНАЧЕНИЕ получает младшие 31 бит ИСТОЧНИКа как Кла-
рионовское Стандартное Время. Дробная часть ИСТОЧНИКа
отсекается.
TIME = STRING
TIME = CSTRING
TIME = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает целую часть ИСТОЧНИКа в
виде Кларионовского Стандартного Времени. Дробная
часть отсекается, а хвостовые пробелы игнорируются.
ULONG = BYTE
ULONG = SHORT
ULONG = USHORT
ULONG = LONG
НАЗНАЧЕНИЕ получает младшие 32 бита ИСТОЧНИКа. Знак
ИСТОЧНИКа игнорируется.
ULONG = DECIMAL
ULONG = PDECIMAL
ULONG = REAL
ULONG = SREAL
НАЗНАЧЕНИЕ получает младшие 32 бита от целой части ИС-
ТОЧНИКа. Дробная часть отсекается, а знак игнорирует-
ся.
ULONG = STRING
ULONG = CSTRING
ULONG = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает целую часть числа.
Дробная часть отсекается, а знак и хвостовые пробелы
игнорируются.
REAL = BYTE
REAL = SHORT
REAL = USHORT
REAL = LONG
REAL = ULONG
НАЗНАЧЕНИЕ получает как всю целую часть, так и знак
ИСТОЧНИКа.
REAL = DECIMAL
REAL = PDECIMAL
REAL = SREAL
НАЗНАЧЕНИЕ получает знак, целую и дробные части ИСТОЧ-
ника.
REAL = STRING
REAL = CSTRING
REAL = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает знак, целую и дробную
части числа. Хвостовые пробелы игнорируются.
SREAL = BYTE
SREAL = SHORT
SREAL = USHORT
SREAL = LONG
SREAL = ULONG
НАЗНАЧЕНИЕ получает знак и значение ИСТОЧНИКа.
SREAL = DECIMAL
SREAL = PDECIMAL
SREAL = REAL
НАЗНАЧЕНИЕ получает знак, целую и дробную части ИС-
ТОЧНИКа.
SREAL = STRING
SREAL = CSTRING
SREAL = PSTRING
ИСТОЧНИК должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает знак, целую и дробную
части числа. Хвостовые пробелы игнорируются.
DECIMAL = BYTE
DECIMAL = SHORT
DECIMAL = USHORT
DECIMAL = LONG
DECIMAL = ULONG
DECIMAL = PDECIMAL
НАЗНАЧЕНИЕ получает знак и значение ИСТОЧНИКа.
DECIMAL = REAL
DECIMAL = SREAL
НАЗНАЧЕНИЕ получает знак и целую часть ИСТОЧНИКа, а
так же старшие биты дробной части. Самая старшая часть
дробной части (?) округляется в НАЗНАЧЕНИИ.
DECIMAL = STRING
DECIMAL = CSTRING
DECIMAL = PSTRING
Источник должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает знак, целую и дробную
части числа. Хвостовые пробелы игнорируются.
PDECIMAL = BYTE
PDECIMAL = SHORT
PDECIMAL = USHORT
PDECIMAL = LONG
PDECIMAL = ULONG
PDECIMAL = DECIMAL
НАЗНАЧЕНИЕ получает знак и значение ИСТОЧНИКа.
PDECIMAL = REAL
PDECIMAL = SREAL
НАЗНАЧЕНИЕ получает знак и целую часть ИСТОЧНИКа, а
так же старшие биты дробной части. Самая старшая часть
дробной части (?) округляется в НАЗНАЧЕНИИ.
PDECIMAL = STRING
PDECIMAL = CSTRING
PDECIMAL = PSTRING
Источник должен быть набором цифр без символов форма-
тирования. НАЗНАЧЕНИЕ получает знак, целую и дробную
части числа. Хвостовые пробелы игнорируются.
STRING = BYTE
STRING = SHORT
STRING = USHORT
STRING = LONG
STRING = ULONG
НАЗНАЧЕНИЕ получает знак и неформатированное число. В
НАЗНАЧЕНИИ, число выравнивается влево.
STRING = DECIMAL
STRING = PDECIMAL
STRING = REAL
STRING = SREAL
НАЗНАЧЕНИЕ получает знак, целую и дробную части ИСТОЧ-
НИКа. В НАЗНАЧЕНИИ, число выравнивается влево.
CSTRING = BYTE
CSTRING = SHORT
CSTRING = USHORT
CSTRING = LONG
CSTRING = ULONG
НАЗНАЧЕНИЕ получает знак и неформатированное число. В
НАЗНАЧЕНИИ, число выравнивается влево.
CSTRING = DECIMAL
CSTRING = PDECIMAL
CSTRING = REAL
CSTRING = SREAL
НАЗНАЧЕНИЕ получает знак, целую и дробную части ИСТОЧ-
НИКа. В НАЗНАЧЕНИИ, число выравнивается влево.
PSTRING = BYTE
PSTRING = SHORT
PSTRING = USHORT
PSTRING = LONG
PSTRING = ULONG
НАЗНАЧЕНИЕ получает знак и неформатированное число. В
НАЗНАЧЕНИИ, число выравнивается влево.
PSTRING = DECIMAL
PSTRING = PDECIMAL
PSTRING = REAL
PSTRING = SREAL
НАЗНАЧЕНИЕ получает знак, целую и дробную части ИСТОЧ-
НИКа. В НАЗНАЧЕНИИ, число выравнивается влево.
Знаете ли Вы, что спецификация - это документ, описывающий соглашение между разработчиками и пользователями. Разработчик берется написать модуль, а пользователь соглашается не полагаться на знания о том, как именно этот модуль реализован, т.е. не предполагать ничего такого, что не было бы указано в спецификации. Такое соглашение позволяет разделить анализ реализации от собственно использования программы. Спецификации дают возможность создавать логические основы, позволяющие успешно "разделять и властвовать".