[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2003
    Beiträge
    31

    Post Aufruf SQLCBL aus CBL-Programm

    Hallo Zusammen,
    ein Cobol-Programm (Subfile), mit 5 Eingabezeilen, soll je Zeile ein SQLCBL aufrufen.
    Nach dem 1. Aufruf des SQLCBL-Pgm's kommt beim REWRITE auf die SFL die Nachricht:
    Datensatzname erforderlich
    (der Formatname ist aber festangegeben bei dem REWRITE)

    die Zeilen 2 -4 wurden nicht geprüft und bei drücken einer Taste bricht das CBL ab, mit: Nachricht MCH3601

    Wird das SQLCBL-Pgm NICHT aufgerufen, funktioniert das CBL-Programm wie gewünscht.
    Hat jemand vielleicht eine Idee, warum das CBL-PGM abbricht??
    Besten Dank

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das läßt sich wohl nur richtig mit dem Debugger überprüfen.
    Die Frage ist, was macht das Unter-CBL ?
    Zu bedenken ist ja, dass das Unter-CBL je nach Return-Modus (GOBACK bzw. EXIT PROGRAMM) nicht neu initialisiert wird, SQL-Cursor somit offen bleiben usw.
    Der MCH3601 deutet ja auf fehlende Initialisierung hin.
    Stochern im Nebel mag ich am liebsten .
    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

  3. #3
    Registriert seit
    Jun 2003
    Beiträge
    31
    Hallo,
    nach Aufruf des SQLCBL-Pgm kommen diese Meldungen:
    ODP erstellt.
    Blockung für Abfrage.
    Cursor CURSOR110 eröffnet.
    Datenumsetzung bei Anweisung FETCH oder eingebetteter Anweisung SELECT erforderlich.
    1 Zeilen von Cursor CURSOR110 abgerufen.
    Zeile für CURSOR110 nicht gefunden.
    Offener Datenpfad (ODP) gelöscht.
    Cursor CURSOR110 wurde geschlossen.
    Verbindung zur relationalen Datenbank DBH910AE01 beendet.
    SQL-Cursor geschlossen

    ich habe noch etwas gefunden: SQL5065 Zugriffsplan nicht gefunden.

    gruß Cobolaner

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wenn Du die Verbindung zur Datenbank trennst, musst Du beim nächsten Aufruf die Verbindung auch wieder herstellen.

    Mir stellt sich die Frage, warum Du die Verbindung zur Datenbank überhaupt beendest!

    SQL5065 Zugriffsplan nicht gefunden.
    Das ist kein Problem. Der Zugriffsplan wird immer validiert oder sofern kein Zugriffsplan vorhanden ist neu erstellt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Jun 2003
    Beiträge
    31
    Hallo Birgitta,

    die Frage stellt sich mir auch.

    Wenn das SQLCBL beendet ist, kommt die Meldung.

    Wer trennt schon freiwillig eine Verbindung ??

    Kann das mit SQL5065 zusammen hängen?

    Gruß Cobolaner

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wichtig ist, wie du dein Programm verläßt.
    GOBACK -> keine erneute Initialisierung
    EXIT PROGRAM -> Programm wird auch deaktiviert

    Zusätzlich ggf.
    EXEC SQL SET OPTION CLOSQLCSR=*ENDACTGRP (oder *ENDJOB)
    END-EXEC

    verwenden.
    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

  7. #7
    Registriert seit
    Jun 2003
    Beiträge
    31
    Nein, das wa es leider auch nicht.

    GOBACK ist vorhanden und CLOSQLCSR habe ich beim Kompilieren angegeben.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dann ist das ein Problem der COBOL-Rununit.
    Soweit ich das gesehen habe, wird die Verbindung zur DB getrennt, wenn es die höchste Aufruf-Ebene einer SQL-Verbindung ist.
    Dies kann man nur verhindern, wenn das übergordnete CBL-Programm auch ein SQLCBL ist, so dass dort bereits der implizite Connect zur DB erfolgt.

    Was du noch probieren kannst ist an Stelle des Goback ein
    EXIT PROGRAM AND CONTINUE RUN UNIT

    In diesem Fall bleibt das Cobol aktiv.
    Wenn das alleine nicht hilft, muss das SQLCBL ggf. in eine eigene ACTGRP, so dass es als eigene Rununit gestartet wird. Mittels obige Exits bleibt diese dann bis Job-Ende oder RCLACTGRP aktiv.

    COBOL arbeitet diesbezüglich erheblich anders als RPG.

    Um ein CBL-Unterprogramm definitiv rauszuschmeißen gibt es noch die Anweisung CANCEL.
    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

Similar Threads

  1. PHP Aufruf AS400 RPG Programm
    By chrisonline in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 07-12-07, 17:39
  2. Aufruf CL aus Programm
    By malti in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 29-06-07, 12:00
  3. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  4. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  5. Aufruf von Java Programm direkt aus RPG
    By mk in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 09-09-04, 08:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •