Hallo Dirk,
mit einem einzigen Statement klappt das nicht!
Hier ist ein Beispiel für eine Funktion, die die Haus-Nr. ermittelt.
(ab Release V5R1M0)
Einige Sonderfälle sind abgefangen für andere Sonderfälle kannst Du ja die Funktion modifizieren.
Prototyp:
PHP-Code:
D HausNummer PR 10A
D PPStr like(Str) const
PHP-Code:
P HausNummer B
* Procedure Interface
D HausNummer PI 10A
D PPStr like(Str) const
* Hilfs-Felder
D RtnHausNr S 10A
D Index S 3U 0
* Ermitteln Haus-Nr.
/Free
if %CheckR(' ': PPStr) = %Len(PPStr);
Return *Blanks;
Endif;
Monitor;
For Index = %Scan(' ': PPStr: 1) to %CheckR(' ': PPStr)
by %Scan(' ': PPStr: Index+1)-Index;
If %Subst(PPStr: Index+1: 1) >= '0'
and %Subst(PPStr: Index+1: 1) <= '9';
RtnHausNr = %Subst(PPStr: Index+1: %CheckR(' ': PPStr) - Index);
EndIf;
if %Scan(' ': PPStr: Index + 1) > %CheckR(' ': PPStr);
Return RtnHausNr;
Endif;
EndFor;
on-Error;
Return *Blanks;
EndMon;
Return *Blanks;
/End-Free
P HausNummer E
Die Funktion liefert für folgende Beispiele folgende Ergebnisse:
PHP-Code:
TestInSerT 234 --> 234
TestInsert 1A --> 1A
TEST Ins 4/25b --> 4/25B
Test 2 x --> 2 x
T e s t 13245 --> 12345
TestinsertABCDE --> *Blanks
TESTInsert A23 --> *Blanks
TestI --> *Blanks
Test XY z 23a4 --> 23a4
Birgitta
Bookmarks