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

    CL Programmierung Spalten erkennen...

    Hallo,

    kann ich mit CL Spalten in einem String erkennen ?

    Dh. Beispielstring:

    1234 ABCS ZHDIK KHJHJDLK

    Diesen String möchte ich jetzt in 4 Variablen

    &VAR1 1234
    &VAR2 ABCS
    &VAR3 ZHDIK
    &VAR4 KHJHJDLK

    schreiben. Ist das mit CL möglich ? Trenner soll immer Leerzeichen sein.

    Danke !!

    Gruß Linguin

  2. #2
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Welches Release hast Du denn?

    GG 5030

  3. #3
    Registriert seit
    Jul 2016
    Beiträge
    2
    unter V7R1 versuche es mal hiermit.
    DCL VAR(&c_str) TYPE(*char) LEN(2)
    DCL VAR(&c_strOrg) TYPE(*char) LEN(1024)
    DCL VAR(&n_posB) TYPE(*dec) LEN(4 0)
    DCL VAR(&n_posE) TYPE(*dec) LEN(4 0)
    DCL VAR(&n_len) TYPE(*dec) LEN(4 0)

    chgvar &c_strOrg value('1234 ABCS ZHDIK KHJHJDLK')
    chgvar &c_str value(' ')
    chgvar &n_PosB value(0)
    chgvar &n_PosE value(1)

    dowhile (1=1)
    chgvar &n_PosB value(%scan(&c_str &c_StrOrg &n_pose))
    if cond(&n_posb = 0) then(leave)
    if cond(&n_posb = &n_pose + 1) then(leave)

    chgvar var(&n_len) value(&n_posb - &n_pose)

    if cond(%sst(&var1 1 1)) = ' ') then(do)
    chgvar var(&var1) value(%sst(&sec &n_posE &len))
    chgvar var(&pose) value(&posb + 1)
    iterate
    enddo
    if cond(%sst(&var2 1 1)) = ' ') then(do)
    chgvar var(&var2) value(%sst(&sec &n_posE &len))
    chgvar var(&pose) value(&posb + 1)
    iterate
    enddo
    if cond(%sst(&var3 1 1)) = ' ') then(do)
    chgvar var(&var3) value(%sst(&sec &n_posE &len))
    chgvar var(&pose) value(&posb + 1)
    iterate
    enddo
    if cond(%sst(&var4 1 1)) = ' ') then(do)
    chgvar var(&var4) value(%sst(&sec &n_posE &len))
    chgvar var(&pose) value(&posb + 1)
    iterate
    enddo
    enddo

    VG

  4. #4
    Registriert seit
    Aug 2006
    Beiträge
    2.077
    Hallo,
    wenn du das nächste mal den Text eckige Klamme auf CODE eckige Klammer zu und später dann eckige Klamme auf /CODE eckige Klammer zu machst, bleibt auch die Formatierung erhalten.

    GG 5030

  5. #5
    Registriert seit
    Nov 2003
    Beiträge
    2.307
    Oder vielleicht so?

    PHP-Code:
                 PGM
                 DCL        
    VAR(&L)    TYPE(*DEC)  LEN(5)
                 
    DCL        VAR(&B)    TYPE(*DEC)  LEN(5VALUE(1)
                 
    DCL        VAR(&T)    TYPE(*DEC)  LEN(5VALUE(0)
                 
    DCL        VAR(&MAX)  TYPE(*DEC)  LEN(5VALUE(100)
                 
    DCL        VAR(&VAR1TYPE(*CHARLEN(100)
                 
    DCL        VAR(&VAR2TYPE(*CHARLEN(100)
                 
    DCL        VAR(&VAR3TYPE(*CHARLEN(100)
                 
    DCL        VAR(&VAR4TYPE(*CHARLEN(100)
                 
    DCL        VAR(&S)    TYPE(*CHARLEN(100)

                 
    CHGVAR     VAR(&SVALUE('123456 7890 1234 567')

     
    SUCHEN:     CHGVAR     VAR(&TVALUE(&1)
                 IF         
    COND(&*GT &MAXTHEN(GOTO CMDLBL(WEITER))
                 IF         
    COND(%SST(&&T 1) *NE ' 'THEN(GOTO CMDLBL(SUCHEN))

     
    WEITER:     CHGVAR     VAR(&LVALUE(&- &B)

                 IF         
    COND(&*GT 0THEN(DO)
                 
    CHGVAR     VAR(&VAR1VALUE(&VAR2)
                 
    CHGVAR     VAR(&VAR2VALUE(&VAR3)
                 
    CHGVAR     VAR(&VAR3VALUE(&VAR4)
                 
    CHGVAR     VAR(&VAR4VALUE(%SST(&&&L))
                 
    ENDDO
                 CHGVAR     
    VAR(&B)    VALUE(&1)
                 IF         
    COND(&*LE &MAXTHEN(GOTO CMDLBL(SUCHEN))
     
    ENDPGM:     ENDPGM 

  6. #6
    Registriert seit
    Jan 2007
    Beiträge
    189
    If the lengths are fixed, you could use this:
    Code:
                 Dcl        Var(&Spool_ID)   Type(*Char) Len(82)
                 Dcl        Var(&Job_Name)   Type(*Char) Len(10) Stg(*Defined) +
                              DefVar(&Spool_ID 1)
                 Dcl        Var(&User_Name)  Type(*Char) Len(10) Stg(*Defined) +
                              DefVar(&Spool_ID 11)
                 Dcl        Var(&Job_Number) Type(*Char) Len(6)  Stg(*Defined) +
                              DefVar(&Spool_ID 21)
                 Dcl        Var(&Splf_Name)  Type(*Char) Len(10) Stg(*Defined) +
                              DefVar(&Spool_ID 27)
                 Dcl        Var(&Splf_Nbr)   Type(*Int) Stg(*Defined) +
                              DefVar(&Spool_ID 37)
                 Dcl        Var(&Sys_Name)   Type(*Char) Len(8) Stg(*Defined) +
                              DefVar(&Spool_ID 41)
                 Dcl        Var(&Crt_Date)   Type(*Char) Len(7) Stg(*Defined) +
                              DefVar(&Spool_ID 49)
                 Dcl        Var(&Crt_Time)   Type(*Char) Len(6) Stg(*Defined) +
                              DefVar(&Spool_ID 56)
                 Dcl        Var(&OutQ_Name)  Type(*Char) Len(10) Stg(*Defined) +
                              DefVar(&Spool_ID 62)
                 Dcl        Var(&OutQ_Lib)   Type(*Char) Len(10) Stg(*Defined) +
                              DefVar(&Spool_ID 72)
    
                 Dcl        Var(&Spl_ID_Len) Type(*Int)
    
                 DCLF       FILE(SPLFLAYOUT) OPNID(INREC)
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

Similar Threads

  1. Erkennen ob STRDBMON läuft
    By Peet in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 28-08-16, 09:59
  2. SQL - Mehrere Sätze in einen Satz mit mehreren Spalten
    By wti in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 11-09-15, 12:47
  3. IBM TS3100 will Laufwerk nicht erkennen
    By Mida in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-08-15, 09:22
  4. SQL: Anzahl Spalten die einen Wert enthalten -pro Datensatz
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 13-08-15, 08:46
  5. Virtuelle Spalten im VIEW auf NULL
    By KB in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 18-05-01, 15:04

Berechtigungen

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