MOD PROHLEDÁVÁNÍ
  Prave jsme videli, ze pomoci MM R I muzeme nechat vypsat cely
soubor.Ale kdyz je prilis dlouhy,je vyhodnejsi nechat vypsat jen
zaznamy,ktere potrebujete videt.Uvedeny mod provede pozadovany
vyber velmi rychle porovnanim vami urceneho argumentu s danym
prvkem kazdeho zaznamu.Pocet vybranych zaznamu se objevi v hla-
seni Sel=nnnnn. Aby prohledavani probihalo od zacatku souboru,
zruste pripadny predchozi vyber uzitim MM R pro nastaveni
Sel=00000. Pomoci MM S zahajte dialog pro mod prohledavani.
  Nejdriv jste vyzvani k volbe povelu A, L nebo M (vraci do MM).
A (All) prohledava vsechny dosud nevybrane zaznamy a registruje
ty, ktere koliduji s argumentem. L (sel) prohledava pouze mezi
jiz vybranymi (registrovanymi) zaznamy a porovnava dany prvek s
argumentem. Pokud behem vyberu povelem L nekoliduji vsechny
vybrane zaznamy, jejich celkovy pocet se odpovidajicim zpusobem
snizuje.
  Po stisku A nebo L jste dotazani na referenci prvku, ktery
bude porovnavan. Stisknete odpovidajici tlacitko. V pripade, ze
se rozhodnete mod prohledavani opustit, stisknete jen ENTER.
  Dalsi menu se pta, zda data maji byt zvazovana jako textova
(C) nebo ciselna (N). Ciselna data jsou normalizovana ve tvaru
nnnnnnnnnnn.nn - napr. 23,198 ("cesky") je pocitacem pojato ve
forme 00000000023.19 pro nasledujici porovnavani techto dat.
  Dalsi menu vas zada o urceni typo porovnavani. Dobrou
mnemotechnickou pomuckou je zapamatovani si slova GLUES (cesky
klihy, resp. klizi). Nezapomente, ze povel S (Scan) je funkcni
pouze pro textova data.
  Nakonec jste vyzvani k zadani argumentu, jehoz obsah bude
porovnavan s obsahy prvku predtim urcenych zvolenou referenci.
Pokud jste zadali prohledavani numerickych dat, musite rovnez
zadat numericky argument.
  Masterfile pak reaguje zmenou hlaseni Sel=nnnnn a opetnou
nabidkou menu modu prohledavani pro jeho dalsi vyuziti, resp.
zuzeni vyberu, nebo pro navrat do MM ci vstup do modu zobrazeni.
  Nyni vysvetlime blize proces porovnavani dat. Pri numerickem
jsou vyznamy povelu G,L,U a E evidentni. Ale jestlize neni urcen
prvak zaznamu pro porovnavani, tento mod kolabuje (i kdyz je
zvolen povel U (Unequal) pro vyhledani dat ruznych od zadaneho
argumentu. Kdyz proces prohledavani narazi na textova data,
zastavi se s hlasenim NON-NUMERIC DATA: SKIP (OR) UPDATE.
Zvolite-li U, prohledavani nemuze pokracovat primo. S (Skip)
preskoci prvek s nenumerickymi daty a pokracuje automaticky dal.
Pokud je v ceste numerickeho prohledavani vice textovych dat,
budete muset tisknout tlacitko S po nekolik vterin.
  Textove prohledavani je o neco slozitejsi.
  1. Pro prohledavani jsou si velka a mala pismena rovna.
  2. Kdyz je argument kratsi nez prvek zaznamu, ale vsechny
     jeho znaky koliduji s prvnimi znaky prvku, pak je prvek
     registrovan jako vybrany (napr.argument PRA zajisti vyber
     zaznamu s prvky PRAHA, Prababicka, prase, pracka - ale
     nikoli PR nebo oprava).
  3. Povel S (Scan) zaregistruje jako vybrane vsechny zaznamy,
     jejichz dane prvky obsahuji argument kdekoli uvnitr sebe.
     Tak napr. argument PRA bude kolidovat s obsahem prvku
     Naprava, dobra zprava, prase, LEPRA - ale nikoli s PR nebo
     'kopr a celer').
  Muzeme prohledat soubor i z hlediska toho, zda je ktery prvek
zaznamu prazdny nebo ne podle detekovani jeho zacatku. Prazdny
prvek zacina binarni nulou. Textove prohledavani s argumentem 0
rozdeli zaznamy na ty, ktere maji dany prvek prazdny a ty
ostatni. Pro toto prohledavani uzijte povelu L pro selekci
zaznamu s prazdnym prvkem, povelu G pro ostatni.
  Po urcite dobe budete schopni operovat v modu prohledavani bez
problemu. Vase parametry modu jsou pro vasi orientaci zobrazeny.
Mod prohledavani je dostupny i primo z modu zobrazeni, stejne
jako z MM.
  Na zaver teto kapitoly uvadime kratkou ukazku trojiteho
prohledavani, ktere si muzete vyzkouset primo na nami dodanem
cvicnem souboru. Budeme hledat vsechny zaznamy, v nichz je
uveden vydelek 'salary' v rozmezi 14000-15000 a kde 'department'
je 'admin'. Zacnete z MM.
  RSASNG14000# (vyber vsech s vydelkem 14000)
  LSNL15000#   (vyber vsech s vydelkem pod 15000)
  LDCEadm#     (vyber vsech, u nichz department zacina 'adm')
  D            (vypis vybranych zaznamu)
                          SUMA/PRUMER
  Masterfile muze vypocitat a zobrazit sumu i prumer numerickych
prvku vybranych zaznamu. Forma pojimani numerickych dat je
stejna jako u prohledavani numerickych dat. Suma je vypsana bez
prebytecnych nul na zacatku cisla. Jakakoli textova data na
ceste vypoctu zastavuji cely proces se stejnymi pozadavky reseni
jako u prohledavani. Pokud prvek v zaznamu neni obsazen, pocita
se jako roven nule. Zaporna cisla nejsou akceptovana. Jediny
nenumericky znak, ktery prichazi v uvahu, je jedna desetinna
tecka v prvku.
  Tento mod muzeme volat z MM nebo z modu zobrazeni, odkud muze
byt i vytisknut. Vysledek se vypisuje na radkach 19-21.
  Vypocet modu je mozne provadet pouze ve vztahu k jedne prave
dane referenci. Pro komplexnejsi vypocty je nutno vyuzit vasich
programovacich schopnosti v uzivatelskem Basicu.
                           STATISTIKA
  Masterfile poskytuje trvaly zakladni statisticky prehled o
sobe samem na radce 23 ve forme:
  Recs=nnnnn                Sel=nnnnn               Spa=nnnnn
  Tato radka se nevypisuje pouze behem vepisovani textu.
  Recs (Records) oznacuje pocet zaznamu v celem souboru dat.
Neobsahuje informaci o datovych nazvech a formatech zobrazeni
vypisu obsazenych v promenne F$.
  Sel (Selected) je pocet prave registrovanych zaznamu jako
vybranych podle urceneho klice pro jeich vypis na obrazovku nebo
jine operace. Uvedomte si, ze kdyz jsou zaznamy vytvareny
poprve, jsou pojimane jako vybrane (registruji se v udaji Sel).
  Spa (Space) je priblizny pocet bytu, ktere zbyvaji volne k
dispozici pro doplneni souboru. Minimalni vykyvy udaje jsou dany
pohybem zasobniku (machine stack), ale poslouzi vam jako
relativne dost presna informace o rozsahu volne pameti. Pokud by
soubor jevil tendenci prepisovat vlastni program, rozsviti se
dole na obrazovce blikajici napis FILE FULL (plny soubor).
Stiskem jakehokoli tlacitka uvolnite soubor z nejvetsiho
sevreni. Ovsem musite pocitat s tim, ze naposledy provadena
operace je bezvysledna. Rozhodne se vyplati obmenovat vas soubor
tak, aby neobsahoval nepotrebne udaje. Zamyslete se rovnez nad
tim, jak zpracovat rozsahla data do vetsiho poctu souboru, ktere
budete mit k dispozici na svem zaznamovem zarizeni (zvlaste pri
uziti Microdrivu je takove reseni efektivni). Preplneny soubor
muzete rozdelit do dvou pomoci MM P pri vymazani vzdy jedne
"pulky" a zaznamenani druhe na pasek (predtim samozrejme musite
zaznamenat soubor cely). Minimalni pocet volnych bytu, ktery
jeste zajisti uspesne provadeni ruznych operaci, je cca 500.
                       UŽIVATELSKÝ BASIC
  Ackoli Masterfile je velmi pruzny databazovy system, vse, co
dela, je zanamenani dat, jejich prohledavani a vypis. Pomoci
naprogramovani Basicu muzete zvysit schopnosti programu na
uroven datoveho procesoru (file processor). Uzivatelsky Basic
vam umoznuje rozsirit operativnost programu. Predpokladejme, ze
jste ucitel. V Masterfilu mate u kazdeho zaka uvedeny
prospechove znamky. Basicem muzete docilit rychleho vypoctu
prumerne znamky kazdeho z nich a dokonce je ucinit soucasti
zaznamu u kazdeho z nich.
  Do Basicu vstoupime pomoci MM U Y. Basic pracuje POUZE s
vybranymi zaznamy (Sel). Basic, ktery je dodavan primo s
programem, nema zadny vliv na soubor. Teprve vami naprogramovane
casti s nim budou operovat.
  Jednotlive radky Basicu plni tyto funkce:
  4900
  Na tuto radku je priveden program jen jednou, jeste predtim,
nez je provedena jakykoli operace se zaznamy. Tuto radku muzete
vyuzit pro stanoveni vychozich parametru pro operace na jinych
radkach, napr. INPUT pro vypocet financnich srazek, jako
prepinac funkci apod.
 **  Aktivovani kazde vasi casti Basicu musi byt zajisteno  **
                 zarazenim prikazu GO TO USR R
               PLATI PRO VSECHNY RADKY BASICU!!!
  5000
  Sem prichazi rizeni programu na pocatku procesu vyberu kazdeho
vybraneho zaznamu, ale jeste predtim, nez jeho data vstoupi do
zvolene operace. Sem muzete zaradit inicializaci kterehokoli
zaznamu, napr.pro vynulovani akumulatoru.
  6000
  Na tuto radku vstupuje program pri operaci s prvky vybraneho
zaznamu. Prvek je obsazen v C$, ktery je dimenzovanym znakovym
retezcem v delce 130. C$(1) obsahuje datovou referenci A-Z. C$(2
TO ) jsou data samotna, zprava vyplnena mezerami. Data muzete
prevest do jine promenne, pokud je bude chtit mit k dispozici
pro pozdejsi uziti. Radku 6000 muzete pojmout jako "pasticku" na
data.
  7000
  Pote, co vsechny prvky vybraneho zaznamu prosly radkem 6000,je
predano rizeni programu sem. Na teto radce muzete s odchycenymi
daty z radky 6000 provadet operace typicke pro datovy procesor a
pak modifikovat C$ jednim z uvedenych zpusobu:
  a) LET C$=""  (signalizace ponechani zaznamu beze zmen)
  b) LET C$="X" (nastaveni prazdneho obsahu C$(2 TO ) pro
                signalizaci toho, ze prvek, jehoz datova
                reference je 'X', ma byt vymazan, pokud je
                v zaznamu pritomen; 'X' musi byt velke
                pismeno v rozsahu A-Z)
  c) LET C$="X" a LET C$(2 TO )=data
                (signalizace toho, ze prvek, jehoz datova
                reference je 'X', ma byt vlozen (insert),
                resp.vymenen, pokud existuje; 'X' musi
                byt velke pismeno v rozsahu A-Z)
  Uvedomte si, ze na radce 7000 muzete pracovat jen s jednim
prvkem v momentu prevodu rizeni programu na tuto radku. Muzete
ovsem provadet mnohonasobne operace s ruznymi prvky zaznamu. To
ovsem vyzaduje inteligentni pripravu na radce 4900 i dalsich.
  9000
  Rizeni programu vstupuje na tuto radku po skonceni procesu
vyberu zaznamu. Odsud muzete vydavat prikazy pro tisk sum,
inicializaci pruvodnich udaju, "vypinani" povelu Masterfilu,
stanoveni signalu Beep atd.
  Poradi, v jakem prochazeji zaznamy uzivatelskym Basicem, neni
sekvencni, tedy prochazeji postupne tak, jak byly zapisovany. V
zadnem pripade nesmite zmenit dimenzi C$ a hodnoty promennych F$
a R. Budte pripraveni na relativne delsi dobu zpracovani vasim
uzivatelskym Basicem. Pri vetsim poctu zpracovavanych dat se
vyzbrojte trochou trpelivosti - jdete si udelat salek anglickeho
caje.
  Ukonceni procesu probihajicich v uzivatelskem Basicu je
signalizovano zobrazenim MM.
  Po vstuou do Basicu jej doplnte svymi prikazy a vratte se do
MM povelem GO TO 1. Vyzkousejte jeho funkci na nekolika malo
vybranych zaznamech. Pokud funguje spravne, zaznamenejta jej na
pasek pomoci MM V P pro pripadne pozdejsi uziti.
  V zaveru kapitoly se budeme zabyvat tremi kratkymi priklady
uzivatelskeho Basicu.
                           PRIKLAD 1
  V souboru udaju vztahujicich se k akciim, jsou dva prvky
zaznamu: mnozstvi akcii Q a cena jedne C. Pozadujeme vytvoreni
noveho prvku V, ktery bude obsahovat celkovou hodnotu akcii
kazdeho zaznamu, tedy nasobek Q krat C. Dale chceme, abychom
hodnotu V mohli kdykoli prepocitat znova. Reseni ulohy je velmi
jednoduche:
  4900 GO TO USR R
  5000 LET C=0: LET Q=0: GO TO USR R
  6000 IF C$(1)="Q" THEN LET Q=VAL C$(2 TO )
  6010 IF C$(1)="C" THEN LET C=VAL C$(2 TO )
  6020 GO TO USR R
  7000 LET C$="V": LET C$(2 TO )=STR$(Q*C): GO TO USR R
  Na radce nepotrebujeme provest zadnou inicializaci. Radka 5000
nastavuje obsah promennych C a Q na nulu v pripade, kdy v
zaznamu nejsou data. Radka 6000 a dalsi odchytava orvky Q a C a
prevadi je do numericke promenne tehoz jmena (ale klidne bychom
mohli pouzit jakekoli jine jmeno promenne). Radka 7000 vytvari
prvek V a vraci jej pro vlozeni nebo vymenu. Nepouzili jsme zde
vyrazu secitani retezcu (LET C$="V"+STR$...), protoze chyba v
pameti ROM obcas zavinuje vznik chybnych vysledku.
  Pokud program cestou narazi na textovy obsah v numerickem
prvku zaznamu, jeho dalsi prubeh se zastavi. Z teto nabo podobne
situace vyjdeme povelem GO TO 1.
                           PRIKLAD 2
  Vypocet hrube ceny G z ciste ceny N nasobene procenty dane VAT
(obchodni vypocet specificky pro Velkou Britanii).
  5000 GO TO USR R
  6000 IF C$(1)="N" THEN LET N=VAL C$(2 TO ):
       LET G=INT (100*N*1.15)/100
  6010 GO TO USR R
  7000 LET C$="G": LET C$(2 TO )=STR$ G: GO TO USR R
  Prepocet na radce 6000 ('INT/100') je volen proto, aby byla
zachovana pozadovana dve desetinna mista (```.pp). Ackoli jsou
vsechna data textova, uzivame opet funkce VAL a STR$.
                           PRIKLAD 3
  Kdyz vypisujeme zaznamy podle vybraneho prvku s ciselnymi
udaji, muzeme narazit na problem "chybejicich nul". Tak se napr.
zaznam s cislem 100 objevi pred zaznamem s cislem 20. Situace by
byla v poradku, pokud by v prvku s cislem 20 bylo cislo 020.
Pocet nul predstavenych pred nizsi cisla bychom meli urcit v
zavislosti na poctu mist nejvyssiho cisla. Dany problem
chybejicich nul resi nasledujici program. Predpokladejme, ze
ciselna data jsou v prvku s referenci N. Budeme generovat
mnozstvi "desitek" a prevedeme kazdy prvek N na prvek K:
  5000 GO TO USR R
  6000 IF C$(1)="N" THEN LET N=VAL C$(2 TO )
  6010 GO TO USR R
  7000 LET C$="K": LET C$(2 TO )=STR$(1000000+N): GO TO USR R
  Nyni, kdyz budeme vypisovat sekvenci podle prvku K, bude vse v
poradku. Pritom neni vubec potreba vypisovat prvky K, ani by to
nebylo vhodne.
  Jako zajimavou variaci na dane tema zkuste do zavorky na radce
7000 umistit vyraz 99999999-N. Vypis pujde od nejvyssiho cisla k
nejmensimu.
  Podobne muzete Basicem menit treba vsechny prvky vsech zazna-
mu, aniz byste je museli opravovat vepisovanim z klavesnice.
  Uzivatelsky Basic se zaznamenava na magnetofon spolecne s
celym programem ve strojovem kodu. V pripade Microdrivu se
zapisuje jen Basic. Verifikace zaznamu je v prvnim pripade
volitelna, ve druhem automaticka. Budete-li pozadovat
automaticke zavedeni verifikace i pro magnetofon, vepiste do
Basicu upravte radku 4020 takto:
  4020 SAVE C$( TO VAL "10") DATA F$(): VERIFY "" DATA F$():
       GO TO USR R
  Pred nahranim Basicu nebo souboru dat na Microdrive se napred
ujistete, ze soubor ma nejmene 600 volnych bytu (hlaseni Spa).
                        NĚKTERÉ "POUKY"
  a) Pokud si prejete uzivat vice nez 26 referenci dat, muzete
je rozsirit o dalsich 17 znaku v rozsahu od 0 do @ (zavinac):
     POKE 65534,48
  b) Pipani stisknutych tlacitek si muzete upravit dle chuti na
adrese 65535.