Ibm midrange 如何根据RPGLE中变量内容中的某个符号细分字符串变量的内容

Ibm midrange 如何根据RPGLE中变量内容中的某个符号细分字符串变量的内容,ibm-midrange,rpgle,rpg,Ibm Midrange,Rpgle,Rpg,假设我在RPGLE中有一个字符串变量。变量的内容是“Hi;this;is;Kunal;Roy”。如何根据符号拆分字符串的内容 我想把值Hi,this,is,Kunal,Roy分开并存储在其他变量中 有人能在rpgle中提出一个简单的方法吗。有很多不同的方法来处理这个问题。一种解决方案是使用C函数strtok或strtok_r。您还可以编写自己的过程 服务程序link List和Arraylist(来自rpgnextgen.com)都有一个拆分过程,用于拆分字符串并将部分存储在列表中。有关这两个服

假设我在RPGLE中有一个字符串变量。变量的内容是“Hi;this;is;Kunal;Roy”。如何根据符号拆分字符串的内容

我想把值Hi,this,is,Kunal,Roy分开并存储在其他变量中


有人能在rpgle中提出一个简单的方法吗。

有很多不同的方法来处理这个问题。一种解决方案是使用C函数strtok或strtok_r。您还可以编写自己的过程

服务程序link List和Arraylist(来自rpgnextgen.com)都有一个拆分过程,用于拆分字符串并将部分存储在列表中。有关这两个服务程序的文档,请访问


您可以使用repo上的package manager轻松安装这些服务程序。

有一个关于拆分字符串的RFE for RPG,您可以投票:

“新内置函数%SPLIT”:
这是一个非常好的问题

您可以定义一个要填充的数组,然后在字符串上循环

D ArMax           c                    10                                       
D ArVal           S                   dim(ArMax) like($MyString)                

c                   movel     ';'           $Symbol           1                         
c                   z-add     1             $Start            3 0                       
c     *like         define    $Start        $Pos           
c     *like         define    $Start        @@count        
       $MyString = 'Hi;this;is;Kunal;Roy';                                              
       $pos = %scan($Symbol: $MyString:$start);                                             
       dow $pos > 0;                                                                    
         @@count = @@count +1;                                                                                                                                                    
         ArVal(@@Count) = %subst($MyString:$Start:$pos-$Start);                         
         $start = $pos +1;                                                              
         $pos = %scan($Symbol: $MyString:$Start);                                           
       enddo;                                                                           
D ArMax           c                    10                                       
D ArVal           S                   dim(ArMax) like($MyString)                

c                   movel     ';'           $Symbol           1                         
c                   z-add     1             $Start            3 0                       
c     *like         define    $Start        $Pos           
c     *like         define    $Start        @@count        
       $MyString = 'Hi;this;is;Kunal;Roy';                                              
       $pos = %scan($Symbol: $MyString:$start);                                             
       dow $pos > 0;                                                                    
         @@count = @@count +1;                                                                                                                                                    
         ArVal(@@Count) = %subst($MyString:$Start:$pos-$Start);                         
         $start = $pos +1;                                                              
         $pos = %scan($Symbol: $MyString:$Start);                                           
       enddo;