Этим Вы окажете большую помощь науке и медицине. См. подробнее: http://solidstate.karelia.ru/~yura/pyldin/yura/computing.htm |
ВЪВЕДЕНИЕ Разглеждания в тази материал програмен продукт UniBASE е предназначен за работа с големи обеми от еднообразни данни, организирани в подходящи структури в паметта на компютъра. Продуктът е предназначен за работа в операционна система UniDOS на персонален микрокомпютър ПЪЛДИН. Този текст не е предназначен за запознанство с компютъра или операционната система. Предполага се, че читателят вече добре владее работата с дискетите, както и основните команди на UniDOS. Освен това за препоръчване е той да има някакъв опит в програмирането, например на езика Basic, което ще му помогне в усвояването на работния език на продукта UniBASE. UniBASE е представител на този клас програмни продукти наречени системи за управление на бази данни (СУБД). Предназначението им е да улесни работата с големи обеми от данни, организирането им в таблици, извършването на различни операции с тях като търсене на данни по някакъв признак, промяна на определени данни, добавяне, премахване и други. За целта в UniBASE е реализиран програмен език с който се задават различните заявки за работа с данните. С този език могат да се пишат програми, които в комплект с данните, които обработват образуват завършени информационни системи с най-различни сфери на приложение. При разработването на продукта е търсена пълна съвместимост на основните файлове съхраняващи данните с тези на широко разпространените аналогични продукти на персоналните компютри от типа IBM PC - dBase III, FoxBASE и други. Така също програмният език използван в UniBASE е много близък до програмните езици на посочените продукти, и притежава голяма част от техните възможности. Поради това много от разработените вече информационни системи на тези СУБД и предназначени за работа на 16-битовите компютри с лекота могат да се използват и на неговия по-малък родственик ПЪЛДИН. На тези читатели, които нямат опит в работата с други СУБД пожелаваме повече кураж и търпение. Усвояването на UniBASE ще бъде за тях едно добро начало. Приятна работа със системата за управление на бази данни U n i B A S E В НАЧАЛОТО Вие имате дискетата с програмния продукт UniBASE. В следващите редове се указва какво е необходимо за да можете да работите с него. Вашият Пълдин трябва да има работеща операционна система UniDOS, а също и ROM версия на интерпретатора на Y-код използван за работа с програмния език UniPASCAL. Останалите компоненти на UniPASCAL не са необходими. UniBASE може да работи добре ако вашият компютър е снабден само с едно флопи-дисково устройство тъй като неговите програмни части не са големи и върху програмната дискета освен тях могат да се съберат и някои Ваши файлове с данни. Все пак за работа с по-големи файлове е за предпочитане да имате две дискетни устройства. Много добре би било ако компютъра Ви е свързан чрез локална мрежа към твърд диск на 16-битов компютър от типа на IBM PC/XT. В този случай ще можете да разположите всички програмни части на UniBASE в върху твърдия диск, както и всички ваши програми и данни, което ще облекчи значително работата Ви. При подготовка на UniBASE за работа знайте, че не е наложително всички негови компоненти да са разположени в една директория. Така например програмата UBCREATE ще Ви е нужна само когато създавате дефинициите на вашите таблици, но не и при работа с тях. Важно е обаче файлът UNIBASE.DAT, съдържащ основни дефиниции да бъде разположен в същата директория, където е и основната част от програмата UB.PGM, или в тази директория, която е текуща при стартирането на системата. След старта този файл не е нужен по-нататък, но не трябва да сменяте мястото на дискетата с главната част на програмата, тъй като тя е нужна по време на работа за зареждане в оперативната памет на различните програмни части. Вашите данни, както и програмите написани на програмния език на UniBASE можете да разполагате по различни директории на дискетите и евентуалния твърд диск, където Ви е угодно - тяхното разположение не влияе върху работата на UniBASE. ПРЕДВАРИТЕЛНИ ПОЯСНЕНИЯ При излагането на синтаксиса на командите в езика на UniBASE, и при пояснението им се използват редица понятия, смисъла на които трябва да е вече познат на читателя. Те включват основни елементи на езика, основни обекти с които се работи, предварителни уговорки за подразбиране и други общи моменти. Предназначението на този раздел е тяхното разяснение. 1. Основни типове данни. UniBASE поддържа следните основни типове данни : - Символни полета. Символните полета се използват за запаметяване на символи, които могат да бъдат въведени от клавиатурата. Това са ASCII символи. Те включват букви, цифри, специални знаци и интервали. Максималният размер на едно символно поле е 255. Означават се с името CHARACTER или съкратено C. - Числови полета. Числовите полета са два вида: целочислени и десетични. Цялото число е число без десетична част. Ширината на числовото поле представлява броя на цифрите, които то може да съдържа /десетичната точка се брои за една цифра/. Означават се с името NUMERIC или съкратено N. - Логически полета. Логическите полета приемат единствен символ, представляващ стойност ИСТИНА / ЛЪЖА. Логическата истина се въвежда като т, Т, у, или Y. Логическата лъжа се въвежда като F, f, N или n. Означават се с името LOGICAL или съкратено L. - Поле за дати. Нормалният формат за въвеждане и извеждане на дати е дд.мм.гг. Размерът на полето е 8 байта. Означават се с името DATE или съкратено D. 2. Имена в UniBASE. За указване на всички променливи, атрибути на данните и работни файлове се използват имена. Имената могат да бъдат дълги до 11 символа, да започват задължително с буква и да не съдържат вмъкнати интервали. Името може да се състои от букви, цифри и подчерти. 3. Файлове с които работи UniBASE. UniBASE използва и поддържа следните видове файлове: - релационни таблици - .DBF - индексни файлове - .NDX - програмни файлове - .PRG - форматни файлове - .FMT - файлове с променливи - .VAR - стандартен текстов файл - .TXT Всички тези файлове са стандартни файлове в операционната система UNIDOS. Техните имена се задават както имената на всички други файлове в UniDOS - с име на диска и директорията, където се намират, името на файла и разширението му. При работа с UniBASE, когато е необходимо да укажете име на файл от даден тип от изброените не е наложително да указвате и разширението му - то се подразбира. Все пак можете да слагате и други разширения на имената oсвен подразбраните, но те трябва да се указват от Вас. В командите и програмите UniBASE имената на файловете се задават на местата където това е необходимо като последователност от символи оградена от останалите части на оператора с интервали. UniBASE не проверява дали посоченото име е валидно име на файл, за това се грижи UniDOS. Ако искате за име на файл да посочите съдържанието на дадена променлива, използвайте макро заместване &. Символът & не се смята за макро повикване във вътрешността на името на файл. В следващите редове ще отговорим на въпроса какво представлява всеки от тези видове файлове. 3.1. Релационна таблица или база данни (.DBF) Това са най-важните файлове с които работи UniBASE. Те съдържат в себе си всички Ваши данни от един и същи тип, с еднаква структура. В тях данните са подредени в таблица от редове и колони. В тази таблица колоните съдържат отделните атрибути (съставни части) на Вашите данни и имат свои имена, а редовете на таблицата са всички екземпляри от този тип данни. Цялата таблица занапред ще наричаме база данни, базов файл, релационна таблица или просто таблица. Редовете на таблицата ще наричаме записи, а колоните на таблицата ще наричаме полета на данните. Всяко поле има свое име, което е уникално в една таблица, тип на съдържанието му, и големина. Дефиницията на една релационна таблица се създава с помощта на програмата UBCREATE, която е част от UniBASE, и е пояснена по-нататък в това ръководство. В момента на създаването си всяка таблица е празна, т.е. не съдържа редове, а след това Вие записвате данните си в нея с помощта на различните команди на езика на UniBASE. Една такава таблица може да съдържа до 65535 записа с данни. 3.2. Индексни файлове (.NDX) Тези файлове се генерират от UniBASE с помощта на подходящи команди. Съдържат данни във вътрешно представяне за осъществяване на бързо търсене в базата данни. Използването на индексни файлове дава възможност бързо да се търсят определени данни, а също и да се променя логическата последователност на базовия файл, като разглеждането му става в нарастващ ред. 3.3. Програмни файлове (.PRG) Повечето от своите команди Вие можете да задавате от клавиатурата и тогава UniBASE ще ги изпълнява веднага. В някои случаи се налага обаче отделните команди да се свържат в програма, текста на която се записва в програмен файл. Употребата на програмни файлове също позволява да се използват всички команди от езика на UniBASE, като например командите за цикъл, за условен преход и други. Когато UniBASE приема Вашите команди от клавиатура ще казваме че той работи в директен или в диалогов режим, а когато се изпълняват команди от програмен файл, ще казваме че се работи в програмен режим. Тези команди, които не са достъпни в диалогов режим ще се приемат, но няма да се изпълняват когато ги задавате от клавиатурата, и ще Ви се издаде подходящо съобщение за грешка. 3.4. Форматни файлове (.FMT) Някои от командите в UniBASE дават възможност за редактиране на съдържанието на базата данни като при това оформлението на вида на екрана може да бъде стандартно или указано от Вас. Ако за базата данни е зададен и форматен файл, този форматен файл ще се използва за указването на вида на екрана по време на интерактивна работа с данните. Форматните файлове съдържат последователност от команди на UniBASE, които се изпълняват автоматично всеки път когато се извика някоя от командите за интерактивна работа с данните. Такива команди са Edit, Append, Insert. Въпреки че в UniBASE няма специална забрана, за предпочитане е да се въздържате от употребата на множество команди във форматните файлове. За оформление на екрана се използват командите от групата "@", Set Color, Clear и други. 3.5. Файлове с променливи (.VAR) Генерират се от UNIBASE при командата SAVE. 3.6. Текстови файлове (.TXT) Тези файлове съдържат данни или друга информация която може да бъде въведена или е изведена от системата. Поддържат се от почти всички продукти и са стандартни за обмен между продукти с различно вътрешно представяне на данните. 4. Работни области. Във всеки един момент UniBASE може да работи едновременно с 10 работни области във всяка от които има по една релационна таблица. Една от тези области се нарича текуща и се избира с командата Select. Всички команди върху базата данни се изпълняват върху таблицата, която е отворена в текущата работна област. Всички работни области имат свои имена. Тези имена можете да зададете при отварянето на таблицата с командата Use .. Alias. Ако не зададете име на областта UniBASE ще и присвои автоматично име съответстващо на номера и, като първата област ще има име A, втората B, и т.н. Когато в някоя команда е необходимо да се укажат полетата от текущата база данни, е достатъчно просто да се напишат имената им. За да се указват полетата от другите области е необходимо преди името на полето да се напише името на областта и "->". 5. Математически изрази. Математическите изрази се състоят от константи, променливи, полета от данни, вградени функции в UniBASE и аритметични и логически операции над тези обекти. Аритметичните операции са +, -, *, /, **; а логическите операции са сравненията за равенство, различие, >, <, >=, <=, както и операциите от булевата алгебра and, or, not. Следва пълният списък на двуаргументните операции с инфиксен запис, които можете да използвате в изразите на UniBASE. След името на операцията са дадени типовете на двата аргумента (отляво и отдясно), а след знака ":" типа на резултата и приоритета на операцията. При по-сложни изрази първо се изпълняват операциите с най-голям приоритет, а след това останалите. Ако искате да промените реда на изпълнение на операциите можете да използвате скоби "(" и ")". ** N N : N 8 * N N : N 7 / N N : N 7 + N N : N 6 + C C : C 6 + U N : N 9 - N N : N 6 - U N : N 9 = N N : L 5 = C C : L 5 = L L : L 5 = D D : L 5 <> N N : L 5 <> C C : L 5 <> L L : L 5 <> D D : L 5 < N N : L 5 < C C : L 5 < L L : L 5 < D D : L 5 > N N : L 5 > C C : L 5 > L L : L 5 > D D : L 5 <= N N : L 5 <= C C : L 5 <= L L : L 5 <= D D : L 5 >= N N : L 5 >= C C : L 5 >= L L : L 5 >= D D : L 5 not U L : L 4 or L L : L 2 and L L : L 3 mod N N : N 7 Вградените функции в UniBASE се извикват като се укаже името им и след това списъка на параметрите в скоби. Тези функции които нямат параметри се извикват като след името им се напише "()", в противен случай UniBASE ще приеме името за име на променлива. Вградените функции са описани в отделен раздел на това ръководство. В математическите изрази могат да участват работните Ви променливи, които вече сте създали, но не може да се създават променливи. При среща на непознато име в математически израз UniBASE ще издаде съобщение за грешка. Използването на полетата от текущата база данни става като просто се указват имената им. Полетата от базите данни отворени за използване в някоя от другите работни области също са достъпни, като пред името им се пише името на областта и знака "->". Ако някое от полетата от текущата база данни има същото име като някоя променлива, операцията ще бъде извършена върху полето. При описанието на командите там където трябва да има математически израз ще използваме означението "exp". Там където е необходимо резултатът от изчислението на израза да бъде от числов тип, ще означаваме "expN", за изрази с резултат от символен тип ще пишем "expC", а за логически изрази - "cond". 6. Обхват на действие на командите (scope). Много от командите на UniBASE извършват една и съща операция многократно върху отделните записи на базата данни. Такива са командите Edit, List, Replace Sum и други. При това Вие можете да укажете дали съответното действие да се извърши за всички записи от файла или само за някаква част от него. Можете също така да зададете и критерий за селекция, на който трябва да отговарят записите които ще се обработват. Онези записи, които не отговарят на този критерий няма да бъдат обработени. Освен това можете да укажете условие при което да спре изпълнението на командата. Всичко това става с помощта на незадължителната конструкция за обхват "scope" , която влиза в тези команди. Конструкцията "scope" се състои от три незадължителни части и се описва така : scope ::= [ All | Rest | Next expN | Record expN ] [ For cond ] [ While cond ] Тук и по-нататък ще използваме някои означения от един формален метод за описание на езици за програмиране наречен разширена Бекус-Наурова форма (РБНФ). Ще предполагаме че той вече е познат на читателя, но на места ще даваме пояснения за неговото значение. В нашия случай трите части на конструкцията scope са заградени в средни скоби [ и ]. Това значи, че всяка такава част не е задължителна и може да се пропусне при задаването на командата. Ако някоя част на конструкцията не е указана, то при изпълнението на командата ще се смята че тя е указана със съответното си подразбрано значение. Първата част на обхвата се отнася до това какъв участък от файла ще се обработва. Можете да зададете един от четирите варианта разделени със символа "|" (използва се за изброяване на алтернативни възможности, чете се "или"). Думата All означава, че командата трябва да се изпълни върху целия файл, като се започне от първия логически запис и се стигне до последния. Думата Rest указва останалата част на файла от текущия запис до края му. Ако използвате третия вариант, обхвата на действие ще бъде само следващите expN (резултата от пресмятането на израза) записа, или до края на файла ако в остатъка от файла има по-малко записи. Последният вариант се използва когато искаме операцията да се извърши само върху записа с указан номер - ако той съществува във файла. Ако тази част от конструкцията е пропусната се подразбира, че е зададен обхват All, т.е. работа върху целия файл, освен в случаите, където това е специално указано в описанията на командите. Втората част от конструкцията задава условие на което трябва да отговарят записите, за да бъдат обработени. При изпълнението на командата това условие ще се проверява за всеки запис от указания обхват и само ако е изпълнено ще се обработва съответния запис. Ако в командата не е зададено For cond, се обработват всички записи от указания обхват. While cond се използва, ако искаме изпълнението на командата да спре веднага след като дадено условие се изпълни. 7. Флагове в UniBASE. Поведението на UniBASE може да се променя с помощта на няколко контролни флага които се "включват" и "изключват" с командата Set. Ето имената и значението на тези флагове : Alternate - контролира дали да се прави изход на допълнителен файл. Ако този флаг е ON и има отворен алтернативен изходен файл, целия изход който се прави с командата ?, ?? ще излиза и в този файл. Нормално е изключен. Carry - при командите Append и Insert ако е включен се копира предишния запис. Нормално е изключен. Color - указва цветен или монохромен монитор се използва. Нормално е Off - монохромен. Console - включва и изключва изхода на монитор. Deleted - определя дали записите, маркирани за изтриване, трябва да бъдат включени, или игнорирани от другите команди на UniBASE. Escape - Определя дали една програма или изпълнението на една команда може да бъде прекъснато посредством клавиша Esc. Нормално е On. Exact - определя как ще бъде оценено сравняването на два символни низа. Това засяга резултата от оценката на сравняването. Нормално е Off. Fields - позволява да използвате или игнорирате маската от полета, определени със командата SET FIELDS TO. Обикновено е Off. Print - включва или изключва изхода към екрана. Нормално Off. Step - Ако този флаг е включен UniBASE ще задържа изпълнението на програмата след всяка инструкция. Тя позволява на програмиста да "изпълнява" програмата инструкция по инструкция. Тази команда е средство за проверка на програми с цел отстраняване на грешки. Нормално е Off. Talk - определя ще бъдат ли изведени на екрана отговорите на повечето команди на UniBASE. Нормално е On. Unique - определя дали при индексиране в индексния файл могат да влизат записи с еднакви ключове. 8. Клавиатура. Редица команди на UniBASE дават възможност за интерактивно въвеждане и промяна на информацията в базите данни. При това потребителският интерфейс е осъществен така, че да позволява лекота при преход от един участък с информация на екрана на друг (Full screen editting). В този режим на редактиране на клавишите са присвоени естествени функции които не се нуждаят от пояснение : стрелката наляво премества курсора наляво, клавиша Home премества курсора в началото на информационното поле, End - в края. Все пак има клавиши, действието на които трябва да бъде пояснено. Техните функции са активни винаги когато на екрана Ви се предлага да въведете или редактирате определена порция от информация - променлива или поле от базата данни. <F2> - възстановява оригиналното съдържание на полето. Само за символни полета : <F3> - премахва символите наляво от курсора <F4> - премахва символите надясно от курсора <Ins> - сменя режима : вмъкване или промяна <ctrl> + <Backspace> - изчиства цялото поле СЪЗДАВАНЕ НА БАЗИ ДАННИ Създаването на бази данни се прави с помощта на програмата UBCREATE, която се намира на Вашата програмна дискета с UniBASE. С тази програма можете не само да създавате нови бази данни, но и да променяте дефиницията на стари такива, даже ако в тях има вече въведени записи. При това старите файлове се запазват на диска под същото име, но с разширение .BAK. При стартиране на програмата можете да укажете от командната линия име на файл (подразбира се разширение .DBF). Ако такъв файл съществува, ще се премине към промяна на неговата дефиниция. Ако указания файл не бъде намерен, ще се създаде нов файл с това име. Ако въобще не сте указали параметър от командната линия, програмата ще създаде нов файл, като накрая на работата при опит да го запишете на диска програмата ще зададе въпрос за името на новосъздадения файл. По време на работа върху дефиницията на базата данни програмата показва на екрана вече дефинираните полета със техните атрибути : име, тип, дължина и ако полето е от числов тип и точността му - броя на позициите след десетичната точка. Като използвате клавишите за движение можете да придвижите курсора до полето което искате да промените, и след това направете редакцията. Добавяне на поле става по два начина: най-открая, и вмъкване между другите вече създадени полета. Добавянето най-ототкрая става като просто придвижите курсора след последното поле и започнете редакция. Вмъкване на поле се прави с натискане на клавиш <F7>. В двата случая, ако не въведете правилно атрибутите новосъздаденото поле ще бъде премахнато. Премахване на поле може да се поиска и от клавиатурата с клавиш <F8>. Програмата задава въпрос за потвърждение, и при утвърдителен отговор полето се премахва. За да бъде валидна дефиницията на едно поле е необходимо: името му да е правилно - т.е. да започва с латинска буква, а следващите символи ако ги има да са само латински букви, цифри или символа '_' (подчертаване); дължината на полето да е правилна - за полета от символен тип не повече от 255 символа, за числови - до 12 символа и до 9 след точката, а за логически и от тип дата полета програмата автоматично определя дължините им на 1 и 8 символа съответно. Данните в UniBASE се съхраняват така, че големината им в символи е равна на големината им в байтове. Общата големина на записа е равна на сумата от големините на полетата в него плюс един байт. Дефиницията на един запис се смята за валидна ако са валидни всичките дефиниции на полета в записа, и големината на записа не надвишава 1024 байта. За край на работата могат да се използват два клавиша : <F10> ще накара програмата да запише готовата дефиниция на диска, и <esc> ще прекрати работата по дефиницията без запис на диск. Напомняме, че една дефиниция може да се запише на диска само ако тя е валидна, т.е. общата дължина на записа не надвишава 1024 байта. Ако това условие не е изпълнено програмата издава съобщение за грешка и продължава работата. ОПИСАНИЕ НА КОМАНДИТЕ 1. Команди за вход, изход и работа с променливите. Тези команди могат да се изпълняват в директен и програмен режим, независимо от това дали в текущата работна област има отворен файл. --------------------------------------------------------------- ? { exp } ?? { exp } --------------------------------------------------------------- Командата ?/?? изчислява и извежда стойността на израз. Записана с един въпросителен знак, командата предизвиква преминаване на нов ред преди извеждането на съответните данни. Двойният въпросителен знак извежда данните от текущата позиция на курсора, или на принтера. Когато командата е записана само с въпросителен знак, без параметри, UNIBASE пропуска един празен ред. Тук и по-нататък програмни конструкции оградени в такива скоби "{" и "}" ще означават, че съответната част може да се повтаря неколкократно, като между отделните повторения се слага запетая (","). --------------------------------------------------------------- @ --------------------------------------------------------------- Това е група от команди, които се използуват за създаване на потребителски формат за вход и изход от базата данни. С тяхна помощ можете да задавате подходящ вид на екрана. Във всички команди от групата се използва конструкцията coord, която указва точните координати на екрана, където трябва да се направи входно-изходната операция. Координатите се указват като първо се пише реда (Y - координатата), а след това колоната (X - координатата), разделена със запетая от реда. --------------------------------------------------------------- @ coord [ Say exp ] [ Get var ] --------------------------------------------------------------- Опцията Say се използува за извеждане на константна информация. Get се използува за въвеждане на променливи данни , които могат да бъдат или поле от активен базов файл,или работна променлива. Тази част от командата трябва да бъде активирана с командите Read или Append. UniBASE позволява максимално 32 команди @...Get преди въвеждането на командата Clear Gets. --------------------------------------------------------------- @ coord Clear [ To coord ] --------------------------------------------------------------- Тази команда изтрива екрана в правоъгълника определен от указаните координати. Ако втората двойка координати не е зададена, подразбира се изчистване до края на екрана. --------------------------------------------------------------- @ coord Box To coord [ , expN ] --------------------------------------------------------------- Командата се използува за чертаене на рамка по правоъгълника зададен с двете двойки координати. С допълнително зададено число от 0 до 4 се определя вида на рамката. Подразбира се стойност 1. 0 : с интервал 1 : с единична линия 2 : с двойна линия 3, 4, 5 : с други символи. --------------------------------------------------------------- @ coord Prompt expC --------------------------------------------------------------- Тази команда задава елемент от меню. Серия такива команди създават потребителско меню, което се активира с командата Menu. --------------------------------------------------------------- Store Exp To { var } --------------------------------------------------------------- Store създава и въвежда една или повече работни променливи. Един алтернативен синтаксис е: var = exp Ако една работна променлива вече съществува командата ще запише върху старото и съдържание. Един израз може да бъде запаметен в няколко променливи с помощта на една единствена команда Store. --------------------------------------------------------------- Accept [ ExpC ] To var --------------------------------------------------------------- Командата Accept служи за въвеждане на стойност на променлива с предварително съобщение. Въведените данни се запаметяват като символен низ, без да е необходимо използуването на ограничители. Въвеждането на данни се завършва с <Return>. --------------------------------------------------------------- Input [ expC ] [ To ] var --------------------------------------------------------------- Командата Input се използва в програмите за извеждане на съобщение, изискващо от потребителя да въведе данни от клавиатурата. Въвеждането на данни завършва с натискане на RETURN. В отговор на командата Input може да бъде въведен всеки, валиден за UniBASE израз. Типът му определя типа на променливата, която се създава. Ако в отговор на Input е въведен невалиден израз, или е натиснат <Return> се индицира синтактична грешка. --------------------------------------------------------------- Wait [ ExpC ] [ To var ] --------------------------------------------------------------- Командата Wait спира временно изпълнението на програма докато не бъде натиснат кой да е клавиш. Ако е включена опцията [ To var ] натиснатия клавиш се запаметява в посочената променлива, която ще бъде символна променлива. --------------------------------------------------------------- Menu To var [ Save ] --------------------------------------------------------------- Активира вече създадено меню чрез серия от команди @ coord Prompt. Избраната точка от менюто е число, което се записва в променливата. Ако не е указано Save, изчиства всички досегашни @ .. Prompt команди. --------------------------------------------------------------- Read [ Save ] --------------------------------------------------------------- Активира форматиран вход/изход дефиниран чрез серия от команди @ .. Get и ако не е указано Save, изчиства всички досегашни @ .. Get команди. --------------------------------------------------------------- Clear --------------------------------------------------------------- Изчиства екрана. Курсора остава в горния ляв ъгъл. --------------------------------------------------------------- Clear Gets --------------------------------------------------------------- Командата Clear Gets освобождава всички променливи Get, установени след последното изпълнение на командите Clear All, Clear Gets и Read. Clear Gets не премахва работни променливи. --------------------------------------------------------------- Clear Memory Release All --------------------------------------------------------------- Clear Memory освобождава всички работни променливи. Еквивалентна е на Release All при работа в директен режим . Ако тези команди се изпълняват от програма, разликата е следната: Clear Memory освобождава всички работни променливи, ; Release All освобождава само работни променливи в текущата програма (private). --------------------------------------------------------------- Release { var } --------------------------------------------------------------- Премахва от паметта само указания списък от променливи. --------------------------------------------------------------- List | Display Memory [ To Print ] --------------------------------------------------------------- Display Memory извежда на екрана името, типа и статуса на всяка активна работна променлива. Максималният брой на активните работни променливи е 32. В тази и други команди за извеждане на информация започващи с думите List или Display разликата между двете възможности е, че ако се използва Display, UniBASE ще прави паузи когато екрана се напълни с информация и ще изчаква да се натисне произволен клавиш. Ако е използвана конструкцията To Print, изхода от тези команди ще отива на принтера или на файла, където е пренасочен изхода за принтер вместо на екрана. --------------------------------------------------------------- List | Display Status [ To Print ] --------------------------------------------------------------- Подобно на предишната команда List | Display Status извежда на екрана или на принтера информация за вътрешното състояние на UniBASE. Информацията съдържа данни за това с кои бази данни се работи в момента, индексни и форматни файлове свързани с тях, релациите помежду им, а също и състоянието на управляващите флаговете. --------------------------------------------------------------- Save To filename { var } --------------------------------------------------------------- Указва списък от променливи, които да бъдат записани на дисковата памет във файл със име filename и подразбрано разширение .VAR. --------------------------------------------------------------- Restore From filename --------------------------------------------------------------- Указва име на файл с променливи, записани там по-рано с командата Save. Всички променливи от файла се прочитат и добавят в паметта. --------------------------------------------------------------- Eject --------------------------------------------------------------- Предизвиква преминаване на принтера на нова страница. --------------------------------------------------------------- Text ... EndText --------------------------------------------------------------- Text Извежда на екрана следващите няколко реда до появата на думата EndText в началото на реда. --------------------------------------------------------------- Set Alternate To filename --------------------------------------------------------------- Задава име на алтернативен текстов изход. Целият вход и изход от екрана с изключение на този свързан с командите от групата @ ще се записва в този файл в текстов вид. --------------------------------------------------------------- Close Alternate --------------------------------------------------------------- Прекъсва алтернативния текстов изход и затваря файла. --------------------------------------------------------------- Set Color To expN , expN --------------------------------------------------------------- Задава атрибути за цветовете на екрана. Първото число е цвят на буквите, а второто - цвят на фона. За повече подробности около цветовете на екрана вижте в системната литература за компютъра. --------------------------------------------------------------- Set Device To Print | Screen --------------------------------------------------------------- Set Device определя дали командите @ ... Say ще бъдат насочени към монитора или към печатащото устройство. Командата Set Device To Print изпраща изхода от командите @ ... Say на принтер. @... Get се игнорират. Подразбиращата се команда Set Device To Screen. --------------------------------------------------------------- Set Printer to filename --------------------------------------------------------------- Тази команда пренасочва изхода предназначен за принтер към дисков файл с указаното име. 2. Команди за работа с базите данни. Това са най-важните команди на UniBASE. С тяхна помощ можете да правите всичко, което Ви е необходимо с Вашите данни - да ги записвате и съхранявате в таблица, да търсите по някакъв признак, да правите промени, да добавяте и отстранявате данни. Дадена е също възможността чрез командите Import и Export за връзка на данните чрез стандартен текстов файл с всички други СУБД и за всякаква друга обработка. С изключение на командите Use и Select всички други команди от тази група могат да се използват само ако в текущата работна област вече има базов файл отворен за достъп и действието на командата ще се изпълни върху този файл. В противен случай UniBASE ще издаде съобщение за грешка, че командата не е достъпна поради липса на отворен за достъп файл. Всички тези команди се изпълняват еднакво успешно както от клавиатура, така и в програмен режим. 2.1. Команди за работа с работните области - отваряне и затваряне на файл за достъп, избор на работна област. --------------------------------------------------------------- Select expN | name --------------------------------------------------------------- С тази команда се определя дадена работна област за текуща. Това става или като се укаже името на областта, или като се укаже число, което е валиден номер на област. В UniBASE валидните номера на области са 1..10. Ако за номер на област се използва числото 0 UniBASE сам избира първата намерена работна област която е свободна, т.е. в нея няма отворен за достъп файл. --------------------------------------------------------------- Use filename [ Index { filename } ] [ Alias { name } ] --------------------------------------------------------------- Отваря за достъп релационната таблица във файла с указаното име. Ако е указан списък от индексни файлове, те се асоциират с базата данни, като първият от тях става водещ индексен файл. Броят на индексните файлове не трябва да е по-голям от 4. Ако е указана опцията за задаване на име, това име ще бъде присвоено на работната област. --------------------------------------------------------------- Set Index To { filename } --------------------------------------------------------------- Задава списък от индексни файлове, които да се асоциират с текущата база данни. Броят им не трябва да надвишава 4. Първият файл в списъка става водещ индекс. Това значи, че всички търсения в базата данни, както и логическата последователност на записите ще се определят от този индекс. --------------------------------------------------------------- Set Format to filename --------------------------------------------------------------- Задава форматен файл, който да се асоциира към текущата база данни за работа в интерактивен вход и изход. Предназначението на форматните файлове е описано в предишния раздел. Всяка работна област може да има по един асоцииран форматен файл, докато не се зададе друг чрез нова команда. --------------------------------------------------------------- Close Databases --------------------------------------------------------------- Затваря базите данни и асоциираните им индексни и форматни файлове от всички работни области. Избира работна област номер 1 за текуща. --------------------------------------------------------------- Close Format --------------------------------------------------------------- Прекратява използването на форматен файл към текущата база данни. В много от командите за работа с базите данни особена роля играе флагът Fields и следващите две команди: --------------------------------------------------------------- Set Fields To { field } --------------------------------------------------------------- В тази команда се изреждат в определена последователност и разделени със запетаи имената на полетата, които ще образуват маска върху работния файл. Докато съществува тази маска и флагът Fields е включен повечето от командите се държат така, сякаш текущата база данни съдържа само указаните в маската полета и в такава последователност, в каквато те са изброени в маската. При това в маската могат да се включват и полета от други бази данни, отворени за достъп в другите работни области (чрез знака "->"). Командата Set Fields to автоматично включва и флага Fields. Маската се дезактивира чрез изключване на флага, или като се укаже списък от полета, коти да участват в обработката в командите където синтаксиса позволява или просто чрез следващата команда. --------------------------------------------------------------- Clear Fields Set Fields To All --------------------------------------------------------------- Тези две команди имат почти еднакво действие. И двете команди премахват маската от полета над текущата таблица, но първата изключва флага Fields, а втората го включва. 2.2. Команди за добавяне на данни и за извеждане на данни в други файлове. --------------------------------------------------------------- Append [ Blank ] --------------------------------------------------------------- Ако е указано Blank се добавя един празен запис на края на файла - всичките му полета съдържат интервали. В противен случай се преминава към интерактивно въвеждане на записи и добавянето им към края на файла. Ако се използва форматен файл то той се изпълнява еднократно непосредствено преди изпълнението на командата, и се въвежда такава информация, каквато е указано във форматния файл с командите @ .. Get. При липса на форматен файл се въвеждат в стандартен формат на екрана всичките полета на записа от текущата база данни, или при включена маска с флага Fields - само тези полета, които са зададени с маската. Всички индексни файлове, активни по време на изпълнение на командата Append ще бъдат обновени, за да бъдат отразени новите записи. --------------------------------------------------------------- Append From filename [ Fields { field } ] [ For cond ] --------------------------------------------------------------- Копира записи от определен файл-източник в активния файл от базата данни. Записите винаги се добавят към края на работния файл. Отчита се и маската по полета, освен ако не е зададена частта Fields { field }. Ако е зададено условие с For ще бъдат добавени само записите, за които условието е изпълнено. --------------------------------------------------------------- Import From filename [ Fields { field } ] [ For cond ] [ Delimited With expC ] --------------------------------------------------------------- Работи подобно на командата Append From, но файлът източник е стандартен текстов файл. Ако е зададена частта Delimited With се счита, че полетата в текста са разделени с разделител какъвто е резултата от expC. --------------------------------------------------------------- Copy scope To filename [ Fields { field } ] --------------------------------------------------------------- Копира тези записи от работния файл, които са зададени с обхвата в база данни с указаното име. Структурата на новосъздадения файл се определя от частта Fields на командата, или ако тя не е зададена - от маската зададена с командата Set Fields, а ако флага Fields е изключен се копира структурата на работния файл. --------------------------------------------------------------- Copy Structure To filename [ Fields { field } ] --------------------------------------------------------------- Създава празна база данни. Структурата на новосъздадения файл се определя от частта Fields на командата, или ако тя не е зададена - от маската зададена с командата Set Fields, а ако флага Fields е изключен се копира структурата на работния файл. --------------------------------------------------------------- Export scope To filename [ Fields { field } ] [ Delimited With expC ] --------------------------------------------------------------- Създава текстов файл, в който се записват всички записи от текущата база данни попаднали в указания обхват. Записват се указаните полета или маската зададена с командата Set Fields, разделени с expC. Ако не е указан разделител с частта Delimited With полетата се записват в текста непосредствено едно след друго. Всеки запис се записва на отделен ред. --------------------------------------------------------------- Insert [ Blank ] [ Before ] --------------------------------------------------------------- Добавя един нов запис във файла от базата данни в текущата позиция. Клаузата Before вмъква новия запис точно пред текущия запис. Ако последният запис е 5, INSERT BEFORE ще създаде нов запис 5; старият запис 5 ще стане запис 6 и т.н. Ако клаузата Before е пропусната, новият запис се вмъква, непосредствено след текущия запис. Например, ако текущият запис е 5, Insert ще създаде нов запис 6; старият запис 6 ще стане запис 7 и т.н. Ако файлът е индексиран записът се добавя в края му; ако записът се добавя в края на файла, могат да бъдат добавени няколко записа. Ако се използва опцията Blank запис се добавя, но данни могат да бъдат въведени с командите за редактиране. Ако клаузата Blank е пропусната, Insert ще представи новия запис за въвеждане във интерактивен режим. Данни могат да бъдат въведени само в този запис. 2.3. Команди за отстраняване (изтриване) на данни. --------------------------------------------------------------- Delete scope --------------------------------------------------------------- Маркира за изтриване (премахване) всички записи от работната база данни попаднали в указания обхват. В базата данни записите се маркират за изтриване със звезда /*/ в първата позиция на записа. В тази команда подразбран обхват е само текущия запис, така че ако не е въведен обхват действието на командата се извършва само върху текущия запис. --------------------------------------------------------------- Recall scope --------------------------------------------------------------- Възстановява маркираните за изтриване записи в активния базов файл.Командата няма да възстанови записи, които са били отстранени от базата данни посредством командите Pack или Zap. Ако е включен флага Deleted , няма да бъдат възстановени записи. В тази команда подразбран обхват е само текущия запис, така че ако не е въведен обхват действието на командата се извършва само върху текущия запис. --------------------------------------------------------------- Pack --------------------------------------------------------------- Премахва записите, маркирани за изтриване, от активния файл. Всички отворени индексни файлове ще бъдат реиндексирани. Пространството върху диска, използвано от изтритите записи, ще се освободи за операционната система, когато базовият файл бъде затворен. Информацията за файла в директорията на диска може да не бъде коректна до затварянето на файла. --------------------------------------------------------------- Zap --------------------------------------------------------------- Отстранява всички записи от активната база данни. Всички отворени индексни файлове ще бъдат автоматично затворени. Еквивалентнаa е на Delete All и Pack, но работи по-бързо. 2.4. Команди за движение във файла търсене на запис по ключ и промяна на съдържанието на записите. --------------------------------------------------------------- Skip [ еxpN ] --------------------------------------------------------------- Придвижва файловия показалец напред или назад в активния файл от база данни. Ако в командата не е включен числов израз expN, файловият показалец се премества един запис напред. Ако с базата данни се използва и индексен файл, командата следва реда в индекса. --------------------------------------------------------------- Go Top --------------------------------------------------------------- Премества файловия показалец за текущ запис на първия запис във файла. Ако файлът е индексиран за първи запис се смята първият логически, т.е. записа с най-малък ключ. --------------------------------------------------------------- Go Bottom --------------------------------------------------------------- Премества файловия показалец за текущ запис на последния запис във файла. Ако файлът е индексиран за последен запис се смята последен логически, т.е. записа с най-голям ключ. --------------------------------------------------------------- Go expN --------------------------------------------------------------- Премества файловия показалец на определен от expN запис в активната база данни. --------------------------------------------------------------- Find --------------------------------------------------------------- Командата търси първия запис в индексния файл, чийто ключ съвпада с определен символен низ. Провежда много бързо търсене на записи по ключ. Ако не бъде намерен запис с ключ, съответствуващ на специфицирания символен низ, на екрана ще бъде изведено съобщението: Not Found. --------------------------------------------------------------- Locate scope --------------------------------------------------------------- Претърсва активния базов файл в зададения обхват за запис, който удовлетворява определеното в обхвата условие. Действието на командата завършва, когато или е намерен желания запис, или се е стигнало до края на обхвата. При успешно завършило търсене се извежда номера на намерения запис. --------------------------------------------------------------- Continue --------------------------------------------------------------- Възобновява търсенето, започнато от командата Locate. Continue търси следващият запис в активната база данни, който отговаря на условие, указано в последната команда Locate. Действието на командата завършва, когато намери запис, който удовлетворява определеното условие, или когато се стигне края на обхвата, дефиниран в Locate. --------------------------------------------------------------- Edit scope { field } --------------------------------------------------------------- Команда за интерактивна промяна съдържанието на данни в активния базов файл. На тази команда влияние оказват предварително зададените форматен файл и маската по полета, съгласно направените по-рано пояснения. --------------------------------------------------------------- Replace scope { field With exp } --------------------------------------------------------------- Променя съдържанието на определени полета в активния файл. Новото съдържание на тези полета е резултатът от изчислението на зададените изрази в командата. Ако е извършена промяна в индексно поле, то индексният файл трябва да бъде актуализиран с командата Reindex. 2.5. Команди за работа с индексните файлове --------------------------------------------------------------- Index On field To filename --------------------------------------------------------------- Index създава файл, в който ключово поле от базата данни е подредено по азбучен, хронологичен или числов ред. Индексният файл съдържа ключово поле и кореспондиращия номер за всеки запис от базата данни. Индексирането е винаги във възходящ ред. Записите в базовия файл не се пренареждат физически при операциите с командата Index. Максималната дължина на един индексен ключ е 15 символа. Ако е включен флага Unique и няколко записа имат едно и също значение на ключовото поле, в индекса се включва само първия намерен запис. --------------------------------------------------------------- Reindex --------------------------------------------------------------- Престроява всички активни индексни файлове. --------------------------------------------------------------- Set Order To expN --------------------------------------------------------------- Установява водещ индексен файл този, който е отворен под номер expN в списъка на индексните файлове. Занапред логическата последователност на базата данни ще се определя от този индексен файл. Ако expN е 0 то тази команда деактивира всички индексни файлове за временно, но не ги затваря. Макар и неактивни индексните файлове ще продължат да бъдат обновявани при нужда след всяка промяна в базовия файл. --------------------------------------------------------------- Close Index --------------------------------------------------------------- Затваря достъпа до всички индексни файлове на текущата база данни. При последвали промени във файла индексите няма да бъдат обновявани. 2.6. Други команди за работа с файловете. --------------------------------------------------------------- List | Display scope { field } [ To Print ] --------------------------------------------------------------- Тази команда се използува за преглед на съдържанието на базата данни в указаният обхват. Действието на командата се влияе от маската по полета, ако не е указан след обхвата списък от полета, които да се покажат. Разликата между варианта на командата с List и варианта с Display е че в първия случай не се прави паузи на всеки екран. --------------------------------------------------------------- List | Display Structure [ To Print ] --------------------------------------------------------------- Командата извежда следната информация за активната база данни: име на файла, броя на записите, последна дата, на която са правени промени, пълна дефиниция на всяко поле и общия брой на байтовете в записа. --------------------------------------------------------------- Sum scope { field } [ To { var } ] --------------------------------------------------------------- Командата Sum сумира изрази, включващи числови полета за всички или за определен набор от записи в активния базов файл. --------------------------------------------------------------- Average scope { field } [ To { var } ] --------------------------------------------------------------- Изчислява аритметичното средно на изрази, включващи числови полета от група, или от всички записи на активен базов файл. --------------------------------------------------------------- Count scope --------------------------------------------------------------- Извежда броя на записите от зададения обхват в активния базов файл, който отговаря на указано условие. --------------------------------------------------------------- Join With name To filename [ Fields { field } ] [ For cond ] --------------------------------------------------------------- Командата Join създава нова база данни чрез сливане на определени записи и полета от текущия базов файл и файла който е отворен в указаната с name работна област. Файловият показалец се позиционира на първия запис от активния файл. Всеки запис от втория файл се преценява дали удовлетворява условието в клаузата For cond. Ако определеното условия е удовлетворено, към изходния файл се добавя нов запис. Когато всички записи във втория файл са сканирани, файловият показалец се премества на втория запис в активния файл и обработката са повтаря. Това продължава докато всички записи в активния файл файл бъдат обработени. За големи файлове тази последователна обработка може да отнеме много време. Трябва да се внимава при сливането на два файла. Възможно е те да бъдат свързани така, че обектния файл да надхвърли наличното пространство върху диска. --------------------------------------------------------------- Set Relation To field Into name --------------------------------------------------------------- Командата се използва за свързване на активния базов файл с база данни, отворена в работна област която се идентифицира по име. Ако вторият файл е индексиран, то всеки път когато показателят за текущ запис на първият файл се премести, в индекса на втория файл се търси значението на полето указано с field. Ако търсенето завърши с успех, вторият файл се позиционира на записа с такова значение на ключа. При неуспех вторият файл се позиционира в началото. Ако за втория файл няма активен индексен файл, UniBASE ще приеме релационната връзка само ако полето указано с field е числово. Тогава при смяна на текущия запис в първия файл, втория автоматично ще се позиционира върху запис с номер равен на стойността на полето field. 3. Управляващи команди Тази група команди се използва за управление на програмата. Дадени са възможности за реализиране на основните управляващи структури на един език и с това да се строят програми със сложна логика. Тъй като това налага командите да не се се използват самостоятелно, а във взаимодействие с други команди, повечето от тях не са достъпни (а не са и нужни) в директен режим. --------------------------------------------------------------- If cond [ Then ] .. && команди [ Else .. ] && команди End If --------------------------------------------------------------- Това е програмна команда за условно изпълнение на команди. Тя трябва да завършва с End If. Всички команди след If се изпълняват само ако условието cond е изпълнено. Ако условието не е изпълнено, тези команди се пропускат, и ако е зададена клаузата Else се изпълняват командите след нея. Разрешено е вместването една в друга на няколко конструкции If. --------------------------------------------------------------- Do Case Case cond .. && команди Case cond .. && команди [ Otherwise .. ] && команди End Case --------------------------------------------------------------- Това е команда за избор на един вариант измежду няколко възможни. След командата Do Case в програмата следват няколко команди Case cond. UniBASE проверява верността на всяко такова условие последователно без да изпълнява останалите команди докато срещне първото изпълнено условие. След това се изпълняват всички срещнати команди до появата на нова команда Case cond или команда Otherwise, или End Case. Ако никое от условията на командите Case не е изпълнено, и е зададена клаузата Otherwise - изпълняват се всички команди от този клон на програмата. Командата винаги трябва да завърши с End Case. Разрешено е вместването една в друга на няколко конструкции Do Case. --------------------------------------------------------------- While cond Do | Do While cond .. && команди [ Loop ] [ Exit ] End While | End Do --------------------------------------------------------------- While cond Do е програмна команда, която позволява командни инструкции между нея и командата End While да бъдат повтаряни докато е удовлетворено условието cond. Тези две команди позволяват алтернативен синтаксис Do While cond и End Do. Разрешено е вместването една в друга на няколко конструкции While. Loop се използва за връщане в началото на програмна структура While. Тази команда е идентична с командата End While. Използва се обикновено да предотврати изпълнението на останалите команди в конструкцията, когато срещне някакво специално условие. Командата Exit прехвърля управлението от командата вътре в цикъла While на командата, непосредствено следваща края на цикъла. --------------------------------------------------------------- Set Procedure To filename --------------------------------------------------------------- Задава име на програмен файл в който са записани множество потребителски подпрограми. След изпълнението на тази команда всяка команда Do filename ще търси в процедурния файл процедура с име filename. --------------------------------------------------------------- Close Procedure --------------------------------------------------------------- Прекратява достъпа до процедурния файл. Нормализира действието на командата Do filename. --------------------------------------------------------------- Procedure name --------------------------------------------------------------- Procedure се използва за определяне началото на всяка подпрограма в един процедурен файл. Всяка отделна в процедура процедурния файл трябва да започва Procedure с и име на процедурата. --------------------------------------------------------------- Parameters { var } --------------------------------------------------------------- Parameters присвоява имена на локални променливи на елементи от данни,подадени от викаща програма. Parameters трябва да бъде първата изпълнима команда в получаващата програма. Подадените параметри могат да бъдат всякакви валидни изрази. Получаващият списък на параметри присвоява локални имена на променливи в списъка на параметри в изпращащата DO команда. Броят на елементите в двата списъка трябва да съвпада. Променливите се заличават, когато управлението бъде върнато на викащата програма. Ако прехвърленият параметър е работна променлива, нейната стойност може да бъде променена. Промяната ще бъде прехвърлена в променливата във викащата програма. Ако прехвърленият параметър е константа, тя ще стане работна променлива в получаващата програма. Ако прехвърленият параметър е израз, то той се изчислява. Резултатът от изчислението се прехвърля като работна променлива в приемащата програма. --------------------------------------------------------------- Return --------------------------------------------------------------- С командата Return завършва една програма, или процедура и управлението се връща на викащата програма, или на UniBASE в интерактивен режим, ако потребителя е извикал програмата директно. Освобождава всички работни променливи, определени като Private, но не влияе на тези които са Public. --------------------------------------------------------------- Private { var } --------------------------------------------------------------- Списъкът от променливи създадени с тази команда е валиден само в текущата подпрограма. След приключването и те се освобождават. --------------------------------------------------------------- Public { var } --------------------------------------------------------------- Създава глобални променливи от подпрограма. Списъкът от променливи в тази команда се запазва след приключването на подпрограмата. --------------------------------------------------------------- Do name | filename [ With { var } ] --------------------------------------------------------------- Командата предизвиква изпълнението на един програмен файл или процедура в UniBASE. Когато извиканата с командата Do подпрограма завърши, управлението се връща на викащата програма, или на клавиатурата. С клаузата With може да се зададат входни параметри за подпрограмата. Списъка на параметри може да съдържа произволни изрази на UniBASE. --------------------------------------------------------------- Cancel --------------------------------------------------------------- Прекратява изпълнението на всички командни файлове, включително прекъснатите със Suspend. --------------------------------------------------------------- Suspend --------------------------------------------------------------- Командата е основно средство за проверка на програми с цел отстраняване на грешки, даваща възможност временно да се прекъсва изпълнението на програмата, да се изпълняват инструкции от системата и след това да се продължи изпълнението на прекъсната програма с командата Resume. --------------------------------------------------------------- Resume --------------------------------------------------------------- Командата Resume се използва заедно с командата Suspend. Ако изпълнението на програмата е било временно спряно със Suspend, то може да бъде продължено с командата Resume. --------------------------------------------------------------- Retry --------------------------------------------------------------- Командата обикновено се използва когато трябва да се коригират грешки и повтаря изпълнението на командата докато завърши успешно. --------------------------------------------------------------- On Error --------------------------------------------------------------- Тази команда указва действие което трябва да се изпълни от UniBASE при възникване на грешка. Остатъка от командния ред след On Error се запазва и при грешка се интерпретира като команда на UniBASE. Ако остатъка е празен ред - "" не се изпълнява никакво действие. --------------------------------------------------------------- On Escape --------------------------------------------------------------- Тази команда указва действие което трябва да се изпълни от UniBASE при натискане на клавиш <esc>. Остатъка от командния ред след On Escape се запазва и се интерпретира като команда на UniBASE. Ако остатъка е празен ред - "" не се изпълнява никакво действие. --------------------------------------------------------------- On Key --------------------------------------------------------------- Действието на командата е подобно на командата On Escape, но се отнася за всеки натиснат клавиш. --------------------------------------------------------------- !, Run --------------------------------------------------------------- Служи за изпълнение на команди на операционната система. Остатъка от командния ред след знака "!" се предава на UniDOS за изпълнение. Съдържанието му следва да бъде само някоя от вътрешните команди на UniDOS, в противен случай не се гарантира правилното изпълнение на командата и възвръщането на управлението в среда UniBASE. 4. Други команди --------------------------------------------------------------- Quit --------------------------------------------------------------- Командата Quit затваря всички отворени файлове, приключва UniBASE и връща управлението на операционната система. Това е единственият сигурен начин за излизане от UniBASE. Реинициализиране на компютъра без излизане с Quit от UniBASE може да повреди отворените файлове и да причини загуба на данни. --------------------------------------------------------------- Help --------------------------------------------------------------- С тази команда можете да получите помощ за това как да използвате UniBASE. Това прави разучаването на системата особено лесно. Ако използвате командата Help без параметър, ще попаднете в главното меню на помощната информация, откъдето чрез последователно избиране от меню ще намерите точно тази помощна информация, която Ви интересува. Друг начин за използване на тази команда е като се въведе параметър ключова дума, с която започва команда, или име на вградена функция в UniBASE. В този случай ако за съответната дума има помощна информация, тя ще Ви бъде предоставена веднага. При използването на помощ избор от меню се прави както обикновено, с клавиш RETURN, а с клавиш PgUp можете да се върнете на предишно меню, ако има такова. С клавиш esc можете да излезете от режим помощ. --------------------------------------------------------------- Clear All --------------------------------------------------------------- Командата затваря всички отворени файлове от базата данни, освобождава всички работни променливи и избира работна област 1. --------------------------------------------------------------- Close All --------------------------------------------------------------- Затваря всички файлове от всички типове - бази данни, форматни и индексни файлове, процедурният файл и алтернативния текстов изход. ОПИСАНИЕ НА ВГРАДЕНИТЕ ФУНКЦИИ При описанието на вградените функции ще задаваме типа на параметъра на функцията (ако изобщо има параметри) с началните букви на съответния тип N за Numeric, C за Character, D за Date и L за Logical. В случаите, когато не е определен типа на параметъра ще пишем U (Undefined). По същия начин ще задаваме типа на резултата, който връща описваната функция, след знака ':'. --------------------------------------------------------------- ABS ( N ) : N --------------------------------------------------------------- Връща абсолютната стойност на израза зададен с параметъра. --------------------------------------------------------------- ASC ( C ) : N --------------------------------------------------------------- Връща кодовият номер на първият символ в параметъра съгласно кода ASCII. --------------------------------------------------------------- AT ( C, C ) : N --------------------------------------------------------------- Ако първият параметър се среща като подниз във втория, то функцията връща номера на символа от който започва първото такова появяване. В противен случай резултата е 0. --------------------------------------------------------------- BOF ( ) : L --------------------------------------------------------------- Служи за проверка дали файлът е позициониран в началото си. --------------------------------------------------------------- TYPE ( U ) : C --------------------------------------------------------------- Връща един символ, който означава типа на зададения параметър. --------------------------------------------------------------- CHR ( N ) : C --------------------------------------------------------------- Връща един символ, който има кодов номер по ASCII както стойността на параметъра. --------------------------------------------------------------- COL ( ) : N --------------------------------------------------------------- Резултата е номера на текущата колона (X-координата) на курсора върху екрана. --------------------------------------------------------------- SELECTED ( ) : N --------------------------------------------------------------- Връща номера на текущата работна област избрана с командата Select. --------------------------------------------------------------- DATE ( ) : D --------------------------------------------------------------- Връща текущата дата, така както е известна на операционната система. --------------------------------------------------------------- DAY ( D ) : N --------------------------------------------------------------- Връща деня от месеца който на датата зададена с параметъра. --------------------------------------------------------------- DBF ( ) : C --------------------------------------------------------------- Връща името на файла във който е разположена базата данни на диска. --------------------------------------------------------------- ISDELETED ( ) : L --------------------------------------------------------------- Резултата е .T. ако текущият запис на базата данни е маркиран за изтриване, .F. в обикновения случай. --------------------------------------------------------------- DISKSPACE ( ) : N --------------------------------------------------------------- Връща количеството свободна памет върху текущия диск в байтове. --------------------------------------------------------------- DOW ( D ) : N --------------------------------------------------------------- Връща деня от седмицата на датата параметър, като число от 1 до 7 за дните от понеделник до неделя. --------------------------------------------------------------- DTOC ( D ) : C --------------------------------------------------------------- Тази функция превръща стойност от тип Date в стойност от тип Character. --------------------------------------------------------------- EOF ( ) : L --------------------------------------------------------------- Тази функция отговаря дали е достигнат края на базата данни. --------------------------------------------------------------- ERRORNO ( ) : N --------------------------------------------------------------- Резултатът е номера на грешката възникнала по време на работа на системата. Тази стойност се пази до първото повикване на функцията, всяко следващо повикване на функцията преди ново възникване на грешка ще връща стойност 0. --------------------------------------------------------------- EXP ( N ) : N --------------------------------------------------------------- Изчислява и връща като резултат експонентата на параметъра. --------------------------------------------------------------- FIELD ( N ) : C --------------------------------------------------------------- Връща името на полето в текущата база данни с номер зададен от параметъра. --------------------------------------------------------------- FILE ( C ) : L --------------------------------------------------------------- Проверява дали съществува файл с указаното име. --------------------------------------------------------------- FOUND ( ) : L --------------------------------------------------------------- Тази функция връща .T. ако резултатът от последната команда от групата Find, Locate и Continue е успешен, и .F. - в противен случай или ако текущия запис на базата данни е сменен с последвала друга команда. --------------------------------------------------------------- IIF ( L, U, U ) : U --------------------------------------------------------------- Тази функция изчислява трите си параметъра без значение от какъв тип са втория и третия параметър. Ако първия параметър има стойност истина резултат от функцията е стойността на втория параметър; в противен случай резултат е стойността на третия параметър. Тъй като типа на резултата от тази функция не е предварително определен използването и в израз е невъзможно. Използвайте тази функция само като присвоявате резултата и на някоя променлива. --------------------------------------------------------------- INKEY ( ) : N --------------------------------------------------------------- Тази функция предизвиква прочитане на един символ от клавиатурата и връща като резултат неговия кодов номер. --------------------------------------------------------------- INT ( N ) : N --------------------------------------------------------------- Тази функция връща като резултат цялата част на параметъра. --------------------------------------------------------------- ISALPHA ( C ) : L --------------------------------------------------------------- Резултатът е истина ако първият символ на параметъра е буква - латиница между 'A'..'Z', 'a'..'z' или кирилица между 'А'..'Я', 'а'..'я'. --------------------------------------------------------------- ISCOLOR ( ) : L --------------------------------------------------------------- Връща дали е активен флагът Color. При активен флаг системата използва цветовете на екрана така, както са зададени от потребителя, а при изключен флаг се използват само бели символи на черен фон за нормален текст, и черни символи на бял фон за инверсен текст. --------------------------------------------------------------- ISLOWER ( C ) : L --------------------------------------------------------------- Отговаря дали първият символ на параметъра е малка буква. --------------------------------------------------------------- ISUPPER ( C ) : L --------------------------------------------------------------- Отговаря дали първият символ на параметъра е главна буква. --------------------------------------------------------------- LEFT ( C, N ) : C --------------------------------------------------------------- Тази функция връща като резултат началната част на символния си параметър, с дължина толкова символа, колкото е стойността на втория параметър или по-малко, ако първия параметър не е толкова дълъг. --------------------------------------------------------------- LEN ( C ) : N --------------------------------------------------------------- Връща дължината на символния си параметър. --------------------------------------------------------------- LOG ( N ) : N --------------------------------------------------------------- Изчислява и връща естествен логаритъм от зададено число. --------------------------------------------------------------- LOWER ( C ) : C --------------------------------------------------------------- Тази функция връща символен низ подобен на параметъра си, но в резултата всички главни букви са сменени с малки. --------------------------------------------------------------- LTRIM ( C ) : C --------------------------------------------------------------- Премахва водещите интервали в началото на параметъра ако ги има. --------------------------------------------------------------- LUPDATE ( ) : D --------------------------------------------------------------- Връща датата на последно обновяване на базата данни. --------------------------------------------------------------- MAX ( N, N ) : N --------------------------------------------------------------- Връща по-голямото от двете числа. --------------------------------------------------------------- MIN ( N, N ) : N --------------------------------------------------------------- Връща по-малкото от двете числа. --------------------------------------------------------------- MOD ( N, N ) : N --------------------------------------------------------------- Връща остатъка при деление първото число на второто. --------------------------------------------------------------- MONTH ( D ) : N --------------------------------------------------------------- Връща месеца от посочената дата. --------------------------------------------------------------- NDX ( N ) : C --------------------------------------------------------------- Параметъра трябва да е число от 1 до 4. Резултата е името на индексния файл отворен към текущата база данни под този номер, ако такъв съществува, или празен низ в противния случай. --------------------------------------------------------------- PCOL ( ) : N --------------------------------------------------------------- Връща текущата X-координата на принтера. --------------------------------------------------------------- PROW ( ) : N --------------------------------------------------------------- Връща текущата Y-координата на принтера. --------------------------------------------------------------- READKEY ( ) : N --------------------------------------------------------------- Връща число, което изразява клавиша, с който е напусната последната интерактивно редактираща команда (като Edit, Insert, Append). --------------------------------------------------------------- RECCOUNT ( ) : N --------------------------------------------------------------- Връща броя на записите в текущата база данни. При това ако флагът Deleted е включен, то маркираните за изтриване записи са видими и поради това функцията връща общия брой на записите във файла. При изключен флаг резултат от функцията е само броят на записите немаркирани за изтриване. --------------------------------------------------------------- RECNO ( ) : N --------------------------------------------------------------- Връща номера на текущия запис в базата данни. --------------------------------------------------------------- RECSIZE ( ) : N --------------------------------------------------------------- Връща размера на един запис в байтове. --------------------------------------------------------------- REPLICATE ( C, N ) : C --------------------------------------------------------------- Връща символен низ състоящ се от първият параметър повторен толкова пъти, колкото е вторият параметър. --------------------------------------------------------------- RIGHT ( C, N ) : C --------------------------------------------------------------- Тази функция връща като резултат дясната част на символния си параметър, с дължина толкова символа, колкото е стойността на втория параметър или по-малко, ако първия параметър не е толкова дълъг. --------------------------------------------------------------- ROUND ( N ) : N --------------------------------------------------------------- Връща цяло число, резултат от закръглянето на параметъра си. --------------------------------------------------------------- RTRIM ( C ) : C --------------------------------------------------------------- Премахва завършващите интервали в началото на параметъра ако ги има. --------------------------------------------------------------- SPACE ( N ) : C --------------------------------------------------------------- Връща символен низ с дължина колкото е стойността на параметъра и състоящ се само от интервали. --------------------------------------------------------------- SQRT ( N ) : N --------------------------------------------------------------- Връща квадратен корен от параметъра. --------------------------------------------------------------- STR ( N ) : C --------------------------------------------------------------- Връща символното представяне на числото - параметър. --------------------------------------------------------------- STUFF ( C, N, N, C ) : C --------------------------------------------------------------- Тази функция се използва за по-сложна обработка на символни низове. Тя "изрязва" от първия параметър от символ с номер втория параметър участък с дължина колкото е третия параметър, и вмъква на същото място четвъртия параметър. --------------------------------------------------------------- SUBSTR ( C, N, N ) : C --------------------------------------------------------------- Връща символен низ, който се състои от участък от първия параметър започващ от символ с номер като стойността на втория параметър и дължина колкото е третия параметър. --------------------------------------------------------------- TIME ( ) : C --------------------------------------------------------------- Връща текущият час, така както е известен на операционната система. --------------------------------------------------------------- TRIM ( C ) : C --------------------------------------------------------------- Премахва водещите и завършващите интервали в началото на параметъра ако ги има. --------------------------------------------------------------- UPPER ( C ) : C --------------------------------------------------------------- Тази функция връща символен низ подобен на параметъра си, но в резултата всички малки букви са сменени с главни. --------------------------------------------------------------- VAL ( C ) : N --------------------------------------------------------------- Превръща символен низ в число, ако това е възможно. В противен случай издава грешка. --------------------------------------------------------------- YEAR ( D ) : N --------------------------------------------------------------- Връща годината от датата подадена чрез параметъра.