N r 6
M iesięcznik R o k X X
Czerw iec 1985
Organ Kom itetu Inform atyki MNSZWiT oraz Komitetu Naukowo-Technicznego NOT ds. Inform atyki ;
K O L E G IU M R E D A K C Y JN E :' W'-"'
D r in ż. W a c ła w IS Z K O W S K I, m g r T e r e s a JA B Ł O Ń S K A - .( s e k r e ta r z r e d a k c ji), W ła d y s ła w K L E P A C Z , (z a stę p c a r e d a k t o r a n a c z e ln e g o ), p ro f. d r f h a b . L e o n Ł U K A S Z E W IC Z ( r e d a k to r n a c z e ln y ), m g r i aż. A n d r z e j J . P IO T R O W S K I, d r in ż.
J a n u s z Z A L E W S K I
S T A L E W S P Ó Ł P R A C U JĄ :
M gr in ż . W ito ld A B R A M O W IC Z (S z w a j
c a ria ), m g r in ż . R y s z a rd K . K O T T (W ie lk a B r y ta n ia ) , d r J a c e k O W C ZA R - CZY K , d r A n d rz e j S Z A Ł A S , m g r in ż.
T e re s a W IL C Z E K
P R Z E W O D N IC Z Ą C Y RA D Y P R O G R A M O W E J:; P ro f . d r h a b . T a d e u sz P E C H E
M a te ria łó w n ie z a m ó w io n y c h r e d a k c ja n ie z w ra c a
R e d a k c ja : 00-041 W a rsz a w a , u l. J a s n a 14/M, p o k . 243 i 244, te l. 27-71-40 lu b 26-82-61 W. 1*84
Z a k ł. G ra f. ,,T a m k a " . Z a m . 0438-1300/85.
O b j. 4,0 a r k . d r u k . N a k ła d 6100 egz. N-10.
IS S N ' 0542-9951, IN D E K S 36124
C ena e g z e m p la rz a zł 100,—
P r e n u m e r a ta ro c z n a zł 1200,—
3 WYDAWNICTWO G
N r
00-950 Warszawa skrytka pocztowa 1004
ul Biała 4
W NUMERZE: Strona
Kom putery SINCLAIRA — rachunki num eryczne w kodzie nowym
maszy Jerzy K arczm arczu k
Pakiet SIMIS dla MERY 403. 1
Marian Furman, Zbig niew M. Nowicki, J e r zy Solak 4 Język program owania C (3)
Julian W in iew ski 7
mikroKLAN 11
Jak rozszerzyć BASIC ZX SPECTRUM D oświadczenia z eksploatacji IMZ-80 Schem at ZX SPECTRUM
Polska Federacja K lubów Mikroinformatycznych A kadem ia m ikroKLANU (7). ACKERMAN Test num eryczny
i / - j Y
!
DYDAKTYKA j - i , »
:
* i ! ' ! I iN auczyciel — uqzeń — i i . 1 i
m ikrokomputer > 1 i
Emanuel Czyżo i i ; j . ■. i
i i 1
i 19
SAMOTESTY i • I !
: ;= ! !
,ii i ^
■ ! . : ‘
III/B. Metody sortowania wew nętrznego . i1 21
Z KRAJU 23
M ikrokomputery w Pałacu Młodzieży Rozproszone system y przetwarzania danych
ZE ŚWIATA 25
D yski lasesow e D yski 3M
TERMINOLOGIA 26
Problem y tworzenia term inologii
W N A JB L IŻ S Z Y C H N U M ER A C H :
• J a c e k I r l i k o k w a lif ik a c ji p r a w n e j s y s te m u k o m p u te r o w e g o
• J a n B ie le c k i o d e f in io w a n iu k o m p ila to ró w i i n s t r u k c j i s t r u k t u r a l n y c h w ję z y k u F O R T H
• Z b ig n ie w S u ra j;.o p r o b le m a c h n a u c z a n ia in f o r m a t y k i w s z k o ła c h ś r e d n ic h
• S ta n is ła w W a lig ó rs k i o ję z y k u LOGO
• W a c ła w Isz k o w s k i i P a w e ł G rz e g o rz e w ic z o s y s te m ie g e n e r o w a n ia sy s te m ó w o p e r a c y j n y c h LO G O S
• P e t e r B ro c z k o o p r o d u k c ji m ik r o k o m p u te r ó w w k r a j a c h R W PG
• C e z a ry S tę p ie ń i J a r o s ła w S z y rk o w ie c o w ie lo p o z io m o w y m s y s te m ie o p r o g ra m o w a n ia p a m ię c i k a s e to w y c h P K -1
■ ' r ł'
.!£ V ‘ "
JER ZY K A R C Z M A R C Z U K
“’' A
Instytut Fizyki
Uniwersytet JagiellońSi
i S
Kom putery S I N C L A I R A
— rachunki numeryczne w kodzie m aszynow ym
W przypadku skom plikow anych problemów, dla których czas ooliczeń jest param etrem krytycznym , mikrokomputery ZX81 i ZX SPECTRUM nie są zbyt użyteczne, jednak nawet m ały ZX81 może być niekiedy przyzwoitym narzę
dziem obliczeniowym , np. dla fizyka — jeśli om inie się czasową nieefektyw ność BASICA i skorzysta bezpośrednio z w budowanych procedur arytm etycznych. Artykuł ten jest przeznaczony dla użytkowników ZX81 i ZX SPECTRUM, którzy usiłują w ykorzystać je do celów profesjonalnycn i zależy im na przyspieszeniu obliczeń.
PROGRAMOWANIE W KODZIE MASZYNOWYM
Pisanie dużych programów w yłącznie w kodzie m aszyno
w ym jest kłopotliw e i nieopłacalne, gdyż strata ludzkiego czasu może znacznie przewyższyć oszczędność czasu m aszy
ny Takie czynności, jak w prowadzanie i drukowanie danych, rezerwacja m iejsca na tablice liczbow e itp. — najlepiej w y konywać m etodą najprostszą, tj. w BASICU, co ma doJat- Kową zaletę łatw ego przerywania programu. Nieopłacalna jest konw ersja na kod tych fragm entów programu, które stanow ią jedno (naw et duże) w yrażenie arytm etyczne za
w ierające dużo stałych liczbowych. Stałe liczbow e w pro
gram ie są kom pilow ane przez BASIC SINCLAIRA w m o
m encie wprowadzania programu. Operowanie stałym i licz
bowym i w kodzie nie jest najw ygodniejsze i zabiei-a sporo czasu.
N ajw iększy zysk czasowy jest zw iązany z m ożliwością w ykonyw ania w kodzie szybkich operacji na m ałych lic z
bach całkow itych, m ieszczących się w sprzętowych reje
strach Z80, a także — z m ożliwością om inięcia organiza
cyjnych nieefektyw ności BASICU, tj. liniowego przeszuki
w ania obszaru zm iennych przy każdym odwołaniu się do zm iennej oraz liniow ego przeszukiwania programu przy każ
dym skoku GOTO, GOSUB czy NEXT.
Program owanie obliczeń w arytm etyce zm iennopozycyjnej w kodzie na ZX81I i ZX SPECTRUM (w tym zakresie oba komputery są praw ie identycznie oprogramowane) jest złożone, ale nie jest trudne i m oże być ciekawe. Ponie
waż interpreter BASICA, oprócz operacji jaw nie nakaza
nych przez program, w ykonuje szereg obliczeń w ew nętrz
nych; np. w yw ołanie RND uruchamia podprogram realizu
jący algorytm:
SEED : = ((SEED + 1) * 75) m o d G3537 — 1 RND : = SEED/63536
— projektanci oprogramowania ZX, aby ułatw ić sobie pracę, w budow ali w interpreter niejako m aszynę w maszynie. Jest to w irtualny „kalkulator” ze stosem , m ający w łasny język z rozkazami w ykonującym i operacje arytm etyczne (w yw o
łujące funkcje wbudowane), ale także rozkazy skoków i rozkazy ułatw iające konstrukcję w łasnych funkcji zada
nych przez przybliżenia wielom ianow e.
Kalkulator operuje na kilku specyficznych strukturach da
nych, w ym ienionych poniżej.
• Stos kalkulatora. Jego adres początkowy m ieści się w zmiennej system ow ej STKBOT, a koniec, tj. adres pierw
szej wolnej komórki nad stosem — w zmiennej STKEND.
Stos ten jest zorganizowany jako zw iększająca się w górę przestrzeni adresowej tablica 5-bajtow ych elem entów zaw ie
rających liczby zm iennopozycyjne lub deskryptory ciągów znaków (napisów, ang. string). Format liczb zm iennopozy
cyjnych jest podawany w podręcznikach, warto jednak przypomnieć, że pierwszy bajt zaw iera cechę przesuniętą o 128, tj. dla cechy równej 128, wartość liczby pokrywa się z wartością m antysy mieszczącej się w czterech dalszych bajtach i ograniczonej do zakresu [1/2, 1] dla liczb dodat
nich. Pierw szy bit znorm alizowanej m antysy jest z definicji równy 1. W form acie przyjętym m.in. przez Sinclaira, bit ten jest w ykorzystany do pam iętania znaku liczby — jeśli wynosi 0, liczba jest dodatnia (oczywiście podczas w ykony
wania operacji bit ten jest w staw iany), jeśli zaś 1, to liczba jest ujemna. Deskryptor napisu ma następujący format:
pierwszy bajt informuje, czy jest to napis prosty czy tabli
ca, dwa następne zawierają adres początku napisu (lub odpowiedniego fragm entu), dwa ostatnie — długość.
© System ow a tablica stałych: 0, 1, 1/2, PI/2 oraz 10. Adres tej tablicy w ZX81 jest równy 1915, a w SPECTRUM — 32c5 (adresy i w szystkie liczby będą dalej podawane w kodzie szesnastkowym , chyba że zostanie zaznaczone ina
czej). Format liczb w tej tablicy, a także w innych stałych, o których będzie m owa, jest niestandardowy!
• Tablica pomocnicza. Jej adres początkowy jest zawarty w zmiennej system ow ej MEM. W w iększości w ypadków za
w artość MEM pokrywa się z adresem MEMBOT — 30-bito- wej tablicy system ow ej, jednak użytkownik może przypisać zm iennej MEM adres w łasnej tablicy, np. tablicy utworzonej przez program w BASICU, zapew niając w ten sposób ko
m unikację między kalkulatorem a programem w BASICU.
• Stale liczbowe. Są one um ieszczone w ew nątrz programu kalkulatora, np. jako współczynniki w ielom ianów.
® Zmienna system ow a BREG (oznaczana też BERG). Jest w ykorzystyw ana jako pomocniczy rejestr do konstrukcji pętli w kodzie kalkulatora.
Kalkulator uruchamia się rozkazem procesora Z80, RST 28 (kod EF), który przekazuje sterow anie głównej pętli k al
kulatora m ieszczącej się pod adresem 199D (ZX81) oraz 335B (SPECTRUM). Przed w yw ołaniem kalkulatora zaleca się przechowanie zawartości rejestru HL’ i odtworzenie go przed powrotem do BASICA. N ależy rów nież odtworzyć poprzed
nie wartości w przypadku przedefiniowania adresu stosu lub wartości MEM.
Po rozkazie RST 28 pisze się rozkazy w kodzie kalku
latora. N ie są one rozpoznawane przez asembler Z80, w ięc trzeba je wprowadzić num erycznie. Interpreter BASICA dość intensyw nie w ykorzystuje podprogramy kalkulatora, co powoduje, że m echaniczna deasemblacja pamięci ROM przez nieśw iadom ych program istów dostarcza niekiedy w y druków bez sensu. Powrót do norm alnego trybu, tj. kodu Z80. następuje po rozkazie kalkulatora ENDC (kod 34 dla
1
ZX81, 38 dla SPECTRUM). Kody kalkulatora są 1-bajtowe, nie licząc przesunięć dotyczących rozkazów skoku oraz w bu
dowanych w program stałych liczbowych i są traktowane (po ew entualnym przetworzeniu) jako indeksy w tablicy procedur wykonawczych. Adres tej tablicy w ynosi 1923 (ZX81) i 32D7 (SPECTRUM).
Nieco inna m nemonika niż użyta w tym artykule, w ystę
puje w książkach lana Logana pt. ZX81 i ZX SPECTRUM ROM Disassem bly, w ydaw anych od 1981 roku przez M el
bourne House.
Przez WW oznaczono liczbę lub deskryptor napisu znaj
dujący się na szczycie stosu (o adresie równym wartości STKEND-5), a przez DD — elem ent stosu leżący pod WW.
Dla operacji dw uargum entow ych (o kodach 00-17) DD i WW są traktowane jako argum enty, a wynik jest wpisyw-m y jako now e WW w miejscu poprzedniego DD, ze zm niejsze
niem STKEND o 5. Rozkazy o kodach w iększych niż 17 są jednoargum entow e i w ym ieniają poprzednie WW na nowe nie zm ieniając w artości STKEND, względnie dokładają na stos nową liczbę z tablicy stałych, z programu lub z tabli
cy MEM.
KOD ZX81 SPECTRUM Opis dla SEPCTRUM!
sk o k w z g lę d n y w a r u n k o w y , je ś li W W # 3
z a m ia n a w a rto ś c i WW z DD u s u n ię c ia W W ; p o p rz e d n ie DD s ta je się WW
o d e jm o w a n ie W W od DD m n o ż e n ie DD p rz e z WW d z ie le n ie DD p rz e z WW p o d n o sz e n ie DD do p o tę g i WW lo g ic z n e „ lu b ” ; w y n ik je s t r ó w n y 1, o ile W W # , w p rz e c iw n y m w y p a d k u — DD
lo g iczn e „ i ” d la liczb
DD m n ie jsz e lu b r ó w n e WW lic z bow o? W y n ik je s t r ó w n y 1 je śli p r a w d a , w p r z e c iw n y m w y p a d k u 0
DD w ię k sz e lu b ró w n e W W ? DD n ie ró w n e W W ?
DD w ię k sz e od W W ? DD m n ie js z e od W W?
DD ró w n e W W?
d odaw ’a n ie liczb DD i WW lo g ic z n e „ i ” ; w y n ik ie m je s t n a p is w DD je ś li lic z b a WW=£0, w p rz e c iw n y m wry p a d k u — p u s ty N a p isy w’ DD i W W są r ó w n e lu b DD p o p rz e d z a le k s y k a ln ie WW jw ., lecz DD n a s tę p u je po WW N a p isy wr DD i W W są ró ż n e ? W y n ik je s t r ó w n y 1 lu b 0 DD le k s y k a ln ie n a s tę p u je po WW DD le k s y k a ln ie p o p rz e d z a WW czy DD i W W są id e n ty c z n y m i n a p is a m i?
k o n k a te n a c ja n a p is ó w — WW d o łą c z a się do DD
w y w o ła n ie f u n k c ji w b u d o w a n e j jw ., w y w o ła n ie U SR z a r g u m e n te m z n a k o w y m (do UDG) c z y ta n ie z n a k u z ró ż n y c h s t r u m ie n i
LEN NEG z m ia n a z n a k u lic z b y n a sto sie S IN COD E w y w o ła n ie f u n k c ji w b u d o w a n e j
COS V A L jw .
T A N LEN jw .
A SN S IN jw .
ACS COS jw .
A T N T A N jw .
L N A SN jw .
E X P A CS jw .
IN T A T N jw .
SQ R L N jw .
S G N E X P jW.
A BS IN T jw .
P E E K SQ R jw .
USR S G N jw .
STR $ A BS jw .
CHRS P E E K jw .
NOT IN jw .
00 JR T R JR T R
Cl E X C II E X C II
02 DELE DELE
f 3
_ _
02 • *
05 / /
C6 ł i
07 OR OR
P8 N&N N&N
09 N < = N N < = N
0A N > = N N > - N
OB N O N N O N
OC N > N N > N
CD N < N N < N
0E N - N N - N
0F N + N N + N
10 S&N S&N
11 S < = S S < = S
12
s>=s
S > = S13
s o s s o s
14
s>s s>s
15
s<s s<s
16
s - s s=s
17
s+s s+s
18 NEG W AL$
19 CODE USRS
1A VAL R D IN
IB 1C II) 1E 1F 20
21
22
¿3 24 25 26 27 28 29 2 A 2B 2C
2D D U P L U SRN w y w o ła n ie U SR z a r g u m e n te m
lic z b o w y m
2E MODQ STR$ w y w o ła n ie f u n k c ji w b u d o w a n e j
2F JU M P CHR$ jw .
30 LDD NOT jw .
31 D JN Z D U P L p o w ie le n ie WW i p o ło ż e n ie n a
stosj ja k o n o w e WW
32 0 MODQ d z ie le n ie c a łk o w ite DD p rz e z W W ;
w y n ik j e s t u m ie sz c z o n y w W W, a r e s z ta wr DD
33 0 JU M P b e z w a ru n k o w y sk o k w z g lę d n y
34 ENDC LDD z a ła d o w a n ie n a sto s s ta łe j u ż y t
k o w n ik a
33 TRIG D JN Z z m n ie jsz e n ie BRG o 1 i s k o k ,
je ś li BREG=£0
36 T R U N 0 je d n o a r g u m e n to w e p o r ó w n a n ie :
czy W W j e s t m n ie js z e od 0?
37 O PER 0 WW w ię k s z e od z e ra ?
38 EFM T ENDC r o z k a z k o ń c z ą c y s e k w e n c ję k o d u k a lk u la to r a
33 S E R I TRIG p r z y g o to w a n ie a r g u m e n tu d la
f u n k c ji S IN i COS
3 A LDC T R U N o b c ię c ie W W do n a jb liż s z e j lic z b y c a łk o w ite j
3B STM OPER* * d y n a m ic z n a o p e r a c ja , k o d p r z e k a z a n y w r e je s tr z e B
3C LDM EFM T k o n w e r s ja z f o r m a tu x E m
3D IFM T k o n w e r s ja z f o r m a tu c a łk o w ite g o
3E* S E R I o b lic z e n ie su m y r o z w in ię c ia Cze-
b y sz e w a
3F LDC ła d o w a n ie n a sto s s ta łe j s y s te
m o w e j
40 STM p rz e s ła n ie WW do ta b lic y MEM
41 LDM ła d o w a n ie n a sto s d a n e j z MEM
PRZYKŁADOWE PROGRAMY
Przedstawiam tu przykład prostego programu obliczają
cego pierwiastek kwadratowy m etodą Newtona. Metoda ta jest znacznie szybsza niż używana przez funkcję SQR, gdzie x = j/y oblicza się jako x = e x p (l/2ł In(ny)). Podane kody dotyczą SPECTRUM. Aby przystosować ten fragm ent pro
gramu do ZX81 w ystarczy zmienić kody rozkazów DUPL, NOT, JUMP i ENDC. Założono, że w artość y jest um iesz
czona w pierwszym elem encie tablicy MEM, a w ynik — w drugim.
R o z k a z K o d
R ST 28 E F w y w o ł a n i e k a l k u l a t o r a LDC 1 A l p o c z ą t k o w a w a r t o ś ć x : 1
D U P L 31 n a s t o s i e : x , x
D U P L 31 X, X, X
LDM 0 E0 x , x , x , y
EX CH 01 • x , x , y , x
/ 05 x , x , y / x
N + N 0F x , x + y / x
LDC 2 A2 x x - f y / x , l / 2
* 04 x , ( x + y /x ) / 2
STM 1 C l p r z e s ł a n i e w y n i k u d o MEM
— 03 x — ( x + y / x ) / 2
NOT 30 j e ś l i w y n i k z e r o w y : W W : = 1
JR T R k o n 00 04 s k o ń c z i z a k o ń c z o b l i c z e n i a LDM 1 E l w p r z e c i w n y m w y p a d k u p o b i e r z
n o w e x
JU M P e t 2F F I i k o n ty n u u j ite r a c ję
ENDC 38 k o n ie c p r a c y k a lk u la to r a
k o n
Program w raz ze w stępem i zakończeniem, których celem było przekazanie danych z programu i do programu w BASICU, w ykonyw ał się tysiąc razy w pętli na SPECTRUM przez ok. 50 sekund. D la porównania, pętla w yw ołująca SQR trwa 114 sekund, a tak samo zorganizowana pętla ,.pusta”, zaw ierająca w yw ołanie nie w ykonujące żadnego podprogramu — 14 sekund. Oszczędność byłaby jeszcze większa, gdyby zam iast dzielić przez dwa w kodzie kalku
latora, po prostu zm niejszyć w ykładnik liczby o 1 w ko
dzie ¿80.
Tablica rozkazów kalkulatora oraz przykład w ym agają dokładniejszego komentarza.
2
Skok pusty jest to skok 7. przesunięciem 1, a nie 0, jak dla kodu Z80! Rozkaz JRTR usuwa WW ze stosu, a JUMP i DJNZ nie naruszają stosu.
Rozkazy SERI, LDC, STM i LDM w rzeczyw istości są kodowane inaczej niż podano w tabeli, której kody stanow ią bezpośrednie indeksy tablicy adresów. W 1-bajtowy kod rozkazu wbudowany jest parametr, np. dla obu komputerów rozkazy SERI m ają kody 86, 88 i 8C (takich używ a inter
preter BASIC 4.), odpowiadające wielom ianom 6, 8 i 12 stop
nia. Użytkownik może skonstruować w łasne rozkazy SERI — do 32 stopnia. Rozkazy LDC w ystępujące w przykładzie, o kodach AO, A1,...,A4, ładują na stos odpowiednio: 0, 1, 1/2, PI/2 oraz 10 (dziesiętnie). Rozkazy STM m ają kody CO, C l itd., a LDM — kody E0, E l itd. Maksym alny rozmiar tabli
cy MEM w ynosi 32. W przypadku w iększych tablic należy podczas pracy z kalkulatorem przesuwać zawartość MEM.
Rozkaz DJNZ jest analogiczny do odpowiedniego rozkazu m ikroprocesora Z80. Jako rejestr sterujący pętlą w ykorzy
styw ana jest zmienna BREG, do której w m om encie w yw o
łania kalkulator kopiuje zawartość rejestru B. Jeśli ch ce
my, aby kalkulator n ie zm ieniał wartości BREG, należy go w yw ołać przez CALL 19A4 dla ZX81 lub CALL 3362 dla SPECTRUM, zam iast przez RST 28.
Program kalkulatora można zakończyć rozkazem ENDC, w ykonać fragm ent programu w kodzie Z80 i wrócić do kal
kulatora nie tracąc zawartości stosu ani tablicy MEM.
Takie rozłączne fragm enty kodu kalkulatora mogą kom uni
kować się przez skoki; byle tylko w skutek błędu nie w yko
nać skoku do kodu Z80.
Rozkaz OPER jest często w ykorzystyw any przez in ter
preter BASICA. Pozw ala on w ykonać operację, której kod jest dynam icznie przekazany kalkulatorow i przez rejestr B.
Rozkaz IFMT dla SPECTRUM dokonuje konw ersji WW z dopuszczalnego na tym komputerze form atu całkowitego na zm iennopozycyjny.
Rozkaz EFMT służy do wprowadzania liczb w form acie z potęgą dziesiątki, znanym z FORTRANU jako form at E.
Fragm ent zapisu liczby przed literą E znajduje się na stosie, a potęga dziesiątki — w rejestrze A. Tę operację można wykorzystać do m nożenia liczb przez potęgę dziesiątki.
Rozkaz TRIG zm ienia argum ent na n iew ielką liczbę, dla której w ielom ianow e rozw inięcie funkcji trygonom etrycz
nych jest już w m iarę dokładne.
Program w kodzie kalkulatora m oże zaw ierać w budowane stałe liczbowe. Rozkaz LDD powoduje, że następujący po nim ciąg bajtów jest traktowany jako stała liczbowa w sp e
cjalnym , skondensow anym t e m a c ie . Jeżeli NO, NI, itd. — oznacza kolejne bajty po rozkazie LDD, to zapis NO div 40+ 1 wyznacza, ile następnych bajtów (od 1 do 4) należy do stałej. Te bajty tworzą m antysę liczby, ew entualnie uzu
pełnioną zeram i z prawej strony, a w ykładnik jest dany przez NO mod 40+50, o ile NO mod 40 jest różne od zera.
W przeciwnym wypadku w ykładnikiem jest N l+ 5 0 . Należy pamiętać, że jest to w ykładnik przesunięty. Tak w ięc dla ZX81 skondensowana postać liczby dziesięć jest równa 34 20.
Jako przykład zapiszmy fragm ent programu obliczającego wartość funkcji Gamma Eulera p x + l ) dla x od 0 do 1 przez przybliżenie w ielom ianem piątego stopnia (schematem Hornera). Wartość x jest podana w komórce MEM 0, a w y nik —• udostępniany w MEM 1.
Rozkaz Kod dla SPECTRUM LD B,05 06 05
R E S T 28 E F
LD C 1 A l J e d y n k a : z e ro w y w y ra z
LDD 34 F0 93 2A 53 9« —0.5748646
LDD 34 F0 73 84 38 DE 0.9512383
LDD 34 F0 B3 29 F 2 42 —0.6998588
LDD 34 E F 59 5F 42 85 0.4243549
LDD 34 ED CE FC A2 7C —0.1010678
LD M 0 E9 w a r to ś ć z m ie n n e j
* 04
N + N 0F
D JN Z e t 35 FC 5 p r z e b ie g ó w p ę tli
S TM 1 C l
ENDC 38
Użycie kalkulatora w yłącznie w celu obliczenia w artości takiego w yrażenia nie jest opłacalne, naw et jeśli będzie ono obliczane w iele razy, gdyż zysk czasowy (dzięki om inięciu analizatora w yrażeń w BASICU) jest zredukowany przez przetwarzanie skondensowanych stałych. W ygodniejsze dla człow ieka i nieco szybsze dla m aszyny będzie przekazanie stałych w tablicy MEM.
W obliczeniach funkcji elem entarnych wbudowanych w BASIC n ie korzysta się z rozw inięć Taylora, lecz z rozwinięć na w ielom iany Czebysżewa. Sum ow anie tych rozwinięć w y konuje się rozkazami SERI, Za rozkazem SERI znajduje się odpowiednia liczba stałych w form acie skondensow a
nym , traktowanych jako w spółczynniki rozwinięcia. A r
gum ent rozw inięcia znajduje się na stosie. Zagadnienie kon
strukcji rozwinięć na w ielom iany C zebyszewa jest jednak zbyt skom plikowane, aby je szczegółowo w yjaśnić w tym artykule.
Jak przekazywać kalkulatorowi dane z programu w BASICU i jak odbierać w yniki? Operowanie m ałym i licz
bami całkow itym i jest niew ygodne, lecz proste, gdyż można użyć instrukcji POKE w pisania do określonej komórki lub RANDOMIZE — um ieszczającej w artość argum entu w SEED. Podprogram w kodzie może tę liczbę pobrać do rejestru BC i w yw ołać procedurę o adresie 1520 (ZX81) w zględnie 2D2B (SPECTRUM), która umieszcza wartość BC na stosie w form acie zm iennopozycyjnym . Odwrotną opera
cją, tj. przesłanie WW do BC, w ykonuje procedura o adresie 158A (ZX81) lub 2DA2 (SPECTRUM). N ależy przypomnieć, że USR udostępnia program owi w BASICU w artość re
jestru BC.
Przesłanie liczb zm iennopozycyjnych jest bardziej skom plikowane. Jeden sposób polega na przekazaniu progra
m owi w kodzie m aszynow ym nazw y tablicy (razem z na
w iasem otwierającym ), którą można przygotować gdzie
k olw iek w pam ięci (chodzi o nazw ę nie o tablicę). Adres nazw y należy um ieścić w zm iennej system ow ej CELADD i w yw ołać procedurę o adresie H IC (ZX81) lub 28B2 (SPEC
TRUM), która w rejestrze HL dostarczy adresu, pod którym um ieszczony jest ostatni (dla tablic — jedyny) znak nazw y zm iennej w obszarze zm iennych. Następnie należy ominąć nagłów ek zaw ierający inform ację o w ym iarach tablicy i odpowiedni adres początku danych przekazać do MEM.
Prostszym sposobem jest w ykorzystanie zm iennej system o
wej DEST. Przykładowo — jeżeli tablica M zawiera in te
resujące nas dane, to w yw ołanie podprogramu w kodzie przez instrukcję:
L E T M (1) - U SR ...
spowoduje, że do zm iennej DEST interpreter instrukcji LET przekaże adres o 1 m niejszy niż adres M (l) i w tedy dopiero nastąpi w yw ołanie USR. Dalsze działanie przebiega podob
nie jak w m etodzie pierwszej, przy czym dla tablic zna
kowych obowiązuje nieco inna konwencja.
SPECTRUM ma jeszcze jedną m etodę, w ygodną przy d e
finiow aniu w łasnych funkcji w kodzie, które można n a
stępnie w yw ołać przez FN. Jeśli zdefiniujem y np.
D E F F N 1 (X) = U SR ...
to w m om encie wprowadzania tej definicji interpreter za
rezerwuje w programie za literą x m iejsce na w artość argumentu — 5 bajtów poprzedzone bajtem znacznika, identycznym jak dla w szystkich stałych liczbowych w pro
gramie. W m om encie w yw ołania FN f, zm ienna system ow a DEFADD będzie zawierać adres litery x , o 2 m niejszy niż adres wartości argum entu. Wartość tę m ożna pobrać, można rów nież zm ienić i przekazać z powrotem przy użyciu niezbyt czystego chwytu:
D E F F N f (X) - U SR (...) + X
Podprogram w kodzie pobiera argument, oblicza w ynik, um ieszcza w m iejsce argum entu, a przed powrotem do BASICA zeruje rejestr BC. Interpreter „nie zauw aży”, że do zera doda już zupełnie inną w artość x. Oczywiście, to x nie ma nic wspólnego z ew entualną zm ienną x.
» * •
Podana inform acja o kalkulatorze ZX jest z konieczności w yryw kow a i bardzo skondensowana. N ie są to gotowe przepisy, lecz raczej m ateriał do dalszej samodzielnej pracy.
Jej w yniki mogą się jednak bardzo opłacić. Zainteresow a
nych Czytelników proszę o listy (ul. Łokietka 19/90; 30-016 Kraków).
M A R IA N F U R M A N Z B IG N I E W M. N O W I C K I JER Z Y S O L A K
instytut Informacji Naukowej, Technicznej i Ekonomicznej W arszaw a
Celem artykułu jest przedstaw ienie m ożliwości pakietu SIMIS dla m inikom putera MERA 400. Pakiet ten został o- pracowany w Instytucie INTE w W arszawie i stanow i kon
tynuację w cześniej zrealizowanych w Instytucie przez ten sam zespół pakietów SIM-400 [4], SIM-400 M [1] i SIM - -400 R 1.3]. Ze względu na sw ą uniwersalność pakiety te znalazły szerokie zastosow anie wśród użytkow ników m a
szyn MERA 400 przy realizacji system ów w yszukiwania in formacji. Ze wzglądu na istniejące ograniczenia w zakresie pojem ności pamięci przyjęto w nich prostą strukturę zbio
rów danych o dostępie sekw encyjnym . D zięki tem u pakie
ty serii SIM-400 można było z powodzeniem w ykorzystyw ać do tworzenia i przetwarzania zbiorów danych o niezbyt w ielkich rozmiarach (rzędu kilku tysięcy dokumentów). Ko
lejne pakiety tej serii były tworzone jako rozszerzenia m o
żliw ości w ersji poprzednich. I tak, SJM-400 M dzięki wpro
wadzeniu pól num erycznych pozw alał łączyć funkcje in - form acyjno-w yszukiw aw cze SIM-400 z funkcjam i typow y
mi dla system ów przetwarzania danych, natom iast SIM - -400 R rozw ijał m ożliwości w yszukiw aw cze swoich poprzed
ników, poprzez stworzenie m ożliwości badania relacji i od
w oływ ania się do w yników w yszukiwania przy w ykonyw a
niu innych operacji. W skład pakietu SIM-400 R wchodzi konwersacyjny m oduł wyszukiwania, natom iast w szystkie pozostałe funkcje są realizow ane w sposób wsadow y.
P akiet SIMIS zachowuje w szystkie m ożliwości SIM-400 R, najbardziej rozwiniętego pakietu serii SIM-400. Aparat w y szukiw awczy pakietu SIMIS został wzbogacony o m ożliw o
ści równoczesnego odw oływania się w zapytaniu w yszuki
w aw czym do dwóch zbiorów danych. Stw arza to jakościo
wo now e m ożliwości, m iędzy innym i um ożliw ia prostą re
alizację operacji typowych dla system ów zarządzania rela
cyjnym i bazami danych takich, jak selekcja, projekcja i złą
czenie. Ponadto SIMIS został wyposażony w elastyczny aparat operowania w ielom a zbiorami danych, identyfiko
w anym i poprzez nazw y. M ożliwości te oraz przeniesiony z poprzednich pakietów tej serii aparat obsługi zapytań przed
staw ionych jako złożone w yrażenia logiczne sprawiają, że SIMIS łączy w sobie cechy w łaściw e typow ym system om inform acyjno-wyszukiw aw czym oraz system om zarządza
nia bazami danych.
OGÓLNA CHARAKTERYSTYKA PAKIETU
Baza danych SIMIS składa się ze zbiorów danych ozna
czonych unikalnym i nazwami. Zbiór danych obejm uje do
kum enty jednego rodzaju. Każdy dokument podzielony jest na pola opatrzone unikalnym i (w skali danego zbioru) ety kietam i. W szystkie dokumenty wchodzące w skład jednego zbioru m ają taką sam strukturę. Strukturę dokumentu d e
finiuje się w trakcie zakładania bazy danych, określając liczbę pól, ich etykiety oraz typy. Dopuszczalne są pola dwóch typów:
— znakowe, które mogą zawierać dowolne ciągi znaków,
— liczbowe, z których każde zawiera pojedynczą liczbę.
D ługość dokumentu nie jest stała i zależy od jego zawar
tości.
P akiet SIMIS został zrealizowany jako zespół w spółpra
cujących ze sobą m odułów programowych. Przeznaczenie poszczególnych m odułów jest następujące:
EDYTOR — zakładanie zbiorów danych i ich aktualizacja, SCALAJ — łączenie w jeden zbiór dwóch posortowanych zbiorów o podanej strukturze dokumentów,
SŁOWNIK — sporządzenie alfabetycznego wykazu słów w y stępujących w e w skazanych polach dokumentów,
INDEKS — sporządzanie alfabetycznego w ykazu deskryp- torów użytych do opisu dokumentów; z każdym deskrypto- rem jest powiązana lista num erów odpowiednich dokum en
tów,
OBLICZ — w ykonyw anie operacji arytm etycznych na po
lach liczbow ych dokumentów,
SIMIS — w yszukiw anie oraz przeglądanie, drukowanie i sortowanie zbiorów.
Pierw sze pięć m odułów służy do w sadow ego przetwarza
nia zbiorów danych. Ich funkcje oraz sposób sterowania w znacznej m ierze są takie sam e jak w przypadku noszących identyczne nazw y m odułów pakietu SIM-400 R. N ow e fun
kcje pakietu zostały zgrupowane w m odule SIMIS, który realizuje przetwarzanie danych w trybie konwersacyjnym . Wybór trybu pracy m odułów był podyktow any charakte
rem realizowanych przez n ie funkcji. Moduły realizujące funkcje w ykonyw ane stosunkowo rzadko oraz takie, które nie wym agają bezpośredniego udziału użytkow nika, zostały zrealizowane w postaci w sadow ej. W m odule konw ersacyj
nym skupiono natom iast funkcje w ykon yw ane często i te, w których w skazany jest bezpośredni udział użytkownika.
Rezultatem w yszukiw ania realizowanego w m odule SIMIS jest utw orzenie nowego zbioru dokumentów. Nazwę i strukturę tego zbioru, jak rów nież jeden bądź dwa zbio
ry w ejściow e oraz w arunek w yszukiw aw czy, określa użyt
kownik w trakcie form ułow ania zlecenia w yszukiw aw cze
go. Zbiór w yszukanych dokum entów można wyprowadzić na konsolę użytkownika. Podczas przeglądania tego zbioru można ręcznie w skazyw ać te dokumenty, które zostaną przeniesione do innego, now o tworzonego zbioru. Pozwala to w trakcie przeglądania realizow ać w yszukiw anie według kryterium, którego nie można sform alizow ać jako warunku wyszukiw aw czego. Zbiory w yszukanych dokum entów są zbiorami roboczymi, co oznacza iż z chw ilą zakończenia seansu przestają one być dostępne dla użytkow nika. Zbio
ry te można „utrwalić” za pomocą odpowiedniej dyrekty
w y, co zapew nia ich późniejsze przetwarzanie. Przykładem pomocniczych funkcji modułu SIMIS jest tworzenie zbio
rów trw ałych oraz inform ow anie o zbiorach dostępnych i o strukturze dokum entów w skazanego zbioru.
Z punktu widzenia użytkow nika najbardziej istotną funk
cją pakietu SIMIS pest w yszukiwanie, które w ym aga bliż
szego om ówienia.
MOŻLIWOŚCI WYSZUKIWAWCZE PAKIETU
W celu zlecenia operacji w yszukiwaw czej użytkownik wprowadza komendę UTWÓRZ. Przed przystąpieniem do w yszukiw ania system żąda od użytkow nika podania n ie
zbędnych danych w ejściow ych, mianowcie:
— określenie zbiorów w ejściow ych — należy podać nazwy jednego lub dwóch zbiorów podlegających przeszukiwaniu;
— określenia zbioru w ynikow ego — należy podać nazwę zbioru roboczego, w którym zostaną umieszczone w yszuka
n e dokumenty, a także strukturę dokum entów tego zbio
ru (liczbę pól oraz ich etykiety i typy) oraz sposób ich tw o
rzenia. D okum ent w ynikow y jest budowany z pól doku
m entu w ejściowego (dokumentów w ejściowych). Definiując pole dokumentu w ynikow ego użytkownik wskazuje jedno
cześnie to pole w ejściow e, którego zaw artość zostanie doń przeniesiona;
— zapytania w yszukiwaw czego — ma ono postać wyrażenia logicznego zbudowanego z relacji (operandów), operatorów logicznych (AND &, OR 4r, NOT ) oraz naw iasów . Każda z relacji zbudowana jest z etyk iety pola w ejściowego, ope
ratora relacji i wzorca. Dozwolone są operatory standardo
w ych relacji równości, m niejszości i w iększości oraz relacji złożonych z w ym ienionych relacji prostych (np. > = ) . Dla w ygody użytkow nika przyjęto, że relacje złożone mogą być oznaczane za pomocą jednego z dwóch równoważnych ope
ratorów, i tak > = oraz > = oznaczają tę samą relację. Do
puszcza się użycie relacji występow ania, oznaczanej opera
torem — ?. R elacja ta jest spełniona wówczas, gdy w e w ska
zanym polu w ystępuje ciąg znaków pokrywający się z za
danym wzorcem i rozpoczynający się od początku sło w a J).
U życie tej relacji pozwala zatem na w yszukiw anie (z m as
kowaniem sym boli z prawej strony). W szystkie w ym ienione w cześniej relacje dotyczą pełnej zawartości wskazanego pola.
W relacji jako wzorzec może zostać użyta etykieta pola w ejściow ego albo stała. Stałe znakowe ogranicza się sym bolami gwiazdki. Interpretacja relacji zależy od typu ba
danego pola i wzorca. Jeśli pole i wzorzec są typu liczbo
wego, relacja ma sens arytm etyczny. Gdy natom iast bada się pole znakowe, to relacja ma sens leksykograficzny. O- czywiście, relacji w ystępow ania można użyć jedynie w od
niesieniu do pola znakowego.
Sposób w ykonania operacji w yszukiwania zależy od tego czy w skazano jeden czy dwa zbiory w ejściow e. Jeśli w ska
zano jeden taki zbiór, to zadany w arunek bada się kolejno dla poszczególnych dokum entów tego zbioru i na podsta
w ie każdego dokumentu spełniającego to kryterium tworzy się jeden dokument w ynikow y. Gdy natom iast wskazano dw a zbiory w ejściow e, w arunek bada się dla w szystkich par dokum entów w ejściow ych, pochodzących z Tóżnych zbiorów, i dla każdej pary spełniającej ten warunek tw o
rzy się jeden dokument w ynikow y. Jeśli zatem w skazano dw a zbiory w ejściow e, to liczebność zbioru w ynikow ego może osiągnąć w artość rów ną iloczynow i liczebności zbiorów w ejściow ych. W zbiorze w ynikow ym mogą w ystąpić powtó
rzenia dokumentów. Po przejrzeniu w szystkich dokumentów w ejściowych zbiór w ynikow ych dokum entów jest poddawa
ny operacji elim inacji powtórzeń. Na zakończenie użytkow nik jest inform owany o liczebności utworzonego zbioru w y nikowego.
TRASY
ID T R A S — i d e n t y f ik a to r t r a s y
T R A S A — lis ta o d w ie d z a n y c h m ie jsc o w o śc i T R A N S — ś r o d e k t r a n s p o r t u
O P IS — s k r ó to w y o p is w y c ie c z k i, z a w ie r a ją c y m .in . o k r e ś le n ie c e lu , p r o p o n o w a n e r o z r y w k i, z a ję c ia s p o r to w e ltp .
CEN A — b a z o w a c e n a w y c ie c z k i (p o le n u m e r y c z ne)
WYCIECZKI
ID W Y C — i d e n t y f ik a to r w y c ie c z k i
ID T R A S — i d e n t y f ik a to r t r a s y (w s k a z u ją c y o d p o w ie d n i r e k o r d w z b io rz e T R A SY ) D A T W Y J — d a t a w y ja z d u
D A TPO W — d a t a p o w r o tu
U L G A — z n iż k a w z g lą d e m c e n y b a z o w e j (p o le n u m e ry c z n e )
KLIENCI
N A Z W — n a z w is k o 1 im ię k lie n ta A D R E S — p e łn y a d r e s k lie n ta
ID W Y C — i d e n t y f ik a to r w y c ie c z k i, w s k a z u ją c y o d p o w ie d n i r e k o r d w z b io rz e W Y C IE C Z K I R y s. 1. P rz y k ła d o w a b a z a d a n y c h
>) S ło w o d e f in iu je się ja k o c ią g z n a k ó w z ło ż o n y z l i t e r 1 c y f r.
O g r a n ic z n ik a m i słó w są z a te m sy m b o le s p e c ja ln e , w t y m s p a c ja . D la u m o ż liw ie n ia w y s z u k iw a n ia f r a z z b u d o w a n y c h z k i l k u słó w , d e f i n i u je się s p e c ja ln y t y p p o la , n a z y w a n y p o le m d e s k ry p to r o w y m . W ta k im p o lu o g r a n ic z n ik ie m sło w a je s t je d y n ie p r z e c in e k .
Dla zilustrowania m ożliwości w yszukiw aw czych pakietu SIMIS zostanie przedstawionych kilka przykładów dyrekty
w y UTWÓRZ. D yrektywa ta zapew nia realizację operacji typow ych dla system ów zarządzania relacyjnym i bazami danych [2]. W szystkie przykłady dotyczą działalności pew nego biura podróży, związanej z organizacją grupowych w yjazdów turystycznych [6]. Przykładow a baza danych biu
ra podróży obejm uje trzy zbiory danych, których strukturę przedstawiono na rys. 1. W szystkie pola, z w yjątkiem tych, które określono w sposób jaw ny jako num eryczne, są po
lam i znakowym i. Zbiór TRASY zawiera ogólne opisy tras w yjazdow ych proponowanych przez rozważane biuro, nato
m iast zbiór WYCIECZKI składa się z dokum entów opisują
cych w szystkie w ycieczki, jakie zostaną zorganizowane na tych trasach w danym okresie. Dokum enty w zbiorze TRASY opatrzone są unikalnym i identyfikatoram i (pole IDTRAS), to samo dotyczy dokum entów ze zbioru WYCIECZKI (iden
tyfikator IDWYC). Każdy dokument zbioru WYCIECZKI jest powiązany z dokum entem zbioru TRASY, który za
w iera ogólne dane dotyczące trasy wycieczki. N ależy zwró
cić uwagę, że kilka dokum entów z WYCIECZKI może od
w oływ ać się do tego sam ego dokumentu z TRASY, mogą to być przykładowo w ycieczki odbyw ane po tej sam ej trasie w różnych terminach. Trzeci zbiór danych KLIENCI za
w iera dane dotyczące uczestników w ycieczek organizowa
nych przez rozważane biuro podróży. Ze zrozumiałych w zględów dokumenty tego zbioru są powiązane z dokum en
tami wchodzącym i w składz bioru WYCIECZKI. Gdy ta sa
ma osoba uczestniczy w kilku w ycieczkach, w zbiorze KLIENCI tworzy się kilka dokum entów zaw ierających iden
tyczne dane personalne.
a) U TW Ó RZ
z b ió r w e jś c io w y 1: T R A S Y z b ió r w e jś c io w y 2:
z b ió r w y jś c io w y : P O C IĄ G IE M —DO—P R A G I p o la : 1
w a r u n e k : T R A S A — ? * P R A G A • & T R A N S = * P O C IĄ G ♦ b) U TW Ó RZ
z b ió r w e jś c io w y 1: T R A SY z b ió r w e jś c io w y 2:
z b ió r w y jś c io w y : T R A S Y —W Y C IE C Z E K p o la : ID T R A S , T R A S A
w a r u n e k : C) U TW Ó R Z
z b ió r w e jś c io w y 1: T R A S Y z b ió r w e jś c io w y 2: W Y C IE C Z K I
z b ió r w y jś c io w y : W Y C IE C Z K I—DO—D R E Z N A
p o la : ID W Y C, T R A S A , C E N A , U L G A , D A T W Y J, D A T P O W
w a r u n e k : 1.ID T R A S >= 2. ID T R A S & T R A S A ■=> ? * D R E Z N O •
(1) U TW Ó R Z
z b ió r w e jś c io w y 1: W Y C IE C Z K I—DO—D R E Z N A z b ió r w e jś c io w y 2: K L IE N C I
z b ió r w y jś c io w y : T U R Y Ś C I—DO—D R E Z N A p o la : N A Z W , A D R ES, D A T W Y J, D A T P O W
w a r u n e k : I.ID W Y C ■= 2. ID W Y C & D A T W Y J > ■= 840101
& D A T P O W < =■ 841231
R ys. 2. P r z y k ła d y d y r e k ty w U TW Ó R Z
Przykłady dyrektyw UTWÓRZ odnoszących się do bazy danych (przedstawione na rys. 1) podano na rys. 2. Teksty wprowadzane przez użytkow nika zostały wyróżnione przez użycie dużych liter. Pierw szy z przykładów (a) dotyczy ty powej operacji wyboru (selekcji). W yszukiwane są w szyst
k ie trasy podróży, które obejmują Pragę, a środkiem trans
portu jest pociąg. D la wykonania tej operacji potrzebny jest tylko jeden zbiór w ejściow y (zbiór TRASY). W rozważa
nym przypadku w arunek ma postać iloczynu logicznego dwóch relacji. W yniki w yszukiw ania umieszczone są w zbiorze POCIĄGIEM -DO-PRAGI. Dokum enty tego zbioru będą m iały identyczną budowę jak dokumenty pierwszego zbioru w ejściow ego, czyli zbioru TRASY. Użytkow nik po
dejm uje taką decyzję podając cyfrę 1 jako odpowiedź na zapytanie system u dotyczącego pól zbioru w yjściow ego.
Drugi przykład dyrektyw y UTWÓRZ (b) dotyczy typowej operacji rzutowania (projekcji). Podobnie jak w poprzednim przykładzie, w ykorzystyw any jest tylko jeden zbiór w ejścio
w y. W odróżnieniu od operacji wyboru, w przypadku rzu
5
tow ania nie podaje się warunku wyszukiw aw czego (ściśle, podaje się w arunek pusty, który jest zawsze spełniony). P o
w oduje to, że dokumet w ynikow y zostaje utworzony dla każdego dokumentu wejściowego. Dokum ent w ynikow y nie zaw iera w szystkich pól dokumentu w ejściowego, ale jedy
n ie wybrane z nich. W om awianym przykładzie do doku
m entu w ynikow ego przenoszone są pola IDTRAS i TRASA, przy czym etykiety ich n ie ulegają zmianie. N ależy zwrócić uwagę, że chociaż zam ierzeniem użytkow nika jest utw orze
n ie zbioru w ynikow ego zaw ierającego dane dotyczące w y łącznie przebiegu trasy, to w łącza on do dokumentu w yn i
kowego — oprócz pola TRASA — rów nież pole IDTRAS, które — jak w spom niano — jest identyfikatorem dokumen
tów w zbiorze TRASY. Zam ieszczenie tego pola zapobiega utożsamieniu w zbiorze w ynikow ym w szystkich dokum en
tów dotyczących tej samej trasy, ale pochodzących z róż
nych dokum entów w ejściow ych (opisujących podróże róż
niące się np. użytym środkiem transportu).
O czywiście, opisane w yżej operacje selekcji i projekcji można połączyć. W ówczas w dyrektyw ie UTWÓRZ w y stę puje zarówno lista pól w yjściow ych jak i w arunek w yszu kiw awczy.
Trzeci przykład (c) dotyczy bardziej złożonego działania, które jest połączeniem dwóch typow ych operacji dla syste
m ów zarządzenia relacyjnym i bazami danych: złączenia i projekcji. To działanie w ym aga w skazania dwóch zbiorów w ejściow ych, na podstaw ie których tworzony jest zbiór w y n ikow y. Niezbędne jest określenie warunku w yszu kiw aw czego, który zostanie zbadany dla każdej pary dokumentów w ejściow ych. W przykładzie w arunek ten jest spełniony, gdy oba dokumenty w ejściow e odnoszą się do tej samej tra
sy (tzn. pola IDTRAS m ają tę samą wartość w obu doku
mentach) oraz trasa ta obejm uje Drezno. Trzeba zwrócić uwagę, że pola w ejściow e o tych sam ych etykietach są roz
różniane przez użycie etyk iet kw alifikow anych, tj. etykiet poprzedzonych identyfikatorem zbioru w ejściow ego 1. lub 2.). W rozważanym przykładzie do dokumentu w ynikow ego są kopiow ane pola TRASA i CENA, ze zbioru TRASY, oraz pola IDWYC, ULGA, DATWYJ i DATPOW — z drugiego zbioru w ejściow ego (WYCIECZKI).
O czyw iście w arunek logiczny dotyczący dwóch zbiorów w ejściow ych może być bardziej złożony od rozważanego po
w yżej, co pozw ala na obsługę bardziej skom plikow anych zapytań W yszukiwawczych. Na przykład, zastąpienie w a runku podanego w punkcie c warunkiem:
(TRASA = ? * DREZNO * # TRASA ,= ? * LIPSK *) & 1.
IDTRAS = 2. IDTRAS & DATW YJ = > ' 85061 & DATPOW
< = 850930 & CENA < = 15000
spowoduje w yszukiw anie danych dotyczących w ycieczek do Drezna lub Lipska latem 1985 roku, których cena nie prze
kracza 15 tys. zł. N ależy zwrócić uw agę, że zastosowany sposób zapisu dat um ożliw ia ich bezpośrednie porów nyw a
n ie (daty późniejsze są zarazem „w iększe” leksykograficz- nie).
Dla w ykonania operacji angażującej w ięcej n iż dw a zbio
ry w ejściow e należy posłużyć się kilkoma dyrektywam i UTWÓRZ, z których każda (z w yjątk iem pierw szej) używa jako zbioru w ejściowego zbioru utworzonego w rezultacie wykonania jednej z poprzednich dyrektyw. Dla ilustracji tej techniki rozważone zostanie zadanie polegające na w y szukaniu danych o w szystkich klientach, którzy uczestni
czyli w wycieczkach do Drezna w 1984 roku. Łatwo zauwa
żyć, że dla realizacji tego zadania należy posłużyć się da
nym i z trzech zbiorów. Trzeba w tym celu użyć dwóch d yrektyw UTWÓRZ. Jednym z m ożliwych rozwiązali jest podanie dyrektyw przedstawionych w przykładzie pod lite
rami c i d. Pierwsza z tych dyrek tyw 20stała uprzednio o- m ówiona. Druga dyrektyw a zapew nia powiązanie odpow ia- dajacvch sobie dokum entów ze zbiorów WYCIECZKI DO -DR EZN A i KLIENCI oraz w ybranie tych, które dotyczą w ycieczek odbytych w 1984 roku.
• * *
Z przedstawionego opisu wynika, że pakiet SIM IS dys
ponuje prostym i w ygodnym w obsłudze aparatem w yszu kiw awczym , zapew niającym realizację operacji typowych dla system ów zarządzania relacyjnym i bazam i danych. Ist
n ieje rów nież m ożliwość form ułow ania zapytań w yszuki-
w aw czych w postaci złożonych w yrażeń logicznych zaw ie
rających relacje, co jest cechą charakterystyczną typowych system ów inform acyjno-wyszukiw aw czych. SIMIS odznacza się rów nież w ielom a innym i m ożliwościam i, istotnym i z punktu widzenia rozm aitych zastosowań. D la przykładu m ożna w ym ienić w ykonyw anie obliczeń z użyciem pól licz
bowych. U żytkow nik dysponuje bardzo w ygodnym i sil
nym aparatem definiow ania tych obliczeń w postaci progra
mu złożonego z instrukcji podstawienia, warunku oraz skoku.
Przedstawione w artykule przykłady dotyczyły zastoso
wania pakietu SIMIS w działalności biura podróży. Zakres m ożliwości stosow ania tego pakietu jest bardzo szeroki. Do podstawowego obszaru zastosowań należy działalność ośrod- ków informacji i bibliotek [5]. jednakże pakiet SIMIS m o
że być użyty z powodzeniem rów nież do prowadzenia ew i
dencji kadr, wspom agania działalności niew ielkich zespołów badawczych lub autom atyzacji rachunkowości.
D ostępna aktualnie pierwsza w ersja pakietu SIMIS ko
rzysta ze standardowego oprogram owania obsługi zbiorów dyskow ych (pakiet File M aintenance Control) w ramach system u operacyjnego SOM-3. Przygotow anie dysków do u- życia w SIMIS jest bardzo proste i polega na utworzeniu na pakiecie dyskowym sekcji oznaczonych ustalonym hasłem dostępu (standardowo jest to hasło SIMIS). Pakiet SIMIS poszukuje zbiorów danych w tych w łaśn ie sekcjach i za
pew nia dostęp do zbiorów o podanej nazwie. W ten sposób użytkow nik został uw olniony od żm udnych czynności dołą
czania zbiorów danych do strum ieni system u operacyjnego, co zw ykle było czynnością w ym agającą znajomości tego sys
temu oraz źródłem w ielu pomyłek.
Plany rozw ojow e pakietu SIMIS obejmują m.in. w łącze
nie bardziej rozbudowanej kontroli poprawności dokumen
tów wprowadzanych do bazy danych. Celowe -wydaje się rów nież zdefiniow anie nowego typu pola, tzw. pola atrybu
towego, przeznaczonego do przechow yw ania pojedynczej wartości z określonego zbioru (przykładem pól tego typu są pola TRANS, IDTRAS i IDWYC oraz DATWYJ i DATPOW z rys. 1). Szczególnym przypadkiem pola atrybutowego by
łoby pole num eryczne.
Realizacja planów rozwojowych pakietu SIMIS zależy w dużej m ierze od zapotrzebowania ze strony jego użytkow ni
ków. Osoby zainteresowane w ykorzystaniem tego pakietu m ogą otrzymać w szelkie informacje na ten tem at u auto
rów artykułu.
L IT E R A T U R A
[1] B a ń k o w s k i J . i in n i: U n iw e r s a ln y p a k ie t p r z e tw a r z a n ia i w y s z u k iw a n ia in f o r m a c ji d la M E R Y 400. IN F O R M A T Y K A , 9, 1980, s tr.
15—17.
[2] D a te C. J . : W p ro w a d z e n ie do b a z d a n y c h . W N T , W a rs z a w a , 1981.
[3] F u r m a n M. i in n i: R o z sz e rz e n ia p a k ie tu in f o r m a c y jn o - w y s z u - k iw a w c z e g o SIM-400M. IN F O R M A T Y K A , 5, 1983, s tr . 24—26.
14] N o w ic k i Z .: C o m p u te r is e d i n f o r m a tio n s e rv ic e : M in ic o m p u te r A p p lic a tio n . I n t . F o r u m I n f . D oc., 2, 1981, s i r . 25—27.
[5] N o w ic k i Z., S o la k J . : O b s lu z iv a n ie k o m p le k s n y c h i n f o r m a e jo n - n y c h z a p r o s o v v r e i l m i e o n - la jn s is p o lz o w a n ie m m in i-e v m . K o n f.
B a z y d a n y c h v s e tia e h e v m . M C N T I, M o sk w a 1984, s tr . 213—218.
[Si N o w ic k i Z., S o la k J . : O ffic e a u to m a tio n w ith th e m in ic o m p u te r s y s te m S IM IS . P r o c . o f I n t. S y m p . „ N e tw o r k in O ffic e A u to m a tio n ” , N o r th - H o lla n d (w d r u k u ) .
Ogłoszenia • Ogłoszenia • Ogłoszenia ® Ogłoszenia
Michał Chorosiucha poszukuje MACRO-8000 oraz innego o - program owania Z-8000. W arszawa, teł. 10-26-68.
EOI923IKI85