*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: 2026-27 NSLDS Display          
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program presents the NSLDS Display 
*S****SAG DESCS(2): for the 2026-27 processing year.        
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100000000 
*S****SAG OBJECT-NAME: WFNSL27O     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFNSD27M     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFNSD27P           
*S*** System   : FINANCIER          
*S*** Title    : 2026-27 NSLDS Display          
*S*** Function : This program presents the NSLDS Display    
*S***            for the 2026-27 processing year.           
*S***       
*S***       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WFNSL27D /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27R /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27S /* Shadow file       
*S**  LOCAL USING WWAOBJ   /* Used by object subprograms    
*S***       
*S**  LOCAL USING WWCONST  /* Constants         
*S**  LOCAL USING WWDIALDA /* Common data for dialog objects.           
*S**  LOCAL USING WWENVIRA /* Used to capture/restore previous environment.         
*S**  LOCAL USING WWKEYLDA /* Used to set function keys and names.      
*S**  LOCAL USING WWVALLDA /* Used by valid values/edit mask routine    
*S**  LOCAL 
*S****SAG DEFINE EXIT PROGRAM-CONSTANTS         
*S**  01 #PGM-YEAR(A4) INIT<'2027'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFNSDNNP'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT EVENT-HISTORY 
*S**  /*    
*S**  /* Literals utilized by Event History routine         
*S**  01 #EVENT-TYPE(A5) CONST<' '> 
*S**  01 #EVENT-DESC(A40) CONST<' '>
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT REQUIREMENTS  
*S**  /*    
*S**  /* Variables Requirement routine          
*S**  01 #REQMNTS(3)    
*S**    02 #REQMNT-TYPE(A1)              /* (A/Application, D/Disbursement)         
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S**    02 #REQMNT-DOC(A6)               /* Document mnemonic           
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S**    02 #REQMNT-PD(A2)                /* (ST/Student, AY/Aid Year)   
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S****SAG END-EXIT      
*S***       
*S*** Scalar Constants. 
*S**  01 #SUB-PARM(A1)  
*S***       
*S*** Miscellaneous Variables.      
*S**  01 #NEXT(L)                        /* Next processing selected    
*S**  01 #DISPLAYED-KEY(A11) /* Last record found           
*S**  01 #TYPE-POS(P3)  
*S**  01 #KEY(A11)  /* Key field copied from map.           
*S**  01 #NEW-OBJECT(L)         /* GET was done on different object     
*S**  01 #BYPASS-OBJECT(L)      /* I/O was done via subprogram          
*S**  01 #BYPASS-INPUT(L)       /* do not perform input statement       
*S**  01 #NULL-KEY(A11) 
*S****SAG DEFINE EXIT LOCAL-DATA    
*S**  01 #SUBPGM(A8)    
*S***       
*S**  01 #DISPLAY-FIELDS
*S**    02 #SUB-OUT-N(N6)           
*S**    02 #SUB-PEND-N(N6)          
*S**    02 #SUB-TOTAL-N(N6)         
*S**    02 #UNS-OUT-N(N6)           
*S**    02 #UNS-PEND-N(N6)          
*S**    02 #UNS-TOTAL-N(N6)         
*S**    02 #CMB-OUT-N(N6)           
*S**    02 #CMB-PEND-N(N6)          
*S**    02 #CMB-TOTAL-N(N6)         
*S**    02 #CON-OUT-N(N6)           
*S**    02 #CON-TOTAL-N(N6)         
*S**    02 #TCH-OUT-N(N6)           
*S**    02 #TCH-TOTAL-N(N6)         
*S**    02 #PERK-TOTAL-N(N6)        
*S**    02 #PERK-CUR-N(N6)          
*S**    02 #SUB-USAGE-PD-N(N6)      
*S**    02 REDEFINE #SUB-USAGE-PD-N 
*S**      03 #SUB-USAGE-PD-R(N3.3)  
*S**    02 #SUB-OUT(A7) 
*S**    02 #SUB-PEND(A7)
*S**    02 #SUB-TOTAL(A7)           
*S**    02 #UNS-OUT(A7) 
*S**    02 #UNS-PEND(A7)
*S**    02 #UNS-TOTAL(A7)           
*S**    02 #CMB-OUT(A7) 
*S**    02 #CMB-PEND(A7)
*S**    02 #CMB-TOTAL(A7)           
*S**    02 #CON-OUT(A7) 
*S**    02 #CON-TOTAL(A7)           
*S**    02 #TCH-OUT(A7) 
*S**    02 #TCH-TOTAL(A7)           
*S**    02 #PERK-TOTAL(A7)          
*S**    02 #PERK-CUR(A7)
*S**    02 #ENROLLMENT(A1)          
*S**    02 #PELL-LEU(A8)
*S**    02 #LEU-FLAG(A1)
*S**    02 #SUB-LE-FLAG(A1)         
*S**    02 #SUB-USAGE-PD(A7)        
*S**    02 #TEACH-TOTAL-UG-N(N6)    
*S**    02 #TEACH-TOTAL-GR-N(N6)    
*S**    02 #TEACH-TOTAL-UG(A7)      
*S**    02 #TEACH-TOTAL-GR(A7)      
*S***       
*S**  01 #TEMP-LEU(A7)  
*S**  01 REDEFINE #TEMP-LEU         
*S**    02 #TEMP-LEU-N(N2.5)        
*S**  01 #HOLD-LEU(N4.3)
*S**  01 #TAB-PELL(A1)  
*S**  01 #CNT-PELL(A2)  
*S**  01 #CNT-PELL-N(N2)
*S**  01 #TAB-TCH(A1)   
*S**  01 #CNT-TCH(A2)   
*S**  01 #CNT-TCH-N(N2) 
*S**  01 #TAB-LOAN(A1)  
*S**  01 #CNT-LOAN(A2)  
*S**  01 #CNT-LOAN-N(N2)
*S***       
*S**  LOCAL USING WFISZ27D          
*S****SAG END-EXIT      
*S**END-DEFINE          
*S***       
*S***       
*S*** Define Formats    
*S**FORMAT PS=23 KD=ON LS=133 ZP=OFF
*S***       
*S**PERFORM INITIALIZATIONS         
*S***       
*S*************************************************************************         
*S***       
*S**PROG.   
*S**REPEAT                                           /* until exit action           
*S**  /*    
*S**NEW-SCREEN.         
*S**  REPEAT   /* Escape this repeat with indexes set as desired.       
*S****SAG DEFINE EXIT AFTER-NEW-SCREEN          
*S**    /*  
*S**    /* Processing to be performed after the NEW-SCREEN REPEAT verb  
*S**    IF ##AID-YEAR NE #PGM-YEAR  
*S**      ESCAPE BOTTOM(PROG.)      
*S**    END-IF          
*S****SAG END-EXIT      
*S**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFNSL27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM NSLDS-2627-SECURITY NSLDS-2627-CNTL-VARS  
*S**      RESET INITIAL NSLDS-2627-LOGICALS     
*S**      /*
*S**      PERFORM REQUIRED-FIELD-CHECK REQUIRED-FIELD(*)    
*S**      PERFORM SET-KEYS          
*S**    END-IF          
*S**    /*  
*S**    /* Load appropriate function
*S**    IF #ADD-OBJECT  
*S**      ASSIGN #FUNCTION = 'STORE'
*S**      RESET #ADD-OBJECT         
*S**    ELSE
*S**      IF #DISPLAYED-KEY NE #KEY 
*S**         OR #KEY = #NULL-KEY    
*S**        ASSIGN #FUNCTION = 'GET'
*S**      ELSE          
*S**        ASSIGN #FUNCTION = 'UPDATE'         
*S**      END-IF        
*S**    END-IF          
*S****SAG DEFINE EXIT BEFORE-CALL-OBJECT        
*S**    /*  
*S**    /* Load key info from GDA, allows selection criteria
*S**    /* to be properly processed 
*S**    MOVE ##STUDENT-ID TO WFNSL27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFNSL27D.WF-FAO        
*S****SAG END-EXIT      
*S**    /*  
*S**    /* Perform object I/O subprogram        
*S**    IF #BYPASS-OBJECT           
*S**      RESET #BYPASS-OBJECT      
*S**    ELSE
*S**      PERFORM CALL-OBJECT       
*S**    END-IF          
*S****SAG DEFINE EXIT AFTER-CALL-OBJECT         
*S**    /*  
*S**    PERFORM EXTRACT-ISIR-NSLDS-2627 WFISZ27D
*S**    /*  
*S**    /*  Mask numeric NSLDS fields           
*S**    RESET #DISPLAY-FIELDS       
*S**    IF WFNSL27D.WF-NS-SUB-OUT = MASK(999999)
*S**      ASSIGN #SUB-OUT-N = VAL(WFNSL27D.WF-NS-SUB-OUT)   
*S**      MOVE EDITED #SUB-OUT-N (EM=ZZZ,ZZZ) TO #SUB-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-SUB-PEND = MASK(999999)           
*S**      ASSIGN #SUB-PEND-N = VAL(WFNSL27D.WF-NS-SUB-PEND) 
*S**      MOVE EDITED #SUB-PEND-N (EM=ZZZ,ZZZ) TO #SUB-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-SUB-TOTAL = MASK(999999)          
*S**      ASSIGN #SUB-TOTAL-N = VAL(WFNSL27D.WF-NS-SUB-TOTAL)           
*S**      MOVE EDITED #SUB-TOTAL-N (EM=ZZZ,ZZZ) TO #SUB-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-OUT = MASK(999999)
*S**      ASSIGN #UNS-OUT-N = VAL(WFNSL27D.WF-NS-UNS-OUT)   
*S**      MOVE EDITED #UNS-OUT-N (EM=ZZZ,ZZZ) TO #UNS-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-PEND = MASK(999999)           
*S**      ASSIGN #UNS-PEND-N = VAL(WFNSL27D.WF-NS-UNS-PEND) 
*S**      MOVE EDITED #UNS-PEND-N (EM=ZZZ,ZZZ) TO #UNS-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-TOTAL = MASK(999999)          
*S**      ASSIGN #UNS-TOTAL-N = VAL(WFNSL27D.WF-NS-UNS-TOTAL)           
*S**      MOVE EDITED #UNS-TOTAL-N (EM=ZZZ,ZZZ) TO #UNS-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-OUT = MASK(999999)
*S**      ASSIGN #CMB-OUT-N = VAL(WFNSL27D.WF-NS-CMB-OUT)   
*S**      MOVE EDITED #CMB-OUT-N (EM=ZZZ,ZZZ) TO #CMB-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-PEND = MASK(999999)           
*S**      ASSIGN #CMB-PEND-N = VAL(WFNSL27D.WF-NS-CMB-PEND) 
*S**      MOVE EDITED #CMB-PEND-N (EM=ZZZ,ZZZ) TO #CMB-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-TOTAL = MASK(999999)          
*S**      ASSIGN #CMB-TOTAL-N = VAL(WFNSL27D.WF-NS-CMB-TOTAL)           
*S**      MOVE EDITED #CMB-TOTAL-N (EM=ZZZ,ZZZ) TO #CMB-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CON-OUT = MASK(999999)
*S**      ASSIGN #CON-OUT-N = VAL(WFNSL27D.WF-NS-CON-OUT)   
*S**      MOVE EDITED #CON-OUT-N (EM=ZZZ,ZZZ) TO #CON-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CON-TOTAL = MASK(999999)          
*S**      ASSIGN #CON-TOTAL-N = VAL(WFNSL27D.WF-NS-CON-TOTAL)           
*S**      MOVE EDITED #CON-TOTAL-N (EM=ZZZ,ZZZ) TO #CON-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-PERK-TOTAL = MASK(999999)         
*S**      ASSIGN #PERK-TOTAL-N = VAL(WFNSL27D.WF-NS-PERK-TOTAL)         
*S**      MOVE EDITED #PERK-TOTAL-N (EM=ZZZ,ZZZ) TO #PERK-TOTAL         
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-PERK-CUR = MASK(999999)           
*S**      ASSIGN #PERK-CUR-N = VAL(WFNSL27D.WF-NS-PERK-CUR) 
*S**      MOVE EDITED #PERK-CUR-N (EM=ZZZ,ZZZ) TO #PERK-CUR 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-TCH-TOTAL-UG = MASK(999999)       
*S**      ASSIGN #TEACH-TOTAL-UG-N = VAL(WFNSL27D.WF-NS-TCH-TOTAL-UG)   
*S**      MOVE EDITED #TEACH-TOTAL-UG-N (EM=ZZZ,ZZZ) TO #TEACH-TOTAL-UG 
*S**    ELSE
*S**      MOVE WFNSL27D.WF-NS-TCH-TOTAL-UG TO #TEACH-TOTAL-UG           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-TCH-TOTAL-GR = MASK(999999)       
*S**      ASSIGN #TEACH-TOTAL-GR-N = VAL(WFNSL27D.WF-NS-TCH-TOTAL-GR)   
*S**      MOVE EDITED #TEACH-TOTAL-GR-N (EM=ZZZ,ZZZ) TO #TEACH-TOTAL-GR 
*S**    ELSE
*S**      MOVE WFNSL27D.WF-NS-TCH-TOTAL-GR TO #TEACH-TOTAL-GR           
*S**    END-IF          
*S**    /*  
*S**    /*  Load count fields       
*S**    RESET #CNT-PELL   #CNT-TCH   #CNT-LOAN  
*S**          #CNT-PELL-N #CNT-TCH-N #CNT-LOAN-N
*S**    DECIDE FOR EVERY CONDITION  
*S**      WHEN WFNSL27D.WF-NS-P1-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-P2-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-P3-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-T1-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-T2-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-T3-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-L01-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L02-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L03-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L04-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L05-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L06-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN NONE     
*S**        IGNORE      
*S**    END-DECIDE      
*S**    MOVE EDITED #CNT-PELL-N (EM=Z9) TO #CNT-PELL        
*S**    MOVE EDITED #CNT-TCH-N  (EM=Z9) TO #CNT-TCH         
*S**    MOVE EDITED #CNT-LOAN-N (EM=Z9) TO #CNT-LOAN        
*S**    /*  
*S**    /* Pell LEU and Enrollment fields       
*S**    MOVE WFNSL27D.WF-NS-C-LEU-FLAG TO #LEU-FLAG         
*S**    MOVE WFNSL27D.WF-NS-C-LEU TO #TEMP-LEU  
*S**    COMPUTE #HOLD-LEU = #TEMP-LEU-N * 100   
*S**    MOVE EDITED #HOLD-LEU (EM=ZZZZ.999) TO #PELL-LEU    
*S**    MOVE WFNSL27D.WF-NS-C-ENR-PATTERN TO #ENROLLMENT    
*S**    /*  
*S**    IF WFNSL27D.WF-NS-C-SUB-USAGE-PD = MASK(999999)     
*S**      ASSIGN #SUB-USAGE-PD-N = VAL(WFNSL27D.WF-NS-C-SUB-USAGE-PD)   
*S**      MOVE EDITED #SUB-USAGE-PD-R (EM=ZZZ.999) TO #SUB-USAGE-PD     
*S**    END-IF          
*S**    MOVE WFNSL27D.WF-NS-C-SUB-LE-FLAG TO #SUB-LE-FLAG   
*S****SAG END-EXIT      
*S**    /*  
*S**    /* Load shadow file definitions for appropriate map 
*S**    IF NOT #CONFIRM-PURGE       
*S**      MOVE LOAD TO #SUB-PARM    
*S**      PERFORM CALL-EXT-SUB      
*S**    END-IF          
*S**    /*  
*S**    /* Assign appropriate message           
*S**    IF ##MSG = SPACE
*S**      DECIDE ON FIRST VALUE OF #FUNCTION    
*S**        VALUE 'GET' 
*S**          IF #ADD-OBJECT        
*S**            COMPRESS 'This information not currently stored for #TEMP,'         
*S**              'ready to add' INTO ##MSG     
*S**          ELSE      
*S**            COMPRESS 'To modify the current #TEMP information,'     
*S**              'make changes and press ENTER' INTO ##MSG 
*S**          END-IF    
*S**        VALUE 'NEXT'
*S**          COMPRESS 'Next #TEMP information has been displayed'      
*S**            INTO ##MSG          
*S**        VALUE 'UPDATE'          
*S**          COMPRESS '#TEMP information has been modified'
*S**            INTO ##MSG          
*S**        VALUE 'STORE'           
*S**          COMPRESS '#TEMP information has been added'   
*S**            INTO ##MSG          
*S**        VALUE 'DELETE'          
*S**          IF #CONFIRM-PURGE     
*S**            COMPRESS '#TEMP information has been purged'
*S**              INTO ##MSG        
*S**          ELSE      
*S**            COMPRESS 'Press ENTER to confirm purge'     
*S**              INTO ##MSG        
*S**          END-IF    
*S**        ANY         
*S**          EXAMINE ##MSG FOR '#TEMP' AND REPLACE WITH ##SYSTEM-DATA-TYPE         
*S**          EXAMINE ##MSG FOR ##SYSTEM-DATA-TYPE GIVING POSITION #TYPE-POS        
*S**          IF #TYPE-POS = 1      
*S**            EXAMINE SUBSTRING(##MSG,1,1) AND TRANSLATE INTO UPPER CASE          
*S**          END-IF    
*S**        NONE        
*S**          IGNORE    
*S**      END-DECIDE    
*S**    END-IF          
*S**    SET CONTROL 'WB'
*S**    /*  
*S**    /* INPUT processing         
*S**    /*  
*S**    /* Input Map    
*S**    IF NOT #BYPASS-INPUT        
*S**      INPUT WITH TEXT ##MSG,    
*S**                      ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3)     
*S**            USING MAP 'WFNSD27M'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S****SAG DEFINE EXIT AFTER-INPUT   
*S**    /*  
*S**    /*  If Expand key selected, fetch Pell/TEACH/Loan detail        
*S**    IF *PF-KEY = WWKEYLDA.#EXPAND-KEY       
*S**      DECIDE FOR FIRST CONDITION
*S**        WHEN *CURS-FIELD = POS(#TAB-PELL)        /* Pell payments   
*S**          MOVE 'WFN27PGN' TO #SUBPGM        
*S**        WHEN *CURS-FIELD = POS(#TAB-TCH)         /* TEACH payments  
*S**          MOVE 'WFN27TGN' TO #SUBPGM        
*S**        WHEN *CURS-FIELD = POS(#TAB-LOAN)        /* Loan detail     
*S**          MOVE 'WFN27LNN' TO #SUBPGM        
*S**        WHEN ANY    
*S**          PERFORM PROCESS-NSL-SUBPGM        
*S**        WHEN NONE   
*S**          REINPUT 'Not an expandable field' ALARM       
*S**      END-DECIDE    
*S**      PERFORM SET-KEYS          
*S**      ESCAPE TOP    
*S**    END-IF          
*S****SAG END-EXIT      
*S**    /*  
*S**    /*  
*S**    /* Check standard PF-Keys   
*S****SAG DEFINE EXIT BEFORE-STD-KEY-PROCESSING 
*S**    /*  
*S**    /* Processing to be performed prior to 'standard key' processing
*S**    /*  Trigger year-specific routing program exit      
*S**    IF *PF-KEY = WWKEYLDA.#RETURN-KEY       
*S**      MOVE 'EXIT' TO ##PASS-KEY 
*S**    END-IF          
*S****SAG END-EXIT      
*S**    INCLUDE WWSTDKEY
*S**    /*  
*S**    /* Trap invalid PF-Keys.    
*S**    IF *PF-KEY = 'ENTR' OR = WWKEYLDA.#SELECT-KEY       
*S****SAG DEFINE EXIT VALID-PFKEYS  
*S**       OR = WWKEYLDA.#EXPAND-KEY
*S****SAG END-EXIT      
*S**      IGNORE        
*S**    ELSE
*S**      REINPUT 'Invalid program function key' ALARM      
*S**    END-IF          
*S**    /*  
*S**    /* Perform edit routine     
*S**    RESET INITIAL #FAIL-EDIT    
*S**    MOVE EDIT TO #SUB-PARM      
*S**    PERFORM CALL-EXT-SUB        
*S**    IF #FAIL-EDIT   
*S**      REINPUT FULL 'Edit errors occurred'   
*S**              MARK #MARK-FIELD ALARM        
*S**    END-IF          
*S**    /*  
*S*************************************************************************         
*S**DEFINE SUBROUTINE NEW-SCREEN    
*S*************************************************************************         
*S**  /*    
*S**  /* Subroutine to allow escape from screen loop        
*S**  ESCAPE BOTTOM(NEW-SCREEN.) IMMEDIATE      
*S**END-SUBROUTINE /* NEW-SCREEN    
*S**  /*    
*S**  END-REPEAT /* on NEW-SCREEN   
*S**END-REPEAT /* on Repeat of Program.         
*S***       
*S**PERFORM FINAL-PROCESSING        
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-EXT-SUB  
*S*************************************************************************         
*S**  /*    
*S**  /* Call Map specific external subroutine  
*S**  PERFORM WFNSD27M-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFNSL27D WFNSL27D-ID WFNSL27R WFNSL27S        
*S**END-SUBROUTINE /* CALL-EXT-SUB  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT   
*S*************************************************************************         
*S**  /*    
*S**  /* Prior to processing object 
*S**  IF WWAOBJ.#FUNCTION = 'DELETE'
*S**    RESET #CONFIRM-PURGE        
*S**  END-IF
*S**  /*    
*S**  /* Assign #KEY to equal the input fields  
*S**  MOVE BY NAME WFNSL27D TO WFNSL27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFNSL27D-ID     
*S**  /*    
*S**  /* Invoke subprogram to process object    
*S**  PERFORM CALL-OBJECT-IO        
*S**  /*    
*S**  IF WWAOBJ.#FUNCTION = 'GET' AND           
*S**     NOT WWAOBJ.#EXISTS         
*S**    ASSIGN #ADD-OBJECT = TRUE   
*S**  END-IF
*S**  /*    
*S**  ASSIGN #DISPLAYED-KEY = WFNSL27D-ID       
*S**  /*    
*S**  /* Reset #KEY if next record displayed    
*S**  IF #FUNCTION = 'NEXT'         
*S**    ASSIGN #KEY = #DISPLAYED-KEY
*S**  END-IF
*S**  /*    
*S**  /* Set logical for update processing      
*S**  IF #FUNCTION = 'STORE'        
*S**            OR = 'UPDATE'       
*S**    ASSIGN #UPDATE-PERFORMED = TRUE         
*S**  END-IF
*S**  /*    
*S**  /* Update performed           
*S**  IF #UPDATE-PERFORMED THEN     
*S**    CALLNAT 'WWDUTILN' WW-GDA WWVALLDA      
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    END TRANSACTION 
*S**    RESET #UPDATE-PERFORMED #ACTION #ADD-OBJECT #DATA-MODIFIED      
*S**  END-IF
*S**END-SUBROUTINE /* CALL-OBJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-IO
*S*************************************************************************         
*S***       
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-IO
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE FINAL-PROCESSING          
*S*************************************************************************         
*S**  /*    
*S**  INCLUDE WWEND /* Restore environment.     
*S**END-SUBROUTINE /* FINAL-PROCESSING          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE INITIALIZATIONS           
*S*************************************************************************         
*S**  /*    
*S**  INCLUDE WWBEGIN                                /* Capture environment         
*S**  SET CONTROL 'WBM'                  /* Set window size/base        
*S**  /*    
*S**  /* Specify which PF-KEYS are valid, start by resetting all keys,  
*S**  /*  then assign desired keys using RESET INITIAL.     
*S**  INCLUDE WWPFSTD /* Standard PF-Keys.      
*S****SAG DEFINE EXIT SET-PF-KEYS   
*S***       
*S*** Set additional PF Keys        
*S**  RESET INITIAL WWKEYLDA.#SELECT-KEY        
*S**                WWKEYLDA.#EXPAND-KEY        
*S**                WWKEYLDA.#NOTEPAD-KEY       
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* INITIALIZATIONS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SET-KEYS      
*S*************************************************************************         
*S***       
*S**  INCLUDE WWSETKEY /* Set specified keys    
*S**  INCLUDE WWSETHLP /* Set Help keys         
*S**END-SUBROUTINE /* SET-KEY       
*S****SAG DEFINE EXIT MISCELLANEOUS-SUBROUTINES 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PROCESS-NSL-SUBPGM        
*S*************************************************************************         
*S***       
*S*** Call expand subprogram        
*S**  CALLNAT #SUBPGM WW-GDA #DISPLAYED-KEY #ADD-OBJECT     
*S**                  WFNSL27D WFNSL27D-ID WFNSL27R WFNSL27S
*S**                  WWAOBJ        
*S**END-SUBROUTINE /* PROCESS-NSL-SUBPGM        
*S****SAG END-EXIT      
*S**END     
