[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Dec 2005
    Beiträge
    111

    Einfache CL Schleife

    Hallo,

    ich würde mir gerne mal eine einfache CL Schleife Programmieren.

    Nur weiß ich nicht wi ich meine Variable, bei jedem durchlauf der Schleife um eins erhöhen kann.

    Bis jetz habe ich mir das so vorgestellt.

    PGM
    DCL VAR(&ANFANG) TYPE(*CHAR) LEN(2)
    DCL VAR(&ENDE) TYPE(*CHAR) LEN(2)
    CHGVAR VAR(&ANFANG) VALUE(1)
    CHGVAR VAR(&ENDE) VALUE(3)
    SCHLEIFE: IF COND(&ENDE *EQ &ANFANG) THEN(GOTO CMDLBL(ENDE))
    SNDMSG MSG(&ANFANG) TOUSR(LI)
    SNDMSG MSG(&ENDE) TOUSR(LI)
    CHGVAR VAR(&ANFANG) VALUE('++')
    Das geht nicht. Ich weiß, aber wie lautet denn sonst die syntax?
    GOTO CMDLBL(SCHLEIFE)
    ENDE: ENDPGM



    Ihr habt doch bestimmt eine Idee?

    MFG
    Der Techniker

  2. #2
    Registriert seit
    Jul 2001
    Beiträge
    2.713
    Zitat Zitat von Techniker Beitrag anzeigen
    CHGVAR VAR(&ANFANG) VALUE('++')
    Das geht nicht. Ich weiß, aber wie lautet denn sonst die syntax?
    Nicht immer von der bekloppten Syntax von C oder Java in die Irre leiten lassen. Wie wärs mit chgvar var(&anfang) value(&anfang + 1) ?

    So mal als Forschungshinweis

    -h

  3. #3
    Registriert seit
    Dec 2005
    Beiträge
    111
    so etwas habe ich auch schon gedacht aber da kommt dann folgendes raus:
    Message . . . . : 700 - SNDMSG MSG('&A') TOUSR(
    Message . . . . : 800 - SNDMSG MSG('03') TOUSR
    Message . . . . : 700 - SNDMSG MSG('&A') TOUSR

    Und er loop dann natürlich.

    So sieht das PGM jetzt aus:
    PGM
    DCL VAR(&ANFANG) TYPE(*CHAR) LEN(2)
    DCL VAR(&ENDE) TYPE(*CHAR) LEN(2)
    CHGVAR VAR(&ANFANG) VALUE(1)
    CHGVAR VAR(&ENDE) VALUE(3)
    SCHLEIFE: IF COND(&ENDE *EQ &ANFANG) THEN(GOTO CMDLBL(ENDE))
    SNDMSG MSG(&ANFANG) TOUSR(LI)
    SNDMSG MSG(&ENDE) TOUSR(LI)
    CHGVAR VAR(&ANFANG) VALUE('&ANFANG + 1')
    GOTO CMDLBL(SCHLEIFE)
    ENDE: ENDPGM

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    Code:
    PGM                                                          
    DCL VAR(&ANFANG) TYPE(*DEC) LEN(2)                           
    DCL VAR(&ENDE) TYPE(*DEC) LEN(2)                             
    CHGVAR VAR(&ANFANG) VALUE(1)                                 
    CHGVAR VAR(&ENDE) VALUE(3)                                   
    SCHLEIFE: IF COND(&ENDE *EQ &ANFANG) THEN(GOTO CMDLBL(ENDE)) 
    CHGVAR VAR(&ANFANG) VALUE(&ANFANG + 1)                       
    GOTO CMDLBL(SCHLEIFE)                                        
    ENDE: ENDPGM

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nur noch so zur Ergänzung.

    Mittels CHGVAR lassen sich auch komlexere Rechenoperationen durchführen:

    CHGVAR &MYVAR VALUE(&MYVAR * 5 + &MXVAR * 3 - 12)

    CHGVAR &MYVAR VALUE(&VAR1 *CAT &VAR2 *TCAT %SST(&VAR3 1 3))

    usw.usf.
    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

  6. #6
    Registriert seit
    Dec 2005
    Beiträge
    111
    Ha,ha,ha,ha...

    ich habe die Variable al *char gehabt.

    Das geht nicht.

    Danke,danke *dec muss es sein.
    Super!!!


Similar Threads

  1. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. Programmbibliothek in einem Cobol oder CL Programm ermitteln
    By schatte in forum NEWSboard Programmierung
    Antworten: 19
    Letzter Beitrag: 10-01-07, 11:32
  3. Übergabeparameter im CL Script
    By bo1 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 23-06-06, 15:00
  4. Bibliothekssicherungsliste via CL ändern
    By becama in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 23-06-06, 14:46
  5. SQL-Befehle im CL
    By Hubert Brethauer in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-04-06, 08:04

Berechtigungen

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