[NEWSboard IBMi Forum]

Thema: Hexa -> alpha

  1. #1
    Registriert seit
    Nov 2001
    Beiträge
    170

    Question Hexa -> alpha

    Hallo @all,

    ich muß ein uraltes Programm mit Daten versorgen. Das Programm stammt noch aus der Zeit, als Speicherplatz teuer war und an allen Ecken gespart wurde. In der Input-Datei besteht das Datum daher aus drei einstelligen Alphafeldern. Im ersten Alpha-Feld steht der Kalendertag hexadezimal verschlüsselt. Im zweiten der Monat hexadezimal verschlüsselt und das zweistellige Jahr entsprechend hexadezimal im dritten Feld. Wenn man DSPPFM und F10 macht kann man das Datum auf der Hexa-Seite also lesen (29 01 10).
    Damit das alte Programm weiterlaufen kann, muß ich nun den umgekehrten Weg gehen und die Datumswerte als hexa-Werte in die Alphafelder pressen. Mit welchem RPG-Befehl bekomme ich z.B. den Kalendermonat 01 hexadezimal in ein einstelliges Alpha-Feld ?

    Vielen Dank !

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.353
    Definiere die Felder einfach als 2B 0 !
    Dann kannst du die einfach als Zahl (0-99) ansprechen, ich denke das reicht doch:

    ILE:
    D TTFELD 2B 0

    RPG:
    I B 0 00TTFELD
    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
    Nov 2001
    Beiträge
    170
    Danke, habe da Feld eingebaut und befüllt.
    Aber was bringt mir das ?
    Wofür steht die Datenart 'B' und wie bekomme ich jetzt dieses Feld in ein einstelliges Alpha-Feld ?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.891
    Die Felder als Integer zu definieren ist besser, da Integer intern nicht in gepackt konvertiert wird!

    PHP-Code:
    D DSDATUM         DS                                           
    D   Datum                                                      
    D     Jahr                       3U 0 Overlay
    (Datum)           
    D     Monat                      3U 0 Overlay(Datum: *Next)    
    D     Tag                        3U 0 Overlay(Datum: *Next)  
     /
    Free
        Jahr 
    10;
        
    Monat 1;
        
    Tag =  29;
        
    //--> Datum ist 3A und enthält x'0A011D'
     
    /End-Free 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Nov 2001
    Beiträge
    170
    Danke für die Alternative.

    Aber das ist leider nicht das, was ich brauche.
    Bei mir müßte in Datum dann x'10129' stehen, also das Datum in Klarschrift.

  6. #6
    Registriert seit
    Nov 2003
    Beiträge
    2.328
    Vielleicht so?
    PHP-Code:
    D DS              DS                                  
    D ZAHLHEX                        2A                   
    D ZAHL                           3P 0 OVERLAY
    (ZAHLHEX)
    D HEX                            1A                   
    D
    *****************************************************
    C                   MOVE      *ZERO         ZAHL      
    C                   ADD       29            ZAHL      
    C                   MULT      10            ZAHL      
    C     1             SUBST     ZAHLHEX       HEX       
    C                   MOVE      
    *ON           *INLR 

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.353
    Na dann gehts (analog Pikachu) auch mit genau einer Definition:

    D MYDATE 7P 0 INZ
    D HEXDATE 3 overlay(MYDATE)

    MYDATE = Neuesdatum * 10;
    ZielDatum = HEXDATE;

    bzw.

    HEXDATE = QuellDatum;
    MYDATE /= 10;
    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

  8. #8
    Registriert seit
    Nov 2001
    Beiträge
    170

    Smile

    Hurra es hat geklappt !
    Jetzt muß ich nur noch verstehen, was ihr mir da erzählt habt

    Vielen Dank und schönes WE

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.353
    Ist doch ganz einfach:
    Eine gepackte Zahl legt je Halbbyte 1 Ziffer ab dazu kommt noch im rechtesten Halbbyte das Vorzeichen (F=Plus, D=Minus, alte Hobel kenn noch C=Plus).
    Also hat eine gepackkte Zahl immer eine ungerade Anzahl Stellen (auch wenn du 6p0 definierst).

    Durch den Overlay redefinierst du den Speicher.
    Mit dem kleinen Trick *10 bzw. / 10 schiebst du nur die Halbbytes hin und her, damit das Hexfeld korrekt funktionert.

    Dieter nennt sowas bitfummellei.
    Aber als ich noch mit 8"-Disketten hantierte ...

    Kennt eigentlich noch jemand die guten alten Magnetkonten-Computer ?
    Da hatten wir nur 5-Bit je Info und komlette Buchhaltungen abgewickelt.
    Jaja, die schöne Vergangenheit wo ein Programmier-Statement noch bei DM 0,50 lag ...
    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

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.304
    ... Jungs (und Mädels), ich bin der älteste der genannten - und habe aus diesen Zeiten gelernt...


    D*B

    PS: Was lernen wir daraus? Das gehört in eine Procedure huddel2Datum verpackt, damit sich die jungen Leute nicht erschrecken müssen...


    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ist doch ganz einfach:
    Eine gepackte Zahl legt je Halbbyte 1 Ziffer ab dazu kommt noch im rechtesten Halbbyte das Vorzeichen (F=Plus, D=Minus, alte Hobel kenn noch C=Plus).
    Also hat eine gepackkte Zahl immer eine ungerade Anzahl Stellen (auch wenn du 6p0 definierst).

    Durch den Overlay redefinierst du den Speicher.
    Mit dem kleinen Trick *10 bzw. / 10 schiebst du nur die Halbbytes hin und her, damit das Hexfeld korrekt funktionert.

    Dieter nennt sowas bitfummellei.
    Aber als ich noch mit 8"-Disketten hantierte ...

    Kennt eigentlich noch jemand die guten alten Magnetkonten-Computer ?
    Da hatten wir nur 5-Bit je Info und komlette Buchhaltungen abgewickelt.
    Jaja, die schöne Vergangenheit wo ein Programmier-Statement noch bei DM 0,50 lag ...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Nov 2001
    Beiträge
    170

    Thumbs up

    Danke Fuerchau,

    hatte mir das am Freitag noch mal in Ruhe angeschaut und dann auch so weit verstanden

    @Bender
    Ist doch so richtig schön, wenn man mit fast 41 noch als junger Mensch bezeichnet wird

Similar Threads

  1. Alpha Feld -> Alpha Feld ohne führende Nullen
    By llschuh in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 18-03-13, 06:11
  2. num -> alpha rechtsbündig mit dezimalzeichen
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 09-02-07, 16:51
  3. num -> alpha aber linksbündig ohne führende nullen
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-02-07, 14:26
  4. cpyfrmpcd --> cpyfrmstmf
    By malzusrex in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 26-07-06, 12:09
  5. RPG-ILE: Alpha --> Numeric
    By TomWaf in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 12-05-06, 09:07

Berechtigungen

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