reymagnus
reymagnus

Reputation: 371

Message MCH1202 in PROGRAM in LIBRARY (C D F G)

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

Answers (3)

reymagnus
reymagnus

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

RockBoro
RockBoro

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

Charles
Charles

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

Related Questions