-
RCVMSG nach QCMDEXC
Hallo Forum,
ich stehe mal wieder auf dem Schlauch. Ich habe folgendes Problem: In einem CLLE rufe ich per CALL ein RPGLE auf. In diesem wird mit CALL ein QCMDEXC aufgerufen, welchen ich über eine Bezugszahl abfange. Einen eventl. Abbruch des QCMDEXC gebe ich über einen Parameter an mein CLLE zurück. In diesem möchte ich nun mit RCVMSG die Meldung des Abbruchs ermitteln. Wie komme ich den da dran? Die Nachricht wurde ja an die Nachrichtenwarteschlange des RPGLE gesendet.
Gruss
Ralph
-
Anstatt das Programm "QCMDEXC" rufst Du das nachfolgende Programm 'CMD' auf. Wenn der Befehl
nicht ausgeführt werden konnte, dann bekommst Du im zweiten Parameter die
Nachrichten-Id. zurück.
PHP-Code:
h DftActGrp(*NO) ActGrp(*CALLER) BndDir('QC2LE')
*
*-------------------------------------------------------------------------------------------*
*
* Prozedurenprototyp für Prozedur 'CMD'
*
dCMD PR
d 1024A Const --> Befehl
d 7A <-- Nachrichten-Id.
*
* Prozedurenschnittstelle für Prozedur 'CMD'
*
dCMD PI
d PICmd 1024A Const --> Befehl
d PIMsgId 7A <-- Nachrichten-Id.
*
*-------------------------------------------------------------------------------------------*
*
* Prozedurenprototyp für Prozedur 'system'
*
dsystem PR 10I 0 EXTPROC('system')
d * Value Options(*String)
*
* Nachrichten-Id.
*
dMsgId S 7A Import('_EXCP_MSGID')
*
*-------------------------------------------------------------------------------------------*
*
* Befehl ausführen
c If system(PICmd) > 0
* Fehler aufgetreten
c Eval PIMsgId = MsgId
c Else
* Kein Fehler aufgetreten
c Eval PIMsgId = *Blanks
c EndIf
* Programmende
c Eval *INLR = *On
Frank Hildebrandt
-
Hallo,
ich würde entweder über API QMHSNDMG eine Escape-Message aus dem RPG-Programm an das CL senden.
Die evt. einfachere Möglichkeit wäre den Nachrichten-Text als Ausgabe-Parameter an das CL ausgeben. Der aufbereitete Nachrichten-Text (80 Stellen) kann aus der Programm-Status-Datenstruktur (Stelle 91-170) entnommen werden.
Beispiel:
PHP-Code:
D QCMDEXC PR extpgm('QCMDEXC')
D P$CLCmd 32702 const options(*VarSize)
D P$CLCmdLen 15P 5 const
D MYRPGPGM PI extpgm('MYRPGPGM')
D P$MsgTxt 100A
D P$Cmd S 100A
D PGMSDS SDS
D SDSMsgId 40 46
D SDSMsgTxt 91 170
*-------------------------------------------------------
/Free
Monitor;
clear P$MsgTxt;
P$Cmd = 'Was auch immer';
QCmdExc(P$Cmd: %Len(P$cmd));
On-Error;
P$MsgTxt = SDSMsgTxt;
EndMon;
*INLR = *On;
/End-Free
Die Verwendung des QCMDEXC hat gegenüber dem system den Vorteil, dass der komplette Message-Text (incl. den variablen Texten) ausgebeben wird. Mit system kann lediglich die Message-Id ermittelt werden.
Birgitta
-
Danke für die Antworten,
ich denke ich mache es so wie Birgitta, da ich den Text benötige.
Similar Threads
-
By muadeep in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 24-06-06, 23:59
-
By Lichtblitz in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-07-05, 12:44
-
By Freezer in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 02-12-04, 13:38
-
By BUG in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 05-11-04, 15:07
-
By fabax in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 27-02-04, 11:10
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