PDA

View Full Version : Error Handling



Mark
04-11-03, 10:30
Hallöchen an alle,

ich hätte da mal ein kleines Problem, vielleicht kann mir hier ja jemand helfen. (Bisher hats ja auch immer geklappt, danke noch mal an alle:-)
Also, ich will aus einem Programm eine DTAQ füllen, nun gibt es aber wenige Ausnahmen, in denen die Bibliothek nicht existiert, oder die DTAQ nicht existiert, das soll auch so sein. Ich hab jetzt erstmal, weil das Programm in Produktion muss, Dummy Lib´s und DTAQ´s angelegt. Soweit so gut (oder eher nicht), jetzt weiß ich das es sogenannte Interne System Programmdatenstrukturen gibt, nun würde ich gerne dieselben Fehlerbehandlung wie in CL nutzen (nicht genau dieselbe aber...) sprich, ich würde gerne wissen, ob man anhand dieser Internen DS eine Fehlerabfrage machen kann und wenn ja, wie??
Danke euch allen im Voraus!

Bis dann

B.Hauser
04-11-03, 12:27
Hallo Mark,

aus der Programm-Status Datenstruktur kannst Du sowohl die Error-Message-Id als auch den kompletten Error-Message-Text entnehmen:



D PGMSTA SDS
D MsgId 40 46
D MsgText 91 170


Wenn du über QCMDEXC einen CL-Befehl absetzt, erhälst Du in der Message-Id die CPF-Message:

Beispiel:


C eval P$Cmd = 'CHKOBJ OBJ('+ %Trim(P$LIB) + ') '
C + 'OBJTYPE(*LIB)'

C callp (E) Qcmdexc(P$Cmd: %Len(P$Cmd))

C if %Error
C Select
C when MsgId = 'CPF9801'
***** Nicht vorhanden
C endSl
C endif


Birgitta

Mark
04-11-03, 13:06
Danke Britta, das mit der Datenstruktur, war genau das, was ich gesucht habe. Kann ich diese alleine nutzen, ohne CL Aufruf? Steht in der MSGID derselbe Wert (CPF9801) wie, wenn ich es über den Command laufen lass?

B.Hauser
04-11-03, 14:24
Hallo Mark,

in Message-Id und Message-Text werden alle Abbruchfehlermeldungen gespeichert.

Beispiel:
Ein Dialog-Programm läuft auf Satz-Sperre.
Die Leseoperation ist durch Bezugszahl, (E)-Erweiterung oder Monitor-Group abgesichert.
Dann steht im Message-Text z.B. das folgende:
"Satz 10 wird von Job 371766/HAUSER/S_HS_01A1 benutzt."

Bricht ein Programm oder eine Prozedur ab, können der Message-Text und Fehlermeldung ebenfalls entnommen werden.
Ein Programm-Abbruch kann man auch selber, durch das Senden einer Escape-Message, erzwingen.

Birgitta