程序库中的程序中的消息 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)”。
我在调用程序 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)”。