COBOL中如何取得一个字符串长度
比如说01INDATAPICX(200).01LENGTHPICX(004).入例的长度是不同的,我要把INDATA的实际长度判断出来并且MOVE到LENGTH里LENG...
比如说
01 INDATA PIC X(200).
01 LENGTH PIC X(004).
入例的长度是不同的,我要把INDATA的实际长度判断出来并且MOVE到LENGTH里
LENGTHOF不能用..因为返回的是变量定义的长度.
PERFORM VARYING IX FROM 1 BY 1 UNTIL IX>200
IF ( INDATA(IX:1) NOT = SPACE )
THEN
ADD 1 TO WK-COUNT1
ADD WK-COUNT2 TO WK-COUNT2
MOVE ZERO TO WK-COUNT2
ELSE
ADD 1 TO WK-COUNT2
END-IF
END-PERFORM. 展开
01 INDATA PIC X(200).
01 LENGTH PIC X(004).
入例的长度是不同的,我要把INDATA的实际长度判断出来并且MOVE到LENGTH里
LENGTHOF不能用..因为返回的是变量定义的长度.
PERFORM VARYING IX FROM 1 BY 1 UNTIL IX>200
IF ( INDATA(IX:1) NOT = SPACE )
THEN
ADD 1 TO WK-COUNT1
ADD WK-COUNT2 TO WK-COUNT2
MOVE ZERO TO WK-COUNT2
ELSE
ADD 1 TO WK-COUNT2
END-IF
END-PERFORM. 展开
1个回答
展开全部
定义数组从后面往前看,第一个不为空格的数据停,所处的位置就是这条数据的长度
01 INDATA PIC X(200).
01 WK-DATA.
05 WK-DATA-B PIC X(001) OCCURS 200
01 I PIC 9(004).
01 FLG PIC X(001) VALUE '0'
MOVE INDATA TO WK-DATA
MOVE 200 TO I
PERFORM UNTIL I = 0 OR FLG = 1
IF WK-DATA-B(I) NOT = SPACE
COMPUTER I = I - 1
END-IF
END-PERFORM
MOVE I TO LENGTH
01 INDATA PIC X(200).
01 WK-DATA.
05 WK-DATA-B PIC X(001) OCCURS 200
01 I PIC 9(004).
01 FLG PIC X(001) VALUE '0'
MOVE INDATA TO WK-DATA
MOVE 200 TO I
PERFORM UNTIL I = 0 OR FLG = 1
IF WK-DATA-B(I) NOT = SPACE
COMPUTER I = I - 1
END-IF
END-PERFORM
MOVE I TO LENGTH
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询