nsutextbook (1037554), страница 5
Текст из файла (страница 5)
По умолчанию разработка ведется в рабочей областиUser.Caché Studio это интегрированная, визуальная среда создания объектно-ориентированных баз данных и Web-приложений. Она имеет следующие особенности для обеспечения быстрой разработки:15•Возможность редактирования определений классов, CSP-страниц, программна Caché Object Script(COS) в единой интегрированной среде;• Полнотекстовое редактирование с подсветкой команд, а также проверкойсинтаксиса на следующих языках: Caché Object Script, Basic, Java, SQL,JavaScript, HTML, и XML;• Поддержка команды разработчиков, работающих с общим репозиторием кодаприложения;• Наличие отладчика;• Организация кода в проект;• Наличие мастеров, позволяющих создавать классы, методы, свойства, связи,WEB-формы.Исходный код приложения Caché оформляется в виде проекта.
Проект может содержать следующие компоненты: классы, программы, CSP-файлы. Можно создавать новыепроекты, открывать и изменять существующие. Также существует возможность добавления или удаления компонентов из проекта.Внешний вид среды разработки Caché Studio приведен на рис. 6.Рисунок 6. Среда разработки Caché Studio.Утилита Caché Terminal может быть использована для отладки программ, процедур, функций, проверки работы отдельных операторов.
Работа ведется в режиме командной строки. Утилита чрезвычайно проста. После приглашения набирается команда и нажимается ENTER. Здесь же выводится результат выполнения команды. Окно утилитыприведено на рис. 7.16Рисунок 7. Окно утилиты Caché TerminalДля доступа к многомерным структурам ядра СУБД Caché можно воспользоватьсяутилитой Caché Проводник.
Утилита Caché Проводник предоставляет ряд интерфейсовдля просмотра, импорта/экспорта, печати на принтер глобалей, классов Caché, программCaché. Внешний вид утилиты приведен на рис. 8.Рисунок 8. Утилита Caché Проводник.17Утилита SQL-менеджер позволяет работать с объектами как с реляционными таблицами, это типичный проводник для работы со схемой реляционной базы данных. Окноутилиты приведено на рис. 9.Рисунок 9. Утилита SQL-менеджер.18Глава 3.
Язык Caché Object ScriptВ СУБД Caché реализован собственный язык программирования Caché Object Script(COS). COS — это расширенная и переработанная версия языка программирования M(ANSI MUMPS). В первую очередь, COS предназначен для написания исходного кода методов класса. Кроме этого, в Caché вводится понятие Caché-программы. Caché-программане является составной частью классов и предназначена для написания прикладного программного обеспечения для текстовых терминальных систем.
Особенности языка ObjectScript:• Язык не имеет зарезервированных слов: вы свободны в выборе имен идентификаторов, также как и имен переменных. Например: set set=12, где первый set – это команда, второй – это имя переменной.• Не является языком строгой типизации. Используемые переменные не требуют предварительного объявления.• Имеется большой набор встроенных функций, которые отличаются наличием знака $перед именем функции. Например: $Piece, $Select и т.д.• Существует довольно много встроенных команд языка.
Например: write, read и т.д.• Поддержка работы с классами и объектами.• Поддержка работы с многомерными массивами.• Широкий набор функций для прямого управления потоками внутри приложений.• Набор команд ввода/вывода.• Поддержка встроенного SQL.3.1. Переменные, идентификацияЧастично ObjectScript чувствителен к регистру букв, частично нет. В общем случае,то, что определяется пользователем, чувствительно к регистру букв, в то время как именавстроенных команд и функций – нет.
Определяемые пользователем идентификаторы (переменные, подпрограммы, имена меток) чувствительны к регистру букв. String, string, иSTRING это разные переменные.Различают два вида переменных: локальные и глобальные.Локальные – существуют лишь в оперативной памяти, всегда привязаны к одномупроцессу и являются локальными для данного процесса.Глобальные длительно хранятся в базе данных.
Глобальные данные (глобалы)представляют основу чрезвычайно эффективного прямого доступа (Direct Access), являются многопользовательскими, доступны для обработки другими процессами. Для тогочтобы отличить их от локальных, перед именем глобала ставится символ «^». Глобальныепеременные могут быть скалярами, массивами или подпрограммами.Идентификация переменных1. Длина имени не ограничена, но определяющими являются только первые 31 символов.2.
Первый символ – строчная или прописная буква или «%».3. Все остальные символы могут представлять собой смесь букв и цифр из 7-ми битного набора символов ASCII.4. Имена чувствительны к регистру букв.Локальные и глобальные переменные могут создаваться тремя командами: Read, Set,For. С помощью команды Kill переменные могут быть уничтожены.Примеры:Set Article=”Брюки”19Read “Введите число”, numberKill Article, numberВ Caché отсутствует декларирование переменных: единственный тип данных –это строка символов переменной длины. Т.е.
все переменные – это переменные типаString. Тем не менее, для выполнения арифметических или логических операций переменные интерпретируются как числа, либо как логические данные.Еще одна категория переменных – это системные переменные, которые являютсяпредопределенными и могут меняться программно только в редких случаях. Их имена начинаются с символа $. Пример системной переменной — $Horolog, которая содержитвнутреннее системное время.Внутренние структурированные системные переменные – это смешение описанных выше системных и глобальных переменных.
Синтаксически они предваряются двумясимволами “^$”. Они содержат системную информацию. Например, в системной структурированной переменной ^$Job хранится информация о текущем процессе (см. табл.1).Таблица 1Примеры системных переменныхСистемнаяОписаниеПримерпеременная> write $S$S[torage]Размер области текущего процесса, предназ> 16694336наченный для хранения локальных переменных вбайтах$ZN[ame]Имя загруженной в данный момент программы>write $ZN>$ZV[ersion]Версия Caché$J[OB]Содержит положительное целое число, однозначноидентифицирующее каждый текущий процесс,происходящий в системе. Не меняется в течениевсего времени, пока процесс является активным$ZPIЧисло пи3.2.
Команды3.2.1. Общий синтаксис командОбщий синтаксис команды:<метка> <пробел> <команда> <пробел> <список аргументов через запятую>Можно использовать более одной команды в одной строке. При этом должен бытькак минимум один пробел между последним аргументом одной команды и началом следующей команды. Многие команды могут не иметь аргументов.Использование пробелов в строках кода:• После безаргументной команды должны следовать как минимум 2 пробела.• В именах переменных не может быть пробелов.• Каждая строка кода должна начинаться с пробела, единственное исключениеиз этого правила – использование меток.
Если строка имеет метку, долженбыть один пробел между меткой и кодом.• Между именем команды и списком аргументов должен быть один и толькоодин пробел. Если в команде используется постусловие, не должно быть пробелов между командой и условием.Пример ошибочного использования оператора (команда набирается в CachéTerminal):20USER> SET··nextvar="Переменная"Где · - это пробелПримеры, демонстрирующие правильное использование пробелов:USER> SET·nextvar="Переменная"USER> KILL··SET·nextvar=5··WRITEUSER> KILL·SET·nextvar=53.2.2. Команда WriteКоманда Write используется для вывода информации на экран монитора.
Общийсинтаксис команды:Write <список аргументов через запятую>Список аргументов может содержать: переменные, выражения, строки, формат. Всеаргументы команды необязательны. Write без аргументов выдает содержимое переменныхпамяти. Для задания формата используются следующие символы:! – начать новую строку;# – начать новую страницу;?n – вывод с позиции n экрана.Например:SAMPLES>write "Привет всем!!!”SAMPLES>write !, "Это", !, "многострочное ", !, "сообщение", !ЭтоМногострочноесообщениеSAMPLES>write !, "Это", ?10, "сообщение выводится", ?50, " по колонкам", !Этосообщение выводитсяпо колонкамSAMPLES> write a1SAMPLES>write 7.95 * 1.159.14253.2.3.
Команда ReadПозволяет выдавать подсказку пользователю и вводить ответ пользователя в переменную. Синтаксис:Read <список аргументов через запятую>Список аргументов может содержать: переменные, выражения, строки, формат. Всеаргументы команды необязательны. Для задания формата используются следующие символы:! – начать новую строку;# – начать новую страницу;?n – ввод с позиции n экрана;* (звездочка) перед переменной – это ввод одного символа;: (двоеточие) после имени переменной – задает время ожидания ввода в секундах;<имя переменной>#<число> – задает ввод нескольких символов, количество которыхзадается числом.Можно использовать команду write для вывода значения переменной. Имена переменных чувствительны к регистру букв.
Пример:SAMPLES>read xБольшой приветSAMPLES>write "Вы ввели: ", x21Вы ввели: Большой приветТак как READ разрешает ввод подсказки, то она разделяет функциональность команды write. Можно ждать ответ пользователя неограниченное время или задать ограничение на ожидание: как долго (в сек.) ждать. Если пользователь ничего не ввел и нажалEnter, переменная будет содержать пустую строку.Можно ограничить число вводимых символов, например:SAMPLES>read !, "Введите 5 символов и не нажимайте <Enter>: ", z#5Введите 5 символов и не нажимайте <Enter>: abcdeМожно ограничить время ожидания.
Например:SAMPLES>read ?30, "Введите Ваше имя: ", nВведите Ваше имя: АлександрSAMPLES>read !, "У Вас только 5 секунд на ответ: ", x:5У Вас только 5 секунд на ответ:SAMPLES>3.2.4. Команда SetКоманду Set можно использовать для задания арифметических выражений и назначения значений переменным. Формы команды Set:Set <перем1> = <выр1>, < перем2> = < выр2>Set (<перем1>, <перем2>, <перем3>, …) = <выр>Set <объект>.<свойство> = <значение>Set (<объект1>.<свойство>, <объект2>.<свойство>, <объект3>.<свойство>) = <значение>Например:Set a=4,b=5,c=10Set (sc, fam, d)=”Строка”Set Human.Im=”Александр”Set (per1.pol, per2.pol, per3.pol)=”Ж”3.2.5.