2009-11-04 25 views

Trả lời

8

Xây dựng một phân tích cú pháp toàn diện cho copybooks COBOL có một vài thách thức:

Copybooks được đưa vào chương trình COBOL trong giai đoạn thao tác văn bản của trình biên dịch. Nguồn bản sao của chính nó có thể không đầy đủ. Cách duy nhất để có được một nguồn hoàn chỉnh để phân tích cú pháp là bằng cách xử lý trước nó như thể nó đã được đưa vào một chương trình phần mềm COBOL. Thông thường copybooks được đưa vào một chương trình COBOL thông qua chỉ thị COPY. Đưa điều này lên có vẻ hơi vô nghĩa, nhưng hãy xem xét những điều sau đây:

1) Chỉ thị COPY đi kèm với tùy chọn THAY THẾ. Trên bề mặt, điều này có vẻ đơn giản, đủ để đối phó, nhưng một khi bạn nhận được vào các chi tiết nó sẽ trở nên rất "thú vị". Xem: COPY DIRECTIVE

2) Chỉ thị REPLACE. Chỉ thị này cũng có thể thao tác văn bản nguồn sau khi chỉ thị COPY đã thực hiện một chút. Xem: REPLACE DIRECTIVE

3) Bản sao lồng nhau. Điều này có thể không phải là khó chịu như trước đó hai nhưng giữ làm tổ trong tâm trí quá.

4) Cú pháp của chuỗi hình COBOL cũng cần phải cười. Hãy xem: Picture String Symbols

5) Trình phân tích cú pháp của bạn cũng sẽ cần phải xử lý các quy tắc tiếp tục COBOL. Xem: Continuation Lines, và tiếp tục của PSEUDO TEXT nói riêng.

Tôi không muốn ngăn cản bạn, nhưng phân tích COBOL không phải là một nhiệm vụ tầm thường. Trên mặt tươi sáng, nếu các sách chép tay của bạn có cấu trúc đơn giản chết, chúng có thể được thực hiện bằng cách sử dụng hàng loạt các biểu thức chính quy. Cách tiếp cận này khá phổ biến trong số những người cần phân tích các chương trình COBOL (và copybooks) về các dự án cải tiến phần mềm. Có lẽ có một cái nhìn tại địa chỉ: RegReg

Cheers ...

+0

Điều bạn cần là một giao diện người dùng phân tích cú pháp COBOL đầy đủ để làm điều này đúng. Xem http://www.semanticdesigns.com/Products/FrontEnds/COBOLFrontEnd.html –

2

Một thời gian dài trước đây, tôi đã xây dựng một số mã để phân tích cú pháp bản sao COBOL và tạo tệp XSD.

Vì cấu trúc ngôn ngữ COBOL là khá thường xuyên, tôi đã tạo biểu thức chính quy để nhận tên biến và xác định độ dài trường. Với cấu trúc được phân tích cú pháp đó, tôi cũng có thể tạo dữ liệu thử nghiệm XML, mã DOM MSXML để thao tác cấu trúc đó và các biểu mẫu HTML để kiểm tra các giao dịch IMS đó.

Dòng dưới cùng: biểu thức chính quy có thể thực sự hữu ích để thực hiện điều đó.

+0

cảm ơn gợi ý regex – lemotdit

0

phát triển Rational cho Z, XML Sấm, Syncsort ETL ... có rất nhiều sản phẩm mà sẽ làm điều này.

Thực sự, nếu bạn tìm hiểu các quy tắc về kiểu dữ liệu lược đồ, bạn có thể thực hiện điều đó rất dễ dàng theo cách thủ công. Chủ yếu, bạn sẽ đối phó với xsd: string, xsd: decimal, xsd: integer và một số hương vị của xsd: date để khớp với copybook Cobol của bạn.

1

Bạn có thể thử dự án Koopa Cobol parser của mình. Trong khi nó không làm tiền xử lý tôi thấy rằng đối với hầu hết các bản sao chép này không thực sự cần thiết. Nó sẽ bao gồm hầu hết những gì bạn mong đợi từ một bản sao chép tiêu chuẩn, và nếu không bạn luôn có thể mở rộng trình phân tích cú pháp. Nó có thể xuất cây phân tích thành XML, sau đó bạn có thể xử lý theo bất kỳ cách nào bạn muốn.

0

Sau đó, có mệnh đề REDEFINES được sử dụng để xác định lại một tập hợp các byte liền kề nhất định theo các cách khác nhau. Sau đó, mệnh đề OCCURS là việc thực hiện độ dài cố định của các mảng và mệnh đề OCCURS DEPENDING ON cho các mảng độ dài biến đổi.

Vì vậy, NealB là đúng; đây là không một nhiệm vụ tầm thường.

Các vấn đề liên quan