[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2004
    Beiträge
    24

    DTAARA(Nummerkreis) per Java-Code um eins erhöhen

    Hallo zusammen..
    Vorneweg muss ich dazu sagen, dass ich gerade Java lerne und am rumversuchen bin.. Evt. kann mir jemand mit meinem Code ein bischen unter die Arme greifen..

    Ich würde gerne per Java-Code eine DTAARA der ISeries auslesen und den Wert der DTAARA um eins erhöhen.. (Nummernkreis)..

    Mein Code:
    Code:
    public class TestDTAARA {
    
        public static void main(String[] args) {
        AS400 systemI = new AS400();
        String value = " ";
        int iValue;
        try{        
            QSYSObjectPathName path = new QSYSObjectPathName("TESTLIB","DTTEST","DTAARA");
            CharacterDataArea dataArea = new CharacterDataArea(systemI, path.getPath());
            value = dataArea.read().trim();
            
            iValue = Integer.valueOf(value).intValue();
            
            iValue = iValue + 1;
            
            value = (new Integer(iValue)).toString();
            
            dataArea.write(value);
            
        } catch (Exception e) {
            System.out.println(e);
        }
    
        }
    }
    Wenn ich das so mache, dann kommt bei gelesenem Inhalt "00000000448" folgendes in der DTAARA an:
    "44900000448"..

    Kann mir jemand erklären, wie ich den Wert nun wieder rechtsbündig in value schreiben kann, damit dann der write entsprechend richtig in die DTAARA schreibt?

    Danke schonmal im voraus und sorry, wenn das eine "dumme" Frage ist

    Grüße
    Stefan

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ich würde es nicht mit toString ausgeben sondern den Wert mittels Format entsprechend aufbereiten.
    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 2004
    Beiträge
    24
    entschuldige bitte, wenn ich nochmal "doof" fragen muss, aber könntest du mir das evt. ein bischen genauer erläutern?

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... schüttel
    da dreht sich mir doch alles um, solche Altlasten noch in Java zu übertragen, sowas gehört in die Datenbank. BTW: schief gehen tut das eh, wenn das zwei gleichzeitig versuchen.

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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    @Dieter
    Er könnte ja ggf. noch einen ALCOBJ/DLCOBJ drumbauen .

    @Stefan
    Wie man in Java formatiert ?
    Da muss es doch entsprechende Funktionen geben, numerische Werte zu formatieren, so dass du anschliessend einen String mit Vornullen erhältst.
    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
    Mar 2002
    Beiträge
    5.287
    dafür gibt es in Java
    DecimalFormat (Java 2 Platform SE v1.4.2)
    und für richtiges Gehuddel gibt es in der Toolbox noch Klassen mit AS/400 Typen (AS400ZonedDecimal etc.), da kann man jeden Schmutz reinpacken, Exceptions fliegen dann beim rausholen (würg, schüttel)

    Das ist doch nix zum Java lernen, da gibt es besseres:
    - Java-Einfuehrungen von H.Partl
    - The Java™ Tutorials
    - Galileo Computing :: Java ist auch eine Insel (8. Auflage)
    und vieles andere mehr.

    D*B

    Zitat Zitat von Fuerchau Beitrag anzeigen
    @Dieter
    Er könnte ja ggf. noch einen ALCOBJ/DLCOBJ drumbauen .

    @Stefan
    Wie man in Java formatiert ?
    Da muss es doch entsprechende Funktionen geben, numerische Werte zu formatieren, so dass du anschliessend einen String mit Vornullen erhältst.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Oct 2004
    Beiträge
    24
    @fuerchau: Danke für den Tip mit dem formatieren..

    @Bender: jo DecimalFormat hab ich jetzt benutzt.. (siehe Code).. hälst du das jetzt für zu fehleranfällig oder wie darf ich dich verstehen?

    Code:
        public static void main(String[] args) {
        AS400 systemI = new AS400();
        String value;
        int intValue;
        String valueFormat = "0";
        try{        
            QSYSObjectPathName path = new QSYSObjectPathName("GRANER","DTTEST","DTAARA");
            CharacterDataArea dataArea = new CharacterDataArea(systemI, path.getPath());
            value = dataArea.read().trim();
            for (int i = 0; i < value.length()-1; i++) {
            valueFormat = valueFormat + "0";
            }
            intValue = Integer.valueOf(value).intValue();
            value =  new java.text.DecimalFormat(valueFormat).format(intValue+1);
            
            dataArea.write(value);
        
        } catch (Exception e) {
            System.out.println(e);
        }

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    A liest
    B liest
    A schreibt
    B schreibt

    B gewinnt gemäß dem Humoristenprinzip (wer zuletzt lacht...)

    dagegen hat man im vorigen Jahrhundert Datenbanken erfunden, da nennt man das lost update und es ist geradezu ein Treppenwitz der Geschichte und Realsatire, dass man auf der Maschine, die als erste Datenbank konnte, dann so wichtige Informationen in eine DTAARA reinschreibt... mich schüttelts schon wieder

    D*B

    Zitat Zitat von stefan24 Beitrag anzeigen
    @fuerchau: Danke für den Tip mit dem formatieren..

    @Bender: jo DecimalFormat hab ich jetzt benutzt.. (siehe Code).. hälst du das jetzt für zu fehleranfällig oder wie darf ich dich verstehen?

    Code:
        public static void main(String[] args) {
        AS400 systemI = new AS400();
        String value;
        int intValue;
        String valueFormat = "0";
        try{        
            QSYSObjectPathName path = new QSYSObjectPathName("GRANER","DTTEST","DTAARA");
            CharacterDataArea dataArea = new CharacterDataArea(systemI, path.getPath());
            value = dataArea.read().trim();
            for (int i = 0; i < value.length()-1; i++) {
            valueFormat = valueFormat + "0";
            }
            intValue = Integer.valueOf(value).intValue();
            value =  new java.text.DecimalFormat(valueFormat).format(intValue+1);
            
            dataArea.write(value);
        
        } catch (Exception e) {
            System.out.println(e);
        }
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Oct 2004
    Beiträge
    24
    achso.. dass war in die richtung gemeint, warum der nummernkreis überhaupt in einer DTAARA gespeichert wird..

    ja, da stimm ich Dir vollkommen zu..

    nur ist das hier nicht auf meinem Mist gewachsen.. Demnach muss ich mich mit den Gegebenheiten auseinander setzen..

    seis drum.. dass ganze funktioniert jetzt so ganz gut..

    Danke nochmal für die helfenden Infos

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Um dem Problem der Sperre aus dem Weg zu gehen:
    Es gibt doch sicherlich ein Programm, dass die Nr. mit entsprechenden Sperren hochzählt.
    Du kannst aus Java mit der Toolbox ja auch dieses Programm aufrufen (oder auch ein neues schreiben) und den Wert zurückgeben lassen.
    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... stored Procedure ist da einfacher und stabiler als dieser Toolbox Spielkram ...

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Um dem Problem der Sperre aus dem Weg zu gehen:
    Es gibt doch sicherlich ein Programm, dass die Nr. mit entsprechenden Sperren hochzählt.
    Du kannst aus Java mit der Toolbox ja auch dieses Programm aufrufen (oder auch ein neues schreiben) und den Wert zurückgeben lassen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Java und Fehlermeldung jva0122 bei simplen "Hello World"
    By TARASIK in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 30-03-11, 13:48
  2. Löschen von Datensätzen per Java in DB2
    By steven_r in forum NEWSboard Java
    Antworten: 3
    Letzter Beitrag: 25-01-10, 19:29
  3. Java Version
    By Muchi in forum NEWSboard Java
    Antworten: 2
    Letzter Beitrag: 07-11-06, 11:00
  4. Antworten: 3
    Letzter Beitrag: 06-06-06, 15:57
  5. Java-Methoden und RPG Hilfe!!!!!!!
    By Nasenbär in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 22-05-03, 08:56

Berechtigungen

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