从cobol输入中删除空格的标准方法?

Sha*_*off 6 cobol gnucobol

我刚刚学习COBOL; 我正在写一个简单回应用户输入的程序.我已将变量定义为:

User-Input PIC X(30).
Run Code Online (Sandbox Code Playgroud)

稍后,当我接受用户输入,然后显示用户输入"加上一些额外的文本"时,它有一堆空格来填充30个字符.是否有标准方法(如Ruby的str.strip!)来删除多余的空格?

Nea*_*alB 6

人们希望能够以更优雅的方式简单地修剪文本字符串,但这几乎是标准解决方案......修剪部分在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进行越界预订.