PDA

View Full Version : Problem mit LDA / *NAMVAR



sunhole
15-03-05, 13:51
Habe folgende statmements in meinem porgramm:

*LOCK IN *NAMVAR
MOVELLDA#PA #VKAUF
CLEAR#LDA
*LOCK OUT *NAMVAR

wenn ich im debuger auf dem statement *LOCK IN ... bin, hat LDA#PA noch werte drinn.Sobald ich aber F5 mache und aufs nächste statement gehe, hat LDA#PA *BLANKS drinn. Wiso kann dies passieren?

Merci für eure hilfe!

kuempi von stein
15-03-05, 14:01
Habe folgende statmements in meinem porgramm:

*LOCK IN *NAMVAR
MOVELLDA#PA #VKAUF
CLEAR#LDA
*LOCK OUT *NAMVAR

wenn ich im debuger auf dem statement *LOCK IN ... bin, hat LDA#PA noch werte drinn.Sobald ich aber F5 mache und aufs nächste statement gehe, hat LDA#PA *BLANKS drinn. Wiso kann dies passieren?

Merci für eure hilfe!na ja,

einfach gesagt, ist der debugger immer eine zeile hinterher...
wenn also die 5 highlighted ist, dann bist du sozusagen auf der 4 (ist die 4 abgearbeitet) ....
jedenfalls ist das hier bei mir so.
dann gibts da natürlich noch das problem, das eine sourcezeile nicht unbedingt eine echte anweisungzeile ist.. aber das ist eine andere geschichte...

k.


geändert:
mhh.. umsomehr ich drüber nachdenke...
ist nicht die antwort auf deine frage, gell?
mhh.

jajonowak
15-03-05, 14:22
hi sunhole

ist dein lda ein datenbereich, oder tatsächlich der locale datenbereich?

dazu aus der rpg-fibel:

enthält faktor 2 den namen des lokalen datenbereichs oder des pip-datenbereichs (program initialization parameters), darf faktor 1 keinen Eintrag enthalten.

lg
hans-joachim

kuempi von stein
15-03-05, 14:25
na ja,

.
also... neuer versuch...

laut handbuch werden alle dtaaras gelesen bei deiner in - operation.
wie und wo ist denn LDA#PA definiert?

k.

sunhole
15-03-05, 14:36
OK die LDA ist ind den I-Zeilen definiert:

I#LDA DS
I 1 10 LDA#ID
I 11 200 LDA#PA

und initialisiert wird si wie folgt:

C *NAMVAR DEFN *LDA #LDA
C CLEAR#LDA
C MOVEL*BLANKS LDA#PA

kuempi von stein
15-03-05, 14:46
OK die LDA ist ind den I-Zeilen definiert:

I#LDA DS
I 1 10 LDA#ID
I 11 200 LDA#PA

und initialisiert wird si wie folgt:

C *NAMVAR DEFN *LDA #LDA
C CLEAR#LDA
C MOVEL*BLANKS LDA#PA
joo, nun ist alles klaro...
durch die zeile *LOCK IN *NAMVAR
wird die dtaaara #LDA eingelesen und das "unterfeld" LDA#PA auf den gelesenen wert gesetzt.
in deinem falle scheint die dtaara #LDA wohl an position 11 bis xx nix stehen zu haben...
deshalb ist nach der IN - operation die variabel LDA#PA leer...

k.

jajonowak
15-03-05, 14:46
OK die LDA ist ind den I-Zeilen definiert:

I#LDA DS



heißt es nicht U (U eingeben , wenn dies eine Datenbereichs-Datenstruktur ist) DS


lg
Hans-Joachim

Fuerchau
15-03-05, 15:58
Normalerweise sieht das für *LDA so aus:

IMYLDA DS

C *NAMVAR DEFN *LDA MYLDA
C IN MYLDA
C OUT MYLDA

Ein *LOCK ist absolut unnötig, da die *LDA auf den Job beschränkt ist.
"IN" liest und "OUT" schreibt, wenn ich also erst die Variablen fülle und anschließend mit IN lese, ist halt nix drin.

sunhole
16-03-05, 06:57
Hab den Fehler gefunden. Lag tatsächlich darann, dass ich die LDA nachher gelesen habe. IN-Statement zu spät :) Merci!