我是如何在JCL创建一个符号变量赋值,我在我的COBOL类做了一些困惑。

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

我如何指定“PARM”选项是一个象征性的参数?

编辑:原谅监督;看来,我忘了提什么操作系统,我在跑。我在z / OS上写这个JCL文件。

提前感谢!

编辑:

@avisser:

那么,你的意思是,我可以把它叫做“&PARM =‘TEST,APOST’”,如果我想,当我运行这个进程内与其他JCL语句来改变参数,列出的PARMS可从主叫JCL改变?

编辑:

@avisser:

是啊,对不起,我真的需要更加具体的工作......在我的COBOL JCL,我打电话COBOL编译器(IGYCRCTL),链接编辑器(HEWL)和程序提取(EXEC PGM =)。

编辑:

也许这将有助于看到我的输出是什么。我真的很感谢所有那些谁试图帮助至今。

输出:

------ JES2作业统计------

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! JES SPOOL文件结束!        1个// KC03CEFA JOB, 'MATT R',MSGCLASS = H,TYPRUN = SCAN JOB07731          // *结果        2 // STEP01 EXEC PGM = IGYCRCTL,&REGION = 248K,结果          //&PARM = 'TEST,APOST',点击        3 // STEPLIB DD DSN = IGY340.SIGYCOMP,DISP = SHR,点击          / *结果        4 // SYSLIN DD&DSN = && OBJSET,UNIT = DISK,SPACE =(TRK,(3,3)),结果,          //&DISP =(NEW,PASS,DELETE),点击        5 // SYSPRINT DD SYSOUT = *,点击        6 // SYSUT1 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击        7 // SYSUT2 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击        8 // SYSUT3 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击        9 // SYSUT4 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击       10 // SYSUT5 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击       11 // SYSUT6 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击       12 // SYSUT7 DD UNIT = DISK,SPACE =(CYL,(1,1)),点击          // *结果          // *结果       13 //步骤02 EXEC PGM = HEWL,&COND =,&REAGION = 2048K,结果          //&PARM =点击       14 // SYSLIB DD DSN = CEE.SCEELKED,DISP = SHR,点击       15 // SYSLIN DD&DSN = && OBJSET,&DISP =(OLD,DELETE),点击       16 // SYSLMOD DD DSN = && TEMPLIB(PGM6),结果          // SPACE =(1024,(50,20,1)),UNIT = DISK,结果          // DISP =(NEW,CATLG,DELETE),点击       17 // SYSPRINT DD SYSOUT = *,点击       18 // PRINTER DD SYSOUT = *,点击       19 // SYSUT1 DD UNIT = DISK,SPACE =(TRK,(10,10)),点击          // *结果          // *结果       20 // STEP01 EXEC PGM = PGM6,&PARM = TERMTHDACT(转储),点击       21 // STEPLIB DD DSN = && TEMPLIB,DISP = SHR,点击       22 // CEEDUMP结果       23 // SYSUDUMP结果       24 // PRINTER DD SYSOUT = *,点击       25 //产品DD DSN = KC02322.CSCI465.SP09(DATA1),DISP = SHR,点击       26 // SYSIN DD *点击 ! JES SPOOL文件结束!  STMT NO。信息         2 IEFC630I不知名KEYWORD&REGION         2 IEFC630I不知名KEYWORD&PARM         4 IEFC630I不知名KEYWORD&DSN         4 IEFC630I不知名KEYWORD&DISP        13 IEFC630I不知名KEYWORD&COND        13 IEFC630I不知名KEYWORD&REAGION        13 IEFC630I不知名KEYWORD&PARM        15 IEFC630I不知名KEYWORD&DSN        15 IEFC630I不知名KEYWORD&DISP        20 IEFC630I不知名KEYWORD&PARM        22 IEFC605I不知名操作字段        23 IEFC605I不知名操作字段 ! JES SPOOL文件结束!!

有帮助吗?

解决方案

的符号参数是由一个与符号之前的名称。当在JCL语句中使用,在运行时它们会转换成所提供的值。创建它们(在z / OS)的一种方式是使用

// SET name = value

声明。 如果使用PARM,你应该设计自己的程序,以便它可以用一个工作。或许任务是如何做的的(提示:联合部)。或者是你的JCL COBOL类的一部分?

测试与APOST看我像编译器指令。我不知道,如果你能在你的程序中指定它们,我的工作场所,我们在调用编译器时,只供应他们。

编辑:

确定这是一个有点不寻常给我,因为我们倾向于编译和运行我们的程序在不同的JCL流。但无论如何。

以你的第二个语句:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

区域和PARM是所谓位置参数和他们的关键字,而不是真正的意思被呈现为象征性的名称,但你可以这样做(这将解释“不明身份的KEYWORD”消息)。结果 共同使用 - 如果适用 - 是为操作数的提供符号名 这样的参数。很显然,你必须先为它们定义的值,e.g:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

其他提示

好吧,我做了一些挖掘,并与avisser给我的指导,我能找出我不得不这样做。因此,对于谁可能有这个问题(或一个类似的)任何人将来参考,这里是我想通了:

步骤1:创建一个 “PROC” 与你将使用的变量

离。我想用变量在我的COBOL编译器,有“TEST”和“APOST”的默认值“PARM”,所以我写的是这样的:

//PROC1  PROC  CPARM='TEST,APOST',

步骤2:使用那些新定义的符号参数在实际JCL步骤。的“&”字符显示,无论它后面是一个符号的参数。

离。我用上述“CPARM”为我COBOL编译步骤:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

步骤3:用您的实际步骤之后的“PEND”语句结束您“PROC”

离。我列出了我所有的变量之后,我列出了编译所有的步骤(编译器名,该编译器可以找到,并且,可以在PEND语句之前可以看出,SYSUT1-SYSUT7语句),将您的PEND关键字:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

第四步:添加任何附加JCL步骤和/或代码,源文件,你就关闭

注意:

- 可以具有在一个单一的JCL文件超过一个PROC语句。我有三个:一个是COBOL编译,一个用于连接编辑,一个用于取程序。我也有同样的文件,我的PROC语句在COBOL代码。

- 此承担了IBM主机处运行z / OS

-Above,可以看出,我的“CPARM”变量被设置为“TEST,APOST”的默认。有可能具有可变的是默认为null通过简单地离开该字段为空(例如:CPARM =)。

- 你可能已经注意到,在CPARM定义之后,有一个逗号;这是因为我有后,更多的变数。请记住,你的任何给定的PROC创建的最后一个象征性的参数应该什么都没有跟随它(即没有逗号)。你可以,当然,放置一个注释行(// *),另一个PROC或实际的代码之后,但最后象征性的参数应该什么都没有跟随它在同一行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top