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

时间:2015-06-02 10:13:46

标签: mainframe zos rexx

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

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

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

  2. 在一个文件中打印出两个计算的结果。

  3. 下面是第一个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                                                       
    

1 个答案:

答案 0 :(得分:0)

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

注意,它不是IF的直接替代品......那么...... ELSE逻辑。