在Cobol中获取字符的ASCII值的简单方法是什么

时间:2016-10-19 09:47:52

标签: cobol

我们必须找到多种方法来获取角色的ascii值。 最重要的是,我们还需要得到所有字符的ascii值的总和。 我目前有以下内容,并且对于需要单个值的第一部分工作正常 。 我只需要知道在Cobol中是否有更简单的方法或功能吗?

DATA DIVISION.                                                 
FILE SECTION.                                                  

WORKING-STORAGE SECTION.                                       
01  WS-COUNTERS.                                               
    03  WS-COUNTER                  PIC  9(05).                
    03  WS-INPUT                    PIC  X(01).                
    03  WS-DISPLAY                  PIC  9(03).                

01  W1-ARRAY.                                                  
    03  ALPHABETIC-CHARS OCCURS 26 TIMES PIC X.                

01  W3-ARRAY.                                                  
    03  NUMERIC-CHARS OCCURS 26 TIMES PIC X.                   


PROCEDURE DIVISION.                                            
A000-MAIN SECTION.                                             
BEGIN.                                                         
    PERFORM B000-INITIALIZE.                                   
    PERFORM C000-PROCESS UNTIL WS-COUNTER > 26.                
    PERFORM D000-END.                                          

A099-EXIT.                                                     
    STOP RUN.                                                  

B000-INITIALIZE SECTION.                                       
    ACCEPT WS-INPUT.                                           
    MOVE "ABCDEFGHIJKLMNOPQRSTUVWXYZ" TO W1-ARRAY.             
    MOVE "01234567890000000000000000" TO W3-ARRAY.             
    MOVE 1 TO WS-COUNTER.                                      
    MOVE 0 TO WS-DISPLAY.                                      

B099-EXIT.                                                     
    EXIT.                                                      

C000-PROCESS SECTION.                                          
C001-BEGIN.                                                    
    IF WS-INPUT IS NUMERIC                                     
       IF NUMERIC-CHARS(WS-COUNTER) = WS-INPUT                 
          COMPUTE WS-DISPLAY = WS-COUNTER + 48 - 1             
       END-IF                                                  
    ELSE                                                       
       IF ALPHABETIC-CHARS(WS-COUNTER) = WS-INPUT              
          COMPUTE WS-DISPLAY = WS-COUNTER + 65 - 1             
       END-IF                                                  
    END-IF.                                                    

    ADD 1 TO WS-COUNTER.                                       


C099-EXIT.                                                     
    EXIT.                

1 个答案:

答案 0 :(得分:0)

查看FUNCTION ORD并记住,您将在程序的整理顺序中获得序号(为什么可能是EBCDIC或不是完整的ASCII)。

由于此函数是在COBOL85标准中引入的,因此大多数编译器都应该可以使用它(您的问题是错过了您使用的编译器/机器)。