Colorful Life2010

RPGLE中DS结构和数组结合的几种方式

最近的项目中不段的用到配列(数组),二维配列以及DS等。将几种定义方式及区别列举如下:

变量定义以T@或W@开头,分别带表是数组还是普通WK变量。

T@ARR        DS         DIM(10) QUALIFIED
 T@SUBARR        12A    DIM(20)

上面这个就是一个二维数组,相当于DB中的横向20个字段,记录有10条。

必须加“QUALIFIED"关键字。

 

T@ARR       DS         DIM(10)
 W@SUB1           5A
 W@SUB2           5S 0

上面这个是数组呢,相当于每条记录是由W@SUB1和W@SUB2组成的,也就是T@ARR的每条记录是一个10A的变量。

 

            DS
T@ARR             20A   DIM(10)
 T@ARR1            5A   OVERLAY(T@ARR:1)  */OR OVERLAY(T@ARR:*NEXT)
 T@ARR2            5A   OVERLAY(T@ARR:6)
 T@ARR3           10S 0 OVERLAY(T@ARR:11)

上面的也是T@ARR的每条记录由三个变量组成,但上面这种定义方法,可以将三个变量也形成一个DIM(10)的数组,这样对于DB中有规律的重复字段来说就很有用。

 

W@STR        DS      10A
 T@ARR                1A      DIM(10)

上面这个就是将变量W@STR分成一个单个元素长度为1A的数组。

 

 

W@DBREC       DS
	  T@ARR1                 20A      DIM(10) OVERLAY(W@DBREC:101)
	    T@ARR11               4A      OVERLAY(T@ARR1:3)
	    T@ARR12               2S 0   OVERLAY(T@ARR1:7)

要放大招了,能看懂上面这个写法吗?这招用在DB里一部分字段是成组重复的情况下,可以将这部分字段变成数组,然后可以再从中分出单个字段的数组。

 

具体情况可以用以下的代码小小演示一下虽然不是DB字段。

D W@TREC DS
D  T@F1 4A DIM(5) OVERLAY(W@TREC:*NEXT)
D  T@F2 1A OVERLAY(T@F1:2)
D*
D N S 2S 0
C*
C          EVAL W@TREC = 'A1AAA2BBA3CCA4DDA5EE'
C        1 DO 5 N
C  T@F1(N) DSPLY
C  T@F2(N) DSPLY
C          ENDDO

下面是运行结果:

DSPLY A1AA
DSPLY 1
DSPLY A2BB
DSPLY 2
DSPLY A3CC
DSPLY 3
DSPLY A4DD
DSPLY 4
DSPLY A5EE
DSPLY 5

 

 

好吧,我有所保留了。现在请参观必杀技~~看以下的代码,可以直接将一条表记录放到DS里处理:

D W@Y105WK   E DS EXTNAME(文件名)
D W@Y105REC   2123 22342
D T@Y105REC                 DIM(12)OVERLAY(W@Y105REC)
D T@REC1             485    OVERLAY(T@Y105REC)
D T@KAI                3P 0 OVERLAY(T@Y105REC:*NEXT)
D T@TBKA             120    OVERLAY(T@Y105REC:*NEXT)
D T@REC2              10    OVERLAY(T@Y105REC:*NEXT)
D T@JST                9P 0 OVERLAY(T@Y105REC:*NEXT)
历史上的今天: [2005/05/30]我的选择不会错,ColdFusion

[RPGLE中DS结构和数组结合的几种方式]的回复

unicac 于 2010-06-13 23:38:11 发表 | IP:125.122.210.*
呵呵,通常发这种没人评论,我来
柠檬园主 2010-06-14 16:54:36 回复:

哈哈,多谢了,这种就当是写给自己看的了。

andy 于 2011-07-21 15:56:48 发表 | IP:183.62.131.*
写的不错,就是排版让人看的累
柠檬园主 2011-07-21 23:45:00 回复:

呵呵,更多是给自己个备忘 ,还真没注意排版的问题,多谢支持

Post a Comment~