-
COBOL Stored Procedure mit Return Code?
Hallo Community,
kann man eine Stored Procedure "Language COBOL" dazu bringen einen Return Parameter zurückzugeben. Also sowas wie ein SQL State?
Zweite Frage, Ich calle nun erfolgreich ein Cobol Programm mit zwei "Flat" Parametern, das COBOL Programm schmeißt einen Return Code zurück, kann ich den und wie abfangen?
Reicht es bei letzterer Frage den genauen return Parameternamen zu wissen und diesem einem OUTPUT Parameter der Stored Procedure zuzuweisen wenn die SP in Language COBOL definiert ist?
Gruß
-
Schau dir die Parameterbeschreibung an:
Jedem Parameter einer Prozedur/Funktion wird ein Parameter im Programm (COBOL LINKAGE) übergeben.
Bei einer Funktion wird die Returnvariable als weiterer Parameter drangehängt.
Also
Linkage Section.
01 P1 ...
01 P2 ...
01 RetVal ...
Procedure Divisiion using P1 P2 Retval.
Besser wäre noch die Verwendung der DB2-Strukturen um NULL-Anzeiger sowie SQLSTATE's und Diagnostic zurückgeben zu können.
Alles in den Handbüchern sehr schön beschrieben;-).
-
Ich lese mir diesbezüglich grade ein Redbook durch ...
-
Hänge da echt bischen ab:
Könnte sowas funktionieren?:
CREATE OR REPLACE PROCEDURE SCHEMANAME.SP_CBL_PRG (
IN LINKAREA CHAR(1024) CCSID 273 ,
IN PRG_PAR CHAR(1292) CCSID 273 ,
OUT RETURN_CODE INTEGER )
LANGUAGE COBOL
BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT '00000';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET RETURN_CODE=SQLCODE;
DECLARE CONTINUE HANDLER FOR SQLWARNING SET RETURN_CODE=SQLCODE;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET RETURN_CODE=SQLCODE;
END;
SPECIFIC SCHEMANAME.SP_CBL_PRG
DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'BIBLIOTHEKNAME/PRG'
PARAMETER STYLE GENERAL ;
-
Ja, allerdings sind das für das COBOL-Programm 3 Parameter.
-
Also so:
CREATE OR REPLACE PROCEDURE SCHEMANAME.SP_CBL_PRG (
IN LINKAREA CHAR(1024) CCSID 273 ,
IN PRG_PAR CHAR(1292) CCSID 273 ,
OUT RETURN_CODE INTEGER )
LANGUAGE COBOL
BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET RETURN_CODE=SQLCODE;
END;
SPECIFIC SCHEMANAME.SP_CBL_PRG
DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'BIBLIOTHEKNAME/PRG'
PARAMETER STYLE GENERAL ;
Nur bekomme ich da den Fehler: Klausel für Prozedur oder Routine nicht zulässig 10 - Für externe Funktionen und Prozeduren ist LANGUAGE SQL nicht zulässig, und es muss ein Routinenteil vorhanden sein.
-
Das habe ich so schnell überlesen.
Da das Programm aufgerufen wird, gibts keinen Declare.
Des weiteren ist die Variable SQLCODE bereits vorhanden.
Fehler musst du alle Im Programm abhandeln.
Die Alternative ist der native CALL-Aufruf innerhalb des SQL-Bodys, also kein External Programm sondern
begin
call MYLIB.MYPROG (Linkarea, PRG_Par, Return_Code);
end
Beides ist alternativ möglich.
-
Ich hab das jetzt hier:
--************************************************** ******************
--SP TEST
CREATE OR REPLACE PROCEDURE SCHEMANAME.SP_CBL_PRG(
IN LINKAREA CHAR(1024) CCSID 273 ,
IN PRG_PAR CHAR(1292) CCSID 273
)
LANGUAGE COBOL
BEGIN
DECLARE RETURN_CODE VARCHAR(50);
CALL MYLIB.MYPRG(LINKAREA,PRG_PAR,RETURN_CODE);
INSERT INTO SCHEMANAME.NUMBERS_TABLE VALUES (RETURN_CODE);
END
SPECIFIC SCHEMANAME.SP_CBL_PRG
DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'MYLIB/MYPROG'
PARAMETER STYLE GENERAL;
Bekomme den Fehler:
sql0491] klausel für prozedur oder funktion nicht richtig
Wo ist der Denkfehler? Wie bekomme ich den Programmspezifischen Return Code? Die SQL Codes etc. liefert mir auch der ODBC Treiber.
-
Entweder External oder SQL-Body.
Ich weiß nicht, warum du dir nicht mal die Beispiele in den Handbüchern (SQL-Programming) anschaust.
-
Welches Handbuch genau? Ich gucke permanent in Redbooks for External Procedures, Functions and Triggers. Also auf PHP Seite kann ich den SQL State und SQL Code abfangen das liefert mir ja der ODBC Treiber ... nur gegen die AS400/CBL komme ich nicht weiter ... wo steht das? Stichworte?
-
https://www.ibm.com/support/knowledg...p/rzajppdf.pdf
https://www.ibm.com/support/knowledg...p/rbafypdf.pdf
https://www.ibm.com/support/knowledg...2/rbafzpdf.pdf
Gerade in letzterm findest du bei CREATE PROCEDURE/FUNCTION sowie den Parameter-Typen (General, DB2, SQL) die Erklärungen. Dann wirds vielleicht klarer.
Das meiste meiner SQL-Kenntnisse habe ich daraus, der Rest ist Erfahrung;-).
-
Also ich komme nur geringfügig weiter:
Ich rufe jetzt via einer SQL SP die CBL SP auf, da mit die AS400 nicht erlaubt innerhalb der CBL SP SQL-Code (Language SQL) auszuführen (richtig?), sieht so aus:
SQL SP:
CREATE OR REPLACE PROCEDURE SCHEMA.SP_CBL_PRG(
IN LINKAREA_PAR CHAR(1024) CCSID 273,
IN PRG_PAR CHAR(1292) CCSID 273
)
LANGUAGE SQL
BEGIN
DECLARE RETURN_VALUE INTEGER;
CALL SCHEMA.SP_CBL_PRG(LINKAREA_PAR,PRG_PAR,RETURN_VALUE);
INSERT INTO SCHEMA.PRG_RETURN VALUES (LINKAREA_PAR,PRG_PAR,RETURN_VALUE);
END;
CBL SP:
CREATE OR REPLACE PROCEDURE SCHEMA.SP_CBL_PRG(
INOUT LINKAREA_PAR CHAR(1024) CCSID 273 ,
INOUT PRG_PAR CHAR(1292) CCSID 273,
OUT RETURN_VALUE INTEGER DEFAULT 0
)
LANGUAGE COBOL
DYNAMIC RESULT SETS 1
SPECIFIC SCHEMA.SP_CBL_PRG
DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
EXTERNAL NAME 'SCHEMA/PRG'
PARAMETER STYLE GENERAL;
Das geht aber ich komme nicht an die Return Value (INTEGER) dran...
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 0
Letzter Beitrag: 19-05-17, 10:24
-
By DEVJO in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 29-10-15, 11:30
-
By dabeda in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 05-03-15, 12:53
-
By lorenzen in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 12-12-02, 16:46
-
By lorenzen in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 27-08-02, 14: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