小编Len*_*ena的帖子

如何防止 COBOL 中的内部表溢出?

这可能是一个菜鸟问题,但我仍然很难弄清楚如何在 COBOL 中使用表。

目前我正在编写一个可以被其他程序调用的简单模块。我的程序必须在一个内部表中搜索数据,如果没有找到,就添加进去。

我有这张桌子:

01 TB-1 OCCURS 10 INDEXED X1.
   03 CLIENT-NAME    PIC N(30).
   03 ORDER-NUMBER   PIC 9(06).
Run Code Online (Sandbox Code Playgroud)

当然,我可以增加 OCCURS 的数量,这样表溢出的可能性就会降低。但是,在测试模块时,我必须处理还有一个不适合表中的记录要添加的情况。

处理这个问题的最佳方法是什么?我正在考虑通过返回错误消息来防止异常终止。

为此,我想我会定义一个新字段并将其用作计数器。所以基本上,每次我的模块添加一条记录时,它也会向计数器添加 +1。有点像这样:

IF COUNTER < 10 
     PERFORM ADD-RECORD
ELSE DISPLAY 'INPUT HAS EXCEEDED MAX OF 10 OCCURRENCES'
     GOBACK 
END-IF
.

ADD-RECORD.
    MOVE INPUT-CLIENT-NAME  TO CLIENT-NAME(X1)  IN TB-1.
    MOVE INPUT-ORDER-NUMBER TO ORDER-NUMBER(X1) IN TB-1.
    ADD +1 TO COUNTER
    .
Run Code Online (Sandbox Code Playgroud)

这是一个很好的方法吗?你还有其他建议吗?在此先感谢您的帮助。

cobol mainframe

5
推荐指数
1
解决办法
2249
查看次数

如何摆脱字符串中的尾随和嵌入空格?

我正在编写一个程序,将国内和国际帐号转换为IBAN号码.首先,我需要形成一个字符串:银行ID +分行ID +帐号+ ISO国家代码,不包含这些字段中可能存在的尾随空格.但并非每个帐号都有相同的长度,有些帐号有分支标识符而有些帐号没有,所以我总是会从这些字段中得到尾随空格.

我的工作存储看起来像这样:

      01 Input-IBAN.
          05 BANK-ID                    PIC N(10) VALUE "LOYD".
          05 BRANCH-ID                  PIC N(10) VALUE "     ".
          05 ACCOUNT-NR                 PIC N(28) VALUE "012345678912   ". 
          05 COUNTRY-CODE               PIC N(02) VALUE "GB".
      01 Output-IBAN                    PIC N(34).
Run Code Online (Sandbox Code Playgroud)

我为这个例子添加了一些值; 实际上它取决于输入.分支代码是可选的,因此我在示例中将其留空.

我基本上想从这个输入串起来: "LOYD 012345678912 GB"

对此: "LOYD012345678912GB"

有没有人知道这样做的方法不会导致性能问题?我曾想过使用它FUNCTION REVERSE然后使用一个INSPECT来计算前导空格.但我听说这是一个缓慢的方法.有没有人有任何想法?也许是一个如何使用这个想法的例子?

编辑: 我被告知基本字段可能包含嵌入空格.

cobol

4
推荐指数
1
解决办法
1万
查看次数

Cobol - 如何确定 PIC N 字段中内容的长度和位置?

我发现我倾向于以太大的块来解决问题,因此我尝试从更小、更具体的问题开始。

我专门从事 PIC N 领域的工作,即国家领域。我需要确定我正在开发的程序的该字段中内容的长度和位置。

我所说的具体字段定义如下:

05 Bank-CODE PIC N(10).

可能有前导空格,也可能有尾随空格。在某些时候,我也需要测试它的嵌入式空间。

基本上,目标是能够在没有空格的情况下使用该字段的内容。

现在,我知道如何确定字段本身的长度: 05 BANK-CODE PIC N(10). 05 BK-LENGTH PIC S9(04) COMP. MOVE LENGTH OF BANK-CODE TO BK-LENGTH COMPUTE BK-LENGTH = FUNCTION LENGTH (BANK-CODE)

我只是不知道如何确定BANK-CODE中内容的长度和位置。

cobol

0
推荐指数
1
解决办法
5243
查看次数

标签 统计

cobol ×3

mainframe ×1