Colorful Life2010

Tag: 数组 | 记录数: 3
RPG中数组和DS使用方法总结

ARRAY
一 array与table的区别
        Array:可以使用下标,进行顺序访问或随即访问
        Table:不可以使用下标,只能顺序访问。只能以TABxxx开头。
        注:table虽然和array的功能相似,但是array要比table灵活很多。Table可以淘汰了,了解table的原因是维护老的代码时可能会用到。

二 array的类型和key word
        1有三种类型的array,分别是compile time array、run time array、pre-run time array。
        
        2与array相关的key word:
        DIM(number)         定义数组中元素的数量

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的数组。

COBOL数组操作
Weather:有点凉

下面是数组的例子:
          01 RECORD-X.
            03 MONTH OCCURS 12 TIMES.
              05 NAME PIC X(12).
              05 DAYS OCCURS 31 TIEMS.
                07 COMMENT PIC X(20).
                07 TEMP-HI PIC S999.
                07 TEMP-LO PIC S999.
          77 CURRENT-DAY PIC 99.
          调用表示如下:
          MONTH(5) : 包含NAME 和 DAYS表格的组项目。
          NAME OF MONTH(5) :基本字母数字项目,长度为12个字符。
          NAME(5) (1:3) 上述第5个项目的前3个字符。
          TEMP-HI(1,31) 基本数字项目,长度为3个字符。前一个参数是在MONTH数组中的位置,后一个参数是在DAYS数组中的位置。相当于MONTH[1].DAYS[31].TEMP-HI。
          COMMENT OF RECORD-X(5,CURRENT-DAY)(11) 基本字母数字项目第五个月的CURRENT-DAY的COMMENT字段的最后10个字符。

    03 TEXT PIC XXX OCCURS 1 TO 12 TIMES DEPENDING ON IX.
    定义一个变长的数组。定义的长度是12,实际以IX为准,若IX为10,则TEXT的长度就是30。。。。