I created a rexx program to read in a file from an argument and line by line add it to an array from there i have added some pulls do define a search criteria and then search the array, from their i wanted it to dynamically add a new member to a pds and fill it with the search outcome. it works but throws a bunch of errors.
this is the code
/* 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
This is my error
COMMAND ADRESS NOT FOUND
63 - ADRESS TSO
+++ RC(-3) +++ DATA SET QXGCVNH.OUTLIB NOT ALLOCATED+ IGD17101I DATA SET Q*****H.OUTLIB NOT DEFINED BECAUSE DUPLICATE NAME EXISTS IN CATALOG RETURN CODE IS 8 REASON CODE IS 38 IGG0CLEH FILE ABCD NOT FREED, IS NOT ALLOCATED
Can anyone advise what i could do to correct the errors so i doesnt run that way? and Can someone advise if there is a way to only return the string you enter and not the entire line?
Thanks