[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Sep 2003
    Beiträge
    221

    Fehlerausnahmeroutine *PSSR

    Hallo zusammen,

    nachdem ich erst gestern dieses tolle AS/400-Forum entdeckt habe, wurde mir auch direkt schon geholfen. Nun aber zu meinem zweiten Anliegen wo ich nicht so recht weiterkomme.

    Wir haben auf dem System mehrere hundert/tausend Dialogprogramm in RPG und ILE/RPG. Bisher gab es für die User keiner Beschränkung der Berechtigung. Jeder durfte alles, was teilweise zu einem Chaos führt. Deshalb muss ich eine Berechtigungssteuerung entwickeln. Und dabei dachte ich an eine globale *PSSR, die ja dafür sein soll.

    Ich habe ein Programm geschrieben, dass eine Maske anzeigt wenn ein Fehler auftritt. Alle User wurde in Gruppen eingeteilt und auf Gruppenebene die Rechte auf den Datenbanken eingeteilt. Lesen, Schreiben, Ändern und Löschen mit jeweils separaten Rechten. Mit dem Befehl WRKOBJAUTH wurde die Rechte vergeben.

    Doch die ersten Test waren niederschmettern. Es kommt immer noch der CPFxxxx Fehler (Keine Rechte zum Ändern der Datenbank) und meine *PSSR zieht überhaupt nicht.

    In der IBM-Literatur finde ich zu diesem Thema nicht viel und schon mal übehaupt kein Beispiel.

    Kann mir jemand einen Tipp geben ?

    Danke im voraus,


    Peter K.

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    163
    Hallo Peter,

    leider sagst Du nichts darüber, was in der *PSSR passiert.

    Gruss

    Hubert

  3. #3
    Registriert seit
    Sep 2003
    Beiträge
    221
    Sorry, das habe ich total versäumt.

    In der *PSSR wird ein Programm aufgerufen, das diverse Jobattribute, die Fehlerdatei, den Fehler, das Programm etc. in einem Standartisiertem Fenster ausgibt. Ansonsten macht es nichts.

    Das spart uns eine Menge Arbeit.

    Gruß

    Peter

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    163
    Hallo Peter,

    ist die *PSSR Routine auch als INFSR bei der Datei angegeben und endet sie mit einem return?

    Beispiele findet Ihr in http://publib.boulder.ibm.com/pubs/h...ne/v4r5ger.htm

    Gruss

    Hubert

  5. #5
    Registriert seit
    Sep 2003
    Beiträge
    221
    Ja, eine *INZSR haben wir in jedem Programm. Aber da geht nicht viel ab. Dort werden:
    Übergabeparameter definiert, KEYLIST definiert, Felder initialisiert.

    Die *PSSR endet nicht mit RETURN, da der User ja nur das Fehlerfenster angezeigt bekommen soll. Danach soll er weitermachen können.

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    163
    Nicht *INZSR sondern INFSR bei der Dateibestimmung (F-Bestimmung). Sieh doch mal den Link an, den ich vorher angegeben hatte.

  7. #7
    Registriert seit
    Sep 2003
    Beiträge
    221
    Sorry, nicht richtig gelesen.

    Eine INFSR haben die Programme überhaut nicht. Ich werde mal in dem Link bei der IBM nachlesen und ein Musterprogramm ändern.

    Danach poste ich dann das Resultat.

    Nochmals vielen Dank,

    Peter Kinne

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    *PSSR

    Hallo Peter,

    zunächst einmal paar Fragen:
    Springt die *PSSR-Routine überhaupt an?
    Wenn nein nächste Frage:
    Hast Du in den F-Bestimmungen INFSR(*PSSR) angegeben?
    Wenn nein füge das Schlüssel-Wort ein.

    Ansonsten würde ich Dir statt der *PSSR-Routine einen ILE-Condition-Handler empfehlen.
    Bei einem ILE-Condition-Handler handelt es sich um ein Programm, das bestimmte Fehlersituationen verarbeitet.
    Der ILE-Condition-Handler muss in jeder Quelle über API CEEHDLR registriert werden.
    (Über API CEEHDLU kann die Registrierung zurückgenommen werden.)
    Bei Verwendung einer *PSSR-Routine, müsste jeweils die Routine in die Quellen kopiert werden.

    *PSSR-Routinen funktionnieren nur, solage der RPG-Zyklus greift wird, d.h. solange die Datei nur in der Main-Pocedure (alle Statements vor dem 1.P-Statement) verwendet wird.
    Wird eine Datei in einer Prozedur verarbeitet, kann die *PSSR-Routine weder definiert noch verwendet werden.
    Prozeduren unterliegen nicht mehr dem Zyklus, deshalb ist es möglich Prozeduren rekursiv aufzurufen.

    Birgitta
    Birgitta Hauser

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

  9. #9
    Registriert seit
    Sep 2003
    Beiträge
    221
    Hallo Brigitta,

    ja nach heutigem basteln und viel lesen klappt es mit der *PSSR. Es passiert genau das, was passieren soll.

    Den Tipp mit dem ILE Codition-Handler schau ich mir mal in den nächsten Tagen an.

    Vielen Dank nochmals,

    Peter

  10. #10
    Registriert seit
    Sep 2003
    Beiträge
    221
    Guten Morgen,

    nachdem ich gestern nun so stolz war, dass es läuft, kommt heute die Ernüchterung :-)

    Also ich starte das Programm mit der *PSSR. Beim ersten mal kommt auch die richtige Fehlerbehandlung. Das Window wird angezeigt mit dem Text "Keine Berechtigung". Ich drücke F12 und bin wieder in dem Programm mit der *PSSR. Dann lege ich wieder einen neuen Satz an, und es sollte wieder das Fehlerwindow kommen. Aber falsch gedacht - Es kommt ein neuer Fehler: RNX9998 (E/A Fehler CPF5134 in Datei BFEPRTCTR erkannt. E/A Operation nicht zulässig da Teildatei BFEPRTCTR in Bibliothek xxx fehlerhaft.) Ist sie aber nicht. Mit DFU kann ich die Datei bearbeiten.

    Hier mal der Form halber der Quellcode von meinem Testprogramm:


    * Druckersteuerung
    FBFEPRTCTR UF A E K Disk Infds(#INFDS1) Infsr(*PSSR)
    * Tabellendatei !!! nur für *LIKE Defn
    FBfeTabTab IF E K Disk
    *--------------------------------------------------------------------
    * Datei-Informationsdatenstruktur Infds1
    *--------------------------------------------------------------------
    d#Infds1 DS
    d File *FILE
    d Status *STATUS
    d Opcode *OPCODE
    d Routine *ROUTINE
    d Record *RECORD



    *-------------------------------------------------------------------
    * *PSSR Programmfehler-Ausnahmeroutine
    *-------------------------------------------------------------------
    C *PSSR Begsr
    c Eval Return = '*DETC '
    *
    c call 'PSSR001R'
    c Parm 'BFEP9001PS' PssPgm
    c Parm 'PKIBERECHT' PssPli
    c Parm 'BFEP9001FM' PssDsp
    c Parm 'LEI' PssDli
    c Parm File PssFil
    c Parm 'Bibliothek' PssFli
    c Parm Opcode PssOpc
    c Parm 'Error' PssErr
    c Parm 'Hier Text' PssBem
    c Endsr Return


    Viele Grüße von

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  11. #11
    Registriert seit
    Sep 2003
    Beiträge
    221
    Hallo "Profis" der AS/00,

    ich muss mein Thema noch einmal hochkommen lassen.

    Und zwar geht es um den Eintrag in FAKTO2 neben dem ENDSR der *PSSR.

    Ich habe dort momentan den Wert *CANCEL eingestellt. Dadurch wird das Programm beendet. Schöner wäre es aber, wenn das Programm aktiv im Speicher bleibt und der Anwender weiter arbeiten kann.

    Gibt es dafür auch einen Wert oder ist diese Fall nicht vorgesehen.


    Vielen Dank

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    163
    Hallo Peter,

    ich verstehe den Sinn dieses Anliegens nicht. Wenn der Benutzer doch keine Berechtigung zur entsprechenden Nutzung der Datei hat, macht doch ein zweiter Zugriffsversuch auch keinen Sinn. Oder habe ich da etwas falsch verstanden?

    Gruss

    Hubert

Berechtigungen

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