【发布时间】:2018-09-17 12:01:30
【问题描述】:
我正在尝试将用“;”分隔的输入行解串成一个数组。但我无法在第一个“;”之后显示每个单词。
基本上,输入:Hello;Stack;Overflow
输出:值:2(因为有 2 个分号)
我的记录表第一行:你好
我的记录表的第 2 行:堆栈
我的记录表第 3 行:溢出
到目前为止我的代码:
*-------------------------------------------------------------
LINKAGE SECTION.
01 X-INPUT-LINE PIC X(2000).
01 X-SEP-CHAR PIC X(1).
01 X-RET-TABLE.
02 CMAX PIC 9(5) COMP-3.
02 ENTRY-REC OCCURS 0 TO 9999 TIMES DEPENDING ON CMAX
INDEXED BY CIDX.
04 ENTRY-REC2.
07 LINEVALUE PIC X(100).
PROCEDURE DIVISION USING X-INPUT-LINE
X-SEP-CHAR
X-RET-TABLE.
MAIN SECTION.
MN-00.
INITIALIZE WERT.
INSPECT X-INPUT-LINE TALLYING WERT FOR ALL
X-SEP-CHAR.
MOVE X-INPUT-LINE TO VAL.
ADD 1 TO WERT.
PERFORM WERT TIMES
MOVE WERT TO LINEVALUE OF X-RET-TABLE (WERT)
UNSTRING VAL DELIMITED BY ";"
INTO STRVAL
END-UNSTRING
IF CMAX OF X-RET-TABLE < 9999
ADD 1 TO CMAX OF X-RET-TABLE
MOVE STRVAL TO ENTRY-REC(CMAX OF X-RET-TABLE)
END-IF
END-PERFORM.
使用下面的代码,我只能在示例中显示“Hello”,程序在 3 个不同的行中显示 3 次。
【问题讨论】:
-
请提供minimal reproducible example,最好是可编译的...
标签: arrays string input record cobol