Anmelden

View Full Version : CMD und RTNVAL



Robi
22-07-11, 08:02
Hi,
ich brauch eine eingabemöglichkeit für ein Passwort.

Also habe ich ein CMD gemacht mit DSPINPUT *NO
und RTNVAL *yes

Das CL dahinter besteht nur aus PGM, DCL und return

Da, wo ich die Eingabe benötige, ruf ich vom CL
pwd &pwd in der Hoffnung anschl. das Passwort in &pwd zu haben.

soweit die Theorie.

egal wie ich das CMD prompte, das Eingabefeld ist immer dicht (geschlossen)

Wo ist mein Fehler / wie lös ich das
Danke
Robi

KingofKning
22-07-11, 08:05
Hi,
ich brauch eine eingabemöglichkeit für ein Passwort.

Also habe ich ein CMD gemacht mit DSPINPUT *NO
und RTNVAL *yes

Das CL dahinter besteht nur aus PGM, DCL und return

Da, wo ich die Eingabe benötige, ruf ich vom CL
pwd &pwd in der Hoffnung anschl. das Passwort in &pwd zu haben.

soweit die Theorie.

egal wie ich das CMD prompte, das Eingabefeld ist immer dicht (geschlossen)

Wo ist mein Fehler / wie lös ich das
Danke
Robi
Schau dir doch mal den Anmeldebildschirm an. Ist die selbe Logik und da wird meines Wissens nach das über das Displayfeld gemacht.

Ist aber schon 10 Jahre her das ich mir das angesehen habe, müßte aber eigentlich so stimmen.

GG

Robi
22-07-11, 08:09
Ja, schon
nur das da ein CL und ein dspf hinter steht. ich möchte eigendlich ein CMD machen

kitvb1
22-07-11, 08:24
This following works so that you cannot see the password once you hit ENTER:
PARM KWD(PASSWORD) TYPE(*CHAR) LEN(10) MIN(1) +
DSPINPUT(*PROMPT) PROMPT('Remote user +
password')

KingofKning
22-07-11, 08:34
Ja, schon
nur das da ein CL und ein dspf hinter steht. ich möchte eigendlich ein CMD machen
Und was hätte Dich jetzt daran gehindert aus einem CL ein CMD zu machen?

Chapter 9. Defining Commands (http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/c415721513.htm#HDRDFLST)

Alternativ halt die Lösung vom Vorgänger.

Da waren sie wieder die vielen Wege nach Rom.

GG

Robi
22-07-11, 08:55
irgend etwas mach ich falsch oder ich habe mit schlecht ausgedrückt.

NICHT das CL, das hinter dem CMD steht soll mit dem Passwort arbeiten, sondern das CL, das den CMD aufruft
Aber ich bekomme den Wert nicht zurück.

mit rtnval(*yes) kan ich da nix eingeben



@kitvb1
Ich verwende dspinp(*NO) damit man die eingabe nicht sieht

Robi
22-07-11, 10:24
Hab es gefunden.

so :

/* CMD PWD Umwandlung mit ALLOW(*IPGM *BPGM) notwendig. ALL geht nicht! */

CMD PROMPT('BITTE PASSWORT EINGEBEN')
PARM KWD(PWD) TYPE(*CHAR) LEN(10) +
MIN(1) CASE(*MIXED) DSPINPUT(*NO) +
CHOICE('Groß klein Beachten') +
PROMPT('Passwort')
PARM KWD(PWDR) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
MIN(0) CASE(*MIXED) DSPINPUT(*NO)

und so: PWDCL


PGM (&PWD &PWD2)
DCL &PWD *CHAR 10
DCL &PWD2 *CHAR 10
CHGVAR &PWD2 &PWD
ENDPGM


damit kan ich im CL mit

pwd ??pwd(&pwd) pwdr(&pwdr)

das Passwort verdeckt eingeben lassen und bekomme es zurück

Gruß
Robi

Fuerchau
22-07-11, 11:36
RTNVAL(*yes) erwartet eine Variable, in die das Ergebnis deines CLP's gestellt werden soll, eine Eingabe ist da nicht zulässig, desshalb sollten solche Kommandos mit CRTCMD ... ALLOW(*IPGM *BPGM) erstellt werden, wobei *BPGM, da du ja prompten willst ggf. nicht erlaubt werden sollte.

Robi
22-07-11, 11:54
Ja danke, ist nun klar.
ich wollte das ganze nur mit einer Variablen lösen und dachte,
erst geb ich sie am BS ein, dann macht das CL etwas damit(oder auch nicht), dann wird sie zurück gegeben.
Läuft ja nun


*BPGM ist hier tatsächlich Blödsin

Gruß
Robi