-
Hi,
also ich schmeiße mir in solchen Fällen die Zeichen alle raus.
Das ' wird durch '' (2 mal das ' hintereinander) in der Konstante definiert
PHP-Code:
d Such c '°^''#'
d Ersatz c ''
...
c Eval Text = %XLate( Such : Ersatz : Text)
Hoffe das hilft weiter
Gruß
Ronald
-
Ungültige Zeichen in einem Eingabefeld können da nur kleiner X'40' (*BLANK) sein.
Hier hilft ggf. eine kleine RPGLE-Funktion, die einfach alle Zeichen kleiner *BLANK eliminiert.
Ein Hochkomma ist eigentlich ein gültiges Zeichen.
d ReplaceChar pr 255 varying
d SourceFld 255 varying const
d ReplaceChar pi 255 varying
d SourceFld 255 varying const
d Count 10I 0
c/free
for Count = 1 to %length(SourceFld)
if %subst(SourceFld:Count:1) < *blank;
%subst(SourceFld:Count:1) = *blank;
endfor;
return SourceFld;
Mittels "MyFld = ReplaceChar(MyFld);" kannst du alle ungültigen Zeichen eliminieren.
-
danke - das mit " ' wird durch '' (2 mal das ' hintereinander) " hilft mir auch für die Zukunft weiter
-
Dies gilt übrigens für fast alle Sprachumgebungen:
CLP/CMD's
RPG/LE
SQL
MS-DOS-Befehle
Unix-Kommandos
u.v.m.
-
danke - muss ich testen - arbeite nicht mit free RPG, aber versuche ich mal um zusetzen - melde mich wenn es geklappt hat - danke
-
im nicht Free sieht es auch nicht viel anders aus...
PHP-Code:
c For Count= 1 to %Len( SourceFld )
c If %SubSt( SourceFld: Count: 1) < *Blanks
c Eval %SubSt( SourceFld: Count: 1) = *Blanks
c EndIf
c EndFor
c Return SourceFld
Gruß
Ronald
-

bei mir funktioniert es einfach nicht !
C*** ungültige Zeichen entfernen
C 1 DO 30 I
C*** Fehlerbehandlung
C IF %SUBST(Anschrift:I:1) < *BLANK
C EVAL %SUBST(Anschrift:I:1) = *BLANK
C ENDIF
C ENDDO
Es kann nur so sein, das der Wert nicht kleiner *BLANK ist oder ?
hilfe
-
Per Debugger (STRDBG) kannst du dir den Inhalt auch mal Hex anzeigen lassen:
eval Anschrift:x
Alternativ ist dies auch per SQL möglich:
select hex(Anschrift) from myfile
-
Mit DSPPFM kannst du dir den Inhalt der Datei ansehen und dabei mit F10 die "Hexadezimalwerte anzeigen".
-
das ist wirklich interresant 
habe für den Test wirklich, nur den defekten Datensatz in der Testdatei
wenn ich mir diesen mit upddta anzeigen möchte - kommt der Fehler
"Aufgefundener Satz enthält ungültige Daten" (wie oben beschrieben)
mit DSPPFM
folgende Anzeige mit DSPPFM F10
D3C5D6FF D3404040 LEO L
jetzt kommt - im Pgm kann er keinen Wert finden der "kleiner *Blank" ist
- jetzt kommst
wenn ich RUNQRY auf die Datei mache und den Wert per copy und paste
in die Variable mit EVAL einfüge, (beim debbugen) und dann EVAL ANS:X
EVAL lan1:x
D3C5D63F D3404040 40404040 40404040 - LEO.L (woher kommt der Punkt?)
und dann findet er auch den Wert kleiner *BLANK eben "3F"
Verstehe ich einfach nicht
-
Ein X'FF' macht beim UPDDTA anscheinend auch Probleme.
Similar Threads
-
By Neelix in forum NEWSboard Windows
Antworten: 7
Letzter Beitrag: 12-03-19, 13:06
-
By nico1964 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 27-11-13, 20:14
-
By HJM in forum NEWSboard Windows
Antworten: 3
Letzter Beitrag: 25-02-02, 23:27
-
By muadeep in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 18-02-02, 22:15
-
By horst in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 04-10-01, 21:44
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