-
CL Variable Leerzeichen entfernen / ersetzen
Moin,
stehe hier vor einem, für mich, größerem Problem 
Ich habe eine Char Variable in einem CL
'XXX 45 77 99 GG TT'
diese brauche ich aber OHNE diese lästigen Leerzeichen
also als
'XXX457799GGTT'
Substr haut nicht hin da die Leerzeichen an verschiedenen Stellen stehen können
Habt Ihr nen CL Codeschnipsel für mich der das tut ?
Danke für Eure Mühe
Gruß aus dem sonnigen Frankenland
-
Hallo!
Wenn es wirklich in CL sein muss dann gibt es (soweit ich weiß) nur eine Möglichkeit:
Scan for String Pattern (QCLSCAN) API
in Kombination mit SubString. (%sst)
Beispiel von QCLSCAN: How to scan a char?
LG,
Sam
Nachtrag:
Hab auf die schnelle (wenn mein Chef wüsste..) was kleines gebaut, es ist nicht schön, nicht gut überlegt, aber es funktioniert 
Code:
PGM
DCL VAR(&RESULT) TYPE(*CHAR) LEN(999)
DCL VAR(&STRING) TYPE(*CHAR) LEN(999) VALUE('XXX +
45 77 99 GG TT')
DCL VAR(&STRLEN) TYPE(*DEC) LEN(3) VALUE(999)
DCL VAR(&STRPOS) TYPE(*DEC) LEN(3) VALUE(1)
DCL VAR(&PATTERN) TYPE(*CHAR) LEN(999) VALUE(' ')
DCL VAR(&PATLEN) TYPE(*DEC) LEN(3) VALUE(1)
DCL VAR(&TRANSLATE) TYPE(*LGL)
DCL VAR(&TRIM) TYPE(*LGL)
DCL VAR(&WILDCARD) TYPE(*CHAR) LEN(1)
DCL VAR(&RETURN) TYPE(*DEC) LEN(3)
DCL VAR(&LEN) TYPE(*DEC) LEN(3)
ANFANG: CALL PGM(QCLSCAN) PARM(&STRING &STRLEN &STRPOS +
&PATTERN &PATLEN &TRANSLATE &TRIM +
&WILDCARD &RETURN)
IF COND(&RETURN *GT 0) THEN(DO)
CHGVAR VAR(&LEN) VALUE(&RETURN - &STRPOS)
IF COND(&LEN *EQ 0) THEN(GOTO ENDE)
CHGVAR VAR(&RESULT) VALUE(&RESULT *TCAT %SST(&STRING &STRPOS &LEN))
CHGVAR VAR(&STRPOS) VALUE(&STRPOS + &LEN +1)
GOTO ANFANG
ENDDO
ENDE: ENDPGM
-
Probier mal so:
PHP-Code:
PGM
DCL VAR(&POS) TYPE(*DEC) LEN(5) VALUE(1)
DCL VAR(&POS2) TYPE(*DEC) LEN(5) VALUE(1)
DCL VAR(&LEN) TYPE(*DEC) LEN(5) VALUE(20)
DCL VAR(&VAR) TYPE(*CHAR) LEN(20)
DCL VAR(&VAR2) TYPE(*CHAR) LEN(20)
CHGVAR VAR(&VAR) VALUE('XXX 45 77 99 GG TT')
LOOP: IF COND(%SST(&VAR &POS 1) *NE ' ') THEN(DO)
CHGVAR VAR(%SST(&VAR2 &POS2 1)) VALUE(+
%SST(&VAR &POS 1))
CHGVAR VAR(&POS2) VALUE(&POS2 + 1)
ENDDO
CHGVAR VAR(&POS) VALUE(&POS + 1)
IF COND(&POS *LE &LEN) THEN(GOTO CMDLBL(LOOP))
CHGVAR VAR(&VAR) VALUE(&VAR2)
ENDPGM: ENDPGM
-
Warum eignetlich so kompliziert?
In einer kleinen Schleife einfach per TCAT die Zeichen anhängen:
chgvar(&Neu) value(&neu *tcat %sst(&Alt &Pos 1))
Similar Threads
-
By ExAzubi in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 03-01-07, 14:31
-
By TARASIK in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-08-06, 10:09
-
By bo1 in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 23-06-06, 15:00
-
By CaddyMajor in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 12-05-05, 08:54
-
By Jenne in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 23-08-04, 10:45
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