[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    20

    Error Handling

    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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Programm-Status Datenstruktur

    Hallo Mark,

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

    PHP-Code:
    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:
    PHP-Code:
    C                   eval      P$Cmd 'CHKOBJ OBJ('+ %Trim(P$LIB) + ') ' 
    C                                               'OBJTYPE(*LIB)'                  

    C                   callp (EQcmdexc(P$Cmd: %Len(P$Cmd))         
                                                                      
    C                   if        %Error  
    C                   Select
    C                   when      MsgId 
    'CPF9801'
      
    *****                        Nicht vorhanden
    C                    endSl
    C                    
    endif 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    20
    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?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873

    Message-Id und Message-Texte

    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
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Berechtigungen

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