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

    Thumbs up Funktion 'SYSTEM' in Ile Cobol aufrufen oder CL-Befehl mit Returncode

    Hallo,

    ich möchte gerne die Funktion SYSTEM aus QC2LE in ILE Cobol aufrufen, einen CL-Befehl übergeben und einen Returncode bekommen. Geht das? Wenn ja, wie ist die Systax? Wenn nicht, wie kann ich einen CL-Befehl aufrufen und einen Returncode bekommen? Vielleicht noch über ein API? Wenn ja, welches könnte ich nehmen?

    Danke für Tipps.

    Grüße
    Reiner

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    CLP's werden genauso aufgerufen wie andere COBOL-PGM'e:

    call "Name" using Variable

    pgm parm(&var)
    dcl &var *char 10
    /* tuwas */
    endpgm

    Prozeduren ist in COBOL etwas schwieriger, allerdings geht das auch:

    process NOMONOCASE <= Namen nicht in Grossbuschstaben

    77 Kommando pic x(..).
    77 Wert pic s9(9) comp-4.

    string "kommando" x"00" delimited by size into Kommando.
    call procedure "system" using Kommando returning Wert.

    Allerdings kannst du die CPF-Meldung nicht wie in RPG abfangen, daher ist es besser ein CLP aufzurufen.
    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

    Thumbs up

    Danke Herr Fürchau für die Antwort.

    Das mit dem allgemeinen Prozeduren- und Funktionenaufruf ist bekannt. Mir ging es darum, die CPF-Meldung im Cobol-Programm abzufangen.

    Ok, geht nicht, dann halt über den Umweg eines kleines CL-Programms.

    Grüße
    Reiner

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Das Abfangen von Meldungen geht mittels:

    call "Programm" using ...
    on overflow ...
    end-call

    Allerdings kann die Meldung selbst nur per API QMHRCVPM abgefragt werden.
    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
    Mar 2002
    Beiträge
    5.365
    @Baldur: Wenn man im COBOL Variablen importieren kann, dann sollte das gehen, da gibt es einen Export aus einem Serviceprogramm; falls es geht schau ich mal den Namen nach

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    CLP's werden genauso aufgerufen wie andere COBOL-PGM'e:

    call "Name" using Variable

    pgm parm(&var)
    dcl &var *char 10
    /* tuwas */
    endpgm

    Prozeduren ist in COBOL etwas schwieriger, allerdings geht das auch:

    process NOMONOCASE <= Namen nicht in Grossbuschstaben

    77 Kommando pic x(..).
    77 Wert pic s9(9) comp-4.

    string "kommando" x"00" delimited by size into Kommando.
    call procedure "system" using Kommando returning Wert.

    Allerdings kannst du die CPF-Meldung nicht wie in RPG abfangen, daher ist es besser ein CLP aufzurufen.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    @Dieter
    Im- und Export geht auch in COBOL, schließlich ist es ja ILE.
    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
    Mar 2002
    Beiträge
    5.365
    Hallo,

    dann braucht man nur _EXCP_MSGID zu importieren (sieben stellig alfa deklarieren) und beim binden das Binding directory QC2LE mit zu verwenden. In dieser Variable steht dann immer die letzte aufgetretene CPF Message drin, man muss also vor dem Aufruf von system initialisieren und bei Rückgabe von 1 durch system die Variable auslesen.

    mfg

    Dieter Bender

    Zitat Zitat von Fuerchau
    @Dieter
    Im- und Export geht auch in COBOL, schließlich ist es ja ILE.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Jun 2001
    Beiträge
    119
    Hallo Dieter,

    wie geht denn Variablen importieren?
    Ich kenne nur "copy member of sourcedatei".

    Ich kann die Prozedur SYSTEM nicht aufrufen.

    IDENTIFICATION DIVISION.
    PROGRAM-ID. T4.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    77 cl-cmd pic x(256).
    77 fehler pic s9(9) comp-4.

    PROCEDURE DIVISION.
    H1.
    move "DLYJOB DLY(2)" to cl-cmd
    call procedure "SYSTEM" using cl-cmd returning fehler
    goback.


    Ich wandle das Programm um mit CRTBNDCBL mit Binderverzeichnis QC2LE. Fehlermeldung:

    Nachricht . . . : Definition für Symbol 'SYSTEM' nicht gefunden.
    Ursache . . . . : Für Referenz SYSTEM in *MODULE Objekt T4 der Bibliothek
    QTEMP wurde keine Definition gefunden. Entweder ist die Definition nicht
    vorhanden, oder sie gehört nicht zu demselben Datentyp oder derselben
    Prozedurart wie die Referenz. Fehlerbeseitigung: Den Befehl CRTPGM
    (Programm erstellen) wiederholen, wobei ein Objekt angegeben wird, das eine
    Definition für Symbol SYSTEM enthält.

    Was mache ich falsch?
    Vielen Dank für Hinweise schon mal.

    Grüße
    Reiner

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Siehe oben:

    process NOMONOCASE <= Namen nicht in Grossbuschstaben

    Der Name der Prozedur ist "system" und nicht "SYSTEM", casesensitive.
    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

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    119
    "system" klein habe ich probiert.
    Macht das Umwandlungsprogramm raus:

    * 10 ID: LNC0047 BEW.STUFE 20 FOLGENR. 001400
    Nachricht . . . : Programmname '"system"' ist ungültig. Als
    '"SYSTEM"' akzeptiert.

    Und dann kommt wieder die gleiche Fehlermeldung wie angegeben.

    Muß ich da beim Umwandeln noch einen Schalter setzen?

    Reiner

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ok, kleiner Fehler von mir.

    Vor der IDENTIFICATION DIVISION füge folgende Zeile ein:

    Process nomonoprc
    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

  12. #12
    Registriert seit
    Jun 2001
    Beiträge
    119
    Ich glaube, das geht so nicht.
    Habe Process system eingefügt in die Quelle.
    Die Umwandlungsliste sagt:

    * ID: LNC0026 BEW.STUFE 10 FOLGENR. 000100
    Nachricht . . . : Auswahl erwartet, 'SYSTEM' gefunden. 'SYSTEM'
    ignoriert.
    * 10 ID: LNC0047 BEW.STUFE 20 FOLGENR. 001500
    Nachricht . . . : Programmname '"system"' ist ungültig. Als
    '"SYSTEM"' akzeptiert.

Similar Threads

  1. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  2. ILE RPG aus Stored Procdure aufrufen
    By pfpk0997 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 15-11-06, 09:40
  3. Problem mit XML PARSE in ILE COBOL
    By MikRom in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 15-08-05, 09:06
  4. eigene Prozeduren in ILE Cobol?
    By rebe in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 23-07-04, 08:41
  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
  •