Programmeren in REXX/Voorbeeld 2: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
Eerste draft |
Verdere afwerking |
||
Regel 11:
9 | 20 Dec 2000: B2X en X2B functies toegevoegd
10 | ******************************************************************/
11 | parse upper arg arg . 1 kar1 2 /* Argument ophalen */
11 | ▼
12 | hex=0 /* veronderstel geen hexadecimale notatie */
13 | if
14 |
15 |
16 |
17 | if hex then do /* als hexadecimaal is */
19 | end▼
18 | parse var arg "'" arg "'X" /* karakters eruithalen */
19 | if \datatype(arg,'X') then do /* verifiëren of geldig X */
21 | call test C2D▼
20 | say '"'arg'" is geen geldige hex data' ; exit 5;end
22 | call test C2X▼
21 | arg=x2c(arg) /* omzetten naar karakter */
23 | /* Nu hebben we geldige karakters, dus alle conversies proberen */
29 | exit▼
34 | say left(functie'('arg')='val,20)left("=X'"C2X(val)"'",30)▼
33 | /* Functie TEST gaat na of conversie werkt en toont resultaat */
35 | return▼
34 | TEST: parse arg functie /* Welke conversie ? */
35 | signal on syntax /* intercepteer syntax fouten */
37 | SYNTAX:▼
39 | return▼
39 | /* SYNTAX procedure wordt opgeroepen als conversie mislukt */
41 | say tell functie'('arg')=onmogelijk' /* zeg dat het fout is */
</pre>}}
{{sub}}
*'''1''' tot '''10''': mooie inleidende commentaar voor het programma. Ook historiek van veranderingen.
*'''11''': ophalen van het argument, waarbij eerste karakter in ''kar1'' wordt gezet;
*'''13''': als links een ' of een " staat kunnen we te doen hebben met een hexadecimale notatie;
*'''14''': maar dan moet rechts een "X" staan;
*'''15''': dan zetten we hex=1 en vertalen we een eventuele " in '. Gewoon direct het argument vertalen mag niet, want dan zou het argument geen ' of " meer mogen zijn;
*'''17''': als we nu een hexadecimale notatie hebben...
*'''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.
*'''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;
|