PASCAL Program Using TSOLNK to Invoke a Program

Figure 1. PASCAL Program Demonstrating the Use of TSOLNK to Invoke a Program
 (*******************************************************************)
 (*                                                                 *)
 (*  THIS PASCAL 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(OUTPUT) 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                    *)
 (*                                                                 *)
 (*                                                                 *)
 (*******************************************************************)
 PROGRAM TSOINTER;
  TYPE
     PA4=PACKED ARRAY (.1..4.) OF CHAR;
     PA80=PACKED ARRAY (.1..80.) OF CHAR;
 (*******************************************************************)
 (*                                                                 *)
 (*  SET UP CALL TO TSOLNK - THE TSO SERVICE FACILITY.              *)
 (*  WITH PARAMETER LIST.                                           *)
 (*                                                                 *)
 (*******************************************************************)
  PROCEDURE TSOLNK( VAR PARM1:PA4;
                    VAR PARM2:PA80;
                    VAR PARM3:INTEGER;
                    VAR PARM4:INTEGER;
                    VAR PARM5:INTEGER;
                    VAR PARM6:INTEGER);
  FORTRAN; (* THIS KEYWORD IS REQUIRED TO ESTABLISH LINKAGE TO TSF *)
  VAR
   PARM1:PA4;          (* WORD OF CONTROL BITS               *)
   PARM2:PA80;         (* PROGRAM BUFFER                     *)
   PARM3:INTEGER;      (* LENGTH OF PROGRAM                  *)
   PARM4:INTEGER;      (* FUNCTION RETURN CODE               *)
   PARM5:INTEGER;      (* TSO SERVICE FACILITY REASON CODE   *)
   PARM6:INTEGER;      (* FUNCTION ABEND CODE                *)
   FILEOUT:TEXT;       (* DECLARE OUTPUT FILE NAME           *)
    BEGIN
     PARM1(.1.):=CHR(0);     (* ZERO OUT                           *)
     PARM1(.2.):=CHR(0);     (* ZERO OUT BYTE                      *)
     PARM1(.3.):=CHR(1);     (* SPECIFY DUMP                       *)
     PARM1(.4.):=CHR(2);     (* SPECIFY PROGRAM TO BE EXECUTED     *)
     PARM2:='IEBCOPY';       (* FILL IN PROGRAM BUFFER             *)
     PARM3:=7;               (* SPECIFY PROGRAM LENGTH             *)
     PARM4:=0;       (* ZERO OUT FUNCTION RETURN CODE              *)
     PARM5:=0;       (* ZERO OUT TSF REASON CODE                   *)
     PARM6:=0;       (* ZERO OUT FUNCTION ABEND CODE               *)
     TSOLNK(PARM1,
            PARM2,
            PARM3,
            PARM4,
            PARM5,
            PARM6);  (* INTERFACE WITH TSO SERVICE FACILITY        *)
     WRITELN(FILEOUT, 'THE FUNCTION RETURN CODE IS ',PARM4);
                     (* PRINT OUT FUNCTION RETURN CODE             *)
     WRITELN(FILEOUT, '     THE TSF REASON CODE IS ',PARM5);
                     (* PRINT OUT TSF REASON CODE                  *)
     WRITELN(FILEOUT, 'THE FUNCTION  ABEND CODE IS ',PARM6);
                     (* PRINT OUT FUNCTION ABEND CODE              *)
    END.