IBM大型机论坛索引
 
登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答 寄存器
 

在sysin dd语句中传递符号参数


IBM大型机论坛 -> JCL& VSAM
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月13日,星期三,上​​午10:50
引用回复

你好
我想检查数据是否已经存在。
借助listcat(IDCAMS),我们可以对其进行检查。
但是我想使用符号参数将DSN传递给实用程序。

例如 :
列表猫('myuser。checkdsn.idcams')-有可能

但是我的要求是
列表猫('&client..checkdsn.idcams')

如何通过这种方式检查dsn?

请让我知道是否有人知道答案

提前致谢..
回到顶部
查看用户资料 发送私信
斋赛

新的用户


已加入:2006年9月13日
帖子:2

发布发表:2006年9月13日,星期三,下午1:55
引用回复

码:
符号参数
DSNAME =“您的文件”

// STEP0100 EXEC PGM = IDCAMS     
// INDD     DD DSN=&DSNAME,                 
//            DISP=SHR                 
// SYSIN *
列表猫(INDD)
/ *
       
回到顶部
查看用户资料 发送私信
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月13日,星期三,下午4:30
引用回复

你好
感谢您的回复。
我尝试使用您的代码,并且还在dd语句中进行了硬编码。

// STEP010 EXEC PGM = IDCAMS
//SYSOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// FILEIN DD DSN = sam.T.CHKEMPTY,DISP = SHR
// SYSIN DD *
LISTCAT条目(FILEIN)
/ *
//
我也尝试了上面的代码,这也不起作用
gettint错误“未找到数据集”(jcl错误)。
如果我直接在listcat中给出dsn名称,则代码正在执行。

LISTCAT条目('sam.T.CHKEMPTY')
上面的代码正在执行..

请让我知道原因。
回到顶部
查看用户资料 发送私信
凯文

活跃用户


已加入:2005年8月25日
职位:234

发布发表:2006年9月13日,星期三,下午6:17
引用回复

mkssampathkumar,从我的原始帖子可以看出,您有两个问题要处理。

首先,您要检查数据集是否存在(即已编目)。如果未对数据集进行分类,则无法在JCL中使用DISP = SHR或DISP = OLD处置来引用它,而不会引起JCL错误(找不到数据集)。

其次,您要为数据集名称的一部分使用符号参数。

就个人而言,我总是希望有一个步骤使用DISP =(MOD,CATLG)对数据集进行分类,因此,如果已经对它进行分类,那就好了。如果不是,那么它将是。

如果只想检查它的存在,则需要将数据集名称作为PARM传递给程序,然后让程序调用LISTCAT函数并解释结果。伪代码为:
码:

// STEPX EXEC PGM = mypgm,PARM ='&CLIENT..CHECKDSN.IDCAMS'
// SYSPRINT DD SYSOUT = *
// *

然后mypgm将调用LISTCAT
GET 主题
LISTCAT ENT(theparm)
检查LISTCAT返回码
回到顶部
查看用户资料 发送私信
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月14日,星期四,上午10:24
引用回复

嗨凯文
感谢您的回复。

DISP =(MOD,CATLG),
u引用的上述代码创建了尚不存在的文件。

但是正在检查的文件是输入文件。因此没有创建该文件的权限。 。

第二个是

// STEP010 EXEC PGM = IDCAMS
//SYSOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// SYSIN DD *
LISTCAT条目('sam.T.CHKEMPTY')
//


上面的代码成功执行并返回maxcc 4。

但是我的问题是

// STEP010 EXEC PGM = IDCAMS
//SYSOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// FILEIN DD DSN = sam.T.CHKEMPTY,DISP = SHR
// SYSIN DD *
LISTCAT条目(FILEIN)
/ *
//


// STEP010 EXEC PGM = IDCAMS
//SYSOUT DD SYSOUT = *
// SYSPRINT DD SYSOUT = *
// FILEIN DD DSN =(&& dsname..T.CHKEMPTY),DISP = SHR
// SYSIN DD *
LISTCAT条目(FILEIN)
/ *
我尝试了两个代码。

Both the codes are giving JCL error.

我们的代码中还有更多疑问

1.是否在名为“ MYPGM”的过程中使用了LISTCAT?

2.没有IDCAMS实用程序,我们可以使用LISTCAT吗?


AM在后面的您的代码中不清楚
[b]”然后mypgm将调用LISTCAT“ [/b]

我想检查通过jcl在我的pgm中使用的输入文件是否存在,而不会出错。
这是我的要求。我该怎么办?
如果我的pgm找不到所需的输入文件,那么我必须在输出文件中写入错误消息
我想检查输入文件是否存在。
如果我的pgm找不到所需的输入文件,那么我必须在输出文件中写入错误消息。
我想我的问题很清楚??

谢谢
回到顶部
查看用户资料 发送私信
凯文

活跃用户


已加入:2005年8月25日
职位:234

发布发表:2006年9月15日星期五上午1:38
引用回复

我不确定为什么您不可能在工作流中坚持这样做。

这是一个选择:
码:

// STEP0001 EXEC PGM = CHECKDSN,PARM ='&CLIENT..CHECKDSN.IDCAMS'         
// STEPLIB  DD   DISP=SHR,DSN=&SYSUID..COBOL.LOAD                     
// SYSIN    DD   UNIT=VIO,DISP=(,DELETE),RECFM=FB,LRECL=80             
// SYSPRINT DD   SYSOUT=*                                             
// *                                                                   
// STEP0002 EXEC PGM = IKJEFT01,PARM ='%CHECKDSN&CLIENT..CHECKDSN.IDCAMS'
// SYSPROC  DD   DISP=SHR,DSN=&SYSUID..CLIST                           
// SYSTSIN  DD   DUMMY                                                 
// SYSTSPRT DD   SYSOUT=*                                             
// *                                                                   
// STEP0003 EXEC PGM = IKJEFT01,PARM ='%CHECKDSN&CLIENT..CHECKDSN.IDCAMS'
// SYSPROC  DD   DISP=SHR,DSN=&SYSUID..REXX                           
// SYSTSIN  DD   DUMMY                                                 
// SYSTSPRT DD   SYSOUT=*                                             
// *                                                                   


哪里:

码:

科宝:

       识别部门。                               
       程序ID。 CHECKDSN。                                 
                                                             
       环境司。                                 
       输入输出部分。                                 
                                                             
         FILE-CONTROL.                                       
           选择SYSIN-FILE ASSIGN到UT-S-SYSIN             
             组织是顺序的                       
             访问是顺序的。                           
                                                             
       DATA DIVISION.                                         
       FILE SECTION.                                         
                                                             
       FD  SYSIN-FILE                                         
           标签记录标准                             
           BLOCK 0 RECORDS                                   
           RECORDING MODE F                                   
           记录包含80个字符。                     
       01 SYSIN-RECORD                 PIC X(80).             
                                                                 
       工作存储部分。                                   
                                                                 
       LINKAGE SECTION.                                           
       01  PARM.                                                 
           03  PARM-LENGTH             PIC S9(04) COMP SYNC.     
           03  THE-PARM.                                         
               05  数据集名称    图十(44).                 
                                                                 
       使用PARM进行程序划分。                             
           INSPECT THE-PARM                                       
             按空格替换所有低值。                 
           DISPLAY THE-PARM.                                     
           OPEN OUTPUT SYSIN-FILE。                               
           移动空间到SYSIN记录。                           
           STRING '  LISTCAT ENT('                               
             DELIMITED BY SIZE                                   
               THE-DATASET-NAME                                   
             DELIMITED BY SPACES                                 
               ') ALL'                                           
             DELIMITED BY SIZE                                   
               INTO SYSIN-RECORD.                                 
           WRITE SYSIN-RECORD.                 
           CLOSE SYSIN-FILE.                   
           CALL 'IDCAMS'.                       
           STOP RUN.                           


码:

清单:

PROC 1 THEDSN                         
LISTCAT ENT('&THEDSN') ALL             
退出码(&LASTCC)                     


码:

雷克斯:

/ * 雷克斯 * /                             
"LISTCAT ENT('"ARG(1)"') ALL"         
出口RC                               
回到顶部
查看用户资料 发送私信
凯文

活跃用户


已加入:2005年8月25日
职位:234

发布发表:2006年9月15日,星期五,凌晨1:48
引用回复

斋赛,您为LISTCAT给出的语法是错误的。

最后我知道,命令LISTCAT FILE('dname')
引用:

标识包含目录的卷
要列出的条目。 “ dname”是标识卷的DD语句的名称
包含要列出的目录条目。
回到顶部
查看用户资料 发送私信
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月15日,星期五,下午12:43
引用回复

嗨,凯文。

感谢您的努力。

Actaullay我的编程语言不是cobol。

我正在SAS ..工作,也可以选择以编程语言进行操作,我也解决了。
但是我的要求是,我们可以不用编程语言就可以检查jcl本身中的文件是否存在。

列表项('dsname.t.xxx')
(它在没有任何parm参数和编程语言的情况下工作得很好)

像那样,有任何选项可以找到带有符号参数的文件名。
这是我的要求。

我可能有人知道答案。
找不到jcl中的文件存在,请让我知道。

谢谢..
回到顶部
查看用户资料 发送私信
UmeySan

活跃成员


已加入:2006年8月22日
职位:771
地点:德国

发布发表:2006年9月15日,星期五,下午1:26
引用回复

嗨,mkssampathkumar!

You have to use instream-procedure JCLwith the above IDCAMS, so that the ampersand-variable is interpreted.

您也可以使用IEFBR14将DSN分配为NEW,CATLG。
通过返回NOT-CATLG2-Error,该文件存在。


此致UmeySan
回到顶部
查看用户资料 发送私信
Shreevamsi

活跃用户


已加入:2006年2月23日
帖子:305
地点:印度海德拉巴

发布发表:2006年9月15日,星期五,下午1:44
引用回复

嗨,UmeySan,

您,请分享Insteam Procedure的想法来解释'&'??

据我所知,我们不能在SYSIN中使用符号参数。

SYSIN将按原样输入到程序中。
拥有符号参数将毫无意义。


〜瓦姆西
回到顶部
查看用户资料 发送私信
UmeySan

活跃成员


已加入:2006年8月22日
职位:771
地点:德国

发布发表:2006年9月15日,星期五,下午3:45
引用回复

嗨shreevamsi,

正如您可能会在下面看到的那样,我在正常情况下使用带有&-variables的流内处理
JCL声明和Sysin-DD中。

此致UmeySan


000300 // *
000310 // * BESTANDSDRUCK ISTITUT =&UINR。 KONTO =&UKNR。
000320 // *
000700 // STEP010 EXEC P441G&UGRP。,
000800 // GEN ='*',
001000 // INR =&UINS。
001100 //BEST.KARTE DD *
001200 $$
001300 S000 6
001400 S673&UKNR。
001500 NO ISATZ
001800 //BEST.LSTDCB DD SYSOUT = *
001900 //BEST.SSD DD DISP = SHR,DSN =&UHLQ..I&UINS..GL00.SSD
002100 //BEST.OFFSET3 DD 假
回到顶部
查看用户资料 发送私信
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月15日,星期五,下午4:45
引用回复

嗨UmeySan

感谢您的来信。
我对您的编码有些疑问。

// STEP010 EXEC P441G&UGRP。,

在上面的步骤中,您将调用一些用户定义的过程并将一些值作为符号参数传递。

//BEST.KARTE DD *
这是sysin语句。
在这里,您将一些值传递给用户定义的过程。
之后,您将覆盖该过程中的某些值。


我无法理解您的编码。.您能再解释一下吗?


是否可以在过程中发送流内数据???
回到顶部
查看用户资料 发送私信
Shreevamsi

活跃用户


已加入:2006年2月23日
帖子:305
地点:印度海德拉巴

发布发表:2006年9月15日,星期五,下午5:35
引用回复

嗨,萨姆帕特,

根据UmeySan Code,

那是一个Proc,由Job调用,并且覆盖了Symbolic Parameters。

所有的&符号将替换为Job中指定的值。

谢谢UmeySan。我今天学到了新东西。.我将检查这一点,并让您知道是否有任何发现。

〜瓦姆西
回到顶部
查看用户资料 发送私信
UmeySan

活跃成员


已加入:2006年8月22日
职位:771
地点:德国

发布发表:2006年9月15日,星期五,下午5:52
引用回复

嗨,mkssampathkumar!

假设我们必须处理公司几组的数据。所有这些团体都有几个研究所。这些机构有几个部门。

为了使用大量机构来处理这些组的所有数据的所有流程,我们将拥有很多部门,最少的JCL
我们在OPC-Control下将复杂的JCL-Procs与执行其他Procs一起使用。

因此,假设我们有:

Group01 Institut01 Dep01
Group01 Institut01 Dep02

Group09 Institut15 Dep22

我们有针对他们的特定Procs和程序。

STEP010 EXEC P441G&UGRP ...&UGRP转换为组号
通过运行时。

// INR =&UINS。 ...是上述程序/机构编号的参数

//BEST.KARTE DD * ...is allways the SYSIN

S673和UKNR。 ...是程序调用的程序的sysin语句
执行的过程P441G&UGRP正在使用像INR =&UINS这样的Parm


所以对于Group09 Institut15 Dep22
结果为EXEC P441G009,INR = 015

程序P441G022执行一个程序。这是Sysin:
S000 6
S673 022

希望我能满足您的问题,问候,UmeySan
回到顶部
查看用户资料 发送私信
mkssampathkumar
警告:1

新的用户


已加入:2006年8月31日
职位:57
地点:钦奈

发布发表:2006年9月18日星期一9:24上午
引用回复

嗨,梅
你提到像
“在这里,您将一些值传递给用户定义的过程。
我们可以在过程中传递流内数据吗?
我在上一篇文章中问了这个问题。


您能发送已经检查过的代码吗?这将帮助我了解更多。


谢谢..
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> JCL& VSAM

 


类似主题
话题 论坛 回覆
没有新帖 在UPDATE语句中跳过锁定的数据 DB2 9
该主题已锁定:您无法编辑帖子或回复。 将字段名称传递给COBOL程序 科宝程式设计 10
该主题已锁定:您无法编辑帖子或回复。 Splice JCLinto one record for DD sta... 同步排序 2
没有新帖 从SYSIN读取COBOL 科宝程式设计 1
没有新帖 包含排序中的必需日期格式... DFSORT / ICETOOL 6
搜索我们的论坛:

回到顶部