EGL 라이브러리 XMLLib
이 주제에서는 XMLLib 함수와 변수 정의에 대해 설명합니다.
다음 표에 XMLLib 라이브러리의 시스템 함수가 나열되어 있습니다.
| 시스템 함수 및 호출 | 설명 |
|---|---|
| convertFromXML (XMLstring in, variable out) | XML 문자열을 비구조화 레코드로 변환합니다. |
| result = convertToXML (variable in) | 비구조화 레코드를 XML 문자열로 변환합니다. |
COBOL 생성에 대한 호환성 고려사항 및 제한사항:
- 모든 시스템:
- EGL 언어는 XMLLib의 함수에 유동 레코드만 전달합니다. 디버거, JavaGen 또는 RUI는 XMLLib 함수에 대한 인수로 구조 레코드를 지원하지 않습니다. 따라서 CobolGen도 이러한 구조 레코드를 지원하지 않습니다. 이 제한사항을 피하기 위해 항상 구조 레코드로부터 호환 가능한 유동 레코드를 작성할 수 있으며, move byName문을 수행하여 데이터를 이동할 수 있습니다.
- 디버거, JavaGen 및 RUI는 Any 유형의 필드를 XMLLib 함수로 전달하도록 처리할 수 있지만 CobolGen은 이를 처리할 수 없습니다. 이는 CobolGen의 경우 생성기에서 전달할 EGL 레코드에 특정한 COBOL 코드를 생성해야 하기 때문입니다. 이 때문에 Any 유형의 필드를 함수 인수로 전달할 수 없게 됩니다.
- EGL은 문자열, 문자, 기타 기본 유형 또는 레코드의 동적 배열을 지원합니다. 하지만 EGL은 복수 레벨의 동적 배열은 지원하지 않습니다. 이는 사용자가 해당 레코드 내의 요소도 동적 배열인 레코드의 동적 배열을 코드할 수 없음을 의미합니다.
- 유동 레코드에서 동적 배열을 사용하는 경우 기본 항목 수는 100입니다. 동적 배열에 대한 초기 크기가 지정되어 있고 동적 배열에 대한 maxSize 어노테이션을 통해 대체하지 않은 경우 해당 크기가 사용됩니다. MaxSize가 크기에 대한 첫 번째 선택사항으로 사용되고, 두 번째로는 초기 크기가 사용되며, 그 다음에 기본값인 100이 사용됩니다. COBOL 컴파일러의 경우 고정 길이 COBOL 구조를 작성해야 하기 때문에 생성기는 크기를 알아야 합니다.
- 유동 레코드에서 문자열을 사용하고 maxLen 어노테이션이 지정되어 있지 않은 경우 기본 길이는 256자입니다. MaxLen이 최대 크기에 대한 첫 번째 선택사항으로 사용되고, 그 다음에 기본값인 256이 사용됩니다. COBOL 컴파일러의 경우 고정 길이 COBOL 구조를 작성해야 하기 때문에 생성기는 길이를 알아야 합니다.
- XMLLib 함수에서 작성되거나 사용되는 문자열의 최대 크기는 32767자입니다. 하지만 기호 매개변수인 MAXIMUMSTRINGSIZE는 허용되는 최대 길이를 겹쳐쓸 수 있습니다. 따라서 필요한 경우에는 더 큰 크기를 사용할 수 있습니다. 이 작업은 기호 매개변수를 사용하여 생성되는 모든 문자열의 최대 크기에 영향을 미칩니다. 기본적으로 이 작업은 COBOL 컴파일러 작업 영역 및 프로그램 로드 모듈의 크기에 영향을 미칠 수 있습니다. 또한 큰 문자열을 다른 프로그램으로 전달하는 경우 해당 프로그램에도 증가된 MAXIMUMSTRINGSIZE가 필요합니다. 이렇게 하지 않을 경우 사용 시 문자열 데이터의 일부가 잘릴 수 있습니다.
- 해당 레코드가 최상위 레벨에서 발생하는 경우 전달할 유동 레코드의 일부로 동일한 레코드가 두 번 이상 발생하도록 정의할 수 있습니다. 하지만 임베디드 레코드의 일부로는 동일한 레코드가 두 번 이상 발생하도록 정의할 수 없습니다.
- Rational Business Developer는 @XMLRootElement, @XMLElement 및 @XMLAttribute와 같은 EGL 어노테이션을 지원합니다(iSeries의 경우 속성에 대한 다음 제한사항을 참조하십시오).
- @XMLRootElement, @XMLElement 및 @XMLAttribute 어노테이션은 Name 어노테이션 하위 값을 지원합니다. Name 어노테이션의 하위 값이 정의되어 있는 경우 해당 값이 사용됩니다. 그렇지 않은 경우 필드 이름이 대문자로 변환되지 않고 그대로 사용됩니다.
- iSeries 시스템:
- convertToXML 함수를 사용하는 경우 iSeries COBOL 컴파일러는 속성 인수를 지원하지 않습니다. 이는 XML을 작성할 때 XML에 작성한 모든 xxx="..." 속성이 발생하지 않음을 의미합니다. 하지만 EGL에서 생성된 COBOL 소스는 수신되는 모든 속성을 지원합니다. 이는 convertFromXML 함수가 iSeries COBOL에서 지원할 수 없는 경우에도 XML의 속성을 지원함을 의미합니다.