2016-10-19 10 views
0

文字のascii値を取得するには、複数の方法が必要です。 さらに、すべての文字のASCII値の合計を取得する必要があります。 私は現在以下のものを持っており、個々の値が必要な最初のセクションについては問題なく使用できます 。 Cobolでこれを行う簡単な方法や機能があるかどうかを知りたいだけですか?Cobolで文字のASCII値を取得する簡単な方法

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 "" 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

メリッサについては、COBOLのマニュアルを参照してください。 1985年の規格以来、(実際の文字表現に関係なく)あなたが望むものを正確に行う固有の機能がありました。私たちはあなたのためのマニュアルを読むためにここにいません。 –

+0

あなたがexecers番号をcharacer_zeroに設定して26回追加すると、あなたの答えは正しくなりません。余分なパラグラフやフルストップ/ピリオドがたくさんあります。あなたはそれを教えられていますか? –

+0

はい私はそれを教えられています。あなたが従っている別の標準はありますか?私は余分なゼロを取り出した。ありがとう。 –

答えて

0

は(なぜフルASCII EBCDICであってもなくてもよい)を使用すると、プログラムの照合順序で序数を取得することFUNCTION ORDを見てくださいと心に留めておきます。

この関数はCOBOL85標準で導入されたため、ほとんどのコンパイラで使用できるはずです(ご使用のコンパイラ/マシンが不足しています)。

関連する問題