-
Hochkommas in leeren Feldern eines Commands
Hallo Welt
Aus einem Menü wird ein CL-Programm aufgerufen, das einen selbstgeschriebenen Befehl folgendermaßen aufruft:
CRTDOSDOC ??ARCID(&ARCID) ??TMPLID(&TPLID) ??TMPLNAM(&TPLNAM) ??DOSCLS(&DOSCLS) ??ABLAGE(&ABLAGE) ??DOCTYP(&DOCTYP) ??SECCOD(&SECCOD) ??NODID(&NODID)
Bei allen Variablen, die leer sind, d.h. nur Blanks enthalten, wird am Bildschirm ein in Hochkommas eingeschlossenes Leerzeichen angezeigt, z.B.:
Ablage . . . . . . . . . . . . . > ' '_____ Zeichenwert
Ich möchte aber, dass statt der Hochkommas gar nichts angezeigt wird, so wie es bei einem direkten Aufruf des Befehls (also ohne Programm) der Fall ist:
Ablage . . . . . . . . . . . . . ________ Zeichenwert
Warum ist das so und was kann man dagegen tun?
Egal ob ich die Variablen mit ' ' odr X'40' oder so vielen Blanks wie die Variable lang ist oder gar nicht initialisiere, die Hochkommas werden immer angezeigt.
-
Da lässt sich leider nichts gegen tun, da beim Prompt ja die Leerzeichen der Variable übergeben werden.
Alternative kann man im CMD per "PARM ... DFT(*NONE) ... SPCVAL((*NONE ' '))" den Leerwert ersetzen.
Dann wird halt *NONE angezeigt.
-
Hallo,
und wenn Du &ABLAGE mit *N belegst?
CRTDOSDOC ??ARCID(&ARCID) ??TMPLID(&TPLID) ??TMPLNAM(&TPLNAM) ??DOSCLS(&DOSCLS) ??ABLAGE(*N) ??DOCTYP(&DOCTYP) ??SECCOD(&SECCOD) ??NODID(&NODID)
*N heißt so viel wie 'Parameter nicht angegeben'
Gruß,
Christian
-
Das Problem ist, dass *N vom CMD-Interpreter ausgewertet wird.
Packst du *N in eine Variable, wird '*N' angezeigt.
Man kann QCMDCHK verwenden.
QCMDCHK zeigt wie QCMDEXC den Befehl (falls gewünscht) an, liefert aber anschließend den geänderten Befehl zurück, der dann mit QCMDEXC ausgeführt werden kann.
Im QCMDCHK lässt man dann die nicht benötigten Parameter erst mal weg.
Nachteil:
Du musst den Befehl im CLP per *CAT erst zusammenbauen und leere Felder dann eben weglassen.
-
Vielleicht denke ich ja zu einfach, aber sowas in der Art habe ich schon verwendet:
Code:
CL T5:
PGM PARM(&NAME)
DCL VAR(&NAME) TYPE(*CHAR) LEN(10)
?T5K ??NAME(&NAME)
ENDPGM
Code:
CMD T5K:
CMD PROMPT('Telefonsuche')
PARM KWD(FIRMA) TYPE(*CHAR) LEN(2) +
CHOICE('Firma') PROMPT('Firma')
PARM KWD(NAME) TYPE(*CHAR) LEN(30) PROMPT('Name +
oder TelNr')
call t5a ('x') --> x
call t5a (' ') --> ' '
call t5a ('x y') --> 'x y'
call t5a ('*N') --> ohne alles
-
Danke
Mit '*N' funktioniert das wunderbar, dass nichts angezeigt wird, genau so wie ich es haben will.
Vielen Dank an alle Beteiligten!
Similar Threads
-
By RobertMack in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 07-03-13, 08:02
-
By I0N in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 21-11-06, 12:44
-
By RaMai in forum NEWSboard Drucker
Antworten: 1
Letzter Beitrag: 08-08-06, 10:13
-
By rr2001 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 07-07-06, 09:56
-
By HACHIMAN in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-06, 09:48
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks