к оглавлению

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

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

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

 

назначение Метка переменной или динамического свойства.

источник Числовая или строковая константа, переменная, процедура, выражение или свойство структуры данных.

Знак = означает присваивание значения источника переменной; он копирует значение выражения источника в переменную назначения. Если источник и назначение представляют собой различные типы данных, то результат получается на основе правил преобразования данных.

Пример:

StringVar STRING(10)

LongVar LONG

RealVar REAL

CODE

StringVar = 'JONES' ! Переменная = строковая константа

RealVar = 3.14159 ! Переменная = числовая константа

RealVar = SQRT(1 - Sine * Sine) ! Переменная = значение, возвращаемое процедурой

LongVar = B + C + 3 ! Переменная = арифметическое выражение

StringVar = CLIP(FirstName) & ' ' Initial & '. ' & LastName

! Переменная = строковая переменная

StringVar = '10' !Присвоить числовые данные строке затем

Longvar = StringVar !получить результат на основе автоматического преобразования

!переменную типа LONG: 10

Смотри также: Правила преобразования данных, Свойство выражений

 

Вычисляющие операторы присваивания

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

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

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

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

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

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

назначение Это должна быть метка переменной. Не может быть динамическим свойством.

источник Константа, переменная, процедура или выражение.

Вычисляющие операторы присваивания выполняют арифметические действия с назначением и источником, когда результат присваивается назначению. Вычисляющие операторы присваивания выполняются более эффективно, чем их функциональные эквивалентные операторы.

Пример:

Оператор присваивания Функциональный эквивалент

A += 1 A = A + 1

A -= B A = A - B

A *= -5 A = A * -5

A /= 100 A = A / 100

A ^= I + 1 A = A ^ (I + 1)

A %= 7 A = A % 7

Смотри также: Правила преобразования данных, Свойство выражений

 

Операторы множественного присваивания

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

назначение Метка структур данных GROUP, RECORD или QUEUE, или массива.

источник Метка структур данных GROUP, RECORD или QUEUE, числовая или строковая константа, переменная, процедура или выражение.

Оператор :=: выполняет множественное присваивание, которое представляет собой несколько присваиваний значений отдельных компонент из одной структуры данных другой. Эти присваивания выполняются только для переменных, которые имеют в точности совпадающие имена, без учета префиксов. Для того, чтобы выявить совпадающие имена переменных, компилятор просматривает и вложенные структуры GROUP. Значения любых переменных в структуре-назначении, которым не нашлось точно соответствующих по имени переменных в структуре-источнике, не изменяются.

Множественное присваивание выполняется совершенно также, как если бы каждой совпадающей по имени переменной индивидуально присваивалось значение соответствующей переменной. Это значит, что при присвоении значения совпадающей переменной действуют все обычные правила преобразования данных. Например, имя вложенной группы источника может соответствовать простой переменной или вложенной группе в структуре-назначении. В этом случае вложенная группа-источник присваивается назначению как строка, совершенно также как это происходит при обычном присвоении групп.

Могут совпадать и имена переменных, являющихся массивами. В этом случае значение каждого элемента массива-источника присваивается соответствующему элементу массива-назначения. Если число элементов массива-источника больше или меньше числа элементов массива-назначения, значения присваиваются только совпадающим элементам.

Если назначением является массив, который не является частью группы, структуры RECORD или QUEUE, а источник - это константа, переменная или выражение, то каждому элементу массива присваивается значение источника. Это более эффективный способ инициализации массива каким-либо конкретным значением, чем использование структуры LOOP и присвоение в цикле значения каждому элементу.

Назначение или источник могут быть структурой CLASS, которая в этом случае будет трактоваться как GROUP. Если вы поступите так, вы нарушите концепцию инкапсуляции, поскольку множественное присваивание является операцией “проникающей” в структуры. Поэтому, это не рекомендуется делать.

Пример:

Group1 GROUP

S SHORT

L LONG

END

Group2 GROUP

L SHORT

S REAL

T LONG

END

ArrayField SHORT,DIM(1000)

CODE

Group2 :=: Group1 !Эквивалентно:

!Group2.S = Group1.S

!Group2.L = Group1.L

! и выполняются все необходимые преобразования данных

ArrayField :=: 7 !Это эквивалентно:

!LOOP I# = 1 to 1000

! ArrayField[I#] = 7

!END

Смотри также: GROUP, RECORD, QUEUE, DIM

 

Операторы присваивания указателей

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

назначение Метка переменной-указателя.

источник Это может быть:

• Метка переменной или структуры данных того типа, на которые может указывать переменная-назначение.

Метка другой переменной-указателя того типа что и назначение.

Вызов процедуры, которая возвращает тип данных который получит назначение.

Выражение (дающее в результате значение типа LONG, такой как тип возвращаемого значения процедурой ADDRESS) которое определяет адрес памяти переменной того же типа, что и указываемый назначением (который должен быть указателем на любой простой тип данных за исключением STRING, CSTRING, PSTRING или GROUP).

• Встроенной переменной NULL.

Оператор &= выполняет операцию “присваивание указателя”, которая устанавливает значение переменной-указателя, указывающее на переменную-источник. Когда используется в условных выражениях (таких как оператор IF), оператор присвоения указателей определяет равенство указателей (указывают ли два переменных-указателя на одно и то же?).

В зависимости от типа данных переменной-указателю может присваиваться адрес памяти или адрес более сложной внутренней структуры данных (описывающей расположение и тип данных источника).

Когда источник является встроенной переменной NULL, оператор присвоения указателя может либо очистить указатель-переменную назначения, либо определить указатель-переменную ни на что не указывающую (когда оператор присвоения указателя размещен в условном выражении).

Операторы объявления переменной-указателя назначения и источника должны в точности совпадать (если только переменная-назначение не объявлена как переменная типа ANY); присваивание указателя не выполняет автоматического преобразования типов. Например, оператор “присваивание указателя” переменной-назначению, объявленной как &QUEUE должен иметь источником или другую переменную-указатель типа &QUEUE, или метку структуры QUEUE, или процедуру ADRESS(MyQueue). Однако, если назначение это указатель на строку (&STRING), источник может быть также структурой данных, которая обычно трактуется как строковые данные, и адресуется как единая структура (GROUP, RECORD, QUEUE, MEMO).

Преобразование (конвертирование одно типа данных в другой) адреса в переменную-указатель не допустимо, если в качестве цели указана переменная одного из следующих типов: &STRING, &CSTRING, &PSTRING и &GROUP. Указатели этих типов не просто указывают адрес, но и включают в себя дополнительную информацию.

Если указатель-переменная назначения объявлен как переменная типа ANY, источником не может выступать:

- переменные типа &WINDOW, &REPORT, &FILE, &VIEW, &KEY, &BLOB, поименованный CLASS, указатель на поименованный CLASS и указатель на поименованный INTERFACE.

- вызов процедуры, возвращающую значение типа *WINDOW, *REPORT, *FILE, *VIEW, *KEY, поименованный CLASS или поименованный INTERFACE

- вызов процедуры с атрибутом RAW, которая возвращает результат типа ?, *? или *STRING

- выражение возвращающее значение типа LONG.

Пример:

Queue1 QUEUE

ShortVar SHORT

LongVar1 LONG

LongVar2 LONG

END

QueueRef &QUEUE ! Указатель только на QUEUE

Queue1Ref &Queue1 ! Указатель только на QUEUE, определенной точно как Queue1

LongRef &LONG ! Указатель только на LONG

LongRef2 &LONG ! Указатель только на LONG

CODE

QueueRef &= Queue1 ! Присвоить указатель на Queue

Queue1Ref &= Queue1 ! Присвоить указатель на Queue

IF Queue1Ref &= QueueRef !На ту же очередь указывает?

MESSAGE('Both Pointing at same QUEUE')

END

IF SomeCondition ! Проверить некое условие

LongRef &= Queue1.LongVar1 ! и установить указатель на соответствующую переменную

ELSE

LongRef &= Queue1.LongVar2

END

LongRef += 1 ! Увеличить или LongVar1 илиLongVar2

! в зависимости от установленного указателя

IF LongRef2 &= NULL !определить, что переменная-указатель ни на что не ссылается и

LongRef2 &= LongRef ! сделать второй указатель на те же данные

END

LongRef &= ADDRESS(Queue1.LongVar1) !Присвоить указателю адрес

!простого типа данных

Смотри также: Указатели-переменные, ANY, NEW

 

CLEAR (очистить переменную)

CLEAR(метка [,n])

CLEAR Очищает переменную.

метка Метка переменной, ( кроме BLOB), структур GROUP, RECORD, QUEUE, CLASS или FILE. Если переменная имеет атрибут DIM, очищается весь массив.

n Числовая константа (1 или -1). Если опущен, то числовой константе присваивается ноль (0), строковой переменной присваиваются пробелы, переменные типа PSTRING и CSTRING устанавливаются нулевой длине.

Оператор CLEAR очищает переменную, указанную меткой. Присутствие параметра n указывает, что значение, которое заносится в переменную не равно 0 или пробелам. Если n равно 1, то устанавливается наибольшее возможное для данного типа переменной значение. Для строк типа SТRING, PSТRING и CSТRING это значение равно коду ASCII 255. Если n равно -1, то устанавливается наименьшее возможное для данного типа переменной значение; для строк типа SТRING, PSТRING и CSТRING это значение равно коду ASCII 0. Для таких типов данных как PSTRING и CSTRING, устанавливается нулевая длина переменной.

Если метка является именем структуры GRОUР, RЕCORD или QUEUE, то очищаются все переменные этой структуры, а все указатели-переменные устанавливаются в NULL. Если параметр метки - имя структуры FILE, а параметр n опущен, то очищаются все переменные в структуре FILE, включая любые поля MEMO и/или BLOB. Если параметр метка - имя структуры CLASS или объект, порожденный от CLASS, все переменные объекта очищаются, а все указатели-переменные устанавливаются в NULL.

Если переменная имеет атрибут DIM, то может быть очищен отдельный элемент массива (т.е. CLEAR(MyName[n]), или очищен весь массив, если указано имя массива ( т.е. CLEAR(MyName)). Для переменных типа STRING возможно очищение диапазона элементов используя синтаксис частей строк (т.е. CLEAR(MyString[n:m).

Пример:

MyQue QUEUE

F1 LONG

F2 STRING(20)

F3 &CSTRING !Указатель на CSTRING

F4 ANY !ANY может являться указателем на любой простой тип данных

END

CODE

CLEAR(MyQue) !Эквивалентно:

! MyQue.F1 = 0

! MyQue.F2 = ''

! MyQue.F3 &= NULL

! MyQue.F4 &= NULL

CLEAR(Count) ! Очистить переменную

CLEAR(Cus:Record)! Очистить структуру

CLEAR(Customer) ! Очистить структуру и любые поля memo и blob

CLEAR(Amount,1) ! Установить максимально возможное значение

CLEAR(Amount,-1) ! Установить наименьшее возможное значение

Смотри также: Операторы присвоения указателей, GROUP, RECORD, QUEUE, DIM, CLASS, ANY

 

Правила преобразования типов данных

В языке Clarion обеспечивается автоматическое преобразование типов данных. Однако некоторые присваивания могут давать неправильные значения. Непредсказуемый результат дает присваивание значения, выходящего за границы допустимого диапазона.

 

Базовые типы

Для облегчения автоматического преобразования типов данных Clarion использует четыре внутренних базовых типа, к которым автоматически преобразуются все элементы данных при выполнении над ними любых операций. Это типы: STRING, LONG, DECIMAL и REAL. Это стандартные типы данных Clarion.

Базовый тип STRING используется в качестве промежуточного при всех строковых операциях. Во всех арифметических операциях используются базовые типы LONG, DECIMAL и REAL. Когда какой числовой тип используется определяется типом данных исходных операндов и типом выполняемой над ними операции.

“Нормальные” базовые типы для каждого типа данных:

Базовый тип LONG:

BYTE

SHORT

USHORT

LONG

DATE

TIME

Целочисленные константы

Строки с шаблоном @P

Базовый тип DECIMAL:

ULONG

DECIMAL

PDECIMAL

STRING(@Nx.y)

Десятичные константы

Базовый тип REAL:

SREAL

REAL

BFLOAT4

BFLOAT8

STRING(@Ex.y)

Константы в экспоненциальной записи

Нетипизированные (? и *?) параметры

Базовый тип STRING:

STRING

CSTRING

PSTRING

Строковые константы

Типы данных DATE и TIME преобразуются в формат Стандартной даты Clarion и Стандартного времени Clarion имеют во всех операциях базовый тип LОNG.

В большинстве случаев, использование внутренних базовых типов в Clarion прозрачно для программиста и не требует учета каких-либо особенностей при разработке прикладной программы. Однако, для экономических программ, содержащих числовые данные с дробной частью (денежные суммы, например), использование типов данных, для которых базовым является тип DECIMAL, имеет некоторые существенные преимущества перед базовым типом REAL.

· DECIMAL обеспечивает точность до 31 значащих цифр, в то время как REAL только 15.

· DECIMAL автоматически округляется до точности, заданной в объявлении данных, в то время как REAL может давать ошибки округления из-за преобразования десятичных чисел (по основанию 10) в двоичные (по основанию 2) для вычислений в математическом сопроцессоре (или с помощью программ эмуляции вычислений с плавающей точкой).

· При работе на машинах без сопроцессора операции с DECIMAL существенно быстрее чем с REAL.

· Операции с данными типа DECIMAL тесно связаны с обычной (десятичной) арифметикой.

 

Двоично-десятичные операции и процедуры

В Clarion имеется библиотека двоично-десятичных операций и процедур (Binary Coded Decimal (BCD)), которые выполняются таким же образом как операции десятичной арифметики выполняются на бумаге. В этих операция используются промежуточные значения с точностью до 31 значащих цифр с каждой стороны от десятичной точки.

Большим преимуществом двоично-десятичных операций является то, что очень легко “увидеть”, что происходит, потому, что они выполняются точно также как вы делали бы их карадашом на бумаге. Просто представьте, что вы вычисляете вручную на бумаге и отбрасываете числа которые не входят на страницу (округление справа).

Наличие 31 десятичной цифры в целой и дробной частях дает числа (в целой и дробной частях), которые невозможно представить в обычной десятичной системе, и которые можно представить в формате REAL. Поэтому представлять, что происходит при вычислениях, очень полезно.

Обычно единственным случаем, в котором вы можете столкнуться с исчезновением порядка, является операция деления, обычно деление на множество троек. Например:

100000/3 = 33333.3333333333333333333333333333333

(100000/3)-INT(100000/3)*100000 = 33333.3333333333333333333333333300000

Время двоично-десятичных вычислений зависит от данных, над которыми они производятся; затрачиваемое время пропорционально тому как долго такие вычисления производились бы вручную. Поэтому, чем длиннее числа над которыми производится операция, тем больше время выполнения. Однако, используются стандартные приемы ускорения вычислений (как например умножение на степень десяти переносом десятичной точки), делая быстрыми в реальных прикладных программах двоично-десятичные вычисления с помощью библиотечных процедур.

Как двоично-десятичные операции могут выполняться следующие операции:

Сложение (+), Вычитание (-), Умножение (*)

Выполняются как двоично-десятичные операции, когда ни один из операндов не имеет типа REAL (оба типа LONG или DECIMAL) и один имеет базовый тип DECIMAL. Все цифры, возникающие справа от 1^31, исчезают (отбрасываются), и все слева от 1^-30 округляются.

Деление (/)

Выполняется как двоично-десятичные операции, когда ни один из операндов не имеет типа REAL (оба типа LONG или DECIMAL). Все цифры, возникающие справа от 1^31, исчезают (отбрасываются), и все слева от 1^-30 округляются.

Возведение в степень (^)

Выполняется как двоично-десятичные операции, когда первый операнд имеет базовый тип DECIMAL или LONG, а второй операнд имеет базовый тип LONG. Все цифры, возникающие справа от 1^31, исчезают (отбрасываются), и все слева от 1^-30 округляются.

ABS() Отбрасывает знак значения переменной тип DECIMAL или промежуточного значения и возвращает значение типа DECIMAL.

INT() Отбрасывает дробную часть промежуточного значения и возвращает значение типа DECIMAL.

ROUND()

Если базовый тип второго параметра LONG или DECIMAL, то округление выполняется как двоично-десятичная операция, в результате которой возвращается значение типа DECIMAL. Выполнение округления как двоично-десятичной операции очень эффективно и его следует использовать при сравнении переменных типа REAL с переменными типа DECIMAL по разрядности переменной типа DECIMAL.

 

Преобразование типов и промежуточные результаты

Во внутреннем представлении двоично-десятичные промежуточные значения могут иметь точность до 31-й десятичной цифры с каждой стороны от десятичной точки, так что можно сложить два любых числа в формате DECIMAL, не теряя значащих цифр. Поэтому, перенос промежуточного двоично-десятичного значения в переменную какого-либо типа приводит к потере точности. Такое присвоение происходит по следующим правилам:

DECIMAL(x,y) = BCD

Сначала двоично-десятичное значение округляется до y десятичных разрядов. Если результат превосходит x цифр, то старшие цифры отбрасываются (это похоже на “прохождение через 0” разрядов десятичного счетчика).

Целое = BCD

Дробная часть значения отбрасывается. Целая часть преобразуется в двоичное представление без потери точности и может занимать по модулю до 2^32.

String(@Nx.y) = BCD

Двоично-десятичное значение округляется до y десятичных разрядов. Результат заполняет шаблонную строку. При возникновении переполнения результатом является неправильное представление в шаблоне (####).

Real = BCD

Берутся 15 наиболее значащих цифр, а десятичная точка соответствующим образом передвигается.

Для тех операций и процедур, которые не поддерживают тип DECIMAL, значения такого типа сначала преобразуются в REAL. В тех случаях, когда в двоично-десятичном значении было более 15 значащих цифр, происходит потеря точности.

Замечание: Нетипизированные параметры неявно имеют базовый тип REAL, следовательно, при передаче как нетипизированных параметров переменных с базовым типом DECIMAL передаются только 15 значащих цифр. Без потери точности переменные с базовым типом DECIMAL можно передавать как параметры *DECIMAL.

При вычислении динамического выражения (или фильтра в структуре VIEW) используется базовый тип REAL.

 

Преобразования типов данных при простых присваиваниях

Правила преобразования типов данных при простых присваиваниях:

BYTE =

(SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся младшие 8 бит источника.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 8 бит значения LONG.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 8 бит значения LONG.

SHORT =

BYTE Принимающая переменная становится равной источнику.

(USHORT, LONG или ULONG)В принимающую переменную переносятся младшие 16 бит числа источника.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 16 бит промежуточного значения.

(STRING, CSTRING или PSTRING)

Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Исходной переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 16 бит значения LONG.

USHORT =

BYTE В принимающую переменную переносится значение источника.

(SHORT, LONG или ULONG)В принимающую переменную переносятся младшие 16 бит источника.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 16 бит значения LONG.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся младшие 16 бит значения LONG.

LONG =

(BYTE, SHORT, USHORT или ULONG)В принимающую переменную переносятся знак и значение источника.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)В принимающую переменную переносятся знак и значение источника, не превышающее 2³¹. Если значение превышает 2³¹, то переносится часть меньшая 2³¹. Дробная часть отбрасывается.

(STRING, CSTRING или PSTRING)

Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Исходная переменная сначала преобразуется в REAL, а затем в LONG.

DATE =

(BYTE, SHORT, USHORT или ULONG)

Принимающая переменная принимает значение в даты формате Btrieve. Подразумевается, что исходная переменная содержит дату в стандартном для Clarion формате.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)

Исходная переменная сначала преобразуется в формат LONG как стандартная дата Clarion, при этом отбрасывается дробная часть, затем принимающая переменная принимает значение в формате даты Btrieve.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Она сначала преобразуется в формат LONG как стандартная дата Clarion, при этом отбрасывается дробная часть, затем принимающая переменная принимает значение в формате даты Btrieve.

TIME =

(BYTE, SHORT, USHORT или ULONG)Принимающая переменная принимает значение времени в формате Btrieve. Подразумевается, что исходная переменная содержит время в стандартном для Clarion формате.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)Исходная переменная сначала преобразуется в формат LONG как стандартное время Clarion, при этом отбрасывается дробная часть, затем принимающая переменная принимает значение в формате времени в Btrieve.

(STRING, CSTRING, PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Она сначала преобразуется в формат LONG как стандартное время Clarion, при этом отбрасывается дробная часть, затем принимающая переменная принимает значение в формате времени в Btrieve.

ULONG =

(BYTE, SHORT или USHORT)Исходная переменная сначала преобразуется в LONG, а затем все 32 бита переносятся в принимающую переменную.

LONG Все 32 бита исходной переменной переносятся в принимающую переменную.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)Исходная переменная сначала преобразуется в LONG, при этом отбрасывается любая дробная часть. Затем в принимающую переменную переносятся все 32 бит промежуточного значения.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. Она сначала преобразуется в формат LONG, при этом отбрасывается дробная часть, затем в принимающую переменную переносятся все 32 бит промежуточного значения.

REAL =

(BYTE, SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся знак и полное целое значение источника.

(DECIMAL, PDECIMAL, SREAL, BFLOAT8 или BFLOAT4)В принимающую переменную переносятся знак, целая и дробная части значения источника.

(STRING, CSTRING, PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

SREAL =

(BYTE, SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся знак и значение источника.

(DECIMAL, PDECIMAL или REAL)В принимающую переменную переносятся знак, целая и дробная части источника.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

BFLOAT8 =

(BYTE, SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся знак и значение источника.

(DECIMAL, PDECIMAL или REAL)В принимающую переменную переносятся знак, целая и дробная части источника.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

BFLOAT4 =

(BYTE, SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся знак и значение источника.

(DECIMAL, PDECIMAL или REAL)

В принимающую переменную переносятся знак, целая и дробная части источника.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

DECIMAL =

(BYTE, SHORT, USHORT, LONG, ULONG или PDECIMAL)В принимающую переменную переносятся знак и значение источника, соответственно обрезанное и округленное.

(REAL или SREAL)В принимающую переменную переносятся знак, целая и старшие разряды дробной части значения источника. Значение округляется до последнего разряда, помещающегося в принимающей переменной.

(STRING, CSTRING, PSTRING)

Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

PDECIMAL =

(BYTE, SHORT, USHORT, LONG, ULONG или DECIMAL)

В принимающую переменную переносятся знак и значение источника, соответственно обрезанное и округленное.

(REAL, SREAL, BFLOAT8 или BFLOAT4)

В принимающую переменную переносятся знак, целая и старшие разряды дробной части значения источника. Значение округляется до последнего разряда, помещающегося в принимающей переменной.

(STRING, CSTRING или PSTRING)Исходная строка должна содержать числовую величину без каких-либо символов форматирования. В принимающую переменную переносятся знак, целая и дробная части числа. Пробелы в конце строки игнорируются.

STRING =

(BYTE, SHORT, USHORT, LONG или ULONG)

В принимающую переменную переносятся знак и неформатированное число. Значение в строке выравнивается влево.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)В принимающую переменную переносятся знак, целая и дробная части значения источника (округленное в соответствии с шаблоном строки). Значение в строке выравнивается влево.

CSTRING =

(BYTE, SHORT, USHORT, LONG или ULONG)

В принимающую переменную переносятся знак и неформатированное число. Значение в строке выравнивается влево.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)

В принимающую переменную переносятся знак, целая и дробная части значения источника (округленное в соответствии с шаблоном строки). Значение в строке выравнивается влево.

PSTRING =

(BYTE, SHORT, USHORT, LONG или ULONG)В принимающую переменную переносятся знак и неформатированное число. Значение в строке выравнивается влево.

(DECIMAL, PDECIMAL, REAL, SREAL, BFLOAT8 или BFLOAT4)

В принимающую переменную переносятся знак, целая и дробная части значения источника (округленное в соответствии с шаблоном строки). Значение в строке выравнивается влево.

к оглавлению

Знаете ли Вы, что абстракция через параметризацию - это прием программирования, позволяющий, используя параметры, представить фактически неограниченный набор различных вычислений одной программой, которая есть абстракция этих наборов.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution