-
Verhindern das weniger als 8 Stellen in einer Displayfile eingegeben werden
Hallo ,
ich möchte verhindern das in einem Programm wo spez. Geräte gepflegt werden, die Gerátenummer unvollständig hinterlegt wird.
Es geht um eine 8 stellige Nummer, welche händisch eingepflegt werden muss, sobald diese aber nicht 8 Stellen hat, läuft ein batch Programm auf MSGW.
Ich hatte zuerst an %len gedacht, aber das gibt mir anscheinend nur die Länge der deklarierten Variable zurück, aber nicht die Länge des Inhaltes.
Mein zweiter Gedanke war einfach die Zahl in ein char zu casten und dann mittels %scan zu schauen ob ein blank auftaucht.
Das kommt mir aber so plump vor, gibt es nichts elegantes um dies zu lösen? Meine Kollegen konnten mir da nicht weiterhelfen.
Grüße
Dominic
-
Moin,
quick and dirty:
if 8 stellige zahl < 10000000
fehler.
else
mach was
endif
mfg
DKSPROFI
-
Moin,
Du kannst aber auch so lösen, für den Fall das Dein Feld Alpha ist.
For $i = 1 To %Len(%Trim(DeinFeld)) ;
If %Subst ( DeinFeld : $i : 1 ) = DeinZeichen' ;
Fehler ;
EndIf ;
EndFor ;
mfg
DKSPROFI
-
Wenn es noch Spaltengebunden sein darf/soll ist TESTN ein guter befehl:
Code:
IF %LEN(%TRIM(FELD))<>8
*FEHLER
ELSE
TESTN FELD 979899
*IN97 = *ON // Ist rein nummerich
*IN98 = *ON //Nummerisch und Blanks
*IN99 = *ON // Ist Blanks
Alle *OFF = Ungültige Nummerische Werte
ENDIF
-
Wie ist das Feld in der Bildschirmdatei definiert? Bei welcher Zahl läuft es auf MSGW?
-
Zitat von Dominic K.
..
Ich hatte zuerst an %len gedacht, aber das gibt mir anscheinend nur die Länge der deklarierten Variable zurück, aber nicht die Länge des Inhaltes.
...
Die EINGEGEBENEN Zeichen mit "%LEN" ermitteln geht so:
ANZAHL =%LEN(%TRIM(Feldname))
Aber nur bei Alpha.
Wenn numerisch, dann hat DKSPROFI in seiner ersten Antwort ja schon beantwortet
(if... < 10000000)
-
Egal ob Numerisch oder Alpha:
%len(%trim(%char(Feld)))
Bei Zeichenfeldern gibts keine Wandlung, bei numerischen Feldern gibts Edit ohne Vornull.
Aber eine typgerechte Prüfung ist dem immer vorzuziehen.
-
PHP-Code:
D DS
DNUMMER 8S 0 INZ(12345678)
DSTELLE1 1A OVERLAY(NUMMER)
D
C STELLE1 IFNE '0'
C ENDIF
-
Ah ok
Mit Trim wird also der tatsächliche Inhalt gezählt. Hatte das anders verstanden.
Hätte ich vllt. erst einmal praktisch testen sollen >.<
Danke für die Hilfe und allen einen guten Rutsch ins neue Jahr!
-
Mit %TRIM werden die Enden gestutzt.
-
Zu unterscheiden sind die Funktionen
%trim(): Blanks am Anfang und Ende entfernen
%triml(): Blanks am Anfang
%trimr(): Blanks am Ende
Das Ergebnis ist ein Varying-Feld, dessen Länge mit %len() abgefragt werden kann.
Übrigens %checkr() liefert die 1. Position eines ungültigen Zeichens aus einer Liste.
%checkr(' ':Feld) liefert also die Position des letzten Zeichens vor Blank und somit ebenso die Länge des Inhalts ohne Leerzeichen.
-
@Pikachu : Das weis ich :-) dachte nur nicht das dies mit %len koppelbar ist und dann der tatsächliche inhalt zurückgegeben wird. Habe die Beispiele in der Reference zu %len nicht korrekt gelesen.
Similar Threads
-
By ExAzubi in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 16-12-17, 12:28
-
By dibe in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 10-08-16, 14:21
-
By Stephan70 in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 21-12-15, 07:12
-
By falke34 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 11-02-15, 16:13
-
By Daechsle in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 05-06-14, 14:29
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks