gpt4 book ai didi

xml - Cobol xml 解析出现异常

转载 作者:数据小太阳 更新时间:2023-10-29 02:55:41 28 4
gpt4 key购买 nike

Cobol xml 解析抛出异常 +000528897

从文件中读取 xml 甚至在“工作存储”中声明为字符串数组的 xml

Cobol 解析命令:

XML 解析 XML 字符串过程 XML 处理程序

抛出异常 +000528897

我检查了 xml 是否格式正确(在浏览器中显示)并且没问题

enter image description here

我在从文件中读取 xml 字符串并将所有行连接成一个长字符串后显示

enter image description here

我们正在使用 Cobol 5.2

编译器选项 -> xmlparse(xmlss)

如果我将选项更改为 xmlparse(compat),则异常为 72

这是 Cobol 源代码

IDENTIFICATION DIVISION.
PROGRAM-ID. TDXMLTST.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
*************************
FILE-CONTROL.
SELECT XMLDATA ASSIGN TO XMLFILE.
DATA DIVISION.
FILE SECTION.
*=================================================================
FD XMLDATA
RECORDING MODE IS F
LABEL RECORD STANDARD
DATA RECORD IS XMLREC.
01 XMLREC PIC X(80).
WORKING-STORAGE SECTION.
******************************************************************
* XML DOCUMENT, ENCODED AS INITIAL VALUES OF DATA ITEMS. *
******************************************************************
01 NOT-EOF PIC X(01) VALUE 'N'.
01 I-FROM PIC S9(4) COMP VALUE 0.
01 XML-STRING PIC X(1000) VALUE SPACES.
01 EZ-PTR PIC S9(4) COMP VALUE 1.
******************************************************************

******************************************************************
* SAMPLE DATA DEFINITIONS FOR PROCESSING NUMERIC XML CONTENT. *
******************************************************************

1 CURRENT-ELEMENT PIC X(30).
1 LIST-PRICE COMPUTATIONAL PIC 9V99 VALUE 0.
1 DISCOUNT COMPUTATIONAL PIC 9V99 VALUE 0.
1 DISPLAY-PRICE PIC $$9.99.

PROCEDURE DIVISION.
MAINLINE SECTION.
PERFORM READ-XML-FILE
DISPLAY 'XML-DOCUMENT=' XML-STRING(1:EZ-PTR)
XML PARSE XML-STRING(1:EZ-PTR)
PROCESSING PROCEDURE XML-HANDLER
ON EXCEPTION
DISPLAY 'XML DOCUMENT ERROR ' XML-CODE
NOT ON EXCEPTION
DISPLAY 'XML DOCUMENT SUCCESSFULLY PARSED'
END-XML

******************************************************************
* PROCESS THE TRANSFORMED CONTENT AND CALCULATE PROMO PRICE. *
******************************************************************

DISPLAY ' '
DISPLAY '-----+++++***** USING INFORMATION FROM XML '
'*****+++++-----'
DISPLAY ' '
MOVE LIST-PRICE TO DISPLAY-PRICE
DISPLAY ' SANDWICH LIST PRICE: ' DISPLAY-PRICE
COMPUTE DISPLAY-PRICE = LIST-PRICE * (1 - DISCOUNT)
DISPLAY ' PROMOTIONAL PRICE: ' DISPLAY-PRICE
DISPLAY ' GET ONE TODAY!'
GOBACK.

MAINLINE-EXIT. EXIT.

READ-XML-FILE SECTION.

OPEN INPUT XMLDATA
PERFORM UNTIL NOT-EOF = 'Y'
READ XMLDATA
AT END MOVE 'Y' TO NOT-EOF
END-READ
IF NOT-EOF = 'N' THEN
PERFORM VARYING I-FROM
FROM 72
BY -1
UNTIL XMLREC(I-FROM:1) NOT = ' '
END-PERFORM

STRING XMLREC(1:I-FROM) DELIMITED BY SIZE
INTO XML-STRING
WITH POINTER EZ-PTR
END-STRING

DISPLAY 'EZ-PTR=' EZ-PTR
END-IF
END-PERFORM
CLOSE XMLDATA
.

READ-XML-FILE-EXIT. EXIT.

XML-HANDLER SECTION.
DISPLAY 'XML-EVENT=' XML-EVENT
EVALUATE XML-EVENT

* ==> ORDER XML EVENTS MOST FREQUENT FIRST
WHEN 'START-OF-ELEMENT'
DISPLAY 'START ELEMENT TAG: <' XML-TEXT '>'
MOVE XML-TEXT TO CURRENT-ELEMENT
WHEN 'CONTENT-CHARACTERS'
DISPLAY 'CONTENT CHARACTERS: <' XML-TEXT '>'

* ==> TRANSFORM XML CONTENT TO OPERATIONAL COBOL DATA ITEM...
EVALUATE CURRENT-ELEMENT
WHEN 'LISTPRICE'

* ==> USING FUNCTION NUMVAL-C...
COMPUTE LIST-PRICE = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'DISCOUNT'
COMPUTE DISCOUNT = FUNCTION NUMVAL-C(XML-TEXT)
END-EVALUATE
WHEN 'END-OF-ELEMENT'
DISPLAY 'END ELEMENT TAG: <' XML-TEXT '>'
MOVE SPACES TO CURRENT-ELEMENT
WHEN 'START-OF-DOCUMENT'
COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH(XML-TEXT)
DISPLAY 'START OF DOCUMENT: LENGTH=' XML-DOCUMENT-LENGTH
' CHARACTERS.'
WHEN 'END-OF-DOCUMENT'
DISPLAY 'END OF DOCUMENT.'
WHEN 'VERSION-INFORMATION'
DISPLAY 'VERSION: <' XML-TEXT '>'
WHEN 'ENCODING-DECLARATION'
DISPLAY 'ENCODING: <' XML-TEXT '>'
WHEN 'STANDALONE-DECLARATION'
DISPLAY 'STANDALONE: <' XML-TEXT '>'
WHEN 'ATTRIBUTE-NAME'
DISPLAY 'ATTRIBUTE NAME: <' XML-TEXT '>'
WHEN 'ATTRIBUTE-CHARACTERS'
DISPLAY 'ATTRIBUTE VALUE CHARACTERS: <' XML-TEXT '>'
WHEN 'ATTRIBUTE-CHARACTER'
DISPLAY 'ATTRIBUTE VALUE CHARACTER: <' XML-TEXT '>'
WHEN 'START-OF-CDATA-SECTION'
DISPLAY 'START OF CDATA: <' XML-TEXT '>'
WHEN 'END-OF-CDATA-SECTION'
DISPLAY 'END OF CDATA: <' XML-TEXT '>'
WHEN 'CONTENT-CHARACTER'
DISPLAY 'CONTENT CHARACTER: <' XML-TEXT '>'
WHEN 'PROCESSING-INSTRUCTION-TARGET'
DISPLAY 'PI TARGET: <' XML-TEXT '>'
WHEN 'PROCESSING-INSTRUCTION-DATA'
DISPLAY 'PI DATA: <' XML-TEXT '>'
WHEN 'COMMENT'
DISPLAY 'COMMENT: <' XML-TEXT '>'
WHEN 'EXCEPTION'
* COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH (XML-TEXT)
DISPLAY 'EXCEPTION ' XML-CODE ' AT OFFSET '
EZ-PTR '.'
MOVE -1 TO XML-CODE
MOVE 16 TO RETURN-CODE
WHEN OTHER
DISPLAY 'UNEXPECTED XML EVENT: ' XML-EVENT '.'
END-EVALUATE
.

XML-HANDLER-EXIT. EXIT.

XML 文档错误 +000528897

最佳答案

您有一个 CCSID 问题,可以通过以下任一方式解决...

  • 通过您的商店接受的任何方法将 CODEPAGE(1140) 添加到您的编译选项
  • ENCODING 1140 短语添加到您的 XML PARSE 语句中

当使用 XMLPARSE(COMPAT) 编译选项(“ native COBOL”解析器)时,XML-CODE 值 72 是 documented作为...

The actual document encoding was EBCDIC, the CODEPAGE compiler optiondid not specify a supported EBCDIC code page, and the document did notcontain an encoding declaration.

当使用 XMLPARSE(XMLSS) 编译选项(z/OS XML 系统服务解析器)时,XML-CODE 值为 concatenation XML Return Code 和 XML Reason Code,各为一个半字。十进制 +000528897 是 x'81201',所以 XML 原因代码是 1201,XML 返回代码是 8。返回代码 8 是 documented作为带有注释的“XRC_FAILURE”...

Processing failed. Returned data areas and parms valid.

...原因代码 1201 是 documented作为...

XRSN_PARM_ENCODING_SPEC_INVALID The ccsid passed is not supported.Action: The CCSID parameter on the call to GXL1INI or GXL4INI is notone of the supported character encodings. Pass only permitted CCSIDparameters. See the documentation of the GXL1INI service for supportedccsid constants.

关于xml - Cobol xml 解析出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57290906/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com