[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2008
    Beiträge
    93

    RPGLE konvertieren Alpha nach Dezimal

    Hallo Allerseits,

    ich glaube, ich stehe gerade auf dem Schlauch..... Bitte um Hilfe!!!

    Ich habe ein Feld, definiert als 10A.
    Der Inhalt ist z.b. ' 4951,00'

    Dann habe ich ein Feld, definiert als 15P 2

    und möchte, dass im Feld 2 dann der numerische Wert 4951,00 drinsteht.

    Ich krieg es gerade nicht hin.....

    Kann mir jemand helfen?

    Vielen Dank schonmal.....

    MfG

    Alexander May

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    %dec(Alpha:Länge:NK)

    z.B. %DEC(FELD:15:2)

    Ob Komma oder Punkt entscheidet die H-Bestimmung DECEDIT.
    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
    Aug 2001
    Beiträge
    2.928
    [QUOTE=Fuerchau;61695Ob Komma oder Punkt entscheidet die H-Bestimmung DECEDIT.[/QUOTE]

    Ob Komma oder Punkt ist völlig egal. (Der String darf nur keine zusätzlichen Tausender-Punkte oder Kommata enthalten).
    Unabhängig von der Einstellung in den H-Bestimmungen kann beides konvertiert werden.

    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

  4. #4
    Registriert seit
    Jan 2008
    Beiträge
    93
    Hallo Ihr beiden,

    Danke für die Beiträge, hab es hinbekommen.
    Manchmal steht man echt auf der Leitung oder der Tag is einfach zu lang.

    Schönen Abend noch....

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    @Birgitta
    Ich habe das aber ausprobiert.
    Wenn ich DECEDIT nicht korrekt angebe, gibts beim %DEC einen MCH-Fehler.
    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

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Also beim mir läuft das folgende Programm ohne Probleme und soweit ich mich erinnern kann hat %DEC auch immer korrekt funktioniert.

    PHP-Code:
    H DEBUG   DECEDIT('0,')  DATEDIT(*DMY.) DATFMT(*ISO
     *****************************************************************
    D Alpha           S             15A                               
    D Numer           S             11P 2                             
    D Index           S              3U 0                             

    D PGMSDS         SDS                                              
    D   SDSMsgTxt            91    120                                
    *****************************************************************
     /
    Free                                                            
       
    For Index 1 to 7;                                            
          
    Select;                                                     
          
    When Index 1;                            
               
    Alpha '11111';                      
          
    When Index 2;                            
               
    Alpha '22222,22';                   
          
    When Index 3;                            
               
    Alpha '3333.333';                   
          
    When Index 4;                            
               
    Alpha ' 4 4 4, 44';                 
          
    When Index 5;                            
               
    Alpha '   55 5.5 5';     
           
    When Index 6;                
               
    Alpha '-66 6.66';       
          
    When Index 7;                
               
    Alpha '77777, 77-';               
          
    EndSl;                                     
          
    Monitor;                                   
            
    Numer = %Dec(Alpha112);              
            
    Dsply ('Numer: ' + %Char(Numer));        
          
    On-Error;                                  
            
    Dsply (%Trim(Alpha) + SDSMsgTxt);        
          
    EndMon;                                    
       EndFor;                                       
       *
    InLR = *On;                                
     /
    End-Free 
    MCH-Fehler bedeuten, dass eigentlich ein Parameter/Wert fehlt und nicht, dass ein falscher Wert eingegeben wurde.
    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

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... dann kann das zaubern, oder rät und macht dann bei %dec(100.000) mal hundert und mal hunderttausend draus und hat damit immerhin eine Trefferquote von 50%, was für RPG garnicht mal so schlecht ist.

    D*B

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Unabhängig von der Einstellung in den H-Bestimmungen kann beides konvertiert werden.

    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    @Dieter

    wie zuvor bereits erwähnt, Tausender Punkte werden ignoriert, d.h. er rät nicht, sondern 100.000 wird nach den Regeln in 100 konvertiert!!!

    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

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    heißt jetzt ohne Probleme, dass 1 und 2 funzt und der Rest auf den Hammer läuft, sprich durch den error Block des monitor läuft?
    Alles andere verursacht ja im Zweifel Probleme!!!

    D*B

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Also beim mir läuft das folgende Programm ohne Probleme und soweit ich mich erinnern kann hat %DEC auch immer korrekt funktioniert.

    PHP-Code:
    H DEBUG   DECEDIT('0,')  DATEDIT(*DMY.) DATFMT(*ISO
     *****************************************************************
    D Alpha           S             15A                               
    D Numer           S             11P 2                             
    D Index           S              3U 0                             

    D PGMSDS         SDS                                              
    D   SDSMsgTxt            91    120                                
    *****************************************************************
     /
    Free                                                            
       
    For Index 1 to 7;                                            
          
    Select;                                                     
          
    When Index 1;                            
               
    Alpha '11111';                      
          
    When Index 2;                            
               
    Alpha '22222,22';                   
          
    When Index 3;                            
               
    Alpha '3333.333';                   
          
    When Index 4;                            
               
    Alpha ' 4 4 4, 44';                 
          
    When Index 5;                            
               
    Alpha '   55 5.5 5';     
           
    When Index 6;                
               
    Alpha '-66 6.66';       
          
    When Index 7;                
               
    Alpha '77777, 77-';               
          
    EndSl;                                     
          
    Monitor;                                   
            
    Numer = %Dec(Alpha112);              
            
    Dsply ('Numer: ' + %Char(Numer));        
          
    On-Error;                                  
            
    Dsply (%Trim(Alpha) + SDSMsgTxt);        
          
    EndMon;                                    
       EndFor;                                       
       *
    InLR = *On;                                
     /
    End-Free 
    MCH-Fehler bedeuten, dass eigentlich ein Parameter/Wert fehlt und nicht, dass ein falscher Wert eingegeben wurde.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ???
    solll das jetzt heißen, das sowohl Punkt als auch Komma immer Dezimalzeichen sind
    ???
    das wäre ja noch schlimmer als raten


    Zitat Zitat von B.Hauser Beitrag anzeigen
    @Dieter

    wie zuvor bereits erwähnt, Tausender Punkte werden ignoriert, d.h. er rät nicht, sondern 100.000 wird nach den Regeln in 100 konvertiert!!!

    Birgitta
    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
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von BenderD Beitrag anzeigen
    heißt jetzt ohne Probleme, dass 1 und 2 funzt und der Rest auf den Hammer läuft, sprich durch den error Block des monitor läuft?
    Alles andere verursacht ja im Zweifel Probleme!!!

    D*B
    Die alphanumerischen Werte werden auch dann, wenn der Monitor-Block fehlt konvertiert!
    PHP-Code:
    Job 029946/HAUSER/HS_S01A im Subsystem QINTER
    DSPLY  Numer
    11111,00                       
    DSPLY  Numer
    22222,22                       
    DSPLY  Numer
    3333,33                        
    DSPLY  Numer
    444,44                         
    DSPLY  Numer
    555,55                         
    DSPLY  Numer
    : -666,66                        
    DSPLY  Numer
    : -77777,77 
    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

Similar Threads

  1. Datumfeld in RPGLE löschen
    By Mr.iSeries in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 17-01-07, 10:57
  2. Cobol <> RPGLE
    By Xanas in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 13-12-06, 13:38
  3. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  4. num. Feld in Datumsfeld konvertieren
    By edig in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 27-07-06, 08:20
  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
  •