CICS - Lập trình giả
Hiện tại, chúng tôi đã bao gồm các chương trình chuyển đổi và không chuyển đổi. Các chương trình chuyển đổi có một nhược điểm lớn làthink timelà cao đáng kể. Để khắc phục vấn đề này, lập trình chuyển đổi giả đã ra đời. Bây giờ chúng ta sẽ thảo luận thêm về các chương trình chuyển đổi giả.
Chương trình chuyển đổi giả
Sau đây là chuỗi các sự kiện diễn ra trong một chương trình chuyển đổi giả -
Step 1 - Hệ thống gửi thông báo đến màn hình và kết thúc giao dịch, chỉ định giao dịch được bắt đầu khi nhận được thông tin nhập của người dùng.
Step 2- Hệ thống phân bổ tài nguyên được sử dụng bởi giao dịch này cho giao dịch khác đang chạy trong hệ thống. Vì vậy, chúng tôi có thể sử dụng các tài nguyên trong một chương trình chuyển đổi giả cho đến khi người dùng cung cấp đầu vào.
Step 3- Hệ thống thăm dò ý kiến đầu vào của thiết bị đầu cuối theo khoảng thời gian đều đặn. Khi đầu vào được nhận, nó sẽ được xử lý và đầu ra được hiển thị.
Step 4 - Chương trình ứng dụng được tải vào bộ lưu trữ chính khi cần và giải phóng khi không sử dụng.
Kỹ thuật chuyển đổi giả
Điểm quan trọng cần lưu ý trong cuộc trò chuyện giả là chuyển dữ liệu giữa mọi tác vụ. Chúng ta sẽ thảo luận về các kỹ thuật truyền dữ liệu.
COMMAREA
COMMAREA được biết đến là khu vực truyền thông. COMMAREA được sử dụng để truyền dữ liệu giữa các tác vụ. Ví dụ sau cho thấy cách chuyển COMMAREA trong đó WSCOMMAREA và WS-COMMAREA-LENGTH được khai báo trong Phần lưu trữ làm việc -
EXEC CICS RETURN
TRANSID ('transaction-id')
COMMAREA (WS-COMMAREA)
LENGTH (WS-COMMAREA-LENGTH)
END-EXEC.
DFHCOMMAREA
DFHCOMMAREA là một vùng bộ nhớ đặc biệt được CICS cung cấp cho mọi tác vụ.
Nó được sử dụng để truyền dữ liệu từ chương trình này sang chương trình khác. Các chương trình có thể tồn tại trong cùng một giao dịch hoặc trong các giao dịch khác nhau.
Nó được khai báo trong Phần liên kết của chương trình ở 01 cấp độ.
Nó phải có mệnh đề hình ảnh giống như WS-COMMAREA.
Dữ liệu có thể được di chuyển trở lại từ DFHCOMMAREA sang WS-COMMAREA bằng cách sử dụng câu lệnh MOVE.
MOVE DFHCOMMAREA TO WS-COMMAREA.
Thí dụ
Sau khi gửi bản đồ, nhiệm vụ kết thúc và chờ phản hồi của người dùng. Ở giai đoạn này, dữ liệu cần được lưu lại, bởi vì mặc dù nhiệm vụ đã kết thúc nhưng giao dịch vẫn chưa. Khi giao dịch này được tiếp tục, nó sẽ yêu cầu trạng thái trước đó của nhiệm vụ. Người dùng nhập đầu vào. Điều này bây giờ phải được nhận bằng lệnh RECEIVE MAP và sau đó được xác thực. Ví dụ sau đây cho thấy cách khai báo COMMAREA và DFHCOMMAREA:
WORKING-STORAGE SECTION.
01 WS-COMMAREA.
05 WS-DATA PIC X(10).
LINKAGE SECTION.
01 DFHCOMMAREA.
05 LK-DATA PIC X(10).
Mã giả
Dưới đây là logic của mã giả mà chúng tôi sử dụng trong lập trình giả -
MOVE DFHCOMMAREA TO WS-COMMAREA
IF EIBCALEN = 0
STEP1: SEND MAP
STEP2: MOVE <internal-transaction-id1> to WS-COMMAREA
STEP3: ISSUE CONDITIONAL RETURN
ELSE
IF WS-COMMAREA = <internal-transaction-id1>
STEP4: RECEIVE MAP
STEP5: PROCESS DATA
STEP6: SEND OUTPUT MAP
STEP7: MOVE <internal-transaction-ID2> to WS-COMMAREA
STEP8: ISSUE CONDITIONAL RETURN
END-IF
END-IF
STEP9: REPEAT STEP3 TO STEP7 UNTIL EXIT
Thí dụ
Ví dụ sau đây cho thấy một chương trình chuyển đổi giả:
******************************************************************
* PROGRAM TO DEMONSTRATE PSEUDO-CONVERSATION *
******************************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-MESSAGE PIC X(30).
01 WS-COMMAREA PIC X(10) VALUE SPACES.
LINKAGE SECTION.
01 DFHCOMMAREA PIC X(10).
PROCEDURE DIVISION.
MOVE DFHCOMMAREA TO WS-COMMAREA
IF WS-COMMAREA = SPACES
******************************************************************
* TRANSACTION GETTING EXECUTED FOR THE FIRST TIME *
******************************************************************
MOVE 'HELLO' TO WS-MESSAGE
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
MOVE 'FIRST' TO WS-COMMAREA
******************************************************************
* TASK ENDS AS A RESULT OF RETURN. IF AID KEY PRESSED, NEXT *
* TRANSACTION SHOULD BE TP002. DATA PASSED FROM WS-COMMAREA TO *
* DFHCOMMAREA *
******************************************************************
EXEC CICS RETURN
TRANSID('TP002')
COMMAREA(WS-COMMAREA)
END-EXEC
******************************************************************
* IF COMMAREA IS NOT EMPTY , THEN TP002 HAS BEEN EXECUTED ONCE *
* ALREADY, USER INTERACTION IS FACILITATED BY RECEIVE *
******************************************************************
ELSE
EXEC CICS RECEIVE
INTO(WS-MESSAGE)
END-EXEC
EXEC CICS SEND TEXT
FROM (WS-MESSAGE)
END-EXEC
******************************************************************
* TASK ENDS AS A RESULT OF RETURN, NO NEXT TRANSACTION SPECIFIED *
* TO BE EXECUTED *
******************************************************************
EXEC CICS RETURN
END-EXEC
END-IF.
Ưu điểm của Chuyển đổi giả
Sau đây là những ưu điểm của chuyển đổi giả -
Các nguồn tài nguyên được sử dụng tốt nhất. Tài nguyên được phát hành ngay sau khi chương trình bị tạm dừng hoạt động.
Có vẻ như nó đang ở chế độ trò chuyện.
Nó có thời gian phản hồi tốt hơn.
Báo cáo trả lại
Sau đây là hai loại câu lệnh trả về được sử dụng trong CICS:
Return-1
Khi câu lệnh trả về vô điều kiện sau được phát hành, tác vụ và giao dịch (chương trình) sẽ bị chấm dứt.
EXEC CICS RETURN
END-EXEC.
Return-2
Khi trả về có điều kiện sau, tức là, trả về với câu lệnh TRANSID được đưa ra, điều khiển quay trở lại CICS với chuyển tiếp tiếp theo sẽ được thực hiện. Giao dịch tiếp theo bắt đầu khi người dùng nhấn một phím AID.
EXEC CICS RETURN
TRANSID ('trans-id')
[COMMAREA(WS-COMMAREA)]
END-EXEC.