-
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
-
Ich würde es nicht mit toString ausgeben sondern den Wert mittels Format entsprechend aufbereiten.
-
entschuldige bitte, wenn ich nochmal "doof" fragen muss, aber könntest du mir das evt. ein bischen genauer erläutern?
-
... 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
-
@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.
-
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 von Fuerchau
@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.
-
@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);
}
-
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 von stefan24
@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);
}
-
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
-
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.
-
... stored Procedure ist da einfacher und stabiler als dieser Toolbox Spielkram ...
Zitat von Fuerchau
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.
Similar Threads
-
By TARASIK in forum IBM i Hauptforum
Antworten: 21
Letzter Beitrag: 30-03-11, 13:48
-
By steven_r in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 25-01-10, 19:29
-
By Muchi in forum NEWSboard Java
Antworten: 2
Letzter Beitrag: 07-11-06, 11:00
-
By woki in forum NEWSboard Java
Antworten: 3
Letzter Beitrag: 06-06-06, 15:57
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks