首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >符号JCL混淆

符号JCL混淆
EN

Stack Overflow用户
提问于 2009-04-11 15:28:19
回答 2查看 6.1K关注 0票数 4

我对如何在JCL中为我在COBOL类中执行的赋值创建符号变量感到有点困惑。

例如,我应该“为PARM选项指定一个符号参数,并将TEST和APOST指定为默认值”。

如何将"PARM“选项指定为符号参数?

编辑:请原谅我的疏忽;我似乎忘了提到我正在运行的是什么操作系统。我正在z/OS中编写这个JCL文件。

提前感谢!

编辑:

@avisser:

那么,您的意思是我可以直接将其命名为"&PARM='TEST,APOST'“,并且,如果我想在使用另一条JCL语句运行此proc时更改该参数,那么列出的参数可以从调用JCL中更改吗?

编辑:

@avisser:

是的,对不起,我真的需要更具体的工作……在我的COBOL JCL中,我调用了COBOL编译器(IGYCRCTL)、链接编辑器(HEWL)和程序获取(EXEC PGM=)。

编辑:

也许看看我的输出会有所帮助。到目前为止,我真的很感谢所有试图帮助我们的人。

输出:

- JES2作业统计

代码语言:javascript
复制
       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!!JES假脱机文件结束!!1 //KC03CEFA作业,'MATT R',MSGCLASS=H,TYPRUN=SCAN JOB07731 //*

代码语言:javascript
复制
    2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
代码语言:javascript
复制
      //     &PARM='TEST,APOST'
代码语言:javascript
复制
    3 //STEPLIB DD DSN=IGY340.SIGYCOMP,DISP=SHR
代码语言:javascript
复制
      /\*
代码语言:javascript
复制
    4 //SYSLIN DD &DSN=&&OBJSET,UNIT=DISK,SPACE=(TRK,(3,3)),
代码语言:javascript
复制
      //         &DISP=(NEW,PASS,DELETE)
代码语言:javascript
复制
    5 //SYSPRINT DD SYSOUT=\*
代码语言:javascript
复制
    6 //SYSUT1   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
    7 //SYSUT2   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
    8 //SYSUT3   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
    9 //SYSUT4   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
   10 //SYSUT5   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
   11 //SYSUT6   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
   12 //SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))
代码语言:javascript
复制
      //\*
代码语言:javascript
复制
      //\*
代码语言:javascript
复制
   13 //STEP02   EXEC PGM=HEWL,&COND=,&REAGION=2048K,
代码语言:javascript
复制
      //         &PARM=
代码语言:javascript
复制
   14 //SYSLIB   DD DSN=CEE.SCEELKED,DISP=SHR
代码语言:javascript
复制
   15 //SYSLIN   DD &DSN=&&OBJSET,&DISP=(OLD,DELETE)
代码语言:javascript
复制
   16 //SYSLMOD  DD DSN=&&TEMPLIB(PGM6),
代码语言:javascript
复制
      //          SPACE=(1024,(50,20,1)),UNIT=DISK,
代码语言:javascript
复制
      //          DISP=(NEW,CATLG,DELETE)
代码语言:javascript
复制
   17 //SYSPRINT DD SYSOUT=\*
代码语言:javascript
复制
   18 //PRINTER  DD SYSOUT=\*
代码语言:javascript
复制
   19 //SYSUT1   DD UNIT=DISK,SPACE=(TRK,(10,10))
代码语言:javascript
复制
      //\*
代码语言:javascript
复制
      //\*
代码语言:javascript
复制
   20 //STEP01   EXEC PGM=PGM6,&PARM=TERMTHDACT(DUMP)
代码语言:javascript
复制
   21 //STEPLIB  DD DSN=&&TEMPLIB,DISP=SHR
代码语言:javascript
复制
   22 //CEEDUMP
代码语言:javascript
复制
   23 //SYSUDUMP
代码语言:javascript
复制
   24 //PRINTER  DD SYSOUT=\*
代码语言:javascript
复制
   25 //PRODUCTS DD DSN=KC02322.CSCI465.SP09(DATA1),DISP=SHR
代码语言:javascript
复制
   26 //SYSIN DD \*

!!JES假脱机文件的结尾!!STMT编号消息2 IEFC630I UNIDENTIFIED®ION 2 IEFC630I UNIDENTIFIED &PARM 4 IEFC630I UNIDENTIFIED &DISP 4 IEFC630I UNIDENTIFIED &DISP13 IEFC630I UNIDENTIFIED &COND 13 IEFC630I UNIDENTIFIED KEYWORD &PARM 15 IEFC630I UNIDENTIFIED &PARM 15 IEFC630I UNIDENTIFIED KEYWORD &DISP20 IEFC630I UNIDENTIFIED KEYWORD &PARM 22 IEFC605I UNIDENTIFIED 23 IEFC605I UNIDENTIFIED FIELD!JES假脱机文件的结尾!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-11 16:35:15

符号参数是名称前面有一个“与”符号。在JCL语句中使用时,它们会在运行时转换为提供的值。创建它们的一种方法(在z/OS上)是使用

// SET name = value

声明。如果你使用PARM,你应该设计你的程序,使它可以与PARM一起工作。也许作业是关于如何做到这一点的(提示:链接部分)。或者JCL是你的COBOL类的一部分吗?

TEST和APOST在我看来就像编译器指令。我不知道你是否可以在你的程序中指定它们,在我的工作场所,我们只在调用编译器时提供它们。

编辑:

这对我来说有点不寻常,因为我们倾向于在单独的JCL流中编译和运行我们的程序。但不管怎样。

接受你的第二个陈述:

代码语言:javascript
复制
2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

REGION和PARM是所谓的位置参数,它们是关键字,实际上并不意味着要以符号名称表示,尽管您可以自由地这样做(这将解释“未识别的关键字”消息)。

常见的用法(如果适用)是为此类参数的操作数提供符号名称。显然,你必须首先为它们定义一个值,例如:

代码语言:javascript
复制
  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS
票数 6
EN

Stack Overflow用户

发布于 2009-04-13 14:01:41

好吧,我做了一些挖掘,在avisser给我的指导下,我能够弄清楚我必须做什么。因此,对于任何可能有这个问题(或类似问题)的人,为了将来提供参考,我想出了以下结论:

步骤1:使用将要使用的变量创建一个"PROC“。

例如。我想在我的COBOL编译器中为"PARM“使用变量,它的默认值是"TEST”和"APOST",所以我写了类似这样的代码:

代码语言:javascript
复制
//PROC1  PROC  CPARM='TEST,APOST',

步骤2:在实际的JCL步骤中使用这些新定义的符号参数。"&“字符表示它后面的任何内容都是符号参数。

例如。我在COBOL编译步骤中使用了前面提到的"CPARM“:

代码语言:javascript
复制
//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

第三步:在实际的步骤之后用"PEND“语句结束你的"PROC”。

例如。在我列出了所有变量并列出了编译的所有步骤(编译器名称、可以找到编译器的位置,以及在PEND语句之前可以看到的SYSUT1-SYSUT7语句)之后,放置您的PEND关键字:

代码语言:javascript
复制
//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

步骤4:在源文件中添加任何额外的JCL步骤和/或代码,您就可以成功了!

备注:

-You在一个JCL文件中可以有多个PROC语句。我有三个:一个用于COBOL编译,一个用于链接编辑器,还有一个用于程序获取。我在PROC语句所在的同一文件中也有COBOL代码。

-This发生在运行z/OS的IBM大型机上。

测试,可以看到我的“can”变量被设置为默认的“-Above,APOST”。默认情况下,只需将字段留空即可使变量为null (例如CPARM=,)。

-You可能已经注意到,在CPARM定义之后,有一个逗号;这是因为后面有更多的变量。请记住,您为任何给定的PROC创建的最后一个符号参数后面应该没有任何内容(即.没有逗号)。当然,您可以在后面放置一个注释行(//*)、另一个PROC或实际代码,但最后一个符号参数在同一行上应该没有任何内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/740302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档