如何从AS/400中的字段中分割值

  • 本文关键字:字段 分割 AS ibm-midrange
  • 更新时间 :
  • 英文 :


我有一个具有不同代码的字段,例如:52、53、5253、54、5354和52、54。我需要把4位数分成前两位和后两位。我不知道如何在as/400中做到这一点。如有任何帮助,我们将不胜感激。

在RPG中使用%subst操作码来访问较大字符字段中的字符。

d ch4             s              4a   
d ch2a            s              2a   
d ch2b            s              2a   
/free                                
ch4         = '5253' ;          
ch2a        = %subst(ch4:1:2) ; 
ch2b        = %subst(ch4:3:2) ; 
/end-free                            

如果要查找的数据由逗号分隔,请使用%scan查找分隔符,然后使用%subst根据分隔符的位置提取子字段。

d ch5             s              5a       
d ch2a            s              2a       
d ch2b            s              2a       
d fx              s             10i 0     
/free                                    
ch5         = '52,53' ;             
ch2a        = %subst(ch5:1:2) ;     
fx          = %scan( ',': ch5 ) ;   
if          fx > 0 ;                
ch2b        = %subst(ch5:fx+1:2) ;  
endif ;                             
/end-free                                

要在固定格式RPG:中做到这一点

d ch5             s              5a                          
d ch2a            s              2a                          
d ch2b            s              2a                          
d ch3             s              3a                          
d arr5            s              1a   dim(5)                 

** original RPG. the MOVE, MOVEL, MOVEA opcodes.             
c* MOVE - move from the right.  MOVEL - move from the left.  
c                   move      '52,53'       ch5              
c                   move      ch5           ch2b             
c                   movel     ch5           ch2a             

** MOVEA - move to or from array                             
c                   movea     ch5           ar5              
c                   movea     ar5(4)        ch2b             

** before free form in RPG there was the EVAL opcode.        
c                   eval      ch5 = '52,53'                  
c                   eval      ch2a = %subst(ch5:1:2)         
c                   eval      fx = %scan(',':ch5)            
c                   if        fx > 0                         
c                   eval      ch2b = %subst(ch5:fx+1:2)      
c                   endif                                    

翻译strTok的原型,你可以在这里找到一个HowTo。

相关内容

  • 没有找到相关文章

最新更新