cobol 中下标/索引超出范围错误

问题描述 投票:0回答:1

在工作存储部分下,

我已经定义了

   05  SUB                         PIC 9(08) VALUE 0.


   01  WS-TABLE.            
        05  ERROR-TABLE OCCURS 1000 TIMES.
            10  E-PRODUCT-NAME          PIC X(16).
            
    01  WS-SYSTEM-DATE.
        05  RUN-YEAR.
            10  RUN-CC                  PIC 9(2).
            10  RUN-YY                  PIC 9(2).
        05  RUN-MONTH                   PIC 99.                      
        05  RUN-DAY                     PIC 99.                      
        05  WS-CURRENT-TIME.
            10  WS-CURRENT-HOUR         PIC 9(2).
            10  WS-CURRENT-MINUTE       PIC 9(2).
            10  WS-CURRENT-SECOND       PIC 9(2).
            10  WS-CURRENT-MS           PIC 9(2).
        05  WS-DIFF-FROM-GMT            PIC S9(4).

在程序部分下,

我已经编码了

IF NOT VALID-PRODUCT
                      ADD 1 TO SUB                 
                      STRING 'PRODUCTS' WS-SYSTEM-DATE
                      DELIMITED BY SIZE INTO E-PRODUCT-NAME(SUB)

为什么运行时会出现“下标/索引超出范围”错误?

arrays indexing cobol subscript
1个回答
0
投票

E-PRODUCT-NAME
是 16 个字符,
PIC X(16)
STRING
语句创建一个包含 28 个字符的值。当它尝试将 28 个字符移动到 16 个字符字段时,这会导致出现
OVERFLOW
情况。

我建议将

E-PRODUCT-NAME
的图片更改为
PIC X(28)

© www.soinside.com 2019 - 2024. All rights reserved.