2012-07-03 4 views
5

iSeries에서 새로운 명령을 작성하려고합니다. 여기서 매개 변수 중 하나는 표준 LIBRARY/FILE MEMBER 구문을 사용하는 파일 이름이어야합니다 (예 :오브젝트 이름을 매개 변수로 허용하는 iSeries 명령을 작성하십시오.

).

  • 파일의 항을 사용하여 PARM 문을 만듭니다
    MYCMD FILE(MYLIB/MYFILE MYMEMBER) 
    

    또는

    MYCMD FILE(MYLIB/MYFILE) MEMBER(MYMEMBER) 
    

    나는 시도 는 * CHAR 유형

  • 와 미터 ELEM 문

를 사용하여 특별한 유형을 작성하지만 함께 사용되는 FROMFILE 매개 변수와 같은 자격을 갖춘 개체 이름은 값을 허용하는 매개 변수를 만드는 방법을 찾을 수 없습니다 CPYTOIMPF.

UPDATE

JamesA의 대답은 잘 작동하지만 어떻게 든 내 CL의 변수에 두 개의 추가 문자 수 :

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))  

답변

6

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 
+0

감사합니다! 매력처럼 작동합니다. 이상한 이유로 나는 pos에서 % SST가 필요합니다. 1 대신 3을 쓰면 처음 두 문자는 쓰레기입니다. 내 정의를 보여주기 위해 내 게시물을 업데이트했습니다. 어떤 아이디어? –

+2

FILE 키워드가 목록으로 정의 되었기 때문입니다. 그것은 2 개의 ELEM을 가진 FNAME을 가리 킵니다. James의 답을 따르고 ELEM없이 QUAL을 사용하십시오. –

+0

고마워, 내가 할께. –