Colorful Life2010

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-DAYCOMMENT字段的最后10个字符。

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

索引
 
索引名INDEX
   
索引名可以用作PERFORM句的量,用于SETSEARCH句和用作下
   
03 TEXT PIC XXX OCCURS 7 TIMES INDEXED BY index
      05 A PIC XXX
      05 B PIC XXX
    PERFORM VARYING index FROM 1 BY 1 UNTIL index >7
      DISPLAY A(index),B(index)
    END-PERFORM.
   
注意和不用索引名的比
    77 index PIC 99
    03 TEXT PIC XXX OCCURS 7 TIMES
      05 A PIC XXX
      05 B PIC XXX
    PERFORM VARYING index FROM 1 BY 1 UNTIL index >7
      DISPLAY A(index),B(index)
    END-PERFORM.

  关键KEY
   
关键字有ASCENDING(升序,由低到高)DESCENDING(降序,由高到低)
     
03 TEXT PIC XXX OCCURS 7 TIMES ASCENDING KEY IS A,B.
      05 A PIC XXX.
      05 B PIC XXX.
    TEXT
中的元素按A升序排序,A相同的元素按B升序排序。
   
关键字的作用是定SEARCHALL语时表格的排序。

  表格初始化,可以一个一个数据项单独初始化,也可以一起初始化。
     
03 TEXT PIC XXX OCCURS 7 TIMES VALUES SPACE.
     
05 A PIC XXX.
      05 B PIC XXX.                         
一起初始化空格。
     
03 TEXT PIC XXX OCCURS 7 TIMES.
      05 A PIC XXX VALUES SPACE.
     
05 B PIC XXX VALUES SPACE.            独初始化。

SET
   
保存或恢索引SET A TO B.
   
将索引增或减一个整数SET A UP/DOWN BY N.

SEARCH
    SEARCH A [VARYING B] AT END C {WHEN CONDITION D}...END-SEARCH
    A
为带INDEXED BY 的表格。流求CONDITION ,时执D,SEARCH止。    ,索引值递增,至最大索引时执AT END C,SEARCH止。
   
若一始索引最大,WHEN句,直接AT END 句。
    VARYING
指定索引B,省略A中制定的索引。
   
下面的例子找月份表中下一个具有31天的月份。
   
01 MONTH-DATA.
      03 MONTH-INFO.
        05 PIC X(10) VALUES "JANUARY".
        05 PIC X(3) VALUES "JAN".
        05 PIC 99 VALUES 31.
        05 PIC X(10) VALUES "FEBRUARY".
        05 PIC X(3) VALUES "FEB".
       
05 PIC 99 VALUES 28.
        ...(
省略代)
      03 MONTH REDEFINES MONTH-INFO OCCURS 12 TIMES INDEXED BY MONTH-INDEX.
       
05 NAME   PIC X(10).
        05 ABBREV PIC X(3).
        05 DAYS   PIC 99.
    77 CURRENT-MONTH PIC 99.
    77 NEXT-31-DAY-MONTH PIC 99.

    SET MONTH-INDEX TO CURRENT-MONTH.
    SET MONTH-INDEX UP BY 1.
   
SEARCH MONTH
        AT END MOVE 1 TO MONTH-INDEX
            SEARCH MONTH
                AT END MOVE 0 TO NEXT-31-DAY-MONTH
                WHEN DAYS(MONTH-INDEX) = 31
                    SET NEXT-31-DAY-MONTH TO MONTH-INDEX
            END-SEARCH
        WHEN DAYS(MONTH-INDEX) = 31
            SET NEXT-31-DAY-MONTH TO MONTH-INDEX
    END-SEARCH
   
找多表格,要将SEARCH放到PERFORM中。
   
01 TABLE-DATA.
      03 DIM-1 OCCURS 10 TIMES INDEXED BY X1.
        05 DIM-2 OCCURS 20 TIMES INDEXED BY X2.
          07 NAME PIC X(20).
          07 STATE PIC XX.
          ...
    PERFORM VARYING X1 FROM 1 BY 1 UNTIL X1 > 20
        SET X2 TO 1
        SEARCH DIM-2
            WHEN STATE(X1,X2) = "AL" ....
           
WNEH STATE(X1,X2) = "AZ" ....
        END SEARCH
    END-PERFORM.
   
有一SEARCH关键字的表格找,和上面的找差不多,主要是WHEN 条件中要用关键字作为查找条件。比如说关键AWHEN A = .....

原文:pantierui.cublog.cn

骑行 (10/10)
历史上的今天: [2007/09/14]MEncoder的基础用法
[2007/09/14]H.264介绍
[2006/09/14]更新的BLOG功能,打算开放源代码
[2005/09/14]多爱,不是黄蓉的王蓉
[2005/09/14]ColdFusion在线人数统计
[2005/09/14]阳光的指纹
[2005/09/14]微软官方出了删除3721等的流软的工具

[COBOL数组操作]的回复

Post a Comment~