[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Oct 2019
    Beiträge
    32
    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.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    Entweder External oder SQL-Body.
    Ich weiß nicht, warum du dir nicht mal die Beispiele in den Handbüchern (SQL-Programming) anschaust.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Oct 2019
    Beiträge
    32
    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?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    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;-).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Oct 2019
    Beiträge
    32
    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...

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.254
    DAS muss doch das CBL-Programm machen;-)!
    MODIFIES SQL DATA => erlaubt, dass du im COBOL auch SQL machen darfst.
    Der RETURN_VALUE als INT bekommst du in COBOL als 3. Parameter vom Typ COMP-4 (leider nur mit PIC S9999 comp-4) .
    Somit kannst du den SQLCODE des COBOL in den Parameter schieben und ebenso den Insert in deine Logtabelle schreiben.

    Für die Erweiterung von INT-Variablen in Cobol, gibt es die "Process notrunc"-Anweisung. Dann klappt auch ein "MOVE 32767 TO MYINT".
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Oct 2019
    Beiträge
    32
    Hallo, ich habe jetzt einfach die COBOL Parameter als INOUT definiert und schreibe das dann in eine kleine Tabelle und siehe da: Der Return Code ist vorhanden wenn man einen Fehler provoziert...

Similar Threads

  1. Frage SQL Stored Procedure
    By mk in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 19-05-17, 10:24
  2. XML-Into Return Code
    By DEVJO in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 29-10-15, 11:30
  3. Return aus SQL Procedure
    By dabeda in forum NEWSboard Programmierung
    Antworten: 14
    Letzter Beitrag: 05-03-15, 12:53
  4. Stored Procedure endlos
    By lorenzen in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 12-12-02, 16:46
  5. Stored Procedure
    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
  •