CSL-CROOK - Uruchamianie programów binarnych

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Gotowe programy binarne są uruchamiane przez podanie nazwy. Jeżeli program współpracuje ze zbiorami danych lub wyników, to należy wykonać następujące operacje:

  • zbiory przeznaczone na wyniki winny być przed uruchomieniem programu otwarte zleceniem Języka Operatora CRF;
  • zbiory wyników i danych współpracujących z programem muszą być następnie przywiązane zleceniem Języka Operatora ASS do odpowiednich (użytych w programie) numerów strumieni;
  • numery strumieni użyte w zleceniu ASS muszą odpowiadać odpowiednim numerom strumieni użytych w instrukcjach READ i WRITE;

Jeżeli program współpracuje z monitorem (tzn część wyników, komunikaty są drukowane na monitorze) to istnieje możliwość zapisania ich do zbioru. Tworzony jest wtedy tzw zbiór monitorowania. Służy do tego zlecenie Języka Operatora OUT, użyte bezpośrednio przed uruchomieniem programu.

Programy binarne w języku CSL mogą mieć maksymalną wielkość do 64K słów. Natomiast największa deklarowana tablica nie może być większa jak 32K. Programy kończą się komunikatem STOP lub PAUSE. Liczba wydrukowana wraz z tymi instrukcjami określa numer tych instrukcji w programie. Jeżeli instrukcja STOP w programie występuje bez numeru to wydrukowana liczba jest równa zero (0). Wtedy usuwany jest obraz pamięci programu (zbiór specjalny). Jeżeli liczba występuje i jest mniejsza lub równa 100 to program kończy się komunikatem STOP oraz podany jest numer stopu (liczba). Pozostaje obraz programu (zbiór specjalny) a R4 zawiera numer stopu programu. Taki stan programu daje możliwość testowania sposobu zakończenia programu w makrozleceniach. Użyta w programie instrukcja STOP z numerem za instrukcją, większym od liczby 100, spowoduje zakończenie programu bez komunikatu (wydruku instrukcji STOP 101) i przejście do Języka Operatora OSL. Użycie instrukcji STOP z numerem większym od 100 najlepiej stosować dla programów, które będą się wykonywały w tle. (będą uruchomione jako następne zadanie z monitora użytkownika). Jeżeli program zatrzyma się instrukcją PAUSE (jest to sygnalizowane komunikatem PAUSE <numer>) to zawsze pozostaje zbiór specjalny i istnieje możliwość ponownego uruchomienia (od miejsca zatrzymania) programu zleceniem OSL-a RS <nazwa programu>. Po zakończeniu programu instrukcją STOP lub chwilowym zatrzymaniu instrukcją PAUSE, rejestr maszyny R4 zawiera numer instrukcji STOP lub PAUSE. Natomiast gdy program kończy się błędem, to numer błędu znajduje się również w R4. Taki stan rejestru R4 po zakończeniu każdego programu fortranowskiego umożliwia badanie stanu zakończenia programów przy budowaniu makrozleceń Języka Operatora.

Przykłady:

CRF, WYNIKI,100
CRF, WYN2
ASS,1, DANE1
ASS,2, DANE2
ASS,5, WYNIKI
ASS,6, WYN2
OUT, FILMON
BINPROG

Przykład makroinstrukcji, która uruchamia program w języku CSL. Program ten kończy swoją pracę instrukcjami STOP 1, STOP 2, STOP 3. Badany jest rejestr R4 i w zależności jaki numer STOPU pojawi się w R4 będzie wywoływany określony przez parametry inny program.

Przykład:

RUNBIN,,,,,,,
ASS,1,$A
ASS,2,$B
$D
ASS,1,$B
ASS,2,$C
WHEN VAL=1 TRANSF ETA
WHEN VAL=2 TRANSF ETB
WHEN VAL=3 TRANSF ETC
END 0
ETA:$E
TRANSF ETF
ETB:$F
TRANSF ETF
ETC:$G
ETF: LIST,$C, LP2
END 0
$$END

Standardowo programy binarne nie sygnalizują błędu jeżeli wystąpi podmiar. Do obliczeń przyjęta jest wtedy wartość zero. Istnieje możliwość generowania błędu jeżeli wystąpi podmiar. Należy wtedy do komórki 3 programu binarnego wpisać programem DEBU następującą wartość -1 (standardowo jest wartość 0). Od tego momentu program będzie sygnalizował błąd podmiaru ES 05. Zmianę tego typu można dokonać, wywołując makrozlecenie UNDERF, które automatycznie zmienia zawartość tej komórki. Makrozlecenie UNDERF posiada jeden parametr: Tytuł zbioru.

Ź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