[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2004
    Beiträge
    178

    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

  2. #2
    Registriert seit
    Jul 2011
    Beiträge
    31
    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

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Probier mal so:

    PHP-Code:
                 PGM                                                       
                 DCL        
    VAR(&POS)  TYPE(*DEC)  LEN(5VALUE(1)         
                 
    DCL        VAR(&POS2TYPE(*DEC)  LEN(5VALUE(1)         
                 
    DCL        VAR(&LEN)  TYPE(*DEC)  LEN(5VALUE(20)        
                 
    DCL        VAR(&VAR)  TYPE(*CHARLEN(20)                 
                 
    DCL        VAR(&VAR2TYPE(*CHARLEN(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(&POS2VALUE(&POS2 1)                    
                 
    ENDDO                                                     
                 CHGVAR     
    VAR(&POSVALUE(&POS 1)                      
                 IF         
    COND(&POS *LE &LENTHEN(GOTO CMDLBL(LOOP))    
                                                                           
                 
    CHGVAR     VAR(&VAR) VALUE(&VAR2)                         
     
    ENDPGM:     ENDPGM 

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Warum eignetlich so kompliziert?

    In einer kleinen Schleife einfach per TCAT die Zeichen anhängen:

    chgvar(&Neu) value(&neu *tcat %sst(&Alt &Pos 1))
    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. num. CL Variable in Alpha umsetzen?
    By ExAzubi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 03-01-07, 14:31
  2. cl declare variable
    By TARASIK in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 10:09
  3. Übergabeparameter im CL Script
    By bo1 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 23-06-06, 15:00
  4. Leerzeichen ersetzen?
    By CaddyMajor in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 12-05-05, 08:54
  5. CL Variable an SQL übergeben
    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
  •