[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2005
    Beiträge
    42

    Sonderzeichen abfragen

    Hallo,

    ich muss in manchen Textfeldern alle Sonderzeichen abfragen, es sind nur Groß- und Kleinschreibung erlaubt.
    Gibt es dort eine Möglichekeit dies Abzufragen? Vielleicht direkt im Displayfile? Hab dort bisher nur die Value Werte gefunden!

    Danke für eure Hilfe

    Gruß

    Marcel

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Im DSPF gehts mit der Tastaturumschaltung. Da kann man so ein wenig einschränken.

    Ansonsten gehts im Programm mit CHECK.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Oct 2005
    Beiträge
    42
    Hallo,

    danke für die Antwort. Habe es mal mit CHECK ausprobiert, es funktioniert auch aber ich noch ein kleines Problem. Unzwar erfasse ich momentan in einer Konstanten das Alphabet also die gültigen Zeichen. Ich würde aber lieber die ungültigen Zeichen erfassen und auf diese dann prüfen aber leider funktioniert dies nicht wirklich mit der CHECK funktion. Gibt es dort eine andere Möglichkeit?

    Danke für eure Antworten

    Marcel

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Man kann leider nur auf "Gültig" und nicht auf "nicht Gültig" prüfen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Oct 2005
    Beiträge
    42
    hm hatte ich mir leider gedacht. Haben Sie denn zufällig eine andere Idee. Mir fällt sonst nur ein Array ein, welches ich durchlaufe und dann mit der SCAN funktion das Feld durchsuche. Die Lösung gefällt mir nur nicht so gut, bin ein Freund von wenig Code .

    Gruß

    Marcel

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Das ist doch kein Problem!
    Die Sonderzeichen in dem String werden alle entweder mit dem OPCode XLATE oder mit der Built-in-Funktion %XLATE auf ein nicht zulässiges Sonderzeichen konvertiert. Dann wird entweder mit dem OPCode SCAN oder der Built-In-Funktion %SCAN geprüft, ob dieses Zeichen im String vorkommt.
    ... und fertig. Maximal 5 Code Zeilen

    PHP-Code:
    D Text            S            256A   Varying      
                                                       
    D Ungueltig       S              4A   inz
    ('!;.?')  
    D Ersetzen        S              4A   inz('****')
     *----------------------------------------------
    /
    Free                                                  
       Text 
    = %XLate(UngueltigErsetzenText);        
       If %
    Scan('*'Text) > *Zeros;                       
          
    //Ungültige Zeichen
       
    Else;
          
    //Nur gültige Zeichen                                     
       
    EndIf;                                 
    /
    End-Free 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Naja, weniger Code ist das auch nicht.
    Aber im Free-Format kann man auch noch abkürzen:

    If %Scan('*': %XLate(Ungueltig: Ersetzen: Text) ) > *Zeros;
    :
    endif;
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    Registriert seit
    Oct 2005
    Beiträge
    42
    Hallo,

    Danke für eure Antworten, werde es jetzt gleich direkt mal einbauen. Die Funktion XLATE war mit bisher noch nicht bekannt.

    Mit wenig Code meinte ich eigentlich das Array, hier kann ich ja wieder mit einer Konstanten arbeiten.

    Gruß

    Marcel

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Welches Array ?

    Auch beim Check kann ich mit einer Konstanten und einem Befehl arbeiten:

    %CHECK (Check Characters)
    %CHECK(comparator : base {: start})
    %CHECK returns the first position of the string
    base that contains a character that
    does not appear in string
    comparator. If all of the characters in base also appear in

    comparator
    , the function returns 0.
    The check begins at the starting position and continues to the right until a
    character that is not contained in the comparator string is found. The starting
    position defaults to 1.
    The first parameter must be of type character, graphic, or UCS-2, fixed or varying
    length. The second parameter must be the same type as the first parameter. The
    third parameter, if specified, must be a non-float numeric with zero decimal
    positions.

    Also:
    D Gueltig 36A inz('ABCD.....)

    if %check(Gueltig:Text) > 0;
    => Fehler
    endif;

    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Oct 2005
    Beiträge
    42
    das ist mir bewusst, hab ich ja auch gemacht. Aber ich wollte ja die ungültigen Zeichen erfassen und nicht die gültigen. Deshalb fiehl ja die Funktion CHECK raus.

    Gruß

    Marcel

Similar Threads

  1. Antworten: 4
    Letzter Beitrag: 11-08-06, 11:26
  2. Quersumme mit SQL abfragen
    By behmer in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 03-08-06, 09:53
  3. Ebene der Rekursion abfragen
    By zannaleer in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 24-07-06, 11:57
  4. Textdatei im IFS hat Sonderzeichen
    By TARASIK in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-06-06, 15:59

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •