2012-07-03 9 views
5

iSeries上で新しいコマンドを作成しようとしています。パラメーターの1つは、標準のLIBRARY/FILE MEMBER構文を使用するファイル名でなければなりません。オブジェクト名をパラメーターとして受け入れるiSeriesコマンドを作成します。

MYCMD FILE(MYLIB/MYFILE MYMEMBER) 

あるいは

MYCMD FILE(MYLIB/MYFILE) MEMBER(MYMEMBER) 

私がしようとした:FILEパラを使用してPARMステートメントを作成

  • *のCHAR型の
  • とメーターはELEMステートメント

を使用して、特殊なタイプを作成します。しかし、私は一緒に使用FROMFILEパラメータと同様に、修飾オブジェクト名がある値を受け入れるパラメータを作成する方法を見つけることができませんCPYTOIMPF。

UPDATE

JamesAの答え罰金に動作しますが、どういうわけか、私は私のCLの変数に2つの余分な文字を取得:

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文字はゴミです。私の定義を示すために投稿を更新しました。何か案は ? –

+2

これは、FILEキーワードがリストとして定義されているためです。 2つのELEMを持つFNAMEを指しています。 Jamesの答えに従って、ELEMなしでQUALを使用してください。 –

+0

ありがとう、私はそれを行うでしょう –

関連する問題