[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    119

    Unhappy eigene Prozeduren in ILE Cobol?

    Hallo!

    Ist es eigentlich möglich in ILE Cobol eigene Prozeduren/Funktionen zu schreiben? Mit Ein- und Ausgabeparametern? So wie in ILE RPG?

    Habe mal in der Literatur gesucht, aber nichts gefunden. Sollte es wirklich nicht gehen??

    Viele Grüße
    Reiner

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Natürlich geht auch das !
    Jedes Modul in eine eigene Quelle.

    PROCEDURE DIVISION [using Parm1 parm2 ...] [returning Value].

    Durch das "Returning" wird die Funktion deklariert.
    Der Aufruf ist in COBOL leider etwas anders, da es keine Funktionsdeklaration so gibt:

    CALL "Program" [using Parm1 Parm2 ...] [returning Value].

    Auf gleichem Wege sind übrigens alle C-Funktionen aus COBOL aufrufbar.

    Durch

    IDENTIFICAION DIVISION.
    PROGRAM-ID. MYPROG is recursive.

    kann zum 1. Mal auch COBOL rekursiv aufgerufen werden !!!

    Man Kann sowohl Variablen exportieren als auch auf exportierte zugreifen.
    usw.
    usw.

    Nachzulesen in:
    http://publib.boulder.ibm.com/iserie...s/c0925403.pdf
    http://publib.boulder.ibm.com/iserie...s/c0925393.pdf
    http://publib.boulder.ibm.com/iserie...s/x0913173.pdf
    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 2001
    Beiträge
    119
    Hallo,

    schönen Dank Herr Fürchau für die Hinweise.

    Kleines Problem. Habe Funktion T2 wie beschrieben erstellt und mit crtcblmod umgewandelt. Muß diese Funktion auch in ein Binderverzeichnis.

    Aufrufendes Programm T1 macht Probleme beim Umwandeln mit crtbndcbl. Siehe Liste:

    000100 IDENTIFICATION DIVISION.
    000200 PROGRAM-ID. T1.
    000300*------------------------------------
    000400 DATA DIVISION.
    000500*------------------------------------
    000600 WORKING-STORAGE SECTION.
    000700 01 i pic 9.
    000800 01 a pic x.
    000900*------------------------------------
    001000 PROCEDURE DIVISION.
    001100 HP1.
    001200 move 1 to i
    001300 call "T2" using i returning a
    001400 goback.

    * 9 ID: LNC2762 BEW.STUFE 30 FOLGENR. 001300
    Nachricht . . . : Phrase GIVING/RETURNING der Anweisung CALL ist für
    LINKAGE-Angabe PROGRAM nicht zulässig.


    Wo liegt denn hier das Problem? Bei der Funktion T2 oder bei T1?

    Danke für Hilfe.

    Schöne Grüße
    Reiner

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Entweder ein Binderverzeichnis erstellen oder jedes Modul mit CRTCBLMOD erstellen und anschließend per CRTPGM die Module durch Einzelangabe "binden", dabei allerdings nicht vergessen, das Start-Modul zu benennen (meistens das 1.).

    Da der CRTBNDCBL das Programm T2 nicht findet (fehlendes Binderverzeichnis) geht er von einem Programm und nicht von einer Funktion aus. Bei Programmen ist aber "returning" nicht erlaubt.

    Bei kleinen Programmen kann man ja auf Binderverzeichnisse verzichten. Bei größeren sollte man diese jedoch verwenden, es vereinfacht das Binden, insbesonders wenn man Funktionen/Module in Service-Pgm'e auslagert gehts nicht mehr anders.

    Hinweis:
    Da der Compiler generell nicht zwischen internen oder externen Call's unterscheidet ist die Fehlersuche natürlich etwas schwerer wenn kein "returning" verwendet wird.
    Erst zur Laufzeit wird ggf. ein Tippfehler im Modulnamen bemerkt, da das Modul zur Erstellzeit nicht als statischer Call erkannt wird (Aufruf eines Moduls) und daher von einem dynamischen Call ausgeht.

    Übrigens:
    Man kann auch mehrere Module in eine Quelle stecken (ich finde nur nicht mehr wo es stand). Vorteil ist hier ggf. dass die anderen Module nach aussen nicht sichtbar sind sondern nur vom 1. Modul aufgerufen werden können (wofür immer das auch gut sein mag).
    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

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    119

    Thumbs up jetzt geht's

    Hallo,

    jetzt muß ich mir doch noch selbst eine Antwort schreiben.

    Eine wichtige Sache haben Sie mir nicht geschrieben Herr Fürchau.
    Nämlich, daß ich Prozeduren mit 'call procedure "name" using ... ' aufrufen muß. Dieses war mir
    noch nicht bekannt. Jetzt funktioniert alles.

    Grüße
    Reiner

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.245
    Ok, das habe ich leider übersehen.
    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. ILE COBOL und SQLCLI ?
    By rebe in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 08-02-06, 15:50
  2. Problem mit XML PARSE in ILE COBOL
    By MikRom in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 15-08-05, 09:06
  3. per SQL aus ILE COBOL in DB2 schreiben?
    By rebe in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 24-03-05, 14:36
  4. ILE Cobol: Satz löschen aus Subfile
    By rebe in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 16-04-04, 09:29
  5. Problem bei ILE COBOL mit sql connect to
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 07-09-01, 13:55

Berechtigungen

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