Anmelden

View Full Version : CMD PARM mit Eingabe eines einzelnen "?"



cbe
02-10-15, 15:15
Hallo allerseits,

ich habe ein *CMD geschrieben, das u.a. ein 6-stelliges Zeichenfeld erwartet.
Hier soll der Anwender ein ? als Wert eingeben können.


PARM KWD(ACT) TYPE(*CHAR) LEN(6) RSTD(*NO) +
DFT('*ALL') SPCVAL((IDX '000001') (*ALL +
'000000')) CHOICE('IDX, *ALL, ?, Action +
key') PROMPT('Action')

Dummerweise interpretiert die AS400 das als Prompt, als ob F4 gedrückt worden wäre.
Ein einzelnes ? als Wert kann man nicht eingeben.

Ich habe es auch so versucht:


PARM KWD(ACT) TYPE(*CHAR) LEN(6) RSTD(*NO) +
DFT('*ALL') SPCVAL((IDX '000001') (*ALL +
'000000') ('?' '?00000')) CHOICE('IDX, +
*ALL, ?, Action key') PROMPT('Action')

? wird einfach nicht akzeptiert.
(Natürlich kann man '?' eingeben, aber bis man das allen Anwendern erklärt hat, schreibe ich lieber ein eigenes Programm mit DSPF etc...)


Kann man das irgendwie hinbekommen?
Es wäre schade, wenn ich nur wegen diesem winzigen Detail das *CMD nicht verwenden könnte...

Gruß, Christian

Fuerchau
02-10-15, 15:34
Nimm doch statt "?" einen anderen Spezial-Wert:
(*ASK '?')

Die ?-F4-Übersetzung wirst du nicht wegbekommen.
Das gehört zur selektiven Bedienerführung automatisch dazu.

cbe
02-10-15, 15:46
es ist leider andersrum:
nicht die Anwendung will unbedingt ein ?,
sondern die Anwender sind es gewöhnt, als Prompt-Auswahl ein ? einzugeben.

Und ich will dann nicht den IBM-Prompt, sondern ein eigenes Auswahl-Programm ausführen

Fuerchau
02-10-15, 16:23
Dann gibt es noch den Prompt Override.
Mittels PMTOVRPGM kann man ein Programm schreiben, dass ähnliche Aufrufparameter wie das Verarbeitungsprogramm, jedoch zusätzlich ein großes Feld für die Rückgabe von Auswahlwerten.

Bei F4 bzw. "?" wird dieses aufgerufen, an Hand der vorherigen Parameter kann man entscheiden was man eingeben lassen will und diese Werte als Liste zurückgeben.

Vernünftig macht das nur Sinn, wenn man in den PARM's entsprechende PMTCLT(*PMTRQS) oder auch PMTCTLPGM's verwendet da das Override-Programm sonst die falschen Auswahlmöglichkeiten bietet.

cbe
05-10-15, 13:24
Danke Baldur. PMTOVRPGM scheint mir der einzige Ansatz zu sein, habe aber auf Anhieb außer Abbrüchen nichts hinbekommen und auch keine vernünftigen Beispiele/Doku gefunden.
Und da es wahrscheinlich sowieso das einzige Mal sein wird, dass ich so einen Fall habe, habe ich es halt doch in RPG gemacht.
:(
Es läuft jetzt, und gut ist.

Gruß, Christian