[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    122
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Habt Ihr Euch eigentlich mal die Definition von %CHECK angeschaut?

    ... aus der RPG Reference:
    %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.

    Sofern mich mein Englisch nicht ganz im Stich lässt, bedeutet dies, dass die Position des ersten abweichenden Zeichens zurückgegeben wird, bzw. wenn der String nur aus gültigen Zeichen besteht wird 0 zurückgegeben.

    Birgitta
    ja genau so seh ich das auch. Finde da die TESTN funktion einfacher. Habe TESTN mal mit Feldinhalt 'ROM' getestet. Liegt ja im Bereich von J-R und wird lt. Handbuch als negativer Wert angesehen. Laut meines Tests sieht er aber diese Buchstaben auch als Zeichen an und die Bezugszahl wird nicht auf *on gesetzt.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.704
    Bei TESTN wird das Vorzeichen nur auf der letzten Stelle angenommen.
    Zeichen vor der letzten Stelle müssen natürlich numerisch sein, wobei Leerzeichen auch noch gesondert behandelt werden.

    Teste mal mit "12M" statt "ROM".

    Es geht aber auch noch so:

    if %len(%trim(%xlate('1234567890':' ':MyTest))) > *zero;
    // Nicht numerisch
    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

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    122
    [quote=Fuerchau;75268]

    Teste mal mit "12M" statt "ROM".

    OK hast mich überzeugt

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.931
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Es geht aber auch noch so:

    if %len(%trim(%xlate('1234567890':' ':MyTest))) > *zero;
    // Nicht numerisch
    endif;
    Würde aber auch bei dem String '1 23 45 67' *Zeros zurückbringen und damit könnte auch eine der Funktionen %DEC, %DECH, %INT oder %INTH verwendet werden, die konvertieren einen solchen String problemlos in 1234567.

    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.704
    Wie wärs dann mit:

    if %len(%trim(%xlate(' 1234567890':'X ':MyTest))) > *zero;
    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

  6. #6
    Registriert seit
    Mar 2019
    Beiträge
    36
    Soll das 0 liefern wenn das Feld MyTest nur nummerische werte beinhaltet? Oder soll es die Läge von MyTest wiedergeben?
    len = %len(%trim(%xlate('0123456789':'X':'0045958')));
    Liefert bei mir 7!
    len = %len(%trim(%xlate('0123456789':' ':'0045958')));
    Liefert bei mir 5!
    ??????

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.704
    Wie immer eine Darstellungssache dieses Forums:

    Code:
    %len(%trim(%xlate('0123456789':'          ':'0045958')));
    Die Anzahl der Zeichen von/nach muss identisch sein, also 10 Leerzeichen statt einem.
    Aber wie Birgitta schon schrieb:

    %dec(Var:n:m) kommt mit Leer- und Vorzeichen zurecht.
    Bei nicht numerisch gibts eine Exception, folglich:

    Code:
    monitor;
      mydec = %dec(...);
    on-error *all;
      // nicht numerisch
    endmon;
    Das Ganze kann man sich auch in eine Funktion packen.
    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
    Mar 2019
    Beiträge
    36
    Danke,
    wie weit ich damit gehen kann weiß ich noch nicht. Der Kunde arbeitet noch mit I- und O-Karten, auch beim Display! Aber ich werde das mal so einbauen. Auf partielles FreeRPG bin ich ja schon gegangen.

  9. #9
    Registriert seit
    Jan 2008
    Beiträge
    159

    Smile

    Zitat Zitat von Lucky662 Beitrag anzeigen
    Danke,
    wie weit ich damit gehen kann weiß ich noch nicht. Der Kunde arbeitet noch mit I- und O-Karten, auch beim Display! Aber ich werde das mal so einbauen. Auf partielles FreeRPG bin ich ja schon gegangen.
    nach 55 Jahren RPG-Erfahrung hat sich gezeigt, egal RPG400 ILE/Free/VARPG, dass die sicherste und am einfachsten durchschaubare Methode sich bis heute bewährt hat:
    - übertrage(MOVEA) dein alpha-Feld in eine Feldgruppe mit Elementlänge 1(ARR)
    - definiere eine Ziffernkonstante '0123456789' (ZIFFER)
    - definiere eine DO-Schleife mit Index (X)
    - prüfe ARR,X SCAN ZIFFER Bezugszahl auf GLEICH
    - weiteren Prüfungen und Logiken sind keine Grenzen gesetzt.
    - ENDDO

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.704
    Genau, warum einfach wenn es auch kompliziert geht;-).
    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

  11. #11
    Registriert seit
    Jan 2008
    Beiträge
    159
    es freut mich diese sachliche Antwort, frei vom Emotionen. Das Risiko einer roten Karte scheint gebannt zu sein. Vielleicht eine zusätzliche Grüne, wäre ein nettes Farbenspiel.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.704
    Ich hätte da jetzt eher einen Hinweis auf ChatGPT erwartet...
    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

Similar Threads

  1. Kein Zugriff über QNTC auf Win-Share
    By marmart in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 25-09-07, 15:29
  2. QNTC Zugriff auf CD Laufwerk Fehlerhaft
    By pwrdwnsys in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-11-06, 15:34
  3. auf aktiven Job prüfen
    By TARASIK in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 26-10-06, 11:07
  4. Status nach Druck nich SAV, sonder Drucker auf END
    By zannaleer in forum NEWSboard Drucker
    Antworten: 6
    Letzter Beitrag: 13-09-06, 10:35
  5. Alpha-Feld auf nummerisch prüfen
    By Sulla in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 29-12-05, 10:41

Berechtigungen

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