Reputation: 371
I get MCH1202 message when calling program CALCULADOR.
But I've tried to change the precision of type data, but remains the same message.
I'm novice in learning of cobol and IBMi, and I don't know how get this error because in WRKSPLF doesn't appear.
This is my code:
Columns . . . : 1 71 Browse REINALDO1/MODTLCOBOL
SEU==> CALCULADOR
FMT CB ......-A+++B+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*************** Beginning of data *************************************
0001.00 IDENTIFICATION DIVISION.
0002.00 PROGRAM-ID. CALCULADOR.
0003.00 ENVIRONMENT DIVISION.
0004.00 DATA DIVISION.
0005.00 WORKING-STORAGE SECTION.
0006.00 77 WKS-NUM-1 PIC 9(5)V99.
0007.00 77 WKS-NUM-2 PIC 9(5)V99.
0008.00 77 WKS-RESULTADO PIC 9(5)V99.
0009.00 77 WKS-RESULTADO2 PIC 9(5)V99.
0010.00 ***********************************************************
0011.00 *******CUERPO DEL PROGRAMA *
0012.00 ***********************************************************
0013.00 PROCEDURE DIVISION.
0014.00 DISPLAY "CALCULADORA".
0015.00 DISPLAY "INGRESE EL NUMERO 1:".
0016.00 ACCEPT WKS-NUM-1.
0017.00 DISPLAY "INGRESE EL NUMERO 2:".
0018.00 ACCEPT WKS-NUM-2.
0019.00 ADD WKS-NUM-1 TO WKS-NUM-2 GIVING WKS-RESULTADO.
0020.00 DISPLAY WKS-RESULTADO.
0021.00 SUBTRACT WKS-NUM-1 FROM WKS-NUM-2 GIVING WKS-RESULTADO.
0022.00 MULTIPLY WKS-NUM-1 BY WKS-NUM-2 GIVING WKS-RESULTADO.
0023.00 DISPLAY WKS-RESULTADO.
0024.00 DIVIDE WKS-NUM-1 INTO WKS-NUM-2 GIVING WKS-RESULTADO.
0025.00 DISPLAY WKS-RESULTADO.
0026.00 MOVE WKS-NUM-1 TO WKS-RESULTADO2.
0027.00 MOVE 15 TO WKS-RESULTADO.
0028.00 DISPLAY WKS-RESULTADO.
0029.00 DISPLAY WKS-RESULTADO2.
0030.00 STOP RUN.
****************** End of data ****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel
F16=Repeat find F24=More keys
And this is the execution messages:
Display Program Messages
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
Job 294321/REINALDO/QPAD124020 changed by JOBMANAGER.
CALCULADORA
INGRESE EL NUMERO 1:
CALCULADOR awaiting reply for position(s) 1 - 7.
1
INGRESE EL NUMERO 2:
CALCULADOR awaiting reply for position(s) 1 - 7.
2
Message MCH1202 in CALCULADOR in REINALDO1 (C D F G).
Type reply, press Enter.
Reply . . .
F3=Exit F12=Cancel
Pressing "G" returns same message. How could debug this error?
Upvotes: 2
Views: 1743
Reputation: 371
Best solution is to using ILE COBOL, a CBLLE type in STRSEU command. This type accepts TRIM function key word in sintaxis as "FUNCTION TRIM(VARIABLE)".
Upvotes: 0
Reputation: 2473
you can use the TRIM function when assigning character based input to what I guess is a zoned decimal data type.
77 WKS-CH1 PIC X(7).
77 WKS-CH2 PIC X(7).
77 WKS-NUM-1 PIC 9(5)V99.
77 WKS-NUM-2 PIC 9(5)V99.
77 WKS-RESULTADO PIC 9(5)V99.
77 WKS-RESULTADO2 PIC 9(5)V99.
PROCEDURE DIVISION.
DISPLAY "CALCULADORA".
DISPLAY "INGRESE EL NUMERO 1:".
ACCEPT WKS-CH1.
DISPLAY "INGRESE EL NUMERO 2:".
ACCEPT WKS-CH2.
MOVE FUNCTION TRIM(WKS-CH1) TO WKS-NUM-1.
MOVE FUNCTION TRIM(WKS-CH2) TO WKS-NUM-2.
ADD WKS-NUM-1 TO WKS-NUM-2 GIVING WKS-RESULTADO.
Upvotes: 1
Reputation: 23793
MCH1202 - Decimal Data error...
Meaning you've got character data (likely spaces x'40') in what is supposed to be a numeric column (or variable in your case).
If you were to view the variables in debug you would see
'1 '
--> x'F140404040'
It's been 20yrs since I used COBOL, and I never used in on an AS/400...
But I think the issue is that you're accepting input put directly into a numeric variable. If you used 00100
since your variables are defined with two decimal places, it would probably work just fine. In hex you'll see x'F0F0F1F0F0'
.
Alternatively, read the input into a character variable and convert to a number.
Upvotes: 2