惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
博客园_首页
H
Help Net Security
WordPress大学
WordPress大学
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 三生石上(FineUI控件)
B
Blog
I
InfoQ
SecWiki News
SecWiki News
T
Tailwind CSS Blog
Spread Privacy
Spread Privacy
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
P
Palo Alto Networks Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Vercel News
Vercel News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
K
Kaspersky official blog
M
MIT News - Artificial intelligence
S
Schneier on Security
T
Threat Research - Cisco Blogs
F
Fortinet All Blogs
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
MyScale Blog
MyScale Blog
The Cloudflare Blog
Recent Announcements
Recent Announcements
Security Latest
Security Latest
G
GRAHAM CLULEY
IT之家
IT之家
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
腾讯CDC
Google DeepMind News
Google DeepMind News
V
V2EX
S
Securelist
TaoSecurity Blog
TaoSecurity Blog
B
Blog RSS Feed
S
SegmentFault 最新的问题
博客园 - 叶小钗
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Project Zero
Project Zero
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
F
Full Disclosure

博客园 - 秒针

简单常用日语汇总 IBM:员工职业发展计划 向最佳雇主学什么? - 秒针 - 博客园 专访IBM HR规划经理张榕 探求IBM招聘经 IBM的用人6诀:争、选、育、用、留、舍 贴个有关IBM招聘的地址! 获取影响行数和ID的存储过程 修正过的通用分页存储过程 - 秒针 - 博客园 真险! COBOL程序格式 COBOL语言数据类型转换方法 写好软件的75条 cobol语法 3.14@深圳。。。 SUSE10真的很不错! haha,SUSE10 is installed in my PC! 搞了一天的suse还没没装好! 英语面试〔转〕 彻底放弃了一直钟爱的紫光输入法 第一次面试被BS掉了!
cobol数组操作
秒针 · 2006-03-29 · via 博客园 - 秒针

下面是数组的例子:
          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。

索引
  索引名INDEX
    索引名可以用作PERFORM语句的变量,用于SET和SEARCH语句和用作下标。
    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升序排序。
    关键字的作用是定义SEARCH语句带ALL短语时表格的排序。

  表格初始化,可以一个一个数据项单独初始化,也可以一起初始化。
      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 条件中要用关键字作为查找条件。比如说关键字为A,则必须有WHEN A = .....