-
Dann poste mal die SQL-Definition der Prozedur/Funktion und ebenso die Linkage Section deines COBOL-Programmes.
-
wieso kann ich in einer externen Procedure nur maximal 29 Parameter deklarieren? Gibt es da eine SYS Einstellung?
-
Zitat von Fuerchau
Dann poste mal die SQL-Definition der Prozedur/Funktion und ebenso die Linkage Section deines COBOL-Programmes.
--************************************************** ******************
--SP TEST
CREATE OR REPLACE PROCEDURE SCHEMA_NAME.STORED_PROCEDURE_NAME(
IN //...52 Parameter...//
)
DYNAMIC RESULT SETS 1
LANGUAGE COBOL
SPECIFIC SCHEMA_NAME."STORED_PROCEDURE_NAME"
DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'SCHEMA_NAME/COBOL_PGM_NAME'
PARAMETER STYLE GENERAL
PROGRAM TYPE SUB;
-
"The maximum number of parameters can be further limited by the maximum
number of parameters allowed by the language."
Ändere dein Programmtyp auf CBLLE, dann kannst du im SQL COBOLLE angeben. Ggf. erlaubt dir SQL dann mehr Parameter. COBOL braucht im Gegensatz zu RPG da keine Konvertierung.
Allerdings finde ich persönlich schon mehr als 10 Parameter bedenkenswert.
-
Also grundsätzlich kann ich COBOL Programme per SQL aufrufen, das habe ich mit einem Testprogramm auch getestet. Funktioniert wunderbar, erzeugt eine Spool Datei mit einem Parameterwert den ich mir auch dann auch anzeigen lassen kann.
Das mit dem Programmtyp probiere ich mal. Da es aber um mehrere COBOL Programme geht die ich damit ansprechen will wäre das ja schon fast ein komplettes Update auf die Sourcen ..
Gibt es einen SYS-Wert der die Parameteranzahl limitieren könnte??
-
Zitat von B.Hauser
Wie hast Du denn versucht die Routine zu definieren?
Mit irgendeinem Tool?
Lt. der aktuellen Dokumentation sind selbst bei der Registrierung von OPM Programmen 254 Parameter und bei ILE programms 2000 Parameter zulässig.
Und auf welchem IBM i Release bist Du überhaupt?
Birgitta
Hast du da bitte mal einen Link für mich zur Dokumentation? Ich such mir da grade den Wolf ...
-
Zitat von Fuerchau
"The maximum number of parameters can be further limited by the maximum
number of parameters allowed by the language."
Ändere dein Programmtyp auf CBLLE, dann kannst du im SQL COBOLLE angeben. Ggf. erlaubt dir SQL dann mehr Parameter. COBOL braucht im Gegensatz zu RPG da keine Konvertierung.
Allerdings finde ich persönlich schon mehr als 10 Parameter bedenkenswert.
Also ich habe jetzt das SQL Statement mit "LANGUAGE COBOLLE" initialisiert und jetzt nimmt die DB2 alle 51 Parameter. *freu Jetzt noch auf der Gegenseite das COBOL Programm umkonvertieren?
-
Zitat von ChookaA
Hast du da bitte mal einen Link für mich zur Dokumentation? Ich such mir da grade den Wolf ...
Hier ist der Link: Create Or Replace Procedure (External)
Man kann COBOL, CL oder auch RPG Programme zwar direkt aus einer SQL-Umgebung aufrufen, aber das geht allenfalls solange gut solange es sich nur um alphanumerische Parameter mit fixer Länge handelt. Deshalb wird immer empfohlen die (HLL) Programme oder Prozeduren als SQL Stored Procedures oder User Defined Functions zu registrieren.
Was mir an Deinem SQL Skript (CREATE OR REPLACE PROCEDURE) auffällt ist zweierlei:
1. Wenn Du in Deiner Umgebung mit Dezimal-Trennzeichen Komma arbeitest, musst Du, wenn das Komma als Trennzeichen im SQL-Befehl verwendet wird, ein Blank hinzufügen.
IN IBELNR_ETTIK DECIMAL(1,0) müsste zu einem Fehler Führen, da nach dem Komma kein Blank folgt.
2. Du gibst PROGRAM TYPE SUB and, was eigentlich nur für Prozeduren in Service-Programmen erlaubt ist. Ändere den PROGRAM TYP auf MAIN ab.
Ansonsten kann ich mit deinem SQL-Skript auf meinem System problemlos eine Stored Procedure erstellen.
Birgitta
-
Normalerweise braucht man nicht darauf zu achten, wenn man CBL in CBLLE ändert.
Nun musst du allerdings auf die Spezialität der COBOL-Rununit da noch eingehen.
RPG kennt dieses Konzept da so nicht.
CBL und CBLLE laufen auch hier in unterschiedlichen ACTGRP's und somit auch in unterschiedlichen COBOL-Rununits.
Was du auch noch ausprobieren kannst, denn ich glaube nicht dass SQL dies zur Laufzeit prüft, zwar COBOLLE anzugeben, aber das Programm auf OPM CBL zu belassen.
Falls es nicht funktioniert, dann halt CBLLE.
Achte dann aber auf deine COBOL-Rununit.
-
Zitat von B.Hauser
Hier ist der Link: Create Or Replace Procedure (External)
Man kann COBOL, CL oder auch RPG Programme zwar direkt aus einer SQL-Umgebung aufrufen, aber das geht allenfalls solange gut solange es sich nur um alphanumerische Parameter mit fixer Länge handelt. Deshalb wird immer empfohlen die (HLL) Programme oder Prozeduren als SQL Stored Procedures oder User Defined Functions zu registrieren.
Was mir an Deinem SQL Skript (CREATE OR REPLACE PROCEDURE) auffällt ist zweierlei:
1. Wenn Du in Deiner Umgebung mit Dezimal-Trennzeichen Komma arbeitest, musst Du, wenn das Komma als Trennzeichen im SQL-Befehl verwendet wird, ein Blank hinzufügen.
IN IBELNR_ETTIK DECIMAL(1,0) müsste zu einem Fehler Führen, da nach dem Komma kein Blank folgt.
2. Du gibst PROGRAM TYPE SUB and, was eigentlich nur für Prozeduren in Service-Programmen erlaubt ist. Ändere den PROGRAM TYP auf MAIN ab.
Ansonsten kann ich mit deinem SQL-Skript auf meinem System problemlos eine Stored Procedure erstellen.
Birgitta
zu1: das sind doch Blanks nach dem Komma in dem CREATE STATEMENT bei DECIMAL Felddeklaration oder verstehe ich da jetzt was falsch
zu2: hab ich abgeändert
-
Zitat von Fuerchau
Normalerweise braucht man nicht darauf zu achten, wenn man CBL in CBLLE ändert.
Nun musst du allerdings auf die Spezialität der COBOL-Rununit da noch eingehen.
RPG kennt dieses Konzept da so nicht.
CBL und CBLLE laufen auch hier in unterschiedlichen ACTGRP's und somit auch in unterschiedlichen COBOL-Rununits.
Was du auch noch ausprobieren kannst, denn ich glaube nicht dass SQL dies zur Laufzeit prüft, zwar COBOLLE anzugeben, aber das Programm auf OPM CBL zu belassen.
Falls es nicht funktioniert, dann halt CBLLE.
Achte dann aber auf deine COBOL-Rununit.
Sowas in der Art wäre auch meine Vermutung bzw. Probiermöglichkeit gewesen -> mach ich mal ..
-
Ich konnte es jetzt noch nicht erfolgreich aufrufen, aber das Parameter "Mapping" passt auch noch nicht ganz ... da brauche ich nochmal Informationen von dem Ersteller -> Dokumentation? Fehlanzeige ...
Similar Threads
-
By wilfried in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 19-07-17, 07:49
-
By jlindner in forum IBM i Hauptforum
Antworten: 0
Letzter Beitrag: 02-12-16, 14:02
-
By Norbertf in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 14-10-14, 20:32
-
By systemer in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 19-02-03, 08:33
-
By vogeste0 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 03-04-02, 13:21
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