NumberFormatException upon Reading from a Cobol COMP-3 Numeric Variable in Java
(Doc ID 1584089.1)
Last updated on MARCH 15, 2019
Applies to:Oracle Utilities Framework - Version 126.96.36.199.0 and later
Information in this document applies to any platform.
NumberFormatException is raised while getting information of a Cobol COMP-3 numeric variable in Java. The value of a specific copybook variable (declared as follows) is retrieved during a Java development:
03 DETTE PIC CI-CONST-MAX-AMT-STORE.
CI-CONST-MAX-AMT-STORE is a standard constant declared as a compressed signed decimal value ( S9(13)V9(2) COMP-3 ). In Java after generating artifacts, method get_DETTE() is used which returns a BigInteger value. But at execution, the program fails with a NumberFormatException. It is suspected to be a problem with artifacts generation - the returned class would be BigDecimal and not BigInteger.
The issue can be reproduced at will with the following steps:
To call a Cobol process from the Java service:
1. Create CobolCopybookCMCBCDTN_Impl class and its associated cobol program.
2. Use these in the Java service (CMMPRMAINIPageMaintenance.java) to retrieve an output variable ("DETTE") which is the value needed for use in Java.
3. This variable is declared as "S9(13)V9(2) COMP-3".
4. Generate the artifacts to create all dependences.
5. Deploy and execute the program.
6. When it executes the command "vCobolCopybookCMCBCDTN.get_OUTPUT_WRK().get_DETTE()", the NumberFormatException is raised.
Why is this error raised and is there a solution or workaround?
To view full details, sign in with your My Oracle Support account.
Don't have a My Oracle Support account? Click to get started!
In this Document