[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2006
    Beiträge
    88

    DTAARA-Fehler RNX0412

    Ich habe das Problem das innerhalb eines Programmes eine Dataarea auf Fehler geht sobald ich diese ein zweites mal schreiben will.
    Die Dataarea ist wie folgt definiert:

    D dsLast UDS DTAARA('LASTUMS272')
    D vDate 1 8A
    D vLJJ 1 4A
    D vLMM 5 6A
    D vLTT 7 8A
    D vLastName 9 32A

    Gelesen wird sie mit:

    in dsLast;

    if dsLast.vDate <> *blanks;
    LDATE = dsLast.vLTT + '.' + dsLast.vLMM + '.' +dsLast.vLJJ;
    LASTNAME = dsLast.vLastName;
    endif;

    und geschrieben mit:

    dsLast.vDate = GetJobDate('JJJJMMTT');
    dsLast.vLastName = %trim(pUSER);

    out dsLast;

    Mein Problem dabei ist wenn die Dataara das zweite mal geschrieben werden soll kommt folgende Fehlermeldung:

    Datenbereich *LIBL/LASTUMS272 ist nicht für die Ausgabe zugeordnet.
    Funktionsprüfung. RNX0412 nicht überwacht durch UMS272A bei Anweisung
    0000008875, Instruktion X'0000'.

    Ich habe schon probiert mit lock und unlock das Problem zu lösen. Hatte damit aber keinen Erfolg.

    Was mache ich falsch?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Ein OUT ist nur möglich, wenn ein IN vorher erfolgreich war, da mit dem IN automatisch eine Updatesperre für andere Programme gesetzt wird.
    Mit OUT wird die Sperre automatisch aufgehoben, so dass ein IN wieder erforderlich ist.
    Dies entspricht dem selben Verhalten wie UPDATE, den ich ja auch nicht mehrmals ohne READ durchführen kann.

    Noch ein Hinweis:
    Lass das "U" bei der Definition der DTAARA weg.
    Dieses "U" bewirkt, dass beim 1. Aufruf des programmes die DTAARA automatisch per IN gelesen wird und, wenn mit *INLR=*ON verlassen wird, wieder ausgegeben wird.
    Dies kann insofern fatal werden, wenn du nach deinem OUT die Variablen ggf. veränderst.
    Ausserdem läuft dein Programm ggf. beim Aufruf bereits auf einen Fehler, wenn die Sperre nicht erhalten werden kann.

    Bei IN ist ggf. die SDS oder eine BZ (*error) auszuwerten, ob der IN erfolgreich war.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jul 2002
    Beiträge
    218
    hast du vor dem zweiten OUT auch ein IN

  4. #4
    Registriert seit
    May 2006
    Beiträge
    88

    Lösung

    Ich habe jetzt ei zusätzliches
    in *lock dsLast;
    Damit funktoniert es!

Similar Threads

  1. Os400 Fehler ?
    By Robi in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 04-11-06, 16:02
  2. Fehler: SQL0302 Umsetzungsfehler / ado
    By Asti in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 29-08-06, 13:24
  3. Triggersyntax erzeugt nur Fehler
    By deni87991 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:05
  4. Fehler im SQL bzw. Joblog
    By GraueEminenz in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 10-07-06, 11:58
  5. ODBC Verbindungs Fehler (-7778)
    By Hubert in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 10-05-06, 09:41

Berechtigungen

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