[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    192

    Binär rechnen & Ergebnis binär anzeigen

    Tachchen zusammen,

    Ich muss in einem Programm binär rechnen..

    DTEST1 S 9B 0
    DTEST2 S 9B 0
    DTESTERG S 9A

    In Testerg soll bitte das Ergebnis aus Test1 - 2*Test2 stehen.

    Alles eigentlich ganz einfach... dachte ich.

    Eval test1 = test1 - test2
    Eval test1 = test1 - test2
    eval testerg = %char(test1) oder auch move test1 testerg

    Ich initialisiere die Felder derzeit mit 111111111 und 000000001

    Wollte also eigentlich 111111101 herausbekommen.
    Habe derzeit 11111109 als Ergebnis.

    Ich will aber in testerg die Binäre zeichenfolge haben also nur Einsen und Nullen.


    Googlen hat mich auch nicht wirklich weitergebracht...
    Also frage ich einfach mal die geballte Kraft des Forums

    Gruss

    Rince

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da hilft nur eine C-Funktion:
    "sprintf(ziel, '%X', Zahl)".
    Oder als SQL:
    /exec sql
    c+ set :ziel = hex(:Zahl)
    c/end-exec
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hi,

    vielen Dank für die schnelle Hilfe...

    aber nun steht in meiner Variable:

    TESTERG = '000001FE '

    laut Debug.

    Irre ich mich oder ist das der Hex Wert ?
    Ich wollte aber den Binär wert.

    Bitte sagt mir meinen Denkfehler.

    Gruss

    Rince

  4. #4
    Registriert seit
    Aug 2004
    Beiträge
    923

    binär

    Zitat Zitat von Rincewind
    Hi,

    vielen Dank für die schnelle Hilfe...

    aber nun steht in meiner Variable:

    TESTERG = '000001FE '

    laut Debug.

    Irre ich mich oder ist das der Hex Wert ?
    Ich wollte aber den Binär wert.

    Bitte sagt mir meinen Denkfehler.

    Gruss

    Rince
    hello,

    1F ist der Wert 1 im positiven und 1D im negativen Sinne als hexwert dargestellt...
    du wirst nicht drumrumkommen dir selber ne kleine routine zu schreiben um den binärwert so darstellen zu können wie du es möchtest...
    das wurde weiter oben schon gesagt..
    das umrechnen geht recht einfach denke ich.

    k.

  5. #5
    Registriert seit
    Oct 2003
    Beiträge
    192
    ??? Das wurde weiter oben schon gesagt ???

    Naja wie dem auch sei...

    1FD ist umgerechnet die 509 die ich als ergebnis wollte
    Da ich dann eh nur diesen HexWert wieder in Binär umrechnen müsste...
    kann ich auch gleich eine Binäre Rechensubroutine schreiben. Derzeit muss ich ja eh immer nur 1 abziehen.

    Danke trotzdem.. und wenn jemand einen schönen (möglichst eleganten) weg findet.. bin ich immer gerne bereit den einzubauen.

    Gruss

    Rince

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Achso !
    Wie wärs mit der Definition:

    d MyChar 4
    d MyBin 10I 0 overlay(MyChar)

    Ich dachte du wolltest den expandierten, also druckbaren Hexwert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hmm,

    so richtig kriege ich das immer noch nicht hin.

    Ich bekomme egal was ich probiere nie eine einfach Zahlenfolge ala 0101 heraus.

    Eventuell drücke ich mich ja auch unklar aus...

    Also:

    Ich will an ein PC Programm einen Zähler übermitteln.
    Diese PC Programm erwartet den Zähler in Binärem Format
    Sprich: 1 = 000 000 001
    2 = 000 000 010
    3 = 000 000 011
    etc.

    Also wollte ich nur immer 1 auf den Wert draufaddieren in Binär und dann das Ergebnis in eine Alpha variable packen (ich muss einen String per Socket übermitteln)

    Und mit den oben genannten Sachen bekomme ich immer nur seltsame Werte heraus die in den Millionen liegen obwohl ich als Ergebnis halt 001 oder 010 erwarte.

    Ich gehe nun erstmal dazu über mir einfach selbst einen Binärzähler zu bauen.. nur sollte wem was einfallen dann freue ich mich auf die Lösung, denn so kann es ja eigentlich nicht völlig korrekt sein.

    Dank euch trotzdem

    Rince

  8. #8
    Registriert seit
    Aug 2004
    Beiträge
    923

    binär

    Zitat Zitat von Rincewind
    .........
    Ich gehe nun erstmal dazu über mir einfach selbst einen Binärzähler zu bauen.. nur sollte wem was einfallen dann freue ich mich auf die Lösung, denn so kann es ja eigentlich nicht völlig korrekt sein.

    Dank euch trotzdem

    Rince
    hello,

    da gabs ja vor ewigkeiten schon in der qusrtool das cmd CVTDECBIN4 bzw. CVTBIN4DEC für umgekehrt...
    wenn du das bzw. die sourcen bei dir noch findest kannst du dir evtl. etwas arbeit sparen...
    um eine zahl der größenordnung 1099511627775 abzudecken, brauchts 40 stellen binär wenn ich richtig gezählt habe...

    viel spass beim basteln des binärzählers...

    kuempi

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo Rince!

    Habe leider im Moment keine Lösung, allerdings einen kleinen Hinweis bezüglich der B-Felder: Diese Definition (9B 0) betrifft nur die interne Darstellung dieser Variablen, nicht jedoch die Wertezuweisungen. Wenn du also diese Felder mit 111111111 und 000000001 initialisierst, dann sind dies dezimale Werte und keine binären! Nur im Arbeitsspeicher werden die Werte der Variablen dann binär (bzw. hexadezimal) abgelegt - im Gegensatz zur gepackten oder gezonten Darstellung. Somit ist auch richtig, dass bei deiner Rechnung 11111109 (dezimal) herauskommt, da ja alles als Dezimalzahlen interpretiert wird ...

    Vielleicht könnten dir für deine Anforderung aber die Befehle BITON, BITOFF und TESTB irgendwie hilfreich sein?

    Viele Grüße
    Jürgen

  10. #10
    Registriert seit
    Dec 2000
    Beiträge
    450
    Das Binärfeld auf der AS/400 entspricht doch einem Integer oder Long auf dem PC. Kannst du da nicht den Wert direkt übergeben ohne Charakter-Feld? (Habe noch nix mit Sockets gemacht, deshalb ehr eine Frage, als eine Antwort)

    Bruno

  11. #11
    Registriert seit
    Aug 2004
    Beiträge
    923

    binärzahl

    also das ist wirklich kein akt ne dezimalzahl als binärstring auszugeben...

    ich hab inclusive wertzuweisung (init) vorher und dsply nach bildschirm und last record setzen mit return 18 zeilen rpg (old style).

    will sagen wir reden hier von nem knackigen fünfzeiler.

    k.

  12. #12
    Registriert seit
    Oct 2003
    Beiträge
    192
    @Kuempi
    Na dann ist es ja für dich ein leichtes diesen 5-Zeiler hier zu posten. (Mir würde auch der 18 zeilen Old RPG Style reichen)



    @Bruno Bei der Socketübergabe schicke ich über bestimmte TCP-IP verbindungen Strings, ich brauche dafür also Alphazeichen.

Similar Threads

  1. Antworten: 3
    Letzter Beitrag: 25-01-07, 09:29
  2. Wirres SQL Ergebnis
    By lyrics in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 12:10
  3. Teildatei mit SQL anzeigen
    By Rico in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 06-07-06, 16:25
  4. Spooldatei sofort anzeigen
    By dino in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 30-05-06, 13:38
  5. Eingabefelder im Command reverse anzeigen
    By becama in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-05-06, 19:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •