ГЛАВА 3 - ОПИСАНИЕ ПЕРЕМЕННЫХ

BYTE (однобайтное целое без знака)


    метка BYTE(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: однобайтная переменная
Биты: 7___________________0
Диапазон: 0..255
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает альтернативное, "внешнее" имя для поля.
EXTERNAL Указывает, что переменная описывается и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

BYTE описывает однобайтное беззнаковое целое. Присвоение значения выходящего за пределы диапазона приводит к непредсказуемым результатам.

Пример:
Countl BYTE !Declare one byte integer
Count2 BYTE,OVER(Countl) !Declare OVER the one byte integer
Count3 BYTE,DIM(4) !Declare it an array of 4 bytes
Count4 BYTE(5) !Declare with initial value
Count5 BYTE,EXTERNAL !Declare as external
Count6 BYTE,NAME('SixCount') !Declare with external name


    ExampleFile FILE,DRIVER('Clarion') !Declare a file

    Record RECORD

    CountS BYTE,NAME('Counter')!Declare with external name

    . .

SHORT (двухбайтное целое со знаком)


    метка SHORT(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: знак значение
Биты: 15_________0
Диапазон: -32,768..32,767
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет место в памяти с другой переменной.
NAME Задает внешнее имя поля.
EXTERNAL Указывает на то, что переменная описана и память под нее выделена во внешней библиотеке. НЕ разрешено с описаниями FILE, QUEUE или GROUP.

SHORT описывает двухбайтное целое со знаком в формате целого слова Intel 8086. Старший бит в этой конфигурации - знаковый бит (0 = плюс, 1 = минус. Отрицательные значения представляются в стандартном дополнении до двух. Присвоение значения, выходящего за пределы диапазона SHORT дает к непредсказуемые результатам.

Пример:

Count2 SHORT,OVER(Countl) 	!Declare OVER the two-byte signed

 				! integer

Count3 SHORT,DIM(4) 		!Declare it an array of 4 shorts

Count4 SHORT(5)  		!Declare with initial value

Count5 SHORT,EXTERNAL  		!Declare as external

Count6 SHORT,NAME('SixCount') 	!Declare with external name



Examp]eFile FILE,DRIVER('Clarion')    !Declare a file

Record        RECORD

Count7 		SHORT,NAME('Counter') !Declare with external

 	    . .  		      ! name

USHORT (two-byte unsigned integer)


   метка USHORT(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: _____значение_______
Биты: 15__________________0
Диапазон: 0..65,535
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

USHORT описывает двухбайтное целое без знака в формате слова Intel 8086. В этой конфигурации НЕТ знакового бита. Присвоение значения, выходящего за пределы диапазона USHORT приводит к не предсказуемым результатам.

Пример:

Countl USHORT 			!Declare two-byte unsigned integer

Count2 USHORT,OVER(Countl) 	!Declare OVER the two-byte unsi gned

				! integer

Counts USHORT.DIM(4) 		!Declare it an array of 4 unsigned

				! shorts

Count4 USHORT(5) 		!Declare with initial value

Count5 USHORT,EXTERNAL 		!Declare as external

Count6 USHORT,NAME('SixCount') 	!Declare with external name



ExampleFile FILE,DRIVER('Btrieve') 	!Declare a file

Record 	      RECORD

Count7 		USHORT,NAME('Counter')  !Declare with external

	    . . 			! name

LONG (четырехбайтное целое со знаком)


    метка LONG(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: знак_____значение_______
Биты: 31_____________________0
Диапазон: -2,147,483,648..2,147,483,647
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

LONG описывает четырехбайтное целое со знаком в формате длинного целого Intel 8086. Старший бит - знаковый, (0 положительное, 1 отрицательное). Отрицательные значения представляются в стандартном дполнении до двух. Присвоение значения, выходящего за пределы диапазона LONG, приводит к непредсказуемым результатам

Пример:

Countl LONG 			!Declare four-byte signed integer

Count2 LONG,OVER(Countl) 	!Declare OVER the four-byte signed

				! integer

Count3 LONG,DIM(4) 		!Declare it an array of 4 longs

Count4 LONG(5) 			!Declare with initial value

Count5 LONG,EXTERNAL 		!Declare as external

Counts LONG,NAME('SixCount') 	!Declare with external name



ExampleFile FILE,DRIVER('Clarion')  !Declare a file

	      Record RECORD

Count7 		LONG,NAME('Counter')!Declare with external name

	    . .

ULONG (четырехбайтное целое без знака)


    метка ULONG(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: _________значение_______
Биты: 31_____________________0
Диапазон: 0..4,294,967,295
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

ULONG описывает четырехбайтное целое без знака в формате длинного целого Intel 8086. В этой конфигурации НЕТ знакового бита. Присвоение значения, выходящего за пределы диапазона ULONG дает непредсказуемые результаты.

Пример:

Countl ULONG 			!Declare four-byte unsigned integer

Count2 ULONG,OVER(Countl) 	!Declare OVER four-byte unsigned integer

Count3 ULONG,DIM(4) 		!Declare it an array of 4 unsigned longs

Count4 ULONG(5) 		!Declare with initial value

Count5 ULONG,EXTERNAL 		!Declare as external

Counts ULONG,NAME('SixCount')	!Declare with external name



Examp]eFile FILE,DRIVER('Btrieve')    !Declare a file

Record 	      RECORD

Count7 		ULONG,NAME('Counter') !Declare with external

	    . . 		      ! name

SREAL (четырехбайтное вещественное со знаком)


    метка SREAL(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: знак____порядок____мантисса
Биты: 31____________23__________0
Диапазон: 0, +/- 1.17549435e-38 .. 3.40282347e+38 (6 значащих цифр)
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

SREAL описывает четырехбайтную числовую переменную со знаком с плавающей запятой в формате короткого целого Intel 8087 (одинарной точности). Присвоение значения, выходящего за пределы диапазона SREAL приводит к непредсказуемым результатам.

Пример:

Countl SREAL 			!Declare four-byte signed floating point

Count2 SREAL,OVER(Countl) 	!Declare OVER the four-byte signed floating point

Count3 SREAL,DIM(4) 		!Declare it an array of 4 floats

Count4 SREAL(5) 		!Declare with initial value

Count5 SREAL,EXTERNAL 		!Declare as external

Count6 SREAL,NAME('SixCount') 	!Declare with external name



ExampleFile FILE,DRIVER('Btrieve') 	!Declare a file

	      Record RECORD

Count7 		SREAL,NAME('Counter')	!Declare with external name

	    . .

REAL (восьмибайтное вещественное со знаком)


    метка REAL(initial value)[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: знак____порядок____мантисса
Биты: 63____________52__________0
Диапазон: 0,+/-2.22507385850720le-308..+/1.79769313496231e+308 (15 значащих цифр)
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

REAL описывает восмибайтное вещественное число со знаком в формате длинного вещественного Intel 8087 (двойной точности. Присвоение числа, выходящего за пределы диапазона REAL приводит к непредсказуемым результатам.

Пример:

Countl REAL 			!Declare eight-byte signed floating point

Count2 REAL,OVER(Countl) 	!Declare OVER the eight-byte signed floating point

Count3 REAL,DIM(4)  		!Declare it an array of 4 rlelals

Count4 REAL(5) 			!Declare with initial value

Count5 REAL,EXTERNAL 		!Declare as external

Count6 REAL,NAME('SixCount') 	!Declare with external name



ExampleFile FILE,DRIVER('Clarion')  !Declare a file

	      Record RECORD

Count5 		REAL,NAME('Counter')!Declare with external name

	    . .

DECIMAL (упакованное десятичное число фиксированной длины со знаком)


    метка DECIMAL(length[,places][,initial value])[,DIM()][,OVER()][,NAME()][,EXTERNAL]
Формат: s d15 d14 d13 d12 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0
Биты: 60____________________________________________0
Диапазон: -999,999,999,999,999..999,999,999,999,999
length ТРЕБУЕМАЯ числовая константа, содержащая общее число десятичных цифр (в целой и дробной частях вместе взятых) в переменной. Максимальная длина 15.
places Числовая константа, уточняющая количество цифр в дробной части (справа от десятичной точки) в переменной. Она должна быть меньше или равна параметру length. Если опущена, то описываема переменная считается целочисленной.
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

DECIMAL описывает переменную переменной длины со знаком, в формате BCD (binary-coded-decimal) Intel 8087. Каждый байт в DECIMAL хранит две десятиные цифры (по 4 бита на цифру). Самый левый байт хранит знак числа в своем старшем ниббле (0 = плюс, что-нибудь другое - минус) и одну десятичную цифру. Таким образом, переменные типа DECIMAL всегда содержат нечетное число цифр (скажем, DECIMAL(10) и DECIMAL(11) оба занимают по 6 байт. Присвоение DECIMAL-переменным значений, выходящих за пределы DECIMAL приводит к непредсказуемым результатам.

Пример:


   Countl DECIMAL(5,O) !Declare three-byte signed packed decimal

   Count2 DECIMAL(5),OVER(Countl) !Declare OVER the three-byte

   signed packed decimal

   Count3 DECIMAL(5.0),DIM(4) !Declare it an array of 4 decimals

   Count4 DECIMAL(5,0,5) !Declare with initial value

   Count5 DECIMAL(5,O),EXTERNAL !Declare as external

   Count6 DECIMAL(5,O),NAME('SixCount') !Declare with external name

   ExampleFile FILE,DRIVER('Clarion') !Declare a file

   Record RECORD

   Count7 DECIMAL(5,O),NAME('Counter 1) !Declare with

   . . !external name

PDECIMAL (то же, что и DECIMAL)


    метка PDECIMAL(length[,places][,iinitial value])[,DIM()][,OVER()][,NAME()][,EXTERNAL]

Формат: dl5 dl4 d13 dl2 d11 d10 d9 d8 d7 d6 d5 d4 d3 d2 d1 d0 s
Биты: 63________________________________________ 5_0
Диапазон: -999,999,999,999,999..999,999,999,999,999
length ТРЕБУЕМАЯ числовая константа, содержащая общее число десятичных цифр (в целой и дробной частях вместе взятых) в переменной. Максимальная длина 15.
places Числовая константа, уточняющая количество цифр в дробной части (справа от десятичной точки) в переменной. Она должна быть меньше или равна параметру length. Если опущена, то описываема переменная считается целочисленной.
initial value Числовая константа. Если опущена, то подразумевается ноль.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

PDECIMAL описывает переменной длины десятичную переменную со знаком в формате Btrieve и IBM/EBCDIC. Каждый байт PDECIMAL содержит две десятичные цифры, по 4 бита на цифру. Самый правый байт содержит знак в своем младшем ниббле (OFh или OCh позитивный, ODh негативный и одну десятичную цифру. Таким образом, PDECIMAL-переменные всегда содержат строго "нечетное" число цифр (скажем, PDECIMAL(10) и PDECIMAL(ll) используют по 6 байт). Присвоение числа, выходящего за диапазон PDECIMAL приводит к непредсказуемым результатам.

Пример:

Countl PDECIMAL(5,O) 			!Declare three-byte signed packed decimal

Count2 PDECIMAL(5),OVER(Countl)		!Declare OVER the three-byte

signed packed decimal

Count3 PDECIMAL(5,O),DIM(4) 		!Declare it an array of 4 decimals

Count4 PDECIMAL(5,0,5) 			!Declare with initial value

Count5 PDECIMAL(5,O),EXTERNAL 		!Declare as external

Count6 PDECIMAL(5,O),NAME('SixCount')	!Declare with external name

ExampleFile FILE,DRIVER('Btrieve') 	!Declare a file

Record 	      RECORD

Count7 		PDECIMAL(5,O),NAME('Counter') 	!Declare with

	    . . 				! external name

STRING (строка фиксированной длины)

метка STRING( length
string constant
picture
)[,DIM()][,OVER()][,NAME()] [,EXTERNAL]
Формат: Фиксированное число байт.
Диапазон: От 1 до 65,535 байт
length Числовая константа, которая задает размер строки в байтах. При использовании этого параметра, строка инициализируется пробелами.
string constant Начальное значение строки. Длина STRING-a устанавливается (в байтах) по длине этой строковой константы.
picture Используется для форматирования значений, присвоенных строке. Длина такой строки, это количество байт, достаточное для хранения форматированной строки. Строка инициализируется пробелами.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

STRING описывает символьную строку фиксированной длины.

Пример:

Name 		STRING(20) 			!Declare 20 byte name field

NameArray 	STRING(l),DIM(20),OVER(Name) 		!Declare array over name

						!field

Company 	STRING('Clarion Software, Inc.,)!The software

						! company - 22 bytes

Phone 		STRING(@P(###)###-####P) 	!Phone number field - 13

						! bytes

ExampleFile 	   FILE,DRIVER('Clarion') 	!Declare a file

		     Record RECORD

NameField 	       STRING(20),NAME('Name') 	!Declare with external

		   . . 				! name

CSTRING (строка фиксированной длины, завершающаяся нулем)

метка СSTRING( length
string constant
picture
)[,DIM()][,OVER()][,NAME()] [,EXTERNAL]
Формат: Фиксированное число байт.
Диапазон: От 1 до 65,535 байт
length Числовая константа, которая задает размер строки в байтах. При использовании этого параметра,строка инициализируется пробелами.
string constant Начальное значение строки. Длина СSTRING-a устанавливается (в байтах) по длине этой строковой константы плюс завершающий нулевой символ.
picture Используется для форматирования значений, присвоенных строке. Длина такой строки, это количество байт, достаточное для хранения форматированной строки и завершающего нулевого символа. Строка инициализируется пробелами.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

CSTRING описывает символьную строку, завершающуюся нулевым символом (ASCII NULL). Она соответствует строкам, используемым в языке C и типу данных "ZSTRING" в Btrieve Record Manager. Под CSTRING в памяти выделяется участок постоянной длины, при этом, завершающий нулевой символ помещается в конец введенных данных. CSTRING во время исполнения преобразовывается в промежуточный тип STRING. Тип CSTRING имеет смысл употреблять для совместимости с внешними файлами и/или процедурами.

Пример:

Name 		CSTRING(21) 		!Declare 21 byte field - 20 bytes data

OtherName 	CSTRING(21),OVER(Name) 	!Declare field over name field

Contact 	CSTRING(21),DIM(4) 	!Array 21 byte fields - 80

					! bytes data Company

Company 	CSTRING('Clarion Software, Inc.') 	!23 byte string 22

							! bytes data

Phone 		CSTRING(@P(###)###-####p) 	!Declare 14 bytes 13 bytes

! data

ExampleFile 	       FILE,DRIVER('Btrieve') 	!Declare a file

Record 			 RECORD

NameField 		   CSTRING(21),NAME('ZstringField')

						!Declare with external name

		       . .

PSTRING (строка со встроенным байтом-счетчиком длины)

метка PSTRING( length
string constant
picture
)[,DIM()][,OVER()][,NAME()] [,EXTERNAL]
Формат: Фиксированное число байт.
Диапазон: От 1 до 255 байт
length Числовая константа, которая задает размер строки в байтах, включая место для первого по порядку байта, в котором хранится длина такой строки.
string constant Начальное значение строки.Длина PSTRING-a устанавливается (в байтах) по длине этой строковой константы плюс начальный байт-счетчик.
picture Используется для форматирования значений, присвоенных строке. Длина такой строки, это количество байт, достаточное для хранения форматированной строки и начального байта длины.
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

PSTRING описывает символьную строку с ведущим байтом длины и длиной, заданной для этой строки.. Она соответствует типу, используемому в Паскале и типу данных "LSTRING" из Btrieve Record Manager. Место в памяти под нее выделяется постоянной длины, но байт длины содержит число символов, реально хранящихся в такой переменной. Во время исполнения, PSTRING преобразуется в STRING. Тип PSTRING имеет смысл употреблять для совместимости с внешними файлами и/или процедурами.

Пример:

Name 		PSTRING(21) 			!Declare 21 byte field - 20 bytes data

OtherName 	PSTRING(21),OVER(Name)		!Declare field over name field

Contact 	PSTRING(21),DIM(4)		!Array 21 byte fields - 80 bytes data

Company 	PSTRING('Clarion Software,Inc.')!23 byte string - 22

						! bytes data

Phone 		PSTRING(@P(###)###-####P)	!Declare 14 bytes - 13 bytes

						! data

ExampleFile 	   FILE,DRIVER('Btrieve') 	!Declare a file

Record 		     RECORD

NameField 	       PSTRING(21),NAME('LstringField')

		   . . 				!Declare with external name

DATE (четырехбайтная дата)


    метка DATE[,DIM()][,OVER()][,NAME()][,EXTERNAL]
Формат: год мм дд
Диапазон: год: 1..9999
месяц: 1..12
день: 1..31
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

DATE описывает четырех байтную переменную типа даты. Этот формат соответствует типу поля "DATE" в Btrieve Record Manager. DATE, используемые в числовых выражениях, преобразовываются в число дней, прошедших с 28 декабря 1800 года (стандартная кларионовская дата, обычно хранится как LONG). Допустимый диапазон стандартной кларионовской даты - от 1 января 1801 года по 31 декабря 2099 года. Использование значений, выходящих за пределы данного диапазона, приводит к непредсказуемым результатам. Тип DATE имеет смысл употреблять для совместимости с внешними файлами и/или процедурами.

Пример:

DueDate 	DATE 			!Declare a date field

OtherDate 	DATE,OVER(DueDate) 	!Declare field over date field

ContactDate 	DATE,DIM(4) 		!Array of 4 date fields



ExampleFile 	 FILE,DRIVER('Btrieve') !Declare a file

Record 		   RECORD

DateRecd 	     DATE,NAME('DateField')

		 . . 			!Declare with external name

См. также: Standard Date

TIME (четырехбайтное время)


    метка TIME[,DIM()][,OVER()][,NAME()][,EXTERNAL]
Формат: чч мм сс ст
Диапазон: часы: 0..23
минуты: 0..59
секунда: 0..59
секунды/100: 0..99
DIM Размерность(и) переменной как массива.
OVER Разделяет один и тот же участок памяти с другой переменной
NAME Задает внешнее имя для переменной.
EXTERNAL Указывает, что переменная описана и память под нее выделяется во внешней библиотеке. НЕ разрешено для описаний FILE, QUEUE и GROUP.

TIME описывает четырехбайтную переменную типа времени. Этот формат соответствует типу поля "TIME" в Btrieve Record Manager. TIME используемые в числовых выражениях, преобразовываются в число сотых долей секунды, прошедших с полуночи (стандартное кларионовское время, обычно хранится как LONG). Тип DATE имеет смысл употреблять для совместимости с внешними файлами и/или процедурами.

Пример:

ChkoutTime 	TIME 			!Declare checkout time field

OtherTime 	TIME,OVER(CheckoutTime)	!Declare field over time field

ContactTime 	TIME,DIM(4) 		!Array of 4 time fields



ExampleFile FILE,DRIVER('Btrieve') 	!Declare a file

Record 	      RECORD

TimeRecd 	TIME,NAME('TimeField')	!Declare with external name

	    . .

См. также: Standard Time

GROUP (составная структура данных)

метка
GROUP[,PRE()][,DIM()][,OVER()][,NAME()][,EXTERNAL]

 declarations

.
declarations Одно или более последовательных описаний переменных.
PRE Метка-префикс для переменных этой структуры.
DIM Размерность переменных как массива.
OVER Разделяет одно и то же место в памяти с другойпеременной или структурой.
NAME Задает "внешнее" имя поля.
EXTERNAL Указывает на то, что переменная описана и память под нее выделена во внешней библиотеке. НЕ разрешено с описаниями FILE, QUEUE или GROUP.

(SPA - Мне кажется, что они противоречат сами себе - пишут, что атрибут external не разрешен для group, а сами указывают его в списке возможных параметров...)

Структура GROUP позволяет обращаться к нескольким переменным по одной метке. Это может использоваться для измерения (?) набора переменных, или для присвоения или сравнения наборов переменных одним оператором. В больших сложных программах, структуры GROUP удобны для подержки наборов связанных разнотипных данных. GROUP должна завершаться точкой или оператором END.

При обращении оператора или выражения к переменной типа GROUP, GROUP рассамтривается как STRING, составленная из всех переменных этой структуры. Структура GROUP может быть вложена в другую структуру данных, как например, RECORD или другая GROUP.

Из-за внутреннего представления, числовые переменные (кроме DECIMAL) описанные в группе не совсем корректно обрабатываются, при использовании их как строк. По этой причине, построение ключа, в котором используются поля типа GROUP, содержащие числовые переменные, может привест к неожиданной последовательности сравнения (collating sequence).

Пример:

NameGroup 	GROUP,PRE(Nme) 	!Name group

First 		 STRING(20) 	! first name

Middle 		 STRING(L) 	! middle initial

Last 		 STRING(20) 	! last name

		.	 	!End group declaration



DateTimeGrp 	GROUP,PRE(Dtg),DIM(10) 	!Date/time array

Date 		 LONG

Time 		 LONG

		. 			!End group declaration

LIKE (определяемые пользователем типы данных)


   новое_описание LIKE(выглядит_как)[,DIM()][,OVER()][,PRE()][,NAME()]

новое_описание - Метка описания нового типа данных.

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

LIKE говорит компилятору определить новое_описание используя то же описание, что и для выглядит_как, включая все атрибуты.

Новое_описание может использовать атрибуты DIM и OVER. Если выглядит_как имело атрибут DIM, то новое_описание сразу будет массивом. Если в будущем атрибут DIM добавится к новому_описанию, то размерности массива определятся в будущем (???).

Атрибуты PRE и NAME могут быть использованы, если надо. Если выглядит_как уже имеет эти атрибуты, новое_описание унаследует их и может привести к ошибке компилятора. Чтобы исправить это положение, задай принудительно PRE или NAME для нового_описания, чтобы перекрыть унаследованный(е) атрибут(ы).

Пример:

Amount 		REAL 			!Описываем поле

QTDAmount 	LIKE(Amount) 		!Используем то же описание

YTDAmount 	LIKE(OTDAmount) 	!И еще раз

MonthlyAmts 	LIKE(Amount),DIM(12)	!То же описание, но для массива

					!из 12 элементов

AmtPrPerson 	LIKE(MonthlyAmts),DIM(10)

					!То же описание, но уже для 120 элементов (12,10)



Construct 	GROUP,PRE(Con) 		!Описываем группу

Fieldl 		 LIKE(Amount) 		! con:field1 - real

Field2 		 STRING(10) 		! con:field2 - string(10)

		.

NewGroup 	LIKE(Construct),PRE(New)!Описываем новую группу с

					! new:field1 - real

					! new:field2 - string(10)

AmountFile 	FILE,DRIVER('Clarion'),PRE(Amt)

Record 		  RECORD

Amount 		    REAL 		!Define a field

OTDAmount 	    LIKE(Amount) 	!Use same definition

		. .

См. также: DIM, OVER, PRE, NAME

НЕЯВНЫЕ ПЕРЕМЕННЫЕ

Неявные переменные НЕ описываются в описаниях данных. Они создаются компилятором, когда он встречает их впервые. Любая неявная переменная, использованная области описания глобальных данных (между ключевыми словами PROGRAM и CODE) это "Глобальные Статические Данные". Любая неявная переменная между ключевыми словами MEMBER и PROCEDURE (или FUNCTION) это "Локальные Статические Данные". Все остальные неявные переменные - это "Локальные Динамические данные".

Неявные переменные обычно используются для: индексов массивов, флагов true/false, промежуточных переменных в сложных вычислениях; как управляющие переменные циклов, итд. Язык Clarion предлагает три типа неявных переменных:
# Неявная LONG-переменная, ее метка (имя) завершается символом # (решетка, номер).
$ Знак доллара указывает на неявную REAL-переменную, метка котороя завершается символом $ (доллар).
" Двойная кавычка (не путать с двумя апострофами!) означает неявную 32хбайтную строку. Имя такой переменной заканчивается символом " (кавычка или двойная кавычка).

Пример:

LOOP 	Counter# - 1 TO 10 		!Implicit LONG

ArrayField[Counter#] = Counter# * 2 	!Initialize an array

.

Address"=CLIP(City) & ','&State &' '&ZIP!Implicit STRING(32)

SHOW(12,16,Address") 			!Used to display a temporary value



Percent$ = ROUND((Quota/Sales),.1) * 100 !Implicit REAL

SHOW(15,22,Percent$,@P%<<<.##P) 

					!Used to display a temporary value 

См. также: Глобальные, Локальные, Статические, и Динамические данные.

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