PDA

View Full Version : Einfache CL Schleife



Techniker
07-02-07, 13:29
:rolleyes: 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:confused:

holgerscherer
07-02-07, 13:41
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

Techniker
07-02-07, 13:54
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 :)

malzusrex
07-02-07, 14:43
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

Fuerchau
07-02-07, 14:46
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.

Techniker
07-02-07, 14:57
Ha,ha,ha,ha...

ich habe die Variable al *char gehabt.

Das geht nicht.

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

:rolleyes: