CSL-CROOK - Instrukcje działania na zbiorach
Przedstawione niżej instrukcje służą do przekształcania zbiorów. Przekształcanie to polega na dodawaniu lub usuwaniu grup obiektów. Dla każdej z tych instrukcji zbiory, których one dotyczą, mogą być zbiorami uporządkowanymi lub zbiorami boole'owskimi.
Instrukcja LOAD
Postać instrukcji:
- Z LOAD Z1, Z2 , ...
- LOAD Z1, Z2, ...
Gdzie:
- Z - nazwa klasy zbiorów
- Z1, Z2, ... - nazwy zbiorów należących do klasy Z.
Obydwie postacie instrukcji prowadzą do tego samego efektu. Po wykonaniu każdy ze zbiorów Z1, Z2, ... jest równy klasie Z. Obiekty klasy (zbioru) Z występują w każdym ze zbiorów Z1, Z2, ... w tym samym porządku, w jakim występują w klasie Z. Jeżeli w instrukcji występuje nazwa klasy (postać pierwsza instrukcji) to zbiory Z1, Z2, ... nie muszą należeć do tej samej klasy.
Instrukcja ZERO
Postać instrukcji jest następująca:
- ZERO Z1, Z2, Z3, ...
Gdzie:
- Z1, Z2, Z3, ... - nazwy zbiorów
Instrukcja powoduje opróżnienie wszystkich wymienionych zbiorów. (zbiory Z1, Z2, ... są puste).
Instrukcja CONVERT ... TO
Postać instrukcji jest następująca:
- CONVERT Z1 TO Z2
Gdzie:
- Z1, Z2 - nazwy zbiorów należących do tej samej klasy.
Instrukcja powoduje opróżnienie zbioru Z2 i umieszczenie wszystkich elementów zbioru Z1 w zbiorze Z2. Zbiór Z1 pozostaje niezmieniony.
Instrukcja CONVERSE
Instrukcja ma następującą postać:
- Z1 Z CONVERSE Z2
- Z1 CONVERSE Z2
Instrukcja powoduje usunięcie wszystkich obiektów ze zbioru Z1 a następnie umieszczenie w Z1 tych wszystkich obiektów klasy Z, które nie należą do zbioru Z2 zachowując przy tym porządek dla klasy. Nazwa klasy może być opuszczona i nie spowoduje to żadnej zmiany w wyniku realizacji instrukcji.
Instrukcja LOSES
Postać instrukcji jest następująca:
- Z1 LOSES Z2
Instrukcja powoduje usunięcie ze zbioru Z1 tych obiektów, które należą równocześnie do Z2. Zbiór Z2 pozostaje niezmieniony po wykonaniu instrukcji.
Instrukcja GAINS
Postać instrukcji jest następująca:
- HEAD Z1 GAINS Z2
- TAIL Z1 GAINS Z2
Instrukcja w obydwu swych postaciach powoduje dodanie do zbioru Z1 pewnych elementów zbioru Z2, które nie należały poprzednio do Z1. Zbiór Z2 pozostaje niezmieniony. Jeżeli użyte jest słowo HEAD (początek), wówczas elementy zbioru Z2 są dodawane na początku zbioru Z1. Jeżeli użyto słowa TAIL (koniec), to elementy Z2 są dodawane na końcu zbioru Z1.
Słowa HEAD oraz TAIL nie są obowiązujące. Jeżeli się je opuści, to efekt będzie taki sam jak w przypadku użycia słowa TAIL. Obiekty są dodawane do zbioru Z1 w takim porządku, w jakim występują one w zbiorze Z2.
Jeżeli Z1, Z2 są zbiorami boolowskimi to słowa HEAD i TAIL nie są w ogóle uwzględniane a dodawanie obiektów do zbioru Z1 odbywa się według zasady obowiązującej ogólnie dla tego typu zbiorów.
Ź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