PDA

View Full Version : CMD Parameter im CL Programm



mk
24-09-04, 19:25
Hallo zusammen, :cool:

ich habe eine kleine Sache die ich nicht verstehe. Vielleicht hat jemand einen Tipp.

Ich habe ein COMMAND mit folgender Anweisung
PARM KWD(SPUSER) TYPE(LISTOUT) CHOICE(*NONE) +
PMTCTL(OUTFMT) PROMPT('Dokumentangaben +
Benutzername')
LISTOUT: ELEM TYPE(*CHAR) LEN(4) RSTD(*YES) DFT(*YES) +
SPCVAL((*NO) (*YES)) PROMPT('Benutzername +
im Dokument')


Wenn ich den Befehl Aufrufe kann ich *YES oder *NO eingeben.
Das ist so gewollt.

In dem CL Programm das den Befehl verarbeitet erscheint kurioserweise folgender Wert im Debug:

&SPUSER = '*Y'

dabei sind anscheinend die ersten zwei Bytes Hex und die restlichen zwei Bytes der Anfang von *YES

Das Feld ist in dem CL Programm mit Char 4 definiert.

Hat jemand eine Idee ?

Gruss an *all
Michael

Fuerchau
24-09-04, 19:32
Da musst du mal das CL-Programmierhandbuch zu Rate ziehen.
Jeder Parametertyp hat bei der Übergabe bestimmte Strukturen.
Bei ELEM steht vor den Werten als 2-Byte binär die Anzahl Elemente, daher deine Verschiebung.
ELEM kann durchaus mehrfach verwendet werden, so dass ein PARM aus mehreren Feldern bestehen kann.
Komplizierter wirds, wenn ein Wert mehr als 1 Mal "MAX(nnn)" mit QUAL und ELEM gemischt wird. Dann muss man sich teilweise durch die Parameterlisten durchhangeln (rel. Position, Länge, Anzahl, usw.).

In deinem Fall, da nur 1 ELEM vorhanden ist, gib den TYPE(*CHAR) und den Rest dazu direkt im PARM an.

mk
25-09-04, 15:48
Hallo Baldur,

ich habe jetzt die Parameter ohne ELEM aufgebaut.
Ich wollte eigentlich nur erreichen das die Parameter ein
bischen eingerückt sind.
Danke und Gruß
Michael