          PROCEDURE MGRB2163                                                    
                    using &PARAMETER    as String (512)                         
                                                                                
***********************************************************************         
* PROCEDURE:        MGRB2163                                          *         
* AUTHOR:           JMC                                               *         
* DATE CREATED:     June 8, 1993                                      *         
* PURPOSE:          Submitted in Background by MG2163                 *         
*                   Will execute a procedure or program and send      *         
*                   status information to MG2163.  Will also          *         
*                   log job status to catalog entry MG21641C.         *         
*---------------------------------------------------------------------*         
*                            MODIFICATIONS                            *         
*                           ===============                           *         
* Version  Date     Who Why                                           *         
* -------- -------- --- --------------------------------------------- *         
* 00.00.00 06/08/93 JMC Original Version                              *         
*                                                                     *         
*---------------------------------------------------------------------*         
* &PARAMETER Format:                                                  *         
*                                                                     *         
* Pos Size Description                                                *         
* --- ---- ---------------------------------------------------------- *         
*   1   6  Job to Execute Volume                                      *         
*   7   8  Job to Execute Library                                     *         
*  15   8  Job to Execute File                                        *         
*  23   4  Job to Execute Message Port Name                           *         
*  27   1  Background Execution Class                                 *         
*  28   8  Background Job Name                                        *         
*  36 477  Unused                                                     *         
*                                                                     *         
***********************************************************************         
                                                                                
****** SEND Message Area                                                        
        DECLARE &MSG_RETURN_CODE    as Integer     Initial 0                    
        DECLARE &MSG_XM             as String (02) Initial "XM"                 
        DECLARE &MSG_MESSAGE        as String (75) Initial " "                  
        DECLARE &MSG_MESSAGE_SIZE   as Integer     Initial 75                   
        DECLARE &MSG_PORT_NAME      as String (04) Initial " "                  
                                                                                
****** Misc Area                                                                
        DECLARE &BACKMON1_FUNCTION  as String (01) Initial " "                  
        DECLARE &SPACE_75           as String (75) Initial " "                  
        DECLARE &USER_ID            as String (08) Initial " "                  
        DECLARE &TASK_NUMBER        as Integer     Initial 0                    
        DECLARE &TASK_LITERAL       as String (75) Initial " "                  
        DECLARE &EXECUTE_VOL        as String (06) Initial " "                  
        DECLARE &EXECUTE_LIB        as String (08) Initial " "                  
        DECLARE &EXECUTE_FILE       as String (08) Initial " "                  
        DECLARE &RETURN_CODE        as Integer     Initial 0                    
                                                                                
***********************************************************************         
* STEP01 -- get MESSAGE VSSUB Location and Task #                     *         
***********************************************************************         
STEP01:   ASSIGN &EXECUTE_VOL  = &PARAMETER(1,6)                                
          ASSIGN &EXECUTE_LIB  = &PARAMETER(7,8)                                
          ASSIGN &EXECUTE_FILE = &PARAMETER(15,8)                               
                                                                                
          EXTRACT &USER_ID = USERID                                             
                                                                                
          CALL GETTASK                                                          
                                                                                
***********************************************************************         
* STEP03 -- get Log File Location                                     *         
***********************************************************************         
STEP03:   RUN MU5350                                                            
              ERROR  EXIT STEP03y                                               
              CANCEL EXIT STEP03x                                               
               ENTER CATGET     CATNAME = VSSUBS                                
       VSSUBS: ENTER LOCATION                                                   
               ENTER CATGET     CATNAME = FPSULOAD                              
     FPSULOAD: ENTER LOCATION                                                   
               ENTER CATGET     CATNAME = MG21641C                              
     MG21641C: ENTER LOCATION                                                   
               ENTER CATGET                                                     
                                                                                
          IF STEP03 = 0 GOTO STEP03z                                            
                                                                                
STEP03w:  ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,64) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " MGRB2163, MU5350 Failed on Cat Entry"                        
          CALL SENDMSG                                                          
          RETURN                                                                
                                                                                
STEP03x:  ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,64) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " MU5350 CANCELED, Cat Entry 'MG21641C'"                       
          CALL SENDMSG                                                          
          RETURN                                                                
                                                                                
STEP03y:  ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,64) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " MGRB2163, MU5350 ERROR Exit Taken"                           
          CALL SENDMSG                                                          
          RETURN                                                                
                                                                                
STEP03z:  [ continue ]                                                          
                                                                                
***********************************************************************         
* STEP10 -- Send Start Message                                        *         
***********************************************************************         
STEP10:   ASSIGN &BACKMON1_FUNCTION  = "B"                                      
          CALL BACKLOG                                                          
                                                                                
          ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "FYI:"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,65) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " Execution Begin, Task # >>>>>>>>>>>>>>>"                     
          CALL SENDMSG                                                          
                                                                                
***********************************************************************         
* STEP20 -- Run the Job                                               *         
***********************************************************************         
STEP20:   RUN &EXECUTE_FILE in &EXECUTE_LIB on &EXECUTE_VOL                     
              ERROR  EXIT is STEP96                                             
              CANCEL EXIT is STEP97                                             
                                                                                
                                                                                
          IF STEP20 = 0 GOTO STEP99                                             
                                                                                
          ASSIGN &RETURN_CODE = STEP20                                          
          GOTO   STEP98                                                         
                                                                                
***********************************************************************         
* STEP96 -- Send ERROR EXIT Message                                   *         
***********************************************************************         
STEP96:   ASSIGN &RETURN_CODE        = 96666666                                 
          ASSIGN &BACKMON1_FUNCTION  = "E"                                      
          CALL BACKLOG                                                          
          ASSIGN &RETURN_CODE        = 0                                        
                                                                                
          ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,65) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " ERROR EXIT, JOB DID NOT BEGIN, Task # "                      
          CALL SENDMSG                                                          
                                                                                
          RETURN                                                                
                                                                                
***********************************************************************         
* STEP97 -- Send CANCEL Message                                       *         
***********************************************************************         
STEP97:   ASSIGN &RETURN_CODE        = 97777777                                 
          ASSIGN &BACKMON1_FUNCTION  = "E"                                      
          CALL BACKLOG                                                          
          ASSIGN &RETURN_CODE        = 0                                        
                                                                                
          ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,53) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " CANCELLED, Task # "                                          
          CALL SENDMSG                                                          
                                                                                
          RETURN                                                                
                                                                                
***********************************************************************         
* STEP98 -- Send Return Code Message                                  *         
***********************************************************************         
STEP98:   ASSIGN &BACKMON1_FUNCTION  = "E"                                      
          CALL BACKLOG                                                          
                                                                                
          ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "OPER"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,53) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " RETURN CODE = "  !! &RETURN_CODE !!                          
                 ", Task # "                                                    
          CALL SENDMSG                                                          
                                                                                
          RETURN                                                                
                                                                                
***********************************************************************         
* STEP99 -- Send Compelete Successful Message                         *         
***********************************************************************         
STEP99:   ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "FYI:"                                   
          ASSIGN &MSG_MESSAGE(06,08) = &EXECUTE_FILE                            
          ASSIGN &MSG_MESSAGE(15,09) = "completed"                              
          ASSIGN &MSG_MESSAGE(32,03) = "000"                                    
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          CALL SENDMSG                                                          
          RETURN                                                                
                                                                                
*#####################################################################*         
*                        S U B R O U T I N E S                        *         
*#####################################################################*         
***********************************************************************         
* SENDMSG -- Will format the message and send it                      *         
***********************************************************************         
SENDMSG:  ASSIGN  &MSG_PORT_NAME  = &PARAMETER(23,4)                            
                                                                                
SENDMSGa: RUN MESSAGE in (VSSUBS.LIBRARY) on (VSSUBS.VOLUME)                    
              USING &MSG_XM,                                                    
                    &MSG_PORT_NAME,                                             
                    &MSG_MESSAGE,                                               
                    &MSG_MESSAGE_SIZE,                                          
                    &MSG_RETURN_CODE                                            
                                                                                
SENDMSGz: END                                                                   
                                                                                
***********************************************************************         
* GETTASK -- get Task Number and convert it to a String               *         
***********************************************************************         
GETTASK:  EXTRACT &TASK_NUMBER = TASK#                                          
                                                                                
          IF &TASK_NUMBER > 999 GOTO GETTASKa                                   
          IF &TASK_NUMBER > 99  GOTO GETTASKb                                   
          IF &TASK_NUMBER > 9   GOTO GETTASKc                                   
                                                                                
          ASSIGN &TASK_LITERAL = "000" !! &TASK_NUMBER                          
          GOTO   GETTASKz                                                       
                                                                                
GETTASKa: ASSIGN &TASK_LITERAL = &TASK_NUMBER                                   
          GOTO   GETTASKz                                                       
                                                                                
GETTASKb: ASSIGN &TASK_LITERAL = "0" !! &TASK_NUMBER                            
          GOTO   GETTASKz                                                       
                                                                                
GETTASKc: ASSIGN &TASK_LITERAL = "00" !! &TASK_NUMBER                           
          GOTO   GETTASKz                                                       
                                                                                
GETTASKz: END                                                                   
                                                                                
***********************************************************************         
* BACKLOG -- Log Background Job                                       *         
***********************************************************************         
BACKLOG:  RUN MG2164 in (FPSULOAD.LIBRARY) on (FPSULOAD.VOLUME)                 
              using &BACKMON1_FUNCTION,                                         
                    &USER_ID,                                                   
                    &EXECUTE_VOL,                                               
                    &EXECUTE_LIB,                                               
                    &EXECUTE_FILE,                                              
                    &RETURN_CODE                                                
              CANCEL EXIT is BACKLOGx                                           
              ERROR  EXIT is BACKLOGy                                           
               ENTER MG21641C   FILE     = (MG21641C.FILE),                     
                                LIBRARY  = (MG21641C.LIBRARY),                  
                                VOLUME   = (MG21641C.VOLUME),                   
                                FILECLAS = " ",                                 
                                RECORDS  = 10000,                               
                                RELEASE  = NO                                   
          GOTO BACKLOGz                                                         
                                                                                
BACKLOGx: ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "FYI:"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,64) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " MG2164 CANCELLED, Function: " !!                             
                 &BACKMON1_FUNCTION                                             
          CALL SENDMSG                                                          
          GOTO BACKLOGz                                                         
                                                                                
BACKLOGy: ASSIGN &MSG_MESSAGE        = &SPACE_75                                
          ASSIGN &MSG_MESSAGE(01,04) = "FYI:"                                   
          ASSIGN &MSG_MESSAGE(72,04) = &TASK_LITERAL                            
          ASSIGN &MSG_MESSAGE(06,64) =                                          
                 &EXECUTE_VOL(1,*)  !! "." !!                                   
                 &EXECUTE_LIB(1,*)  !! "." !!                                   
                 &EXECUTE_FILE(1,*) !!                                          
                 " MG2164 ERROR EX, Function: " !!                              
                 &BACKMON1_FUNCTION                                             
          CALL SENDMSG                                                          
          GOTO BACKLOGz                                                         
                                                                                
BACKLOGz: END                                                                   
                                                                                
*************########### End Procedure MGRB2163 ###########************         
