符号JCL混乱

Eny*_*ius 4 jcl

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

例如,我应该"为PARM选项指定一个符号参数,并指定TEST和APOST作为默认值."

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

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

提前致谢!

编辑:

@avisser:

所以,你所说的是我可以称之为"&PARM ='TEST,APOST'",如果我想用另一个JCL语句运行这个proc时改变那个参数,列出的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                                                                                                
Run Code Online (Sandbox Code Playgroud)

!结束JES SPOOL文件!! 1 // KC03CEFA JOB,'MATT R',MSGCLASS = H,TYPRUN = SCAN JOB07731 //*
2 // STEP01 EXEC PGM = IGYCRCTL,®ION = 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 // STEP02 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(DUMP)
21 // STEP LIB 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.MESSAGE 2 IEFC630I不知名KEYWORD®ION 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文件!!

Alb*_*ser 6

符号参数是以&符号开头的名称.在JCL语句中使用时,在运行时它们将转换为提供的值.创建它们的一种方法(在z/OS上)是使用a

// SET name = value

宣言.如果您使用PARM,您应该设计您的程序,以便它可以使用它.或许任务是如何做的是(提示:联合部).或者JCL是您COBOL课程的一部分吗?

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

编辑:

好吧这对我来说有点不寻常,因为我们倾向于在单独的JCL流中编译和运行我们的程序.但无论如何.

采取你的第二个声明:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'
Run Code Online (Sandbox Code Playgroud)

REGION和PARM是所谓的位置参数,它们是关键字,并不是真正意义上的符号名称,尽管您可以自由地这样做(这将解释"未知的关键字"消息).
常用 - 适用时 - 是为这些参数的操作数提供符号名称.显然你必须先为它们定义一个值,例如:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS
Run Code Online (Sandbox Code Playgroud)