JCL:如何读取文件名并找到特定的字符串

时间:2018-09-14 09:03:00

标签: sas mainframe jcl

我需要在JCL中读取文件名并在其中找到特定的字符串。如果存在字符串,那么我需要设置标志变量。 示例:

000063 //SETVARS  SET RUNMODE=AY,                           
000064 //         MGRTMODE=M,                               
000065 //         PARMFILE=BASXXXX.T1.XXXX.JIRA.T011746

如果“ PARMFILE”包含“ JIRA”,则设置JIRAFLAG =是,否则设置JIRAFLAG =N。我需要将JIRAFLAG传递给另一个JCL / SAS作业以进行进一步处理。

谢谢! 巴拉提


SAS:

000083   /**/                                              
000084   %LET CHKFILE  = %SCAN(&SYSPARM,1,+);              
000085   %put &CHKFILE ;                                   
000086   %GLOBAL JIRAFLG ;                                 
000087   %MACRO CHK ;                                      
000088   %LET TSTVAL = %SCAN(&CHKFILE,4,.) ;               
000089   %PUT &TSTVAL;                                     
000090   %IF &TESTVAL EQ 'JIRA' %THEN %LET JIRAFLG = 'Y' ; 
000091   %ELSE %LET JIRAFLG = 'N' ;                        
000092   %PUT &JIRAFLG ;                                   
000093   %MEND CHK;                                        
000094   %CHK ;                                            

2 个答案:

答案 0 :(得分:0)

JCL本身不提供脚本语言,尽管由于JCL符号和条件而以这种方式直观地想到它。

我不是SAS采购人员,但似乎您的SAS样品进行了扫描。我建议您使用STEP来解析PARMFILE语句并设置一个已知的返回码。例如,选择返回码1。

下一步,当JIRA位于PARMFILE中时,当返回码为1时,执行要处理的程序。由于您提到了一项单独的工作,因此您可以通过INTRDR提交另一个工作。

有多种方法可以完成您想要的工作,而您只需要发挥创造力即可。正如我说的那样,条件和JCL符号吸引了许多人去思考脚本,但不幸的是,脚本不是如何工作的。

答案 1 :(得分:-1)