Wie funktioniert der Z-Operator?

Getting started ... Alles für einen gelungenen Start.
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Wie funktioniert der Z-Operator?

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Hallo zusammen,

In der Theorie glaube ich es zwar verstanden zu haben, aber in der Praxis haut es nicht hin.

FH5AMF30, Zeile 147:

Code: Alles auswählen.

IF NOT ( ( CHA_HEX_GROUP+1(1) Z CHA_STATUS+1(1) )
CHA_HEX_GROUP und CHA_STATUS sind beide TYPE X(2)

Im Debugger wertet bei mir obenstehender IF zu true aus, wenn CHA_HEX_GROUP = 0036 und CHA_STATUS = 0004 ist.

Der Debugger konstatiert auch, dass

CHA_HEX_GROUP+1(1) = 36 und
CHA_STATUS+1(1) = 04 ist.

Nach meiner Überzeugung ist aber 36 hexadezimal = 54 dezimal = 011011 binär und 04 hexadezimal = 04 dezimal = 001000 binär. Damit ist also in CHA_STATUS+1(1) das dritte Bit gesetzt und in CHA_HEX_GROUP+1(1) auch. Der F1-Hilfe des Z-Operators zufolge müsste dieser daher hier zu "false" auswerten?

Wo liegt mein Denkfehler?

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Wie funktioniert der Z-Operator?

Beitrag von wreichelt (Top Expert / 1046 / 30 / 192 ) »
Hallo,

Hilft das ?

Z: Zeros: Wahr, wenn die Bits, die in operand2 1 sind, in operand1 0 sind. Wenn operand2nur Nullen enthält, ist der logische Ausdruck immer wahr.MMixed: Wahr, wenn von den Bits, die in operand2 1 sind, in operand1 mindestens eines 1 und eines 0 ist. Wenn operand2 nur Nullen enthält, ist der logische Ausdruck immer wahr.

Re: Wie funktioniert der Z-Operator?

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
DeathAndPain hat geschrieben:FH5AMF30, Zeile 147:

Code: Alles auswählen.

IF NOT ( ( CHA_HEX_GROUP+1(1) Z CHA_STATUS+1(1) )
Da ist eine Klammer offen. Ist das Problem evtl. an anderer Stelle?

Re: Wie funktioniert der Z-Operator?

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
Läuft doch genau wie die Doku sagt. Hast du evtl. den markierten Teil nicht so gelesen wie er da steht oder evtl. die Doku zum Operator O, der sich so verhält wie du es scheinbar erwartest?
Doku hat geschrieben:Z Zeros: True, if the bits that are 1 in operand2 are 0 in operand1. If operand2 contains only zeroes, the logical expression is always true.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Wie funktioniert der Z-Operator?

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
wreichelt hat geschrieben:Hilft das ?

[snip]
Nein, die F1-Hilfe lesen kann ich selber, danke. Aber das, was da steht, deckt sich nach meiner Überzeugung nicht mit dem Systemverhalten.
Daniel hat geschrieben:
DeathAndPain hat geschrieben:FH5AMF30, Zeile 147:

Code: Alles auswählen.

IF NOT ( ( CHA_HEX_GROUP+1(1) Z CHA_STATUS+1(1) )
Da ist eine Klammer offen. Ist das Problem evtl. an anderer Stelle?
Nein, da kommt noch eine zweite Bedingung mit AND dahinter. Aber wenn das Gesamtgebilde auf true auswertet, dann muss ja bei AND insbesondere der von mir zitierte erste Teil true sein.

Wer sich das Original anschauen mag: ich habe ja im Ausgangstext angegeben, an welcher Stelle sich der fragliche Code im SAP-Standard befindet.
black_adept hat geschrieben:Läuft doch genau wie die Doku sagt.
Nein, eben nicht. Bit 3 in Operand 2 ist 1. Damit Z true ist, müsste - gemäß der von Dir selbst zitierten Regel - Bit 3 in Operand 1 Null sein. Wie ich aber vorgerechnet habe, ist das Bit 3 in Operand 1 gleichfalls 1.

Re: Wie funktioniert der Z-Operator?

Beitrag von Daniel (Specialist / 314 / 68 / 44 ) »
Folgender Test führt zu Nein:

Code: Alles auswählen.

DATA: hex1 TYPE x VALUE '36',
      hex2 TYPE x VALUE '04'.

IF hex1 Z hex2.
   WRITE 'Ja'.
ELSE.
   WRITE 'Nein'.
ENDIF.

Re: Wie funktioniert der Z-Operator?

Beitrag von black_adept (Top Expert / 4099 / 128 / 941 ) »
DeathAndPain hat geschrieben:
black_adept hat geschrieben:Läuft doch genau wie die Doku sagt.
Nein, eben nicht...
Du hast doch alles genau in deinem Originalpost korrekt ausgeführt, dass x36 Z x04 false ist. Kann es sein, dass du nicht gesehen hast, dass dein Ausdruck noch ein "NOT" vor der ganzen Bedingung hat, die das Ergebnis dann halt umkehrt?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Wie funktioniert der Z-Operator?

Beitrag von DeathAndPain (Top Expert / 1952 / 259 / 413 ) »
Um Himmels willen, Du hast recht. :x

Seite 1 von 1

Vergleichbare Themen

12
Antw.
3549
Views
Value mit Corresponding und cond Operator, funktioniert nicht bei gleichen Feldnamen
von Romaniac » 04.09.2024 15:13 • Verfasst in ABAP® Core
2
Antw.
2629
Views
operator
von kostonstyle » 06.05.2008 08:51 • Verfasst in ABAP® für Anfänger
16
Antw.
1894
Views
FOR-Operator
von ralf.wenzel » 01.09.2020 17:19 • Verfasst in ABAP® Core
1
Antw.
1786
Views
dynamischer Operator
von bliP! » 22.05.2006 14:24 • Verfasst in ABAP Objects®
6
Antw.
3012
Views
String in Operator?
von Murdock » 20.08.2012 16:50 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 177
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 177
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822