ГЛАВА 5 - ОПЕРАТОРЫ ПРИСВОЕНИЯ

Операторы присвоения.

Простые операторы присвоения


       назначение = источник

назначение Должно быть меткой или переменной
источникЧисловая или строковая константа, переменная, функция или выражение.

Знак = присваивает значение ИСТОЧНИКа НАЗНАЧЕНИЮ; помещает значение выражения - ИСТОЧНИКа в переменную - НАЗНАЧЕНИЕ. Если ИСТОЧНИК и НАЗНАЧЕНИЕ являются разными типами данных, то результат зависит от Правил Преобразования Данных.

Пример:


   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

НАЗНАЧЕНИЕ получает знак, целую и дробную части ИСТОЧНИКа. В НАЗНАЧЕНИИ, число выравнивается влево.

Назад | Содержание | Вперед