CSL-CROOK - Instrukcje badania zbiorów
Instrukcje badania zbiorów mogą być stosowane zarówno do zbiorów obu typów (uporządkowanego lub boolowskiego). Efektem badania jest stwierdzenie czy fakt o którym jest mowa w treści instrukcji, ma miejsce czy nie. Jeżeli fakt taki zachodzi, to wynikiem pierwszej części instrukcji jest prawda (TRUE), w przeciwnym przypadku (FALSE). Jeżeli stwierdzono prawdę (TRUE) to odbywa się skok do instrukcji oznaczonej etykietą, która występuje jako pierwsza w części adresowej instrukcji badania. W wyniku fałszu (FALSE) następuje skok do instrukcji oznaczonej etykietą, która występuje jako druga w części adresowej.
Postać adresowa:
- E1 @
- E1 @ E2
- @ E2
Gdzie:
- E1, E2 - etykiety instrukcji należących do tego samego segmentu programu.
Pierwsza i trzecia postać instrukcji adresowej są skróconymi postaciami instrukcji. Jeżeli opuszczona jest etykieta E1 (E2), to w wypadku wystąpienia TRUE (FALSE) następuje skok do kolejnej instrukcji w programie za instrukcją, która zawiera postać adresową.
Arytmetyczne instrukcje badające
Arytmetyczne instrukcje badające mają następującą ogólną postać:
- w1 <operator relacji> w2 e1 @ e2
Gdzie:
- w1, w2 - dowolny wyrażenie tego samego typu
- e1, e2 - etykiety części adresowej.
- Operatory relacji:
- GT większy niż (>)
- GE większy lub równy (>=)
- EQ równy (=)
- NE różny (^/=)
- LE mniejszy lub równy (<=)
- LT mniejszy (<)
Jeżeli wyspecyfikowana zależność sprawdza się dla bieżących wartości dwóch wyrażeń arytmetycznych wówczas wyrażenie badające jest prawdą i następuje skok do instrukcji z etykietą e1, w przeciwnym przypadku wyrażenie badające jest fałszem i następuje skok do instrukcji z etykietą e2.
Instrukcja IN
Postać instrukcji jest następująca:
- O IN Z1 e1 @ e2
Gdzie:
- O - obiekt
- Z1 - zbiór
- e1, e2 - etykiety części adresowej
Jeżeli obiekt <o> należy do zbioru Z1 to następuje skok do etykiety e1, w przeciwnym przypadku nastąpi skok do etykiety e2.
Instrukcja NOTIN
Postać instrukcji:
- O NOTIN Z1 e1 @ e2
Jeżeli obiekt <o> nie jest elementem zbioru Z1 wówczas następuje skok do etykiety e1. Jeżeli obiekt <o> jest elementem zbioru Z2 wówczas następuje skok do etykiety e2.
Instrukcja EMPTY
Postać instrukcji:
- Z1, Z2, Z3,... EMPTY e1 @ e2
Jeżeli zbiory Z1, Z2, Z3, ... nie zawierają żadnych elementów, to nastąpi skok do instrukcji o etykiecie e1. W przeciwnym wypadku nastąpi skok do instrukcji o etykiecie e2.
Instrukcja EQUALS
Postać instrukcji:
- Z1 EQUALS Z2 e1 @ e2
Jeżeli zbiory Z1, Z2 są sobie równe w sensie Z1=Z2, to wynik badania jest TRUE. Jeżeli co najmniej jeden obiekt należy do zbioru Z1 i nie należy do zbioru Z2 lub odwrotnie to wynik badania jest FALSE. Nastąpi wtedy skok według omówionej wcześniej zasady.
Instrukcja WITHIN
Postać instrukcji:
- Z1 WITHIN Z2 e1 @ e2
Jeżeli zbiór Z2 jest podzbiorem zbioru Z1 to wynik badania jest TRUE. Natomiast jeżeli choć jeden obiekt należy do zbioru Z2 i nie należy do Z1, to wynik badania jest FALSE. Żaden ze zbiorów, niezależnie od wyniku badania, nie ulegnie zmianie. Skok następuje według ogólnych zasad.
Źródło: Translator języka CSL-CROOK dla minikomputera MERA-400 w systemie operacyjnym CROOK-4, Instrukcja Programisty (wersja-17/2), Janusz Gocałek, Jacek Klauziński, Poznań, 1985