【问题标题】:Message MCH1202 in PROGRAM in LIBRARY (C D F G)Message MCH1202 in PROGRAM in LIBRARY (C D F G)
【发布时间】:2022-04-06 02:52:39
【问题描述】:

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?

    标签: ibm-midrange cobol


    【解决方案1】:

    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.

      【解决方案2】:

      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. 
      
        【解决方案3】:

        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)".

        • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
        猜你喜欢
        • 1970-01-01
        • 2022-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-04-20
        • 2022-12-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多