[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2005
    Beiträge
    50

    WRKQRY schickt Commit-Controled Job auf Lockwait

    Hallo!

    Ich habe hier zwei RPG-Programme, die von einem aktiven WRKQRY auf LCKW geschickt werden, sobald im WRKQRY eines der gejournalten Files eingebunden ist.

    Locklevel ist auf *CHG und der Scope auf *JOB eingestellt und das File ist wie folgt definiert:
    Code:
    FJIVEHH    UF A E           K DISK    USROPN COMMIT
    Daneben sind noch 4 weitere Files ebenso unter Commit definiert.

    Wie kann ich es vermeiden, daß mir der WRKQRY diesen Job blockiert?

    Vielen herzlichen Dank!

    Gruß

    Christian

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    soweit du uns hier keine relevante Information unterschlägst, handelt es sich um einen Bug

    D*B

    Zitat Zitat von Christian.Hesse Beitrag anzeigen
    Hallo!

    Ich habe hier zwei RPG-Programme, die von einem aktiven WRKQRY auf LCKW geschickt werden, sobald im WRKQRY eines der gejournalten Files eingebunden ist.

    Locklevel ist auf *CHG und der Scope auf *JOB eingestellt und das File ist wie folgt definiert:
    Code:
    FJIVEHH    UF A E           K DISK    USROPN COMMIT
    Daneben sind noch 4 weitere Files ebenso unter Commit definiert.

    Wie kann ich es vermeiden, daß mir der WRKQRY diesen Job blockiert?

    Vielen herzlichen Dank!

    Gruß

    Christian
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Nov 2005
    Beiträge
    50
    Ich habe eben gerade bemerkt, daß ich etwas unterschlagen habe, nämlich das:

    Code:
     C                   EVAL      rc = DoCmd('STRJRNPF FILE(JIVEHH)'     + 
     C                                      ' JRN(JISJRN) IMAGES(*BOTH)')
    und genau daran bleibt er mit einem LCKW hängen. Vorallem habe ich noch mehr davon...

    Code:
     * +------------------------------------------------------------+ 
     * ¦  End Commit Control of previous Runs                         
     * +------------------------------------------------------------+ 
    C                   EVAL      rc = DoCmd('ENDCMTCTL')              
    .
    .
    .
    C                   EVAL      rc = DoCmd('STRJRNPF FILE(JIVEHH)'     +
    C                                      ' JRN(JISJRN) IMAGES(*BOTH)')  
    
     * +------------------------------------------------------------+ 
     * ¦  Start CMTCTL on Joblevel                                    
     * +------------------------------------------------------------+ 
    C                   CLEAR                   rc                     
    C                   EVAL      rc = DoCmd('STRCMTCTL LCKLVL(*CHG)' +
    C                                      ' CMTSCOPE(*JOB)')          
    
    C                   OPEN      JIVEHH
    Der STRJRNPF wird für sämtliche Files wiederholt, die unter Commit Control geöffnet werden.

    Damit stellt sich für mich eine neue Frage: Ist das gut so? Macht man das so? Oder sollte man das anders machen?

    Vielen Dank!

    Gruß

    Christian

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    der STRJRNPF braucht einen exclusive lock auf die Datei und da kann selbst Query stören, wenn die Datei offen bleibt.
    Die übliche Vorgehensweise ist, dass man Dateien komplett jorunalisiert (zumindest wenn sie unter commit Steuerung verwendet werden; allenfalls hängt man die Journalisierung vor Copy hin und zurück Arien ab, dazu braucht man eh einen exclusive lock, den man sich vorher holt).
    Der strcmtctl ist bei embedded SQL auch überflüssig, das passiert automatisch auch.

    D*B

    Zitat Zitat von Christian.Hesse Beitrag anzeigen
    Ich habe eben gerade bemerkt, daß ich etwas unterschlagen habe, nämlich das:

    Code:
     C                   EVAL      rc = DoCmd('STRJRNPF FILE(JIVEHH)'     + 
     C                                      ' JRN(JISJRN) IMAGES(*BOTH)')
    und genau daran bleibt er mit einem LCKW hängen. Vorallem habe ich noch mehr davon...

    Code:
     * +------------------------------------------------------------+ 
     * ¦  End Commit Control of previous Runs                         
     * +------------------------------------------------------------+ 
    C                   EVAL      rc = DoCmd('ENDCMTCTL')              
    .
    .
    .
    C                   EVAL      rc = DoCmd('STRJRNPF FILE(JIVEHH)'     +
    C                                      ' JRN(JISJRN) IMAGES(*BOTH)')  
    
     * +------------------------------------------------------------+ 
     * ¦  Start CMTCTL on Joblevel                                    
     * +------------------------------------------------------------+ 
    C                   CLEAR                   rc                     
    C                   EVAL      rc = DoCmd('STRCMTCTL LCKLVL(*CHG)' +
    C                                      ' CMTSCOPE(*JOB)')          
    
    C                   OPEN      JIVEHH
    Der STRJRNPF wird für sämtliche Files wiederholt, die unter Commit Control geöffnet werden.

    Damit stellt sich für mich eine neue Frage: Ist das gut so? Macht man das so? Oder sollte man das anders machen?

    Vielen Dank!

    Gruß

    Christian
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Der strcmtctl ist bei embedded SQL auch überflüssig, das passiert automatisch auch.
    Allerdings sollte man dabei auch wissen, dass mit Standard-Werten gestartet wird, d.h. der Commitment Level ist auf *ACTGRP! Bei unsauberem Design hat das schon manches Mal für ein böses Erwachen gesorgt, da COMMIT und ROLLBACK nur innerhalb der Aktivierungsgruppe ziehen.

    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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... wo er auch hingehört
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Allerdings sollte man dabei auch wissen, dass mit Standard-Werten gestartet wird, d.h. der Commitment Level ist auf *ACTGRP! Bei unsauberem Design hat das schon manches Mal für ein böses Erwachen gesorgt, da COMMIT und ROLLBACK nur innerhalb der Aktivierungsgruppe ziehen.

    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Nov 2005
    Beiträge
    50
    Was mich etwas wundert: Warum setzt der WRKQRY einen *SHRNUP auf das File, wohingegen andere Programme sich mit einem *SHRRD zufrieden geben?

    Christian

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    der soll wohl sicher stellen, dass Summen stimmen, ich weiß aber nicht wie lange der den hält und ob man das einstellen kann.

    D*B

    Zitat Zitat von Christian.Hesse Beitrag anzeigen
    Was mich etwas wundert: Warum setzt der WRKQRY einen *SHRNUP auf das File, wohingegen andere Programme sich mit einem *SHRRD zufrieden geben?

    Christian
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  9. #9
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Siehe hier unter Datenbereich QQULCKLVL.

  10. #10
    Registriert seit
    Nov 2005
    Beiträge
    50
    Das paßt und funktioniert. :-)

    Vielen herzlichen Dank und ein schönes Wochenende

    Christian

Similar Threads

  1. Kein Zugriff über QNTC auf Win-Share
    By marmart in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 25-09-07, 15:29
  2. QNTC Zugriff auf CD Laufwerk Fehlerhaft
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-11-06, 15:34
  3. auf aktiven Job prüfen
    By TARASIK in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 26-10-06, 11:07
  4. Status nach Druck nich SAV, sonder Drucker auf END
    By zannaleer in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 13-09-06, 10:35
  5. Domino Job auf AS/400 ändern
    By ukoh19 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 01-09-04, 12:23

Berechtigungen

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