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

What is an easy way to get the ASCII value of a character in 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.                

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

由于此函数是在 COBOL85 标准中引入的,因此它应该在大多数编译器中可用(您的问题遗漏了您使用的 compiler/machine)。