-
Schnittstellenparameter mit variabler Länge
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte aus einen Java-Programm über eine SQL Procedure ein RPGLE-Programm aufrufen. - In Java ist der Parameter als string definiert.
- In der SQL Procedure und dem RPGLE-Programm ist der Parameter als CHARACTER 32766 definiert.
Wenn in dem Parameter nur 100 Zeichen - also nicht die anschließenden Leerzeichen - drin sind, kommen im Java-Programm 32722 Zeichen an.
Wie kann die Schnittstelle variabel gestaltet werden?
Danke schonmal für die Hilfe.
-
Definiere das Feld als VARCHAR(32766) und im RPGLE als VARYING.
-
Das hatte ich schon probiert. Im Detail:
In der SQL-Procedure habe ich 3 Parameter mit VARCHAR(32766) definiert. Als ich das Script zur Erstellung der Procedures ausführen wollte, kam ein Fehler, dass bei VARCHAR die maximale Länge 32740 sein kann. Habe ich gemacht.
Im RPGLE Programm habe ich die 3 Parameter ebenfalls mit 32740 und dem Schlüsselwort varying definiert.
Ergebnis:
Der 1. Parameter so gefüllt ist, wie ich es erwartet habe.
Der 2. Parameter ist leer, obwohl Daten enthalten sein sollten.
Der 3. Parameter wird in einem Dump als Not Adressable angegeben.
Was mache ich falsch?
-
Wie sieht deine Prozedurdeklaration beim CREATE PROCEDURE und dein *ENTRY aus ?
Irgendwas passt da nicht so ganz.
Jeder Parameter wird als eigener Eintrag und nicht als Array übergeben!
-
Hier das Script für die Erstellung der Procedure:
CREATE PROCEDURE MCCRTVDOMLEVEL1
(IN USR CHAR (10),
IN PWD CHAR (10),
IN SID CHAR (10),
OUT STS DEC (3, 0),
OUT SND CHAR (10),
IN E1MAX DEC (5, 0),
IN E1STR DEC (5, 0),
OUT E1CNT DEC (5, 0),
OUT E1OVF DEC (1, 0),
IN E1TYP CHAR (5),
OUT E1OID VARCHAR (32740),
OUT E1KNZ VARCHAR (32740),
OUT E1PMT VARCHAR (32740))
LANGUAGE RPGLE NOT DETERMINISTIC
MODIFIES SQL DATA EXTERNAL NAME
HTDOMSP001 PARAMETER STYLE GENERAL;
Die Entry-List sieht so aus:
parm E1USR 10
parm E1PWD 10
parm E1SID 10
parm E1STS 3 0
parm E1SND 10
parm E1MAX 5 0
parm E1STR 5 0
parm E1CNT 5 0
parm E1OVF 1 0
parm E1TYP 5
parm E1OID
parm E1KNZ
parm E1PMT
Die Definition der Parameter E1OID, E1KNZ, E1PMT wir folgt:
D E1OID S 32740A varying
D E1KNZ S 32740A varying
D E1PMT S 32740A varying
-
Ggf. gibt es die Einschränkung, dass die Pufferlänge aller Parameter zusammen 32740 nicht übersteigen darf.
Ggf. funktioniert es dann besser, wenn als Typ CLOB gewählt wird, oder verkürze die Parameter mal testweise auf 8000.
Similar Threads
-
By Bau in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 03-01-07, 15:13
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 13-11-06, 07:31
-
By harkne in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-12-05, 17:46
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 20-09-05, 13:52
-
By holly in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 07-12-04, 13:23
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