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

使用REXX访问SDSF;我究竟做错了什么?


IBM大型机论坛 -> 清单& REXX
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:2020年12月8日星期二9:42下午
引用回复

你好

我正在尝试读取当前正在执行的作业的sysout,但是遇到了一个问题。 Db2绑定正在批量运行。完成此操作后,我计划执行一个rexx步骤,调用sdsf从绑定作业中提取sysout信息(sysprint)。


DA
打印数据集
打印1 99999
打印关闭

这将捕获当前正在执行的sysout。

如果我将sdsf命令指向ST,则一切正常,但指向DA失败。让我向您展示您想要我尝试做的事情:

码:
/ * REXX *********************************************** ************** /
/ *提取当前正在执行的绑定作业的信息             */
/ *将绑定结果存储到Db2表中           Tom G.               */
/ ***************************************************** ******************* /

rc = isfcalls('ON')                                     / *访问sdsf * /

地址SDSF"ISFEXEC ST"                     /* open ST panel */
lrc = rc
如果lrc¬= 0,则调用error_msg

isfprefix ='D2ADME1'                                /* set job name */

ix = 1到JNAME.0
 说'这是JNAME.ix ='JNAME.ix
  if JNAME.ix = "D2ADME1A" then                 / *如果找到工作* /
    do
      Say '====> Job is found'
      Address SDSF "ISFACT ST TOKEN('"TOKEN.ix"') PARM(NP SA)"
      lrc=rc
     如果lrc¬= 0,则调用error_msg
     将jx = 1转换为isfddname.0
              Say "Now reading" isfdsname.jx
              "EXECIO * DISKR" isfddname.jx "(STEM line. FINIS"
              Say "  Lines read:" line.0
              do kx = 1 to line.0
                Say "  line."kx "is:" line.kx
              end
      end
      if lrc<>0 then
        call error_msg
    end
结束
rc = isfcalls("OFF")
出口
     / *列出错误消息的子例程* /
错误_msg:

说“错误消息:'
说  isfmsg
说  isfmsg2.0
说  issmsg2.1
说  isfmsg2.2
出口


上面的作品....但是它指向ST:
地址SDSF"ISFEXEC ST"

但是,如果我将其指向当前正在执行的作业,它将以rc = 08失败
地址SDSF"ISFEXEC DA"

知道为什么吗?我的工作名称是D2ADME1A,它将是当时唯一执行的工作。也许不应该这样写。

谢谢汤姆

请使用代码标签显示代码和数据。这次为您编码。
回到顶部
查看用户资料 发送私信
乔格·芬代森

活跃用户


已加入:2015年8月15日
帖子:389
地点:德国班贝格

发布发表:星期二2020年12月8日10:13 pm
引用回复

RGEN 为许多SDSF任务生成REXX。你可以先看看那里。
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表于:2020年12月9日星期三凌晨2:17
引用回复

我不记得详细信息,但是我记得必须使用ST命令,然后扫描活动作业,然后执行尝试的操作。顺便说一下,您在SDSF ST命令之前有ISFPREFIX。 ISFMSG列表中的任何内容?
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:2020年12月9日星期三2:54上午
引用回复

在我的程序中,请注意queue.ji ='EXECUTION'语句。
码:
 n=isfcalls('ON')                                                   
                                                                     
 isfprefix=mvsvar('symdef','jobname') / *设置isfprefix =作业名* /
 Address  SDSF                                                       
 "ISFEXEC ST"                                                       
 if rc<>0然后调用SdsfErr'ST'                                     
 对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'  /* locate me */     
 end                                                                 
                                                                     
 "ISFACT ST TOKEN('"TOKEN.ji"') PARM(NP SA)"                         
 if rc<>0,然后呼叫SdsfErr'ST NP SA'                               
 address tso                                                         
                                                                     
 "EXECIO * DISKR" isfddname.4 "(STEM line. FINIS)"                   
 say time()line.0'从列表中读取行'                           
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表于:2020年12月9日,星期三9:39 pm
引用回复

感谢您的RGEN命令Joerg。实际上,这就是我创作原始作品的方式。

威利,我认为这可能有效。我的最终目标是捕获当前所在的系统中断。因此,我将进行以下更改:

“ ISFEXEC ST”



“ ISFEXEC DA”

运行此命令时,我得到rc = 8:

码:

/ *   rexx */

踪迹

n = isfcalls('ON')

isfprefix = mvsvar('symdef','D2ADME1S')/ *设置isfprefix =作业名* /
地址  SDSF
"ISFEXEC DA"

如果rc<>0然后调用SdsfErr'ST'
对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'  /* locate me */
结束

"ISFACT ST TOKEN('"TOKEN.ji"') PARM(NP SA)"
如果rc<>0,然后呼叫SdsfErr'ST NP SA'
地址左

"EXECIO * DISKR" isfddname.4 "(STEM line. FINIS)"
说时间()line.0'从列表中读取行'

SdsfErr:
说"at the end"

.
.
.
 5 *-* n=isfcalls('ON')
   >>>   "0"
 7 *-* isfprefix = mvsvar('symdef','D2ADME1S')/ *设置isfprefix =作业名* /
   >>>   ""
 8 *-* Address  SDSF
 9 *-* "ISFEXEC DA"
   >>>   "ISFEXEC DA"
11 *-*如果是rc<>0
   >>>   "0"
12 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'  /* locate me */
   >>>   "1"
   >>>   "2"
13 *-*结束
12 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'  /* locate me */
   >>>   "0"
13 *-*结束
12 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'  /* locate me */
   >>>   "0"
15 *-*"ISFACT ST TOKEN('"TOKEN.ji"') PARM(NP SA)"
   >>>   "ISFACT ST TOKEN('TOKEN.3') PARM(NP SA)"
   +++ RC(8) +++
16 *-*如果rc<>0
       >>>   "1"
       *-*  then
       *-* 致电SdsfErr'ST NP SA'
       >>>    "ST NP SA"
    22 *-*   SdsfErr:
    23 *-*   say "at the end"
       >>>     "at the end"
在末尾


知道为什么RC = 8吗?

谢谢汤姆[/ code]
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:2020年12月9日星期三10:13下午
引用回复

好的,灯泡一直亮着。我看到我仍然可以使用“ ST”,并且正如您所指出的,寻找“执行”。让我来解决这个问题。谢谢
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表于:2020年12月9日星期三10:30 pm
引用回复

谢谢威利,我知道发生了什么事。这是一个很大的帮助。

汤姆
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:2020年12月9日星期三下午11:04
引用回复

还有一个问题....在我的xx中,我有工作名称。该职位名称可能会更改。有没有办法找出此rexx exec正在执行的作业名称?

谢谢汤姆
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表于:2020年12月10日,星期四1:55上午
引用回复

实际上:isfprefix = mvsvar('symdef','jobname')
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表于:星期四2020年12月10日上午7:53
引用回复

啊......我用实际的工作代替了工作名。得到它了。谢谢!
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:星期六十二月12,2020 3:01上午
引用回复

威利,

第一个作业将绑定db2软件包。第二步将拉入rexx以读取sysout…,并将插入语句构建到Db2表中。从理论上讲,这应该起作用。但是,此调用:

"ISFACT ST令牌('"令牌记"') PARM(NP SA)"

…失败,好像找不到它。

码:

// STEP01   执行PGM = IKJEFT01,DYNAMNBR = 20
// STEPLIB  DD DSN = MCI.DB.D2T0.SDSNLOAD,DISP = SHR
//报告   DD  SYSOUT=*
// SYSPRINT DD  SYSOUT=*
// SYSUDUMP DD  SYSOUT=*
// SYSOUT   DD  SYSOUT=*
// SYSTSPRT DD SYSOUT = *,DCB = BLKSIZE = 2420
// SYSTSIN  DD  *
DSN系统(D2T0)
重新包装(D2ADME1.CLASS1.(VERSION1))         EXPLAIN(YES)+
     DBPROTOCOL(DRDA)       APRETAINDUP(YES)      APREUSE(NO)
/ *
// STEP02   EXEC PGM = IKJEFT1B,TIME = NOLIMIT,DYNAMNBR = 20,REGION = 64M,
//         PARM='%BINDSDSF'
// STEPLIB  DD DISP = SHR,DSN = MCI.DB.D2T0.SHRD.SDSNEXIT
//         DD DISP = SHR,DSN = MCI.DB.D2T0.SDSNEXIT
//         DD DISP = SHR,DSN = MCI.DB.D2T0.SDSNLOAD
// SYSEXEC  DD DISP = SHR,DSN = D2ADME1.BIND.ISPCLIB
// SYSTSIN  DD  DUMMY
// SYSTSPRT DD  SYSOUT=*
// SYSOUT   DD  SYSOUT=*
// SYSUDUMP DD  SYSOUT=*
// SYSPRINT DD  SYSOUT=*


这是sdsf:

码:

前缀= D2ADME1W  DEST=(ALL)  OWNER=*  SORT=JOBNAME/A  SYSNAME=*
NP   JOBNAME  JobID    Max-RC     Owner    Prty Queue      C  P
     D2ADME1W JOB74252 CC 0000    D2ADME1     1 PRINT      E 11
     D2ADME1W JOB74264 CC 0000    D2ADME1     1 PRINT      E 11
     D2ADME1W JOB74563 CC 0000    D2ADME1     1 PRINT      E 11


跟踪r显示了这一点:

码:

DSNT275I -D2T0 DSNTBRB2的重新绑定选项
           包装= MCD2T0.D2ADME1.CLASS1。(VERSION1)
           QUERYACCELERATION
           GETACCELARCHIVE
           ACCELERATOR
           CONCENTRATESTMT   NO
           加速等待数据
DSNT232I -D2T0成功重新绑定
           包装= MCD2T0.D2ADME1.CLASS1。(VERSION1)
DSN
结束
ACF0C038 ACF2登录属性已替换默认用户属性
    10 *-* n=isfcalls('ON')                                   / *连接到sdsf * /
       >>>   "0"
   12 *-* isfprefix = mvsvar('symdef','jobname')
       >>>   "D2ADME1W"
    14 *-* Address  SDSF
    15 *-* "ISFEXEC ST"
       >>>   "ISFEXEC ST"
    17 *-* "ISFACT ST TOKEN('"TOKEN.1"') PARM(NP SA)"
       >>>   "ISFACT ST TOKEN('zDsjAhAcEpKEccHBUMXwQPx1wdXsxdxAzenKczABA4EAJgQ1lFXxTg0QBw
MSYBA4EAJgQ1Mh0FJNI =') PARM(NP SA)"
   18 *-*说'这是isfprefix ='isfprefix
       >>>   "这是isfprefix = D2ADME1W"
这是isfprefix = D2ADME1W
   19 *-*说'这是jname.1 ='jname.1
       >>>   "这是jname.1 = D2ADME1W"
这是jname.1 = D2ADME1W
   20 *-*说'这是jobid.1 ='jobid.1
       >>>   "这是jobid.1 = JOB74252"
这是jobid.1 = JOB74252
   21 *-*说'这是jname.1 ='jname.2
       >>>   "这是jname.1 = D2ADME1W"
这是jname.1 = D2ADME1W
   22 *-*说'这是jobid.1 ='jobid.2
       >>>   "这是jobid.1 = JOB74264"
这是jobid.1 = JOB74264
   23 *-*说'这是jname.1 ='jname.3
       >>>   "这是jname.1 = JNAME.3"
这是jname.1 = JNAME.3
   24 *-*说'这是jobid.1 ='jobid.3
       >>>   "这是jobid.1 = JOBID.3"
这是jobid.1 = JOBID.3
   25 *-*说'这是jname.1 ='jname.4
       >>>   "这是jname.1 = JNAME.4"
这是jname.1 = JNAME.4
   26 *-*说'这是jobid.1 ='jobid.4
       >>>   "这是jobid.1 = JOBID.4"
这是jobid.1 = JOBID.4
   27 *-*说'这是jname.1 ='jname.5
       >>>   "这是jname.1 = JNAME.5"
这是jname.1 = JNAME.5
   28 *-*说'这是jobid.1 ='jobid.5
       >>>   "这是jobid.1 = JOBID.5"
这是jobid.1 = JOBID.5
    30 *-* if rc<>0
       >>>   "0"
   31 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'   / *位置绑定作业* /
       >>>   "1"
       >>>   "2"
    32 *-* end                         / *如果队列=执行,则正在运行* /
   31 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'   / *位置绑定作业* /
       >>>   "0"
    32 *-* end                         / *如果队列=执行,则正在运行* /
   31 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'   / *位置绑定作业* /
       >>>   "0"
    34 *-* "ISFACT ST TOKEN('"TOKEN.ji"') PARM(NP SA)"
       >>>   "ISFACT ST TOKEN('TOKEN.3') PARM(NP SA)"
       +++ RC(8) +++
    35 *-* if rc<>0
       >>>   "1"
       *-*  then
       *-* 致电SdsfErr'ST NP SA'
       >>>    "ST NP SA"
    46 *-*   SdsfErr:
    47 *-*   say ' '
       >>>     " "

    48 *-*   say 'Error messages:'
       >>>     "Error messages:"
错误讯息:
    49 *-*   say  isfmsg
       >>>     ""



由于某种原因,它似乎找不到系统输出。您为什么在rexx代码中看到任何找不到它的原因?

谢谢汤姆
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表于:2020年12月12日,星期六7:17 am
引用回复

我认为这意味着jobid.0的值为2。
码:
   31 *-*对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'   / *位置绑定作业* /
       >>>   "1"
       >>>   "2"


并且,如果比较跟踪的第17行和第34行,可以看到在第17行上,token.1值实际上是一个很长的字符串,但是在第34行上,该变量似乎是未初始化的变量。

在第31行,您似乎正在尝试跳过某些项目,直到找到正在执行的作业。但是总共只有两行,没有一行是EXECUTION。因此,变量JI的增量超过了JOBID.0的最大值。

如果JI仍在jobid.max的最大值以内,则只应执行第34行。
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表于:2020年12月12日,星期六7:38 am
引用回复

我认为您可以在不使用SDSF的情况下完成您想做的事情。

我建议在第二步中,添加一个DD语句,该语句引用第一步中的输出文件:
码:
// BINDIN  DD DSN = *。STEP1.SYSPRINT


在您的rexx程序中,使用EXECIO从BINDIN中读取。 (我自己没有尝试过此操作,因此您可能需要试验或添加其他DD参数)
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:星期六十二月12,2020 12:34下午
引用回复

查看您的踪迹,您有:
“ ISFEXEC ST”
立即跟随
"ISFACT ST令牌('"代币1"') PARM(NP SA)"

在执行ISFACT之前,我遍历了ST命令的主干:
"ISFEXEC ST"
对jobid.0执行ji = 1,直到queue.ji ='EXECUTION'/ *找到我* /
结束
"ISFACT ST令牌('"令牌记"') PARM(NP SA)"
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:2020年12月12日星期六1:32 pm
引用回复

只需浏览一下我的一些旧资料,就可以使用ISFFILTER变量来避免循环。请注意在ISFACT命令中使用“ token.1”。
码:
 isfprefix=mvsvar('symdef','jobname') / *设置isfprefix =作业名* /
 isffilter ='队列均衡器执行'                                     
 isffiltermode='AND'                                               
 Address  SDSF                                                     
 "ISFEXEC ST"                                                       
 if rc<>0 then ...                                   
 "ISFACT ST TOKEN('"TOKEN.1"') PARM(NP SA)"                         
 if rc<>0 then ...         
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:星期二2020年12月15日上午1:13
引用回复

佩德罗

我确实尝试过您的建议:

码:
 
//步骤1    执行PGM = IKJEFT01,DYNAMNBR = 20
// STEPLIB  DD DSN = MCI.DB.D2T0.SDSNLOAD,DISP = SHR
//报告   DD  SYSOUT=*
// SYSPRINT DD  SYSOUT=*
// SYSUDUMP DD  SYSOUT=*
// SYSOUT   DD  SYSOUT=*
// SYSTSPRT DD SYSOUT = *,DCB = BLKSIZE = 2420
// SYSTSIN  DD  *
DSN系统(D2T0)
重新包装(D2ADME1.CLASS1.(VERSION1))         EXPLAIN(YES)+
     DBPROTOCOL(DRDA)       APRETAINDUP(YES)      APREUSE(NO)
/ *
// STEP02   EXEC PGM = IKJEFT1B,TIME = NOLIMIT,DYNAMNBR = 20,REGION = 64M,
//         PARM='%BINDSDSF'
// STEPLIB  DD DISP = SHR,DSN = MCI.DB.D2T0.SHRD.SDSNEXIT
//         DD DISP = SHR,DSN = MCI.DB.D2T0.SDSNEXIT
//         DD DISP = SHR,DSN = MCI.DB.D2T0.SDSNLOAD
// SYSEXEC  DD DISP = SHR,DSN = D2ADME1.BIND.ISPCLIB
// SYSTSIN  DD  DUMMY
// BINDIN   DD DSN = *。STEP1.SYSPRINT
// SYSTSPRT DD  SYSOUT=*
// SYSOUT   DD  SYSOUT=*
// SYSUDUMP DD  SYSOUT=*
.
.
.
IEF344I D2ADME1W STEP02 BINDIN-由于数据可用性系统错误而分配失败
IGD17102I定义NONVSAM数据集时的目录错误
D2ADME1.D2ADME1W.JOB15672.D0000103。?
返回码为144原因码为14 IGG0CLEG
IGD306I IGG0CLEG处理期间出现意外错误
返回码144原因码14
检测到错误的模块是IGDVTSCU
短信模块跟踪返回-VTSCU VTSCT VTSCR SSIRT
创建了症状记录,问题ID为IGD00659


威利,

不知道为什么我不能使它正常工作...所以我尝试了您的更新建议以避免循环。这是我使用的:

码:

/ * REXX **********************************************
踪迹

n = isfcalls('ON')

isfprefix = mvsvar('symdef','jobname')
isffilter ='执行队列均衡器'
isffiltermode ='AND'
地址  SDSF
"ISFEXEC ST"
说'这是rc ST ='rc

地址  SDSF
"ISFACT ST TOKEN('"TOKEN.1"') PARM(NP SA)"
说'这是rc TOKEN ='rc

出口
.
.
.
.
     4 *-* n=isfcalls('ON')
       >>>   "0"
     6 *-* isfprefix = mvsvar('symdef','jobname')
       >>>   "D2ADME1W"
     7 *-* isffilter ='队列均衡器执行'
       >>>   "QUEUE EQ EXECUTION"
     8 *-* isffiltermode ='AND'
       >>>   "AND"
     9 *-* Address  SDSF
    10 *-* "ISFEXEC ST"
       >>>   "ISFEXEC ST"
   11 *-*说'这是rc ST ='rc
       >>>   "this is rc ST = 0"
这是RC ST = 0
    13 *-* Address  SDSF
    14 *-* "ISFACT ST TOKEN('"TOKEN.1"') PARM(NP SA)"
       >>>   "ISFACT ST TOKEN('TOKEN.1') PARM(NP SA)"
       +++ RC(8) +++
   15 *-*说'这是rc TOKEN ='rc
       >>>   "this is rc TOKEN = 8"
这是RC代币= 8
    17 *-* exit


据我所知,ST命令正在运行,但是当它尝试从返回的第一行提取信息时,找不到任何东西吗?我确实查找了isffiltermode ...“以指定过滤器之间的AND或OR关系。”这是在EXECUTION和D2ADME1W的作业名称之间执行AND吗?

谢谢汤姆
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:星期二2020年12月15日上午2:16
引用回复

奇怪,我复制/粘贴了您的代码,然后为我运行。
如果您以后决定添加更多条件,则isffiltermode实际上只是在准备中。您可能会忽略它,以防万一。
2件事
-我认为您之后可以在ST面板中浏览输出吗?
-添加它以显示错误消息:
码:
如果rc<>0 then do
 say 'error:' isfmsg 
 say isfdisplay       
 do  i=1  to  isfmsg2.0
   say isfmsg2.i       
 end                   
结束
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:星期二2020年12月15日上午2:27
引用回复

您可以设置其他一些过滤器,例如sysname吗?
“ say isfdisplay”应该告诉您。 Mayube将其放在第一条ST命令之后。
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:星期二2020年12月15日上午2:54
引用回复

这是我跑的东西:

码:

/ * REXX *********************************************** *****

n = isfcalls('ON')

isfprefix = mvsvar('symdef','jobname')
isffilter ='执行队列均衡器'
isffiltermode ='AND'
地址  SDSF
"ISFEXEC ST"
说'这是rc ST ='rc

地址  SDSF
"ISFACT ST TOKEN('"TOKEN.1"') PARM(NP SA)"
如果rc<>0 then do
 say 'error rc:' rc
 say 'error:' isfmsg
 say isfdisplay
 do  i=1  to  isfmsg2.0
   say isfmsg2.i
 end
结束
出口


它失败了:

码:

这是RC ST = 0
错误rc: 8
错误:
前缀= D2ADME1W DEST=(ALL)OWNER = D2ADME1 SYSNAME = FILTERS = 1
ISF754I命令“ PREFIX D2ADME1W”是从关联变量ISFPREFIX生成的。
ISF776I处理开始于操作1(共1个)。
ISF746E操作请求被拒绝,行令牌无效。
ISF767I请求已完成。
准备


令牌无效?

汤姆
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:星期二2020年12月15日上午3:11
引用回复

行令牌是由ISFEXEC命令创建的,并且必须在ISFACT命令上未经修改地传递给SDSF。导致令牌失效的一些条件是:
-令牌已被修改或包含无效字符
-令牌与正在修改的显示不符。例如,令牌是在H面板上为一行生成的,但正在O面板上使用。
-令牌是在不同于当前运行的SDSF级别上生成的。
-令牌是为不同于执行该操作的使用ID生成的。
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表:星期二2020年12月15日上午3:21
引用回复

那绝对没有道理。我只是阅读了消息描述,所以看不到它如何适用于这种情况。
这是一个远景,我将您的isfdisplay的输出与我的进行了比较,我唯一能看到的显着差异就是我的OWNER = *。
尝试
-在isfprefix =设置之后添加isfowner ='*'。
-在第一个ST命令后添加“ token:” token.1。
-在第一个ST命令后添加“ isfdisplay”,
回到顶部
查看用户资料 发送私信
汤姆·格拉瑟

新的用户


加入:2020年12月8日
帖子:15
所在地:美国

发布发表:星期二2020年12月15日上午4:03
引用回复

这将使问题感到困惑。...我做了一些测试。这是一个有效的工作....第一步是非db2的工作:

码:

准备
结束
ACF0C038 ACF2登录属性已替换默认用户属性
令牌1:zDsjAhAcEpKEccHBUMXwQPx1wdXsxdxAze / VWCwBA4EAJgQ1lFXxTg0QBwANJiOExNLB3NTEZEDF + 0LE1bVyQMXmTcTAFCeCNQQ2MyUBA4EAJgQ1DB0JB / s =
isfdisplay: PREFIX = D2ADME1Q DEST =(ALL)OWNER = * SYSNAME = FILTERS = 1
这是第二个令牌显示= zDsjAhAcEpKEccHBUMXwQPx1wdXsxdxAze / VWCwBA4EAJgQ1lFXxTg0QBwANJiOExNLB3NTEZEDF + 0LE1bVyQMXmTcTAFCeCNQQ2
MyUBA4EAJgQ1DB0JB / s =
2令牌1:zDsjAhAcEpKEccHBUMXwQPx1wdXsxdxAze / VWCwBA4EAJgQ1lFXxTg0QBwANJiOExNLB3NTEZEDF + 0LE1bVyQMXmTcTAFCeCNQQ2MyUBA4EAJgQ1DB0JB / s =
isfdisplay: PREFIX = D2ADME1Q DEST =(ALL)OWNER = * SYSNAME = FILTERS = 1
16:29:从列表中读取04 41行


如果针对db2运行第一步(执行绑定),那么它将失败:

码:

ACF0C038 ACF2登录属性已替换默认用户属性
令牌1: TOKEN.1
isfdisplay: PREFIX = D2ADME1Q DEST =(ALL)OWNER = * SYSNAME = FILTERS = 1
这是第二个令牌显示= TOKEN.1
2令牌1: TOKEN.1
isfdisplay: PREFIX = D2ADME1Q DEST =(ALL)OWNER = * SYSNAME = FILTERS = 1
错误rc: 8
错误:
PREFIX = D2ADME1Q DEST =(ALL)OWNER = * SYSNAME = FILTERS = 1
ISF754I命令“ OWNER *”是从关联变量ISFOWNER生成的。
ISF754I命令“ PREFIX D2ADME1Q”是从关联变量ISFPREFIX生成的。
ISF776I处理开始于操作1(共1个)。
ISF746E操作请求被拒绝,行令牌无效。
ISF767I请求已完成。
执行力"ddname"位置参数无效。
16:29:从列表中读取13条LINE.0行
    33 +++  do kx = 1 to line.0
运行WILLY1,第33行时出错:错误的算术转换


似乎当第一步是db2时,令牌就失败了。如果我反对非db2步骤,那么它将起作用。不知道为什么会那么重要。

汤姆
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表:星期二2020年12月15日上午11:32
引用回复

抱歉,我已经退休,无法再使用z / OS。我无法验证我的建议。

在STEP1上,尝试使SYSPRINT成为临时数据集,并且DISP =(,PASS)
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


已加入:2006年9月1日
帖子:2214
地点:硅谷

发布发表:星期二2020年12月15日上午11:36
引用回复

仅供参考。在我以前的文章中,我注意到您似乎没有任何处于执行状态的工作。您应该遍历所有响应,并显示每个作业的QUEUE变量的值。并验证QUEUE是正确使用的变量。
回到顶部
查看用户资料 发送私信
威利·詹森(Willy Jensen)

活跃用户


已加入:2015年9月1日
帖子:416
地点:丹麦

发布发表于:星期二2020年12月15日11:00 pm
引用回复

我将介绍Pedro的最新文章。在SDSF中显示时的外观如何? ST,然后问号在前面。
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 清单& REXX 转到页面 1, 2  下一页

 


类似主题
话题 论坛 回覆
没有新帖 从REXX调用FTP的任何示例吗? 清单& REXX 1
没有新帖 SummeRx:REXX z / OS的新框架 清单& REXX 6
没有新帖 更改存在的LRECL的命令... JCL和VSAM 7
没有新帖 从REXX调用汇编程序 PL / I和组装商 5
没有新帖 BCSR和EDSR的REXX / CLIST工具 清单& REXX 2
搜索我们的论坛:


回到顶部