Site Index - Feedback - Impressum |
| |||||||||
|
|
( Archiv ) | ( Neues Thema ) |
26.01.2000 |
Re: ...hat funktioniert (von: Alexander Hoff, 00:00:00) | « ^ » |
Nachfolgend die beiden angekündigten Prozeduren für eine möglichst allgemeingültige Lösung dieses Verknüpfungsproblems. Der Code ist zwar jetzt noch länger (zumal kommentiert) und 'umständlicher' geworden, dafür kann man ihn aber jetzt in beliebige REXX-Skripte einbauen. Rudimentäre Fehlerbehandlung inklusive (wer mag kann das Skript gerne erweitern ;-) ).
ciao Alex /* test */ /* Beispiel-Aufruf : */ say 'Ergebnis 1 AND 255: ' ByteCompare(1,255) exit 0 /* ------------------------------------------------------------------------ */ /* (w) Alexander Hoff (AHoff@topmail.de) */ /* ------------------------------------------------------------------------ */ ByteCompare: procedure /* */ /* ByteCompare vergleicht zwei Zahlen aus dem dezimalen Wertebereich von */ /* 1 bis 255 unter Verwendung des UND-Operators logisch mit- */ /* einander. Hintergrund für die Prozedur ist die oftmals */ /* Probleme bereitende BITAND-Vernüpfung von REXX */ /* */ /* Rückgabewert das dezimale Ergebnis der binäre Verknüpfung bei fehler- */ /* freier Ausführung, -1 andernfalls. */ /* */ /* Parameter */ /* zahl1, zahl2 die beiden dezimalen Zahl, die bitweise miteinander ver- */ /* glichen werden sollen. Hierbei gilt: */ /* 0 =< zahl1, zahl2 =< 255 */ /* */ /* weise die übergebenen Parameter den Variablen zu*/ zahl1=ARG(1) zahl2=ARG(2) /* überprüfe, ob die übergebenen Parameter aus Ziffern bestehen */ /* Vorsicht: "" wird als der angebenen Ziffermenge zugehörig */ /* ausgewertet. */ if VERIFY(zahl1,'1234567890')<>0 | VERIFY(zahl2,'1234567890')<>0 then signal ParameterErr /* überprüfe, ob die übergebenen Parameter im Wertebereich sind */ if zahl1="" | zahl2 ="" | zahl1 < 0 | zahl1 > 255 | zahl2 < 0 | zahl2 > 255 then signal ParameterErr /* Fein, bis hier haben wir also zwei Parameter, die beide aus Ziffern */ /* bestehen und sich im erlaubten Wertebereich tummelt. Dann können wir */ /* ja jetzt endlich anfangen... */ /* Umwandlung der Zahlen ins Binärformat (korrigiert) */ zahl1 = DezToBin(zahl1) zahl2 = DezToBin(zahl2) /* logische, bitweise AND-Verknüpfung der beiden Zahlen über die */ /* eingebaute REXX-Funktion */ ergebnis=BITAND(zahl1,zahl2,0) /* Rückverwandlung in Dezimalformat über das Hexformat */ ergebnis = X2D(B2X(ergebnis)) return ergebnis ParameterErr: /* hier wäre Platz für Fehlerausgaben, wenn gewünscht */ return -1 /* ------------------------------------- */ DezToBin: procedure /* */ /* DezToBin wandelt die als Parameter übergebene Dezimalzahl ins */ /* Binärformat um. Die Prozedur ist nur für Parameter aus dem */ /* dem dezimalen Wertebereich von 0 bis 255 (8-Bit) gedacht. */ /* Ein Syntaxcheck hierfür findet nicht statt. */ /* Rückgabewert die konvertierte Zahl */ /* */ /* Parameter */ /* zahl die ins Binärformat zu konvertierende 8-Bit Dezimalzahl */ /* */ zahl = ARG(1) zahl = RIGHT(zahl, 3, 0) /*Die Zahl wird auf 3 Stellen mit Nullen aufgefüllt*/ zahl=X2B(D2X(zahl)) /* Umwandlung ins Hexformat und dann ins Binärformat */ zahl=RIGHT(zahl,8,0) /* und das Ganze auf die 8-Bit Stellen trimmen */ return zahl /* ------------------------------------------------------------------------ */ [ Leser: 57 ] |
|
Mit * markierte Felder müssen ausgefüllt werden ! |
( Zeige alle Einträge ) | ( Zur Startübersicht ) |
|
| Peter W. | 127 | 24.01.2000 | 00:00 |
| Alexander Hoff | 68 | 24.01.2000 | 00:00 |
| Peter W. | 66 | 24.01.2000 | 00:00 |
| Peter W. | 67 | 25.01.2000 | 00:00 |
| Alexander Hoff | 66 | 25.01.2000 | 00:00 |
| Alexander Hoff | 57 | 26.01.2000 | 00:00 |
| GA | 48 | 26.01.2000 | 00:00 |
| GA | 32 | 02.02.2000 | 00:00 |
| GA | 29 | 03.02.2000 | 00:00 |
|