我有一个具有不同代码的字段,例如: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。