-
... ILE ist der LR wurscht, close bei *ENDMOD schließt den Cursor und ein geschlossener Cursor lässt sich nicht fetchen.
-
Das STGMDL kann (und muss) auf Modulebene bereits angegeben werden.
Der Default ist hier *INHERIT.
Beim CRTPGM können nur Module mit gleichen STGMDL bzw. INHERIT gebunden werden.
In einer ACTGRP kann auch nur 1 STGMDL aktiv sein.
Willst du den Compiler austrixen musst du ggf. mittels %ALLOC Speicher anlegen und die Elemente einzeln per Verschiebe-Pointer bearbeiten.
Wenn das Programm noch mal aufgerufen wird, musst du vorher den Speicher wieder freigeben, da du ansonsten ein sog. Memory-Leak erstellst dass im Zweifel, wenn der Systemspeicher nicht mehr ausreicht, zum Herunterfahren der Maschine zwingt.
Ansonsten:
SET RESULT SETS for Return to CALLER
TO CALLER
Specifies that the cursor can return a result set to the caller of the
procedure. For example, if the caller is a client application, the result set is
returned to the client application.
TO CLIENT
Specifies that the cursor can return a result set to the client application.
This cursor is invisible to any intermediate nested procedures. If a function
or trigger called the procedure either directly or indirectly, result sets
cannot be returned to the client and the cursor will be closed after the
procedure finishes.
-
... das geht aber wieder erst ab V7, vorher gab es den Parameter nicht. Für den Heap bringt das was, ob das aber die Grenzen des Compilers aushebelt wäre noch zu verifizieren.
-
Ich denke auch, dass hier SQL der Bremser ist und mit Teraspace nicht zurechtkommt.
-
 Zitat von Fuerchau
Ich denke auch, dass hier SQL der Bremser ist und mit Teraspace nicht zurechtkommt.
... auf mich kann sich das "auch" nicht beziehen. Die RNF0376 bezieht sich auf die gesamte DS und besagt, dass kein Speicherelement (variablle, DS,... ) größer als 16773104 Byte sein kann und das steht in der V7 RPG Reference immer noch als restriction drin.
D*B
-
Moin,
ich hab gerade den "return to caller" ausprobiert - leider kommt es hier zur gleichen Exception.
Kann jemand das Beispielprogramm vielleicht bei sich testen (siehe Post #11)? So auf den 1. Blick sehe ich keinen "offensichtlichen" Fehler.
Danke und Gruß
BM
-
Hallo,
ich habe jetzt deine Sourcen 1:1 (bis auf die java connection) übernommen und getestet.
Bei mir (7.2 & Java 8) funktioniert es einwandfrei.
lg Andreas
-
Hallo Andreas,
vielen Dank für deine Bemühungen!! Stellt sich mir die Frage - wo liegt der Unterschied?
An Release 7.1 & Java 6 wirds (hoffentlich) nicht liegen...
Die Connection stelle ich wie folgt her:
Code:
AS400 as400Manager = new AS400("SYSTEM", "USER", "PASSWORT");
AS400JDBCDriver JDBC_DRIVER = new AS400JDBCDriver(); --> jt400.jar Version 7.0
DriverManager.registerDriver(JDBC_DRIVER);
Properties prop = new Properties();
prop.setProperty("prompt", "false");
prop.setProperty("naming", "sql");
prop.setProperty("errors", "full");
prop.setProperty("date format", "eur");
prop.setProperty("time format", "eur");
prop.setProperty("package cache", "false");
prop.setProperty("decimal separator", ".");
prop.setProperty("blocksize", "512");
prop.setProperty("translate binary", "true");
Connection connection = JDBC_DRIVER.connect(as400Manager, prop, "DATEIEN", false);
Die Compilesettings sind wie folgt:
Code:
Objekt . . . . . . . . . . . . . > SRL_TSTX6
Bibliothek . . . . . . . . . . > PGM
Quellendatei . . . . . . . . . . > QRPGLESRC
Bibliothek . . . . . . . . . . > PGMSRC
Quellenteildatei . . . . . . . . *OBJ
Quellendatenstromdatei . . . . .
COMMIT-Steuerung . . . . . . . . *NONE
Relationale Datenbank . . . . . *LOCAL
Art der Kompilierung . . . . . . *PGM
Listenausgabe . . . . . . . . . *PRINT
Text 'Beschreibung' . . . . . . *SRCMBRTXT
Vorcompileroptionen . . . . . . *XREF
+ für weitere Werte
RPG-Vorprozessoroptionen . . . . *NONE
Ziel-Release . . . . . . . . . . *CURRENT
INCLUDE-Datei . . . . . . . . . *SRCFILE
Bibliothek . . . . . . . . . . *LIBL
SQL INCLUDE-Verzeichnis . . . . *NONE
Daten kopieren zulassen . . . . *OPTIMIZE
SQL-Cursor schließen . . . . . . *ENDMOD
Blocken zulässig . . . . . . . . *ALLREAD
PREPARE verzögern . . . . . . . *NO
Auflösung gleichzeit. Zugriff . *DFT
Bewertung . . . . . . . . . . . 10
Datumsformat . . . . . . . . . . *JOB
Trennzeichen für Datum . . . . . *JOB
Zeitformat . . . . . . . . . . . *HMS
Trennzeichen für Uhrzeit . . . . *JOB
Ersetzen . . . . . . . . . . . . *YES
RDB-Verbindungsmethode . . . . . *DUW
Standarddatensammlung . . . . . *NONE
Dynam. Standarddatensammlung . . *NO
Paket . . . . . . . . . . . . . *OBJ
Bibliothek . . . . . . . . . . *OBJLIB
SQL-Pfad . . . . . . . . . . . . *NAMING
+ für weitere Werte
SQL-Regeln . . . . . . . . . . . *DB2
IBM SQL-Markierung . . . . . . . *NOFLAG
ANS-Markierung . . . . . . . . . *NONE
Druckdatei . . . . . . . . . . . QSYSPRT
Bibliothek . . . . . . . . . . *LIBL
Debugsicht . . . . . . . . . . . *SOURCE
Debug-Verschlüssel.schlüssel . . *NONE
Benutzerprofil . . . . . . . . . *NAMING
Dynamisches Benutzerprofil . . . *USER
Sortierfolge . . . . . . . . . . *JOB
Bibliothek . . . . . . . . . .
Sprachen-ID . . . . . . . . . . *JOB
Quellenzieldatei . . . . . . . . QSQLTEMP1
Bibliothek . . . . . . . . . . QTEMP
Optionen für Dezimalergebnisse:
Maximale Genauigkeit . . . . . 31
Maximale Anzahl Kommastellen 31
Mindestzahl Kommastellen (Div) 0
DECFLOAT-Rundungsmodus . . . . . *HALFEVEN
Compileroptionen . . . . . . . . *NONE
Magst Du diese vielleicht mal mit deinen Einstellungen verifizieren?
Danke und Gruß
BM
-
Compile settings hab ich entsprechend deinen angeglichen, funktioniert aber trotzdem.
JDBC Connection sieht bei mir anders aus:
PHP-Code:
Class.forName(property.getClassname()); // "com.ibm.as400.access.AS400JDBCDriver"
conn = DriverManager.getConnection(connectionString);
// ConnString: jdbc:as400://host;database name=DB;user=USER;password=XXX;prompt=false;
conn.setAutoCommit(true);
Funktioniert bei dir der Aufruf denn im Navigator?
-
Hallo Andreas,
hab's gerade im iSeriesNav ausprobiert:
Code:
> call pgm.srl_tstx6('100')
Rückkehrcode = 0
Anweisung wurde erfolgreich ausgeführt (84 ms)
Es wird aber keine Tabelle des Resultsets angezeigt:

Normalerweise würde die Ergebnismenge ja direkt unten neben den Nachrichten angefügt werden.
Gruß
Reiner
-
Hi Reiner,
sorry hatte ganz vergessen. War wohl gestern schon zu spät
Ich hab beim CREATE PROCEDURE statt READS SQL DATA auf MODIFIES SQL DATA umändern müssen.
Sonst Funktioniert das ganze nicht.
-
Und: Ja ... normalerweise bekommst du das ResultSet im Navigator angezeigt.
Problem ist, dass im PGM ein SQL-Error kommt, der aber nicht an den Aufrufer übergeben wird.
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