Элементы шаблонов предлагают формат масок для просмотра и/или редактирования переменных. Элементы шаблонов можно использовать как параметры для описания переменных типа STRING, ENTRY, или STRING OPTION в SCREEN-структурах; как параметры операторов STRING в REPORT-структурах; как параметры некоторых процедур и функций Клариона; или, как параметры описаний STRING, CSTRING и PSTRING. Есть семь типов элементов шаблонов: числовые и валюта, научная нотация, дата, время, образец, key-in template и строки. Шаблоны чисел и валюты
@N[валюта][знак][заполнение]размер[группирование][места][валюта][знак][B]
@N | Все шаблоны чисел и валюты начинаются с @N. |
валюта | Либо знак доллара ($) либо строковая константа, заключенная в тильды (~). Если есть признак знака и нет признака заполнения, то символ валюты будет "плавать" возле старшей левой цифры. Если же есть признак заполнения, то символ валюты остается в крайней левой позиции. Если символ валюты стоит после размера и группирования, то он будет располагаться в конце показываемого числа. |
знак | Задает формат вывода отрицательных чисел. Если тире стоит перед ЗАПОЛНЕНИЕМ и РАЗМЕРом, то отрицательные числа будут выводиться с ведущим знаком "минус". Если же тире идет после РАЗМЕРа, ГРУППИРОВАНИя, places, и ВАЛЮТы, то числа будут выводиться с хвостовым минусом. Если в обоих позициях, предназначенных для ЗНАКа стоят скобки, то отрицательные числа будут выводиться без минуса, но заключенными в скобки. |
заполнение | Указывает вид ведущих нулей нули, пробелы или звездочки (*). Если ЗАПОЛНЕНИЕ опущено, то ведущие пробелы подавляются. 0 Ведущие нули выводятся, ГРУППИРОВАНИЕ подавлено Вместо нулей пробелы, ГРУППИРОВАНИЕ подавлено * Вместо ведущих нулей выводятся звездочки |
размер | РАЗМЕР требуется, чтобы указать общее число значащих цифр для вывода, включая количество цифр в признаке МЕСТА и всех символов форматирования. |
группирование | Признак ГРУППИРОВАНИЯ (кроме запятой, которая принимается по умолчанию) может быть помещен справа от РАЗМЕРА, для указания разделитель групп из трех цифр. |
. | Порождает точки |
- | Порождает тире |
_ | Порождает пробелы (НЕ подчеркивания!) |
места | Задает символ десятичного разделителя и число цифр в дробной части. Число цифр в дробной части должно быть меньше, чем РАЗМЕР. Десятичным разделителем может быть точка (.), слабое ударение ('), или буква "v" (только для описания формата хранения STRING-полей, а не для вывода). . Точка порождает точку как десятичный разделитель ` Слабое ударение порождает запятую как десятичный разделитель. v НЕ порождает десятичный разделитель (только для хранения STRING-полей) |
B | Если значение нулевое, то число выводится в виде пробелов. |
Элементы шаблонов чисел и валюты форматируют числа для вывода на экран или в отчет. Если значение больше, чем можно вывести в текущем шаблоне, такое значение выводится в виде строки из звездочек.
Пример:
Число | Результат | Формат |
@N9 | 4,550,000 | Девять цифр, группирование запятыми (по умолчанию) |
@N_9B | 4550000 | Девять цифр, без группирования, ведущие нули выводятся как пробелы |
@N09 | 004550000 | Девять цифр, ведущие нули выводятся |
@N*9 | ***45,000 | Девять цифр, заполнение звездочками, группирование запятыми |
@N9_ | 4 550 000 | Девять цифр, группирование пробелами |
@N9. | 4.550.000 | Девять цифр, группирование точками |
Десятич. дробь |
Результат | Формат |
@N9.2 | 4,550.75 | Две цифры в дробной части, десятичный разделитель - точка |
@N_9.2B | 4550.75 | То же, без группирования, если ноль, то выводится строка пробелов. |
@N_9'2 | 4550,75 | Две цифры в дробной части, десятичный разделитель запятая |
@N9.'2 | 4.550,75 | Десятичный разделитель запятая, группирование точками |
@N9_'2 | 4 550,75 | Десятичный разделитель запятая, группирование пробелами |
Со знаком | Результат | Формат |
@N-9.2B | 2,347.25 | Ведущий минус, если ноль, то вывести пустую строку |
@N9.2- | 2,347.25- | Хвостовой минус |
@N(10.2) | (2,347.25) | Вывести в скобках, если отрицательное |
Знак доллара | Результат | Формат |
@N$9.2B | $2,347.25 | Ведущий знак доллара, вывести пустую строку, если ноль |
@N$10.2- | $2,347.25- | Ведущий знак доллара, хвостовой минус, если отрицательное |
@N$(11.2) | $(2,347.25) | Ведущий знак доллара, вывести в скобках, если отрицательное |
Национальные валюты | Результат | Формат |
@N12_'2~ F~ | 1 5430,50 F | Франция |
@N~L. ~12' | L.1.430.050 | Италия |
@N~L~12.2 | L1,240.50 | Великобритания |
@N~kr~12'2 | kr1.430,50 | Норвегия |
@N~DM~12'2 | DM1.430,50 | Германия |
@N12_'2~ mk~ | 1 430,50 mk | Финляндия |
@N12'2~ kr~ | 1,430.50 kr | Швеция |
Только хранение Шаблоны:
Variablel STRING(@N_6v2) !Шесть байт хранятся БЕЗ десятич- !ного разделителя CODE Variablel="1234.56" !Храним в виде '123456' SHOW(1,1,Variablel,@N_7.2) !Выводим с десятичн. точкой: '1234.56'
@Em.n[B]
@E | Все шаблоны научной нотации начинаются с @E. |
m | Общее число символов в формате, предлагаемом данным шаблоном. |
n | Число цифр после десятичной точки. |
B | Если число равно нулю, то вывести пустую строку |
Шаблоны научной нотации форматируют очень большие или же очень маленькие числа. Вывод в виде десятичного числа в степени десяти.
Пример:
Шаблон | Значение | Результат |
@E9.0 | 1,967,865 | .20e+007 |
@E12.1 | 1,967,865 | 1.9679e+006 |
@E12.1B | 0 | |
@E12.1 | 1,967,865 | 1.9679 e+006 |
@E12.1 | .000000032 | 3.2000e-008 |
@Dn[s][B]
@D | Все шаблоны даты начинаются с @D. |
n | Номер шаблоны даты. Допустимые номера от 1 до 16. |
s | Разделитель. Слэш (/) ставится между днем, месяцем и годом в большинстве шаблонов даты. Можно использовать альтернативные разделители, как то: . Порождает точки ` (слабое ударение)порождает запятые - Порождает тире _ (подчеркивание) порождает пробелы |
B | Вывести пустую строку, если число равно нулю. |
Даты можно хранить в числовых переменных (обычно LONG), DATE-полях (для совместимости с Btrieve), или в STRINGах описанных в виде дат. Дата, хранящаяся в числовой переменной называется Стандартной Кларионовской датой. Ее значение представляет собой количество дней, прошедших с 28 декабря 1800 года. Шаблон даты преобразует это число в один из форматов даты.
Для ввода данных нельзя использовать шаблоны @D3, @D4, @D7 и @D8 поскольку в них требуется вводить не только цифры, но и буквы.
Пример:
Шаблон | Формат | Результат |
@Dl | mm/dd/yy | 10/31/59 |
@D2 | mm/dd/yyyy | 10/31/1959 |
@D3 | mmm dd, yyyy | OCT 31,1959 |
@D4 | mmmmmmmmm dd, yyyy | October 31, 1959 |
@D5 | dd/mm/yy | 31/10/59 |
@D6 | dd/mm/yyyy | 31/10/1959 |
@D7 | dd mmm yy | 31 OCT 59 |
@D8 | dd mmm yyyy | 31 OCT 1959 |
@D9 | yy/mm/dd | 59/10/31 |
@D10 | yyyy/mm/dd | 1959/10/31 |
@D11 | yymmdd | 591031 |
@D12 | yyyymmdd | 19591031 |
@D13 | mm/yy | 10/59 |
@D14 | mm/yyyy | 10/1959 |
@D15 | yy/mm | 59/10 |
@D16 | yyyy/mm | 1959/10 |
@Dl. | mm.dd.yy | Разделитель точка |
@D2- | mm-dd-yyyy | Разделитель тире |
@D5_ | dd mm yy | Подчеркивание порождает разделитель пробел |
@D6` | dd,mm,yyyy | Слабое ударение порождает разделитель запятую |
@Tn[s][B]
@T | Все шаблоны времени начинаются с @T. |
n | Номер формата времени. Допустимые номера форматов от 1 до 6. |
s | Разделитель. Двоеточие (:) ставится по умолчанию между часами, минутами и секундами в большинстве форматов времени. Можно использовать альтернативные разделители, как то: . Порождает точки ' (слабое ударение) порождает запятые - Порождает тире _ (подчеркивание) порождает пробелы |
B | Если значение равно нулю, то вывести пустую строку. |
Время можно хранить в числовой переменной (обычно LONG), в TIME- полях (для совместимости сBtrieve), или в STRINGах, описанных в формате времени. Время, хранящееся в числовой переменной называется стандартным кларионовским временем. Оно представляет из себя количество сотых долей секунды, прошедших с полуночи. Шаблон времени переводит это число в один из 6 форматов времени.
Нельзя использовать для ввода шаблоны (@T3 и @T6), в которых требуется вводить не только цифры, но и буквы.
Пример:
Шаблон | Формат | Результат |
@T1 | hh:mm | 17:30 |
@T2 | hhmm | 1730 |
@T3 | hh:mmXM | 5:30PM |
@T4 | hh:mm:ss | 17:30:00 |
@T5 | hhmmss | 173000 |
@T6 | hh:mm:ssXM | 5:30:00PM |
@T1. | hh.mm | Разделитель точка |
@T1- | hh-mm | Разделитель тире |
@T3_ | hh mmXM | Подчеркивание порождает пробелы |
@T4' | hh,mm,ss | Слабое ударение порождает запятые |
@p[<][#][x]P[B]
@P | Все шаблоны "по образцу" начинаются с разделителя @P и заканчиваются разделителем P. Регистр обоих разделетелей должен быть один и тот же. |
< | Целочисленная позиция. Если в этой позиции ноль, то вывести пробел. |
# | Целочисленная позиция. В этой позиции вывести цифру, независимо от ее значения. |
x | Необязательный символ для вывода. Эти символы будут присутствовать в выводной строке. |
p | Все шаблоны "по образцу" должны заканчиваться на P. Если разделитель @p введен на нижнем регистре, то и конечный разделитель P тоже должен быть в нижнем регистре. |
B | Если ВСЕ число равно нулю, то вывести пустую строку. |
Шаблоны "по образцу" содержат необязательные целочисленные пози- ции и необязательные символы редактирования. Любой символ кроме < или # считается символом редактирования, который появится в форматированной строке-результате. Разделители @P и P чувствительны к регистру, на котором они введены. Это сделано для того, чтобы, если скажем, надо ввести символ "Р", то можно использовать разделители "р" и наоборот.
Пример:
Шаблон | Значение | Результат |
@P###-##-####P | 215846377 | 215-84-6377 |
@P<#/##/##P | 103159 | 10/31/59 |
@P(###)###-####P | 3057854555 | (305)785-4555 |
@P###/###-####P | 7854555 | 000/785-4555 |
@p<#:##PMp | 530 | 5:30PM |
@P<#'<#"P | 506 | 5' 6" |
@P<#Ib. <#oz.P | 902 | 91b. 2oz. |
@P4##A-#P | 112 | 411A-2 |
@K[@][#][<][x][\][?][^][_][Ѓ]K[B]
@K | Все key-in template шаблоны начинаются разделителем @K и завершаюися разделителем K. Регистр обоих "К" должен быть одним и тем же. |
@ | Разрешены только буквы на верхнем и нижнем регистрах. |
# | Разрешены целые числа от 0 до 9. |
< | У целых чисел выводить лидирующие нули пробелами. |
x | Представляет необязательные постоянные символы для показа (любые символы, пригодные для вывода на экран). Эти символы попадают без изменений в результирующую строку. |
\ | Следующий за \ символ выводить на экран как печатаемый. Так можно включить в результирующую строку любые символы форматирования (@,#,<,\,?,^,_,Ѓ) как обычные печатаемые символы. |
? | В этой позиции может быть любой символ. |
^ | В этой позиции разрешены только буквы на верхнем регистре. В этой позиции разрешены только буквы на нижнем регистре |
| | Ограничитель. Только данные введенные до | и печатаемые символы, введенные до | будут помещены в результирующую строку. |
K | Все key-in template шаблоны завершаются символом "K". Если разделитель @k был введен на нижнем регистре, то и завершающий k должен быть введен на нижнем регистре. |
B | Если ВСЕ число рано нулю, то вывести пустую строку. |
Key-in шаблоны могут содержать целочисленные позиции ( # < ), символьные позиции ( @ ^ _ ), места для любых символов ( ? ), и печатаемые символы. Любой символ, кроме символов форматирования, рассматривается как печатаемый, который попадает в форматированную строку-результат. Разделители @K иd K чувствительны к регистру по той же причине, что и @P и P в шаблонах "по образцу".
Key-in Шаблоны специфичны для полей типа STRING, PSTRING, и CSTRING для возможности произвольного редактирования и проверки допустимости поля. Использование key-in шаблонов, содержащих любые алфавитные индикаторы ( @ ^ _ ) с полями для ввода чисел дает непредсказуемые результаты.
Поскольку использование режима вставки для key-in шаблонов, может также привести к непредсказуемым результатам, то key-in шаблоны всегда принимают данные в режиме надпечатки, даже если есть атрибут INS.
Пример:
Шаблон | Введено значение | Строка-результат |
@K###-##-###K | 215846377 | 215-84-6377 |
@K####Ѓ-####K | 33064 | 33064 |
@K####Ѓ-####K | 330643597 | 33064-3597 |
@K<# ^^^ ##K | 10AUG59 | 10 AUG 59 |
@K(###)@@@-##\@##K | 305abc4555 | (305)abc-45@55 |
@K###/?##-####K | 7854555 | 000/785-4555 |
@k<#:##^Mk | 530P | 5:30PM |
@K<#' <#"K | 506 | 5' 6" |
@K4#_#A-#K | 1g12 | 41glA-2 |
@Slength
@S | Все строковые шаблоны начинаются с @S. |
length | Определяет количество символов в шаблоне формата. |
Строковый шаблон описывает НЕформатированную строку заданной длины.
Пример:
Name STRING(@S20) !20-символьное поле-строка
PRE(prefix)
prefix | Допустимые символы буквы, цифры от 0 до 9 и символ подчеркивания. Префикс должен ничинаться с буквы и не должен быть зарезервированм словом. |
Атрибут PRE предусматривает префикс метки для сложных структур данных. Он используется для того, чтобы различать переменные с одинаковыми именами в разных структурах. При обращении к переменной исполняемымы операторами, при присвоениях и передаче в списках параметров, префикс присоединяется к метке двоеточием (Pre:Метка). PRE можно использовать со следующими структурами данных:
DETAIL | FILE | FOOTER |
GROUP | HEADER | OPTION |
QUEUE | RECORD | REPEAT |
REPORT | SCREEN |
Пример:
MasterFile FILE,DRIVER('Clarion'),PRE(Mst) !Declare master Record RECORD ! file layout AcctNumber LONG . . Detail FILE,DRIVER('Clarion'),PRE(Dtl) !Declare detail ! file layout Record RECORD AcctNumber LONG . . GROUP,PRE(Mem) !Declare some memory variables Message STRING(30) Page LONG Line LONG Device STRING(30) . CODE IF Dtl:AcctNumber <> Mst:AcctNumber !Is it a new account Mem:Message - 'New Account' ! display message DO MatchMaster ! get new record .
См. также: Зарезервированные слова
DIM(измерение,....,измерение)
измерение | Числовая константа, которая задает количество элементов в данном измерении массива. |
Атрибут DIM объявляет перемнную-массив. Такая переменная повторяется столько раз, сколько указано в параметрах ИЗМЕРЕНИЕ. Многомерные массивы можно рассматривать как вложенные одномерные. Каждое измерение массива имеет соответствующий индекс. Таким образом, обращаясь к переменной - элементу трехмерного массива, надо указать три индекса. Хотя на число измерений не накладывается ограничений, но размер массива не должен превышать 65,520б.С атрибутом DIM можно использовать следующие типы данных:
SHORT | REAL | STRING | CSTRING | PSTRING |
ULONG | USHORT | SREAL | DATE | TIME |
Индексы однозначно определяют конкретный элемент массива. Список индексов содержит индексы для каждого ИЗМЕРЕНИЯ массива. В списке, индексы отделяются друг от друга запятыми, а весь список заключается в квадратные скобки ([ ]). Индекс может быть числовой константой, выражением или функцией. Если надо обратиться ко всему массиву целиком, то надо использовать метку этого массива без списка индексов.
Структура GROUP - особый случай. Каждый уровень вложенности добавляет индексы и GROUP и ее переменным. Данные, описанные в GROUP можно использовать точно так же, как и собственно GROUP.
Пример:
Screen GROUP !Текст на экране Row GROUP,DIM(25) !25 строк Pos GROUP,DIM(80) !Две тысячи знакомест Attr BYTE !Байт атрибута Char BYTE !Собственно символ . . . !Завершаем все три группы
В предыдущей группе: Screen это 4,000байтная GROUP Row[1] это 160байтная GROUP Pos[1,1] это 2хбайтная GROUP Attr[1,1] это BYTE Char[1,1] это BYTE
Month STRING(10),DIM(12) !Размерность для месяца - 12 CODE CLEAR(Month) !Весь массив заполнить пробелами Month[1] = 'January' !Заполнить массив названиями Month[2] = 'February' MonthE3] = 'March'
См. также: MAXIMUM Массивы как параметры процедур и функций
Массив можно передать в PROCEDURE или FUNCTION. Прототип, описанный в MAP-структуре должен описывать тип данных "массив" как параметр-переменную ("передается по адресу") с пустым списком индексов. Вызывающий оператор может передать массив в ROCEDURE или FUNCTION.
Пример:
PROGRAM MAP MainProc AddCount(*LONG[,],*LONG[,]) !Передаем 2 двумерных . !масива типа LONG CODE MainProc MainProc PROCEDURE TotalCount LONG,DIM(10,10) CurrentCnt LONG,DIM(10,10) CODE AddCount(TotalCount,CurrentCnt) !Вызывая процедуру, переда- !ем ей массивы AddCount PROCEDURE(Tot,Cur) !Процедуре нужны два массива CODE LOOP I# = 1 TO MAXIMUM(Tot,1) !Цикл по первому индексу LOOP J# = 1 TO MAXIMUM(Tot,2) !Цикл по второму индексу Tot[I#,J#l += Cur[I#,J#] ! увеличить TotalCount на . . ! CurrentCnt CLEAR(Cur) !Очистить массив CurrentCnt RETURN
См. также: DIM, Прототипы процедур и функций, MAXIMUM
EXTERNAL
Атрибут EXTERNAL указывает на то, что переменная, которой он присвоен, описана во внешней библиотеке. Таким образом, переменная с атрибутом EXTERNAL определена и может использоваться кларионовским кодом, но под нее не будет выделена память. Память для такой переменной выделяется самой внешней библиотекой. Этот атрибут позволяет Clarion-программам иметь доступ к полям, описанным как PUBLIC во внешних библиотеках.
EXTERNAL допустим только для переменных, описанных ВНЕ структур FILE, QUEUE или GROUP.
Пример:
PROGRAM MAP MODULE('External.Obj') AddCount,PASCAL !External library with PASCAL . . ! calling convention TotalCount LONG,EXTERNAL !Variable declared in external library
NAME([ | constant variable |
] |
constant | Строковая константа. |
variable | Метка STRING-переменной, описанной в области описания глобальных данных или в области описания данных модуля-члена. |
Атрибут NAME задает "внешнее" имя. Он полностью независим от атрибута EXTERNAL - между ними не требуется никакой связи, хотя оба этих атрибута могут быть у одной и той же переменной.
Атрибут NAME можно использовать в прототипах процедур и функций, применять к FILE, KEY, INDEX, MEMO, любому полю, описанному в FILE или QUEUE структурах, или к любому полю вне структуры. Атрибут NAME имеет различные свойства, в зависимости от того, где он использован.
NAME(константа) можно задать в прототипах процедур или функций. Константа - это внешнее имя, используемое компоновщиком для идентификации процедуры или функции из внешней библиотеки.
Атрибуты NAME(константа) или NAME(переменная) в описании FILE задает ДОСовскую спецификацию полного имени файла. Если константа или переменная не содержит диск и путь, то подразумеваются текущие диск и каталог. Если опущено расширение файла, то подразумевается расширение, стандартное для данного файлового драйвера. Некоторые файловые драйверы требуют, чтобы KEYи, INDEXы, или MEMO-поля были в отдельных файлах. Таким образом, NAME можно применить к описаниям KEY, INDEX или MEMO. Атрибут NAME без константы или переменной, ссылается на метку того описательного оператора, к которому он был применен (включая префикс, если таковой указан).
NAME(константа) может применятся к любому полю, описанному в структуре RECORD. Это позволяет использовать имена полей, не нарушающих ограничений на имена, накладываемые отдельными файловыми драйверами.
NAME(константа) можно применять к любому полю в структуре QUEUE. Так достигается возможность динамических сортировок во время исполнения.
NAME(константа) можно также применять к любой переменной, описанной вне какой-либо структуры. Это дает возможность компоновщику по внешнему имени идентифицировать переменную, описанную во внешней библиотеке. Если переменная имеет еще атрибут EXTERNAL, то она описана, и память под нее выделяется самой внешней библиотекой. Без атрибута EXTERNAL, такая переменная описывается, и память под нее выделяется в кларионовской программе, и она является внешней по отношению ко внешней библиотеке.
Пример:
PROGRAM MAP MODULE('External.Obj') AddCount(LONG),LONG,C,NAME('_AddCount') !C function named ' AddCount, . . Cust FILE,PRE(Cus),NAME(CustName) !Filename in CustName variable CustKey KEY('Name'),NAME('c:\data\cust.idx') !Declare key,cust.idx Record RECORD Name STRING(20),NAME !Default NAME to 'Cus:Name' . !End file declaration SortOue QUEUE,PRE(Que) Fieldl STRING(10),NAME('FirstField') !QUEUE SORT NAME Field2 LONG,NAME('SecondField') !QUEUE SORT NAME . CurrentCnt LONG,EXTERNAL,NAME('Cur') !Field declared public in ! external library as 'Cur' TotalCnt LONG,NAME('Tot') !Field declared external !in external library as 'Tot'
См. также: прототипы процедур и функций, FILE, KEY, INDEX, QUEUE, EXTERNAL
OVER(переменная)
переменная Метка переменной, которая уже занимает память, подлежащую разделу.
Атрибут OVER позволяет ссылаться на один и тот же участок памяти двумя разными путями. Поле, описанное с атрибутом OVER, должно быть НЕ больше, чем переменная, поверх которой она накладывается (хотя, конечно, она может быть меньше).
(SPA. Для тех кому это трудно понять сразу, как мне было в свое время, скажу что этот механизм аналогичен паскалевским записям с вариантами)
Поле в структуре GROUP НЕ может быть описано поверх переменной, которая находится ВНЕ этой структуры GROUP. Также, нельзя описать поле поверх переменной, которая является частью списка параметров процедуры или функции.
Пример:
CustNote FILE,PRE(Csn) !Declare CustNote file Notes MEMO(2000) !The memo field Record RECORD CustID LONG . . CsnMemoRow STRING(IO),DIM(200),OVER(Csn:Notes) !Csn:Notes !можно рассматривать как одно !целое или блоками по 10 байт
См. также: DIM
метка | EQUATE( | label constant picture |
) |
метка | Метка исполняемого оператора. Используется для присвоения оператору еще одной метки. |
constant | Числовая или символьная константа. Используется для описания сокращенного названия содержимого константы, и позволяет легко изменять и находить эту константу. |
picture | Элемент шаблона. Дает сокращенное имя шаблону. Тем не менее, форматтеры экранов и отчетов в кларионовском редакторе не распознают назначенные метки как разрешенные шаблоны. |
Директива EQUATE не занимает память во время исполнения. Она используется для присвоения метки другой метке или константе. Метка директивы EQUATE не может быть такой же, как ее параметр.
Пример:
Init EQUATE(SetUpProg) !Обзовем процедуру по другому Off EQUATE(0) !Off означает нуль On EQUATE(1) !On означает один Pi EQUATE(3.1415927) !Значение числа ПИ EnterMsg EQUATE('Press Ctrl-Enter to SAVE') SocSecPic EQUATE(@P###-##-##IfltP)!Формат номера карточки !социального страхован.
См. также: Зарезервированные слова
SIZE( | label constant picture |
) |
метка | Метка ранее описанной переменной. |
constant | Числовая или символьная константа. |
picture | Элемент шаблона. |
SIZE заставляет компилятор сообщить количество памяти (в байтах) выделенной для хранения параметра.
Пример:
SavRec STRING(1),DIM(SIZE(Cus:Record) !Строк столько же, каков размер записи StringVar STRING(SIZE('Clarion Software, Inc.')) !Строка должна быть достаточной для этой !константы длины LOOP I# = 1 TO SIZE(ParseString) !Цикл по все символам строки PicLen = SIZE(@P(###)###-####P) !Сохраняем размер шаблона
Назад | Содержание | Вперед