OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( 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 ]

Datum Thema
07.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !

( Zeige alle Einträge ) ( Zur Startübersicht )
Thema von: Leser Datum Zeit
 REXX-Problem
Peter W.12724.01.200000:00
 Re: REXX-Problem
Alexander Hoff6824.01.200000:00
 Re: REXX-Problem
Peter W.6624.01.200000:00
 ...hat funktioniert
Peter W.6725.01.200000:00
 Re: ...hat funktioniert
Alexander Hoff6625.01.200000:00
 Re: ...hat funktioniert
Alexander Hoff5726.01.200000:00
 REXX : Dezimale und binäre Zahlen, wie dargestellt?(I)
GA4826.01.200000:00
 Re: REXX : Dezimale und binäre Zahlen, wie dargestellt?(II): Ganze, positive Zahlen
GA3202.02.200000:00
 (II): Ganze, positive Zahlen: Ergänzung
GA2903.02.200000:00


php.net OpenIT © 1998-2017 by WebTeam OS2.org