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

使用REXX的多重条件


IBM大型机论坛 -> 清单和REXX
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一2:44 pm
引用回复

你好

我需要根据存在的变量数量使用REXX检查多个条件
例如:A = 123,B = NH,C ='',D ='2008'
我需要在哪里检索记录
A = 123,B = NH&D ='2008'必须省略C,因为该值为空白
像IF(SUBSTR(RC.I,1,3)= A& SUBSTR(RC.I,4,2)=B & SUBSTR(RC.I,8,4)=D)
并且这可能会循环,因此需要根据具有这些值的变量来改变IF条件。我们将不知道什么时候哪个字段为空白,也可能有多个字段为空白。

请让我知道您的建议。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一2:50 pm
引用回复

引用:

请让我知道您的建议。


非常谦虚的建议 icon_sad.gif
尝试以更容易理解的方式表达您的要求,
这个问题可能对您来说很清楚,但是您暴露的方式并不能使所有人都清楚...
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一3:05 pm
引用回复

试图从提供的信息中推断出一些东西

记录 是您要分析的东西
var1,var2,var3 是你需要检查的变量

这是一个代码片段


码:
记录 ="var1var2var3var4"
pos1 = 1; len1 = 4; var1 ="var1"
pos2 = 5; len2 = 4; var2 =""
pos3 = 9; len3 = 4; var3 =""

NOT_MATCHED = 0
    已配对 = 1

跟踪"I"
do 1
    标志= NOT_MATCHED
    if  var1 <> ""  & ,
        substr(recd,pos1,len1) <> var1 then 离开
    if  var2 <> ""  & ,
        substr(recd,pos2,len2) <> var2 then 离开
    if  var3 <> ""  & ,
        substr(recd,pos3,len3) <> var3 then 离开
    flag = 已配对
结束

如果flag = 已配对,那么,
   say "MATCHED"
否则,
   say "NOT 已配对"

出口
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一3:06 pm
引用回复

例如:说我有一些变数
A=123
B = NE
C =''
D=2008
我的输入文件有
记录1:23,NE,D,2008
记录2:123,NE,T,2008
记录3:111,HN,U,2007

我需要获取所有值为A = 123,B = NE和D = 2008的记录,我们没有条件C的值为C =“'(空白)
条件会像
IF((SUBSTR(RECORD.I,1,3)= A&SUBSTR(RECORD.I,5,2)= B&SUBSTR(RECORD.I,10,4)= D))这将找回我
记录1:23,NE,D,2008
记录2:123,NE,T,2008

同样明智的是,我的IF条件需要根据具有值的字段进行更改。如果A是空话,那么我应该离开该字段,并用字段B,C和D构成条件。

这是我的问题。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一3:17 pm
引用回复

那么给出的代码段就可以做到这一点, 经过测试


这个新的代码段测试不存在的变量或空变量
码:
记录 ="var1var2var3var4"
pos1 = 1; len1 = 4; var1 ="var1"
pos2 = 5; len2 = 4; var2 =""
删除var2
pos3 = 9; len3 = 4; var3 =""

NOT_MATCHED = 0
    已配对 = 1

跟踪"I"
do 1
    标志= NOT_MATCHED
    if  symbol('var1') =  "VAR" & ,
      strip(var1)    <> ""    & ,
        substr(recd,pos1,len1) <> var1 then 离开
    if  symbol('var2') =  "VAR" & ,
      strip(var2)    <> ""    & ,
        substr(recd,pos2,len2) <> var2 then 离开
    if  symbol('var3') =  "VAR" & ,
      strip(var3)    <> ""    & ,
        substr(recd,pos3,len3) <> var3 then 离开
    flag = 已配对
结束

如果flag = 已配对,那么,
   say "MATCHED"
否则,
   say "NOT 已配对"

出口
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一3:34 pm
引用回复

该代码段更加复杂

它从列表中动态构建变量名

码:
记录 ="var1var2var3var4"
pos1 = 1; len1 = 4; var1 ="var1"
pos2 = 5; len2 = 4; var2 =""
删除var2
pos3 = 9; len3 = 4; var3 ="var3"

NOT_MATCHED = 0
    已配对 = 1

越南_l ="var1 var2 var3 var4"
vpos_l ="1    5    9    13" 
vlen_l ="4    4    4    4" 


跟踪"I"
flag = 已配对
do  v = 1 to words(vnam_l)
   vnam = word(vnam_l,v)
    vpos = word(vpos_l,v)
   vlen = word(vlen_l,v)
   vval = value(vnam)
    if  symbol(vnam) <> "VAR" then ,
      iterate

    if  跳闸(vval) =  "" then ,
      iterate
   
    if  substr(recd,vpos,vlen) <> 值 then do
      flag = NOT_MATCHED      
      leave
   end
结束

如果flag = 已配对,那么,
   say "MATCHED"
否则,
   say "NOT 已配对"

出口
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一3:36 pm
引用回复

感谢你的建议 ...

但这即使有一个变量也可以向我显示记录,但我不希望这样
我需要检查所有具有值的变量是否存在于该记录中,然后按照我之前在示例中指定的方式仅获取该记录。

您对此有何建议?
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一3:49 pm
引用回复

非常感谢enrico-sorichetti

这就是我为此所做的努力,请告诉我您为什么使用DROP VAR2
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一3:54 pm
引用回复

引用:
我需要根据存在的变量数量使用REXX检查多个条件
例如:A = 123,B = NH,C ='',D ='2008'
我需要在哪里检索记录
A = 123,B = NH&D ='2008'必须省略C,因为该值为空白


我的样品就是那样
如果未定义任何源变量,或者为空白或为空,
跳过比较

书面,做得更好,经过测试,按照引用的要求工作并发布



引用:
您对此有何建议?


只是学会以一种不会引起误解的方式表达您的要求,请 icon_evil.gif

添加了多个记录,并根据原始要求进行了测试

码:

记录.0 = 5
Recd.1 ="var1var2var3var4"
记录.2 ="var1varxvar3var4"
记录.3 ="var1var2varxvar4"
Recd.4 ="var1var2var3varx"
Recd.5 ="var1var2var3varx"

var1 ="var1"
var3 ="var3"

NOT_MATCHED = 0
    已配对 = 1

越南_l ="var1 var2 var3 var4"
vpos_l ="1    5    9    13" 
vlen_l ="4    4    4    4" 


do  r = 1 to 记录.0
   recd = 记录.r
   trace "O"
   flag = 已配对
   do  v = 1 to words(vnam_l)
      vnam = word(vnam_l,v)
      vpos = word(vpos_l,v)
      vlen = word(vlen_l,v)
      vval = value(vnam)
      if  symbol(vnam) <> "VAR" then ,
         iterate
   
      if  跳闸(vval) =  "" then ,
         iterate
      
      if  substr(recd,vpos,vlen) <> 值 then do
         flag = NOT_MATCHED      
         leave
      end
   end
   
   如果flag = 已配对,那么,
      say "MATCHED    " r 记录.r
   else ,
      say "NOT 已配对" r 记录.r

结束

出口

回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一4:09 pm
引用回复

非常感谢您为enrico-sorichetti提供的帮助
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一4:21 pm
引用回复

drop语句用于测试变量是否不存在...

最后一个片段中有一个小故障

码:

...之前
      vlen = word(vlen_l,v)
      vval = value(vnam)
      if  symbol(vnam) <> "VAR" then ,
         iterate


      if  跳闸(vval) =  "" then ,
         iterate


码:

...之后
      vlen = word(vlen_l,v)
      if  symbol(vnam) <> "VAR" then ,
         iterate

      vval = value(vnam)
      if  跳闸(vval) =  "" then ,
         iterate


在检查了变量值的存在之后检索变量值是比较明智​​的
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年7月7日星期一4:54 pm
引用回复

收到了。谢谢
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2008年7月7日星期一8:34 pm
引用回复

嗨,恩里科,

引用:
最后一个片段中有一个小故障

很久以前有人告诉我 虫子 是“小故障之子”。 。 。 。
回到顶部
查看用户资料 发送私信
恩里科·索里切蒂

高级主持人


已加入:2007年3月14日
帖子:10715
所在地:意大利

发布发表:2008年7月7日星期一10:35 pm
引用回复

嗨,迪克,
希望你能原谅我的小故障 icon_sad.gif
回答TS时,该代码段经过了测试
(...可以通过消息时间戳看到)

我保证以后会更加小心 icon_biggrin.gif
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年8月1日,星期五,下午6:09
引用回复

嗨,恩里科,

这个记录执行得很快,但记录很少,但是我的输入中有记录和记录,这样做很慢,因此有任何方法可以使其变得更好和更快。

对此的建议将有很大帮助
回到顶部
查看用户资料 发送私信
dbzTHEdinosauer

全球主持人


已加入:2006年10月20日
帖子:6967
位置:瓷宝座

发布发表:2008年8月1日,星期五7:16 pm
引用回复

谈论rexx时,记录的亿万个被认为是必需的信息。 rexx不是高端I / O实用程序。您可以编译您的rexx。

你可以建立排序控制语句
要么
编写一个cobol / pl1 / assembler模块来处理此数据。
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年8月5日,星期二,上午9:47
引用回复

此rexx由面板和rexx代码组成,其中用户输入一些值,我需要验证每个字段并在验证后引发消息,以获取用户输入的值并搜索用户输入的值的组合是否存在于以下文件中:如果组合存在,将有十亿条记录;如果未弹出,则会将其写入文件;如果未弹出,则提示为“未找到组合”,并且所有这些都将在线完成。REXX验证将成为后端,因此无法将其放入文件中。搜索用户在包含数十亿条记录的文件中输入的字段值的组合会花费我很多时间。
回到顶部
查看用户资料 发送私信
c

高级会员


已加入:2006年7月28日
职位:1702
所在地:澳大利亚

发布发表:2008年8月5日,星期二,上午10:24
引用回复

你好

我不敢相信有人会提出这样的设计,这些请求多久运行一次?有多少用户可以要求?现在满足这些请求之一需要多少时间?

当然,可以验证用户输入的值并将其保存到文件中,然后可以批量使用该文件。

我将尝试将所有请求捕获到一个文件中,并每天运行一个批处理作业。

格里
回到顶部
查看用户资料 发送私信
外籍人士

全球主持人


已加入:2007年3月14日
帖子:8794
地点:威尔士威尔士

发布发表:2008年8月5日,星期二,12:33 pm
引用回复

格里,别说了,提出明智的建议

您认为这是一个帮助论坛之类的东西 icon_biggrin.gif
回到顶部
查看用户资料 发送私信
迪克·谢勒

主持人荣誉


已加入:2006年11月23日
帖子:19245
位置:矩阵内部

发布发表:2008年8月5日,星期二,7:54 pm
引用回复

你好,

如果这一概念得到了证实,那么最好按照DBZ的建议进行操作,并以更适合的语言重新编码该过程。

对于处理大量数据,REXX可能是最糟糕的选择。 。 。
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


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

发布发表:2008年8月5日,星期二10:00 pm
引用回复

引用:
搜索用户输入的值的组合是否存在于文件中(如果该组合存在)将具有十亿条记录


如果定期搜索,我认为数据存储格式错误。确实没有一种很好的方法来搜索以顺序格式存储的数十亿条记录。它应该在数据库中,在查找(或不查找)记录之前,它可能需要读取几个索引块。
回到顶部
查看用户资料 发送私信
Craq Giegerich

高级会员


加入时间:2007年5月19日
帖子:1512
地点:美国弗吉尼亚

发布发表:2008年8月5日,星期二,10:04 pm
引用回复

数十亿条记录,数百万条记录我认为其中一些记录估算有些差。
回到顶部
查看用户资料 发送私信
佩德罗

全球主持人


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

发布发表:2008年8月6日星期三上午12:48
引用回复

引用:
我的输入内容中有Billons od记录,它在执行此操作时非常慢,有什么方法可以使其变得更好和更快。

很难相信,在没有先意识到性能问题的情况下获得了数十亿条记录。当您说“十亿”时,我只是假设您的意思是“大量记录”。

加快速度的方法是不使用顺序文件。对键控记录使用VSAM。我认为您可以从rexx获得处理VSAM的工具。 (或者如我之前所说,使用真实的数据库)。
回到顶部
查看用户资料 发送私信
维迪亚

新的用户


已加入:2008年5月2日
帖子:77
地点:钦奈

发布发表:2008年8月6日星期三上午11:05
引用回复

是的,我一开始就听您说过话,这被认为是很少有记载,现在已经达到数十亿。这需要在线处理以获取用户输入并验证并向其抛出错误消息。我猜这不能更改为程序。搜索部分会浪费时间,有什么办法可以将此搜索部分合并到像cobol这样的语言中,并与rexx结合,因为这需要在线完成。
回到顶部
查看用户资料 发送私信
c

高级会员


已加入:2006年7月28日
职位:1702
所在地:澳大利亚

发布发表:2008年8月6日星期三上午11:11
引用回复

你好

我想成为输入数据并等待结果的用户。 icon_wink.gif


我将不得不寻找娱乐自己的方法。

格里
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 清单和REXX 转到页面 1, 2  下一页

 


类似主题
话题 论坛 回覆
没有新帖 从REXX调用FTP的任何示例吗? 清单和REXX 1
没有新帖 SummeRx:REXX z / OS的新框架 清单和REXX 6
没有新帖 更改存在的LRECL的命令... JCL和VSAM 7
没有新帖 使用REXX访问SDSF;我是什么 ... 清单和REXX 38
没有新帖 从REXX调用汇编程序 PL / I和组装商 5
搜索我们的论坛:

回到顶部