• No results found

Primary (Sending) Program Example

B.2.

Primary (Sending) Program Example

The following example is the primary (sending) program of a program-to-program application. The program:

$ Lets you enter the the number of messages to send to the secondary program $ Attaches to DDP-PPC

$ Opens a conversation with the secondary program

$ Sends the number of messages requested when it receives an open-id, indicating that the connection with the secondary program is established

$ Performs a close after the messages have been sent $ Signs off when a close-confirm is received

$ Detaches from DDP-PPC

If any errors are encountered, appropriate messages are displayed on the printer.

Source Code Listing for Primary Program

IDENTIFICATION DIVISION. PROGRAM-ID. ACT1. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. UNISYS-2200-60. OBJECT-COMPUTER. UNISYS-2200-60.

SPECIAL-NAMES. CONSOLE IS REMOTE-TERMINAL. DATA DIVISION.

WORKING-STORAGE SECTION.

01 COUNTER PIC 9(3) VALUE 0.

01 REPLY PIC X(1) VALUE SPACES.

01 MSG-LIM PIC 9(3) VALUE 0.

01 DDN-MSG-BUFFER.

02 MSGA PIC X(7) VALUE 'ACT1'.

02 MSGB PIC 9(3) VALUE 0.

02 MSGC PIC X(240) VALUE SPACES.

02 MSGZ PIC X(4) VALUE 'ZZZZ'.

02 CR PIC 9(2) COMP VALUE 13.

02 LF PIC 9(2) COMP VALUE 10.

COPY DDN-PKTS. * * PROCEDURE DIVISION. START-TEST SECTION. MAIN.

DISPLAY 'ENTER NUMBER MESSAGES TO SEND' UPON PRINTER. ACCEPT MSG-LIM.

Primary (Sending) Program Example

STOP RUN. XMAIN. EXIT. SAMPLE.

DISPLAY 'ACT1 START' UPON PRINTER. *

MOVE 'ACT1' TO DDN-PROGRAM-NAME IN DDN-SIGNON-PKT. COPY DDN-SIGNON.

*

IF NOT DDN-OK

DISPLAY 'ACT1 SIGN-ON ERROR' UPON PRINTER PERFORM DISPLAY-STATUS GO TO XSAMPLE. PERFORM SET-UP-OPEN. PERFORM SET-UP-DATA. PERFORM SET-UP-RECEIVE. * COPY DDN-OPEN. * IF NOT DDN-OK

DISPLAY 'ACT1 OPEN ERROR' UPON PRINTER PERFORM DISPLAY-STATUS GO TO CLOSE-UP. * COPY DDN-RECEIVE. * IF DDN-NO-MSG

DISPLAY 'ACT1 NO MSG' UPON PRINTER GO TO CLOSE-UP.

IF NOT DDN-OK

DISPLAY 'ACT1 RECEIVE ERROR' UPON PRINTER PERFORM DISPLAY-STATUS

GO TO CLOSE-UP. IF NOT DDN-OPEN-ID

DISPLAY 'ACT1 OPEN-ID NOT RECEIVED' UPON PRINTER GO TO CLOSE-UP.

*

MOVE 256 TO DDN-TEXT-LEN IN DDN-DATA-PKT. MOVE 0 TO MSGB.

PERFORM SEND-LOOP THRU XSEND-L UNTIL MSGB = MSG-LIM. *

MOVE 0 TO DDN-TEXT-LEN IN DDN-DATA-PKT. COPY DDN-CLOSE.

*

DISPLAY 'ACT1 CLOSING NOW' UPON PRINTER. IF NOT DDN-OK

DISPLAY 'ACT1 CLOSE ERROR' UPON PRINTER PERFORM DISPLAY-STATUS GO TO CLOSE-UP. * * RCV-CLS. COPY DDN-RECEIVE. * IF DDN-NO-MSG

DISPLAY 'ACT1 NO MSG' UPON PRINTER GO TO RCV-CLS.

Primary (Sending) Program Example

DISPLAY 'ACT1 RECEIVE ERROR' UPON PRINTER PERFORM DISPLAY-STATUS

GO TO CLOSE-UP. IF NOT DDN-CLOSE-CONF

DISPLAY 'ACT1 WAITING CLOSE-CONF' UPON PRINTER GO TO RCV-CLS.

IF DDN-CLOSE-IND

DISPLAY 'ACT1 RECEIVED CLOSE-IND' UPON PRINTER GO TO RCV-CLS.

* *

COPY DDN-SIGNOFF. IF NOT DDN-OK

DISPLAY 'ACT1 SIGN-OFF ERROR' UPON PRINTER PERFORM DISPLAY-STATUS

GO TO XSAMPLE.

DISPLAY 'ACT1 COMPLETE' UPON PRINTER.

* *************************************************************** XSAMPLE. EXIT.

* *************************************************************** CLOSE-UP.

COPY DDN-ABORT.

DISPLAY 'ACT1 EXECUTING ABORT' UPON PRINTER. IF NOT DDN-OK

DISPLAY 'ACT1 ABORT ERROR' UPON PRINTER PERFORM DISPLAY-STATUS.

* *

COPY DDN-SIGNOFF.

DISPLAY 'ACT1 SIGNING OFF' UPON PRINTER. GO TO XSAMPLE. * * SEND-LOOP. ADD 1 TO MSGB. COPY DDN-SEND. * IF NOT DDN-OK

DISPLAY 'ACT1 SEND ERROR' UPON PRINTER PERFORM DISPLAY-STATUS

GO TO CLOSE-UP.

DISPLAY 'ACT1 ' MSGA ' ' MSGB ' ' MSGZ ' SENT' UPON PRINTER. * XSEND-L. EXIT. * * SET-UP-OPEN. * SET UP OPEN PKT

MOVE 0 TO DDN-OPEN-TYPE IN DDN-OPEN-PKT. MOVE 280 TO DDN-REMOTE-PORT.

MOVE 12 TO DDN-HOST-ID-LEN.

MOVE 'HOST-ID-SYS1' TO DDN-HOST-ID.

MOVE 4 TO DDN-OPEN-PROTOCOL IN DDN-OPEN-PKT. *

Primary (Sending) Program Example

SET-UP-DATA. * SET UP DATA PACKET

MOVE 0 TO DDN-BUFFER-OFFSET IN DDN-DATA-PKT. MOVE 0 TO DDN-TEXT-LEN IN DDN-DATA-PKT. MOVE 0 TO DDN-READ-START IN DDN-DATA-PKT. MOVE 1 TO DDN-RELEASE-MSG IN DDN-DATA-PKT. *

*

SET-UP-RECEIVE. * SET UP RECEIVE PACKET

MOVE 60 TO DDN-WAIT-TIME IN DDN-RECEIVE-PKT. MOVE 4 TO DDN-CONV-TYPE IN DDN-RECEIVE-PKT.

MOVE 'ACT1' TO DDN-RCV-PROGRAM-NAME IN DDN-RECEIVE-PKT. *

*

DISPLAY-ALL SECTION. DISPLAY-STATUS.

DISPLAY '**** DDN-STATUS-PKT ****' UPON PRINTER. DISPLAY 'ERR FUNC = ' DDN-ERR-FUNCTION ' '

'CLASS CODE = 'DDN-CLASS-CODE ' '

'DETAIL = ' DDN-DETAIL-STATUS UPON PRINTER. DISPLAY-SIGNON.

DISPLAY '**** DDN-SIGNON-PKT ****' UPON PRINTER. DISPLAY 'PROGRAM-NAME = ' DDN-SIGNON-PKT UPON PRINTER. DISPLAY-OPEN.

DISPLAY '**** DDN-OPEN-PKT ****' UPON PRINTER. DISPLAY 'TYPE = ' DDN-OPEN-TYPE ' '

'LOCAL = ' DDN-LOCAL-PORT ' '

'REMOTE = ' DDN-REMOTE-PORT UPON PRINTER. DISPLAY 'LEN = ' DDN-HOST-ID-LEN ' '

'HOST-ID = ' DDN-HOST-ID ' '

'PROTOCOL = ' DDN-OPEN-PROTOCOL UPON PRINTER. DISPLAY 'DATA PKT ID = ' DDN-CONV-ID UPON PRINTER. DISPLAY-RECEIVE.

DISPLAY '**** DDN-RECEIVE-PKT ****' UPON PRINTER. DISPLAY 'WAIT = ' DDN-WAIT-TIME ' '

'REASON = ' DDN-RCV-REASON ' '

'TYPE = ' DDN-CONV-TYPE UPON PRINTER. DISPLAY 'EVENT = ' DDN-RCV-EVENT ' '

'LCL-PORT = ' DDN-RCV-LOCAL-PORT ' '

'TOT MSG LEN = ' DDN-TOTAL-MSG-LEN UPON PRINTER. DISPLAY 'TELNET IND: STOP = ' DDN-STOP-IND ' '

'INT = ' DDN-INT-IND ' ' 'BREAK = ' DDN-BREAK-IND ' ' 'NEG = ' DDN-OPT-NEG-IND ' ' 'PROBE = ' DDN-PROBE-RESP ' '

'GO = ' DDN-GO-AHEAD-IND UPON PRINTER.

DISPLAY 'RCV PROGRAM = ' DDN-RCV-PROGRAM-NAME UPON PRINTER. DISPLAY-DATA.

DISPLAY '**** DDN-DATA-PKT ****' UPON PRINTER. DISPLAY 'DEFAULTS = ' DDN-OPTION-DEFAULTS ' '

'OFFSET = 'DDN-BUFFER-OFFSET ' ' 'TXT-LEN = ' DDN-TEXT-LEN ' ' 'RD-STRT = ' DDN-READ-START ' '

Related documents