PL/I Program Using TSOLNK to Invoke a Program
Figure 1. PL/I Program
Demonstrating the Use of TSOLNK to Invoke a Program
/*******************************************************************/
/* THIS PL/I 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(FILEOUT) 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 PL/I COMPILER RELEASE 2 OR */
/* HIGHER. */
/*******************************************************************/
TSOCALL:
PROCEDURE OPTIONS(MAIN);
DECLARE 1 PARM1,
2 PARM11 FIXED BINARY (15,0), /* RESERVED */
2 PARM13 BIT(8), /* ABEND FLAG */
/* 0 -ABEND WITHOUT DUMP */
/* 1 -ABEND WITH DUMP */
2 PARM14 BIT(8); /* FUNCTION CODE */
DECLARE PARM2 CHARACTER(8); /* NAME OF FUNCTION */
DECLARE PARM3 FIXED BINARY(31,0); /* LENGTH OF CMD OR PROG */
DECLARE PARM4 FIXED BINARY(31,0); /* FUNCTION RETURN CODE */
DECLARE PARM5 FIXED BINARY(31,0); /* TSF REASON CODE */
DECLARE PARM6 FIXED BINARY(31,0); /* FUNCTION ABEND CODE */
DECLARE (FILEOUT) FILE; /* PL/I OUTPUT FILE */
DECLARE TSOLNK ENTRY( /* */
1, /* STRUCTURE OF 4 BYTES */
2 FIXED BINARY(15,0), /* BYTE 1 RESERVED */
2 BIT(8), /* BYTE 3 ABEND FLAG */
2 BIT(8), /* BYTE 4 FUNCTION FLAG */
CHARACTER (*), /* NAME OF PROGRAM OR CMD */
FIXED BINARY(31,0), /* LENGTH OF CMD OR PROG */
FIXED BINARY(31,0), /* FUNCTION RETURN CODE */
FIXED BINARY(31,0), /* TSF REASON CODE */
FIXED BINARY(31,0) /* FUNCTION ABEND CODE */
)
EXTERNAL OPTIONS(ASSEMBLER RETCODE INTER);
DECLARE PLIRETV BUILTIN;
/******************************************************************/
/* START OF EXECUTABLE CODE */
/******************************************************************/
PARM13='00000001'B; /* DUMP YES OR NO */
PARM14='00000010'B; /* FUNCTION IS A PROGRAM */
PARM2 = 'IEBCOPY'; /* FUNCTION NAME */
PARM3 = 7; /* LENGTH OF PROGRAM */
CALL TSOLNK(PARM1,PARM2,PARM3,PARM4,PARM5,PARM6);
/* CALL TSO SERVICE FACILITY */
PUT FILE (FILEOUT) EDIT (' THE TSOLNK RETURN CODE IS ',PLIRETV)
(A,F(3)); /* PRINT OUT RETURN CODE OF
TSO SERVICE FACILITY */
PUT FILE (FILEOUT) EDIT (' THE FUNCTION RETURN CODE IS ',PARM4)
(SKIP, A, F(3)); /* PRINT OUT RETURN CODE OF
IEBCOPY PROGRAM */
PUT FILE (FILEOUT) EDIT (' THE TSF REASON CODE IS ',PARM5)
(SKIP, A, F(3)); /* PRINT OUT TSF REASON CODE*/
PUT FILE (FILEOUT) EDIT (' THE FUNCTION ABEND CODE IS ',PARM6)
(SKIP, A, F(3)); /* PRINT OUT ABEND CODE
FOR IEBCOPY */
END TSOCALL;