5 Stimmen

iSeries-Befehl erstellen, der einen Objektnamen als Parameter akzeptiert

Ich versuche, einen neuen Befehl auf einer iSeries zu erstellen, bei dem einer der Parameter ein Dateiname mit der Standard-Syntax LIBRARY/FILE MEMBER sein muss, etwa so

MYCMD FILE(MYLIB/MYFILE MYMEMBER)

oder sogar

MYCMD FILE(MYLIB/MYFILE) MEMBER(MYMEMBER)

Ich habe es versucht:

  • Erstellen Sie eine PARM-Anweisung, die den Parameter FILE mit dem Typ *CHAR verwendet
  • Erstellen eines speziellen Typs mit ELEM-Anweisungen

Aber ich kann nicht herausfinden, wie man einen Parameter erstellt, der einen Wert akzeptiert, der ein qualifizierter Objektname ist, wie der FROMFILE-Parameter, der mit CPYTOIMPF verwendet wird.

UPDATE

Die Antworten von JamesA funktionieren gut, aber irgendwie bekomme ich zwei zusätzliche Zeichen in meiner CL-Variable:

CMD

            PARM       KWD(FILE) TYPE(FNAME) PROMPT('CL +                  
                         source' 1)                                        
FNAME:      ELEM       TYPE(FILE) PROMPT('File')                        
            ELEM       TYPE(*NAME) LEN(10) PROMPT('Source +                
                         member')                                          
FILE:       QUAL       TYPE(*NAME) LEN(10)              
            QUAL       TYPE(*NAME) DFT(*CURLIB) SPCVAL(*CURLIB) PROMPT('Library') LEN(10) MIN(0)           

CL

PGM        PARM(&PFIC &OUTFILE &CODEPAGE)        
DCL        VAR(&PFIC) TYPE(*CHAR) LEN(32)        
DCL        VAR(&LIB) TYPE(*CHAR) LEN(10)         
DCL        VAR(&FILE) TYPE(*CHAR) LEN(10)        
DCL        VAR(&MEMBER) TYPE(*CHAR) LEN(10)      

CHGVAR     VAR(&FILE) VALUE(%SST(&PFIC 3 10))  
CHGVAR     VAR(&LIB) VALUE(%SST(&PFIC 13 10))              
CHGVAR     VAR(&MEMBER) VALUE(%SST(&PFIC 23 10))

6voto

James Allman Punkte 39506

Sie müssen eine Qualifier Definition .

CMD

    CMD
    PARM KWD(FILE) TYPE(Q1) PROMPT('File')
    PARM KWD(MBR) TYPE(*NAME) LEN(10) DFT(*FIRST) SPCVAL(*FIRST) PROMPT('Member')

Q1: QUAL TYPE(*NAME) LEN(10) 
    QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) SPCVAL(*LIBL) PROMPT('Library')

CL

PGM PARM(&FILELIB &MBR)

DCL VAR(&FILELIB) TYPE(*CHAR) LEN(20)
DCL VAR(&MBR) TYPE(*CHAR) LEN(10)
DCL VAR(&FILE) TYPE(*CHAR) LEN(10)
DCL VAR(&LIB) TYPE(*CHAR) LEN(10)

CHGVAR VAR(&FILE) VALUE(%SST(&FILELIB 1 10))
CHGVAR VAR(&LIB) VALUE(%SST(&FILELIB 11 10))

. . .

ENDPGM

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X