Hallo!

Ich habe wieder einmal ein Problem. Ich lese die Datei QUSRSYS/QAOKL12A für den Familien-/Vornamen eines Benutzers. Mein Problem ist nun, dass ich die Variable-Length-Fields nicht korrekt per Modul in ein Programm übermitteln kann.
Im aufrufenden Programm wird das Module wie folgt aufgerufen:

Dmd_emailu pr extproc('MD_EMAILU')
D puser 10a const
D pemailadr 300a varying
D pFName 42a varying
D pVName 22a varying
D prtnsts 1a
D*
D puser s 10a
D pemailadr s 300a varying
D pFName s 42a varying
D pVName s 22a varying


Das Module für die Namensermittlung empfängt folgende Parameter:

Dinput pr extproc('MD_EMAILU')
D pusernm 10a const
D pemailadr 300a varying
D pFName 42a varying
D pVName 22a varying
D prtnsts 1a



Mit pFName = wok9srcl wird immer die komplette Feldlänge in pFName eingetragen (42Byte). Mit pFName = %trimr(wok9srcl) wird immer das Längenfeld mitgespeichert und somit die Länge von pFName um 2 Byte zu lang.


Außerdem dachte ich immer, dass wenn ein Variable-Length-Field in ein Zeichenfeld übertragen wird dies immer ohne der Längenangaben erfolgt?!? Text = W0K9SRCL ergibt aber immer eine 1:1 Kopie des Inhaltes von WOK9SRCL.
Beide Module habe mit CVTOPT(*VARCHAR) umgewandelt.

Wie bekomme ich jetzt den Inhalt der Variable-Length-Fields einfach in ein normales Zeichenfeld?

Danke für Eure Antworten im voraus

Hermann