程序库中的程序中的消息 MCH1202 (C D F G)

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

我在调用程序 CALCULADOR 时收到 MCH1202 消息。

但我已经尝试更改类型数据的精度,但仍然显示相同的消息。

我是cobol和IBMi的新手,不知道怎么会出现这个错误,因为在WRKSPLF中没有出现。

这是我的代码:

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                                           

这是执行消息:

                          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
                                                                           

按“G”returns 相同的消息。如何调试此错误?

MCH1202 - 十进制数据错误...

意思是你在应该是数字列(或你的情况下的变量)中有字符数据(可能是空格 x'40')。

如果您要在调试中查看变量,您会看到 '1 ' --> x'F140404040'

我使用 COBOL 已经 20 年了,而且我从未在 AS/400...

上使用过

但我认为问题在于您正在接受直接放入数字变量的输入。如果你使用 00100 因为你的变量是用两位小数定义的,它可能会工作得很好。在十六进制中你会看到 x'F0F0F1F0F0'.

或者,将输入读入字符变量并转换为数字。

将基于字符的输入分配给我猜是分区十进制数据类型时,您可以使用 TRIM 函数。

        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. 

最佳解决方案是使用 ILE COBOL,STRSEU 命令中的一种 CBLLE 类型。此类型在 sintaxis 中接受 TRIM 函数关键字作为“FUNCTION TRIM(VARIABLE)”。