*S****SAG GENERATOR: WW-OBJECT-SUBP                   Version: 3.2.2    
*S****SAG TITLE: WFNSL27O           
*S****SAG SYSTEM: FINANCIER         
*S****SAG OBJECT-DESC: Record       
*S****SAG PRIME-FILE: WF-NSLDS-2627 
*S****SAG PRIME-KEY: WF-NSLDS-KEY   
*S****SAG HOLD-FIELD: WW-HOLD       
*S****SAG OBJECT-PDA: WFNSL27D      
*S****SAG RESTRICTED-PDA: WFNSL27R  
*S****SAG DESCS(1): This subprogram performs I/O functions for the      
*S****SAG DESCS(2): WF-NSLDS-2627 userview/file using the WF-NSLDS-KEY  
*S****SAG DESCS(3): primary superdescriptor.    
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFNSL27O          
*S*** System    : FINANCIER         
*S*** Title     : WFNSL27O          
*S*** Function  : This subprogram performs I/O functions for the        
*S***             WF-NSLDS-2627 userview/file using the WF-NSLDS-KEY    
*S***             primary superdescriptor.      
*S***       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S***       
*S**  PARAMETER USING WFNSL27D      
*S**  PARAMETER USING WFNSL27R      
*S**  PARAMETER USING WWAOBJ        
*S***       
*S**  LOCAL 
*S***       
*S*** Miscellaneous local variables.
*S**  01 #CURRENT-FIELD(A32) /* Current field name being proccessed     
*S**  01 #DB-CALL(A1)        /* D=Delete, U=Update, S=Store 
*S**  01 #D1(P3)             /* Temporary indices for MU and PE         
*S**  01 #D2(P3)        
*S**  01 #OBJECT(A20) INIT<'Record'>
*S**  01 #OLD-REC(L)         /* Record existed before.      
*S**  01 #SAVE-REC(L)        /* True if record is non-null. 
*S**  01 #DISP-BACKOUT(L) INIT<TRUE>    /* Display message on BACKOUT TRANS         
*S**  01 #SAVE-MSG(A79)      /* Save previously defined messages        
*S***       
*S*** Views used to build object.   
*S***       
*S*** View for histogram on NEXT action.        
*S**  01 NEXT-VIEW VIEW OF WF-NSLDS-2627        
*S**    02 WF-NSLDS-KEY 
*S***       
*S*** Primary object entity.        
*S**  01 WF-NSLDS-2627 VIEW OF WF-NSLDS-2627    
*S**    02 WW-STUDENT-ID
*S**    02 WF-FAO       
*S**    02 WW-SYSTEM    
*S**      03 WW-HOLD    
*S**      03 WW-CDATE   
*S**      03 WW-MDATE   
*S**    02 WF-NSLDS     
*S**      03 WF-NS-PELL-OVP         
*S**      03 WF-NS-PELL-OVP-CTC     
*S**      03 WF-NS-SEOG-OVP         
*S**      03 WF-NS-SEOG-OVP-CTC     
*S**      03 WF-NS-PERK-OVP         
*S**      03 WF-NS-PERK-OVP-CTC     
*S**      03 WF-NS-TCH-OVP          
*S**      03 WF-NS-TCH-OVP-CTC      
*S**      03 WF-NS-IAAS-OVP         
*S**      03 WF-NS-IAAS-OVP-CTC     
*S**      03 WF-NS-LOAN-DEF         
*S**      03 WF-NS-LOAN-DIS         
*S**      03 WF-NS-LOAN-FRD         
*S**      03 WF-NS-LOAN-REP         
*S**      03 WF-NS-BANKRUPT         
*S**      03 WF-NS-TCH-CONV         
*S**      03 WF-NS-SUB-OUT          
*S**      03 WF-NS-UNS-OUT          
*S**      03 WF-NS-CMB-OUT          
*S**      03 WF-NS-CON-OUT          
*S**      03 WF-NS-TCH-OUT          
*S**      03 WF-NS-SUB-PEND         
*S**      03 WF-NS-UNS-PEND         
*S**      03 WF-NS-CMB-PEND         
*S**      03 WF-NS-SUB-TOTAL        
*S**      03 WF-NS-UNS-TOTAL        
*S**      03 WF-NS-CMB-TOTAL        
*S**      03 WF-NS-CON-TOTAL        
*S**      03 WF-NS-TCH-TOTAL        
*S**      03 WF-NS-PERK-TOTAL       
*S**      03 WF-NS-PERK-CUR         
*S**      03 WF-NS-TCH-TOTAL-UG     
*S**      03 WF-NS-TCH-TOTAL-GR     
*S**      03 WF-NS-LOAN-DEF-CHG     
*S**      03 WF-NS-LOAN-FRD-CHG     
*S**      03 WF-NS-LOAN-DIS-CHG     
*S**      03 WF-NS-LOAN-REP-CHG     
*S**      03 WF-NS-BANKRUPT-CHG     
*S**      03 WF-NS-TCH-CONV-CHG     
*S**      03 WF-NS-OVPMT-CHG        
*S**      03 WF-NS-LOAN-CHG         
*S**      03 WF-NS-PERKINS-CHG      
*S**      03 WF-NS-PELL-CHG         
*S**      03 WF-NS-TCH-CHG          
*S**      03 WF-NS-PELL-ADTNL       
*S**      03 WF-NS-LOAN-ADTNL       
*S**      03 WF-NS-TCH-ADTNL        
*S**      03 WF-NS-DL-MPN           
*S**      03 WF-NS-DLP-MPN          
*S**      03 WF-NS-DLG-MPN          
*S**      03 WF-NS-SUB-LIMIT-UG     
*S**      03 WF-NS-CMB-LIMIT-UG     
*S**      03 WF-NS-SUB-LIMIT-GR     
*S**      03 WF-NS-CMB-LIMIT-GR     
*S**      03 WF-NS-C-LEU-FLAG       
*S**      03 WF-NS-C-LEU
*S**      03 WF-NS-C-SUB-LE-FLAG    
*S**      03 WF-NS-C-SUB-USAGE-PD   
*S**      03 WF-NS-C-ENR-PATTERN    
*S**      03 WW-FILLER1 
*S**      03 WF-NS-P1-SEQ           
*S**      03 WF-NS-P1-VER           
*S**      03 WF-NS-P1-SAI           
*S**      03 WF-NS-P1-SCHOOL        
*S**      03 WF-NS-P1-TRAN          
*S**      03 WF-NS-P1-DATE          
*S**      03 WF-NS-P1-SCH-AWD       
*S**      03 WF-NS-P1-PAID          
*S**      03 WF-NS-P1-SCH-PCT       
*S**      03 WF-NS-P1-AWARD         
*S**      03 WF-NS-P1-ADDL-ELIG     
*S**      03 WW-FILLER2 
*S**      03 WF-NS-P2-SEQ           
*S**      03 WF-NS-P2-VER           
*S**      03 WF-NS-P2-SAI           
*S**      03 WF-NS-P2-SCHOOL        
*S**      03 WF-NS-P2-TRAN          
*S**      03 WF-NS-P2-DATE          
*S**      03 WF-NS-P2-SCH-AWD       
*S**      03 WF-NS-P2-PAID          
*S**      03 WF-NS-P2-SCH-PCT       
*S**      03 WF-NS-P2-AWARD         
*S**      03 WF-NS-P2-ADDL-ELIG     
*S**      03 WW-FILLER3 
*S**      03 WF-NS-P3-SEQ           
*S**      03 WF-NS-P3-VER           
*S**      03 WF-NS-P3-SAI           
*S**      03 WF-NS-P3-SCHOOL        
*S**      03 WF-NS-P3-TRAN          
*S**      03 WF-NS-P3-DATE          
*S**      03 WF-NS-P3-SCH-AWD       
*S**      03 WF-NS-P3-PAID          
*S**      03 WF-NS-P3-SCH-PCT       
*S**      03 WF-NS-P3-AWARD         
*S**      03 WF-NS-P3-ADDL-ELIG     
*S**      03 WW-FILLER4 
*S**      03 WF-NS-T1-SEQ           
*S**      03 WF-NS-T1-SCHOOL        
*S**      03 WF-NS-T1-TRAN          
*S**      03 WF-NS-T1-DATE          
*S**      03 WF-NS-T1-SCH-AWD       
*S**      03 WF-NS-T1-PAID          
*S**      03 WF-NS-T1-AWARD         
*S**      03 WF-NS-T1-LEVEL         
*S**      03 WF-NS-T1-AWDYEAR       
*S**      03 WF-NS-T1-CONV          
*S**      03 WF-NS-T1-DCHG          
*S**      03 WF-NS-T1-DCHG-AMT      
*S**      03 WF-NS-T1-ADJ-DSB       
*S**      03 WW-FILLER5 
*S**      03 WF-NS-T2-SEQ           
*S**      03 WF-NS-T2-SCHOOL        
*S**      03 WF-NS-T2-TRAN          
*S**      03 WF-NS-T2-DATE          
*S**      03 WF-NS-T2-SCH-AWD       
*S**      03 WF-NS-T2-PAID          
*S**      03 WF-NS-T2-AWARD         
*S**      03 WF-NS-T2-LEVEL         
*S**      03 WF-NS-T2-AWDYEAR       
*S**      03 WF-NS-T2-CONV          
*S**      03 WF-NS-T2-DCHG          
*S**      03 WF-NS-T2-DCHG-AMT      
*S**      03 WF-NS-T2-ADJ-DSB       
*S**      03 WW-FILLER6 
*S**      03 WF-NS-T3-SEQ           
*S**      03 WF-NS-T3-SCHOOL        
*S**      03 WF-NS-T3-TRAN          
*S**      03 WF-NS-T3-DATE          
*S**      03 WF-NS-T3-SCH-AWD       
*S**      03 WF-NS-T3-PAID          
*S**      03 WF-NS-T3-AWARD         
*S**      03 WF-NS-T3-LEVEL         
*S**      03 WF-NS-T3-AWDYEAR       
*S**      03 WF-NS-T3-CONV          
*S**      03 WF-NS-T3-DCHG          
*S**      03 WF-NS-T3-DCHG-AMT      
*S**      03 WF-NS-T3-ADJ-DSB       
*S**      03 WW-FILLER7 
*S**      03 WF-NS-L01-SEQ          
*S**      03 WF-NS-L01-DFLT         
*S**      03 WF-NS-L01-CHG          
*S**      03 WF-NS-L01-TYPE         
*S**      03 WF-NS-L01-AMT          
*S**      03 WF-NS-L01-STA          
*S**      03 WF-NS-L01-STA-DATE     
*S**      03 WF-NS-L01-OUT          
*S**      03 WF-NS-L01-OUT-DATE     
*S**      03 WF-NS-L01-BEG-DATE     
*S**      03 WF-NS-L01-END-DATE     
*S**      03 WF-NS-L01-GA           
*S**      03 WF-NS-L01-CTC-TYPE     
*S**      03 WF-NS-L01-SCHOOL       
*S**      03 WF-NS-L01-CONTACT      
*S**      03 WF-NS-L01-LEVEL        
*S**      03 WF-NS-L01-XUNS         
*S**      03 WF-NS-L01-CAP          
*S**      03 WF-NS-L01-DSB          
*S**      03 WF-NS-L01-DSB-DATE     
*S**      03 WF-NS-L01-SUBSIDY      
*S**      03 WF-NS-L01-SUBSIDY-DT   
*S**      03 WW-FILLER8 
*S**      03 WF-NS-L02-SEQ          
*S**      03 WF-NS-L02-DFLT         
*S**      03 WF-NS-L02-CHG          
*S**      03 WF-NS-L02-TYPE         
*S**      03 WF-NS-L02-AMT          
*S**      03 WF-NS-L02-STA          
*S**      03 WF-NS-L02-STA-DATE     
*S**      03 WF-NS-L02-OUT          
*S**      03 WF-NS-L02-OUT-DATE     
*S**      03 WF-NS-L02-BEG-DATE     
*S**      03 WF-NS-L02-END-DATE     
*S**      03 WF-NS-L02-GA           
*S**      03 WF-NS-L02-CTC-TYPE     
*S**      03 WF-NS-L02-SCHOOL       
*S**      03 WF-NS-L02-CONTACT      
*S**      03 WF-NS-L02-LEVEL        
*S**      03 WF-NS-L02-XUNS         
*S**      03 WF-NS-L02-CAP          
*S**      03 WF-NS-L02-DSB          
*S**      03 WF-NS-L02-DSB-DATE     
*S**      03 WF-NS-L02-SUBSIDY      
*S**      03 WF-NS-L02-SUBSIDY-DT   
*S**      03 WW-FILLER9 
*S**      03 WF-NS-L03-SEQ          
*S**      03 WF-NS-L03-DFLT         
*S**      03 WF-NS-L03-CHG          
*S**      03 WF-NS-L03-TYPE         
*S**      03 WF-NS-L03-AMT          
*S**      03 WF-NS-L03-STA          
*S**      03 WF-NS-L03-STA-DATE     
*S**      03 WF-NS-L03-OUT          
*S**      03 WF-NS-L03-OUT-DATE     
*S**      03 WF-NS-L03-BEG-DATE     
*S**      03 WF-NS-L03-END-DATE     
*S**      03 WF-NS-L03-GA           
*S**      03 WF-NS-L03-CTC-TYPE     
*S**      03 WF-NS-L03-SCHOOL       
*S**      03 WF-NS-L03-CONTACT      
*S**      03 WF-NS-L03-LEVEL        
*S**      03 WF-NS-L03-XUNS         
*S**      03 WF-NS-L03-CAP          
*S**      03 WF-NS-L03-DSB          
*S**      03 WF-NS-L03-DSB-DATE     
*S**      03 WF-NS-L03-SUBSIDY      
*S**      03 WF-NS-L03-SUBSIDY-DT   
*S**      03 WW-FILLER10
*S**      03 WF-NS-L04-SEQ          
*S**      03 WF-NS-L04-DFLT         
*S**      03 WF-NS-L04-CHG          
*S**      03 WF-NS-L04-TYPE         
*S**      03 WF-NS-L04-AMT          
*S**      03 WF-NS-L04-STA          
*S**      03 WF-NS-L04-STA-DATE     
*S**      03 WF-NS-L04-OUT          
*S**      03 WF-NS-L04-OUT-DATE     
*S**      03 WF-NS-L04-BEG-DATE     
*S**      03 WF-NS-L04-END-DATE     
*S**      03 WF-NS-L04-GA           
*S**      03 WF-NS-L04-CTC-TYPE     
*S**      03 WF-NS-L04-SCHOOL       
*S**      03 WF-NS-L04-CONTACT      
*S**      03 WF-NS-L04-LEVEL        
*S**      03 WF-NS-L04-XUNS         
*S**      03 WF-NS-L04-CAP          
*S**      03 WF-NS-L04-DSB          
*S**      03 WF-NS-L04-DSB-DATE     
*S**      03 WF-NS-L04-SUBSIDY      
*S**      03 WF-NS-L04-SUBSIDY-DT   
*S**      03 WW-FILLER11
*S**      03 WF-NS-L05-SEQ          
*S**      03 WF-NS-L05-DFLT         
*S**      03 WF-NS-L05-CHG          
*S**      03 WF-NS-L05-TYPE         
*S**      03 WF-NS-L05-AMT          
*S**      03 WF-NS-L05-STA          
*S**      03 WF-NS-L05-STA-DATE     
*S**      03 WF-NS-L05-OUT          
*S**      03 WF-NS-L05-OUT-DATE     
*S**      03 WF-NS-L05-BEG-DATE     
*S**      03 WF-NS-L05-END-DATE     
*S**      03 WF-NS-L05-GA           
*S**      03 WF-NS-L05-CTC-TYPE     
*S**      03 WF-NS-L05-SCHOOL       
*S**      03 WF-NS-L05-CONTACT      
*S**      03 WF-NS-L05-LEVEL        
*S**      03 WF-NS-L05-XUNS         
*S**      03 WF-NS-L05-CAP          
*S**      03 WF-NS-L05-DSB          
*S**      03 WF-NS-L05-DSB-DATE     
*S**      03 WF-NS-L05-SUBSIDY      
*S**      03 WF-NS-L05-SUBSIDY-DT   
*S**      03 WW-FILLER12
*S**      03 WF-NS-L06-SEQ          
*S**      03 WF-NS-L06-DFLT         
*S**      03 WF-NS-L06-CHG          
*S**      03 WF-NS-L06-TYPE         
*S**      03 WF-NS-L06-AMT          
*S**      03 WF-NS-L06-STA          
*S**      03 WF-NS-L06-STA-DATE     
*S**      03 WF-NS-L06-OUT          
*S**      03 WF-NS-L06-OUT-DATE     
*S**      03 WF-NS-L06-BEG-DATE     
*S**      03 WF-NS-L06-END-DATE     
*S**      03 WF-NS-L06-GA           
*S**      03 WF-NS-L06-CTC-TYPE     
*S**      03 WF-NS-L06-SCHOOL       
*S**      03 WF-NS-L06-CONTACT      
*S**      03 WF-NS-L06-LEVEL        
*S**      03 WF-NS-L06-XUNS         
*S**      03 WF-NS-L06-CAP          
*S**      03 WF-NS-L06-DSB          
*S**      03 WF-NS-L06-DSB-DATE     
*S**      03 WF-NS-L06-SUBSIDY      
*S**      03 WF-NS-L06-SUBSIDY-DT   
*S**      03 WW-FILLER13
*S**    02 WF-NSLDS2    
*S**      03 WF-NS-LIMIT-EXCP       
*S**      03 WF-NS-DSB-DATE-FLAG    
*S**      03 WF-NS-PLUS-TOTAL       
*S**      03 WF-NS-LIFE-MAX-TOT     
*S**      03 WF-NS-CMB-LIMIT-GRAD   
*S**      03 WF-NS-CMB-LIMIT-PROF   
*S**      03 WF-NS-PLUS-LIMIT-FLAG  
*S**      03 WF-NS-LIFE-MAX-LIMIT   
*S**END-DEFINE          
*S***       
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**MOVE BY POSITION WW-PDA TO WW-GDA           
*S***       
*S***       
*S*** Initialize output fields.     
*S**ASSIGN #SAVE-MSG = ##MSG        
*S**RESET WWAOBJ.OUTPUTS ##MSG ##MSG-DATA(*) ##RETURN-CODE  
*S***       
*S*** Build up prime key of the object.         
*S**MOVE BY NAME WFNSL27D TO WFNSL27D-ID.STRUCTURE          
*S***       
*S*************************************************************************         
*S***       
*S*** Set up repeat to allow escape from within a subroutine.           
*S**PROG.   
*S**REPEAT  
*S***       
*S*** Decide what to do based on function supplied.         
*S**  DECIDE ON FIRST VALUE WWAOBJ.#FUNCTION    
*S**    VALUE 'GET' /* Read the object          
*S**      /*
*S**      /* Object exists, get object          
*S**      PERFORM GET-OBJECT        
*S**      PERFORM SET-OBJECT-ID     
*S**    VALUE 'NEXT' /* Read the next higher object         
*S**      /*
*S**      /* Histogram for next higher value from one in object.        
*S**      HISTOGRAM(2) NEXT-VIEW FOR WF-NSLDS-KEY           
*S**                   STARTING FROM WFNSL27D-ID
*S**        IF NEXT-VIEW.WF-NSLDS-KEY NE WFNSL27D-ID THEN   
*S**          ASSIGN WFNSL27D-ID = NEXT-VIEW.WF-NSLDS-KEY   
*S**          MOVE BY NAME WFNSL27D-ID.STRUCTURE TO WFNSL27D
*S**          PERFORM GET-OBJECT    
*S**          ASSIGN ##MSG-DATA(1) = #OBJECT    
*S**          ESCAPE BOTTOM         
*S**        END-IF      
*S**      END-HISTOGRAM 
*S**      /*
*S**      /* No records beyond current record.  
*S**      IF NOT WWAOBJ.#EXISTS     
*S**        ASSIGN ##MSG = 'End of data reached'
*S**        ASSIGN ##RETURN-CODE = 'W'          /* Warning. 
*S**      END-IF        
*S**    VALUE 'UPDATE','DELETE' /* Modify or purge current object       
*S**      /*
*S**      /* Make sure the record was held prior to updating.           
*S**      IF WFNSL27D-ID NE WFNSL27R.HELD-ID THEN           
*S**        ASSIGN ##MSG = 'Record not in held status'      
*S**        PERFORM PROCESS-ERROR   
*S**      END-IF        
*S**      PERFORM HOLD-OBJECT       
*S**      PERFORM SET-OBJECT-ID     
*S**      IF WWAOBJ.#FUNCTION = 'DELETE'        
*S**        ASSIGN ##MSG = 'Record purged successfully'     
*S**      END-IF        
*S**    VALUE 'EXISTS' /* Existence check       
*S**      PERFORM CLEAR 
*S**      PERFORM CHECK-EXISTENCE   
*S**    VALUE 'STORE' /* Add new object         
*S**      PERFORM CREATE-OBJECT     
*S**      PERFORM SET-OBJECT-ID     
*S**    VALUE 'INITIALIZE'          
*S**      PERFORM CLEAR 
*S**    ANY 
*S**      PERFORM RELOAD-MSG        
*S**      MOVE BY POSITION WW-GDA TO WW-PDA     
*S**      ESCAPE BOTTOM(PROG.) IMMEDIATE /* All done.       
*S**    NONE /* Unknown action code 
*S**      ASSIGN ##MSG-DATA(1) = #OBJECT        
*S**      ASSIGN ##MSG-DATA(2) = WWAOBJ.#FUNCTION           
*S**      ASSIGN ##MSG = 'Invalid:1:function specified::2:' 
*S**      PERFORM PROCESS-ERROR     
*S**  END-DECIDE        
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PROCESS-ERROR 
*S*************************************************************************         
*S***       
*S**  IF ##MSG-DATA(1) = ' '               /* Set default for :1:.      
*S**    PERFORM SET-OBJECT-ID       
*S**  END-IF
*S**  ASSIGN ##RETURN-CODE = 'E' /* Error.      
*S**  IF #DISP-BACKOUT  
*S**    WRITE 'Issuing Backout transaction for action:' #FUNCTION       
*S**          / '  in subprogram' *PROGRAM      
*S**  END-IF
*S**  BACKOUT TRANSACTION           
*S**  MOVE BY POSITION WW-GDA TO WW-PDA         
*S**  ESCAPE BOTTOM(PROG.) IMMEDIATE
*S**END-SUBROUTINE /* PROCESS-ERROR 
*S***       
*S**END-REPEAT          
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CREATE-OBJECT 
*S*************************************************************************         
*S***       
*S**  ASSIGN WFNSL27D.WW-CDATE = *DATX          
*S***       
*S*** Don't allow the key to be null.           
*S**  IF WFNSL27D-ID = NEXT-VIEW.WF-NSLDS-KEY /* Compare with null      
*S**    ASSIGN ##MSG-DATA(1) = #OBJECT          
*S**    ASSIGN ##MSG = ':1:identifier is required'          
*S**    PERFORM PROCESS-ERROR       
*S**  END-IF
*S**  /*    
*S**  /* If object already exist, return with error.        
*S**  PERFORM CHECK-EXISTENCE       
*S**  IF WWAOBJ.#EXISTS THEN        
*S**    ASSIGN ##MSG = ':1:already exists'      
*S**    PERFORM PROCESS-ERROR       
*S**  END-IF
*S**  PERFORM EDIT-OBJECT /* Pre-edit object header         
*S**  ASSIGN WF-NSLDS-2627.WW-HOLD = *TIMN      
*S**  ASSIGN WFNSL27R.INTERVENING-UPD-FLD =     
*S**    WF-NSLDS-2627.WW-HOLD       
*S**  ASSIGN WFNSL27R.HELD-ID = WFNSL27D-ID     
*S**  STORE WF-NSLDS-2627           
*S**END-SUBROUTINE /* CREATE-OBJECT 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE GET-OBJECT    
*S*************************************************************************         
*S***       
*S*** Get the primary object record.
*S**  PERFORM CLEAR     
*S**  FIND WF-NSLDS-2627 WITH WF-NSLDS-KEY = WFNSL27D-ID    
*S**    IF NO RECORDS FOUND         
*S**      /*
*S**      /* Return the fact that the object does not exist.
*S**      ESCAPE ROUTINE
*S**    END-NOREC       
*S**    ASSIGN WWAOBJ.#EXISTS = TRUE
*S**    /*  
*S**    /* "Hold" the record by capturing the value of the update flag. 
*S**    ASSIGN WFNSL27R.INTERVENING-UPD-FLD =   
*S**           WF-NSLDS-2627.WW-HOLD
*S**    /*  
*S**    /* Shift primary entity information to object       
*S**    MOVE BY NAME WF-NSLDS-2627 TO WFNSL27D  
*S**    ASSIGN WFNSL27R.HELD-ID = WFNSL27D-ID   
*S**  END-FIND          
*S**END-SUBROUTINE /* GET-OBJECT    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE HOLD-OBJECT   
*S*************************************************************************         
*S***       
*S*** Get primary entity and process it.        
*S**  HOLD-PRIME.       
*S**  FIND WF-NSLDS-2627 WITH       
*S**      WF-NSLDS-KEY = WFNSL27D-ID
*S**    IF NO RECORDS FOUND         
*S**      /*
*S**      /* Trying to process an object that doesn't exist.
*S**      ASSIGN ##MSG = 'Intervening purge, please try again'          
*S**      RESET WFNSL27R
*S**      PERFORM PROCESS-ERROR     
*S**    END-NOREC       
*S**    IF WFNSL27R.INTERVENING-UPD-FLD NE      
*S**       WF-NSLDS-2627.WW-HOLD THEN           
*S**      ASSIGN ##MSG = 'Intervening update, please try again'         
*S**      RESET WFNSL27R
*S**      PERFORM PROCESS-ERROR     
*S**    END-IF          
*S**    ASSIGN WWAOBJ.#EXISTS = TRUE
*S**    PERFORM EDIT-OBJECT /* Pre-edit object header       
*S**    DECIDE ON EVERY VALUE WWAOBJ.#FUNCTION  
*S**      VALUE 'UPDATE'
*S**        ASSIGN WF-NSLDS-2627.WW-HOLD = *TIMN
*S**        ASSIGN WF-NSLDS-2627.WW-MDATE = *DATX           
*S**        ASSIGN WFNSL27R.INTERVENING-UPD-FLD =           
*S**          WF-NSLDS-2627.WW-HOLD 
*S**        UPDATE(HOLD-PRIME.)     
*S**      VALUE 'DELETE'
*S**        DELETE(HOLD-PRIME.)     
*S**        RESET WFNSL27R.HELD-ID  
*S**      NONE IGNORE   
*S**    END-DECIDE      
*S**  END-FIND          
*S**END-SUBROUTINE /* HOLD-OBJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-AND-UPDATE-OBJECT /* Process all sub-entities           
*S*************************************************************************         
*S***       
*S**  ESCAPE ROUTINE /* No sub-entities         
*S**END-SUBROUTINE /* CHECK-AND-UPDATE-OBJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE EDIT-OBJECT   
*S*************************************************************************         
*S***       
*S**  IF WWAOBJ.#FUNCTION = 'UPDATE' OR = 'STORE'           
*S**    /*  
*S**    /* Load file view           
*S**    MOVE BY NAME WFNSL27D TO WF-NSLDS-2627  
*S**  END-IF
*S**END-SUBROUTINE /* EDIT-OBJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-EXISTENCE           
*S*************************************************************************         
*S***       
*S*** Check whether object currently exists.    
*S**  EXISTENCE-CHECK.  
*S**  HISTOGRAM(1) NEXT-VIEW FOR WF-NSLDS-KEY   
*S**               FROM WFNSL27D-ID THRU WFNSL27D-ID        
*S**    ASSIGN WWAOBJ.#EXISTS = TRUE
*S**  END-HISTOGRAM     
*S**END-SUBROUTINE /* CHECK-EXISTENCE           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CLEAR         
*S*************************************************************************         
*S***       
*S**  MOVE BY NAME WFNSL27D TO WFNSL27D-ID.STRUCTURE /* Capture key.    
*S**  RESET WFNSL27D WFNSL27R       
*S**  MOVE BY NAME WFNSL27D-ID.STRUCTURE TO WFNSL27D /* Restore key.    
*S**END-SUBROUTINE /* CLEAR         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE GET-DB-CALL   
*S*************************************************************************         
*S***       
*S**INCLUDE WWDBCALL    
*S**END-SUBROUTINE /* GET-DB-CALL   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SET-OBJECT-ID 
*S*************************************************************************         
*S***       
*S**  COMPRESS WFNSL27D.WF-FAO      
*S**       '-' WFNSL27D.WW-STUDENT-ID           
*S**        TO ##MSG-DATA(1) LEAVING NO         
*S**  COMPRESS #OBJECT ##MSG-DATA(1) TO ##MSG-DATA(1)       
*S**END-SUBROUTINE /* SET-OBJECT-ID 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE RELOAD-MSG    
*S*************************************************************************         
*S***       
*S*** If no messages set in subprogram, reset passed message
*S**  IF ##MSG = ' '    
*S**    ASSIGN ##MSG = #SAVE-MSG    
*S**  END-IF
*S**END-SUBROUTINE /* RELOAD-MSG    
*S**END     
