Anmelden

View Full Version : DTAARA-Fehler RNX0412



Kaufmann
11-11-08, 09:01
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?

Fuerchau
11-11-08, 09:18
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.

jajonowak
11-11-08, 09:19
hast du vor dem zweiten OUT auch ein IN

Kaufmann
12-11-08, 08:08
Ich habe jetzt ei zusätzliches
in *lock dsLast;
Damit funktoniert es!