ОСОБЕННОСТИ ЯЗЫКА FOXPRO • Все данные и другая информация СУБД хранятся в дисковых файлах. Файл данных, или база данных, представляет собой таблицу, каждая строка которой (запись) содержит некоторые сведения об описываемом объекте/объектах. • Каждая клетка записи называется полем записи. Все записи базы данных имеют идентичную, заданную пользователем структуру и размеры. • Единицей длины данных является байт – 8 двоичных разрядов. Обычно один символ занимает один байт. Типы файлов • В FoxPro можно создавать и обрабатывать несколько типов дисковых файлов. Каждому файлу программист дает имя по обычным правилам, принятым в MS DOS, т.е. собственно имя длиной до восьми символов и (через точку) расширение длиной до трех букв: <ИМЯ ФАЙЛА>.<РАСШИРЕНИЕ> Основные типы файлов: • <имя>.DBF - файл базы данных; • <имя>.FРТ - файл примечаний, хранящий мемополя базы данных; • <имя>.IDX - индексный файл; • <имя>.PRG - командный, программный файл; • <имя>.МЕМ - файл для сохранения временных переменных; • <имя>.FХР – откомпилированный командный файл PRG; • <имя>.АРР – объединенный откомпилированный командный файл. • Не разрешается DBF-файлам давать односимвольные имена из букв от А до J, так как эти имена зарезервированы под рабочие области. В которых располагаются файлы баз данных. • Файлы БД типа DBF являются основными носителями данных на диске. Они имеют следующие характеристики: • число записей в файле - до 1 миллиарда; • размер записи (в байтах) - до 65500; • число полей в записи - до 255; • число одновременно открытых баз - до 25. Типы и размеры полей (в байтах): • символьные поля до 254; • числовые поля - до 20; • поля дат - 8; • логические поля - 1. • Символьные поля (поля типа С) допускают ввод любых алфавитно-цифровых символов, знаков препинания и т.д. • Числа в базе данных хранятся в числовых полях двух форматов - с фиксированной и плавающей точками (типы N и F). • Логические поля (тип L) и другие логические величины могут иметь только два значения: .Т. (от TRUE - "Истина") и .F. (от FALSE - "Ложь") или, что то же самое, .Y. и .N. (от YES - "Да" и NO - "Нет"). • Поля дат (тип D) допускают ввод, естественно, только цифр. Разрешенные даты в FoxPro должны находиться в диапазоне от 1 января 100 года до 31 декабря 9999 года. • Мемо-поля (тип М) имеют произвольную длину в каждой записи. Их содержимым могут быть данные любого вида, включая даже СОМ- и ЕХЕ-файлы. Поля примечаний удобно использовать для такой информации, которая имеет непредсказуемую длину • Файл примечаний имеет одинаковое с файлом базы данных имя, но расширение FPT. В каждой записи файла DBF имеется только ссылка фиксированной длины 10 на каждое имеющееся в базе мемо-поле. • Файлы примечаний являются подчиненными по отношению к файлам DBF. Доступ к полям примечаний становится возможным только в случае, если открыт соответствующий файл DBF. Временные переменные • В FoxPro допускается определение и использование одномерных и двумерных массивов переменных. Причем каждый элемент массива может быть любого из имеющихся типов независимо от остальных элементов. • Числовые переменные могут иметь представление как с фиксированной, так и с плавающей точкой. Представление с плавающей точкой применяется в основном для изображения очень больших или очень маленьких чисел. В этом случае число изображается в виде значащей части и степени числа 10 (буква Е). • Имена полей и переменных могут иметь длину до 10 символов латинских букв, цифр и знаков подчеркивания - и должны начинаться с буквы. Прописные и строчные буквы в именах воспринимаются FoxPro одинаково. Создание программных продуктов • наличие мощных команд обработки файлов; • развитые средства ведения диалога (меню, "горячие" клавиши); • удобные средства ввода/редактирования данных; • возможность ускоренного доступа к данным (индексирование); • управление дизайном экрана (окна, цвет, звук, рамки); • удобный вывод данных на экран, бумагу, в текстовый файл; • развитый аппарат обработки символьных данных. ОБОЗНАЧЕНИЯ И СТРУКТУРА КОМАНД • При изучении языка FoxPro будем использовать для описания синтаксиса команд следующие обозначания: • Файл - имя файла. Если нужно подчеркнуть тип файла, то может быть указано и расширение его имени (например, DBF-файл для файла базы данных). • БД - база данных (DBF-файл, возможно, с FPTфайлом). • Поле - имя поля файла базы данных. • Мемо-поле - имя поля примечаний из файла примечаний (FPT-файла). • Индекс - имя индекса (имя индексного IDXфайла) • Перем - имя временной переменной, находящейся в памяти. • Область - имя рабочей области, которую организует FoxPro для обработки одного файла базы данных • Окно - имя окна. • [...] - в квадратных скобках указывается необязательная, но возможная часть конструкции команды. Скобки в команду не входят. • <...> - в угловых скобках помещается всякое разрешенное выражение, которое программист должен поместить в команду. Скобки в команду не входят. • /- указывает на то, что в команде необходимо наличие только одного из элементов, разделенных знаком "/". • *и? - эти стандартные для MS DOS символы в имени файла и в ключе поиска некоторых команд означают любое количество произвольных символов (*) и один произвольный символ (?). Совокупность указанных символов замещения и известных символов имени образует понятие "маска" • ВырN - выражение числового типа (Numeric). Его результатом является число. • ВырL - выражение логического типа (Logical). Вырабатывает значение "Истина" или "Ложь". Логические выражения в синтаксисе команд будем также иногда обозначать термином "условие". • ВырС - выражение символьного типа (Character). Вырабатывает строку символов или отдельный символ. • ВырD - выражение типа дата (Date). Его результатом является дата, к которому применима арифметика дат. • Выр - выражение любого типа вообще или любого типа из разрешенных по контексту. • Команда может иметь длину до 2048 символов. Для переноса в тексте программы части команды на следующую строку в конце текущей строки ставится знак ";" МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ • 1. ** или ^ - возведение в степень; • . 2. * - умножение, / - деление, % - остаток от деления; • 3. + - сложение, - - вычитание. ЛОГИЧЕСКИЕ ОПЕРАЦИИ: • 1. NOT - НЕ (другая форма указания операции НЕ - !); • 2. AND - логическое И; • 3.0R ИЛИ. • Знаки логических операций (кроме !) окаймляются точками или пробелами • ОПЕРАЦИИ ОТНОШЕНИЯ: • < меньше, > - больше, = равно, # не равно, <= - не больше, >= - не меньше. Знаки отношения применимы как к числовым выражениям, так и к датам и символьным выражениям. • В последнем случае сравниваются, естественно, не сами символы, а их коды. Если сравниваются символьные строки разной длины, сравнение выполняется по длине второго выражения, т.е. выражения, стоящего справа от знака отношения. Остаток левого операнда, превышающий длину правого операнда, игнорируется. • Эта чрезвычайно важная особенность дает при необходимости возможность организации поиска данных и по неполному ключу, например фамилии по первой(ым) букве(ам). Тогда более короткое выражение должно стоять справа от знака "=" и из него обычно должны быть удалены концевые пробелы • Кроме того, есть операции отношения только для символьных выражений: • $ - сравнение символьных строк. Операция А$В даст значение логическая "Истина" (.Т.), если А идентично В, либо А входит в В, и "Ложь" (.F.) в противном случае. , • == - сравнение на полное тождество символьных строк и по длине, и по содержанию, включая пробелы. ОПЕРАЦИИ СЦЕПЛЕНИЯ: • "+" - соединение двух или более строк в одну; • "-" - то же, но пробелы в конце строки, предшествующей знаку "-", помещаются в конец итоговой строки. Структура команды СУБД • • НАЗВАНИЕ *<границы>+ *<список выражений>+ *FOR <условие>+ *WHILE <условие>+ • НАЗВАНИЕ - имя команды; • <границы> -границы действия команды, которые могут иметь одно из следующих значений: • ALL - все записи базы данных, • REST - все записи (начиная с текущей) до конца базы, • NEXT <N> - следующие N записей (начиная с текущей), • RECORD <N> - запись номер N; • FOR <условие> - выполнение команды только для записей, отвечающих <условию>; • WHILE <условие> - выполнение команды только до тех пор, пока не перестанет выполняться <условие>. • Кроме того, в FoxPro имеется большая группа команд, которые целесообразно выделить в отдельный вид: • • SET <параметр команды> ТО <значение параметра> • • SET <параметр команды> OFF/ON • В FoxPro разрешается и ключевые слова, и имена записывать как прописными, так и строчными буквами • Константы различных типов данных отображаются в командах следующим образом: • Символьные константы в FoxPro выделяются апострофами, кавычками или квадратными скобками. • Константы типа дата берутся в фигурные скобки (например, ,09.11.11-). Пустая дата (,. . -)вообще может быть задана одними фигурными скобками ,-. Логические константы Т и F в тексте программ обрамляются точками (.Т., .F., .t., f.). • Покидание среды FoxPro осуществляется командой QUIT которая возвращает нас в исходное состояние