         PROCEDURE MGRB2155                                                     
                   using &LINK_FILE                as String (08),              
                         &LINK_LIBRARY             as String (08),              
                         &LINK_VOLUME              as String (06)               
                                                                                
***********************************************************************         
* PROCEDURE:  MGRB2155                                                *         
* AUTHOR:     JMC                                                     *         
* TITLE:      Scratch a File/Library Utility                          *         
* REMARKS:    This utility will scartch a file or a library,          *         
*             if a scratch error occurs the operator will be          *         
*             prompted to scratch the file or library.                *         
*             If &LINK_FILE = spaces this procedure will scratch      *         
*             the entire library.                                     *         
*                                                                     *         
* Note:       To save time variables are NOT declared unless          *         
*             the procedure requires them.  Variables are required    *         
*             only when an error occurs                               *         
*                                                                     *         
*---------------------------------------------------------------------*         
*                            MODIFICATIONS                            *         
* Version  who   Date   Why                                           *         
* -------- --- -------- --------------------------------------------- *         
* 00.01.00 JMC 09/11/89 Correct Bug with file SCRATCH                 *         
* 00.00.00 JMC 05/07/89 Original Version                              *         
*                                                                     *         
***********************************************************************         
                                                                                
          DECLARE &SCRATCH_RETURN_CODE as Integer     Initial 0                 
                                                                                
***********************************************************************         
* STEP01 -- Determine Scratch Type                                    *         
***********************************************************************         
STEP01:   IF &LINK_LIBRARY = "        " GOTO EOJ                                
          IF &LINK_VOLUME  = "        " GOTO EOJ                                
          IF &LINK_FILE    = "        " GOTO STEP100                            
                                                                                
***********************************************************************         
* STEP02 -- Scratch a file                                            *         
***********************************************************************         
STEP02:   SCRATCH &LINK_FILE in &LINK_LIBRARY on &LINK_VOLUME                   
                                                                                
          IF STEP02 = 0 GOTO EOJ                                                
                                                                                
          ASSIGN &SCRATCH_RETURN_CODE = STEP02                                  
          IF     &SCRATCH_RETURN_CODE = 20 GOTO EOJ [ File NOT found ]          
          IF     &SCRATCH_RETURN_CODE = 16 GOTO EOJ [ Lib  NOT found ]          
                                                                                
          CALL   DCL                                                            
          CALL   PROM01                                                         
          GOTO   STEP02                                                         
                                                                                
***********************************************************************         
* STEP100 -- Scratch a library                                        *         
***********************************************************************         
STEP100:  SCRATCH LIBRARY &LINK_LIBRARY on &LINK_VOLUME                         
                                                                                
          IF STEP100 = 0 GOTO EOJ                                               
                                                                                
          ASSIGN &SCRATCH_RETURN_CODE = STEP100                                 
          IF     &SCRATCH_RETURN_CODE = 20 GOTO EOJ [ File NOT found ]          
          IF     &SCRATCH_RETURN_CODE = 16 GOTO EOJ [ Lib  NOT found ]          
                                                                                
          CALL   DCL                                                            
          CALL   PROM02                                                         
          GOTO   STEP100                                                        
                                                                                
***********************************************************************         
* EOJ -- End of Job                                                   *         
***********************************************************************         
EOJ:      RETURN                                                                
                                                                                
*#####################################################################*         
*                              SUBROUTINES                            *         
*#####################################################################*         
***********************************************************************         
* DCL -- Declare all Internal Variables                               *         
***********************************************************************         
DCL:      DECLARE &VERSION            as String (08) Initial "00.01.00"         
          DECLARE &PROCEDURE          as String (08) Initial "MGRB2155"         
                                                                                
          DECLARE &TITLE_01           as String (79) Initial                    
                  &PROCEDURE !! "                     WANG LABORA" !!           
                  "TORIES, INC.                " !! &VERSION !! "  "            
          DECLARE &TITLE_02           as String (79) Initial                    
                  "                  Manufacturing Manageme" !!                 
                  "nt Information Systems                 "                     
          DECLARE &TITLE_03           as String (79) Initial                    
                  "                          Scratch File/L" !!                 
                  "ibrary Utility                         "                     
                                                                                
          DECLARE &SPACE_79            as String (79) Initial " "               
          DECLARE &MESSAGE             as String (79) Initial " "               
          DECLARE &SCRATCH_MESSAGE     as String (40) Initial " "               
          DECLARE &Pf                  as Integer     Initial 0                 
          DECLARE &SCRATCH_LABEL       as String (06) Initial " "               
          DECLARE &SCRATCH_P2          as String (03) Initial " "               
                                                                                
END                                                                             
                                                                                
***********************************************************************         
* PROM01 -- Prompt for File Scratch Error                             *         
***********************************************************************         
PROM01:   ASSIGN &TITLE_03 (1,8)      = "PROM01  "                              
          ASSIGN &MESSAGE             = &SPACE_79                               
          CALL   GETMSG                                                         
                                                                                
PROM01A:  MESSAGE ERASE = YES ROW 1                                             
               DIM &TITLE_01;                                                   
               DIM &TITLE_02;                                                   
               DIM &TITLE_03                                                    
                                                                                
          MESSAGE ERASE = NO ROW 9                                              
               BRIGHT "      " !! "Unable to Scratch " !!                       
                       "File " !! &LINK_FILE    (1,*) !!                        
                        " in " !! &LINK_LIBRARY (1,*)  !!                       
                        " on " !! &LINK_VOLUME  (1,*)  !! ".";;                 
               DIM    "      " !!                                               
                      "Scratch Return Code = " !!                               
                      &SCRATCH_RETURN_CODE;                                     
               BRIGHT "      " !! "        " !!                                 
                      &SCRATCH_MESSAGE;;                                        
               DIM    "      " !!                                               
                      "Please SCRATCH this file and select ENTER"               
                                                                                
          PROMPT ERASE = NO, PFKEY = &Pf ROW 22                                 
               BRIGHT &MESSAGE;                                                 
               LINE   &SPACE_79;                                                
               DIM  "(ENTER) Continue"                                          
                                                                                
                                                                                
          IF &Pf = 00 GOTO PROM01Z                                              
                                                                                
          ASSIGN &MESSAGE = "Invalid Pf-key selected"                           
          GOTO   PROM01A                                                        
                                                                                
PROM01Z:  END                                                                   
                                                                                
***********************************************************************         
* PROM02 -- Prompt for Library Scratch Error                          *         
***********************************************************************         
PROM02:   ASSIGN &TITLE_03 (1,8)      = "PROM02  "                              
          ASSIGN &MESSAGE             = &SPACE_79                               
          CALL   GETMSG                                                         
                                                                                
PROM02A: MESSAGE ERASE = YES ROW 1                                              
               DIM &TITLE_01;                                                   
               DIM &TITLE_02;                                                   
               DIM &TITLE_03                                                    
                                                                                
          MESSAGE ERASE = NO ROW 9                                              
               BRIGHT "      " !! "Unable to Scratch Library " !!               
                      &LINK_LIBRARY(1,*)  !!                                    
                        " on " !! &LINK_VOLUME(1,*)  !! ".";;                   
               DIM    "      " !!                                               
                      "Scratch Return Code = " !!                               
                      &SCRATCH_RETURN_CODE;                                     
               BRIGHT "      " !! "        " !!                                 
                      &SCRATCH_MESSAGE;;                                        
               DIM    "      " !!                                               
                      "Please SCRATCH this library and select ENTER"            
                                                                                
          PROMPT ERASE = NO, PFKEY = &Pf ROW 22                                 
               BRIGHT &MESSAGE;                                                 
               LINE   &SPACE_79;                                                
               DIM  "(ENTER) Continue"                                          
                                                                                
                                                                                
          IF &Pf = 00 GOTO PROM02Z                                              
                                                                                
          ASSIGN &MESSAGE = "Invalid Pf-key selected"                           
          GOTO   PROM02A                                                        
                                                                                
PROM02Z:  END                                                                   
                                                                                
***********************************************************************         
* GETMSG -- Format the Scratch Error Message                          *         
***********************************************************************         
GETMSG:   ASSIGN &SCRATCH_MESSAGE = "Reason is unknown"                         
                                                                                
          IF &SCRATCH_RETURN_CODE > 999 END                                     
          IF &SCRATCH_RETURN_CODE > 99 IF &SCRATCH_RETURN_CODE < 999            
             ASSIGN &SCRATCH_P2 = &SCRATCH_RETURN_CODE                          
          IF &SCRATCH_RETURN_CODE > 9 IF &SCRATCH_RETURN_CODE < 99              
             ASSIGN &SCRATCH_P2 = "0" !! &SCRATCH_RETURN_CODE                   
          IF &SCRATCH_RETURN_CODE < 9                                           
             ASSIGN &SCRATCH_P2 = "00" !! &SCRATCH_RETURN_CODE                  
                                                                                
          ASSIGN &SCRATCH_LABEL = "MSG" !! &SCRATCH_P2                          
          IF     &LABEL(&SCRATCH_LABEL) GOTO &SCRATCH_LABEL                     
          END                                                                   
                                                                                
MSG004:   ASSIGN &SCRATCH_MESSAGE = "Volume not mounted"                        
          END                                                                   
MSG008:   ASSIGN &SCRATCH_MESSAGE = "Volume in exclusive use"                   
          END                                                                   
MSG012:   ASSIGN &SCRATCH_MESSAGE = "All buffers in use"                        
          END                                                                   
MSG016:   ASSIGN &SCRATCH_MESSAGE = "Library NOT found"                         
          END                                                                   
MSG020:   ASSIGN &SCRATCH_MESSAGE = "File NOT Found"                            
          END                                                                   
MSG024:   ASSIGN &SCRATCH_MESSAGE = "Insufficent Access to File"                
          END                                                                   
MSG028:   ASSIGN &SCRATCH_MESSAGE = "Unexpired File"                            
          END                                                                   
MSG032:   ASSIGN &SCRATCH_MESSAGE = "File in use"                               
          END                                                                   
MSG036:   ASSIGN &SCRATCH_MESSAGE = "VTOC Error"                                
          END                                                                   
MSG040:   ASSIGN &SCRATCH_MESSAGE = "VTOC Error"                                
          END                                                                   
MSG044:   ASSIGN &SCRATCH_MESSAGE = "Invalid Argument List Address"             
          END                                                                   
MSG048:   ASSIGN &SCRATCH_MESSAGE = "I/O Error.  VTOC unreliable"               
          END                                                                   
MSG052:   ASSIGN &SCRATCH_MESSAGE = "File(s) bypassed in "     !!               
                                    "scratching library"                        
          END                                                                   
                                                                                
************** ####### END OF PROCEDURE MGRB2155 ####### *************          
