1. In der Formelsprache verschachtelt man nicht so tief, sondern geht sequentiell vor.
2. Der Text bei @Prompt kann maximal 254 Zeichen lang sein (und ich meine, auch die Anzahl der Zeilen ist beschränkt).
3. Du machst ein @Prompt am Ende... Das bricht NIX ab... Also egal wo der Code steht: Der Benutzer kann mit "Strg + S" oder drücken auf das Diskettensymbol jederzeit speichern,
ohne dass Deine Validierungen abgefragt werden.
Wenn man all das ignoriert, und auf dem Spaghetti- Code besteht, dann würde das so aussehen:
_var := @If( @Length(PersonenNr.)!=10; "Personen-NR muss zehnstellig sein" ; "") :
@If( @Matches(PersonenNr.;"+?{!0-9}"); _var : "Sie dürfen in der Personen-NR nur Zahlen verwenden" ; "" ) :
@If( FKB_OE!="" & @Length( FKB_OE ) != 7; "OE muss siebenstellig sein" ) :
...
_msg := @Implode( @Trim( _var ) ; @NewLine );
@Prompt( [OK] ; Hinweis; _msg )
Die @Ifs werden also einfach als Liste hintereinandergeschaltet und dann am Ende per @NewLine zu einem String implodet.
Das ändert immer noch nix an 2 und 3, aber funktioniert wenigstens. Wenn Du das in eine FeldValidierung packst, dann müsste die letzte Zeile so aussehen:
@If( _var != "" ; @Failure( _msg ) ; @Success )
Problem bei der Sache: @Failure kennt kein @NewLine und auch keine andere Möglichkeit, Zeilenumbrüche unterzubringen... ziemlich hässliche Meldung dann...