ReWiA 2.0 html manual


 --------------------------- Zasady pisania makr -----------------------------

   Zasady pisania makr oraz definicji komend są jednakowe. Tam gdzie występują
różnice zostanie  to zaznaczone.  Makra są  to pliki tekstowe zawierające spis
komend z  argumentami które  ReWiA po  kolei  wykona.  Dodatkowo  dostępne  są
komendy GOTO  i LABEL służące do realizacji pętli. Przykładowo, poniższe makro
poda numer punktu w bieżącym widmie o największej wartości współrzędnej Y :

        INPUT "podaj numer widma" %nw
        LET %mx=-1e300
        LET %j=last(%nw)
        LABEL petla
          IF %j<0 GOTO koniec
          LET %mx=max(%mx,y(%nw,%j))
          LET %j=%j-1
        GOTO petla
        LABEL koniec
        PRINT "wartosc max = " %mx

Makra najlepiej  jest wpisywać  pod dowolnym edytorem tekstu. W ostateczności,
gdy nie  ma żadnego  edytora pod  ręką można  utworzyć komendą CREAT widmo o 1
polu typu  STRING*64 i  komendą ED  wpisać tekst  makra, po czym komendą TSAVE
zapisać widmo  w postaci  tekstowej na dysk. Należy pamiętać, że długość linii
będzie w tym przypadku ograniczona do 64 znaków. Zakładając, że zapisano je na
plik MAKS.MAC makro należy wywołać pisząc :

        M "MAKS.MAC"

   Podane powyżej  makro bardzo  łatwo przerobić  na definicję  komendy. W tym
celu na początku należy umieścić linię CMD a na końcu linię ENDCMD. Dodatkowo,
ponieważ kompilowanym komendom można przekazywać argumenty, komenda może pytać
się o  numer widma  tylko wtedy  gdy nie  podano argumentów. Postać końcową po
wszystkich przeróbkach pokazano poniżej :

        CMD maks
        IF 0==argcnt INPUT "podaj numer widma" %nw
        IF 1==argcnt LET %nw=arg(0)
        LET %mx=-1e300
        LET %j=last(%nw)
        LABEL petla
          IF %j<0 GOTO koniec
          LET %mx=max(%mx,y(%nw,%j))
          LET %j=%j-1
        GOTO petla
        LABEL koniec
        PRINT "wartosc max = " %mx
        ENDCMD

   Nazwa nowej  komendy podawana  jest jako  argument  CMD.  W  przypadku  gdy
komenda maks była już zdefiniowana poprzednia definicja jest kasowana. Aby móc
wykonać podaną  powyżej komendę należy wprowadzić jej definicję linia po linii
z klawiatury  w trybie  bezpośrednim lub  umieścić  w  dowolnym  makrze  i  je
wykonać. Po  wczytaniu linii zawierającej komendę CMD ReWiA wszystkie linie aż
do linii  ropoczynającej się  od ENDCMD będzie kompilować a nie wykonywać. Bez
znaczenia jest  czy będzie to tryb bezpośredni czy wykonywanie makra. Jeżeli w
trakcie kompilacji  wystąpi błąd,  np.  skok  do  nieistniejącej  etykiety  to
kompilacja zostanie  przerwana i  wyświetlony zostanie komunikat o błędzie. Po
zakończeniu  kompilacji  w  oknie  dialogu  zostanie  wyświetlona  nazwa  nowo
skompilowanej komendy.  W jednym  makrze może  być  podanych  wiele  definicji
komend, mogą też być przeplatane zwykłymi komendami.

   Skompilowane komendy wywołuje się podając ich nazwę, ewentualnie parametry.
Dla przykładu powyżej sekwencja :

        maks 5

spowoduje wyświetlenie  największej  wpółrzędnej  Y  w  widmie  o  numerze  5,
natomiast sekwencja :

        maks

   spowoduje, że  ReWiA zapyta  się o  numer widma  z którego  należy obliczyć
największą wartość  Y a następnie wyświetli ją. Pisząc definicje komend należy
przestrzegać następujących zasad :

   - funkcją argcnt sprawdzać ilość przekazywanych argumentów.
   - funkcją type sprawdzać typ przekazywanych argumentów
   - funkcją arg sprawdzać wartość przekazywanych argumentów
   - jeżeli wymagane  jest jakieś widmo na wyniki tymczasowe to należy wywołać
     funkcję freesht,  która zwróci  numer wolnego  widma. Można  również użyć
     funkcji memfree aby sprawdzić czy jest dostatecznie dużo wolnej pamięci.
   - widma zawierające  dane tymczasowe  które nie  są więcej potrzebne należy
     natychmiast zwalniać komendą DELETE.

   - wszystkie zmienne  używane w  komendzie powinny się rozpoczynać od stałej
     sekwencji liter,  np. %sr_i,  %sr_alfa zamiast  %i, %alfa. Zapobiegnie to
     konfliktom nazw.

               Wywoływanie komend z własnym menu w makrach

   Zarówno w  makrach jak  i kompilowanych komendach można wywoływać komendy z
własnym menu.  Wybór opcji  z menu  poprzedza się  znakiem '/' i traktuje jako
zwykły  parametr  komendy.  Sposób  ten  jest  dozwolony  tylko  w  makrach  i
kompilowanych komendach. W trybie bezpośrednim jakiekolwiek parametry podane w
oknie dialogu są ignorowane. Należy pamiętać aby ostatnią opcją w każdej linii
było Quit.  Należy również  pamiętać, że  ilość parametrów  jest ograniczona w
linii do 31. Przykładowo, linia :

        POLFIT /A 5:0:0 /D 2 /L * * /F /V /Q

najpierw wywołuje  opcję Assoc  (tworzy widmo  o numerze 5 z jednym polem typu
REAL*8 o  długości 20  punktów), potem  Degree, Limits,  Fit, View  i na końcu
Quit. Należy  zwrócić uwagę,  że wybory  opcji z menu nie są tekstami i nie są
zapisywane w cudzysłowie.
   Istnieje również  możliwość zapytania  się w  makrach o  wybór opcji. W tym
celu zamiast np. /Q należy wpisać napis 'ASK'.