Rexx问题和REXX中的奇怪错误

时间:2016-02-05 18:34:02

标签: rexx

我创建了一个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未自制,未分配

任何人都可以建议我能做些什么来纠正错误,所以我不会这样运行? 有人可以建议是否有办法只返回你输入的字符串而不是整行?

谢谢

2 个答案:

答案 0 :(得分:1)

  1. 在第63行将ADRESS TSO更改为ADDRESS TSO
  2. 在分配之前检查FILE1是否存在,您可以使用SysDSN,Listds,listcat等来执行此操作。
  3. 基本上:

    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可以提供协助。