CROOK-5 - Opis użytkowy programu ODZ
Program ODZ służy do odzyskiwania zbiorów znakowych z dysków, na których zostały zniszczone słowniki tak, że niemożliwy jest dostęp do zbiorów pod systemem CROOK-5. Program ODZ przegląda cały dysk, sektor po sektorze, i wyprowadza informacje o jego zawartości. Program stara się odnależć na podstawie odczytanej z dysku informacji początki zbiorów znakowych. Sektory zawierające słowa mające zera na bitach 0 i 8 uważa program za zawierające informację znakową w kodzie ISO-7. Za początek zbioru znakowego jest uznawany sektor zawierający informację znakową i zaczynający się od znaku o kodzie 012 (LINE FEED). Koniec zbioru jest sygnalizowany, gdy po ciągu sektorów znakowych zostanie odczytany sektor zawierający informację nieznakową. Ponieważ zbiory znakowe mogą być zapisane na dysku bezpośrednio jeden za drugim (bez rozdzielenia sektorami nieznakowymi), częste jest sygnalizowanie początku nowego zbioru znakowego bez uprzedniej sygnalizacji końca poprzedniego zbioru znakowego. Możliwe jest także, że za początek następnego zbioru znakowego zostanie uznany sektor stanowiący dalszą część zbioru znakowego. Określenie właściwego końca zbioru należy do użytkownika. Program ODZ można wykonywać w trybie niekonwersacyjnym - wyprowadzając informację o zawartości dysku do wskazanego zbioru, lub konwersacyjnym - informacje o zawartości dysku są wtedy wyprowadzane na koćówkę. W trybie konwersacyjnym użytkownik może dowolnie ustalać, jaki obszar dysku ma być przeszukiwany, i może zlecać przepisywanie wskazanych zbiorow na inny dysk. Program jest wywoływany w następujący sposób:
- ODZ <nazwa_dysku>[,<nazwa_zb_wy>][,<nr_sektora>]
- <nazwa_dysku> - nazwa dysku lub numer porządkowy w tablicy konfiguracji
- <nazwa_zb_wy> - nazwa zbioru, do którego będzie wyprowadzana informacja o zawartośći dysku; gdy nie jest podana, program będzie pracował w trybie konwersacyjnym
- <nr_sektora> - numer sektora, od którego program będzie przeszukiwał dysk;gdy nie jest podany, dysk będzie czytany od zerowego sektora
Znalezienie początku zbioru znakowego jest sygnalizowane komunikatem:
*******POCZATEK ZBIORU ZNAKOWEGO - SEKTOR : <numer_sektora>
Po czym wyprowadzne są dwa pierwsze wiersze zbioru. Koniec zbioru znakowego jest sygnalizowany komunikatem:
%%%%%%%%KONIEC ZBIORU ZNAKOWEGO - SEKTOR : <numer_sektora>
<numer_sektora> jest to numer (adres dyskowy) pierwszego sektora zawierającego informację nieznakową. Gdy program ODZ pracuje w trybie konwersacyjnym, wtedy po każdym komunikacie o początku zbioru można wprowadzić dyrektywę sterującą dalszym przeszukiwaniem. Dyrektywy umożliwiają następujące działania:
OS
- Zakończenie działania programu
TT
- Szukanie początku następnego zbioru
DI [<liczba_wierszy>]
- Wyprowadzenie wskazanej liczby kolejnych wierszy zbioru ;gdy nie jest podana liczba wierszy, wyprowadzany jest jeden wiersz
NS <numer_sektora>
- Przeszukiwanie dysku począwszy od wskazanego sektora
WF [<nazwa_zbioru>]
- Przepisanie do wskazanego zbioru wszystkich sektorów począwszy od wskazanego w ostatnim komunikacie aż do napotkania końca zbioru znakowego lub początku następnego zbioru znakowego(bez sektora wskazanego następnym komunikatem);gdy nie jest podana nazwa zbioru, kolejne sektory będą dopisywane do ostatnio wskazanego, ale jeszcze nie zamkniętego zbioru. Zbiór wyjściowy jest zamykany w jednym z następujacych przypadków:
- napotkanie końca zbioru znakowego
- wprowadzenie jednej z dyrektyw: TT, NS, OS
- otwarcie nowego zbioru dyrektywą WF.
- Przepisanie do wskazanego zbioru wszystkich sektorów począwszy od wskazanego w ostatnim komunikacie aż do napotkania końca zbioru znakowego lub początku następnego zbioru znakowego(bez sektora wskazanego następnym komunikatem);gdy nie jest podana nazwa zbioru, kolejne sektory będą dopisywane do ostatnio wskazanego, ale jeszcze nie zamkniętego zbioru. Zbiór wyjściowy jest zamykany w jednym z następujacych przypadków:
Zbiory zapisane dyrektywami WF mają zapisany tylko jeden parametr - dlugość zbioru w sektorach. Znacznik końca zbioru powinien być ustawiony przez użytkownika za pomocą programu EDIT. Gdy w trakcie czytania z dysku zostanie napotkany błąd odczytu uniemożliwiajacy przeczytanie sektora, wyprowadzany jest komunikat:
####### BLAD ODCZYTU <numer_alarmu>-SEKTOR: <numer_sektora>
<numer_alarmu> - numer alarmu systemowego, który wystąpił przy próbie odczytu wskazanego sektora.
Po wyprowadzeniu komunikatu o błedzie program ODZ kontynuuje wykonywanie dyrektywy. Po odczytaniu ostatniego sektora z dysku, program ODZ wykonywany w trybie konwersacyjnym wyprowadza komunikat:
$$$$$$$$$$$$$$$$ KONIEC DYSKU
i zgłasza się w oczekiwaniu na następną dyrektywę. Program wykonywany w trybie niekonwersacyjnym po przeczytaniu ostatniego sektora jest usuwany.
Źródło: SYSTEM OPERACYJNY CROOK-5 dla minikomputera MERA-400 (wersja 7), Zbigniew Czerniak, Marek Nikodemski, Gdańsk 1988