Search code examples
mainframe

How to convert Text into Numeric in Mainframe


I need to convert Numbers stored as Text datatype(left aligned) ranging from 2 to 4 digits to Numeric format(Right aligned) in Mainframes.

For eg,

Field1(Text left aligned)         Field2(Numeric Right aligned)
---------------------------------------------------------------
1000                                       1000           
11                                           11     
200                                         200 

Can use SORT EZTRIEVE COBOL.


Solution

  • For a COBOL solution, try using UNSTRING and a JUSTIFIED RIGHT receiving field. Here is an example program (IBM Enterprise COBOL) to illustrate.

      IDENTIFICATION DIVISION.                       
        PROGRAM-ID. EXAMPLE1.                        
      DATA DIVISION.                                 
      WORKING-STORAGE SECTION.                       
      01  SOURCE-DATA       PIC X(4).                
      01  DEST-DATA         PIC X(4) JUSTIFIED RIGHT. 
      PROCEDURE DIVISION.                            
          MOVE '123' TO SOURCE-DATA                  
          UNSTRING SOURCE-DATA DELIMITED BY SPACE    
              INTO DEST-DATA                         
          DISPLAY 'SOURCE >' SOURCE-DATA '<'         
          DISPLAY 'DEST   >' DEST-DATA '<'           
    
          MOVE '1' TO SOURCE-DATA                    
          UNSTRING SOURCE-DATA DELIMITED BY SPACE 
              INTO DEST-DATA                         
          DISPLAY 'SOURCE >' SOURCE-DATA '<'         
          DISPLAY 'DEST   >' DEST-DATA '<'           
          GOBACK                                     
          .  
    

    The output from this program is:

    SOURCE >123 <    
    DEST   > 123<    
    SOURCE >1   <    
    DEST   >   1<