我创建了一个rexx程序,从一个参数中读取一个文件,然后逐行将它添加到一个数组中,我已经添加了一些pulls来定义一个搜索条件,然后搜索数组,从他们想要它动态将新成员添加到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
这是我的错误
命令ADAD未找到
63 - ADRESS TSO
+++ RC(-3)+++数据集QXGCVNH.OUTLIB未分配+ IGD17101I数据集Q ***** H.OUTLIB未定义,因为 目录返回代码中的重复名称是8个原因代码是38 IGG0CLEH文件ABCD未自制,未分配
任何人都可以建议我能做些什么来纠正错误,所以我不会这样运行? 有人可以建议是否有办法只返回你输入的字符串而不是整行?
谢谢
答案 0 :(得分:1)
基本上:
ADRESS TSO
"ALLOC DA('"FILE1"') F(ABCD) NEW SPACE(10,20)DIR(100)TRACKS"
"FREE F(ABCD)"
基本上变成了
ADDRESS TSO
if (File1 exists) then do
"ALLOC DA('"FILE1"') F(ABCD) NEW SPACE(10,20)DIR(100)TRACKS"
"FREE F(ABCD)"
end
你需要工作如何做(File1 exists),只需谷歌检查各种选项
答案 1 :(得分:0)
关于只返回字符串。您可能希望查看一些Rexx字符串处理函数。也许Strip可以提供协助。