EXM: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Dodane 761 bajtów ,  8 cze 2018
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
 
Linia 637: Linia 637:
* NLI - obszar jest wyprowadzany bez zatrzymania wydruków  
* NLI - obszar jest wyprowadzany bez zatrzymania wydruków  
* LIN - wydruk jest zatrzymywany po zapełnieniu całego ekranu. Wykonywanie zlecenia po wprowadzeniu:
* LIN - wydruk jest zatrzymywany po zapełnieniu całego ekranu. Wykonywanie zlecenia po wprowadzeniu:
** cr - jest wznawiane
** '''cr''' - jest wznawiane
**dc4 - jest kończone
** '''dc4''' - jest kończone
* LIN=<liczba> - ustawienie długości ekranu
* LIN=<liczba> - ustawienie długości ekranu


Linia 655: Linia 655:
Działanie: na monitor jest wyprowadzany obszar określony przez wyrażenie adresowe i instrukcję Z. Długość tego obszaru jest określona przez podaną liczbę lub, gdy nie jest ona podana, przez wartość opcji 'Zwindow' (standardowo 7):
Działanie: na monitor jest wyprowadzany obszar określony przez wyrażenie adresowe i instrukcję Z. Długość tego obszaru jest określona przez podaną liczbę lub, gdy nie jest ona podana, przez wartość opcji 'Zwindow' (standardowo 7):


ZW=<liczba>
ZW=<liczba>


<instrukcja_Z>:
<instrukcja_Z>:
Linia 751: Linia 751:
Jeżeli wskaźnik konwersji poprzedza symbol oznaczający łańcuch, zamienione zostaną wszystkie litery wskazanego łańcucha.
Jeżeli wskaźnik konwersji poprzedza symbol oznaczający łańcuch, zamienione zostaną wszystkie litery wskazanego łańcucha.


<schemat_podstawienia> ::= {<opis_wystąpień>}[G] [?] _ & [?]
<schemat_podstawienia> ::= {<opis_wystąpień>}[G] [?] _ & [?]


pusty schemat podstawienia oznacza zamianę tylko pierwszego zgodnego ze wzorcem łańcucha w wierszu.
Pusty schemat podstawienia oznacza zamianę tylko pierwszego zgodnego ze wzorcem łańcucha w wierszu.


<opis_wystąpienia> : opisuje operację wykonywaną na kolejnych łańcuchach zgodnych ze wzorcem:
<opis_wystąpienia> : opisuje operację wykonywaną na kolejnych łańcuchach zgodnych ze wzorcem:
Linia 834: Linia 834:
Działanie: wskazane wiersze zostaną połączone w jeden wiersz. Jeżeli opisany obszar zawiera tylko jeden wiersz, do tego wiersza jest dołączany następny wiersz. Parametry zlecenia:
Działanie: wskazane wiersze zostaną połączone w jeden wiersz. Jeżeli opisany obszar zawiera tylko jeden wiersz, do tego wiersza jest dołączany następny wiersz. Parametry zlecenia:


* ^ - usuwanie z dołączanych wierszy wszystkich początkowych spacji i znaków tabulacji ht
* <code>^</code> - usuwanie z dołączanych wierszy wszystkich początkowych spacji i znaków tabulacji '''ht'''
* /<łańcuch> - przed każdym dołączanym wierszem jest wstawiany podany łańcuch
* <code>/<łańcuch></code> - przed każdym dołączanym wierszem jest wstawiany podany łańcuch


Wierszem bieżącym po wykonaniu zlecenia jest nowo utworzony wiersz. Zlecenie U rozdziela wiersz na wiersze składowe.
Wierszem bieżącym po wykonaniu zlecenia jest nowo utworzony wiersz. Zlecenie <code>U</code> rozdziela wiersz na wiersze składowe.


== Przenoszenie i kopiowanie wierszy ==
== Przenoszenie i kopiowanie wierszy ==
Linia 849: Linia 849:
<instrukcja_C_M>:
<instrukcja_C_M>:


* CA - kopiowanie obszaru za wskazany wiersz
* <code>CA</code> - kopiowanie obszaru za wskazany wiersz
* CI - kopiowanie obszaru przed wskazany wiersz
* <code>CI</code> - kopiowanie obszaru przed wskazany wiersz
* MA - przenoszenie obszaru za wskazany wiersz
* <code>MA</code> - przenoszenie obszaru za wskazany wiersz
* MI - przenoszenie obszaru przed wskazany wiersz
* <code>MI</code> - przenoszenie obszaru przed wskazany wiersz


Wierszem bieżącym po wykonaniu zlecenia jest ostatni skopiowany lub przeniesiony wiersz (zlecenia CA i MA) lub wiersz wskazany wyrażeniem adresowym (zlecenia CI i MI).
Wierszem bieżącym po wykonaniu zlecenia jest ostatni skopiowany lub przeniesiony wiersz (zlecenia <code>CA</code> i <code>MA</code>) lub wiersz wskazany wyrażeniem adresowym (zlecenia <code>CI</code> i <code>MI</code>).
Zlecenie U usuwa skopiowany obszar (zlecenia CA i CI) lub przenosi go z powrotem (zlecenia MI i MA).
Zlecenie <code>U</code> usuwa skopiowany obszar (zlecenia <code>CA</code> i <code>CI</code>) lub przenosi go z powrotem (zlecenia <code>MI</code> i <code>MA</code>).


=== Przenoszenie i kopiowanie wierszy do buforów pomocniczych ===
=== Przenoszenie i kopiowanie wierszy do buforów pomocniczych ===
Linia 865: Linia 865:
<instrukcja_D_Y>:
<instrukcja_D_Y>:


* D - przenoszenie wierszy
* <code>D</code> - przenoszenie wierszy
* Y - kopiowanie wierszy
* <code>Y</code> - kopiowanie wierszy


Można korzystać z 26 buforów pomocniczych o nazwach A..Z oraz z bufora specjalnego bez nazwy. Informacje o zawartości buforów nazwanych są drukowane zleceniem " w postaci:
Można korzystać z 26 buforów pomocniczych o nazwach A..Z oraz z bufora specjalnego bez nazwy. Informacje o zawartości buforów nazwanych są drukowane zleceniem " w postaci:


<nazwa_bufora> <liczba_wierszy>
<nazwa_bufora> <liczba_wierszy>


Wierszem bieżącym po skopiowaniu (Y) jest ostatni wiersz obszaru a po przeniesieniu (D) - pierwszy wiersz za przeniesionymi.
Wierszem bieżącym po skopiowaniu (<code>Y</code>) jest ostatni wiersz obszaru a po przeniesieniu (<code>D</code>) - pierwszy wiersz za przeniesionymi.


Zlecenie U przenosi wiersze z powrotem do bufora roboczego (po kopiowaniu tylko je usuwa z bufora pomocniczego). Jeżeli zlecenie kopiowania lub przenoszenia wierszy do bufora pomocniczego było podane bez parametru >, to zlecenie U nie odtwarza poprzedniej zawartości bufora pomocniczego.
Zlecenie <code>U</code> przenosi wiersze z powrotem do bufora roboczego (po kopiowaniu tylko je usuwa z bufora pomocniczego). Jeżeli zlecenie kopiowania lub przenoszenia wierszy do bufora pomocniczego było podane bez parametru <code>></code>, to zlecenie <code>U</code> nie odtwarza poprzedniej zawartości bufora pomocniczego.


Bufor specjalny (bez nazwy) jest wykorzystywany także przy wykonywaniu innych zleceń niż D i Y. Gdy wykonywane jest zlecenie C, wiersze usunięte tym zleceniem są przenoszone do tego bufora. Także przy wykonywaniu zlecenia U po zleceniach I, A, C, RA i RI wiersze usunięte są przenoszone do bufora specjalnego (ponowne wykonanie zlecenia U przeniesie te wiersze z powrotem do bufora roboczego i bufor specjalny zostanie opróżniony).
Bufor specjalny (bez nazwy) jest wykorzystywany także przy wykonywaniu innych zleceń niż <code>D</code> i <code>Y</code>. Gdy wykonywane jest zlecenie <code>C</code>, wiersze usunięte tym zleceniem są przenoszone do tego bufora. Także przy wykonywaniu zlecenia U po zleceniach <code>I</code>, <code>A</code>, <code>C</code>, <code>RA</code> i <code>RI</code> wiersze usunięte są przenoszone do bufora specjalnego (ponowne wykonanie zlecenia <code>U</code> przeniesie te wiersze z powrotem do bufora roboczego i bufor specjalny zostanie opróżniony).


=== Kopiowanie buforów pomocniczych do bufora roboczego ===
=== Kopiowanie buforów pomocniczych do bufora roboczego ===
Linia 886: Linia 886:
<instrukcja_P>:
<instrukcja_P>:


* PA - kopiowanie bufora za wskazany wiersz
* <code>PA</code> - kopiowanie bufora za wskazany wiersz
* PI - kopiowanie bufora przed wskazany wiersz
* <code>PI</code> - kopiowanie bufora przed wskazany wiersz


Wierszem bieżącym po wykonaniu zlecenie jest ostatni skopiowany wiersz (PA) lub wiersz wskazany wyrażeniem adresowym (PI). Zlecenie U usuwa skopiowany obszar.
Wierszem bieżącym po wykonaniu zlecenie jest ostatni skopiowany wiersz (<code>PA</code>) lub wiersz wskazany wyrażeniem adresowym (<code>PI</code>). Zlecenie <code>U</code> usuwa skopiowany obszar.


== Edycja wielu zbiorów ==
== Edycja wielu zbiorów ==
Linia 901: Linia 901:
  *** NEW FILE ***
  *** NEW FILE ***


i edytor przechodzi do wczytywania wierszy z końcówki - wykonywane jest niejawne zlecenie A (II.5.2). Po wprowadzeniu dc4 edytor kończy wprowadzanie i rozpoczyna edycję bufora ustawiając wskaźnik dostępu na ostatni wprowadzony wiersz. Wprowadzenie pustego zbioru (dc4 w pierwszym wierszu) powoduje powrót do edycji bufora poprawianego do tej pory.
i edytor przechodzi do wczytywania wierszy z końcówki - wykonywane jest niejawne zlecenie <code>A</code>. Po wprowadzeniu '''dc4''' edytor kończy wprowadzanie i rozpoczyna edycję bufora ustawiając wskaźnik dostępu na ostatni wprowadzony wiersz. Wprowadzenie pustego zbioru ('''dc4''' w pierwszym wierszu) powoduje powrót do edycji bufora poprawianego do tej pory.


=== Edycja innego bufora ===
=== Edycja innego bufora ===
Linia 915: Linia 915:
* "<litera> - bufor pomocniczy o podanej nazwie
* "<litera> - bufor pomocniczy o podanej nazwie
* *[<litera>] - bufor pomocniczy zleceń
* *[<litera>] - bufor pomocniczy zleceń
* - - bufor poprawiany przed wykonaniem ostatniego zlecenia E lub N
* - - bufor poprawiany przed wykonaniem ostatniego zlecenia <code>E</code> lub <code>N</code>


Po przejściu do edycji bufora roboczego jest odtwarzany wskaźnik dostępu i znaczniki wierszy użyte w czasie poprzedniej edycji tego bufora. Po przejściu do edycji bufora pomocniczego wskaźnik dostępu jest ustawiany na pierwszy wiersz bufora a znaczniki wierszy są zerowane. Jeżeli wskazany bufor pomocniczy jest pusty, wyprowadzany jest komunikat:
Po przejściu do edycji bufora roboczego jest odtwarzany wskaźnik dostępu i znaczniki wierszy użyte w czasie poprzedniej edycji tego bufora. Po przejściu do edycji bufora pomocniczego wskaźnik dostępu jest ustawiany na pierwszy wiersz bufora a znaczniki wierszy są zerowane. Jeżeli wskazany bufor pomocniczy jest pusty, wyprowadzany jest komunikat:
Linia 921: Linia 921:
  *** NEW BUFFER ***
  *** NEW BUFFER ***


i edytor przechodzi do wprowadzania zawartości bufora z końcówki. Działanie edytora w czasie wprowadzania jest takie samo jak w czasie wykonywania zlecenia A. Podanie jako parametru znaku ! zmienia ustawienie opcji 'autotab' na przeciwne (2.4). Wprowadzanie jest kończone wpisaniem dc4 lub wiersza zawierającego tylko znacznik końca wprowadzania - znaku podanego w zleceniu E za wskazaniem bufora. Znacznikiem końca wprowadzania może być dowolny znak kodu ASCII poza znakami !, cr, dc4, lf i spacją. Edycja buforów pomocniczych niczym nie różni się od edycji buforów roboczych, z tym że niedozwolone jest użycie nazwy poprawianego bufora pomocniczego w zleceniu kopiowania lub przenoszenia wierszy.
i edytor przechodzi do wprowadzania zawartości bufora z końcówki. Działanie edytora w czasie wprowadzania jest takie samo jak w czasie wykonywania zlecenia <code>A</code>. Podanie jako parametru znaku ! zmienia ustawienie opcji 'autotab' na przeciwne. Wprowadzanie jest kończone wpisaniem dc4 lub wiersza zawierającego tylko znacznik końca wprowadzania - znaku podanego w zleceniu <code>E</code> za wskazaniem bufora. Znacznikiem końca wprowadzania może być dowolny znak kodu ASCII poza znakami '''!''', '''cr''', '''dc4''', '''lf''' i spacją. Edycja buforów pomocniczych niczym nie różni się od edycji buforów roboczych, z tym że niedozwolone jest użycie nazwy poprawianego bufora pomocniczego w zleceniu kopiowania lub przenoszenia wierszy.


=== Zmiana nazwy bufora roboczego ===
=== Zmiana nazwy bufora roboczego ===
Linia 939: Linia 939:
Składnia zlecenia: <code>FA</code>
Składnia zlecenia: <code>FA</code>


Działanie: na monitor są wyprowadzane informacje o wszystkich buforach roboczych. W pierwszym wierszu jest wyprowadzany opis bufora aktualnie poprawianego w takiej samej postaci jak zleceniem F. W dalszych - opis pozostałych buforów roboczych w podobnej postaci:
Działanie: na monitor są wyprowadzane informacje o wszystkich buforach roboczych. W pierwszym wierszu jest wyprowadzany opis bufora aktualnie poprawianego w takiej samej postaci jak zleceniem <code>F</code>. W dalszych - opis pozostałych buforów roboczych w podobnej postaci:


  <numer_bufora> <tytuł_zbioru> <liczba_wierszy_w_buforze>
  <numer_bufora> <tytuł_zbioru> <liczba_wierszy_w_buforze>


Opis bufora poprawianego poprzednio (dostępnego zleceniem E) jest poprzedzony znakiem - .
Opis bufora poprawianego poprzednio (dostępnego zleceniem <code>E</code>) jest poprzedzony znakiem '''-'''.


== Wyprowadzanie zawartości bufora do zbioru ==
== Wyprowadzanie zawartości bufora do zbioru ==
Linia 954: Linia 954:


* <code>W</code> - kopiowanie bufora
* <code>W</code> - kopiowanie bufora
* <code>WQ</code> - kopiowanie bufora i wykonanie zlecenia Q
* <code>WQ</code> - kopiowanie bufora i wykonanie zlecenia <code>Q</code>
 
* <code>></code> - wskazany obszar jest dołączany do istniejącego zbioru
* <code>></code> - wskazany obszar jest dołączany do istniejącego zbioru
* <code>!</code> - pozwolenie na zapisanie zawartości bufora do zbioru już istniejącego (wymagane tylko wtedy, gdy jest podany tytuł zbioru)
* <code>!</code> - pozwolenie na zapisanie zawartości bufora do zbioru już istniejącego (wymagane tylko wtedy, gdy jest podany tytuł zbioru)
Linia 965: Linia 964:
Po znaku zapytania należy wprowadzić znak:
Po znaku zapytania należy wprowadzić znak:


* <code>></code> - wskazany obszar będzie dołączony do zawartości zbioru
* '''>''' - wskazany obszar będzie dołączony do zawartości zbioru
* <code>!</code> - zawartość zbioru będzie zniszczona
* '''!<''' - zawartość zbioru będzie zniszczona
* '''cr''' - zlecenie nie będzie wykonane
* '''cr''' - zlecenie nie będzie wykonane


Jeżeli nie jest podany tytuł zbioru, obszar będzie skopiowany do zbioru o tytule takim jak nazwa poprawianego bufora roboczego. Gdy jest poprawiany bufor pomocniczy, tytuł zbioru jest obowiązkowy. Wierszem bieżącym po wykonaniu instrukcji W jest ostatni skopiowany wiersz. Gdy zostanie wykonana instrukcja WQ, wierszem bieżącym zapamiętanym w zbiorze roboczym będzie wiersz dostępny w momencie wprowadzania zlecenia.
Jeżeli nie jest podany tytuł zbioru, obszar będzie skopiowany do zbioru o tytule takim jak nazwa poprawianego bufora roboczego. Gdy jest poprawiany bufor pomocniczy, tytuł zbioru jest obowiązkowy. Wierszem bieżącym po wykonaniu instrukcji <code>W</code> jest ostatni skopiowany wiersz. Gdy zostanie wykonana instrukcja <code>WQ</code>, wierszem bieżącym zapamiętanym w zbiorze roboczym będzie wiersz dostępny w momencie wprowadzania zlecenia.


== Globalne wykonywanie zleceń ==
== Globalne wykonywanie zleceń ==
Linia 977: Linia 976:
Znaczenie: na wszystkich wierszach opisanego obszaru zgodnych z podanym wzorcem (lub niezgodnych - jeżeli jest podany parametr ^) będzie wykonane wskazane zlecenie. Wskazany obszar musi zawierać więcej niż jeden wiersz. Jeżeli opis obszaru nie zostanie podany, przeszukany zostanie cały bufor. Wzorzec ma składnię i znaczenie opisane w 3.2. Pusty wzorzec oznacza przyjęcie wzorca użytego w ostatnim zleceniu przeszukiwania bufora. Zleceniem G można wykonywać zlecenia: D, A, I, C, RA, RI, P, L, #, Z, S, &, @, %, _~, J, CL, LU, UL, W, Y, PA, PI i O. Jeżeli zlecenie nie zostanie podane, wiersze wskazane wzorcem będą wyświetlone na monitorze w postaci określonej przez opcje listowania. Parametry zlecenia:
Znaczenie: na wszystkich wierszach opisanego obszaru zgodnych z podanym wzorcem (lub niezgodnych - jeżeli jest podany parametr ^) będzie wykonane wskazane zlecenie. Wskazany obszar musi zawierać więcej niż jeden wiersz. Jeżeli opis obszaru nie zostanie podany, przeszukany zostanie cały bufor. Wzorzec ma składnię i znaczenie opisane w 3.2. Pusty wzorzec oznacza przyjęcie wzorca użytego w ostatnim zleceniu przeszukiwania bufora. Zleceniem G można wykonywać zlecenia: D, A, I, C, RA, RI, P, L, #, Z, S, &, @, %, _~, J, CL, LU, UL, W, Y, PA, PI i O. Jeżeli zlecenie nie zostanie podane, wiersze wskazane wzorcem będą wyświetlone na monitorze w postaci określonej przez opcje listowania. Parametry zlecenia:


* ^ - zlecenie dotyczy wierszy niezgodnych z podanym wzorcem
* <code>^</code> - zlecenie dotyczy wierszy niezgodnych z podanym wzorcem
* ? - zlecenie będzie wykonane na wierszach wskazanych wzorcem i parametrem ^, ale dopiero po akceptacji użytkownika. Edytor przed wykonaniem zlecenia wyświetla zawartość wiersza i oczekuje na wprowadzenie znaku akceptacji:
* <code>?</code> - zlecenie będzie wykonane na wierszach wskazanych wzorcem i parametrem <code>^</code>, ale dopiero po akceptacji użytkownika. Edytor przed wykonaniem zlecenia wyświetla zawartość wiersza i oczekuje na wprowadzenie znaku akceptacji:
** + zlecenie będzie wykonane
** '''+''' zlecenie będzie wykonane
** cr zlecenie nie będzie wykonane
** '''cr''' zlecenie nie będzie wykonane
** dc4 zlecenie nie będzie wykonane i pozostałe wiersze wskazanego obszaru nie będą analizowane  
** '''dc4''' zlecenie nie będzie wykonane i pozostałe wiersze wskazanego obszaru nie będą analizowane  


Jeżeli parametr ? nie jest podany, wiersze na których ma być wykonane zlecenie są także wyświetlane na monitorze, ale zatrzymanie wydruku następuje dopiero po zapełnieniu ekranu (zgodnie z ustawieniem opcji 'linecount'). Wprowadzenie '''cr''' wznawia wykonanie zlecenia, natomiast dc4 - kończy je. Po wykonaniu całego zlecenia G jest wykonywane automatycznie zlecenie <code>P</code> wyświetlające na monitorze wiersz dostępny w tym momencie (chyba, że wierszem bieżącym jest ostatni wyświetlony wiersz). Zlecenie <code>U</code> cofa wszystkie wykonane zmiany.
Jeżeli parametr <code>?</code> nie jest podany, wiersze na których ma być wykonane zlecenie są także wyświetlane na monitorze, ale zatrzymanie wydruku następuje dopiero po zapełnieniu ekranu (zgodnie z ustawieniem opcji 'linecount'). Wprowadzenie '''cr''' wznawia wykonanie zlecenia, natomiast '''dc4''' - kończy je. Po wykonaniu całego zlecenia <code>G</code> jest wykonywane automatycznie zlecenie <code>P</code> wyświetlające na monitorze wiersz dostępny w tym momencie (chyba, że wierszem bieżącym jest ostatni wyświetlony wiersz). Zlecenie <code>U</code> cofa wszystkie wykonane zmiany.


== Wykonywanie poprawek w trybie niekonwersacyjnym ==
== Wykonywanie poprawek w trybie niekonwersacyjnym ==
Linia 1086: Linia 1085:
* =T[^:]\Y - etykieta (niepusty ciąg znaków ograniczonych znakiem ''':''')
* =T[^:]\Y - etykieta (niepusty ciąg znaków ograniczonych znakiem ''':''')
* =P!.*! - rozdziela wzorzec na części
* =P!.*! - rozdziela wzorzec na części
* =Q\3\2\1 - zmienne P i Q są wykorzystywane przy zamianie miejscami dwóch części wiersza i powinny być używane razem. Zlecenie: S/<część>\P<część>/\Q zamieni miejscami łańcuchy wskazane przez części wzorca. Gdy przestawiane części bezpośrednio stykają się ze sobą można także zapisać: S/<część>!<część>/\Q
* =Q\3\2\1 - zmienne P i Q są wykorzystywane przy zamianie miejscami dwóch części wiersza i powinny być używane razem. Zlecenie: <code>S/<część>\P<część>/\Q</code> zamieni miejscami łańcuchy wskazane przez części wzorca. Gdy przestawiane części bezpośrednio stykają się ze sobą można także zapisać: <code>S/<część>!<część>/\Q</code>. Uwaga: Wzorzec użyty w zlecenie wykorzystującym zmienne P i Q nie powinien zawierać innych znaków ! dzielących go na części. Użycie dodatkowych znaków ! może spowodować przestawienie innych części niż zostało to podane. Na przykład zlecenie <code>S/<część1>!<część2>!<część3>/\Q</code> przestawi części pierwszą i trzecią.
Uwaga. Wzorzec użyty w zlecenie wykorzystującym zmienne P i Q nie powinien zawierać innych znaków ! dzielących go na części. Użycie dodatkowych znaków ! może spowodować przestawienie innych części niż zostało to podane. Na przykład zlecenie <code>S/<część1>!<część2>!<część3>/\Q</code> przestawi części pierwszą i trzecią.
* =V\ - znak backslash \. Definicja taka jest niezbędna, gdy chcemy wprowadzać teksty zawierające litery poprzedzone znakiem \, a używamy zmiennych generacyjnych. Na przykład, jeżeli korzystamy z wcześniej opisanych definicji, to znaki \D zostaną po wprowadzeniu rozwinięte do ciągu [0-9], gdyż taki zapis oznacza zmienną generacyjną. Znaki \D zostaną wprowadzone do wiersza, dopiero jeżeli napiszemy: \VD .
* =V\ - znak backslash \. Definicja taka jest niezbędna, gdy chcemy wprowadzać teksty zawierające litery poprzedzone znakiem \, a używamy zmiennych generacyjnych. Na przykład, jeżeli korzystamy z wcześniej opisanych definicji, to znaki \D zostaną po wprowadzeniu rozwinięte do ciągu [0-9], gdyż taki zapis oznacza zmienną generacyjną. Znaki \D zostaną wprowadzone do wiersza, dopiero jeżeli napiszemy: \VD .


Menu nawigacyjne