hteufl
17-10-13, 13:24
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
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