3013
edycji
Nie podano opisu zmian |
|||
(Nie pokazano 7 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 14: | Linia 14: | ||
== Uwagi dla czytelnika == | == Uwagi dla czytelnika == | ||
Przyjmujemy, że czytelnik zna międzynarodowy język algorytmiczny ALGOL 60 w zakresie ogólnie dostępnej książki: | Przyjmujemy, że czytelnik zna międzynarodowy język algorytmiczny ALGOL 60 w zakresie ogólnie dostępnej książki: ''Język ALGOL 60'', Stefan Paszkowski, Wydanie drugie poprawione i uzupełnione, Warszawa 1968. PWN. Z tego powodu omawiamy tylko sprawy specyficzne dla konkretnej reprezentacji ALGOLu dla maszyny Mera-400. Niniejszy tekst dotyczy translatorów wersji A i B opracowanych dla minikomputera Mera 400, pracujących pod kontrolą systemu operacyjnego CROOK-4. | ||
Język ALGOL 60, Stefan Paszkowski, Wydanie drugie poprawione i uzupełnione, Warszawa 1968. PWN. | |||
== Związek ALGOLu-1204M z językiem ALGOL-60 == | == Związek ALGOLu-1204M z językiem ALGOL-60 == | ||
Linia 54: | Linia 50: | ||
== Uruchomienie translatora == | == Uruchomienie translatora == | ||
W systemie operacyjnym CROOK-4, | W systemie operacyjnym CROOK-4, translator języka ALGOL-1204M jest oddzielnym programem użytkowym. Jest on dostępny dla każdego użytkownika zadeklarowanego w systemie. W wyniku kompilacji programu napisanego w ALGOLu uzyskuje się gotowy moduł binarny do natychmiastowego uruchomienia. | ||
Proces kompilacji realizuje następujące zlecenie programu OSL: | Proces kompilacji realizuje następujące zlecenie programu OSL: | ||
Linia 60: | Linia 56: | ||
: <tt>XTA4 [,<TZ WE>] [,<TZ BIN>] [,<WO>]...</tt> | : <tt>XTA4 [,<TZ WE>] [,<TZ BIN>] [,<WO>]...</tt> | ||
Gdzie <tt><WO | Gdzie <tt><WO> = ?LIS, ?TRA, ?TPR, ?ODL, ?OML</tt> | ||
Zlecenie uruchamia translację programu napisanego w języku ALGOL-1204M. Parametr pierwszy zlecenia zawiera tytuł zbioru wejściowego z tekstem żródłowym w tym języku. Parametr drugi określa tytuł zbioru binarnego. Zbiór ten jest tworzony (jeżeli nie istnieje) przez translator, a po zakończeniu translacji jest zamykany. Taki zbiór binarny posiada typ BAL (Binary ALgol program). Parametr trzeci określa opcje przebiegu translacji. | Zlecenie uruchamia translację programu napisanego w języku ALGOL-1204M. Parametr pierwszy zlecenia zawiera tytuł zbioru wejściowego z tekstem żródłowym w tym języku. Parametr drugi określa tytuł zbioru binarnego. Zbiór ten jest tworzony (jeżeli nie istnieje) przez translator, a po zakończeniu translacji jest zamykany. Taki zbiór binarny posiada typ BAL (Binary ALgol program). Parametr trzeci określa opcje przebiegu translacji. | ||
Linia 314: | Linia 305: | ||
Podczas pracy programów użytkowych mogą zajść nieprzewidziane okoliczności (np. obliczanie pierwiastka z liczby ujemnej, brak pamięci itp.). Jeżeli wystąpi błąd w pracy programu i ten błąd zostanie wykryty przez program, wówczas na monitorze drukowany jest komunikat o tym błędzie. Po wykryciu błędu program zatrzymuje się i czeka na interwencję operatora. Istnieją możliwości wznowienia pracy programu przy pomocy zleceń "GO" oraz "SKIP". W powyższym wykazie drukowanych komunikatów jest podana przyczyna błędu oraz sposób postępowania operatora. | Podczas pracy programów użytkowych mogą zajść nieprzewidziane okoliczności (np. obliczanie pierwiastka z liczby ujemnej, brak pamięci itp.). Jeżeli wystąpi błąd w pracy programu i ten błąd zostanie wykryty przez program, wówczas na monitorze drukowany jest komunikat o tym błędzie. Po wykryciu błędu program zatrzymuje się i czeka na interwencję operatora. Istnieją możliwości wznowienia pracy programu przy pomocy zleceń "GO" oraz "SKIP". W powyższym wykazie drukowanych komunikatów jest podana przyczyna błędu oraz sposób postępowania operatora. | ||
* END - program wykonano do końca. | * <tt>END</tt> - program wykonano do końca. | ||
* ARC - błąd przy obliczeniu wartości funkcji arc sin lub arc cos. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | * <tt>ARC</tt> - błąd przy obliczeniu wartości funkcji arc sin lub arc cos. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | ||
* EXP - parametr aktualny funkcji exp ma wartość zbyt dużą. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | * <tt>EXP</tt> - parametr aktualny funkcji exp ma wartość zbyt dużą. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | ||
* EXPONENTATION - wynik potęgowania nie jest określony. | * <tt>EXPONENTATION</tt> - wynik potęgowania nie jest określony. | ||
* LN - parametr aktualny funkcji nie jest dodatni. Zlecenie "SKIP" powoduje nadanie funkcji wartości0 i kontynuowanie obliczeń. | * <tt>LN</tt> - parametr aktualny funkcji nie jest dodatni. Zlecenie "SKIP" powoduje nadanie funkcji wartości0 i kontynuowanie obliczeń. | ||
* SQRT - parametr aktualny funkcji sqrt jest ujemny. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | * <tt>SQRT</tt> - parametr aktualny funkcji sqrt jest ujemny. Zlecenie "SKIP" powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | ||
* TRIG - błąd przy obliczaniu wartości funkcji sin, cos lub tan. Zlecenie "SKIP " powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | * <tt>TRIG</tt> - błąd przy obliczaniu wartości funkcji sin, cos lub tan. Zlecenie "SKIP " powoduje nadanie funkcji wartości 0.0 i kontynuowanie obliczeń. | ||
* BOUND PAIR | * <tt>BOUND PAIR</tt> | ||
** w wykazie par granicznych granica dolna jest większa od granicy górnej | ** w wykazie par granicznych granica dolna jest większa od granicy górnej | ||
** w opisie tablic z mianem OWN wykaz par granicznych zawiera więcej niż 10 par granicznych. | ** w opisie tablic z mianem OWN wykaz par granicznych zawiera więcej niż 10 par granicznych. | ||
* FORMAT - błędne S w wykonywanej instrukcji format(s). zlecenie "GO" powoduje wykonanie na monitorze print(s) i ponowne zatrzymanie, a zlecenie "SKIP" powoduje wykonanie instrukcji format i kontynuację obliczeń. | * <tt>FORMAT</tt> - błędne S w wykonywanej instrukcji format(s). zlecenie "GO" powoduje wykonanie na monitorze print(s) i ponowne zatrzymanie, a zlecenie "SKIP" powoduje wykonanie instrukcji format i kontynuację obliczeń. | ||
* IO PARAETER - błędna wartość parametru aktualnego procedury wejścia lub wyjścia np. setinput(-1) lub outchar(120). | * <tt>IO PARAETER</tt> - błędna wartość parametru aktualnego procedury wejścia lub wyjścia np. setinput(-1) lub outchar(120). | ||
* RI CONVERSION - niewykonalna zmiana z typu {r{e{a{l na typ {i{n{t{e{g{e{r. | * <tt>RI CONVERSION</tt> - niewykonalna zmiana z typu {r{e{a{l na typ {i{n{t{e{g{e{r. | ||
* SPACE OVERFLOW - brak miejsca w pamięci (zbyt duża tablica albo zbyt wiele jednocześnie czynnych procedur). | * <tt>SPACE OVERFLOW</tt> - brak miejsca w pamięci (zbyt duża tablica albo zbyt wiele jednocześnie czynnych procedur). | ||
* SUBSCRIPT - liczba wskaźników przy zmiennej nie jest równa. | * <tt>SUBSCRIPT</tt> - liczba wskaźników przy zmiennej nie jest równa. | ||
* NUMBER - błąd w czytanej liczbie. Zlecenie "SKIP" powoduje rozpoczęcie procesu czytania liczby od początku. | * <tt>NUMBER</tt> - błąd w czytanej liczbie. Zlecenie "SKIP" powoduje rozpoczęcie procesu czytania liczby od początku. | ||
* PARAMETER LIST | * <tt>PARAMETER LIST</tt> | ||
** lista parametrów aktualnych nie jest równa liczbie parametrów formalnych; | ** lista parametrów aktualnych nie jest równa liczbie parametrów formalnych; | ||
** typ lub rodzaj parametru aktualnego nie jest zgodny ze specyfikacją odpowiedniego paraetru formalnego. | ** typ lub rodzaj parametru aktualnego nie jest zgodny ze specyfikacją odpowiedniego paraetru formalnego. | ||
* STRING - czytany łańcuch nie mieści się w tablicy. | * <tt>STRING</tt> - czytany łańcuch nie mieści się w tablicy. | ||
* TRANSLATE PROGRAM - żądanie przetłumaczenia programu. | * <tt>TRANSLATE PROGRAM</tt> - żądanie przetłumaczenia programu. | ||
* SUBSCRIPT | * <tt>SUBSCRIPT</tt> | ||
** lista wskaźników przy zmiennej nie jest równa liczbie par granicznych w opisie odpowiedniej tablicy; | ** lista wskaźników przy zmiennej nie jest równa liczbie par granicznych w opisie odpowiedniej tablicy; | ||
** wartość wskaźnika nie należy do przedziału określonego odpowiednią parą graniczną; | ** wartość wskaźnika nie należy do przedziału określonego odpowiednią parą graniczną; | ||
Linia 369: | Linia 360: | ||
Sposób kompilacji poszczególnych zbiorów: | Sposób kompilacji poszczególnych zbiorów: | ||
* Kompilacja procedury aaa w zbiorze <tt>FILE1</tt>. | |||
XTA4, FILE1, BBB,?TPR | XTA4, FILE1, BBB,?TPR | ||
* Kompilacja programu w zbiorze <tt>PROG1</tt>. | |||
XTA4, PROG1, DDD | XTA4, PROG1, DDD | ||
* Uruchomienie programu. | |||
ASS, ...... | ASS, ...... | ||
Linia 414: | Linia 405: | ||
: <tt>OPTISO,<TZ WY> [,WO ]</tt> | : <tt>OPTISO,<TZ WY> [,WO ]</tt> | ||
gdzie WO = | gdzie <tt>WO = ?OML, ?ODL</tt> | ||
Opcja '''?OML''' - zapalona określa małe i duże litery, natomiast zapalona opcja '''?ODL''' - oznacza konwersję tylko na duże litery. Standardowo wejście jest określone jako czytnik taśmy papierowej i nazwa tego urządzenia brzmi TR2. Urządzenie te musi być utworzone procedurą instalującą kompilator Algolu lub posiadać parametry PA1 i PA 2 odpowiednie. | Opcja '''?OML''' - zapalona określa małe i duże litery, natomiast zapalona opcja '''?ODL''' - oznacza konwersję tylko na duże litery. Standardowo wejście jest określone jako czytnik taśmy papierowej i nazwa tego urządzenia brzmi TR2. Urządzenie te musi być utworzone procedurą instalującą kompilator Algolu lub posiadać parametry PA1 i PA 2 odpowiednie. | ||
{{source|title=Translator języka ALGOL-1204M dla minikomputera MERA-400 w systemie operacyjnym CROOK-4 (wersja-6/A) - Translator-TA4|author=Janusz Gocałek, Jacek Klauziński, Ryszard Zenker|date=Poznań 1986}} |