-
- RPGLE中DS结构和数组结合的几种方式
- 2010-05-30
最近的项目中不段的用到配列(数组),二维配列以及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)
-
Views(8907) | Comments(2) |
In:
AS400について
|
(05/24)
AS400中的系统信息
强迫症
(06/02)
[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 回复:
呵呵,更多是给自己个备忘 ,还真没注意排版的问题,多谢支持
