Sas JCL:如何读取文件名并查找特定字符串
我需要读取JCL中的文件名,并在其中找到特定的字符串。如果字符串存在,那么我需要设置标志变量。 例如: 如果“PARMFILE”包含“JIRA”,则设置JIRAFLAG=Y,否则JIRAFLAG=N。我需要将JIRAFLAG传递给另一个JCL/SAS作业以进一步处理 谢谢! 巴拉蒂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样本做扫描。我建议您有
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 ;