gpt4 book ai didi

cobol - 级别 49 可以用于 STRING 目的吗

转载 作者:行者123 更新时间:2023-12-04 16:47:05 24 4
gpt4 key购买 nike

由于我是 cobol 的新手,请帮助我使用下面的代码。

WORKING-STORAGE SECTION.

01 BAS-REC.

02 INPT-REC.
49 INPT-LEN PIC S9(4) COMP.
49 INPT-TEXT PIC X(150).

02 INPT1-REC.

49 INPT1-LEN PIC S9(4) COMP.
49 INPT1-TEXT PIC X(150).

02 INPT2-REC.

49 INPT2-LEN PIC S9(4) COMP.
49 INPT2-TEXT PIC X(150).

77 VAR1 PIC X(5) VALUE 'APT'.

77 NUM1 PIC 9(1).

我在此处使用 49 级字符变化(截断尾随空格)

然后我有游标获取。

经过 PROCEDURE DIVISION下的几处修改我正在做下面的事情。
PERFORM UNTIL SQLCODE=100

PERFORM VARYING NUM1 FROM 1 BY 1 UNTIL NUM1=6

STRING INPT-REC DELIMITED BY ' ',' ',
VAR1 DELIMITED BY ' ',' '
NUM1 DELIMITED BY ' ' INTO INPT2-REC

EXEC SQL

insert query here (which will run 5 times)

END-EXEC

END- PERFORM

END- PERFORM

但是在表中,数据只插入了一次,但实际上已经插入了 5 次,还有 INPT2-REC尚未连接。 INPT2 -REC仅包含 INPT-REC 的值独自的

我的问题是这是 49 级的一个特殊特征还是我哪里错了?

最佳答案

请注意,如果您使用 INPT-REC2作为 VARCHAR 的宿主变量-field 你只会看到来自 INPT-REC 的部分因为你从不更新长度字段:它仍然包含它从 INPT-REC 分配的长度.

所以你必须以某种方式获得 INPT2-TEXT 的实际长度(例如 INSPECT REVERSEINPT2-TEXT 用于 LEADING SPACES )并将其移动到 INPT2-LENGTH在您之前 EXEC SQL .

正如我在评论中已经说过的:级别 49 没有什么特别之处。 - 你也可以使用 48 , 33 , 3005结果相同。 DB2 手册中的示例可能使用 49因为它是最后一个有效的级别号,没有任何特殊意义,所以它最不可能导致程序中已经使用的任何级别号出现问题。

至于只执行一次的查询:在你的循环中你正在改变 NUM1但正在检查是否I=6 - 因为我们没有看到 I在您的示例中的任何地方,我只能猜测它在进入循环时已经等于 6。

关于cobol - 级别 49 可以用于 STRING 目的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com