-
Auflösung von Binary(4) bei Aufruf von QUSRJOBI via com.ibm.as400.access.programcall
Hallo Zusammen,
ich möchte in einem Android Projekt unter Java die Bibliotheksliste eines beliebigen Jobs ermitteln. Meine Präferenz bei allen Aufrufen zur System i ist immer SQL.
Deshalb habe ich es mit der "Library_List_Info" View versucht. Diese gibt mir aber leider immer nur die Bibliotheksliste des aktuellen Jobs zurück. Meiner Meinung nach kann ich nicht via "where" beliebige Jobs auslesen.
Dann habe ich es mit dem in der Überschrift erwähnten "com.ibm.as400.access.programcall" versucht. Hiermit rufe ich die API "QUSRJOBI" mit Format Name "JOBI0700" auf. Ich erhalte auch den entsprechenden Rückgabe String. Nur leider stimmt entweder die CCSID nicht 100% oder die Binary(4) Werte werden nicht aufgelöst. Hier ein Beispiel meines Rückgabe Parameters:
������·������·SUSERA1 USER 462729������ŽÅ��µ��ã™ûˆ€*ACTIVE I ������†��������������������QSYS2929 PUB400SYS QSYS QSYS2 QHLPSYS QUSRSYS QGPL QTEMP �������������������������������������������������� ���
Habe schon einige Sachen versucht um das Binary(4) in int zu konvertieren aber leider ohne Erfolg. Gibt es da eine Möglichkeit.
Oder gibt es vllt eine bessere Möglichkeit via SQL Procedure oder PCML Call? Für den PCML Call muss ich meiner Meinung nach erst eine Parameter Datei auf der Maschine generieren. Das ist für mich aber keine gute Lösung!
Vielleicht habt ihr ja eine Idee. Bin für alle Verbesserungen und/oder Lösungen dankbar!
-
Zunächst eine Frage, wie definierst Du BINARY(4)?
Unter BINARY(4) ist der "normale" Integer zu verstehen (Int(10) - RPG, Integer - SQL - int in Java)
Birgitta
-
... was Du da zurückkriegst, ist kein String, das ist ein Haufen an Binärdaten, die Stück für Stück - byteweise - interpretiert und konvertiert werden müssen, wozu es ein paar kuriose Routinen in der jt400 Toolbox gibt. Beispiele findest Du in der jt400 Doku oder in den packages pords2pojo im AppServer4RPG.
D*B
-
Zitat von B.Hauser
Zunächst eine Frage, wie definierst Du BINARY(4)?
Unter BINARY(4) ist der "normale" Integer zu verstehen (Int(10) - RPG, Integer - SQL - int in Java)
Birgitta
Hallo Birgitta,
ich definiere Binary(4) erstmal gar nicht.
Ich sehe nur das IBM das im Output der API für das Format JOBI0700 so macht und das ich das obige Ergebnis erhalte, welches ich erstmal nicht interpretieren kann.
Eventuell gibt es ja eine einfache Lösung das zu konvertieren oder einen anderen leichteren und besseren Weg so eine Art API aufzurufen.
Gruß
derMuller
-
Mit com.ibm.as400.access.AS400Bin4 bekommt du deine Werte raus.
Code:
call.run();
byte[] as400Data = parmlist[0].getOutputData();
AS400Bin4 bin4 = new AS400Bin4();
AS400Text text10 = new AS400Text(10, as400);
AS400Text text6 = new AS400Text(6, as400);
int bytesreturned = bin4.toInt(as400Data, 0);
int bytesavailable = bin4.toInt(as400Data, 4);
Object jobname = text10.toObject(as400Data, 8);
Object jobuser = text10.toObject(as400Data, 18);
Object jobnumber = text6.toObject(as400Data, 28);
-
Zitat von TR1
Mit com.ibm.as400.access.AS400Bin4 bekommt du deine Werte raus.
Code:
call.run();
byte[] as400Data = parmlist[0].getOutputData();
AS400Bin4 bin4 = new AS400Bin4();
AS400Text text10 = new AS400Text(10, as400);
AS400Text text6 = new AS400Text(6, as400);
int bytesreturned = bin4.toInt(as400Data, 0);
int bytesavailable = bin4.toInt(as400Data, 4);
Object jobname = text10.toObject(as400Data, 8);
Object jobuser = text10.toObject(as400Data, 18);
Object jobnumber = text6.toObject(as400Data, 28);
Hallo TR1,
vielen Danke für dein Beispiel. So hat alles funktioniert! Danke!
Was haltet ihr generell von der Art des Aufrufes?
Gibt es eventuell bessere Lösungen?
Gruß
derMuller
-
Die Java-Toolbox kennt auch noch AS400-Struktur-Konverter. D.h., dass man die API-Struktur diesem Konverter übergibt und anschließend lesbare Inhalte erhält.
@Birgitta:
BIN(4) auf der AS/400 weichen von BIN(4), also Integer, auf dem PC in der Speicherung leider ab.
AS/400 (und andere) speichern in der Reihenfolge High/Low, also 1 = x'0001'.
Auf Intel's wird in Low/High gespeichert, als 1 = 'x'0100'.
Wenn man dies nicht berücksichtigt kommt es natürlich zu Falschaussagen.
Daher die Konvertierungsroutinen.
Similar Threads
-
By harkne in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 06-09-17, 14:44
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 12-05-17, 14:29
-
By hoffi3d in forum NEWSboard Windows
Antworten: 6
Letzter Beitrag: 28-03-17, 14:03
-
By Franz.Rung in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 18-08-15, 16:13
-
By kuetemaj in forum NEWSboard Windows
Antworten: 8
Letzter Beitrag: 11-12-08, 07:59
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