Figure 1. COBOL Program
Demonstrating the Use of TSOLNK to Invoke a Program ID DIVISION.
PROGRAM-ID. TSOSVR.
* THIS COBOL PROGRAM ISSUES THE IEBCOPY PROGRAM IN TSO/E AND
* THEN PRINTS OUT THE COMMAND BUFFER AND THE RETURN, REASON
* AND ABEND CODES RESULTING FROM THE EXECUTION OF THE TSO
* SERVICE FACILITY. TO USE THE EXAMPLE THE USER MUST ALLOCATE
* THE FOLLOWING FILES:
* ALLOC F(SYSPRT) DSN(*)
* ALLOC F(SYSIN) DSN(YOUR.SYSIN)
* ALLOC F(SYSPRINT) DSN(*)
* ALLOC F(INDD) DSN(YOUR.INPDS)
* ALLOC F(OUTDD) DSN(YOUR.OUTPDS)
* THE EXAMPLE REQUIRES THE FOLLOWING CARD IN YOUR.SYSIN FILE:
* EXAMPLE COPY OUTDD=OUTDD,INDD=INDD
*
* THIS PROGRAM WILL RUN ON THE OS/VS COBOL COMPILER RELEASE 3 OR
* HIGHER
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
* DEFINE OUTPUT DEVICE
SELECT TRMPRT ASSIGN TO UT-S-SYSPRT.
DATA DIVISION.
FILE SECTION.
DEFINE OUTPUT FILE
FD TRMPRT
LABEL RECORDS ARE OMITTED
RECORD CONTAINS 133 CHARACTERS.
* DEFINE OUTPUT RECORD
01 OUTREC.
02 OUT-LINE PICTURE X(133).
WORKING-STORAGE SECTION.
* DEFINE OUTPUT RECORD FORM
01 OUT-RECORD.
02 CONTROL-CHAR PICTURE X VALUE SPACE.
02 COMMENT PICTURE X(25).
02 OUT-VALUE PICTURE +++++++++9.
02 FILLER PICTURE X(111) VALUE SPACES.
* DEFINE COMMENT VALUES FOR OUTPUT RECORD FORM
01 RETURN-COMMENT PICTURE X(25) VALUE 'FUNCTION RETURN CODE IS '.
01 REASON-COMMENT PICTURE X(25) VALUE ' TSF REASON CODE IS '.
01 ABEND-COMMENT PICTURE X(25) VALUE 'FUNCTION ABEND CODE IS '.
* DEFINE FLAGS TO BE FULL WORDS WITH APPROPRIATE BITS ON
01 FLAG1-ON PICTURE S9(9) VALUE +16777216 COMP.
01 FLAG2-ON PICTURE S9(9) VALUE +65536 COMP.
01 FLAG3-ON PICTURE S9(9) VALUE +256 COMP.
01 FLAG4-ON PICTURE S9(9) VALUE +2 COMP.
01 FLAG1-OFF PICTURE S9(9) VALUE +0 COMP.
01 FLAG2-OFF PICTURE S9(9) VALUE +0 COMP.
01 FLAG3-OFF PICTURE S9(9) VALUE +0 COMP.
01 FLAG4-OFF PICTURE S9(9) VALUE +1 COMP.
* DEFINE STORAGE FOR PARMS
* PARM1 IS DECIMAL VALUE OF FLAGS
* PARM2 IS FUNCTION TEXT
* PARM3 IS FUNCTION LENGTH (SET TO 80)
* PARM4 IS FUNCTION RETURN CODE VALUE FROM TSOLNK
* PARM5 IS TSF REASON CODE VALUE FROM TSOLNK
* PARM6 IS FUNCTION ABEND CODE VALUE FROM TSOLNK
01 PARM1 PICTURE S9(9) COMP.
01 PARM2 PICTURE X(80).
01 PARM3 PICTURE S9(9) VALUE +80 COMP.
01 PARM4 PICTURE S9(9) VALUE +0 COMP.
01 PARM5 PICTURE S9(9) VALUE +0 COMP.
01 PARM6 PICTURE S9(9) VALUE +0 COMP.
PROCEDURE DIVISION.
* MOVE DESIRED FUNCTION TO PARM2
READY-COMMAND.
MOVE SPACES TO PARM2.
MOVE 'IEBCOPY' TO PARM2.
* SET FLAGS BY ADDING APPROPRIATELY VALUED FLAG VARIABLES
READY-FLAGS.
MOVE 0 TO PARM1.
* RESERVED FLAG
ADD FLAG1-OFF TO PARM1.
* RESERVED FLAG
ADD FLAG2-OFF TO PARM1.
* FLAG3-ON TO REQUEST ABEND WITH DUMP
ADD FLAG3-ON TO PARM1.
* FLAG4-OFF TO REQUEST A TSO/E PROGRAM (NOT A COMMAND) BE INVOKED
ADD FLAG4-ON TO PARM1.
* CALL TSOLNK
CALL-TSOLNK.
CALL 'TSOLNK' USING PARM1 PARM2 PARM3 PARM4 PARM5 PARM6.
* PRINT RESULTS
PRINT-COMMENTS.
OPEN OUTPUT TRMPRT.
* PRINT THE FUNCTION RETURN CODE
MOVE RETURN-COMMENT TO COMMENT.
MOVE PARM4 TO OUT-VALUE.
WRITE OUTREC FROM OUT-RECORD.
* PRINT THE TSF REASON CODE
MOVE REASON-COMMENT TO COMMENT.
MOVE PARM5 TO OUT-VALUE.
WRITE OUTREC FROM OUT-RECORD.
* PRINT THE FUNCTION ABEND CODE
MOVE ABEND-COMMENT TO COMMENT.
MOVE PARM6 TO OUT-VALUE.
WRITE OUTREC FROM OUT-RECORD.
CLOSE TRMPRT.
STOP RUN.