PDA

View Full Version : likerec



jajonowak
14-02-08, 08:33
hallo forum,

ich wollte mir etwas tipparbeit ersparen

Fsklmvwl00 uf a e k disk rename(sklmvwp: sklmvw00)
D Rec ds likerec(sklmvw00: *all)
D RecKeyds likerec(sklmvw00: *key)

/free
RecKey.smfkz=smfkz;
RecKey.smart#=smart#;
chain %kds(Reckey) sklmvwl00;
/end-free

der Satz wird gefunden, die felder sind gefüllt, nicht aber die
rec.xxxx - Felder

und hatte mir vorgestellt, das nach dem chain
diese datenstruktur gefüllt ist. leider war dem nicht so.

habe ich nun einen codier- oder denkfehler ?


fragende grüße
Hans-Joachim

Tobse77
14-02-08, 08:49
Guten Morgen,

soweit ich weiß, werden durch das Schlüsselwort likerec lediglich die Feldattribute übernommen, nicht aber die Feldinhalte.

Fuerchau
14-02-08, 09:03
A data structure defined with LIKEREC is a qualified data structure.

Wenn du die Felder gefüllt haben willst, dann nimm nicht "likerec" sondern definiere die Struktur wie immer mit "REC E DS EXTNAME(MYFILE)".

Fuerchau
14-02-08, 09:24
Ergänzung:


The following example uses prefix ’MYDS.’ to associate the fields in MYFILE with
the subfields of qualified data structure MYDS.

Fmyfile if e disk prefix(’MYDS.’)
D myds e ds qualified extname(myfile)

was natürlich auch mit einer Likerec-DS geht, da diese ja qualified ist.

jajonowak
14-02-08, 11:16
@tobse77
@fuerchau


vielen Dank für die Hilfe !!!!!

werde es entsprechend umstellen.



lg
Hans-Joachim

B.Hauser
14-02-08, 11:42
Hallo,

wenn mit LIKEREC oder auch mit EXTFILE und den Schlüssel-Worten QUALIFIED oder PREFIX eine externe Datenstruktur definiert wird, in die der Datensatz ausgegeben werden soll, muss diese Datenstruktur auch beim Lesebefehl angegeben werden. Um den Datensatz aus der Datenstrukrur fortzuschreiben, muss auch bei Update die Datenstruktur angegeben werden.

Auf die Ausgabe in die Datenstruktur kann man nur dann verzichten, wenn die Datenstruktur nicht qualifiziert ist und die Felder gleich heißen (also kein Prefix angegeben wurde).



FMYFILE UF A E K DISK

D DSMYFILE DS likeRec(MyFormat) inz
D DSMyKey DS LikeRec(MyFormat: *Key)

/Free
Chain %KDS(DSMyKey) MyFile DSMyFile;
If %Found;
DSMyFile.Fld1 = 123;
........
Update MyFormat DSMyFile;
EndIf;


Birgitta