IDENTIFICATION DIVISION.
PROGRAM-ID.    UTL565.
AUTHOR.        B. Wallis.
INSTALLATION.  Fleetwood Enterprises, Inc.
DATE-WRITTEN.  9-Mar-84.

******************************************************************************
*
* PROGRAM FUNCTIONS:
*	This subprogram will spawn a subprocess which will execute whatever
*	command it is given.  
*
* PROGRAM OPTIONS:
*	None.
*
* PROGRAM MODIFICATIONS:
*
*	AUTHOR   T. MOORE
*	DATE     21-MAY-86
*	VERSION  1-D
*
*	PROGRAM CHANGES:
*		Delete use of mailboxes during spawn.  Use ATTACH 
*		to execute the transaction.
*
******************************************************************************

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  VAX-11.
OBJECT-COMPUTER.  VAX-11.
DATA DIVISION.
WORKING-STORAGE SECTION.

01	PROG-ID					PIC X(9)
	VALUE "UTL565-1D".

01	CNT					PIC S9(9)	COMP.

01	FIRST-TIME-SW				PIC X(1)
	VALUE "T".
	88  FIRST-TIME
	    VALUE "T".
	88  NOT-FIRST-TIME
	    VALUE "F".

01	NOWAIT-MASK				PIC S9(9)	COMP
	VALUE EXTERNAL CLI$M_NOWAIT.

01	PROCESS-ID				PIC S9(9)	COMP.

01	RETURN-STATUS				PIC S9(9)	COMP.

01	SS-NORMAL				PIC S9(9)	COMP
	VALUE EXTERNAL SS$_NORMAL.

01	COMMAND-LOGICAL				PIC X(11)
	VALUE "UTL_COMMAND".

01	LOGICAL-TABLE				PIC X(7)
	VALUE "LNM$JOB".

01	SPAWN-COMMAND				PIC X(19)
	VALUE "@JOBS:UTLATTACH.JOB".

LINKAGE SECTION.
01	COMMAND-STRING				PIC X(127).

01	SUBPROCESS-RETURN-STATUS		PIC S9(9)	COMP.

PROCEDURE DIVISION USING COMMAND-STRING, SUBPROCESS-RETURN-STATUS 
	    GIVING RETURN-STATUS.

MAIN SECTION.
001-MAIN.
	IF FIRST-TIME
	    PERFORM 130-SPAWN-SUBPROCESS THRU 130-EXIT
	    IF RETURN-STATUS IS SUCCESS
		SET NOT-FIRST-TIME TO TRUE
		PERFORM 200-SEND-OUT-COMMAND THRU 200-EXIT
	    END-IF
	ELSE
	    PERFORM 200-SEND-OUT-COMMAND THRU 200-EXIT
	END-IF.
*
*	We can no longer get the subprocess return status so we will always
*	return success.
*
	MOVE SS-NORMAL TO SUBPROCESS-RETURN-STATUS.
	EXIT PROGRAM.

SUBROUTINE SECTION.

130-SPAWN-SUBPROCESS.
	CALL "LIB$SPAWN" USING
	    BY DESCRIPTOR SPAWN-COMMAND
	    OMITTED,
	    OMITTED,
	    OMITTED,
	    OMITTED,
	    BY REFERENCE PROCESS-ID,
	    OMITTED,
	    OMITTED,
	    OMITTED,
	    OMITTED,
	    OMITTED,
	    OMITTED
	    GIVING RETURN-STATUS.
130-EXIT.

200-SEND-OUT-COMMAND.
*
	CALL "LIB$SET_LOGICAL" USING
	    BY DESCRIPTOR COMMAND-LOGICAL,
	    BY DESCRIPTOR COMMAND-STRING,
	    BY DESCRIPTOR LOGICAL-TABLE,
	    OMITTED,
	    OMITTED
	    GIVING RETURN-STATUS.
*
	IF RETURN-STATUS IS SUCCESS
	    CALL "LIB$ATTACH" USING
		BY REFERENCE PROCESS-ID
		GIVING RETURN-STATUS.
200-EXIT.
