[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2002
    Beiträge
    13

    Outputparameter bei CRTCMD


    Huhu alle

    Wie kann ich bei einem selbst erstellten Befehl einen Outputparameter definieren?

    Im Element PARM in der Command Source kann ich das nötige Attribut nicht findet, womit selbes gesteuert werden kann.

    PARM KWD(FILE) TYPE(*CHAR) LEN(10) PROMT('Datei') <Attribut>(auf protect setzen)

    Danke für die Infos

    FrEEk
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo FrEEk!

    Was meinst du mit "Outputparameter"?

    Meinst du einen Rückkehrwert wie im Befehl RTVOBJD? Oder willst du die Ausgabe wahlweise in eine Datei ausgeben wie z.B. beim Befehl DSPOBJD?

    Viele Grüße
    Jürgen

  3. #3
    Registriert seit
    Sep 2003
    Beiträge
    221
    ich gehen davon aus, Du aus dem CMD Parameter an das aufrufende Programm mitgeben willst. Das geht wie folgt:

    PARM KWD(_Muster_)
    TYPE(*CHAR)
    LEN(n)
    RSTD(*YES)
    DFT(*NO)
    VALUES(Wert_1 Wert_2)
    MIN(0)
    PROMPT(___Text_für_F4____)

    Ansonsten mußt Du Deine Anfrage detaillierter beschreiben.

    Gruß

    Peter
    Peter Kinne
    EDV-Beratung
    www.kinne.de

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ein Rückgabewert wird mittels RTNVAR(*YES) definiert.
    Dabei ist allerdings folgendes zu beachten:

    CRTCMD ...... ALLOW(*IPGM *BPGM *BREXX *IREXX *BMOD *IMOD)

    da das Kommando interaktiv nicht ausführbar ist und die Auswahl *ALL nicht zur Erstellung des Kommandos führt.

    Wenn MIN(1) nicht angegeben ist, wird allerdings an das Programm ein sog. NULL-Pointer an Stelle der Variablen übergeben.
    Dies ist nur in HLL (RPGLE/COBOL) abfragbar:

    /free
    if %addr(Parmx) = *NULL;
    .. do nothing
    else;
    endif;
    /end-free
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2002
    Beiträge
    13

    Danke schön für Eure Antworten!

    Ich schreibe nochmal, was ich gemeint habe anhand von einem Beispiel:
    Wenn man den Befehl SNDNETSPLF mit F4 anschaut hat der 5 Werte drin, die nicht verändert werden können, weil sie mitgegeben wurden und sozusagen als Zusammenfassung nochmal angezeigt werden, bevor die Verarbeitung weitergeführt wird.. Also, File, JobNo,... und die anderen.

    Jetzt geht es darum, genau solche Werte in einem von meinen Commands unterzubringen.
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928

    SNDNETSPLF

    Hi Freek,

    wenn es um Dein Problem von neulich geht, den SNDNETSPLF durch einen anderen Command zu ersetzen, dann schau Dir die Message-Id CPX3438 nocheinmal genauer an.

    Du wirst an diversen Stellen Platzhalter entdecken. Hinter diesen Platzhaltern verstecken sich Datei, Job, Job-Nr. u.a.
    Wenn Du in der Message-Id, die Du in Deiner neuen Message-File angelegt hast, die gleichen Variablen in der gleichen Reihenfolge anlegst, kannst du auf die Informationen zugreifen.

    Deine neuer Message-Text würde dann vielleicht so aussehen:
    'MYCMD SPL(&5) USER(&3) JOBNO(&4)'

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Hallo FrEEk!

    Sieh dir die Meldung CPX3438 aus QCPFMSG nochmal genau an, da steht ein ? vor dem Befehlsnamen und ?* sowie ?? vor einigen Parametern.

    Mach mal folgendes:

    Gib in der Befehlszeile mal ein: SNDNETSPLF, dann gleich F4 für die Bedienerführung und dann F13 für die Erweiterte Hilfe (F13=Verwendung der Anzeige). Blättere da mal ganz ans Ende. Da ist die "Selektive Bedienerführung" erklärt. Das was du suchst sind die Zeichen ?* und ??.

    Wenn du in einer eigenen MSGF die Meldungen CPX3438 und CPX3439 anlegst, musst du darauf achten, dass du die "Felddaten" genau so angibst wie sie in den Meldungen in der QCPFMSG angelegt sind und dann auch die entsprechenden Parameter &1 usw. - wie das Birgitta bereits geschrieben hat - als Parameter weitergibst.

    Viele Grüße
    Jürgen

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn ein Kommando aus einem anderen Programm (wie WRKSPLF) aufgerufen wird, wird ein sog. "Selective Prompting" durchgeführt.
    Dieses wird nicht bei der Kommandodefinition angegeben sondern beim Aufruf des Kommandos z.B. aus einem CLP oder mittels QCMDEXC.
    In diesem Fall kannst du Parameter vorbelegen und verhindern, dass der Benutzer diese Werte ändert.
    Genaueres erfährst du unter "Selective Prompting for CL Commands":
    http://publib.boulder.ibm.com/iserie...02.htm#ToC_190
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Nov 2002
    Beiträge
    13

    Hallo Leute

    Danke für eure Vorschläge, hat alles wunderbar geklappt.

    Noch eine Frage:
    Wenn das Abnehmerprogramm des Commands ein HLL RPG III ist und ein Binärwert übergeben wird, interpretiert er den Wert auch weiterhin als Binär oder wandelt er den um in einen String?
    Wer anderen eine Grube gräbt besitzt ein Grubengrabgerät.

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der Wert wird genau so an das HLL weitergegeben wie er per PARM definiert ist.
    Wenn beim Kommando "xxxcmd keyword(x'0023')" wandelt der CMD-Interpreter die Eingabe bereits um und in das CHAR-Feld des HLL wird der Hexwert x'0023' übergeben.
    Bei der Übergabe per CL-Variable wird genau der Inhalt ohne jeglich Umwandlung weitergegeben.
    Deshalb kann man z.B. die Übergabe von nicht druckbaren Zeichen bei der PARM-definiton ja auch ausschließen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Parameterlänge bei crtcmd
    By TARASIK in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 23-08-06, 14:11
  2. CRTCMD Problem
    By systemer in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-07-03, 14:34

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •