|
Voorbeeldprogramma's
BITS.rex
/* REXX */ NUMMER.1 = '00'x NUMMER.2 = '11'x NUMMER.3 = '22'x NUMMER.4
= '44'x NUMMER.5 = '88'x NUMMER.6 = 'FF'x Say ' Num Msk And Or Xor' Say
' --- --- --- --- ---' MASKER = '0F'x Do INDEX=1 To 6 AND = BitAnd(MASKER,NUMMER.INDEX)
OR = BitOr(MASKER,NUMMER.INDEX) XOR = BitXor(MASKER,NUMMER.INDEX) Say '
'C2X(NUMMER.INDEX)' 'C2X(MASKER), ' 'C2X(AND)' 'C2X(OR)' 'C2X(XOR) End /*
Do */ Say MASKER = '22'x Do INDEX=1 To 6 AND = BitAnd(MASKER,NUMMER.INDEX)
OR = BitOr(MASKER,NUMMER.INDEX) XOR = BitXor(MASKER,NUMMER.INDEX) Say '
'C2X(NUMMER.INDEX)' 'C2X(MASKER), ' 'C2X(AND)' 'C2X(OR)' 'C2X(XOR) End /*
Do */ Exit 0
BREAKCON.rex
/* REXX */ Do XX=1 To 14 If (XX = 10) Then Leave Say 'In het "LEAVE" deel;
XX heeft de waarde 'XX End Do XX=1 To 14 If (XX = 10) Then Iterate Say 'In
het "ITERATE" deel; XX heeft de waarde 'XX End Exit 0
CHARSTR.rex
/* REXX */ TITEL = 'Yahtzee' Say 'De naam van het spel is "'TITEL'"' Say
'Een letter uit de naam is "'Substr(TITEL,3,1)'"' Say 'Een deel van de naam
is "'Substr(TITEL,4)'"' Exit 0
DATATYPS.rex
/* REXX */ Say DataType('azAZ09','A') Say DataType('01','B') Say DataType('az','L')
Say DataType('azAZ','M') Say DataType('123.45','N') Say DataType('AZ','U')
Say DataType('12345','W') Say DataType('1234567890ABCDEF','X') Exit 0
DOUNTIL.rex
/* REXX */ PUNTEN = 0 Do Until (PUNTEN > 60) Say 'Het totaal aantal punten
is 'PUNTEN PUNTEN = PUNTEN + 10 End Exit 0
DRUKAF.rex
/* REXX */ Say 'Dit is een regel tekst.' Say 'En dit is nog een regel tekst.'
Say 'Dit is de laatste regel tekst.' Exit 0
FORLOOP.rex
/* REXX */ Do INDEX=1 To 5 WORP.INDEX = '.' End Exit 0
GETALIN.rex
/* REXX */ Say Say 'Tik een getal in (100 stopt het programma):' Do Until
(GETAL = 100) Pull GETAL . /* Lees een getal in */ Say 'Het getal is 'GETAL
/* en druk hem af ... */ End Say Say 'Einde programma.' Exit 0
HELLO.rex
/* REXX */ main: Say 'Hello, world ...'; Exit 0
IFELSE.rex
/* REXX */ SCORE = 100 PERSREC = 200 If (SCORE > PERSREC) Then Say 'Je hebt
je persoonlijk record verbeterd !!!' If (SCORE > PERSREC) Then Say 'Score:
*** 'Right(SCORE,4,0)' ***' Else Say 'Score: 'Right(SCORE,4,0)' ' Exit 0
INVUITV.rex
/* REXX */ Call RxFuncAdd 'SysGetKey', 'RexxUtil', 'SysGetKey' Say Say 'Tik
een letter in (X stopt het programma):' Do Until (KEY = 'x' | KEY = 'X')
KEY = SysGetKey('NOECHO') Call CharOut,KEY End Call RxFuncDrop 'SysGetKey'
Say Say 'Einde programma.' Exit 0
KWADRAAT.rex
/* REXX */ Do INDEX=1 To 7 KWADRAAT = Kwadr(INDEX) /* Kwadraat funtie */
Say 'Het kwadraat van 'INDEX' is 'KWADRAAT End Say Do INDEX=1 To 7 Say 'Het
kwadraat van 'INDEX' is 'Kwadr(INDEX) End Exit 0 Kwadr: Arg INVOER Return
(INVOER * INVOER)
KWADRFLT.rex
/* REXX */ Do INDEX=3 To 9 Say 'Het kwadraat van 'INDEX+0.5' is 'Kwadr(INDEX+0.5)
End Exit 0 Kwadr: Arg INVOER Return (INVOER * INVOER)
KWADRSOM.rex
/* REXX */ Call Kop /* Roep Kop aan */ Do INDEX=1 To 7 Call Kwadr INDEX
/* Kwadraat funtie */ End Call Voet /* Roep Voet aan */ Exit 0 Kop: /* Dit
is de 'Kop' funtie */ SOM = 0 /* Initialisatie */ Say 'Getallen kwadrateren
en optellen...' Say Return 0 Kwadr: Arg INVOER KWADRAAT = INVOER * INVOER
SOM = SOM + KWADRAAT Say 'Het kwadraat van 'INVOER' is 'KWADRAAT Return
0 Voet: /* Dit is de 'Voet' functie */ Say Say 'De som der kwadraten is
'SOM Return 0
LEESCHAR.rex
/* REXX */ PF = 'CURSUS.DAT' /* bestandsnaam */ Do ForEver CHAR = CharIn(PF,,1)
If (CHAR == '') /* einde bestand */ Then Leave Call CharOut,CHAR End Exit
0
LEESLIJN.rex
/* REXX */ PF = 'CURSUS.DAT' /* bestandsnaam */ Do While Lines(PF) REGEL
= LineIn(PF) Say REGEL End Exit 0
LEESTEXT.rex
/* REXX */ PF = 'CURSUS.DAT' /* bestandsnaam */ Do ForEver REGEL = LineIn(PF)
If (REGEL == '') /* einde bestand */ Then Leave Do While (REGEL <> '') Parse
Var REGEL WOORD REGEL Say WOORD End End Exit 0
NUMMERS.rex
/* REXX */ main: GETAL = 13 Say 'De waarde van het getal is 'GETAL GETAL
= 27 Say 'De waarde van het getal is 'GETAL GETAL = 10 Say 'De waarde van
het getal is 'GETAL Exit 0
OMWISSEL.rex
/* REXX */ Say 'Tik de naam van een bestand in:' Pull BESTNAAM Do While
Lines(BESTNAAM) REGEL = LineIn(BESTNAAM) Call WisselLettersOm Say REGEL
End Exit 0 WisselLettersOm: SAVEREG = REGEL REGEL = '' Do While (SAVEREG
<> '') Parse Var SAVEREG 1 LETTER 2 SAVEREG Select When DataType(LETTER,'U')
Then LETTER = Translate(LETTER,Xrange('a','z'),Xrange('A','Z')) When DataType(LETTER,'L')
Then LETTER = Translate(LETTER,Xrange('A','Z'),Xrange('a','z')) Otherwise
Nop End REGEL = REGEL||LETTER End Return 0
PARSE1.rex
/* REXX */ REGEL = '39 1 2 999 3 4 5' Parse Var REGEL SPELTEL . . PERSREC
. Say 'Regel : 'REGEL Say 'Speltel: 'SPELTEL Say 'PersRec: 'PERSREC Parse
Value '28 1 2 888 3 4 5' With SPELTEL . . PERSREC . Say 'Waarde : 28 1 2
888 3 4 5' Say 'Speltel: 'SPELTEL Say 'PersRec: 'PERSREC Exit 0
PARSE2.rex
/* REXX */ REGEL = 'Een Twee Drie Vier Vijf Zes Zeven Acht' Parse Var REGEL
LINKS 'Drie ' MIDDEN 'Zes ' RECHTS Say 'Links : 'LINKS Say 'Midden: 'MIDDEN
Say 'Rechts: 'RECHTS Do While (REGEL <> '') Parse Var REGEL WOORD REGEL
Say 'Woord : 'WOORD End Exit 0
PVK.rex
/* REXX */ Say 'PAARDEN VARKENS KIPPEN BEDRAG ' Say '------- ------- -------
------- ' /* Ga uit van het duurste beest, het paard ... */ Do PAARD=1 While(PAARD
<= (100.00 / 15.00)) SUBTOT = PAARD * 15.00 /* Varieer dan met het aantal
mogelijke varkens ... */ Do VARKEN=1 While (VARKEN <= ((100.00 - subtot)
/ 1.00)) KIP = 100 - PAARD - VARKEN /* Wat is nu het totaal bedrag aan beesten
... */ BEDRAG = SUBTOT + VARKEN * 1.00 + KIP * 0.25 /* Indien buiten de
grenswaarden, dan het volgende varken ... */ If ((100.00 - 0.50) > BEDRAG
| BEDRAG > (100.00 + 0.50)) Then Iterate /* Indien tussen de grenswaarden,
druk dan af ... */ Call CharOut,Right(PAARD,6)Right(VARKEN,9)Right(KIP,9)Format(BEDRAG,7,2)
/* BINGO !!! */ If (BEDRAG = 100.00) Then Call CharOut,' <====' Say End
/* Do */ End /* Do */ Exit 0
RECURSIE.rex
/* REXX */ Call TelAf 8 Exit 0 TelAf: Procedure Arg TELLER Say 'De waarde
van de teller is 'TELLER If (TELLER > 0) Then Call TelAf TELLER-1 Say
'De teller is nu 'TELLER Return 0
SCHRCHAR.rex
/* REXX */ REGEL = 'Tripple Yahtzee - pc3270' /* initialiseer */ PF = 'CURSUS.DAT'
/* bestandsnaam */ Do 10 Do i=1 To Length(REGEL) CHAR = Substr(REGEL,i,1)
Call CharOut PF,CHAR End Call LineOut PF,'' End Exit 0
SCHRLIJN.rex
/* REXX */ DS1 = 2; DS2 = 3; DS3 = 4; DS4 = 5; DS5 = 6 /* initialiseer */
PF = 'CURSUS.DAT' /* bestandsnaam */ Do INDEX=1 To 10 Call LineOut PF,'Regel
nummer 'Right(INDEX,2,0)':', DS1' 'DS2' 'DS3' 'DS4' 'DS5 End Exit 0
SCOPE.rex
/* REXX */ INDEX = 11 Call Head1 Call Head2 Call Head3 Say 'De waarde van
INDEX in "main" is 'INDEX Exit 0 Head1: Procedure INDEX = 23 Say 'De waarde
van INDEX in "Head1" is 'INDEX Return 0 Head2: TELLING = 53 Say 'De waarde
van TELLING in "Head2" is 'TELLING TELLER = 77 Return 0 Head3: Say 'De waarde
van TELLER in "Head3" is 'TELLER Return 0
SELECT.rex
/* REXX */ Select When (OPDRACHT = 1) Then Say 'Verwerk "vooruit bladeren"
opdracht ...' When (OPDRACHT = 2) Then Say 'Verwerk "achteruit bladeren"
opdracht ...' When (OPDRACHT = 3 | OPDRACHT = 4 | OPDRACHT = 9) Then Say
'Stop de verwerking.' Otherwise Say 'Dit is een onbekende opdracht !!!'
End Exit 0
SOORT.rex
/* REXX */ Say 'Tik de naam van een bestand in:' Pull BESTNAAM Do REGELTELLER=1
While Lines(BESTNAAM) REGEL = LineIn(BESTNAAM) Call TelSoorten End Exit
0 TelSoorten: LETTERS = 0 CIJFERS = 0 SPATIES = 0 Do While (REGEL <> '')
Parse Var REGEL 1 TEKEN 2 REGEL Select When DataType(TEKEN,'M') Then LETTERS
= LETTERS + 1 When DataType(TEKEN,'W') Then CIJFERS = CIJFERS + 1 When TEKEN
= ' ' Then SPATIES = SPATIES + 1 Otherwise Nop End End Say ' # 'Right(REGELTELLER,4,'0')'
---', ' Lt:'Right(LETTERS,3), ' Cf:'Right(CIJFERS,3), ' Sp:'Right(SPATIES,3)'
---' Return 0
STRINGS.rex
/* REXX */ SPEL1 = 'E N E N' SPEL2 = 'T W E E E N' Say 'De naam van het
eerste spel is: "'SPEL1'"' Say 'De naam van het tweede spel is: "'SPEL2'"'
If (SPEL1 > SPEL2) Then Say 'Bij vergelijking van de namen is de grootste:
"'SPEL1'"' Else Say 'Bij vergelijking van de namen is de grootste: "'SPEL2'"'
SPEL1 = 'THREE ' SPEL1 = SPEL1||'OF A ' SPEL1 = SPEL1||'KIND' Say 'De naam
van een spel is: "'SPEL1'"' Exit 0
STRUCT1.rex
/* REXX */ ROW = 1 /* definitie structuur element */ COLUMN = 2 LENGTH =
3 VELD.1.ROW = 6 VELD.1.COLUMN = 12 VELD.1.LENGTH = 20 VELD.2.LENGTH = 32
VELD.2.COLUMN = 12 VELD.2.ROW = VELD.1.ROW + 2 Say 'VELD 1 staat op rij
'VELD.1.ROW', kolom 'VELD.1.COLUMN, 'en is 'VELD.1.LENGTH' tekens lang'
Say 'VELD 2 staat op rij 'VELD.2.ROW', kolom 'VELD.2.COLUMN, 'en is 'VELD.2.LENGTH'
tekens lang' Exit 0
STRUCT2.rex
/* REXX */ ROW = 1 /* definitie structuur element */ COLUMN = 2 LENGTH =
3 Do i=1 To 8 VELD.i.ROW = i + 4 VELD.i.COLUMN = 12 VELD.i.LENGTH = 20 End
Do i=1 To 8 Say 'VELD 'i': ', 'rij 'Right(VELD.i.ROW,2)', ', 'kolom 'Right(VELD.i.COLUMN,2)',
', 'lengte 'Right(VELD.i.LENGTH,2) End Exit 0
TABEL.rex
/* REXX */ TITEL = 'Yahtzee - pc3270' Do i=1 To 12 PUNTEN.i = i * 30 ZOMAAR.i
= 12.345 * (i + 23) End Say TITEL Do i=1 To 12 Say 'Spel 'Right(i,2)': 'Right(PUNTEN.i,4)'
('ZOMAAR.i')' End Exit 0
TABELINT.rex
/* REXX */ Do i=1 To 12 WAARDE.i = 3 * i + 5 End Do i=1 To 12 Say 'De waarde
van element 'Right(i,2)' is 'Right(WAARDE.i,2) End Exit 0
TEKSTIN.rex
/* REXX */ Say Say 'Tik een tekst in, niet meer dan 80 tekens.' Say 'Als
de eerste letter een X is, stopt het programma.' Do Until (Left(TEKST,1)
= 'x' | Left(TEKST,1) = 'X') Pull TEKST /* Lees een tekst in */ Say 'De
tekst is "'TEKST'"' /* en druk hem af ... */ End Say Say 'Einde programma.'
Exit 0
TERUG.rex
/* REXX */ REGEL = 'Dit is een string.' Call HeenWeer 1 Say Exit 0 HeenWeer:
Procedure Expose REGEL Arg INDEX LETTER = Substr(REGEL,INDEX,1) Call CharOut,LETTER
If (LETTER <> '.') Then Call HeenWeer INDEX+1 Else Say Call CharOut,LETTER
Return 0
TKANDER.rex
/* REXX */ a = -27 /* initialisatie */ b = 9.7531 c = 'Jan' d = 'A' v =
a /* v wordt integer -27 */ v = b /* v wordt float 9.7531 */ v = c /* v
wordt string Jan */ v = d /* v wordt karakter A */ Exit 0
TOEKENN.rex
/* REXX */ a = 12 /* initialisatie */ b = 3 c = a + b /* 1 */ c = a - b
/* 1 */ c = a * b /* 1 */ c = a / b /* 1 */ c = a % b /* 1 */ c = 12 * a
+ b / 2 - a * b * 2 / (a * c + b * 2) /* 2 */ c = c / 4 + 13 * (a + b) /
3 - a * b + 2 * a * a /* 2 */ a = a + 1 /* 3 */ b = b * 5 /* 3 */ Exit 0
VAKJES.rex
/* REXX */ Do K=1 To 3 /* Vul de tabel */ Do S=1 To 13 VAKJE.K.S = K * 100
+ S End End VAKJE.2.6 = -1; /* verander een specifieke */ VAKJE.2.2 = VAKJE.2.6
/* kopieeer een vakje */ Do S=1 To 13 /* Druk de tabel af */ Call CharOut,'Spel
'Right(S,2)':' Do K=1 To 3 Call CharOut,Right(VAKJE.K.S,8) End Say End Exit
0
VERGELYK.rex
/* REXX */ x = 11; y = 11; z = 11 a = ' '; b = ' '; c = ' ' r = 12.987;
s = 12.987; t = 12.987 /* Eerste groep */ If (x = y) Then z = -13 /* z wordt
-13 */ If (x > z) Then a = 'A' /* a wordt 'A' */ If \(x > z) Then a = 'B'
/* er verandert niets */ If (b <= c) Then r = 0.0 /* r wordt 0.0 */ If (r
<> s) Then t = z / 2 /* t wordt -6.5 */ /* Tweede groep */ x = 77; y = 77;
z = 77 /* initialisatie */ If ((x = y) & (x = 77)) Then z = 33 /* z wordt
33 */ If ((x > y) | (z > 12)) Then z = 22 /* z wordt 22 */ /* Tweede groep
*/ x = 77; y = 77; z = 77 /* initialisatie */ If ((x = y) & (x = 77)) Then
z = 33 /* z wordt 33 */ If ((x > y) | (z > 12)) Then z = 22 /* z wordt 22
*/ /* Derde groep */ If (x = x) Then z = 27.345 /* z veranderd altijd !
*/ If (1) Then z = 27.345 /* TRUE, z veranderd altijd ! */ If (x <> x) Then
z = 27.345 /* z veranderd niet */ If (0) Then z = 27.345 /* FALSE, z veranderd
niet */ Exit 0
WHILE.rex
/* REXX */ PUNTEN = 0 Do While (PUNTEN < 60) Say 'Het totaal aantal punten
is 'PUNTEN PUNTEN = PUNTEN + 10 End Exit 0
ZEGTYD.rex
/* REXX */ W = 'twaalf een twee drie vier vijf zes zeven', 'acht negen tien
elf twaalf dertien veertien' Parse Value Time() With HH ':' MM ':' . HH
= HH + 1 Call CharOut,'Het is ' Select When (MM < 1) Then Call CharOut,'precies
'Word(W,HH//12)' uur' When (MM < 2) Then Call CharOut,'een minuut over 'Word(W,HH//12)
When (MM < 15) Then Call CharOut,Word(W,MM+1)' minuten over 'Word(W,HH//12)
When (MM < 16) Then Call CharOut,'kwart over 'Word(W,HH//12) When (MM <
29) Then Call CharOut,Word(W,31-MM)' minuten voor half 'Word(W,HH//12+1)
When (MM < 30) Then Call CharOut,'een minuut voor half 'Word(W,HH//12+1)
When (MM < 31) Then Call CharOut,'half 'Word(W,HH//12+1) When (MM < 32)
Then Call CharOut,'een minuut over half 'Word(W,HH//12+1) When (MM < 45)
Then Call CharOut,Word(W,MM-29)' minuten over half 'Word(W,HH//12+1) When
(MM < 46) Then Call CharOut,'kwart voor 'Word(W,HH//12+1) When (MM < 59)
Then Call CharOut,Word(W,61-MM)' minuten voor 'Word(W,HH//12+1) Otherwise
Call CharOut,'een minuut voor 'Word(W,HH//12+1) End Say '...' Exit 0
|