|
A DTS Programming Example in COBOL
You may download the original source files from here.
|
| |||||||||
IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLEFE.
DATE-WRITTEN. 26-NOV-1991.
DATE-COMPILED.
*
*
* Example DTS front-end application
*
* Perform a simple query to the remote handler HELLO
*
* Language: VAX COBOL
* Date: 26-NOV-1991
*
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
WORKING-STORAGE SECTION.
*
*** Structure definition for DTS input message
*** Remote node name, function code, handler name and application
*** data (our nickname) are initialized directly here.
*
01 INPUT-BUFFER.
05 HEADER.
10 TIMESTAMP PIC X(12) VALUE SPACES.
10 MSG-STATUS PIC X VALUE SPACES.
10 SENDER PIC X(8) VALUE SPACES.
10 RECEIVER PIC X(8) VALUE 'REMOTE '.
10 FUNCTION-CODE PIC X(2) VALUE '01'.
10 HANDLER PIC X(8) VALUE 'HELLO '.
05 USER-INPUT-DATA PIC X(31900) VALUE 'TestProgram'.
*
*** Input message actual length
*** DTS header length (39) + our nickname (11) = 50
*
01 INPUT-LENGTH PIC 9(4) COMP VALUE +50.
*
*** Structure definition for DTS output message
*
01 OUTPUT-BUFFER.
05 RETURN-CODE PIC X(2).
05 USER-OUTPUT-DATA PIC X(31900) VALUE LOW-VALUE.
*
*** Output message actual length
*** Initial value is the length of DTS return code (2)
*
01 OUTPUT-LENGTH PIC 9(4) COMP VALUE 2.
*
PROCEDURE DIVISION.
*
MAIN-PROGRAM.
*
*** Call DTS front-end service routine YFIAPPC
*
CALL "YFIAPPC" USING INPUT-BUFFER,
INPUT-LENGTH,
OUTPUT-BUFFER,
OUTPUT-LENGTH.
*
*** If the call succeeded, display received response message
*** Otherwise display DTS return code and error message
*
IF RETURN-CODE = '00' THEN
COMPUTE OUTPUT-LENGTH = OUTPUT-LENGTH - 2
DISPLAY 'Message received :'
DISPLAY USER-OUTPUT-DATA(1:OUTPUT-LENGTH)
ELSE
DISPLAY 'Call failed: ',OUTPUT-BUFFER(1:OUTPUT-LENGTH)
END-IF.
*
*** Terminate the program
*
STOP RUN.
*
*** End of source
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATE-WRITTEN. 26-NOV-1991.
DATE-COMPILED.
*
*
* Example DTS back-end application
*
* Return a simple 'Hello' message to the calling f/e.
*
* Language: VAX COBOL
* Date: 26-NOV-1991
*
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
LINKAGE SECTION.
*
*** Function call parameter definitions
*
01 INPUT-BUFFER.
05 HEADER PIC X(39).
05 USER-INPUT-DATA PIC X(31900).
*
01 INPUT-LENGTH PIC 9(4) COMP.
*
01 OUTPUT-BUFFER.
05 RETURN-CODE PIC X(2).
05 USER-OUTPUT-DATA PIC X(31900).
*
01 OUTPUT-LENGTH PIC 9(4) COMP.
*
PROCEDURE DIVISION USING INPUT-BUFFER,
INPUT-LENGTH,
OUTPUT-BUFFER,
OUTPUT-LENGTH.
*
ROUTINE-ITSELF.
*
*** Format response message to the output buffer
*
MOVE "Hello " TO USER-OUTPUT-DATA.
COMPUTE OUTPUT-LENGTH = INPUT-LENGTH - 39.
MOVE USER-INPUT-DATA(1:OUTPUT-LENGTH) TO USER-OUTPUT-DATA(7:).
COMPUTE OUTPUT-LENGTH = OUTPUT-LENGTH + 7.
MOVE ". I'm your remote routine" TO USER-OUTPUT-DATA(OUTPUT-LENGTH:).
*
*** Output length is finally our response data + 2-byte DTS return code
*
COMPUTE OUTPUT-LENGTH = OUTPUT-LENGTH + 25 + 2.
*
*** End of subroutine task
*
EXIT PROGRAM.
*
*** End of source
*
| ||||||||||
|