REXX

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

REXX (ang. REstructured eXtended eXecutor) jest proceduralnym interpretowanym językiem programowania zaprojektowanym przez Mike'a Cowlishawa. Jego składnia jest zbliżona do języka angielskiego. Po raz pierwszy pojawił się na platformie VM/SP Relase 3 w 1983 roku. Dużą zaletą tego języka jest możliwość zastosowania go jako języka programowania wsadowego w różnych systemach operacyjnych oraz języka skryptowego dla różnych środowisk i aplikacji. Rexx charakteryzuje się dużym zestawem wbudowanych funkcji o naturalnych nazwach i argumentach, posiada tablice dynamiczne, nie trzeba deklarować zmiennych i określać ich typów. Na podstawie REXXa powstały dwa języki obiektowe NetRexx i ObjectRexx dla tych trzech języków (REXX, NetRexx, ObjectRexx) obowiązuje zasada "write once, run anywhere". Przy pomocy wizualnych środowisk zdarzeniowego programowania w REXXie (np.VisPro/Rexx, GpfRexx, VX Rexx) można w bardzo prosty sposób tworzyć aplikacje z interfejsem graficznym GUI. ARexx, implementacja języka Rexx dla AmigaOS i MorphOS, jest integralnym elementem tych systemów. Bardzo duża część oprogramowania dla AmigaOS/MorphOS jest wyposażona w porty ARexxa. Ta cecha znacznie rozszerza możliwość programów i umożliwia komunikowanie się ich między sobą.

Zaimplementowany jest na wszystkich znaczących platformach firmy IBM:

Można go używać także na platformach niezwiązanych z IBM jak:

Składnia[edytuj | edytuj kod]

Instrukcja warunkowa IF

IF [warunek] THEN
     [instrukcja]
   ELSE
     [instrukcja]

Przykład wykorzystania instrukcji warunkowej:

/* If varM jest większe od 10,
   then say "It's true". W przeciwnym przypadku, say "It's not true". */
varM = 5 + 2
IF varM > 10 THEN 
   SAY "It's true."
 ELSE  
   SAY "It's not true."

Operatory porównania

= równe
< mniejsze
> większe
<= mniejsze lub równe
>= większe lub równe
<> większe lub mniejsze (nierówne)
\= lub ^= nierówne
\< niemniejsze
\> niewiększe

SELECT jest używany w przypadku kiedy ma się wykonać jedna z kilku możliwych instrukcji warunkowych (pozostałe zostają pominięte).

/* Sprawdź varM dla różnych wyrażeń ale wykonaj tylko jedną instrukcję dla wyrażenia */
SAY "Enter a number"
PULL varM
SELECT
   WHEN varM = 10 THEN SAY "It's equal to 10."
   WHEN varM < 10 THEN SAY "It's less than 10."
   WHEN varM < 20 THEN SAY "It's less than 20."
END

Pętla Aby zaimplementować pętle w języku Rexx należy użyć wyrazów DO oraz END. DO wskazuje na początek pętli i jest umieszczane przed pierwszą instrukcją w pętli, natomiast END kończy pętlę i jest umieszczane po ostatniej instrukcji w pętli. Standardowa pętla

 DO UNTIL [warunek]
     [instrukcje]
   END

   DO WHILE [warunek]
     [instrukcje]
   END

Inne przykłady wykorzystania pętli:

/* Powtórzy "Hello" 10 razy */
DO 10
   SAY "Hello"
END

Wykorzystanie słowa FOREVER spowoduje wykonanie się pętli nieskończenie wiele razy. Taką pętle można przerwać przy pomocy instrukcji opuszczenia LEAVE

/* Słowo "Hello" będzie powtarzane nieskończenie */
DO FOREVER
   SAY "Hello"
END
----
DO FOREVER
    [instrukcja]
    IF [warunek] THEN LEAVE 
  END

Przykładowy program[edytuj | edytuj kod]

Należy pamiętać, że każdy program w REXX'ie rozpoczyna się od komentarza. Jako rozszerzenie pliku przyjmuje się ".rexx" lub ".rex".

/* REXX Calculator */
/* program główny */                                            
say "Please enter two numbers"                                 
parse pull a b . /* wczytanie zmiennych a i b z klawiatury */
if b <>"" then                                                 
  if \(datatype(a,number) & datatype(b,number)) then           
    say "a or b isn't a number"                              
  else                                                         
  call Sub1 a b /* wywołanie procedury Sub1 */
else                                                           
  say "b is empty"                                             
Exit                                                           
/* procedura */                                                
Sub1:                                                          
  say "At" TIME() "on" DATE() "user" USERID() "entered" a "and" b
  say a "+" b "=" a + b
  say a "-" b "=" a - b
  say a "*" b "=" a * b
  say a "/" b "=" a / b
  say "divided by" b "is" a%b "with remainder of" a//b
return

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]