我创建了一个 rexx 程序来从参数中读取文件并逐行将其添加到数组中成员到 pds 并用搜索结果填充它。它可以工作,但会引发一堆错误。
这是代码
/* REXX READ FILE */
/* */
/* */
/* */
/* */
ARG INFILE
IF ARG() = 0 THEN
DO
SAY 'INPUT REQUIRED'
EXIT
END
/* */
/* */
SAY 'WHAT IS THE STRING YOU ARE LOOKING FOR'
PULL SEARCHLINE
IF SEARCHLINE = "" THEN
DO
SAY 'YOU DID NOT ENTER A STRING'
SAY 'PLEASE ENTER ONE NOW'
PULL SEARCHLINE
END
/* */
/* */
/* */
/* VALIDATING FILE EXISTANCE*/
INDDFILE = INFILE
"LISTC NVSAM ENT('"INDDFILE"') "
IF RC = 0 THEN
DO
SAY "FOUND" INDDFILE
END
ELSE DO
SAY INDDFILE 'NOT FOUND'
EXIT
END
/**************************************/
"ALLOC F(INFILE) DSN('"INDDFILE"')SHR REU"
"EXECIO * DISKR INFILE ( FINIS STEM MYFILE."
"FREE F(INFILE)"
STRLENG = LENGTH(SEARCHLINE)
INDEX = 0
I = 1
DO WHILE I <= MYFILE.0
RESULT = POS(SEARCHLINE,MYFILE.I)
IF RESULT /= 0 THEN
DO
MATCH.INDEX =LEFT(MYFILE.I,12)
SAY MATCH.INDEX
SAY INDEX
INDEX = INDEX +1
END
I = I + 1
END
SAY "WHAT IS THE OUT PUT FILE? "
PULL FILE
FILE1 = FILE
SAY "WHAT WILL THE MEMBER BE CALLED?"
PULL MEMBER
/*******************************************/
/*******************************************/
ADRESS TSO
"ALLOC DA('"FILE1"') F(ABCD) NEW SPACE(10,20)DIR(100)TRACKS"
"FREE F(ABCD)"
/*******************************************/
"ALLOC FI(ABCD) DA('"FILE1"("MEMBER")')SHR"
"EXECIO" INDEX "DISKW ABCD (STEM MATCH. FINIS"
"FREE F(ABCD)"
IF RC <> 0 THEN DO
SAY "ERROR IN ALLOCATING THE PDS MEMBER" RC
END
EXIT
这是我的错误
未找到命令地址
63 -地址 TSO
+++ RC(-3) +++ 数据集 QXGCVNH.OUTLIB 未分配+ IGD17101I 数据集 Q*****H.OUTLIB 未定义,因为目录返回代码中存在重复名称为 8原因代码是 38 IGG0CLEH 文件 ABCD 未释放,未分配
谁能建议我可以做些什么来纠正错误,所以我不会那样跑?有人可以建议是否有办法只返回您输入的字符串而不是整行?
谢谢