PDA

View Full Version : Promt von Command erzwingen



Matthias182
18-06-09, 09:22
Hallo,

bin wieder mal auf der Suche nach einer Lösung für ein scheinbar simples Problem.

Ich habe zu einem Program einen Command geschrieben. Da dieser Default Parameter enthält, kann man ihn ohne Probleme einfach auf der Command-line absetzen.

Dies möchte ich vermeinden und dazu den Command dazu zwingen, dass er sich vor der Ausführung selber prompted.

Gibt es dazu eine schnell und umkomplizierte Lösung?


Danke und Gruß
Matthias

Fuerchau
18-06-09, 10:33
Der 1. Parameter darf keinen Default haben und muss mit MIN(1) definiert werden.

Matthias182
18-06-09, 10:42
stimmt, so geht es.

Leider ist dann der default weg.

Geht das auch irgendwie mit?

besen
18-06-09, 11:58
PGM

? DSPPFM

ENDPGM

Fuerchau
18-06-09, 12:17
Das setzt voraus, dass das Kommando immer nur über ein Programm aufgerufen wird.
Läuft das programm mal im Batch, gibts ne Fehlermeldung.

Allerding:
Per "CRTCMD ... ALLOW(*IPGM *BPGM)" kann die Verwendung eingeschränkt werden.

Dann kann man halt das Programm von "besen" nehmen.
Allerdings sollte man den Jobstatus (Dialog/Batch) ggf. noch abfragen.

UFK
18-06-09, 22:56
Ich hatte mir mal folgende Lösung dafür geschaffen:

1. Mein Kommando ruft grundsätzlich eine REXX-Prozedur zur Plausi-Prüfung auf.

2. Diese Prozedur prompted den Befehl, soweit sie im Dialog aufgerufen wurde, und noch nicht aktiv ist. Sie kann, glaube ich, einfach prüfen, ob irgendwelche Parameter erfaßt wurden.

3. Wenn sie aber schon aktiv ist, oder Parameter da sind, führt sie anständige Plausi-Prüfungen durch, und ruft zur Verarbeitung das zuständige Programm auf, soweit alles ok ist. So kann man komplexere Bedingungen sicherstellen.

4. Außerdem hatte ich einen einfachen J/N-Parameter vorgesehen, um das Programm auf Wunsch in die JobQ zu schicken. Auch das geht in REXX ganz leicht.

kitvb1
19-06-09, 09:31
(Wenn benötigt ist,) Schreib eine kleine CL wrapper mit
RTVJOBA TYPE(&JTYPE)
IF COND(JTYPE = '0') THEN(mycmd)
ELSE
? mycmd
Dann kann man dies in noch eine cmd wrappen.