Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas JCL:如何读取文件名并查找特定字符串_Sas_Mainframe_Jcl - Fatal编程技术网

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

Sas JCL:如何读取文件名并查找特定字符串,sas,mainframe,jcl,Sas,Mainframe,Jcl,我需要读取JCL中的文件名,并在其中找到特定的字符串。如果字符串存在,那么我需要设置标志变量。 例如: 如果“PARMFILE”包含“JIRA”,则设置JIRAFLAG=Y,否则JIRAFLAG=N。我需要将JIRAFLAG传递给另一个JCL/SAS作业以进一步处理 谢谢! 巴拉蒂 SAS: srchf对于“YOURSTRING”,W() 然后在这里检查条件处理 JCL本身并不提供脚本语言,尽管考虑到JCL符号和条件,这种想法很直观 我不是一个SAS购买,但似乎你的SAS样本做扫描。我建议您有

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

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

谢谢! 巴拉蒂


SAS:

srchf对于“YOURSTRING”,W()

然后在这里检查条件处理


JCL本身并不提供脚本语言,尽管考虑到JCL符号和条件,这种想法很直观

我不是一个SAS购买,但似乎你的SAS样本做扫描。我建议您有一个步骤,解析
PARMFILE
语句并设置您选择的已知返回代码。例如,选择返回代码1

然后执行另一个步骤,当返回代码为1时,当JIRA在
参数文件中时,执行您想要处理的程序。由于您提到了一个单独的作业,您可以通过
INTRDR
提交另一个作业


有很多方法可以实现你想要的,你只需要有创造力。正如我所说的,条件和JCL符号吸引了许多人去思考脚本编写,但不幸的是,脚本编写并不是它的工作方式。

您需要REXX或其他东西来解析输入文件名,而JCL并不是这样工作的。您可以将文件名传递给程序(Cobol/Rexx等),它将根据JIRA是否存在发出返回码。然后,您可以测试返回代码(COND或IF)您想要实现什么,以及您有什么
计划
系统???一旦您提交JCL,它就无法更改。事实上,如果读卡器/解释器已经处理了一个数据块,那么它就会被“丢弃”,作业执行会处理读卡器/解释器创建的控制块。您不能将其传递回JCL以供后续步骤使用。但是,一个想法是将作业分为两个步骤,让这个SAS程序动态地构建将要提交的JCL,并将JIRAFLG指定为符号参数(对于
PROC
SET
或两者都可以)。谢谢大家,我在这里不具备使用REXX的可行性,因此我尝试使用内联SAS%LET TSTVAL=%SCAN(&CHKFILE,4,);(有关完整代码,请参阅问题部分),但我无法从SAS将JIRA标志传递回JCL。
000063 //SETVARS  SET RUNMODE=AY,                           
000064 //         MGRTMODE=M,                               
000065 //         PARMFILE=BASXXXX.T1.XXXX.JIRA.T011746
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 ;