Programmeren in REXX/Voorbeeld 2: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
GuyDC (overleg | bijdragen)
Toevoeging outputvoorbeeld
GuyDC (overleg | bijdragen)
Verbeteringen tekst - navigatiesjabloon
Regel 1:
{{Programmeren in REXX}}
We bestuderen nu een tweede uitgewerkt voorbeeldprogramma. Het betreft heteen programma '''XTOX'''.dat Dithandig is een handig programma om na te gaan of eenwelke conversieroutineconversies kankunnen werken en welk resultaat we mogen verwachten. Het is namelijk niet altijd zeer intuïtief te weten welke functie tot het beoogde resultaat leidt.
 
EenZo nietlukt numeriekehet stringniet alsom decimaaleen getalalfabetisch proberenkarakter om te gebruikenzetten zalnaar bijvoorbeeldeen aldecimaal nietgetal lukken(C2D). MoetenEn, moeten we eenhet karakter "A" naar hexadecimaal of naar decimaal omzetten om zijn plaats in de karaktertabel te kennen of is omzetting naar decimaal nodig ? Hoe kan ik de binaire voorstelling van het karakter "A" bekomenbinair worden voorgesteld ? Enzovoort. Al deze vragen worden op een overzichtelijke manier beantwoord met dit programmaatje.
{{Code| | Taal= REXX | Titel= XtoX.rex | Code= <pre>
1 | /*****************************************************************
Regel 56:
*'''18''': halen we de hexadecimale karakters eruit...
*'''19''': we gaan na of de karakters geldige hexadecimale karakters zijn, en...
*'''20''': tonen foutbericht en stoppen de procedure met code 5 als dat niet het geval is.
*'''21''': anders zetten we de hexadecimale karakters om naar gewone karakterstring;
*'''24''': nu roepen we een '''test''' subroutine op, één voor één met de namen van de mogelijke conversiefuncties;
*'''34''': de functie haaltpikt de naam van de conversiefunctie op;
*'''35''': dit is de voornaamste regel in deze procedure. Door een '''signal on syntax''' zetten we de detectie van syntaxis fouten aan. Indien een fout wordt ontdekt springen we naar het label ''syntax:'';
*'''36''': omdat we de naam van de functie als variabele binnenkregen moeten we een '''interpret''' bevel gebruiken om de functie op te roepen. Sommige conversies zijn echter niet toegelaten, voornamelijk als een niet- numerieke string alseen getal zou moeten worden gezien invia de D2... functies;
*'''37''': heeft de functie wél een resultaat gegeven, dan kunnen we dat afdrukken, en de functie beëindigen;
*'''40''': de syntax: routine wordt dus opgeroepen bij een ongeldige conversie. We melden dit ook en keren tenslotte ook terug naar de hoofdroutine.
Laten we naar een paar voorbeeldenkeer vanhet uitvoeringprogramma kijkenuitvoeren:
C:\Users\Dmitri>'''rexx d:\RexxProgrammas\xtox "42"x'''
C2D(B)=66 =X'3636'
Regel 74:
X2B(B)=1011 =X'31303131'
B2X(B)=onmogelijk
Onze hexadecimale waarde '42'x is in het begin van het programma als dusdanig herkend en omgezet naar het karakter "B". Dit karakter proberen we nu op alle mogelijke manieren om te zetten. Het is geen numeriek getal, dus dat de omzetting van decimaal mislukkenmislukt was te verwachten. Merk ook op dat het nuttig is zowel de karakterwaarde van het resultaat als de hexadecimale notatie ervan te tonen. We zien inderdaad dat X2C(B) een raar karakter produceert. Hexadecimaal heeft het de waarde '0B'x, en dat ligt in de reeks contolekarakterscontrolekarakters. Als we het programma met karakter "A" als parameter uitvoeren, zienhebben we duidelijkereen mooi voorbeeld van wat er kan gebeuren:
C:\Users\Dmitri>'''rexx d:\RexxProgrammas\xtox A'''
C2D(A)=65 =X'3635'
Regel 85:
X2B(A)=1010 =X'31303130'
B2X(A)=onmogelijk
Bij de X2C omzetting bekomen we de waarde '0A'x en dat is een Line-Feed... dus we gaan inderdaad naar de volgende lijn om het resultaat te tonen, en het alignement van de tekst isgaat niet meer correctverloren.
 
In het begin van het hoofdstuk vroegen we ons af hoe we de binaire voorstelling van het karakter "A" konden bekomen. Wel, uit deze resultaten kunnen we besluiten dat X2B() al niet de goede oplossing is, we moeten een dubbele conversie hanteren, namelijk X2B(C2X(A)). Inderdaad:
Regel 189:
Date(Weekday) = Wednesday
en indien een datum is opgegeven:
C:\Users\Dmitri>'''rexx d:\RexxProgrammas\rexdates 20111216'''
De DATE functie kan volgende formaten produceren voor "20111216"
? ===> Basedate Sorted
Regel 200 ⟶ 201:
Date(Usa ,20111216,"?") = 08/23/63 12/16/11
Date(Weekday ,20111216,"?") = Sunday Friday
 
{{Sjabloon:Navigatie
|Boek =Programmeren in REXX
|vorige =Nog bevelen en functies
|huidige =Voorbeeld 2
|volgende=Host Commando's}}
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.