-
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
-
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.
-
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
-
Das Abfangen von Meldungen geht mittels:
call "Programm" using ...
on overflow ...
end-call
Allerdings kann die Meldung selbst nur per API QMHRCVPM abgefragt werden.
-
@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 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.
-
@Dieter
Im- und Export geht auch in COBOL, schließlich ist es ja ILE.
-
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 von Fuerchau
@Dieter
Im- und Export geht auch in COBOL, schließlich ist es ja ILE.
-
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
-
Siehe oben:
process NOMONOCASE <= Namen nicht in Grossbuschstaben
Der Name der Prozedur ist "system" und nicht "SYSTEM", casesensitive.
-
"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
-
Ok, kleiner Fehler von mir.
Vor der IDENTIFICATION DIVISION füge folgende Zeile ein:
Process nomonoprc
-
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
-
By schatte in forum NEWSboard Programmierung
Antworten: 19
Letzter Beitrag: 10-01-07, 11:32
-
By pfpk0997 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 15-11-06, 09:40
-
By MikRom in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 15-08-05, 09:06
-
By rebe in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 23-07-04, 08:41
-
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
-
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