Weblessen.nl - Voor iedereen die wat wil leren..


REXX

Index
REXX Index
Voorwoord
De eerste stap
Een inleiding tot REXX
Programma besturing
Toekennen en Logisch vergelijken
Functies en Variabelen
Strings en Tabellen
Parsing
Standaard Invoer / Uitvoer
Bestands Invoer / Uitvoer
Structuren
Karaktermanipulatie

Appendix
Naamgeving
Voorbeeldprogramma's
Totaal programma
Scherm-/bestandsbeschrijvingen Een FTP client voor Windows95/98

Standaard Invoer/Uitvoer

 

De REXXUTIL library

Bestudeer het programma INVUITV.rex voor een voorbeeld van standaard Invoer/Uitvoer. Standaard Invoer/Uitvoer refereert aan die gevallen waarbij gegevens worden gelezen van het toetsenbord of geschreven naar het beeldscherm. Omdat dit zo vaak voorkomt, zijn deze randapparaten impliciet aanwezig en hoeven zij niet te worden benoemd in Invoer/Uitvoer opdrachten. Een voorbeeld zal dit duidelijk maken. /* 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 Het eerste wat opvalt is de eerste regel van het programma met als tekst Call RxFuncAdd 'SysGetKey'.... Deze lijkt wel een beetje op de Call die we reeds bestudeerd hebben. Met deze opdracht wordt op de schijf naar een Windows DLL gezocht en, indien gevonden, ingelezen. Het systeem gaat op zoek naar een bestand met de naam REXXUTIL.dll en leest de inhoud ervan op de plaats van het statement. Het zal duidelijk zijn dat REXXUTIL de SysGetKey functie moet bevatten, die deel van het programma uit gaat maken. Het REXXUTIL.dll bestand wordt geleverd met de interpreter en bevat een hoeveelheid functies die de mogelijkheden van de interpreter uitbreiden. REXX is dus uitbreidbaar!

Dit bestand wordt een DLL genoemd en je zult een aantal van dit soort bestanden vinden in de subdirectories die behoren bij de interpreter. Elke DLL heeft een specifieke toepassing en je kunt er een of meerdere toevoegen aan je programma.

De REXX interpreter zal het bestand zoeken in de current subdirectory. Indien niet gevonden, dan wordt wordt het pad afgezocht, aangegeven door middel van het MS-DOS PATH commando.


Invoer/Uitvoer operaties in REXX

In de programmeertaal REXX maken Invoer- en Uitvoer functies geen deel uit van de taal. Ze moeten door de gebruiker zelf worden gedefinieerd. Om niet iedereen het wiel opnieuw uit te laten vinden, hebben de schrijvers van de REXX interpreter al het een en ander gedaan. Verschillende Invoer- en Uitvoer functies worden derhalve bij de interpreter geleverd, via een functie bibliotheek, en kunnen direct worden toegepast bij het schrijven van je programma's. Veel fabrikanten van interpreters hanteren voor deze functies dezelfde namen, waardoor ze een soort standaard zijn geworden. Ook plaats en datatype van de functie parameters zijn zeer consistent. Programma's zijn daardoor overdraagbaar naar een interpreter op een ander platform.

Trek eens wat extra tijd uit en bestudeer de inhoud van het help bestand. Er zullen beslist zaken zijn die je nog niet begrijpt, maar veel zul je herkennen en je kunt er bijzonder veel van leren. Dit bestand beschrijft de In- en Uitvoer functies in de vorm van help-schermen.

Kijk weer naar het voorbeeld programma. Er wordt een character variabele gedeclareerd en een boodschap afgedrukt middels Say. Dan wordt een eindeloze lus gestart, die eindigt zodra we de letter x (of X) intoetsen. Als je niet meer weet hoe iteraties werken, kijk dan nog eens naar Hoofdstuk 3, "Programma besturing". Twee nieuwe functies worden geïntroduceerd, een om een teken van het toetsenbord te lezen en een om een teken af te drukken.

De functie SysGetKey() leest een enkel teken van het standaard invoer apparaat, het toetsenbord, en kent dat toe aan de variabele KEY. De functie CharOut gebruikt het standaard uitvoer apparaat, het scherm, en drukt de letter die in KEY is opgeslagen af. De lus blijft letters lezen en afdrukken totdat we een kleine- of hoofdletter x intikken.


Het inlezen van getallen

Bestudeer nu het programma GETALIN.rex. Het programma is vrijwel identiek aan het vorige. Dit programma werkt met een integer en eindigt wanneer de integer de waarde 100 krijgt. /* 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 In plaats van teken voor teken lezen we hier een getalswaarde in. Dit doen we met behulp van de functie Pull. Deze functie is het broertje van Say en is een Invoer functie in plaats van een Uitvoer functie.

Er wordt een complete regel gelezen, d.w.z. alle tekens die werden ingetikt tot aan de ENTER toets. Het toetsenbord buffer geldt als invoer en wordt doorzocht. Elke aaneengesloten serie cijfers wordt als getal gezien, hetgeen betekent dat er tevens een conversie plaatsvindt van tekst naar numeriek. Wanneer je meerdere getallen op een regel tegelijk intikt (gescheiden door een spatie), zal de punt (.) in de Pull instructie ervoor zorgen dat alleen het eerste getal netjes wordt geconverteerd en afgedrukt. De rest wordt genegeerd. Het getal 100 laat het programma eindigen. Wanneer het getal 100 ergens in het midden van een serie getallen werd ingetikt, zal het eerste getal worden afgedrukt. De rest wordt niet meer verwerkt.

Denk eraan dat het getal dat wordt ingetikt binnen het waardebereik van de integer moet liggen. Dit is machine afhankelijk. Vroeger was een integer altijd 16 bits. Met de komst van Intel 386 en 486 processoren is dat 32 bits geworden. Het is de verantwoordelijkheid van de REXX programmeur te bewaken dat ingevoerde gegevens in dit waardebereik liggen. Compileer en test nu het programma. Probeer het waardebereik uit.


Het inlezen van teksten

Bestudeer het programma TEKSTIN.rex. Dit programma leest een tekst in. /* 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 Wellicht werd je verrast door hetgeen werd afgedrukt. De regel tekst die je intikte, werd precies zo afgedrukt. Het programma eindigt zodra het de letter x op de eerste positie vindt. Door de itererende werking zal het programma stoppen bij het eerste woord op de regel dat met een x begint.

Probeer ook eens meer dan 80 tekens in te voeren. Het hangt van je computersysteem af wat er gebeurt. In de meeste gevallen zal het gewoon goed gaan. Teksten kunnen erg lang worden in een REXX programma.



Webdesign

Maak van Weblessen.nl uw startpagina!
Plaats Weblessen.nl bij uw favorieten. Neem contact met me op.
Heb je een Hosting?
Geef hier jouw mening over jouw web hosting

Webadres.info: Goede domeinnaam kiezen

Gesponsorde links:
Budget Webhosting
Web2host.nl
10eurohost.nl
Denit Hosting Solutions
YourHosting.nl
Starthosting.nl
Eduvision.nl
Educruitment.nl
Webadres.info


De link top 5:
Gratis Computercursussen
WebmasterStartpagina
MijnStartpagina.nu
Bluebird Animatie
Anouksweb
Link aanmelden
Alle Partners

Webmasterwoordenboek
A | B | C | D | E | F
G
| H | I | J | K | L | M
N
| O | P | Q | R | S | T
U | V | W | X | Y | Z

Films vanavond op Tv:

De klok:

(advertentie)

HTML leren
PHP cursus
XML lessen
XHTML les
CSS leer
leer C
REXX online
Red Hat Linux cursus