我刚刚学习COBOL; 我正在写一个简单回应用户输入的程序.我已将变量定义为:
User-Input PIC X(30).
Run Code Online (Sandbox Code Playgroud)
稍后,当我接受用户输入,然后显示用户输入"加上一些额外的文本"时,它有一堆空格来填充30个字符.是否有标准方法(如Ruby的str.strip!)来删除多余的空格?
人们希望能够以更优雅的方式简单地修剪文本字符串,但这几乎是标准解决方案......修剪部分在SHOW-TEXT段落中完成.
*************************************
* TRIM A STRING... THE HARD WAY...
*************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTX.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-INPUT PIC X(30).
01 I PIC S9(4) BINARY.
PROCEDURE DIVISION.
MOVE SPACES TO USER-INPUT
PERFORM SHOW-TEXT
MOVE ' A B C' TO USER-INPUT
PERFORM SHOW-TEXT
MOVE 'USE ALL 30 CHARACTERS -------X' TO USER-INPUT
PERFORM SHOW-TEXT
GOBACK
.
SHOW-TEXT.
PERFORM VARYING I FROM LENGTH OF USER-INPUT BY -1
UNTIL I LESS THAN 1 OR USER-INPUT(I:1) NOT = ' '
END-PERFORM
IF I > ZERO
DISPLAY USER-INPUT(1:I) '@ OTHER STUFF'
ELSE
DISPLAY '@ OTHER STUFF'
END-IF
.
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
@ OTHER STUFF
A B C@ OTHER STUFF
USE ALL 30 CHARACTERS -------X@ OTHER STUFF
Run Code Online (Sandbox Code Playgroud)
请注意,PERFORM VARYING语句依赖于UNTIL子句的从左到右的评估,以避免在USER-INPUT仅包含空格的情况下对USER-INPUT进行越界预订.
| 归档时间: |
|
| 查看次数: |
23959 次 |
| 最近记录: |