我有以下代码:
01 W-IX1 PIC 9(8) VALUE ZERO COMP-4.
01 W-INPUT-AMNT PIC 9(9)V9(5).
01 W-ROUNDED-AMNT PIC Z(9).
01 W-TEMP-AMNT PIC X(9).
01 W-OUTPUT-AMNT PIC X(9).
MOVE 123.92345 TO W-INPUT-AMNT.
MOVE 1 TO W-IX1.
COMPUTE W-ROUNDED-AMNT ROUNDED = W-INPUT-AMNT * 1.
MOVE W-ROUNDED-AMNT TO W-TEMP-AMNT.
INSPECT W-TEMP-AMNT TALLYING W-IX1 FOR LEADING SPACES.
MOVE W-TEMP-AMNT(W-IX1:) TO W-OUTPUT-AMNT.
DISPLAY "RESULT:" W-OUTPUT-AMNT ":".
MOVE SPACE TO W-OUTPUT-AMNT.
以及以下输出:
RESULT:124 :
我的意图是接收以下输出:
RESULT:124:
非常感谢您的帮助。谢谢!
答案 0 :(得分:1)
添加另一个INSPECT
,并进行一些其他更改,应该是所有必要的操作。
01 W-IX2 PIC 9(8) VALUE ZERO COMP-4.
MOVE 0 TO W-IX2
INSPECT W-OUTPUT-AMNT TALLYING
W-IX2 FOR CHARACTERS BEFORE SPACE.
DISPLAY "RESULT:" W-OUTPUT-AMNT(1:W-IX2) ":".
输出:
RESULT:124:
答案 1 :(得分:1)
最简单的方法是从字段末尾倒数到第一个非空格字符。
Preform varying NDX from length of W-OUTPUT-AMT by -1
until W-OUTPUT-AMT (NDX:1) <> SPACE
DISPLAY "RESULT:" W-OUTPUT-AMNT (1:NDX) ":".
答案 2 :(得分:0)
如果您愿意采用其他方法,则UNSTRING
语句可以消除前导空格,使尾随空格无关,并方便地保存数字及其长度。
请注意,W-ROUNDED-AMNT
已更改为确保前导空格和至少一位数字。
WORKING-STORAGE SECTION.
01 W-IX1 PIC 9(8) VALUE ZERO COMP-4.
01 W-INPUT-AMNT PIC 9(9)V9(5).
01 W-ROUNDED-AMNT-X.
03 W-ROUNDED-AMNT PIC Z(9)9.
01 W-X PIC X.
01 W-OUTPUT-AMNT PIC X(9).
PROCEDURE DIVISION.
MOVE 123.92345 TO W-INPUT-AMNT.
COMPUTE W-ROUNDED-AMNT ROUNDED = W-INPUT-AMNT.
UNSTRING W-ROUNDED-AMNT-X DELIMITED ALL SPACE
INTO W-X W-OUTPUT-AMNT COUNT W-IX1
DISPLAY "RESULT:" W-OUTPUT-AMNT(1:W-IX1) ":".
MOVE SPACE TO W-OUTPUT-AMNT.
STOP RUN.
输出:
RESULT:124:
答案 3 :(得分:0)
不确定这不适用于所有编译器,但我使用以下结构删除尾随空格和/或计算字符串长度。想法是反转正在使用的字符串,然后确定前导空格的数量。从字符串的长度中减去该数字。 如果存在的话,这还将保留所有嵌入的空间。
WORKING-STORAGE SECTION.
01 W-IX1 PIC 9(8) VALUE ZERO COMP-4.
01 W-TRAIL PIC 9(8) VALUE ZERO COMP-4.
01 W-LENGTH PIC 9(8) VALUE ZERO COMP-4.
01 W-INPUT-AMNT PIC 9(9)V9(5).
01 W-ROUNDED-AMNT PIC Z(9).
01 W-TEMP-AMNT PIC X(9).
01 W-OUTPUT-AMNT PIC X(9).
PROCEDURE DIVISION.
MOVE 123.92345 TO W-INPUT-AMNT.
MOVE 1 TO W-IX1.
COMPUTE W-ROUNDED-AMNT ROUNDED = W-INPUT-AMNT * 1.
MOVE W-ROUNDED-AMNT TO W-TEMP-AMNT.
INSPECT W-TEMP-AMNT TALLYING W-IX1 FOR LEADING SPACES.
MOVE W-TEMP-AMNT(W-IX1:) TO W-OUTPUT-AMNT.
MOVE ZERO TO W-TRAIL.
INSPECT FUNCTION REVERSE (W-OUTPUT-AMNT)
TALLYING W-TRAIL
FOR LEADING SPACE.
SUBTRACT W-TRAIL
FROM LENGTH OF W-OUTPUT-AMNT
GIVING W-LENGTH.
DISPLAY "RESULT:" W-OUTPUT-AMNT(1:W-LENGTH) ":".
MOVE SPACE TO W-OUTPUT-AMNT.
STOP RUN.
答案 4 :(得分:0)
对于安装了APAR PI99703的Enterprise COBOL V6R2。您可以使用TRIM内部函数。
Identification division.
Program-id. TESTTRIM.
Data division.
Working-storage section.
1 msg pic x(20) value "Hello, World!!! ".
Procedure division.
Display ">>" msg "<<"
Display ">>" function trim(msg) "<<"
Goback.
输出为:
>>Hello, World!!! <<
>>Hello, World!!!<<