如何在 REXX 中实现多个条件?

Posted

技术标签:

【中文标题】如何在 REXX 中实现多个条件?【英文标题】:How do I implement multiple conditions in REXX? 【发布时间】:2015-06-02 10:13:46 【问题描述】:

我正在尝试整理一些 REXX 代码来实现以下目标。

    检查给定输入(0007145547162165876, 0002734752467588968, 555729879318548867, 5559871342286434816)的给定条件(前 3 个字符是 000)。如果是这样,请对该输入执行一些计算(如下所示)。

    b.如果条件不满足(即前 3 个字符不是 000 ),则对该输入执行不同的计算。

    将两个计算的结果打印在一个文件中。

下面是我的第一个 if 条件语句的代码,它可以按需要工作。问题是实施第二个条件。我如何做到这一点?

 if substr(rec.i,3,3) == '000'                             
      then do                                                
   sum = d1+d2+d5+d6+d7+d8+d9+d10+d11+d12+d13+d14+d15+d16    
   sum = sum * 9                                             
   chksum = substr(sum,2,2)                                  
   chk    = d3||d4                                           
   if chksum = chk                                           
      then do                       
            say 'valid check sum' chksum 'in' rec.i          
            out.1=rec.i                                      
            "EXECIO 1 DISKW DATA       (stem out."           
           end                                               
      else do                                                
            say '*** invalid check sum' chk 'in' rec.i       
            say '*** check sum should be' chksum 'in' rec.i  
            out.1=rec.i                                      
            "EXECIO 1 DISKW OUTFILE (stem out."              
           end                                               
   end                                                       
   end                                                       

【问题讨论】:

Rexx 拥有else。你甚至在你的代码中使用了它。你的实际问题是什么?顺便说一句,您没有查看记录的前三个字符。 真的吗?正确的做法是什么?也许这就是为什么它首先不起作用的原因。请帮忙。我编辑了问题,试图让问题更清楚。 把这个substr(rec.i,3,3)改成这个substr(rec.i,1,3)。在您显示的代码中,您有一个无与伦比的end。尽管它应该可以工作,但您对 EXECIO 的输出有不必要的使用干变量。基本上,您的第一个 IF 失败了,而您认为它没有失败,所以无法弄清楚为什么 else 至少没有被采取行动。所以基本上这是一个妨碍你进步的错字。 只是小费,I1il。乍一看,这些都非常相似。我避免使用单字符变量。每次你“看到” i,3,3 我认为你把 i 读成了 1。 【参考方案1】:

您可以查看 SELECT...WHEN...OTHERWISE 子句,看看是否对您有所帮助。 我用它来简化一些复杂的代码,在这些代码中我可能想要检查几种不同风格的输入。

注意,它不能直接替代 IF...THEN...ELSE 逻辑。

【讨论】:

以上是关于如何在 REXX 中实现多个条件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ansible中实现关于修改文件的条件逻辑?

如何在 IBM Worklight 上的多个平台中实现条码扫描器?

如何在 Swing 中实现动态 GUI

PL/SQL-表和条件都不同时如何在单个查询中实现多条count语句

如何在 s-s-rS 报告中实现类似 Excel 的条件格式和“色标”

如何在 Laravel 5.5 中实现多个多对多关系?