| View previous topic :: View next topic   | 
	
	
	
		| Author | 
		Message | 
	
	
		jathampy Beginner
 
  Joined: 21 Dec 2007 Posts: 18 Topics: 7 Location: UK
  | 
		
			
				 Posted: Wed Aug 02, 2023 11:13 am    Post subject: Convert external floating point number to COMP-2 | 
				     | 
			 
			
				
  | 
			 
			
				I have an input file that contain amount fields in exponential form like "-2.2204462782314e-16". I want to convert this into COMP-2 format. 
 
 
Tried NUMVAL-F  intrinsic function  and the cobol compiler (Z/OS 4.2.0) giving compilation error "expected a function name, but found NUMVAL-F". However NUMVAL and NUMVAL-C intrinsic functions are working.
 
 
Any idea how to convert the exponential representation of numbers to COMP-2 internal floating point ? | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		kolusu Site Admin
  
 
  Joined: 26 Nov 2002 Posts: 12395 Topics: 75 Location: San Jose
  | 
		
			
				 Posted: Wed Aug 02, 2023 5:08 pm    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				jathampy, 
 
 
Try this 
 
 
 	  | Code: | 	 		  
 
WORKING-STORAGE SECTION.                              
 
01 WS-INP-FLNUM                PIC +V9(16)E+99 GLOBAL.
 
01 WS-INP-FLCHAR     REDEFINES WS-INP-FLNUM.          
 
   05 A                        PIC X(20).             
 
01 WS-OUT-FL                   COMP-2.                
 
                                                      
 
PROCEDURE DIVISION.                                   
 
      MOVE "-2.2204462782314E-16"         TO A.       
 
      DISPLAY 'CHAR VALUE : ' A                       
 
      MOVE WS-INP-FLNUM TO WS-OUT-FL                  
 
      DISPLAY 'COMP VALUE : ' WS-OUT-FL               
 
      GOBACK.                                         
 
 | 	  
 
 
Result from 6.xx compiler
 
 	  | Code: | 	 		  
 
CHAR VALUE : -2.2204462782314E-16    
 
COMP VALUE : -.22204462782314002E-15 
 
 | 	 
  _________________ Kolusu 
 
www.linkedin.com/in/kolusu | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		jathampy Beginner
 
  Joined: 21 Dec 2007 Posts: 18 Topics: 7 Location: UK
  | 
		
			
				 Posted: Sat Aug 05, 2023 3:47 am    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Thanks Kolusu for providing the solution. I tried the solution but job failed with
 
 	  | Quote: | 	 		  | "IGZ0040S An invalid separate sign was detected in program" | 	   while executing the move statement    " MOVE WS-INP-FLNUM  TO WS-OUT-FL"
 
 
We are using the old cobol compiler (Z/OS 4.2.0) and this will be upgraded only next year post Z/OS upgrade. | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		kolusu Site Admin
  
 
  Joined: 26 Nov 2002 Posts: 12395 Topics: 75 Location: San Jose
  | 
		
			
				 Posted: Thu Aug 10, 2023 10:06 am    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				jathampy, 
 
 
Can you give this a try ?
 
 	  | Code: | 	 		  
 
WORKING-STORAGE SECTION.                              
 
01 WS-INP-FLNUM                PIC +V9(16)E+99 GLOBAL.
 
01 WS-INP-FLCHAR     REDEFINES WS-INP-FLNUM.          
 
   05 A                        PIC X(21).             
 
01 WS-OUT-FL                   COMP-2.                
 
 
PROCEDURE DIVISION.                            
 
 
    MOVE "-2.2204462782314E-16"         TO A.  
 
    DISPLAY 'CHAR VALUE A : ' A                
 
 
    COMPUTE WS-OUT-FL  = FUNCTION NUMVAL-F(A)  
 
    DISPLAY "COMP-2 Value is : " WS-OUT-FL             
 
 | 	 
  _________________ Kolusu 
 
www.linkedin.com/in/kolusu | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		jathampy Beginner
 
  Joined: 21 Dec 2007 Posts: 18 Topics: 7 Location: UK
  | 
		
			
				 Posted: Mon Aug 14, 2023 9:29 am    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				I tried NUMVAL-F before also and it's not working. The Other intrinsic functions NUMVAL and NUMVAL-C are working fine with the compiler version 4.2.0 V4R2 . When I use NUMVAL-F,it's giving compilation error:
 
 
 	  | Code: | 	 		  | IGYPS2130-S   Expected a function-name, but found "NUMVAL-F".  The "COMPUTE" statement was discarded. | 	 
  | 
			 
		  | 
	
	
		| Back to top | 
		 | 
	
	
		  | 
	
	
		| 
		
		 | 
	
	
		 |