Colorful Life2010

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

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

变量定义以[email protected][email protected]开头,分别带表是数组还是普通WK变量。

[email protected]        DS         DIM(10) QUALIFIED
 [email protected]        12A    DIM(20)

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

必须加“QUALIFIED"关键字。

 

[email protected]       DS         DIM(10)
 [email protected]           5A
 [email protected]           5S 0

上面这个是数组呢,相当于每条记录是由[email protected][email protected]组成的,也就是[email protected]的每条记录是一个10A的变量。

 

            DS
[email protected]             20A   DIM(10)
 [email protected]            5A   OVERLAY([email protected]:1)  */OR OVERLAY([email protected]:*NEXT)
 [email protected]            5A   OVERLAY([email protected]:6)
 [email protected]           10S 0 OVERLAY([email protected]:11)

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

 

[email protected]        DS      10A
 [email protected]                1A      DIM(10)

上面这个就是将变量[email protected]分成一个单个元素长度为1A的数组。

 

 

[email protected]       DS
	  [email protected]                 20A      DIM(10) OVERLAY([email protected]:101)
	    [email protected]               4A      OVERLAY([email protected]:3)
	    [email protected]               2S 0   OVERLAY([email protected]:7)

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

 

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

D [email protected] DS
D  [email protected] 4A DIM(5) OVERLAY([email protected]:*NEXT)
D  [email protected] 1A OVERLAY([email protected]:2)
D*
D N S 2S 0
C*
C          EVAL [email protected] = 'A1AAA2BBA3CCA4DDA5EE'
C        1 DO 5 N
C  [email protected](N) DSPLY
C  [email protected](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 [email protected]   E DS EXTNAME(文件名)
D [email protected]   2123 22342
D [email protected]                 DIM(12)OVERLAY([email protected])
D [email protected]             485    OVERLAY([email protected])
D [email protected]                3P 0 OVERLAY([email protected]:*NEXT)
D [email protected]             120    OVERLAY([email protected]:*NEXT)
D [email protected]              10    OVERLAY([email protected]:*NEXT)
D [email protected]                9P 0 OVERLAY([email protected]:*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~