题
我是如何在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,®ION=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或实际的代码之后,但最后象征性的参数应该什么都没有跟随它在同一行。