procedure - JCL - 向编目 PROC 提供流内数据

标签 procedure mainframe jcl

我正在尝试使用以下代码复制《Murach’s OS/390 and z/os JCL》(第 259 页)一书中给出的案例。

简单地说,我想将调用作业中的流内数据集提供给调用的过程。我不知道为什么它不起作用。 有人有什么建议吗?

(我知道如何在没有流内数据集的情况下使其工作,但我想复制书中的案例)

调用作业

XXXXXXX.PE000.UTILITY(SRCHCALL)

000001 //JOB1 JOB                                                              
000002 //     JCLLIB ORDER=(XXXXXXX.PE000.UTILITY)                             
000003 //STEP01 EXEC PROVA                                                     
000004 //SRCHCA1.OUT1 DD *                                                     
000005 CIAO                                                                    
000006 /*                                                                      
000007 //     

                                                             

调用程序

XXXXXXX.PE000.UTILITY(PROVA)

000001 //EXMPLE  PROC                                                          
000002 //SRCHCA1 EXEC PGM=IEFBR14                                              
000003 //OUTDD  DD DDNAME=OUT1  

                                           

JCL 上市

 1 //JOB1 JOB                                                    
  2 //     JCLLIB ORDER=(XXXXXXXX.PE000.UTILITY)                   
  3 //STEP01 EXEC PROVA                                           
  4 XXEXMPLE  PROC                                                
  5 XXSRCHCA1 EXEC PGM=IEFBR14                                    
  6 XXOUTDD  DD DDNAME=OUT1                                       
  7 //SRCHCA1.OUT1 DD * 

                   

在 JCL 列表中,我还希望看到字符串“CIAO”。

上面的代码显示了本书的确切语法,但是通过用 OUTDD 替换第 4 行中的 OUT1,我只能使用作业的覆盖语句而不是下一行(“CIAO”)覆盖过程的第 3 行)。

JCL 上市 (2)

5 XXSRCHCA1 EXEC PGM=IEFBR14  
6 //SRCHCA1.OUTDD DD *        
  X/OUTDD  DD DDNAME=OUT1    

最佳答案

流内数据在读取和解释 JCL 流时由 JES2/3 将其与 JCL 分开。每个流内数据集的实际数据单独存储在 JES 假脱机空间上。将其视为临时数据集。 JES 将 DD 语句“链接”到相应的数据。 JCL 列表中从未重现实际数据。

您可以将您的过程PROVA更改为如下所示:

//EXMPLE   PROC                                             
//SRCHCA1  EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSIN    DD DUMMY
//SYSUT1   DD DDNAME=OUT1
//SYSUT2   DD SYSOUT=*

然后重新运行您的第一个 JCL,您应该在作业输出中看到文本“CIAO”。 您也可以运行第二个示例,但在这里您必须编写:

//SRCHCA1.SYSUT1 DD *
CIAO
/*

同样,您应该在作业输出的单独输出文件中看到“CIAO”。

(请注意,我尚未实际运行我的示例。)

关于procedure - JCL - 向编目 PROC 提供流内数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66587643/

相关文章:

mysql - sql - 查询所需数据的更好方法

dataset - 3.4 在主机中编辑画面

java - 需要帮助将 EBCDIC 转换为十六进制

java - JPA:在一个实体上使用多个 @NamedStoredProcedureQuery

mysql - 为什么mysql过程中的if语句无法得到正确的逻辑查询?

jcl - 作业的 SYSOUT 和 SYSPRINT 之间有什么区别?

dataset - 数据集名称 JCL 中的符号参数

cobol - 将记录附加到现有文件

mysql - 在过程中使用变量值创建 MySQL 查询

cobol - 当前显示的是哪张 map ?