*H**ANAT8304202605311422405LINUX                            4CAUC     04.2          
*C**                                FATEMP  WFADDLDB                        F S   NN0000        
*D01NAT8304F FATEMP  WFADDLDB                        ZWDNH   ZWDNH           S      
*D02            2026052520324402026052520324400000022001    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFADDLDB           
*S*** System   : FINANCIER          
*S*** Title    : FINANCIER ADD File Load        
*S*** Function : This program loads the ADD file into FINANCIER.  It calls          
*S***            year specific subroutines to handle year-specific      
*S***            processing issues. 
*S***       
*S***       
*S***      Copyright 1995 - 2006 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WWREQIBD /* Input parameter PDA           
*S**  LOCAL USING WFADDDSD /* Passed to object subprogram (WW-ADD)      
*S**  LOCAL USING WFADDDSR /* Passed to object subprogram (WW-ADD)      
*S**  LOCAL USING WWAOBJ   /* Used by object subprograms    
*S***       
*S**  LOCAL USING WWCONST  /* Constants LDA     
*S***       
*S**  LOCAL 
*S**  01 #MAX-READ(P3) INIT<50>     
*S**  01 #MAX-WRITE(P3) INIT<10>    
*S**  01 #ET-READ-COUNTER(P7)       
*S**  01 #ET-WRITE-COUNTER(P7)      
*S***       
*S**  01 #PRINT-LOG(L) INIT<TRUE>   
*S**  01 #HOLD-TERM(A1) 
*S**  01 #SUB(N2)       
*S***       
*S*** ADD process reject reasons    
*S**  01 #ADD-REJECTS   
*S**    02 #REJ-NO-ID(A1)   CONST<'I'>     /* No student ID 
*S**    02 #REJ-NO-FAO(A1)  CONST<'F'>     /* No FAO        
*S**    02 #REJ-NO-NAME(A1) CONST<'N'>     /* No name or match in FINANCIER         
*S**    02 #REJ-STATUS(A1)  CONST<'S'>     /* Status not allowed for load           
*S**    02 #REJ-C-PEND(A1)  CONST<'C'>     /* Correction record pending 
*S**    02 #REJ-C-XMIT(A1)  CONST<'T'>     /* Correction record transmitted         
*S**    02 #REJ-LOCKED(A1)  CONST<'L'>     /* Application locked        
*S**    02 #REJ-PACKGD(A1)  CONST<'P'>     /* Packaging complete        
*S**    02 #REJ-VERIFD(A1)  CONST<'V'>     /* Verification complete     
*S**    02 #REJ-FEDERAL(A1) CONST<'R'>     /* Federal reject case       
*S**    02 #REJ-ACG(A1)     CONST<'G'>     /* ACG without ISIR          
*S**    02 #REJ-NCP(A1)     CONST<'2'>     /* NCP without Profile       
*S**  01 #REJECTED(A1)      CONST<'R'>          
*S**  01 #HOLD-REJECTS  
*S**    02 WF-AD-REJ-OVERRIDE(A1)   
*S**    02 WF-AD-REJ1(A1)           
*S**    02 WF-AD-REJ2(A1)           
*S**    02 WF-AD-REJ3(A1)           
*S**    02 WF-AD-REJ4(A1)           
*S**    02 WF-AD-REJ5(A1)           
*S***       
*S**  01 #PASS-FIELDS   
*S**    02 #PASS-NM-LAST(A20)       
*S**    02 #PASS-NM-FIRST(A20)      
*S**    02 #PASS-NM-MI(A1)          
*S**    02 #PASS-SOURCE(A1)         
*S**    02 #PASS-DOB(A8)
*S**    02 #PASS-SSN(A9)
*S**    02 #PASS-SID(A9)
*S**    02 #PASS-FAO(A2)
*S**    02 #PASS-COLLEGE-CODE(A7)   
*S**    02 #PASS-STAT(A1)           
*S**    02 #PASS-EXISTS(L)          
*S**    02 #CORR-PEND(L)
*S**    02 #CORR-XMIT(L)
*S**    02 #CORR-XMIT-DATE(D)       
*S**    02 #STATUS-FUNCTION(A8)     
*S**    02 #STATUS-DECISION(A1)     
*S***       
*S**  01 #EFC-COMPARE   
*S**    02 #REC-CPS(L)  
*S**    02 #REJ-CPS(L)  
*S**    02 #EFC-CPS(P7) 
*S**    02 #EFC-FIN(P7) 
*S**  01 #EFC-MSG(A12)  
*S***       
*S**  01 #REJECT-PROCESSING         
*S**    02 #CHECK-REJECT(A1)        
*S**    02 #CHECK-OCCURENCE(A1)     
*S**    02 #CHECK-AVAILABLE(A1)     
*S**    02 #PREVIOUSLY-REJECTED(L)  
*S**    02 #REC-PREVIOUSLY-REJECTED(L)          
*S**    02 #REJ-FIRST-TIME(L) INIT <TRUE>       
*S**    02 #ADD-REJECT(L)           
*S***       
*S**  01 #PARAMETER-FIELDS          
*S**    02 #PGM-PARAMETERS          
*S**      03 #EARLIER-REC(A1)       
*S**      03 #FED-REJ-CASE(A1)      
*S**      03 #OVR-FED-REJ(A1)       
*S**      03 #OVR-C-PEND(A1)        
*S**      03 #OVR-C-XMIT(A1)        
*S**      03 #OVR-LOCKED(A1)        
*S**      03 #OVR-VERIFD(A1)        
*S**      03 #OVR-PACKGD(A1)        
*S**    02 #PASSED-PARAMETERS       
*S**      03 #INPUT-COUNTER(P7)     
*S**      03 #NEW-REJ-COUNTER(P7)   
*S**      03 #RE-REJ-COUNTER(P7)    
*S**      03 #BYPASS-COUNTER(P7)    
*S**      03 #ADD-RECORD-COUNTER(P7)
*S**      03 #PROCESSED-RECORD(L)   
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**DEFINE PRINTER(1)   
*S**FORMAT(1) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S**DEFINE PRINTER(2)   
*S**FORMAT(2) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S**DEFINE PRINTER(3)   
*S**FORMAT(3) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S**DEFINE PRINTER(4)   
*S**FORMAT(4) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S***       
*S**AT TOP OF PAGE(1)   
*S**  WRITE(1) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(1)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        28T 'Processing Counts/Errors'      
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(2)   
*S**  WRITE(2) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(2)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        31T 'Field Value Errors'
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name                      Src    Error'      
*S**  SKIP(2) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(3)   
*S**  WRITE(3) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(3)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        33T 'Loaded Students'   
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'Src StudentID        Name                         '        
*S**        '    Birthdate      SSN'
*S**  SKIP(3) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(4)   
*S**  WRITE(4) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(4)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        27T 'CPS/FINANCIER EFC Mismatches'  
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// ' StudentID      Name                         ' 
*S**        ' CPS EFC    FIN EFC'   
*S**  SKIP(4) 1         
*S**END-TOPPAGE         
*S***       
*S**ASSIGN ##PGM-ID = *PROGRAM      
*S**ASSIGN ##BYPASS-TRANSLATION = 'B'           
*S***       
*S**IF *DEVICE = 'BATCH' THEN       
*S**  SET CONTROL 'D' /* Set delimiter mode for batch input 
*S**END-IF  
*S***       
*S*************************************************************************         
*S***       
*S*** Read and edit input parameters
*S**  INPUT(AD=MITL'_' SG=ON IP=OFF ZP=OFF)     
*S**          'Aid Year:' #INPUT-AID-YEAR /     
*S**          'Term:' #INPUT-TERM / 
*S**          'FAO:' #INPUT-FAO /   
*S**          'Run Mode:' #INPUT-RUNMODE /      
*S**          'Effective Date:' #INPUT-EFF-DATE /           
*S**          'Override edits:' /   
*S**          '  Federal Rejects:    ' #OVRD-FED-REJ /      
*S**          '  Corrections pending:' #OVRD-C-PEND /       
*S**          '  Corrections transmt:' #OVRD-C-XMIT /       
*S**          '  Application locked: ' #OVRD-LOCKED /       
*S**          '  Student Verified:'    #OVRD-VERIFD /       
*S**          '  Student Packaged:'    #OVRD-PACKGD /       
*S**  WRITE(1) ' '      
*S**  PERFORM REQUIRED-FIELD-BATCH WWREQIBD     
*S**  WRITE(1)          
*S**    31T 'Aid Year:' ##DISP-AY / 
*S**    36T ##DISP-LIT ##DISP-FAO ///           
*S**  ASSIGN #HOLD-TERM = ##TERM    
*S***       
*S*** Set up keys for sequential file processing
*S**  MOVE ##AID-YEAR TO WFADDDSD.WF-AID-YEAR   
*S**  MOVE ##FAO-ID TO WFADDDSD.WF-FAO          
*S***       
*S***       
*S**PROG.   
*S**  REPEAT
*S**    /*  
*S**    /* Read next ADD record     
*S**    MOVE 'NEXT' TO WWAOBJ.#FUNCTION         
*S**    PERFORM CALL-OBJECT-ADD     
*S**    /*  
*S**    /* End of records to be processed       
*S**    IF NOT WWAOBJ.#EXISTS OR    
*S**       WFADDDSD.WF-AID-YEAR > ##AID-YEAR OR 
*S**       WFADDDSD.WF-FAO > ##FAO-ID           
*S**      ESCAPE BOTTOM(PROG.) IMMEDIATE        
*S**    END-IF          
*S**    /*  
*S**    ADD 1 TO #INPUT-COUNTER     
*S**    ADD 1 TO #ET-READ-COUNTER   
*S**    IF #ET-READ-COUNTER > #MAX-READ         
*S**      PERFORM COMMIT-OR-BACKOUT 
*S**    END-IF          
*S**    /*  
*S**    RESET INITIAL #REJ-FIRST-TIME           
*S**                  #ADD-REJECT   
*S**                  #REC-PREVIOUSLY-REJECTED  
*S**    MOVE BY NAME WF-ADD-REJECT TO #HOLD-REJECTS         
*S**    RESET WFADDDSD.WF-AD-REJ1 WFADDDSD.WF-AD-REJ2       
*S**          WFADDDSD.WF-AD-REJ3 WFADDDSD.WF-AD-REJ4       
*S**          WFADDDSD.WF-AD-REJ5   
*S**    /*  
*S**    /* Verify SID exists        
*S**    MOVE WFADDDSD.WW-ST-SSN TO #PASS-SSN    
*S**    MOVE WFADDDSD.WW-ST-NM-LAST TO #PASS-NM-LAST        
*S**    MOVE WFADDDSD.WW-ST-NM-FIRST TO #PASS-NM-FIRST      
*S**    MOVE WFADDDSD.WW-ST-NM-MI TO #PASS-NM-MI
*S**    MOVE WFADDDSD.WW-ST-DOB TO #PASS-DOB    
*S**    PERFORM DETERMINE-SID #PASS-SSN #PASS-NM-LAST #PASS-NM-FIRST    
*S**                          #PASS-NM-MI #PASS-DOB #PASS-SID           
*S**    IF #PASS-SID NE SPACE       
*S**      MOVE #PASS-SID TO ##SID   
*S**      PERFORM GET-STUDENT-KEY   
*S**    ELSE                                     /* ID reject           
*S**      MOVE #REJ-NO-ID TO #CHECK-REJECT      
*S**      PERFORM PROCESS-REJECT    
*S**      PERFORM UPDATE-REJECT     
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Get Student data         
*S**    PERFORM GET-STUDENT-INFO    
*S**    /*  
*S**    /* No name available        
*S**    IF (WFADDDSD.WW-ST-NM-LAST = SPACE OR   
*S**        WFADDDSD.WW-ST-NM-FIRST = SPACE) AND
*S**       ##COMP-NAME = SPACE      
*S**      MOVE #REJ-NO-NAME TO #CHECK-REJECT    
*S**      PERFORM PROCESS-REJECT    
*S**      PERFORM UPDATE-REJECT     
*S**      ESCAPE TOP    
*S**    ELSE
*S**      IF ##COMP-NAME = SPACE    
*S**        COMPRESS WFADDDSD.WW-ST-NM-LAST COMMA INTO      
*S**          ##COMP-NAME LEAVING NO SPACE      
*S**        COMPRESS ##COMP-NAME WFADDDSD.WW-ST-NM-FIRST    
*S**                             WFADDDSD.WW-ST-NM-MI INTO  
*S**          ##COMP-NAME WITH DELIMITER SPACE  
*S**        MOVE WFADDDSD.WW-ST-SSN TO ##SSN    
*S**        MOVE WFADDDSD.WW-ST-DOB TO ##DOB    
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Processing record, store previous rejects        
*S**    MOVE BY NAME WF-ADD-REJECT TO #HOLD-REJECTS         
*S**    RESET WFADDDSD.WF-AD-REJ1 WFADDDSD.WF-AD-REJ2       
*S**          WFADDDSD.WF-AD-REJ3 WFADDDSD.WF-AD-REJ4       
*S**          WFADDDSD.WF-AD-REJ5   
*S**    /*  
*S**    /* Check processing for student's status
*S**    DECIDE ON FIRST VALUE OF WFADDDSD.WF-AD-SOURCE      
*S**      /*
*S**      /* 2027 (Mid-year OBBBBA mod)         
*S**      VALUE 'F','G','B'         
*S**        MOVE 'Fedl ADD' TO #STATUS-FUNCTION 
*S**      VALUE 'C','N' 
*S**        MOVE 'Prof ADD' TO #STATUS-FUNCTION 
*S**      NONE          
*S**        RESET #STATUS-FUNCTION  
*S**    END-DECIDE      
*S**    PERFORM GET-STATUS-FUNCTION #STATUS-FUNCTION #STATUS-DECISION   
*S**    IF #STATUS-DECISION NE 'Y'  
*S**      IF WFADDDSD.WF-AD-REJ-OVERRIDE NE 'O' 
*S**        FOR #SUB = 1 TO 12      
*S**          IF ##SCHED-RT(#SUB) NE ##SCHED-RT(1) AND      
*S**             ##SCHED-RT (#SUB) NE ' '       
*S**            MOVE ##SCHED-RT(#SUB) TO ##TERM 
*S**            PERFORM GET-STUDENT-INFO        
*S**            PERFORM GET-STATUS-FUNCTION #STATUS-FUNCTION
*S**                                        #STATUS-DECISION
*S**            IF #STATUS-DECISION = 'Y'       
*S**              ESCAPE BOTTOM     
*S**            END-IF  
*S**          END-IF    
*S**        END-FOR     
*S**        MOVE #HOLD-TERM TO ##TERM           
*S**        IF #STATUS-DECISION NE 'Y'          
*S**          MOVE #REJ-STATUS TO #CHECK-REJECT 
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Edits specific to input data type    
*S**    /*  
*S**    /* 2027 (Mid-year OBBBBA mod)           
*S**    IF (WFADDDSD.WF-AD-SOURCE = 'F' OR      
*S**        WFADDDSD.WF-AD-SOURCE = 'B') AND    
*S**       WFADDDSD.WF-AD-SEND-RSN NE 'C'       
*S**        /*          
*S**        /* Edits specific to automatic federal records  
*S**        /*          
*S**        /* Corrections status   
*S**        IF (#OVRD-C-PEND NE 'Y' OR          
*S**            #OVRD-C-XMIT NE 'Y') AND        
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE NE 'O'           
*S**          PERFORM GET-CORRECTIONS-STATUS #CORR-PEND     
*S**                                         #CORR-XMIT #CORR-XMIT-DATE 
*S**        END-IF      
*S**        /*          
*S**        /*  Pending corrections 
*S**        IF #OVRD-C-PEND = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                                 /* Edit override   
*S**        ELSE        
*S**          IF #CORR-PEND                          /* Corrections pending         
*S**            MOVE #REJ-C-PEND TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**        /*          
*S**        /*  Transmitted Corrections         
*S**        IF #OVRD-C-XMIT = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                                 /* Edit override   
*S**        ELSE        
*S**          IF #CORR-XMIT                          /* Corrections xmitted         
*S**            MOVE #REJ-C-XMIT TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**        /*          
*S**        /*  Application record lock status  
*S**        IF #OVRD-LOCKED = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                             /* Edit override       
*S**        ELSE        
*S**          PERFORM GET-FEDERAL-LOCK #PASS-STAT           
*S**          IF #PASS-STAT = 'L'                /* Record locked       
*S**            MOVE #REJ-LOCKED TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**        /*          
*S**        /*  Verification complete           
*S**        IF #OVRD-VERIFD = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                             /* Edit override       
*S**        ELSE        
*S**          PERFORM GET-VERIF-STAT #PASS-STAT 
*S**          IF #PASS-STAT = 'T' OR             /* Within tolerance    
*S**                        = 'P'                /* Exact match         
*S**            MOVE #REJ-VERIFD TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**    END-IF          
*S**    /*  
*S**    /* Edits appropriate for automatic federal records  
*S**    /*   and all non-federal records        
*S**    /*  
*S**    /* 2027 (Mid-year OBBBBA mod)           
*S**    IF ((WFADDDSD.WF-AD-SOURCE = 'F' OR     
*S**         WFADDDSD.WF-AD-SOURCE = 'B') AND   
*S**        WFADDDSD.WF-AD-SEND-RSN NE 'C') OR  
*S**       (WFADDDSD.WF-AD-SOURCE NE 'F' AND    
*S**        WFADDDSD.WF-AD-SOURCE NE 'B')       
*S**        /*          
*S**        /*  Packaging complete  
*S**        IF #OVRD-PACKGD = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                             /* Edit override       
*S**        ELSE        
*S**          PERFORM GET-PACK-STAT #PASS-STAT  
*S**          IF #PASS-STAT NE ' '               /* Student packaged    
*S**            MOVE #REJ-PACKGD TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**    END-IF          
*S**    /*  
*S**    /* Edits appropriate for CSS records    
*S**    IF WFADDDSD.WF-AD-SOURCE = 'C' OR = 'N' 
*S**        /*          
*S**        /*  Application record lock status  
*S**        IF #OVRD-LOCKED = 'Y' OR
*S**           WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'
*S**          IGNORE                             /* Edit override       
*S**        ELSE        
*S**          PERFORM GET-CSS-STATUS #PASS-STAT 
*S**          IF #PASS-STAT = 'L'                /* Record locked       
*S**            MOVE #REJ-LOCKED TO #CHECK-REJECT           
*S**            PERFORM PROCESS-REJECT          
*S**          END-IF    
*S**        END-IF      
*S**    END-IF          
*S**    IF WFADDDSD.WF-AD-SOURCE = 'N'          
*S**        /*          
*S**        /*  NCP record without Profile record           
*S**        PERFORM GET-CSS-STATUS #PASS-STAT   
*S**        IF #PASS-STAT = ' '                /* Record does not exist 
*S**          MOVE #REJ-NCP TO #CHECK-REJECT    
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**    END-IF          
*S**    /*  
*S**    /* Edits appropriate for ACG records    
*S**    IF WFADDDSD.WF-AD-SOURCE = 'G'          
*S**      /*
*S**      /*  ACG record without ISIR record    
*S**      PERFORM GET-ISIR-EXISTENCE #PASS-EXISTS           
*S**      IF NOT #PASS-EXISTS                  /* Record does not exist 
*S**        MOVE #REJ-ACG TO #CHECK-REJECT      
*S**        PERFORM PROCESS-REJECT  
*S**      END-IF        
*S**      /*
*S**      /*  ACG data lock status  
*S**      IF #OVRD-LOCKED = 'Y' OR  
*S**         WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'  
*S**        IGNORE                             /* Edit override         
*S**      ELSE          
*S**        PERFORM GET-ACG-LOCK #PASS-STAT     
*S**        IF #PASS-STAT NE ' ' AND #PASS-STAT NE 'N'    /* Record locked          
*S**          MOVE #REJ-LOCKED TO #CHECK-REJECT 
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Perform subroutine to load data and perform calcs
*S**    MOVE #OVRD-FED-REJ TO #OVR-FED-REJ      
*S**    MOVE #OVRD-C-PEND  TO #OVR-C-PEND       
*S**    MOVE #OVRD-C-XMIT  TO #OVR-C-XMIT       
*S**    MOVE #OVRD-LOCKED  TO #OVR-LOCKED       
*S**    MOVE #OVRD-VERIFD  TO #OVR-VERIFD       
*S**    MOVE #OVRD-PACKGD  TO #OVR-PACKGD       
*S**    /*  
*S**    PERFORM LOAD-STUDENT #PARAMETER-FIELDS  
*S**                         WFADDDSD WFADDDSD-ID           
*S**    /*  
*S**    /*  Print log   
*S**    IF #PROCESSED-RECORD        
*S**      IF #PRINT-LOG 
*S**        WRITE(3)    
*S**          2T WFADDDSD.WF-AD-SOURCE          
*S**          5T ##SID  
*S**         18T ##COMP-NAME        
*S**         55T ##DOB(EM=MM/DD/YYYY)           
*S**         67T ##SSN(EM=XXX-XX-XXXX)          
*S**      END-IF        
*S**      /*
*S**      /* 2027 (Mid-year OBBBBA mod)         
*S**      IF WFADDDSD.WF-AD-SOURCE = 'F' OR     
*S**         WFADDDSD.WF-AD-SOURCE = 'B'        
*S**        IF WFADDDSD.WF-AID-YEAR < '2025'    
*S**          RESET #EFC-MSG        
*S**          PERFORM GET-EFCS #EFC-COMPARE     
*S**          IF #EFC-CPS NE #EFC-FIN           
*S**            IF #REJ-CPS         
*S**              ASSIGN #EFC-MSG = 'CPS Reject'
*S**            END-IF  
*S**            WRITE(4)
*S**              2T ##SID          
*S**              13T ##COMP-NAME(AL=30)        
*S**              45T #EFC-CPS(EM=Z,ZZZ,ZZ9)    
*S**              56T #EFC-FIN(EM=Z,ZZZ,ZZ9)    
*S**              67T #EFC-MSG      
*S**          END-IF    
*S**        END-IF      
*S**      END-IF        
*S**      /*
*S**      /* Purge ADD record       
*S**      ASSIGN WWAOBJ.#FUNCTION = 'DELETE'    
*S**      PERFORM CALL-OBJECT-ADD   
*S**    ELSE
*S**      IF #EARLIER-REC = 'Y'     
*S**        /*          
*S**        /* Record pre-dates already-loaded data         
*S**        ADD 1 TO #BYPASS-COUNTER
*S**        /*          
*S**        /* Purge ADD record     
*S**        ASSIGN WWAOBJ.#FUNCTION = 'DELETE'  
*S**        PERFORM CALL-OBJECT-ADD 
*S**      ELSE          
*S**        IF #FED-REJ-CASE = 'F'  
*S**          MOVE #REJ-FEDERAL TO #CHECK-REJECT
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**        PERFORM UPDATE-REJECT   
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Check for limited-run maximum        
*S**    IF (#INPUT-RUNMODE = 'TRIAL' OR = 'SAMPLE')         
*S**        AND #INPUT-LIMIT-COUNT > 0          
*S**      IF #ADD-RECORD-COUNTER GE #INPUT-LIMIT-COUNT      
*S**        ESCAPE BOTTOM(PROG.) IMMEDIATE      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    ADD 1 TO #ET-WRITE-COUNTER   /* Counter used to invoke ET       
*S**    IF #ET-WRITE-COUNTER > #MAX-WRITE       
*S**      PERFORM COMMIT-OR-BACKOUT 
*S**    END-IF          
*S**  END-REPEAT        
*S***       
*S*** Issue final END TRANSACTION   
*S**  PERFORM COMMIT-OR-BACKOUT     
*S***       
*S*** Print job statistics          
*S**  WRITE(1)          
*S**    15T 'ADD input:' /          
*S**    17T 'Records read:'         
*S**                        (I) 55T #INPUT-COUNTER (EM=Z,ZZZ,ZZ9) //    
*S**    15T 'FINANCIER processing:' /           
*S**    17T 'Applications loaded:'  
*S**                        (I) 55T #ADD-RECORD-COUNTER (EM=Z,ZZZ,ZZ9) /
*S**    17T 'ADD records rejected:' 
*S**                        (I) 55T #NEW-REJ-COUNTER (EM=Z,ZZZ,ZZ9) /   
*S**    17T 'ADD records re-rejected:'          
*S**                        (I) 55T #RE-REJ-COUNTER (EM=Z,ZZZ,ZZ9) /    
*S**    17T 'ADD records purged:'   
*S**                        (I) 55T #BYPASS-COUNTER (EM=Z,ZZZ,ZZ9) /    
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-ADD           
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-ADD file object subprogram     
*S**  CALLNAT 'WFADDDSO' WW-GDA     
*S**           WFADDDSD 
*S**           WFADDDSD-ID          
*S**           WFADDDSR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-ADD           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-REJECT  
*S*************************************************************************         
*S**  /*    
*S**  /* Determine if record was previously rejected, also  
*S**  /*  occurrence of passed reject reason    
*S**  RESET #PREVIOUSLY-REJECTED #CHECK-OCCURENCE #CHECK-AVAILABLE      
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN WFADDDSD.WF-AD-REJ1 NE SPACE OR      /* Previously rejected
*S**         WFADDDSD.WF-AD-REJ2 NE SPACE OR    
*S**         WFADDDSD.WF-AD-REJ3 NE SPACE OR    
*S**         WFADDDSD.WF-AD-REJ4 NE SPACE OR    
*S**         WFADDDSD.WF-AD-REJ5 NE SPACE       
*S**      ASSIGN #PREVIOUSLY-REJECTED = TRUE    
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**  DECIDE FOR FIRST CONDITION                  /* Save location of   
*S**    WHEN WFADDDSD.WF-AD-REJ1 = #CHECK-REJECT  /*  passed reject     
*S**      ASSIGN #CHECK-OCCURENCE = '1'         
*S**    WHEN WFADDDSD.WF-AD-REJ2 = #CHECK-REJECT
*S**      ASSIGN #CHECK-OCCURENCE = '2'         
*S**    WHEN WFADDDSD.WF-AD-REJ3 = #CHECK-REJECT
*S**      ASSIGN #CHECK-OCCURENCE = '3'         
*S**    WHEN WFADDDSD.WF-AD-REJ4 = #CHECK-REJECT
*S**      ASSIGN #CHECK-OCCURENCE = '4'         
*S**    WHEN WFADDDSD.WF-AD-REJ5 = #CHECK-REJECT
*S**      ASSIGN #CHECK-OCCURENCE = '5'         
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**  DECIDE FOR FIRST CONDITION                  /* Save location of   
*S**    WHEN WFADDDSD.WF-AD-REJ1 = SPACE          /*  first available   
*S**      ASSIGN #CHECK-AVAILABLE = '1'           /*  reject
*S**    WHEN WFADDDSD.WF-AD-REJ2 = SPACE        
*S**      ASSIGN #CHECK-AVAILABLE = '2'         
*S**    WHEN WFADDDSD.WF-AD-REJ3 = SPACE        
*S**      ASSIGN #CHECK-AVAILABLE = '3'         
*S**    WHEN WFADDDSD.WF-AD-REJ4 = SPACE        
*S**      ASSIGN #CHECK-AVAILABLE = '4'         
*S**    WHEN WFADDDSD.WF-AD-REJ5 = SPACE        
*S**      ASSIGN #CHECK-AVAILABLE = '5'         
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* CHECK-REJECT  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-REJECT   
*S*************************************************************************         
*S**  /*    
*S**  /* Load reject code into first available slot.        
*S**  DECIDE ON FIRST VALUE OF #CHECK-AVAILABLE 
*S**    VALUE '1'       
*S**      ASSIGN WFADDDSD.WF-AD-REJ1 = #CHECK-REJECT        
*S**    VALUE '2'       
*S**      ASSIGN WFADDDSD.WF-AD-REJ2 = #CHECK-REJECT        
*S**    VALUE '3'       
*S**      ASSIGN WFADDDSD.WF-AD-REJ3 = #CHECK-REJECT        
*S**    VALUE '4'       
*S**      ASSIGN WFADDDSD.WF-AD-REJ4 = #CHECK-REJECT        
*S**    VALUE '5'       
*S**      ASSIGN WFADDDSD.WF-AD-REJ5 = #CHECK-REJECT        
*S**    NONE
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* LOAD-REJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PROCESS-REJECT
*S*************************************************************************         
*S**  /*    
*S**  PERFORM CHECK-REJECT          
*S**  IF #REJ-FIRST-TIME
*S**    ASSIGN #REJ-FIRST-TIME = FALSE          
*S**    IF WF-AD-NEW-REJ = 'R'      
*S**      ASSIGN #REC-PREVIOUSLY-REJECTED = TRUE
*S**    END-IF          
*S**  END-IF
*S**  IF #CHECK-OCCURENCE = SPACE            /* Not previously rejected 
*S**    PERFORM LOAD-REJECT                  /*  for #CHECK-REJECT      
*S**  END-IF
*S**  ASSIGN #ADD-REJECT = TRUE     
*S**END-SUBROUTINE /* PROCESS-REJECT
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-REJECT 
*S*************************************************************************         
*S**  /*    
*S**  /* Update ADD file with rejects           
*S**  IF #REC-PREVIOUSLY-REJECTED   
*S**    ADD 1 TO #RE-REJ-COUNTER    
*S**  ELSE  
*S**    ADD 1 TO #NEW-REJ-COUNTER              /* New reject
*S**    MOVE #REJECTED TO WFADDDSD.WF-AD-NEW-REJ
*S**  END-IF
*S**  MOVE 'UPDATE' TO WWAOBJ.#FUNCTION         
*S**  PERFORM CALL-OBJECT-ADD       
*S**  ADD 1 TO #ET-WRITE-COUNTER    
*S**  IF #ET-WRITE-COUNTER > #MAX-WRITE         
*S**    PERFORM COMMIT-OR-BACKOUT   
*S**  END-IF
*S**END-SUBROUTINE /* UPDATE-REJECT 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE COMMIT-OR-BACKOUT         
*S*************************************************************************         
*S**  /*    
*S**  /* Periodically issue END TRANSACTION     
*S**  IF #INPUT-RUNMODE = 'TRIAL'   
*S**    BACKOUT TRANSACTION         
*S**  ELSE  
*S**     END TRANSACTION
*S**  END-IF
*S**  RESET #ET-READ-COUNTER #ET-WRITE-COUNTER  
*S**END-SUBROUTINE /* COMMIT-OR-BACKOUT         
*S**END     
*C**                                FATEMP  WFADDLDE                        S S   NN0000        
*D01NAT8304S FATEMP  WFADDLDE                        ZWDNH   ZWDNH           S      
*D02            2026052520291502026052520291500000003221    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subroutine: WFADDLDE          
*S*** System    : FINANCIER         
*S*** Title     : ADD Load subroutine           
*S*** Function  : This subroutine calls routines that load data and     
*S***             perform calculations.         
*S***       
*S***      Copyright 1995 - 2027 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER         
*S**   01 #PARAMETER-FIELDS         
*S**     02 #PGM-PARAMETERS         
*S**       03 #EARLIER-REC(A1)      
*S**       03 #FED-REJ-CASE(A1)     
*S**       03 #OVRD-FED-REJ(A1)     
*S**       03 #OVRD-C-PEND(A1)      
*S**       03 #OVRD-C-XMIT(A1)      
*S**       03 #OVRD-LOCKED(A1)      
*S**       03 #OVRD-VERIFD(A1)      
*S**       03 #OVRD-PACKAGE(A1)     
*S**     02 #PASSED-PARAMETERS      
*S**       03 #INPUT-COUNTER(P7)    
*S**       03 #NEW-REJ-COUNTER(P7)  
*S**       03 #RE-REJ-COUNTER(P7)   
*S**       03 #BYPASS-COUNTER(P7)   
*S**       03 #ADD-RECORD-COUNTER(P7)           
*S**       03 #PROCESSED-RECORD(L)  
*S**  PARAMETER USING WFADDDSD      
*S***       
*S**  LOCAL 
*S**   01 #VER-STAT(A1) 
*S***       
*S**   01 #SUBPGM-ID(A8)
*S**   01 #AID-CCYY(A4) 
*S**   01 REDEFINE #AID-CCYY        
*S**     02 #AID-CC(A2) 
*S**     02 #AID-YY(A2) 
*S**   01 #BYPASS-STUDENT(L)        
*S**END-DEFINE          
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-STUDENT  
*S*************************************************************************         
*S***       
*S**PROG.   
*S**  REPEAT
*S**    /*  
*S**    /* Call year specific subroutine depending on data source       
*S**    MOVE ##AID-YEAR TO #AID-CCYY
*S**    DECIDE ON FIRST VALUE OF WFADDDSD.WF-AD-SOURCE      
*S**      VALUE 'B'     
*S**        COMPRESS 'WFFEB' #AID-YY 'N' INTO #SUBPGM-ID LEAVING NO     
*S**        CALLNAT #SUBPGM-ID WW-GDA #PARAMETER-FIELDS     
*S**                           WFADDDSD WFADDDSD-ID         
*S**      VALUE 'F'     
*S**        COMPRESS 'WFFEL' #AID-YY 'N' INTO #SUBPGM-ID LEAVING NO     
*S**        CALLNAT #SUBPGM-ID WW-GDA #PARAMETER-FIELDS     
*S**                           WFADDDSD WFADDDSD-ID         
*S**      VALUE 'G'     
*S**        COMPRESS 'WFFGL' #AID-YY 'N' INTO #SUBPGM-ID LEAVING NO     
*S**        CALLNAT #SUBPGM-ID WW-GDA #PARAMETER-FIELDS     
*S**                           WFADDDSD WFADDDSD-ID         
*S**      VALUE 'C'     
*S**        COMPRESS 'WFCSL' #AID-YY 'N' INTO #SUBPGM-ID LEAVING NO     
*S**        CALLNAT #SUBPGM-ID WW-GDA #PARAMETER-FIELDS     
*S**                           WFADDDSD WFADDDSD-ID         
*S**      VALUE 'N'     
*S**        COMPRESS 'WFCNL' #AID-YY 'N' INTO #SUBPGM-ID LEAVING NO     
*S**        CALLNAT #SUBPGM-ID WW-GDA #PARAMETER-FIELDS     
*S**                           WFADDDSD WFADDDSD-ID         
*S**      NONE          
*S**        IGNORE      
*S**    END-DECIDE      
*S**    IF NOT #PROCESSED-RECORD    
*S**      ESCAPE BOTTOM(PROG.)      
*S**    END-IF          
*S**    /*  
*S**    /* Perform Budget calc      
*S**    PERFORM CALC-BUDGET         
*S**    /*  
*S**    /* Calculate application requirements   
*S**    MOVE WFADDDSD.WF-AD-SOURCE TO ##PASS-ACTION         
*S**    PERFORM CALC-APPL-REQ       
*S**    RESET ##PASS-ACTION         
*S**    /*  
*S**    /* Need analysis calc       
*S**    PERFORM CALC-NEED-ANALYSIS  
*S**    /*  
*S**    /* Verification calc (if previously verified)       
*S**    IF WFADDDSD.WF-AD-SOURCE = 'F'          
*S**       /*           
*S**       /* 2027 (Mid-year OBBBBA mod)        
*S**       OR WFADDDSD.WF-AD-SOURCE = 'B'       
*S**        PERFORM CALC-VERIFICATION #BYPASS-STUDENT       
*S**    END-IF          
*S**    /*  
*S**    ESCAPE BOTTOM(PROG.)        
*S**  END-REPEAT        
*S**END-SUBROUTINE /* LOAD-STUDENT  
*S**END     
*C**                                FATEMP  WFADDMTP                        F S   NN0000        
*D01NAT8304F FATEMP  WFADDMTP                        ZWDNH   ZWDNH           S      
*D02            2026052913585502026052913585500000019892    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: ADD Maintenance    
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program maintains student identification       
*S****SAG DESCS(2): information in the WF-ADD file.         
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100010000 
*S****SAG OBJECT-NAME: WFADDDSO     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFADDMTM     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFADDMTP           
*S*** System   : FINANCIER          
*S*** Title    : ADD Maintenance    
*S*** Generated: Nov 24,98 at 05:23 PM          
*S*** Function : This program maintains student identification          
*S***            information in the WF-ADD file.
*S***       
*S***       
*S***       
*S***      Copyright 1995 - 2006 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WFADDDSD /* Passed to object subprogram   
*S**  LOCAL USING WFADDDSR /* Passed to object subprogram   
*S**  LOCAL USING WFADDDSS /* 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 SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFADDBRP'> 
*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(A16) /* Last record found           
*S**  01 #TYPE-POS(P3)  
*S**  01 #KEY(A16)  /* 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(A16) 
*S****SAG DEFINE EXIT LOCAL-DATA    
*S***       
*S**  LOCAL USING WWNAMECL          
*S**  LOCAL 
*S**    01 #SUBPGM(A8)  
*S**    01 #AID-CCYY(A4)
*S**    01 REDEFINE #AID-CCYY       
*S**      02 #AID-CC(A2)
*S**      02 #AID-YY(A2)
*S**    01 #PASS-DOB(A8)
*S**    01 #PASS-STAT(A1)           
*S**    01 #PASS-EXISTS(L)          
*S**    01 #CHECK-REJECT(A1)        
*S**    01 #ADD-SOURCE(A1)          
*S***       
*S**    01 #ORIG-NAME(A35)          
*S**    01 #ORIG-SSN(A9)
*S**    01 #ORIG-DOB(D) 
*S**    01 #ORIG-NL(A20)
*S**    01 #ORIG-NF(A20)
*S**    01 #ORIG-NM(A1) 
*S**    01 #HOLD-SSN(A9)
*S**    01 #HOLD-ACTION(A1)         
*S***       
*S**   01 #PARAMETER-FIELDS         
*S**     02 #PGM-PARAMETERS         
*S**       03 #EARLIER-REC(A1)      
*S**       03 #FED-REJ-CASE(A1)     
*S**       03 #OVRD-FED-REJ(A1)     
*S**       03 #OVRD-C-PEND(A1)      
*S**       03 #OVRD-C-XMIT(A1)      
*S**       03 #OVRD-LOCKED(A1)      
*S**       03 #OVRD-VERIFD(A1)      
*S**       03 #OVRD-PACKGD(A1)      
*S**     02 #PASSED-PARAMETERS      
*S**       03 #INPUT-COUNTER(P7)    
*S**       03 #NEW-REJ-COUNTER(P7)  
*S**       03 #RE-REJ-COUNTER(P7)   
*S**       03 #BYPASS-COUNTER(P7)   
*S**       03 #ADD-RECORD-COUNTER(P7)           
*S**       03 #PROCESSED-RECORD(L)  
*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**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFADDDSD' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM ADD-SECURITY ADD-CNTL-VARS    
*S**      RESET INITIAL ADD-LOGICALS
*S****SAG DEFINE EXIT AFTER-SECURITY
*S**      ASSIGN #ADD-SOURCE = ##PASS-KEY       
*S****SAG END-EXIT      
*S**      /*
*S**      PERFORM REQUIRED-FIELD-CHECK REQUIRED-FIELD(*)    
*S**      PERFORM SET-KEYS          
*S**    END-IF          
*S**    /*  
*S**    /* Load appropriate function
*S**    IF *PF-KEY = WWKEYLDA.#PURGE-KEY OR     
*S**       #CONFIRM-PURGE           
*S**      ASSIGN #FUNCTION = 'DELETE'           
*S**      IF NOT #CONFIRM-PURGE     
*S**        ASSIGN #BYPASS-OBJECT = TRUE        
*S**      END-IF        
*S**    ELSE
*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**    END-IF          
*S****SAG DEFINE EXIT BEFORE-CALL-OBJECT        
*S**    /*  
*S**    /* Load key information from the GDA    
*S**    IF #FUNCTION = 'GET'        
*S**      ASSIGN WFADDDSD.WW-ST-SSN = ##SSN     
*S**      ASSIGN WFADDDSD.WF-FAO = ##FAO-ID     
*S**      ASSIGN WFADDDSD.WF-AID-YEAR = ##AID-YEAR          
*S**      ASSIGN WFADDDSD.WF-AD-SOURCE = #ADD-SOURCE        
*S**      ASSIGN #ORIG-NAME = ##COMP-NAME       
*S**    END-IF          
*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**    /* Additional processing before calling the main    
*S**    /*  object subprogram       
*S**    IF ##MSG = 'Record purged successfully' 
*S**      ASSIGN ##MSG = 'Application purged'   
*S**      ESCAPE BOTTOM(PROG.) IMMEDIATE        
*S**    END-IF          
*S**    /*  
*S**    IF #FUNCTION = 'GET'        
*S**      MOVE WFADDDSD.WW-ST-SSN TO #ORIG-SSN  
*S**      MOVE WFADDDSD.WW-ST-DOB TO #ORIG-DOB  
*S**      MOVE WFADDDSD.WW-ST-NM-LAST TO #ORIG-NL           
*S**      MOVE WFADDDSD.WW-ST-NM-FIRST TO #ORIG-NF          
*S**      MOVE WFADDDSD.WW-ST-NM-MI TO #ORIG-NM 
*S**    END-IF          
*S**    /*  
*S**    MOVE EDITED WFADDDSD.WW-ST-DOB(EM=MMDDYYYY) TO #PASS-DOB        
*S**    PERFORM DETERMINE-SID ##SSN 
*S**                          WFADDDSD.WW-ST-NM-LAST        
*S**                          WFADDDSD.WW-ST-NM-FIRST       
*S**                          WFADDDSD.WW-ST-NM-MI          
*S**                          #PASS-DOB         
*S**                          ##SID 
*S**    PERFORM GET-STUDENT-KEY     
*S**    PERFORM GET-STUDENT-INFO    
*S**    IF NOT ##STUDENT-REC        
*S**      ASSIGN ##SSN = WFADDDSD.WW-ST-SSN     
*S**      ASSIGN ##DOB = WFADDDSD.WW-ST-DOB     
*S**      ASSIGN ##COMP-NAME = #ORIG-NAME       
*S**    END-IF          
*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****SAG DEFINE EXIT DEFINE-WINDOW 
*S**    /*  
*S**    /*  Define Window attributes
*S**    DEFINE WINDOW ADDMAINT      
*S**           SIZE 19*63           
*S**           BASE 2 / 9           
*S**           TITLE 'ADD File Maintenance'     
*S**           CONTROL SCREEN       
*S**           FRAMED ON (CD=NE)    
*S**           POSITION OFF         
*S**    SET WINDOW 'ADDMAINT'       
*S**    ASSIGN ##COLOR = 'NE'       
*S****SAG END-EXIT      
*S**    /*  
*S**    /* INPUT processing         
*S****SAG DEFINE EXIT BEFORE-INPUT  
*S**    /*  
*S**    /* Protect correction flags if not federal (ISIR) input         
*S**    IF WFADDDSD.WF-AD-SOURCE NE 'F'         
*S**      /*
*S**      /* 2027 (Mid-year OBBBBA mod)         
*S**      AND WFADDDSD.WF-AD-SOURCE NE 'B'      
*S**      MOVE NON-DISPLAY-PROT-ATTR TO AD-C-SSN-CV AD-C-DOB-CV         
*S**                                    AD-C-NL-CV  AD-C-NF-CV  AD-C-NM-CV          
*S**    END-IF          
*S****SAG END-EXIT      
*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 'WFADDMTM'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S**    /*  
*S**    /* Purge processing must be confirmed   
*S**    IF WWAOBJ.#FUNCTION = 'DELETE' AND      
*S**       *PF-KEY = 'ENTR'         
*S**      IF NOT #CONFIRM-PURGE     
*S**        ASSIGN #CONFIRM-PURGE = TRUE        
*S**      END-IF        
*S**    END-IF          
*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**    IF *PF-KEY = WWKEYLDA.#EXPAND-KEY       
*S**      MOVE ##AID-YEAR TO #AID-CCYY          
*S**      MOVE ##PASS-ACTION TO #HOLD-ACTION    
*S**      IF WFADDDSD.WF-AD-SOURCE = 'F'        
*S**        /*          
*S**        /* 2027 (Mid-year OBBBBA mod)       
*S**        OR WFADDDSD.WF-AD-SOURCE = 'B'      
*S**        COMPRESS 'WFAFC' #AID-YY 'P' INTO #SUBPGM LEAVING NO        
*S**        MOVE WFADDDSD.WF-AD-SOURCE TO ##PASS-ACTION     
*S**      ELSE          
*S**        IF WFADDDSD.WF-AD-SOURCE = 'G'      
*S**          COMPRESS 'WFAGC' #AID-YY 'P' INTO #SUBPGM LEAVING NO      
*S**        ELSE        
*S**          REINPUT 'Expansion not available for this source' ALARM   
*S**        END-IF      
*S**      END-IF        
*S**      FETCH RETURN #SUBPGM      
*S**      MOVE #HOLD-ACTION TO ##PASS-ACTION    
*S**      PERFORM SET-KEYS          
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Print key used to supply online call to ADD load process     
*S**    /*  (assume edits bypass)   
*S**    IF *PF-KEY = WWKEYLDA.#PRINT-KEY        
*S**      /*
*S**      /* Check conditions that cannot be overridden     
*S**      /*  ACG record without ISIR record    
*S**      IF WFADDDSD.WF-AD-SOURCE = 'G'        
*S**        PERFORM GET-ISIR-EXISTENCE #PASS-EXISTS         
*S**        IF NOT #PASS-EXISTS                 /* Record does not exist
*S**          MOVE 'G' TO #CHECK-REJECT         
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**      END-IF        
*S**      /*
*S**      /*  NCP record without Profile record 
*S**      IF WFADDDSD.WF-AD-SOURCE = 'N'        
*S**        PERFORM GET-CSS-STATUS #PASS-STAT   
*S**        IF #PASS-STAT = ' '                 /* Record does not exist
*S**          MOVE '2' TO #CHECK-REJECT         
*S**          PERFORM PROCESS-REJECT
*S**        END-IF      
*S**      END-IF        
*S**      IF #CHECK-REJECT = ' '    
*S**        /*          
*S**        /* Call subroutine to load data and perform appropriate calcs           
*S**        RESET ##PASS-ACTION     
*S**        ASSIGN WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'        
*S**        MOVE 'Y' TO #OVRD-FED-REJ           
*S**                    #OVRD-C-PEND
*S**                    #OVRD-C-XMIT
*S**                    #OVRD-LOCKED
*S**                    #OVRD-VERIFD
*S**                    #OVRD-PACKGD
*S**        PERFORM LOAD-STUDENT #PARAMETER-FIELDS          
*S**                             WFADDDSD WFADDDSD-ID       
*S**      END-IF        
*S**      IF #PROCESSED-RECORD      
*S**        /*          
*S**        /* Purge ADD record     
*S**        ASSIGN WWAOBJ.#FUNCTION = 'DELETE'  
*S**        CALLNAT 'WFADDDSO' WW-GDA           
*S**                 WFADDDSD       
*S**                 WFADDDSD-ID    
*S**                 WFADDDSR       
*S**                 WWAOBJ         
*S**        END TRANSACTION         
*S**        ASSIGN ##MSG = 'Application loaded' 
*S**      ELSE          
*S**        ASSIGN ##MSG = 'Application not loaded'         
*S**      END-IF        
*S**      ESCAPE BOTTOM(PROG.) IMMEDIATE        
*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**       OR = WWKEYLDA.#PURGE-KEY 
*S**      IGNORE        
*S**    ELSE
*S**      REINPUT 'Invalid program function key' ALARM      
*S**    END-IF          
*S**    /*  
*S**    /* Don't allow purge on non-existent record         
*S**    IF *PF-KEY = WWKEYLDA.#PURGE-KEY AND    
*S**       #ADD-OBJECT  
*S**      REINPUT 'Cannot purge non-existent record' 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 WFADDMTM-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFADDDSD WFADDDSD-ID WFADDDSR WFADDDSS        
*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****SAG DEFINE EXIT BEFORE-OBJECT-CALL        
*S**/*      
*S**/* If SSN correction, delete old record and set up for add of new   
*S**  IF WWAOBJ.#FUNCTION = 'UPDATE'
*S**    IF WFADDDSD.WW-ST-SSN NE #ORIG-SSN      
*S**      MOVE WFADDDSD.WW-ST-SSN TO #HOLD-SSN  
*S**      MOVE #ORIG-SSN TO WFADDDSD.WW-ST-SSN  
*S**      MOVE 'DELETE' TO WWAOBJ.#FUNCTION     
*S**      CALLNAT 'WFADDDSO' WW-GDA 
*S**               WFADDDSD         
*S**               WFADDDSD-ID      
*S**               WFADDDSR         
*S**               WWAOBJ           
*S**      RESET ##MSG   
*S**      MOVE #HOLD-SSN TO WFADDDSD.WW-ST-SSN ##SSN        
*S**      MOVE 'STORE' TO WWAOBJ.#FUNCTION      
*S**    END-IF          
*S**  END-IF
*S**/*      
*S**/* Additional processing before calling the main object subprogram  
*S**  IF WWAOBJ.#FUNCTION = 'UPDATE' OR = 'STORE'           
*S**   IF WFADDDSD.WF-AD-SOURCE = 'F'           
*S**      /*
*S**      /* 2027 (Mid-year OBBBBA mod)         
*S**      OR WFADDDSD.WF-AD-SOURCE = 'B'        
*S**    IF WFADDDSD.WW-ST-SSN NE #ORIG-SSN      
*S**      MOVE 'S' TO WFADDDSD.WF-AD-C-SSN      
*S**      MOVE WFADDDSD.WW-ST-SSN TO #ORIG-SSN  
*S**    END-IF          
*S**    IF WFADDDSD.WW-ST-DOB NE #ORIG-DOB      
*S**      MOVE 'B' TO WFADDDSD.WF-AD-C-DOB      
*S**      MOVE WFADDDSD.WW-ST-DOB TO #ORIG-DOB  
*S**    END-IF          
*S**    IF WFADDDSD.WW-ST-NM-LAST NE #ORIG-NL   
*S**      MOVE 'L' TO WFADDDSD.WF-AD-C-NL       
*S**      MOVE WFADDDSD.WW-ST-NM-LAST TO #ORIG-NL           
*S**    END-IF          
*S**    IF WFADDDSD.WW-ST-NM-FIRST NE #ORIG-NF  
*S**      MOVE 'F' TO WFADDDSD.WF-AD-C-NF       
*S**      MOVE WFADDDSD.WW-ST-NM-FIRST TO #ORIG-NF          
*S**    END-IF          
*S**    IF WFADDDSD.WW-ST-NM-MI NE #ORIG-NM     
*S**      MOVE 'M' TO WFADDDSD.WF-AD-C-NM       
*S**      MOVE WFADDDSD.WW-ST-NM-MI TO #ORIG-NM 
*S**    END-IF          
*S**   END-IF           
*S**  END-IF
*S****SAG END-EXIT      
*S**  /*    
*S**  /* Assign #KEY to equal the input fields  
*S**  MOVE BY NAME WFADDDSD TO WFADDDSD-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFADDDSD-ID     
*S**  /*    
*S**  /* Invoke subprogram to process object    
*S**  CALLNAT 'WFADDDSO' WW-GDA     
*S**           WFADDDSD 
*S**           WFADDDSD-ID          
*S**           WFADDDSR 
*S**           WWAOBJ   
*S**  /*    
*S**  IF WWAOBJ.#FUNCTION = 'GET' AND           
*S**     NOT WWAOBJ.#EXISTS         
*S**    ASSIGN #ADD-OBJECT = TRUE   
*S**  END-IF
*S**  /*    
*S**  ASSIGN #DISPLAYED-KEY = WFADDDSD-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**            OR = 'DELETE'       
*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****SAG DEFINE EXIT END-OBJECT-CALL           
*S**  /*    
*S**  /* Additional processing after returning from object subprogram.  
*S**  IF #FUNCTION = 'STORE'        
*S**    ASSIGN #FUNCTION = 'UPDATE' 
*S**  END-IF
*S**  /*    
*S**  COMPRESS WFADDDSD.WW-ST-NM-LAST COMMA INTO
*S**    #NAME-LAST LEAVING NO SPACE 
*S**  COMPRESS WFADDDSD.WW-ST-NM-FIRST WFADDDSD.WW-ST-NM-MI INTO        
*S**    #NAME-FIRST-MID WITH DELIMITER SPACE    
*S**  COMPRESS #NAME-LAST #NAME-FIRST-MID INTO  
*S**    ##COMP-NAME WITH DELIMITER SPACE        
*S**  MOVE ##COMP-NAME TO #ORIG-NAME
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* CALL-OBJECT   
*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.#NOTEPAD-KEY       
*S**                WWKEYLDA.#EXPAND-KEY        
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* INITIALIZATIONS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SET-KEYS      
*S*************************************************************************         
*S***       
*S****SAG DEFINE EXIT BEFORE-SET-KEY
*S**  /*    
*S**  /* Override expand key (only available on Federal and ACG records)
*S**  IF #ADD-SOURCE NE 'F' AND #ADD-SOURCE NE 'G'          
*S**    /*  
*S**    /* 2027 (Mid-year OBBBBA mod)           
*S**    AND #ADD-SOURCE NE 'B'      
*S**    RESET WWKEYLDA.#EXPAND-KEY  
*S**  END-IF
*S****SAG END-EXIT      
*S**  INCLUDE WWSETKEY /* Set specified keys    
*S**  INCLUDE WWSETHLP /* Set Help keys         
*S**  /*    
*S**  /* Purge Key redefinition  (reuse Calc key)           
*S**  SET KEY PF5=PGM NAMED 'Purge' 
*S**  RESET INITIAL WWKEYLDA.#CALC-KEY          
*S****SAG DEFINE EXIT SET-KEYS      
*S**  /*    
*S**  /* If user has "W"rite security, turn on LOAD key     
*S**  /*   Otherwise, turn off PURGE key (generated)        
*S**  IF ##PASS-SECURITY = 'W'      
*S**    SET KEY PF6 NAMED 'Load'    
*S**    RESET INITIAL WWKEYLDA.#PRINT-KEY       
*S**  ELSE  
*S**    SET KEY PF5 NAMED OFF       
*S**    RESET WWKEYLDA.#PURGE-KEY   
*S**  END-IF
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* SET-KEY       
*S****SAG DEFINE EXIT MISCELLANEOUS-SUBROUTINES 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PROCESS-REJECT
*S*************************************************************************         
*S**  /*    
*S**  IF #CHECK-REJECT = WFADDDSD.WF-AD-REJ1 OR 
*S**                   = WFADDDSD.WF-AD-REJ2 OR 
*S**                   = WFADDDSD.WF-AD-REJ3 OR 
*S**                   = WFADDDSD.WF-AD-REJ4 OR 
*S**                   = WFADDDSD.WF-AD-REJ5    
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN WFADDDSD.WF-AD-REJ1 = ' '          
*S**      ASSIGN WFADDDSD.WF-AD-NEW-REJ = 'R'   
*S**      ASSIGN WFADDDSD.WF-AD-REJ1 = #CHECK-REJECT        
*S**    WHEN WFADDDSD.WF-AD-REJ2 = ' '          
*S**      ASSIGN WFADDDSD.WF-AD-REJ2 = #CHECK-REJECT        
*S**    WHEN WFADDDSD.WF-AD-REJ3 = ' '          
*S**      ASSIGN WFADDDSD.WF-AD-REJ3 = #CHECK-REJECT        
*S**    WHEN WFADDDSD.WF-AD-REJ4 = ' '          
*S**      ASSIGN WFADDDSD.WF-AD-REJ4 = #CHECK-REJECT        
*S**    WHEN WFADDDSD.WF-AD-REJ5 = ' '          
*S**      ASSIGN WFADDDSD.WF-AD-REJ5 = #CHECK-REJECT        
*S**    WHEN ANY        
*S**      ASSIGN WWAOBJ.#FUNCTION = 'UPDATE'    
*S**      PERFORM CALL-OBJECT       
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* PROCESS-REJECT
*S****SAG END-EXIT      
*S**END     
*C**                                FATEMP  WFAFC27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFAFC27P                        ZWDNH   ZWDNH           S      
*D02            2026052914182902026052914182900000030945    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: 2026-27 ADD Compare
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program displays federal information from      
*S****SAG DESCS(2): the ADD and Federal files.  It allows the user      
*S****SAG DESCS(3): to compare incoming and already-loaded federal      
*S****SAG DESCS(4): application information.    
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0001010100000000 
*S****SAG OBJECT-NAME: WFFED27O     
*S****SAG MAX-WINDOWS: 4
*S****SAG MAP-NAME(1): WFA27OVM     
*S****SAG MAP-NAME(2): WFA27STM     
*S****SAG MAP-NAME(3): WFA27PAM     
*S****SAG MAP-NAME(4): WFA27SPM     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFAFC27P           
*S*** System   : FINANCIER          
*S*** Title    : 2026-27 ADD Compare
*S*** Function : This program displays federal information from         
*S***            the ADD and Federal files.  It allows the user         
*S***            to compare incoming and already-loaded federal         
*S***            application information.       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WF27FEXD /* Passed to object subprogram   
*S**  LOCAL USING WFAIDYND /* Passed to object subprogram   
*S**  LOCAL USING WFAIDYNR /* Passed to object subprogram   
*S**  LOCAL USING WFAIDYNS /* Shadow file       
*S**  LOCAL USING WFFED27D /* Passed to object subprogram   
*S**  LOCAL USING WFFED27R /* Passed to object subprogram   
*S**  LOCAL USING WFFED27S /* 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 SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFADDBRP'> 
*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 #REQ-PAGE(A2)  
*S**  01 REDEFINE #REQ-PAGE         
*S**    02 #REQ-PAGE-N(N2)          
*S**  01 #HOLD-PAGE(A1) 
*S**  01 REDEFINE #HOLD-PAGE        
*S**    02 #HOLD-PAGE-N(N1)         
*S**  01 #REQ-PAGE-CV(C)
*S**  01 #PANELS(P3)    
*S**  01 #MAX-PANELS(P4) CONST<4>   
*S***       
*S*** Miscellaneous Variables.      
*S**  01 #NEXT(L)                        /* Next processing selected    
*S**  01 #DISPLAYED-KEY(A11) /* Last record found           
*S**  01 #FIRST-PANEL(P3)           
*S**  01 #TYPE-POS(P3)  
*S**  01 #KEY(A11)  /* Key field copied from map.           
*S**  01 #LAST-PANEL(N7)
*S**  01 #HOLD-PANEL(N7)
*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**  01 #PANEL(N7) INIT <1>        
*S**  01 #SCROLLING(L/1:4)          
*S**  01 REDEFINE #SCROLLING        
*S**    02 #UP-DOWN-SCROLLING(L)    
*S****SAG DEFINE EXIT LOCAL-DATA    
*S**  01 #TITLE(A43)    
*S***       
*S**  01 #TAB-REJECTS(A1)           
*S**  01 #FED-DEP(A11)  
*S**  01 #FED-SAI(A8)   
*S**  01 #FED-SANAL(A7) 
*S**  01 #FED-SC(A10)   
*S**  01 #FED-SCI(A10)  
*S**  01 #FED-SCA(A10)  
*S**  01 #FED-PANAL(A7) 
*S**  01 #FED-PC(A10)   
*S**  01 #FED-PCI(A10)  
*S**  01 #FED-PCA(A10)  
*S***       
*S**  01 #FE-S-AFINF-N(P11)         
*S**  01 #FE-S-AFINF(A14)           
*S**  01 #FE-S-UNTXD-N(P11)         
*S**  01 #FE-S-UNTXD(A14)           
*S**  01 #FE-SP-AFINF-N(P11)        
*S**  01 #FE-SP-AFINF(A14)          
*S**  01 #FE-SP-UNTXD-N(P11)        
*S**  01 #FE-SP-UNTXD(A14)          
*S**  01 #FE-P1-AFINF-N(P11)        
*S**  01 #FE-P1-AFINF(A14)          
*S**  01 #FE-P1-UNTXD-N(P11)        
*S**  01 #FE-P1-UNTXD(A14)          
*S**  01 #FE-P2-AFINF-N(P11)        
*S**  01 #FE-P2-AFINF(A14)          
*S**  01 #FE-P2-UNTXD-N(P11)        
*S**  01 #FE-P2-UNTXD(A14)          
*S**  01 #EDCR(P11)     
*S***       
*S**  01 #ADDL-S-TOTAL-N(P11)       
*S**  01 #ADDL-S-TOTAL(A11)         
*S**  01 #UNTX-S-TOTAL-N(P11)       
*S**  01 #UNTX-S-TOTAL(A11)         
*S**  01 #ADDL-SP-TOTAL-N(P11)      
*S**  01 #ADDL-SP-TOTAL(A11)        
*S**  01 #UNTX-SP-TOTAL-N(P11)      
*S**  01 #UNTX-SP-TOTAL(A11)        
*S**  01 #ADDL-P1-TOTAL-N(P11)      
*S**  01 #ADDL-P1-TOTAL(A11)        
*S**  01 #UNTX-P1-TOTAL-N(P11)      
*S**  01 #UNTX-P1-TOTAL(A11)        
*S**  01 #ADDL-P2-TOTAL-N(P11)      
*S**  01 #ADDL-P2-TOTAL(A11)        
*S**  01 #UNTX-P2-TOTAL-N(P11)      
*S**  01 #UNTX-P2-TOTAL(A11)        
*S***       
*S**  01 #HOLD-SAI(N6)  
*S**  01 #HOLD-SC(N15)  
*S**  01 #HOLD-SCI(N15) 
*S**  01 #HOLD-SCA(N12) 
*S**  01 #HOLD-PC(N15)  
*S**  01 #HOLD-PCI(N15) 
*S**  01 #HOLD-PCA(N12) 
*S**  01 #CNVT-NEG(L)   
*S**  01 #CNVT-BYTE(A1) 
*S**  01 #PASS-KEY(A30) 
*S**  01 #PASS-TEMP(A30)
*S**  01 #6-BYTE-FIELD(A6)          
*S**  01 #6-BYTE-FIELD-N(P6)        
*S**  01 #15-BYTE-FIELD(A15)        
*S**  01 #15-BYTE-FIELD-N(P15)      
*S**  01 #SAVE-WWAOBJ-EXISTS(L)     
*S**  01 #REJ-LIT(A8)   
*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**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFAIDYND' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM AIDNEED-SECURITY AIDNEED-CNTL-VARS        
*S**      RESET INITIAL AIDNEED-LOGICALS        
*S**      MOVE 'WFFED27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM FEDERAL-2627-SECURITY FEDERAL-2627-CNTL-VARS          
*S**      RESET INITIAL FEDERAL-2627-LOGICALS   
*S**      /*
*S**      PERFORM REQUIRED-FIELD-CHECK REQUIRED-FIELD(*)    
*S**      PERFORM SET-KEYS          
*S**    END-IF          
*S**    /*  
*S**    PERFORM VALIDATE-INDEXES    
*S**    /*  
*S**    /* Load appropriate function
*S**    IF #ADD-OBJECT  
*S**      ASSIGN #FUNCTION = 'STORE'
*S**      IF NOT #SCROLLING(*)      
*S**        RESET #ADD-OBJECT       
*S**      END-IF        
*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 student id from GDA, allows selection criteria          
*S**    /* to be properly processed 
*S**    MOVE ##STUDENT-ID TO WFFED27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFFED27D.WF-FAO        
*S****SAG END-EXIT      
*S**    /*  
*S**    /* If ENTER was pressed, process the specified action.          
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN #SCROLLING(*)        
*S**        MOVE #LAST-PANEL TO #HOLD-PANEL     
*S**      WHEN NONE     
*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**    END-DECIDE      
*S**    /*  
*S**    /* Load shadow file definitions for appropriate map 
*S**    IF NOT #CONFIRM-PURGE       
*S**      MOVE #PANEL TO #HOLD-PANEL
*S**      MOVE LOAD TO ##PASS-TEMP  
*S**      PERFORM CALL-EXT-SUBS     
*S****SAG DEFINE EXIT AFTER-CALL-LOAD           
*S**      IF WFAIDYNS.WF-AY-M1-DEP NE ' ' AND   
*S**         WFAIDYNS.WF-AY-M1-FC = ' '         
*S**        MOVE '        0' TO WFAIDYNS.WF-AY-M1-FC        
*S**      END-IF        
*S***       
*S**     COMPUTE #FE-S-AFINF-N = WFFED27D.WF-FE-S-EDCR +    
*S**                              WFFED27D.WF-FE-S-U-ROLL-IRA +         
*S**                              WFFED27D.WF-FE-S-U-ROLL-PEN +         
*S**                              WFFED27D.WF-FE-S-GRNT     
*S**     IF #FE-S-AFINF-N > 99999999
*S**       ASSIGN #FE-S-AFINF-N = 99999999      
*S**     END-IF         
*S**     MOVE EDITED #FE-S-AFINF-N (EM=ZZ,ZZZ,ZZZ) TO #FE-S-AFINF       
*S**     COMPUTE #FE-S-UNTXD-N = WFFED27D.WF-FE-S-U-INT +   
*S**                             WFFED27D.WF-FE-S-U-DST-IRA +           
*S**                             WFFED27D.WF-FE-S-U-DST-PEN +           
*S**                             WFFED27D.WF-FE-S-DED-PAY + 
*S**                             WFFED27D.WF-FE-S-U-CSUP    
*S**     IF #FE-S-UNTXD-N > 99999999
*S**       ASSIGN #FE-S-UNTXD-N = 99999999      
*S**     END-IF         
*S**     MOVE EDITED #FE-S-UNTXD-N (EM=Z,ZZZ,ZZZ) TO #FE-S-UNTXD        
*S***       
*S**      COMPUTE #FE-SP-AFINF-N = WFFED27D.WF-FE-SP-EDCR + 
*S**                              WFFED27D.WF-FE-SP-U-ROLL-IRA +        
*S**                              WFFED27D.WF-FE-SP-U-ROLL-PEN          
*S**     IF #FE-SP-AFINF-N > 99999999           
*S**       ASSIGN #FE-SP-AFINF-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-SP-AFINF-N (EM=ZZ,ZZZ,ZZZ) TO #FE-SP-AFINF     
*S**     COMPUTE #FE-SP-UNTXD-N = WFFED27D.WF-FE-SP-U-INT + 
*S**                             WFFED27D.WF-FE-SP-U-DST-IRA +          
*S**                             WFFED27D.WF-FE-SP-U-DST-PEN +          
*S**                             WFFED27D.WF-FE-SP-DED-PAY  
*S**     IF #FE-SP-UNTXD-N > 99999999           
*S**       ASSIGN #FE-SP-UNTXD-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-SP-UNTXD-N (EM=Z,ZZZ,ZZZ) TO #FE-SP-UNTXD      
*S***       
*S**     COMPUTE #FE-P1-AFINF-N = WFFED27D.WF-FE-P1-EDCR +  
*S**                             WFFED27D.WF-FE-P1-U-ROLL-IRA +         
*S**                             WFFED27D.WF-FE-P1-U-ROLL-PEN +         
*S**                             WFFED27D.WF-FE-P1-GRNT     
*S**     IF #FE-P1-AFINF-N > 99999999           
*S**       ASSIGN #FE-P1-AFINF-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-P1-AFINF-N (EM=Z,ZZZ,ZZZ) TO #FE-P1-AFINF      
*S**     COMPUTE #FE-P1-UNTXD-N = WFFED27D.WF-FE-P1-U-INT + 
*S**                             WFFED27D.WF-FE-P1-U-DST-IRA +          
*S**                             WFFED27D.WF-FE-P1-U-DST-PEN +          
*S**                             WFFED27D.WF-FE-P1-DED-PAY +
*S**                             WFFED27D.WF-FE-P1-U-CSUP   
*S**     IF #FE-P1-UNTXD-N > 99999999           
*S**       ASSIGN #FE-P1-UNTXD-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-P1-UNTXD-N (EM=Z,ZZZ,ZZZ) TO #FE-P1-UNTXD      
*S***       
*S**     COMPUTE #FE-P2-AFINF-N = WFFED27D.WF-FE-P2-EDCR +  
*S**                             WFFED27D.WF-FE-P2-U-ROLL-IRA +         
*S**                             WFFED27D.WF-FE-P2-U-ROLL-PEN           
*S**     IF #FE-P2-AFINF-N > 99999999           
*S**       ASSIGN #FE-P2-AFINF-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-P2-AFINF-N (EM=Z,ZZZ,ZZZ) TO #FE-P2-AFINF      
*S**     COMPUTE #FE-P2-UNTXD-N = WFFED27D.WF-FE-P2-U-INT + 
*S**                              WFFED27D.WF-FE-P2-U-DST-IRA +         
*S**                              WFFED27D.WF-FE-P2-U-DST-PEN +         
*S**                              WFFED27D.WF-FE-P2-DED-PAY 
*S**     IF #FE-P2-UNTXD-N > 99999999           
*S**       ASSIGN #FE-P2-UNTXD-N = 99999999     
*S**     END-IF         
*S**     MOVE EDITED #FE-P2-UNTXD-N (EM=Z,ZZZ,ZZZ) TO #FE-P2-UNTXD      
*S*** student           
*S**     IF WF27FEXD.WF-FE-S-EDCR = SPACE       
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-EDCR    
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-U-ROLL-IRA = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-ROLL-IRA          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-U-ROLL-PEN = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-ROLL-PEN          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-GRNT = SPACE       
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-GRNT    
*S**     END-IF         
*S**        
*S**     COMPUTE #ADDL-S-TOTAL-N = VAL(WF27FEXD.WF-FE-S-EDCR) +         
*S**                                VAL(WF27FEXD.WF-FE-S-U-ROLL-IRA) +  
*S**                                VAL(WF27FEXD.WF-FE-S-U-ROLL-PEN) +  
*S**                                VAL(WF27FEXD.WF-FE-S-GRNT)          
*S**     IF #ADDL-S-TOTAL-N > 99999999999       
*S**       ASSIGN #ADDL-S-TOTAL-N = 99999999999 
*S**     END-IF         
*S**     MOVE EDITED #ADDL-S-TOTAL-N (EM=ZZZZZZZZZZ9) TO #ADDL-S-TOTAL  
*S***       
*S**     IF WF27FEXD.WF-FE-S-U-INT = SPACE      
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-INT   
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-U-DST-IRA = SPACE  
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-DST-IRA           
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-U-DST-PEN = SPACE  
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-DST-PEN           
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-DED-PAY = SPACE    
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-DED-PAY 
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-S-U-CSUP = SPACE     
*S**       MOVE '0' TO WF27FEXD.WF-FE-S-U-CSUP  
*S**     END-IF         
*S**     COMPUTE #UNTX-S-TOTAL-N = VAL(WF27FEXD.WF-FE-S-U-INT) +        
*S**                               VAL(WF27FEXD.WF-FE-S-U-DST-IRA) +    
*S**                               VAL(WF27FEXD.WF-FE-S-U-DST-PEN) +    
*S**                               VAL(WF27FEXD.WF-FE-S-DED-PAY) +      
*S**                               VAL(WF27FEXD.WF-FE-S-U-CSUP)         
*S**     IF #UNTX-S-TOTAL-N >  99999999999      
*S**       ASSIGN #UNTX-S-TOTAL-N = 99999999999 
*S**     END-IF         
*S**     MOVE EDITED #UNTX-S-TOTAL-N (EM=ZZZZZZZZZZ9) TO #UNTX-S-TOTAL  
*S*** spouse
*S**     IF WF27FEXD.WF-FE-SP-EDCR = SPACE      
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-EDCR   
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-SP-U-ROLL-IRA = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-U-ROLL-IRA         
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-SP-U-ROLL-PEN = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-U-ROLL-PEN         
*S**     END-IF         
*S**     COMPUTE #ADDL-SP-TOTAL-N = VAL(WF27FEXD.WF-FE-SP-EDCR) +       
*S**                                VAL(WF27FEXD.WF-FE-SP-U-ROLL-IRA) + 
*S**                                VAL(WF27FEXD.WF-FE-SP-U-ROLL-PEN)   
*S**     IF #ADDL-SP-TOTAL-N > 99999999999      
*S**       ASSIGN #ADDL-SP-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #ADDL-SP-TOTAL-N (EM=ZZZZZZZZZZ9) TO #ADDL-SP-TOTAL
*S***       
*S**     IF WF27FEXD.WF-FE-SP-U-INT = SPACE     
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-U-INT  
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-SP-U-DST-IRA = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-U-DST-IRA          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-SP-U-DST-PEN = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-U-DST-PEN          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-SP-DED-PAY = SPACE   
*S**       MOVE '0' TO WF27FEXD.WF-FE-SP-DED-PAY
*S**     END-IF         
*S**     COMPUTE #UNTX-SP-TOTAL-N = VAL(WF27FEXD.WF-FE-SP-U-INT) +      
*S**                               VAL(WF27FEXD.WF-FE-SP-U-DST-IRA) +   
*S**                               VAL(WF27FEXD.WF-FE-SP-U-DST-PEN) +   
*S**                               VAL(WF27FEXD.WF-FE-SP-DED-PAY)       
*S**     IF #UNTX-SP-TOTAL-N >  99999999999     
*S**       ASSIGN #UNTX-SP-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #UNTX-SP-TOTAL-N (EM=ZZZZZZZZZZ9) TO #UNTX-SP-TOTAL
*S*** parent 1          
*S**     IF WF27FEXD.WF-FE-P1-EDCR = SPACE      
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-EDCR   
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-U-ROLL-IRA = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-ROLL-IRA         
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-U-ROLL-PEN = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-ROLL-PEN         
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-GRNT = SPACE      
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-GRNT   
*S**     END-IF         
*S**      COMPUTE #ADDL-P1-TOTAL-N = VAL(WF27FEXD.WF-FE-P1-EDCR) +      
*S**                                VAL(WF27FEXD.WF-FE-P1-U-ROLL-IRA) + 
*S**                                VAL(WF27FEXD.WF-FE-P1-U-ROLL-PEN) + 
*S**                                VAL(WF27FEXD.WF-FE-P1-GRNT)         
*S**     IF #ADDL-P1-TOTAL-N > 99999999999      
*S**       ASSIGN #ADDL-P1-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #ADDL-P1-TOTAL-N (EM=ZZZZZZZZZZ9) TO #ADDL-P1-TOTAL
*S***       
*S**     IF WF27FEXD.WF-FE-P1-U-INT = SPACE     
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-INT  
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-U-DST-IRA = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-DST-IRA          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-U-DST-PEN = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-DST-PEN          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-DED-PAY = SPACE   
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-DED-PAY
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P1-U-CSUP = SPACE    
*S**       MOVE '0' TO WF27FEXD.WF-FE-P1-U-CSUP 
*S**     END-IF         
*S**     COMPUTE #UNTX-P1-TOTAL-N = VAL(WF27FEXD.WF-FE-P1-U-INT) +      
*S**                               VAL(WF27FEXD.WF-FE-P1-U-DST-IRA) +   
*S**                               VAL(WF27FEXD.WF-FE-P1-U-DST-PEN) +   
*S**                               VAL(WF27FEXD.WF-FE-P1-DED-PAY) +     
*S**                               VAL(WF27FEXD.WF-FE-P1-U-CSUP)        
*S**     IF #UNTX-P1-TOTAL-N >  99999999999     
*S**       ASSIGN #UNTX-P1-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #UNTX-P1-TOTAL-N (EM=ZZZZZZZZZZ9) TO #UNTX-P1-TOTAL
*S*** parent 2          
*S**     IF WF27FEXD.WF-FE-P2-EDCR = SPACE      
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-EDCR   
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P2-U-ROLL-IRA = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-U-ROLL-IRA         
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P2-U-ROLL-PEN = SPACE
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-U-ROLL-PEN         
*S**     END-IF         
*S**      COMPUTE #ADDL-P2-TOTAL-N = VAL(WF27FEXD.WF-FE-P2-EDCR) +      
*S**                                VAL(WF27FEXD.WF-FE-P2-U-ROLL-IRA) + 
*S**                                VAL(WF27FEXD.WF-FE-P2-U-ROLL-PEN)   
*S**     IF #ADDL-P2-TOTAL-N > 99999999999      
*S**       ASSIGN #ADDL-P2-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #ADDL-P2-TOTAL-N (EM=ZZZZZZZZZZ9) TO #ADDL-P2-TOTAL
*S***       
*S**     IF WF27FEXD.WF-FE-P2-U-INT = SPACE     
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-U-INT  
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P2-U-DST-IRA = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-U-DST-IRA          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P2-U-DST-PEN = SPACE 
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-U-DST-PEN          
*S**     END-IF         
*S**     IF WF27FEXD.WF-FE-P2-DED-PAY = SPACE   
*S**       MOVE '0' TO WF27FEXD.WF-FE-P2-DED-PAY
*S**     END-IF         
*S**     COMPUTE #UNTX-P2-TOTAL-N = VAL(WF27FEXD.WF-FE-P2-U-INT) +      
*S**                               VAL(WF27FEXD.WF-FE-P2-U-DST-IRA) +   
*S**                               VAL(WF27FEXD.WF-FE-P2-U-DST-PEN) +   
*S**                               VAL(WF27FEXD.WF-FE-P2-DED-PAY)       
*S**     IF #UNTX-P2-TOTAL-N >  99999999999     
*S**       ASSIGN #UNTX-P2-TOTAL-N = 99999999999
*S**     END-IF         
*S**     MOVE EDITED #UNTX-P2-TOTAL-N (EM=ZZZZZZZZZZ9) TO #UNTX-P2-TOTAL
*S****SAG END-EXIT      
*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****SAG DEFINE EXIT DEFINE-WINDOW 
*S**    /*  
*S**    /*  Define Window attributes
*S**    DEFINE WINDOW ADDCOMP       
*S**           SIZE 20*79           
*S**           BASE 2 / 1           
*S**           TITLE #TITLE         
*S**           CONTROL SCREEN       
*S**           FRAMED ON (CD=NE)    
*S**           POSITION OFF         
*S**    DECIDE ON FIRST VALUE #PANEL
*S**      VALUE 1       
*S**        ASSIGN #TITLE = 'ADD/FINANCIER Comparison - Federal Overview'           
*S**      VALUE 2       
*S**        ASSIGN #TITLE = 'ADD/FINANCIER Comparison - Student'        
*S**      VALUE 3       
*S**        ASSIGN #TITLE = 'ADD/FINANCIER Comparison - Par1'           
*S**      VALUE 4       
*S**        ASSIGN #TITLE = 'ADD/FINANCIER Comparison - Spouse/Par2'    
*S**      NONE IGNORE   
*S**    END-DECIDE      
*S**    SET WINDOW 'ADDCOMP'        
*S**    ASSIGN ##COLOR = 'NE'       
*S****SAG END-EXIT      
*S**    /*  
*S**    /* INPUT processing         
*S**    /*  
*S**    /* Set #REJ-LIT to show if there are no rejects     
*S**    IF WF27FEXD.WF-FE-C-REJ-RSNS NE ' '     
*S**      MOVE '(Exist) ' TO #REJ-LIT           
*S**    ELSE
*S**      MOVE '(None)  ' TO #REJ-LIT           
*S**    END-IF          
*S**    /*  
*S**    /* Input Map    
*S**    IF NOT #BYPASS-INPUT        
*S**      /*
*S**      DECIDE ON FIRST VALUE #PANEL          
*S**        VALUE 1     
*S**          INPUT WITH TEXT ##MSG,
*S**                          ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3) 
*S**                USING MAP 'WFA27OVM'        
*S**        VALUE 2     
*S**          INPUT WITH TEXT ##MSG,
*S**                          ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3) 
*S**                USING MAP 'WFA27STM'        
*S**        VALUE 3     
*S**          INPUT WITH TEXT ##MSG,
*S**                          ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3) 
*S**                USING MAP 'WFA27PAM'        
*S**       VALUE 4      
*S**         INPUT WITH TEXT ##MSG, 
*S**                         ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3)  
*S**               USING MAP 'WFA27SPM'         
*S**        NONE IGNORE 
*S**      END-DECIDE    
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S**    /*  
*S**    /* Scrolling edit           
*S**    PERFORM SCROLLING /* Determine type of scrolling.   
*S**    /*  
*S**    /* Check standard PF-Keys   
*S**    INCLUDE WWSTDKEY
*S**    /*  
*S**    /* Trap invalid PF-Keys.    
*S**    IF #SCROLLING(*) OR *PF-KEY = 'ENTR'    
*S**       OR *PF-KEY = WWKEYLDA.#SELECT-KEY    
*S**       IGNORE       
*S**    ELSE
*S**      IF *PF-KEY = WWKEYLDA.#EXPAND-KEY     
*S**       IF *CURS-FIELD = POS(#TAB-REJECTS)   
*S**          /*        
*S**          /* ##PASS-ACTION contains WF-AD-SOURCE        
*S**          /*   (passed from WFADDMTP)       
*S**          FETCH RETURN 'WFARJ27P'           
*S**          RESET #DISPLAYED-KEY  
*S**        END-IF      
*S**      ELSE          
*S**       REINPUT 'Invalid program function key' ALARM     
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Perform edit routine     
*S**    RESET INITIAL #FAIL-EDIT    
*S**    MOVE #LAST-PANEL TO #HOLD-PANEL         
*S**    MOVE EDIT TO ##PASS-TEMP    
*S**    PERFORM CALL-EXT-SUBS       
*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-SUBS 
*S*************************************************************************         
*S**  /*    
*S**  /* Call Edit and/or Mask external subroutines         
*S**  PERFORM WFAFC27P-CALL-EXT-SUBS #HOLD-PANEL WWVALLDA   
*S**        WFAIDYND WFAIDYND-ID    
*S**        WFAIDYNR WFAIDYNS       
*S**        WFFED27D WFFED27D-ID    
*S**        WFFED27R WFFED27S       
*S**  RESET ##PASS-TEMP 
*S**END-SUBROUTINE /* CALL-EXT-SUBS 
*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 WFFED27D TO WFFED27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFFED27D-ID     
*S**  /*    
*S**  /* Invoke subprogram to process object    
*S**  PERFORM CALL-OBJECT-IO        
*S**** save wwaobj-exists gets overwritten by CALL-OBJECT-AIDNEED       
*S**  #SAVE-WWAOBJ-EXISTS := WWAOBJ.#EXISTS     
*S****SAG DEFINE EXIT AFTER-OBJECT-CALL         
*S**  IF WWAOBJ.#FUNCTION = 'GET'   
*S**    /*  
*S**    /* Get ADD record           
*S**    /*  
*S**    /* ##PASS-ACTION contains WF-AD-SOURCE  
*S**    /*   (passed from WFADDMTP) 
*S**    CALLNAT 'WFAFR27N' WW-GDA WF27FEXD      
*S**    PERFORM PREPARE-FED-OVERVIEW
*S**    /*  
*S**    /* Get AidYear record       
*S**    ASSIGN WFAIDYND.WW-STUDENT-ID = ##STUDENT-ID        
*S**    ASSIGN WFAIDYND.WF-FAO = ##FAO-ID       
*S**    ASSIGN WFAIDYND.WF-AID-YEAR = ##AID-YEAR
*S**    PERFORM CALL-OBJECT-AIDNEED 
*S**  END-IF
*S**** Put wwaobj-exists back to CALL-OBJECT-IO value       
*S**  WWAOBJ.#EXISTS := #SAVE-WWAOBJ-EXISTS     
*S****SAG END-EXIT      
*S**  /*    
*S**  IF WWAOBJ.#FUNCTION = 'GET' AND           
*S**     NOT WWAOBJ.#EXISTS         
*S**    ASSIGN #ADD-OBJECT = TRUE   
*S**  END-IF
*S**  /*    
*S**  ASSIGN #DISPLAYED-KEY = WFFED27D-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 'WFFED27O' WW-GDA     
*S**           WFFED27D 
*S**           WFFED27D-ID          
*S**           WFFED27R 
*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.#NOTEPAD-KEY       
*S**  RESET INITIAL WWKEYLDA.#EXPAND-KEY        
*S**  INCLUDE WWPFPRNT  
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* INITIALIZATIONS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SCROLLING     
*S*************************************************************************         
*S***       
*S*** Process scrolling keys and index changes. 
*S**  RESET #SCROLLING(*)           
*S**  ASSIGN #LAST-PANEL = #PANEL   
*S**  /*    
*S**  /* Scrolling      
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN *PF-KEY = WWKEYLDA.#BACKWARD-KEY   
*S**      SUBTRACT 1 FROM #PANEL    
*S**    WHEN *PF-KEY = WWKEYLDA.#FORWARD-KEY    
*S**      ADD 1 TO #PANEL           
*S**    WHEN *PF-KEY = 'ENTR' AND #REQ-PAGE-CV MODIFIED     
*S**      MOVE RIGHT JUSTIFIED #REQ-PAGE TO #HOLD-PAGE      
*S**      ASSIGN #PANEL = #HOLD-PAGE-N          
*S**      RESET #REQ-PAGE           
*S**    WHEN ANY        
*S**      ASSIGN #UP-DOWN-SCROLLING = TRUE      
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* SCROLLING     
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SET-KEYS      
*S*************************************************************************         
*S***       
*S**  INCLUDE WWPFUD   /* Scroll up-down keys   
*S**  INCLUDE WWSETKEY /* Set specified keys    
*S**  INCLUDE WWSETHLP /* Set Help keys         
*S**END-SUBROUTINE /* SET-KEY       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE VALIDATE-INDEXES          
*S*************************************************************************         
*S***       
*S*** Ensure panel is valid, implement wrap around scrolling.           
*S**  DECIDE ON FIRST VALUE #PANEL  
*S**    VALUES 1:#MAX-PANELS /* OK  
*S**      IGNORE        
*S**    VALUE -999:0         /* Too low.        
*S**      ASSIGN #PANEL = #MAX-PANELS           
*S**    NONE
*S**      ASSIGN #PANEL = 1  /* Too high.       
*S**  END-DECIDE        
*S***       
*S**END-SUBROUTINE /* VALIDATE-INDEXES          
*S***       
*S****SAG DEFINE EXIT MISCELLANEOUS-SUBROUTINES 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-AIDNEED       
*S*************************************************************************         
*S***       
*S**  CALLNAT 'WFAIDYNO' WW-GDA     
*S**           WFAIDYND 
*S**           WFAIDYND-ID          
*S**           WFAIDYNR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-AIDNEED       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PREPARE-FED-OVERVIEW      
*S*************************************************************************         
*S***       
*S**  MOVE 'WF27FEDD.WF-FE-C-DEP-MODEL' TO #PASS-KEY        
*S**  MOVE WF27FEXD.WF-FE-C-DEP-MODEL TO #PASS-TEMP         
*S**  PERFORM GET-VALUE-TRANSLATION #PASS-KEY #PASS-TEMP    
*S**  MOVE #PASS-TEMP TO #FED-DEP   
*S**  /*    
*S**  /* Student Contribution fields
*S**  MOVE SUBSTRING(WF27FEXD.WF-FE-C-SAI,1,1) TO #CNVT-BYTE
*S**  IF #CNVT-BYTE = '-'           
*S**    ASSIGN #CNVT-NEG = TRUE     
*S**    EXAMINE WF27FEXD.WF-FE-C-SAI FOR '-' DELETE         
*S**  END-IF
*S**  MOVE RIGHT JUSTIFIED WF27FEXD.WF-FE-C-SAI TO #6-BYTE-FIELD        
*S**  EXAMINE #6-BYTE-FIELD FOR ' ' REPLACE WITH '0'        
*S**  IF #6-BYTE-FIELD = MASK(999999)           
*S**    ASSIGN #6-BYTE-FIELD-N = VAL(#6-BYTE-FIELD)         
*S**    IF #CNVT-NEG    
*S**      MULTIPLY #6-BYTE-FIELD-N BY -1        
*S**    END-IF          
*S**    MOVE EDITED #6-BYTE-FIELD-N (EM=ZZZ,ZZ9-) TO #FED-SAI           
*S**  END-IF
*S***       
*S**  MOVE 'WWSYSVRD.WF-CAL-ANAL' TO #PASS-KEY  
*S**  PERFORM GET-VALUE-TRANSLATION #PASS-KEY #PASS-TEMP    
*S**  MOVE #PASS-TEMP TO #FED-SANAL 
*S**  IF WF27FEXD.WF-FE-C-DEP-MODEL = 'D' OR = 'X'          
*S**    MOVE #FED-SANAL TO #FED-PANAL           
*S**  END-IF
*S***       
*S**  MOVE SUBSTRING(WF27FEXD.WF-FE-S-FC1-CI,1,1) TO #CNVT-BYTE         
*S**  IF #CNVT-BYTE = '-'           
*S**    ASSIGN #CNVT-NEG = TRUE     
*S**    EXAMINE WF27FEXD.WF-FE-S-FC1-CI FOR '-' DELETE      
*S**  END-IF
*S**  MOVE RIGHT JUSTIFIED WF27FEXD.WF-FE-S-FC1-CI          
*S**           TO #15-BYTE-FIELD    
*S**  EXAMINE #15-BYTE-FIELD FOR ' ' REPLACE WITH '0'       
*S**  IF #15-BYTE-FIELD = MASK(999999999999999) 
*S**    ASSIGN #15-BYTE-FIELD-N = VAL(#15-BYTE-FIELD)       
*S**    IF #15-BYTE-FIELD-N > 9999999           
*S**      ASSIGN #HOLD-SCI = 9999999
*S**    ELSE
*S**      ASSIGN #HOLD-SCI = #15-BYTE-FIELD-N   
*S**    END-IF          
*S**    IF #CNVT-NEG    
*S**      MULTIPLY #HOLD-SCI BY -1  
*S**    END-IF          
*S**    MOVE EDITED #HOLD-SCI (EM=Z,ZZZ,ZZ9-) TO #FED-SCI   
*S**  END-IF
*S**  MOVE SUBSTRING(WF27FEXD.WF-FE-S-FC1-CA,1,1) TO #CNVT-BYTE         
*S**  IF #CNVT-BYTE = '-'           
*S**    ASSIGN #CNVT-NEG = TRUE     
*S**    EXAMINE WF27FEXD.WF-FE-S-FC1-CA FOR '-' DELETE      
*S**  END-IF
*S**  MOVE RIGHT JUSTIFIED WF27FEXD.WF-FE-S-FC1-CA          
*S**           TO #15-BYTE-FIELD    
*S**  EXAMINE #15-BYTE-FIELD FOR ' ' REPLACE WITH '0'       
*S**  IF #15-BYTE-FIELD = MASK(999999999999999) 
*S**    ASSIGN #15-BYTE-FIELD-N = VAL(#15-BYTE-FIELD)       
*S**    IF #15-BYTE-FIELD-N > 9999999           
*S**      ASSIGN #HOLD-SCA = 9999999
*S**    ELSE
*S**      ASSIGN #HOLD-SCA = #15-BYTE-FIELD-N   
*S**    END-IF          
*S**    IF #CNVT-NEG    
*S**      MULTIPLY #HOLD-SCA BY -1  
*S**    END-IF          
*S**    MOVE EDITED #HOLD-SCA (EM=Z,ZZZ,ZZ9-) TO #FED-SCA   
*S**  END-IF
*S***       
*S**  ASSIGN #HOLD-SC = #HOLD-SCI + #HOLD-SCA   
*S**  MOVE EDITED #HOLD-SC(EM=Z,ZZZ,ZZZ-) TO #FED-SC        
*S**  /*    
*S**  /* Parent Contribution fields 
*S**  MOVE RIGHT JUSTIFIED WF27FEXD.WF-FE-P1-FC1-CONT       
*S**           TO #15-BYTE-FIELD    
*S**  EXAMINE #15-BYTE-FIELD FOR ' ' REPLACE WITH '0'       
*S**  IF #15-BYTE-FIELD = MASK(999999999999999) 
*S**    ASSIGN #15-BYTE-FIELD-N = VAL(#15-BYTE-FIELD)       
*S**    IF #15-BYTE-FIELD-N > 9999999           
*S**      ASSIGN #HOLD-PC = 9999999 
*S**    ELSE
*S**      ASSIGN #HOLD-PC = #15-BYTE-FIELD-N    
*S**    END-IF          
*S**    MOVE EDITED #HOLD-PC (EM=Z,ZZZ,ZZ9-) TO #FED-PC     
*S**  END-IF
*S**  MOVE SUBSTRING(WF27FEXD.WF-FE-P1-FC1-CA,1,1) TO #CNVT-BYTE        
*S**  MOVE RIGHT JUSTIFIED WF27FEXD.WF-FE-P1-FC1-CA         
*S**           TO #15-BYTE-FIELD    
*S**  EXAMINE #15-BYTE-FIELD FOR ' ' REPLACE WITH '0'       
*S**  IF #15-BYTE-FIELD = MASK(999999999999999) 
*S**    ASSIGN #15-BYTE-FIELD-N = VAL(#15-BYTE-FIELD)       
*S**    IF #15-BYTE-FIELD-N > 9999999           
*S**      ASSIGN #HOLD-PCA = 9999999
*S**    ELSE
*S**      ASSIGN #HOLD-PCA = #15-BYTE-FIELD-N   
*S**    END-IF          
*S**    MOVE EDITED #HOLD-PCA (EM=Z,ZZZ,ZZ9-) TO #FED-PCA   
*S**  END-IF
*S***       
*S**  ASSIGN #HOLD-PCI = #HOLD-PC - #HOLD-PCA   
*S**  MOVE EDITED #HOLD-PCI (EM=Z,ZZZ,ZZZ-) TO #FED-PCI     
*S***       
*S**END-SUBROUTINE /* PREPARE-FED-OVERVIEW      
*S****SAG END-EXIT      
*S**END     
*C**                                FATEMP  WFAFR27N                        N S   NN0000        
*D01NAT8304N FATEMP  WFAFR27N                        ZWDNH   ZWDNH           S      
*D02            2026052913570402026052913570400000001732    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFAFR27N          
*S*** System    : FINANCIER         
*S*** Title     : 2026-27 ADD Federal Record Retrieve       
*S*** Function  : This subprogram retrieves a federal record
*S***             from the ADD file based on a passed student ID.       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER USING WF27FEXD      
*S***       
*S**  LOCAL USING WFADDDSD /* Passed to object subprogram   
*S**  LOCAL USING WFADDDSR /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /* Passed to object subprogram   
*S***       
*S**  LOCAL USING WF27FEDL /* Sequential LDA    
*S**END-DEFINE          
*S***       
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**  MOVE BY POSITION WW-PDA TO WW-GDA         
*S***       
*S*************************************************************************         
*S**  /*    
*S**  MOVE ##AID-YEAR TO WFADDDSD.WF-AID-YEAR   
*S**  /*    
*S**  /* 2027 (Mid-year OBBBA mod)  
*S**  /*   ##PASS-ACTION contains WF-AD-SOURCE  
*S**  /*    (passed in WFADDMTP)    
*S**  MOVE ##PASS-ACTION TO WFADDDSD.WF-AD-SOURCE           
*S**  MOVE ##FAO-ID TO WFADDDSD.WF-FAO          
*S**  MOVE ##SSN TO WFADDDSD.WW-ST-SSN          
*S**  /*    
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'        /* Perform GET, only way to
*S**  CALLNAT 'WFADDDSO' WW-GDA              /*  get here is thru ADD   
*S**           WFADDDSD                      /*  display, therefore record          
*S**           WFADDDSD-ID                   /*  must exist.
*S**           WFADDDSR 
*S**           WWAOBJ   
*S**  /*    
*S**  MOVE BY NAME WFADDDSD TO WF27FEDL      /* Load LDA from ADD file  
*S**  MOVE BY NAME WF27FEDL TO WF27FEXD      /* Load LDA to PDA         
*S***       
*S**MOVE BY POSITION WW-GDA TO WW-PDA           
*S***       
*S**END     
*C**                                FATEMP  WFARJ27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFARJ27P                        ZWDNH   ZWDNH           S      
*D02            2026052914080202026052914080200000011256    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: CPS ISIR Display   
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program displays federal reject information.   
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100000000 
*S****SAG OBJECT-NAME: WFISR27O     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFARJ27M     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFARJ27P           
*S*** System   : FINANCIER          
*S*** Title    : Federal Rejects Display        
*S*** Function : This program displays federal reject information.      
*S***       
*S***       
*S***       
*S***       
*S***      Copyright 1995 - 2025 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WFISR27D /* Passed to object subprogram   
*S**  LOCAL USING WFISR27R /* Passed to object subprogram   
*S**  LOCAL USING WFISR27S /* 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 SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFAFCNNP'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT EVENT-HISTORY 
*S**  /*    
*S**  /* Variables 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 #TITLE(A45)    
*S***       
*S**  01 #R-SUB(N2)     
*S**  01 #HOLD-REJECTS(A110)        
*S**  01 REDEFINE #HOLD-REJECTS     
*S**    02 #HOLD-REJ(A2/1:55)       
*S***       
*S**  01 #DISP-REJECTS(A2/1:55)     
*S***       
*S**  01 #FIN-REJECTS(A2/1:55)      
*S**  01 #FIN-REJECTS-CV(C)         
*S***       
*S**  LOCAL USING WFISX27D          
*S**  LOCAL USING WF27FEXD          
*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**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFISR27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM ISIR-2627-SECURITY ISIR-2627-CNTL-VARS    
*S**      RESET INITIAL ISIR-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**    /* User Exit to load Key fields from GDA to         
*S**    /*  appropriate PDA         
*S**    MOVE ##STUDENT-ID TO WFISR27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFISR27D.WF-FAO        
*S**    /*  
*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**    PERFORM EXTRACT-ISIR-2627 WFISX27D      
*S**    /*  
*S**    RESET #R-SUB    
*S**    MOVE #DISPLAY-REJECTS TO #HOLD-REJECTS  
*S**    FOR #R-SUB = 1 TO 55        
*S**      IF #HOLD-REJ(#R-SUB) = ' '
*S**        ESCAPE BOTTOM           
*S**      ELSE          
*S**        ASSIGN #FIN-REJECTS(#R-SUB) =       
*S**               #HOLD-REJ(#R-SUB)
*S**      END-IF        
*S**     END-FOR        
*S**    /*  
*S**    /* Get ADD record rejects   
*S**    /* ##PASS-ACTION CONTAINS WF-AD-SOURCE  
*S**    /*   (passed from WFADDMTP) 
*S**    CALLNAT 'WFAFR27N' WW-GDA WF27FEXD      
*S**    MOVE WF27FEXD.WF-FE-C-REJ-RSNS TO #HOLD-REJECTS     
*S**    FOR #R-SUB = 1 TO 55        
*S**      IF #HOLD-REJ(#R-SUB) = ' '
*S**        ESCAPE BOTTOM           
*S**      ELSE          
*S**        ASSIGN #DISP-REJECTS(#R-SUB) =      
*S**               #HOLD-REJ(#R-SUB)
*S**      END-IF        
*S**     END-FOR        
*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****SAG DEFINE EXIT DEFINE-WINDOW 
*S**/*      
*S**/*  Define Window attributes    
*S**    DEFINE WINDOW CPSISIR       
*S**           SIZE 17*44           
*S**           BASE 5 / 10          
*S**           TITLE #TITLE         
*S**           CONTROL SCREEN       
*S**           FRAMED ON (CD=NE)    
*S**           POSITION OFF         
*S**    COMPRESS 'Federal Rejects' ##PASS-TEMP  
*S**        INTO #TITLE WITH DELIMITER SPACE    
*S**    SET WINDOW 'CPSISIR'        
*S**    ASSIGN ##COLOR = 'NE'       
*S****SAG END-EXIT      
*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 'WFARJ27M'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S**    /*  
*S**    /*  
*S**    /* Check standard PF-Keys   
*S**    INCLUDE WWSTDKEY
*S**    /*  
*S**    /* Trap invalid PF-Keys.    
*S**    IF *PF-KEY = 'ENTR' OR = WWKEYLDA.#SELECT-KEY       
*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 WFREJ27M-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFISR27D WFISR27D-ID WFISR27R WFISR27S        
*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 WFISR27D TO WFISR27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFISR27D-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 = WFISR27D-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 'WFISR27O' WW-GDA     
*S**           WFISR27D 
*S**           WFISR27D-ID          
*S**           WFISR27R 
*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.#NOTEPAD-KEY       
*S**  /*    
*S**  /* Required Fields
*S*** MOVE '##SID' TO REQUIRED-FIELD(1)         
*S*** MOVE '##FAO-ID' TO REQUIRED-FIELD(2)      
*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**END     
*C**                                FATEMP  WFFEB27N                        N S   NN0000        
*D01NAT8304N FATEMP  WFFEB27N                        ZWDNH   ZWDNH           S      
*D02            2026052520272902026052520272900000031044    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFFEB27N          
*S*** System    : FINANCIER         
*S*** Title     : 2026-27 Federal Load subprogram           
*S*** Function  : This subprogram loads Federal application data from   
*S***             the ADD file into the WF-FEDERAL-2627 file.           
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S***       Note: Module copied from WFFEL27N, modified to allow for    
*S***             additional fields and increased field sizes in        
*S***             mid 2026-2027 processing year.
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER         
*S**   01 #PARAMETER-FIELDS         
*S**     02 #PGM-PARAMETERS         
*S**       03 #EARLIER-REC(A1)      
*S**       03 #FED-REJ-CASE(A1)     
*S**       03 #OVRD-FED-REJ(A1)     
*S**       03 #OVRD-C-PEND(A1)      
*S**       03 #OVRD-C-XMIT(A1)      
*S**       03 #OVRD-LOCKED(A1)      
*S**       03 #OVRD-VERIFD(A1)      
*S**       03 #OVRD-PACKAGE(A1)     
*S**     02 #PASSED-PARAMETERS      
*S**       03 #INPUT-COUNTER(P7)    
*S**       03 #NEW-REJ-COUNTER(P7)  
*S**       03 #RE-REJ-COUNTER(P7)   
*S**       03 #BYPASS-COUNTER(P7)   
*S**       03 #ADD-RECORD-COUNTER(P7)           
*S**       03 #PROCESSED-RECORD(L)  
*S**  PARAMETER USING WFADDDSD      
*S***       
*S**  LOCAL USING WFFED27D /* Passed to object subprogram   
*S**  LOCAL USING WFFED27R /* Passed to object subprogram   
*S**  LOCAL USING WWSTDNTD /* Passed to object subprogram   
*S**  LOCAL USING WWSTDNTR /* Passed to object subprogram   
*S**  LOCAL USING WFCPC27D /* Passed to object subprogram   
*S**  LOCAL USING WFCPC27R /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /* Passed to object subprograms  
*S***       
*S*** LOCAL USING WWCONST  /* Constants LDA     
*S**  LOCAL 
*S**   01 SPACE (A1) INIT<' '>      
*S**   01 EDE-TYPE (A1) INIT<'E'>   
*S**   01 INIT-DATE (D) 
*S***       
*S**  LOCAL USING WWVALLDA /* Value validation LDA          
*S**  LOCAL USING WF27FEBL /* Sequential LDA    
*S***       
*S**  LOCAL 
*S**  01 #LOGICALS      
*S**    02 #ADD-FEDERAL(L)          
*S**    02 #ADD-CPS(L)  
*S**    02 #ARRAY-LOADED(L)         
*S***       
*S**  01 #SUB(P5)       
*S**  01 #SUB2(P5)      
*S***       
*S**  01 #DATA-ERROR    
*S**    02 #ERR-SID(A9) 
*S**    02 #ERR-NAM(A30)
*S**    02 #ERR-SRC(A1) 
*S**    02 #ERR-FLD(A25)
*S**    02 #ERR-VAL(A10)
*S***       
*S**  01 #TRANSLATE-FIELD(A30)      
*S**  01 #TRANSLATE-CASE(A1)        
*S**  01 #REMOVE-SPEC-CH(L)         
*S***       
*S**  01 #N(N2)         
*S**  01 #HOLD-FILE(A8) 
*S**  01 #HOLD-SAR(A3)  
*S**  01 #HOLD-EFC(A10) 
*S**  01 #PASS-KEY(A30) 
*S**  01 #PASS-TEMP(A30)
*S***       
*S*** Variables utilized by Event History routine           
*S**  01 #EVENT-TYPE(A5) CONST<'ADDLd'>         
*S**  01 #EVENT-DESC(A40)           
*S***       
*S**  01 #BLANKS-ARRAY(A200)        
*S**  01 REDEFINE #BLANKS-ARRAY     
*S**    02 #BLANK(A1/200)           
*S***       
*S**  01 #EDIT-DATE-YYYYMMDD(A8)    
*S**  01 REDEFINE #EDIT-DATE-YYYYMMDD           
*S**    02 #EDIT-DATE-YYYYMM(A6)    
*S**    02 #EDIT-DATE-DD(A2)        
*S***       
*S**  01 #HOLD-HOLD(N7) 
*S**  01 #HOLD-CDATE(D) 
*S**  01 #HOLD-MDATE(D) 
*S**  01 #HOLD-LOCK(A1) 
*S***       
*S**  01 #CNVT-NEG(L)   
*S**  01 #CNVT-BYTE(A1) 
*S**  01 #SAVE-BYTE(A1) 
*S***       
*S**  01 #HOLD-LAST(A20)
*S**  01 #HOLD-FIRST(A20)           
*S***       
*S**  01 #PASS-FIELDS   
*S**    02 #PASS-NM-LAST(A20)       
*S**    02 #PASS-NM-FIRST(A20)      
*S**    02 #PASS-NM-MI(A1)          
*S**    02 #PASS-PID(A9)
*S***       
*S**  01 #HOLD-LEU(N4.3)
*S**  01 #HOLD-LEU-FLAG(A1)         
*S**  01 #DISP-LEU(A8)  
*S**  01 #DISP-LEU-LIT(A12)         
*S**  01 #HOLD-FIELD(A50)           
*S***       
*S**  01 #START      (I4) INIT <1>  
*S**  01 #POS        (I4)           
*S**  01 #LENGTH     (I4)           
*S**  01 #COUNT      (I4) INIT <0>  
*S**  01 #STR-ARRAY  (A30/60)       
*S**  01 #STR-SUB    (P2)           
*S**  01 #HOLD-TEMP  (A100)         
*S**  01 #HOLD-ACTION (A1)          
*S**  01 #LARGE-FIELD-FIRST (A1)    
*S***       
*S**  LOCAL USING WWPARNTD          
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**FORMAT(2) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S***       
*S**FORMAT KD=ON PS=10  
*S**SET KEY ALL         
*S***       
*S**AT TOP OF PAGE(2)   
*S**  WRITE(2) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(2)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        31T 'Field Value Errors'
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name                      Src    Error'      
*S**  SKIP(2) 1         
*S**END-TOPPAGE         
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**  MOVE BY POSITION WW-PDA TO WW-GDA         
*S***       
*S***       
*S**PROG.   
*S**  REPEAT
*S**    /*  
*S**    RESET #PROCESSED-RECORD     
*S**          #FED-REJ-CASE         
*S**          #EARLIER-REC          
*S**    MOVE ##SID TO #ERR-SID      
*S**    MOVE ##COMP-NAME TO #ERR-NAM
*S**    MOVE 'F' TO #ERR-SRC        
*S**    /*  
*S**    /* Load LDA from ADD record 
*S**    MOVE BY NAME WFADDDSD TO WF27FEBL       
*S**    /*  
*S**    /* Get Federal data record  
*S**    MOVE ##STUDENT-ID TO WFFED27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFFED27D.WF-FAO        
*S**    /*  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'GET'         
*S**    PERFORM CALL-OBJECT-FEDERAL 
*S**    /*  
*S**    IF NOT WWAOBJ.#EXISTS       
*S**      ASSIGN #ADD-FEDERAL = TRUE
*S**    END-IF          
*S**    /*  
*S**    /* Federal reject           
*S**    /*  (only applicable for Automatic records)         
*S**    IF #OVRD-FED-REJ = 'Y' OR   
*S**       WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'    
*S**      IGNORE                              /* Bypass Federal Reject edit         
*S**    ELSE
*S**      IF WFADDDSD.WF-AD-SEND-RSN NE 'C'     
*S**        IF WF27FEBL.WF-FE-C-DEP-MODEL = 'X' OR ='Y'    /* Federal rejects       
*S**          ASSIGN #FED-REJ-CASE = 'F'        
*S**          ESCAPE BOTTOM(PROG.)  
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Get CPS data record      
*S**    ASSIGN WWAOBJ.#FUNCTION = 'GET'         
*S**    ASSIGN WFCPC27D.WW-STUDENT-ID = ##STUDENT-ID        
*S**    ASSIGN WFCPC27D.WF-FAO = ##FAO-ID       
*S**    PERFORM CALL-OBJECT-CPS     
*S**    IF NOT WWAOBJ.#EXISTS       
*S**      ASSIGN #ADD-CPS = TRUE    
*S**    END-IF          
*S**    /*  
*S**    /* Don't allow transactions older than current      
*S**    /*   (only if processing batch, override if invoked online)     
*S**    IF ##PGM-ID = 'WFADDLDB'    
*S**      IF WF27FEBL.WF-FE-C-TRANS-NO < WFCPC27D.WF-CP-C-TRANS-NO      
*S**        ASSIGN #EARLIER-REC = 'Y'           
*S**        ESCAPE BOTTOM(PROG.)    
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Check for rejects        
*S**    IF WFADDDSD.WF-AD-REJ-OVERRIDE NE 'O' AND           
*S**      (WFADDDSD.WF-AD-REJ1 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ2 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ3 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ4 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ5 NE SPACE)        
*S**      ESCAPE BOTTOM(PROG.)      
*S**    END-IF          
*S**    /*  
*S**    PERFORM UPDATE-STUDENT      
*S**    PERFORM UPDATE-FEDERAL      
*S**    MOVE WF27FEBL.WF-ISIR1 TO #HOLD-FIELD   
*S**    MOVE WF27FEBL.WF-ISIR19 TO #HOLD-FIELD  
*S**    PERFORM LOAD-ISIR-2627B WF27FEBL.WF-ISIR
*S**                            WF27FEBL.WF-ISIRB           
*S**    MOVE ##PASS-TEMP TO #HOLD-TEMP          
*S**    RESET ##PASS-TEMP           
*S**    MOVE ##PASS-ACTION TO #HOLD-ACTION      
*S**    MOVE '1' TO ##PASS-ACTION   
*S**    PERFORM LOAD-NSLDS-2627B WF27FEBL.WF-NSLDS          
*S**    /*  
*S**    /* (2026-2027 Mid year only)
*S**    /* Check for string of OBBBA fields that were truncated,        
*S**    /*  if found report         
*S**    IF ##PASS-TEMP NOT = ' '    
*S**      RESET #LARGE-FIELD-FIRST  
*S**      PERFORM REPORT-LARGE-FIELDS           
*S**    END-IF          
*S**    /*  
*S**    MOVE #HOLD-TEMP TO ##PASS-TEMP          
*S**    MOVE #HOLD-ACTION TO ##PASS-ACTION      
*S**    /*  
*S**    PERFORM UPDATE-CPS          
*S**    PERFORM LOAD-CORRECTIONS    
*S**    /*  
*S**    /* Add event    
*S**    PERFORM GET-NSLDS-LEU #HOLD-LEU #HOLD-LEU-FLAG      
*S**    MOVE EDITED #HOLD-LEU (EM=ZZZ9.999) TO #DISP-LEU    
*S**    MOVE LEFT JUSTIFIED #DISP-LEU TO #DISP-LEU-LIT      
*S**    COMPRESS '/LEU=' #DISP-LEU-LIT INTO #DISP-LEU-LIT LEAVING NO    
*S**    /*  
*S**    IF WF27FEBL.WF-FE-C-SAI = ' '           
*S**      COMPRESS 'FedTran #' WFCPC27D.WF-CP-C-TRANS-NO '/SAI blank'   
*S**        #DISP-LEU-LIT           
*S**          INTO #EVENT-DESC LEAVING NO       
*S**    ELSE
*S**      MOVE EDITED WF-CP-A-SAI (EM=Z,ZZZ,ZZ9-) TO #HOLD-EFC          
*S**      MOVE LEFT JUSTIFIED #HOLD-EFC TO #HOLD-EFC        
*S**      COMPRESS 'FedTran #' WFCPC27D.WF-CP-C-TRANS-NO '/SAI $' #HOLD-EFC         
*S**        #DISP-LEU-LIT           
*S**          INTO #EVENT-DESC LEAVING NO       
*S**    END-IF          
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    ADD 1 TO #ADD-RECORD-COUNTER
*S**    ASSIGN #PROCESSED-RECORD = TRUE         
*S**    ASSIGN ##PASS-ACTION = 'L'                 /* Confirm load on-line          
*S**    RESET ##PASS-KEY
*S**    ESCAPE BOTTOM(PROG.)        
*S**  END-REPEAT        
*S***       
*S**  MOVE BY POSITION WW-GDA TO WW-PDA         
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-CPS           
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WF-CPS-xxyy object subprogram 
*S**  CALLNAT 'WFCPC27O' WW-GDA     
*S**           WFCPC27D 
*S**           WFCPC27D-ID          
*S**           WFCPC27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-CPS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-FEDERAL       
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WF-FEDERAL-xxyy object subprogram         
*S**  CALLNAT 'WFFED27O' WW-GDA     
*S**           WFFED27D 
*S**           WFFED27D-ID          
*S**           WFFED27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-FEDERAL       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-STUDENT       
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WW-STUDENT object subprogram  
*S**  CALLNAT 'WWSTDNTO' WW-GDA     
*S**           WWSTDNTD 
*S**           WWSTDNTD-ID          
*S**           WWSTDNTR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-STUDENT       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-CORRECTIONS          
*S*************************************************************************         
*S**  /*    
*S**  /* First, if Corrected ISIR, delete old corrections   
*S**  IF WFADDDSD.WF-AD-SEND-RSN = 'C'          
*S**    MOVE EDE-TYPE TO ##PASS-KEY 
*S**    MOVE 'X' TO ##PASS-TEMP     
*S**    PERFORM PURGE-ECAR          
*S**  END-IF
*S**  /*    
*S**  /* If corrections were made to ADD file fields,       
*S**  /*  create correction records now that student is in FINANCIER    
*S**  DECIDE FOR EVERY CONDITION    
*S**    WHEN WFADDDSD.WF-AD-C-SSN = 'S'         
*S**      /*
*S**      /* SSN modified           
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-SSN'           
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-SSN    
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-DOB = 'B'         
*S**      /*
*S**      /* DOB modified           
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-DOB'           
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      MOVE EDITED WFADDDSD.WW-ST-DOB (EM=YYYYMMDD) TO #VALUE        
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NL = 'L'          
*S**      /*
*S**      /* Last name modified     
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-LAST'       
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-LAST
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NF = 'F'          
*S**      /*
*S**      /* First name modified    
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-FIRST'      
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-FIRST           
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NM = 'M'          
*S**      /*
*S**      /* Middle Initial modified
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-MI'         
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-MI  
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN ANY        
*S**      CALLNAT 'WWDUTILN' WW-GDA WWVALLDA    
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* LOAD-CORRECTIONS          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-UTIL-ARRAY           
*S*************************************************************************         
*S**  /*    
*S**  /* Load utility array for correction record create    
*S**  RESET #ARRAY-LOADED           
*S**  ASSIGN #N = 1     
*S**  /*    
*S**  REPEAT WHILE NOT #ARRAY-LOADED
*S**    IF (#FILE(#N) = #HOLD-FILE AND #FIELD(#N) = #PASS-KEY) OR       
*S**       (#FILE(#N) = ' ' AND #FIELD(#N) = ' ')           
*S**      ASSIGN #SAR-FLD-NO(#N) = #HOLD-SAR          /* Found match OR 
*S**      ASSIGN #VALU(#N) = #VALUE                   /*  not yet defined           
*S**      ASSIGN #VALU-SUB = #N     
*S**      ASSIGN #ARRAY-LOADED = TRUE           
*S**      IF #FILE(#N) = ' ' AND #FIELD(#N) = ' '           
*S**        ASSIGN #FILE(#N) = #HOLD-FILE       
*S**        ASSIGN #FIELD(#N) = #PASS-KEY       
*S**      END-IF        
*S**    END-IF          
*S**    ADD 1 TO #N     
*S**  END-REPEAT        
*S**END-SUBROUTINE /* LOAD-UTIL-ARRAY           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE REPORT-LARGE-FIELDS       
*S*************************************************************************         
*S**  /*    
*S**  /* Load utility array for correction record create    
*S**  ASSIGN #COUNT = 1 
*S**  REPEAT
*S**    /* Stop after 59 values */  
*S**    IF #COUNT >= 59 
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**        
*S**    /* Find next comma */       
*S**    EXAMINE SUBSTRING(##PASS-TEMP, #START) FOR ','      
*S**      GIVING POSITION #POS      
*S**        
*S**    IF #POS = 0     
*S**      /* Last value (no more commas) */     
*S**      IF #COUNT > 0 
*S**        MOVE SUBSTRING(##PASS-TEMP, #START, #LENGTH)    
*S**          TO #STR-ARRAY(#COUNT) 
*S**      END-IF        
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**        
*S**    /* Extract value */         
*S**    IF #POS = 1     
*S**      MOVE ' ' TO #STR-ARRAY(#COUNT)        
*S**    ELSE
*S**      #LENGTH := #POS - 1       
*S**      MOVE SUBSTRING(##PASS-TEMP, #START, #LENGTH)      
*S**        TO #STR-ARRAY(#COUNT)   
*S**      ADD 1 TO #COUNT           
*S**    END-IF          
*S**        
*S**    /* Move start past comma */ 
*S**    ADD #POS TO #START          
*S**        
*S**  END-REPEAT        
*S**  FOR #STR-SUB = 1 TO #COUNT    
*S**    IF #STR-ARRAY(#STR-SUB) <> ' '          
*S**      DECIDE FOR FIRST CONDITION
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A1'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A2'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A3'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A4'    
*S**          ASSIGN #VALUE = 'WF-NS-CON-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A5'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A6'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A7'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A8'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A9'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B1'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B2'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B3'    
*S**          ASSIGN #VALUE = 'WF-NS-CON-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B4'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B5'    
*S**          ASSIGN #VALUE = 'WF-NS-PERK-TOTAL'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B6'    
*S**          ASSIGN #VALUE = 'WF-NS-PERK-CUR'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B7'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL-UG'          
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B8'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL-GR'          
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B9'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C1'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C2'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C3'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C4'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C5'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C6'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C7'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C8'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C9'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D1'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D2'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D3'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D4'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D5'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D6'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D7'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D8'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D9'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E1'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E2'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E3'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E4'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E5'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E6'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E7'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E8'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E9'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F1'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F2'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F3'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F4'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F5'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F6'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F7'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F8'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F9'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G1'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G2'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G3'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G4'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G5'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-DSB'   
*S**        WHEN NONE   
*S**          IGNORE    
*S**      END-DECIDE    
*S**      IF #LARGE-FIELD-FIRST = ' '           
*S**        MOVE 'Y' TO #LARGE-FIELD-FIRST      
*S**        MOVE ##SID TO #ERR-SID  
*S**        MOVE ##COMP-NAME TO #ERR-NAM        
*S**      END-IF        
*S**      COMPRESS #VALUE ':'       
*S**       INTO #ERR-FLD LEAVING NO SPACE       
*S**      MOVE '> 999999' TO #ERR-VAL           
*S**      PERFORM WRITE-ERROR-LINE  
*S**    END-IF          
*S**  END-FOR           
*S**END-SUBROUTINE /* REPORT-LARGE-FIELDS       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PERFORM-TRANSLATE-CASE    
*S*************************************************************************         
*S**  /*    
*S**  /* Case translation routine   
*S**  PERFORM TRANSLATE-CASE #TRANSLATE-FIELD #TRANSLATE-CASE           
*S**                         #REMOVE-SPEC-CH    
*S**END-SUBROUTINE /* PERFORM-TRANSLATE-CASE    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-FEDERAL
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Federal information      
*S**  IF #ADD-FEDERAL   
*S**    ASSIGN WWAOBJ.#FUNCTION = 'STORE'       
*S**  ELSE  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'UPDATE'      
*S**  END-IF
*S**  /*    
*S**  CALLNAT 'WFFE227N' WW-GDA #LOGICALS #DATA-ERROR       
*S**                  WF27FEBL WF27FEBL-ID      
*S**                  WFFED27D WFFED27D-ID      
*S**                  WFADDDSD WFADDDSD-ID      
*S**                  WWVALLDA      
*S**  /*    
*S**  /* WFFE272N cannot do all FEDERAL updates - USIZE     
*S**  /*    
*S**  PERFORM CALL-OBJECT-FEDERAL   
*S**END-SUBROUTINE /* UPDATE-FEDERAL
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-CPS    
*S*************************************************************************         
*S**  /*    
*S**  /* Due to size restrictions, CPS is updated in WFFE327N           
*S**  /*    
*S**  CALLNAT 'WFFE327N' WW-GDA WFADDDSD WFADDDSD-ID        
*S**  /*    
*S**  /* Reread new or updated CPS record to get info for event record  
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'           
*S**  PERFORM CALL-OBJECT-CPS       
*S**END-SUBROUTINE /* UPDATE-CPS    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-PARENTS
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Parent information       
*S**  /*  and update Student record to reflect parent ids   
*S**  IF WF27FEBL.WF-FE-P1-SSN NE ' '           
*S**    /*  
*S**    /* Determine parent 1 Parent ID from the SSN, name and DOB on ISIR          
*S**    /* If parent 1 Parent ID is second one in Student record, switch
*S**    /*  the ones in the student's record    
*S**    /* If parent 1 Parent ID doesn't match first one in Student record,         
*S**    /*  move it into first slot in Student record       
*S**    MOVE WF27FEBL.WF-FE-P1-NM-LAST  TO #PASS-NM-LAST    
*S**    MOVE WF27FEBL.WF-FE-P1-NM-FIRST TO #PASS-NM-FIRST   
*S**    RESET #PASS-NM-MI           
*S**    PERFORM DETERMINE-PID WF27FEBL.WF-FE-P1-SSN         
*S**                          #PASS-NM-LAST #PASS-NM-FIRST  
*S**                          #PASS-NM-MI       
*S**                          WF27FEBL.WF-FE-P1-DOB #PASS-PID           
*S**    IF #PASS-PID NE ' '         
*S**      IF #PASS-PID = WWSTDNTD.WW-ST-PARENT-ID2          
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID2 = WWSTDNTD.WW-ST-PARENT-ID1
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID1 = #PASS-PID    
*S**      END-IF        
*S**    END-IF          
*S**    IF #PASS-PID NE ' ' AND     
*S**       #PASS-PID NE WWSTDNTD.WW-ST-PARENT-ID1           
*S**      MOVE #PASS-PID TO WWSTDNTD.WW-ST-PARENT-ID1       
*S**    END-IF          
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-P2-SSN NE ' '           
*S**    /*  
*S**    /* Determine parent 2 Parent ID from the SSN, name and DOB on ISIR          
*S**    /* If parent 2 Parent ID is second one in Student record, switch
*S**    /*  the ones in the student's record    
*S**    /* If parent 2 Parent ID doesn't match first one in Student record,         
*S**    /*  move it into first slot in Student record       
*S**    MOVE WF27FEBL.WF-FE-P2-NM-LAST  TO #PASS-NM-LAST    
*S**    MOVE WF27FEBL.WF-FE-P2-NM-FIRST TO #PASS-NM-FIRST   
*S**    RESET #PASS-NM-MI           
*S**    PERFORM DETERMINE-PID WF27FEBL.WF-FE-P2-SSN         
*S**                          #PASS-NM-LAST #PASS-NM-FIRST  
*S**                          #PASS-NM-MI       
*S**                          WF27FEBL.WF-FE-P1-DOB #PASS-PID           
*S**    IF #PASS-PID NE ' '         
*S**      IF #PASS-PID = WWSTDNTD.WW-ST-PARENT-ID1          
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID1 = WWSTDNTD.WW-ST-PARENT-ID2
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID2 = #PASS-PID    
*S**      END-IF        
*S**    END-IF          
*S**    IF #PASS-PID NE ' ' AND     
*S**       #PASS-PID NE WWSTDNTD.WW-ST-PARENT-ID2           
*S**      MOVE #PASS-PID TO WWSTDNTD.WW-ST-PARENT-ID2       
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Get current information for both parents from External file    
*S**  ASSIGN ##PASS-ACTION = 'R'    
*S**  RESET WWPARNTD    
*S**  ASSIGN WWPARNTD.#PARENT1-ID = WWSTDNTD.WW-ST-PARENT-ID1           
*S**  ASSIGN WWPARNTD.#PARENT2-ID = WWSTDNTD.WW-ST-PARENT-ID2           
*S**  PERFORM PARENTS-SERVICE WWPARNTD          
*S**  /*    
*S**  /* Decide whether parent information needs to be updated          
*S**  RESET #HOLD-LAST #HOLD-FIRST  
*S**  IF WWPARNTD.#PARENT1-ID NE ' '
*S**    IF WF27FEBL.WF-FE-P1-NM-LAST NE ' '     
*S**      IF WWPARNTD.#PARENT1-NAME NE ' '      
*S**        SEPARATE WWPARNTD.#PARENT1-NAME INTO #HOLD-LAST #HOLD-FIRST 
*S**          IGNORE WITH DELIMITERS ','        
*S**        MOVE LEFT JUSTIFIED #HOLD-FIRST TO #HOLD-FIRST  
*S**        ASSIGN #TRANSLATE-CASE = 'U'        
*S**        MOVE #HOLD-LAST TO #TRANSLATE-FIELD 
*S**        PERFORM PERFORM-TRANSLATE-CASE      
*S**      END-IF        
*S**      IF WF27FEBL.WF-FE-P1-NM-LAST  NE #TRANSLATE-FIELD OR          
*S**        (WF27FEBL.WF-FE-P1-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND           
*S**         WF27FEBL.WF-FE-P1-NM-FIRST NE ' ') 
*S**        IF WF27FEBL.WF-FE-P1-NM-LAST NE #TRANSLATE-FIELD
*S**          IF ##CNVT-CASE        
*S**            ASSIGN #TRANSLATE-CASE = 'M'    
*S**            MOVE WF27FEBL.WF-FE-P1-NM-LAST TO #TRANSLATE-FIELD      
*S**            PERFORM PERFORM-TRANSLATE-CASE  
*S**            MOVE #TRANSLATE-FIELD TO #HOLD-LAST         
*S**          ELSE      
*S**            MOVE WF27FEBL.WF-FE-P1-NM-LAST TO #HOLD-LAST
*S**          END-IF    
*S**        END-IF      
*S**        IF WF27FEBL.WF-FE-P1-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND         
*S**           WF27FEBL.WF-FE-P1-NM-FIRST NE ' '
*S**          MOVE WF27FEBL.WF-FE-P1-NM-FIRST TO #HOLD-FIRST
*S**        END-IF      
*S**        COMPRESS #HOLD-LAST ',' INTO #HOLD-LAST LEAVING NO          
*S**        COMPRESS #HOLD-LAST #HOLD-FIRST INTO WWPARNTD.#PARENT1-NAME 
*S**            WITH DELIMITER ' '  
*S**      END-IF        
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P1-SSN NE ' '         
*S**      MOVE WF27FEBL.WF-FE-P1-SSN TO WWPARNTD.#PARENT1-SSN           
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P1-DOB = MASK(YYYYMMDD)           
*S**      MOVE EDITED WF27FEBL.WF-FE-P1-DOB     
*S**               TO WWPARNTD.#PARENT1-DOB (EM=YYYYMMDD)   
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  RESET #HOLD-LAST #HOLD-FIRST  
*S**  IF WWPARNTD.#PARENT2-ID NE ' '
*S**    IF WF27FEBL.WF-FE-P2-NM-LAST NE ' '     
*S**      IF WWPARNTD.#PARENT2-NAME NE ' '      
*S**        SEPARATE WWPARNTD.#PARENT2-NAME INTO #HOLD-LAST #HOLD-FIRST 
*S**          IGNORE WITH DELIMITERS ','        
*S**        MOVE LEFT JUSTIFIED #HOLD-FIRST TO #HOLD-FIRST  
*S**        ASSIGN #TRANSLATE-CASE = 'U'        
*S**        MOVE #HOLD-LAST TO #TRANSLATE-FIELD 
*S**        PERFORM PERFORM-TRANSLATE-CASE      
*S**      END-IF        
*S**      IF WF27FEBL.WF-FE-P2-NM-LAST NE #TRANSLATE-FIELD OR           
*S**        (WF27FEBL.WF-FE-P2-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND           
*S**         WF27FEBL.WF-FE-P2-NM-FIRST NE ' ') 
*S**        IF WF27FEBL.WF-FE-P2-NM-LAST NE #TRANSLATE-FIELD
*S**          IF ##CNVT-CASE        
*S**            ASSIGN #TRANSLATE-CASE = 'M'    
*S**            MOVE WF27FEBL.WF-FE-P2-NM-LAST TO #TRANSLATE-FIELD      
*S**            PERFORM PERFORM-TRANSLATE-CASE  
*S**            MOVE #TRANSLATE-FIELD TO #HOLD-LAST         
*S**          ELSE      
*S**            MOVE WF27FEBL.WF-FE-P2-NM-LAST TO #HOLD-LAST
*S**          END-IF    
*S**        END-IF      
*S**        IF WF27FEBL.WF-FE-P2-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND         
*S**           WF27FEBL.WF-FE-P2-NM-FIRST NE ' '
*S**          MOVE WF27FEBL.WF-FE-P2-NM-FIRST TO #HOLD-FIRST
*S**        END-IF      
*S**        COMPRESS #HOLD-LAST ',' INTO #HOLD-LAST LEAVING NO          
*S**        COMPRESS #HOLD-LAST #HOLD-FIRST INTO WWPARNTD.#PARENT2-NAME 
*S**            WITH DELIMITER ' '  
*S**      END-IF        
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P2-SSN NE ' '         
*S**      MOVE WF27FEBL.WF-FE-P2-SSN TO WWPARNTD.#PARENT2-SSN           
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P2-DOB = MASK(YYYYMMDD)           
*S**      MOVE EDITED WF27FEBL.WF-FE-P2-DOB     
*S**               TO WWPARNTD.#PARENT2-DOB (EM=YYYYMMDD)   
*S**    END-IF          
*S**  END-IF
*S**  ASSIGN ##PASS-ACTION = 'U'    
*S**  PERFORM PARENTS-SERVICE WWPARNTD          
*S**END-SUBROUTINE /* UPDATE-PARENTS
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-STUDENT
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Student information      
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'           
*S**  ASSIGN WWSTDNTD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  ASSIGN WWSTDNTD.WF-FAO = ##FAO-ID         
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ATTRIBUTES     
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ADDRESS1       
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ADDRESS2       
*S**  MOVE 'P' TO WWSTDNTD.WW-ST-AD1-TYPE       
*S**  MOVE 'L' TO WWSTDNTD.WW-ST-AD2-TYPE       
*S**  PERFORM CALL-OBJECT-STUDENT   
*S**  IF WWAOBJ.#EXISTS 
*S**    ASSIGN WWAOBJ.#FUNCTION = 'UPDATE'      
*S**  ELSE  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'STORE'       
*S**  END-IF
*S**  /*    
*S**  /* If data stored in mixed case, set up translate variables       
*S**  IF ##CNVT-CASE    
*S**    ASSIGN #TRANSLATE-CASE = 'M'
*S**    RESET #REMOVE-SPEC-CH       
*S**  END-IF
*S**  /*    
*S**  /* Load data      
*S**  MOVE ##SID TO WWSTDNTD.WW-ST-SID          
*S**  IF WFADDDSD.WW-ST-SSN = MASK(999999999)   
*S**    ASSIGN WWSTDNTD.WW-ST-SSN = WFADDDSD.WW-ST-SSN      
*S**  ELSE  
*S**    IF WFADDDSD.WW-ST-SSN NE SPACE          
*S**      MOVE 'Stu-SSN: ' TO #ERR-FLD          
*S**      MOVE WFADDDSD.WW-ST-SSN TO #ERR-VAL   
*S**      PERFORM WRITE-ERROR-LINE  
*S**    END-IF          
*S**  END-IF
*S**  MOVE WFADDDSD.WW-NAME-LAST TO WWSTDNTD.WW-NAME-LAST   
*S**  MOVE WFADDDSD.WW-NAME-FIRST TO WWSTDNTD.WW-NAME-FIRST 
*S**  MOVE WFADDDSD.WW-ST-NM-LAST TO WWSTDNTD.WW-ST-NM-LAST 
*S**  MOVE WFADDDSD.WW-ST-NM-FIRST TO WWSTDNTD.WW-ST-NM-FIRST           
*S**  MOVE WFADDDSD.WW-ST-NM-MI TO WWSTDNTD.WW-ST-NM-MI     
*S**  IF WFADDDSD.WW-ST-DOB NE INIT-DATE        
*S**    MOVE WFADDDSD.WW-ST-DOB TO WWSTDNTD.WW-ST-DOB       
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-EMAIL NE ' '
*S**    MOVE WF27FEBL.WF-FE-EMAIL TO WWSTDNTD.WW-ST-EMAIL   
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-S-ALIEN NE ' '          
*S**    MOVE WF27FEBL.WF-FE-S-ALIEN TO WWSTDNTD.WW-ST-ALIEN 
*S**  END-IF
*S**  IF ##CNVT-CASE    
*S**    MOVE WF27FEBL.WF-FE-AD-STRT TO #TRANSLATE-FIELD     
*S**    PERFORM PERFORM-TRANSLATE-CASE          
*S**    MOVE #TRANSLATE-FIELD TO WF27FEBL.WF-FE-AD-STRT     
*S**    MOVE WF27FEBL.WF-FE-AD-CITY TO #TRANSLATE-FIELD     
*S**    PERFORM PERFORM-TRANSLATE-CASE          
*S**    MOVE #TRANSLATE-FIELD TO WF27FEBL.WF-FE-AD-CITY     
*S**  END-IF
*S**  IF WWSTDNTD.WW-ST-AD1-TYPE = 'P' OR       /* Permanent address    
*S**      (WWSTDNTD.WW-ST-AD1-TYPE = ' ' AND    
*S**       WWSTDNTD.WW-ST-AD2-TYPE = ' ')       
*S**    MOVE 'P' TO WWSTDNTD.WW-ST-AD1-TYPE     
*S**    MOVE WF27FEBL.WF-FE-AD-STRT TO WWSTDNTD.WW-ST-AD1-STRT1         
*S**    MOVE WF27FEBL.WF-FE-AD-CITY TO WWSTDNTD.WW-ST-AD1-CITY          
*S**    MOVE WF27FEBL.WF-FE-AD-STATE TO WWSTDNTD.WW-ST-AD1-STATE        
*S**    MOVE WF27FEBL.WF-FE-AD-ZIP TO WWSTDNTD.WW-ST-AD1-ZIP
*S**    IF WF27FEBL.WF-FE-AD-PHONE IS (N10)     
*S**      ASSIGN WWSTDNTD.WW-ST-AD1-PHONE = VAL(WF27FEBL.WF-FE-AD-PHONE)
*S**    ELSE
*S**      IF WF27FEBL.WF-FE-AD-PHONE NE SPACE   
*S**        MOVE 'Stu-Phone number: ' TO #ERR-FLD           
*S**        MOVE WF27FEBL.WF-FE-AD-PHONE TO #ERR-VAL        
*S**        PERFORM WRITE-ERROR-LINE
*S**      END-IF        
*S**    END-IF          
*S**  ELSE  
*S**    IF WWSTDNTD.WW-ST-AD2-TYPE = 'P' OR = ' ' /* Permanent address  
*S**      MOVE 'P' TO WWSTDNTD.WW-ST-AD2-TYPE   
*S**      MOVE WF27FEBL.WF-FE-AD-STRT TO WWSTDNTD.WW-ST-AD2-STRT1       
*S**      MOVE WF27FEBL.WF-FE-AD-CITY TO WWSTDNTD.WW-ST-AD2-CITY        
*S**      MOVE WF27FEBL.WF-FE-AD-STATE TO WWSTDNTD.WW-ST-AD2-STATE      
*S**      MOVE WF27FEBL.WF-FE-AD-ZIP TO WWSTDNTD.WW-ST-AD2-ZIP          
*S**      IF WF27FEBL.WF-FE-AD-PHONE IS (N10)   
*S**        ASSIGN WWSTDNTD.WW-ST-AD2-PHONE = VAL(WF27FEBL.WF-FE-AD-PHONE)          
*S**      ELSE          
*S**        IF WF27FEBL.WF-FE-AD-PHONE NE SPACE 
*S**          MOVE 'Stu-Phone number: ' TO #ERR-FLD         
*S**          MOVE WF27FEBL.WF-FE-AD-PHONE TO #ERR-VAL      
*S**          PERFORM WRITE-ERROR-LINE          
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  MOVE 'W' TO WWSTDNTD.WW-ST-ATTRIBUTES     
*S**  IF WWSTDNTD.WW-ST-AD1-TYPE = 'P'          
*S**    MOVE 'W' TO WWSTDNTD.WW-ST-ADDRESS1     
*S**    MOVE 'N' TO WWSTDNTD.WW-ST-ADDRESS2     
*S**  ELSE  
*S**    IF WWSTDNTD.WW-ST-AD2-TYPE = 'P'        
*S**      MOVE 'N' TO WWSTDNTD.WW-ST-ADDRESS1   
*S**      MOVE 'W' TO WWSTDNTD.WW-ST-ADDRESS2   
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  PERFORM UPDATE-PARENTS        
*S**  /*    
*S**  PERFORM CALL-OBJECT-STUDENT   
*S**END-SUBROUTINE /* UPDATE-STUDENT
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-ERROR-LINE          
*S*************************************************************************         
*S**  /*    
*S**  /* If processing batch, write out error line          
*S**  IF *DEVICE = 'BATCH'          
*S**    IF #ERR-SID NE ' '          
*S**      WRITE(2) ' '  
*S**    END-IF          
*S**    WRITE(2) #DATA-ERROR        
*S**    RESET #ERR-SID #ERR-NAM     
*S**  END-IF
*S**END-SUBROUTINE /* WRITE-ERROR-LINE          
*S**END     
*C**                                FATEMP  WFNSB27E                        S S   NN0000        
*D01NAT8304S FATEMP  WFNSB27E                        ZWDNH   ZWDNH           S      
*D02            2026052520295002026052520295000000030083    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subroutine: WFNSB27E          
*S*** System    : FINANCIER         
*S*** Title     : 2026-27 NSLDS Load subroutine 
*S*** Function  : This external subroutine loads the student's          
*S***             NSLDS record from an external federal record.         
*S***             It is performed during the ADD Load process.          
*S***       
*S***       Note: Module copied from WFNSL27E, modified to allow for    
*S***             additional fields and increased field sizes in        
*S***             mid 2026-2027 processing year.
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER         
*S**   01 PASSED-NSLDS  
*S**     02 WF-NSLDS1(A250)         
*S**     02 WF-NSLDS2(A250)         
*S**     02 WF-NSLDS3(A250)         
*S**     02 WF-NSLDS4(A250)         
*S**     02 WF-NSLDS5(A250)         
*S**     02 WF-NSLDS6(A250)         
*S**     02 WF-NSLDS7(A250)         
*S**     02 WF-NSLDS8(A250)         
*S**     02 WF-NSLDS9(A250)         
*S**     02 WF-NSLDS10(A250)        
*S**     02 WF-NSLDS11(A51)         
*S***       
*S**  LOCAL USING WFNSB27L          
*S**  LOCAL USING WFNSL27D /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27R /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /* Passed to object subprogram   
*S**  LOCAL 
*S**    01 #FIELD-COUNT (N2) INIT<0>
*S**    01 #LENGTH (N3) INIT<0>     
*S**END-DEFINE          
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-NSLDS-2627B          
*S*************************************************************************         
*S**  /*    
*S**  /* Set up record keys         
*S**  ASSIGN WFNSL27D.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFNSL27D.WW-STUDENT-ID = ##STUDENT-ID          
*S**  /*    
*S**  /* Get NSLDS record           
*S**  MOVE 'GET' TO WWAOBJ.#FUNCTION
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**  IF WWAOBJ.#EXISTS 
*S**    MOVE 'UPDATE' TO WWAOBJ.#FUNCTION       
*S**  ELSE  
*S**    MOVE 'STORE' TO WWAOBJ.#FUNCTION        
*S**  END-IF
*S**  /*    
*S**  /* Load NSLDS record from passed federal record       
*S**  MOVE BY NAME PASSED-NSLDS TO WFNSB27L.WF-NSLDS        
*S**  /*    
*S**  /* year specific logic due to OBBBA modifications     
*S**  /*   (for fields not increased in size, max out at 999999)        
*S**  /*     (Assumed 00 for cents values)      
*S**  IF WFNSB27L.WF-NS-SUB-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-SUB-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-OUT    
*S**    COMPRESS 'A1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-SUB-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-UNS-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-OUT    
*S**    COMPRESS 'A2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-UNS-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-CMB-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-OUT    
*S**    COMPRESS 'A3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-CMB-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CON-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-CON-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CON-OUT    
*S**    COMPRESS 'A4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CON-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-CON-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-TCH-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-OUT    
*S**    COMPRESS 'A5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-TCH-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-SUB-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-SUB-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-PEND   
*S**    COMPRESS 'A6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-PEND ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-SUB-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-UNS-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-PEND   
*S**    COMPRESS 'A7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-PEND ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-UNS-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-CMB-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-PEND   
*S**    COMPRESS 'A8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-PEND ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-CMB-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-SUB-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-SUB-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-TOTAL  
*S**    COMPRESS 'A9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-TOTAL = 'N/A            '     
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-SUB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-UNS-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-TOTAL  
*S**    COMPRESS 'B1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-TOTAL = 'N/A            '     
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-UNS-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-CMB-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-TOTAL  
*S**    COMPRESS 'B2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-TOTAL = 'N/A            '     
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-CMB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CON-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-CON-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CON-TOTAL  
*S**    COMPRESS 'B3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CON-TOTAL = 'N/A            '     
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-CON-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-TCH-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL  
*S**    COMPRESS 'B4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL = 'N/A            '     
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-TCH-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-PERK-TOTAL = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-PERK-TOTAL > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-PERK-TOTAL 
*S**    COMPRESS 'B5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-PERK-TOTAL = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-PERK-TOTAL           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-PERK-CUR = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-PERK-CUR > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-PERK-CUR   
*S**    COMPRESS 'B6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-PERK-CUR = 'N/A            '      
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-PERK-CUR 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL-UG = MASK(999999999999999) AND        
*S**     WFNSB27L.WF-NS-TCH-TOTAL-UG > '000000099999900'    
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL-UG           
*S**    COMPRESS 'B7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL-UG = 'N/A            '  
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-TCH-TOTAL-UG         
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL-GR = MASK(999999999999999) AND        
*S**     WFNSB27L.WF-NS-TCH-TOTAL-GR > '000000099999900'    
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL-GR           
*S**    COMPRESS 'B8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL-GR = 'N/A            '  
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-TCH-TOTAL-GR         
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P1-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-SCH-AWD 
*S**    COMPRESS 'B9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P1-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P1-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-PAID    
*S**    COMPRESS 'C1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P1-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P1-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-AWARD   
*S**    COMPRESS 'C2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P1-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P2-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-SCH-AWD 
*S**    COMPRESS 'C3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P2-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P2-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-PAID    
*S**    COMPRESS 'C4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P2-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P2-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-AWARD   
*S**    COMPRESS 'C5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P2-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P3-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-SCH-AWD 
*S**    COMPRESS 'C6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P3-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P3-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-PAID    
*S**    COMPRESS 'C7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P3-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P3-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-AWARD   
*S**    COMPRESS 'C8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-P3-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T1-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-SCH-AWD 
*S**    COMPRESS 'C9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T1-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T1-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-PAID    
*S**    COMPRESS 'D1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T1-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T1-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-AWARD   
*S**    COMPRESS 'D2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T1-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T1-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-DCHG-AMT
*S**    COMPRESS 'D3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-DCHG-AMT = 'N/A            '   
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T1-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T1-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-ADJ-DSB 
*S**    COMPRESS 'D4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-ADJ-DSB = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T1-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T2-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-SCH-AWD 
*S**    COMPRESS 'D5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T2-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T2-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-PAID    
*S**    COMPRESS 'D6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T2-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T2-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-AWARD   
*S**    COMPRESS 'D7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T2-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T2-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-DCHG-AMT
*S**    COMPRESS 'D8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-DCHG-AMT = 'N/A            '   
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T2-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T2-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-ADJ-DSB 
*S**    COMPRESS 'D9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-ADJ-DSB = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T2-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T3-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-SCH-AWD 
*S**    COMPRESS 'E1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-SCH-AWD = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T3-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T3-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-PAID    
*S**    COMPRESS 'E2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-PAID = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T3-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T3-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-AWARD   
*S**    COMPRESS 'E3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-AWARD ='N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T3-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T3-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-DCHG-AMT
*S**    COMPRESS 'E4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-DCHG-AMT = 'N/A            '   
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T3-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T3-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-ADJ-DSB 
*S**    COMPRESS 'E5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-ADJ-DSB = 'N/A            '    
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-T3-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-AMT    
*S**    COMPRESS 'E6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L01-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-OUT    
*S**    COMPRESS 'E7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L01-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-DSB    
*S**    COMPRESS 'E8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L01-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-AMT    
*S**    COMPRESS 'E9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L02-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-OUT    
*S**    COMPRESS 'F1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L02-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-DSB    
*S**    COMPRESS 'F2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L02-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-AMT    
*S**    COMPRESS 'F3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L03-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-OUT    
*S**    COMPRESS 'F4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L03-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-DSB    
*S**    COMPRESS 'F5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L03-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-AMT    
*S**    COMPRESS 'F6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L04-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-OUT    
*S**    COMPRESS 'F7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L04-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-DSB    
*S**    COMPRESS 'F8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L04-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-AMT    
*S**    COMPRESS 'F9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L05-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-OUT    
*S**    COMPRESS 'G1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L05-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-DSB    
*S**    COMPRESS 'G2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L05-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-AMT    
*S**    COMPRESS 'G3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-AMT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L06-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-OUT    
*S**    COMPRESS 'G4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-OUT = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L06-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-DSB    
*S**    COMPRESS 'G5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-DSB = 'N/A            '       
*S**      MOVE '         N/A   ' TO WFNSB27L.WF-NS-L06-DSB  
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Remove last byte if it's a comma       
*S**  EXAMINE ##PASS-TEMP FOR ',' GIVING LENGTH IN #LENGTH  
*S**  IF #LENGTH > 0 AND SUBSTRING(##PASS-TEMP, #LENGTH, 1) = ','       
*S**    ASSIGN #LENGTH = #LENGTH - 1
*S**    MOVE SUBSTRING(##PASS-TEMP, 1, #LENGTH) TO ##PASS-TEMP          
*S**  END-IF
*S**  /*    
*S**  MOVE BY NAME WFNSB27L.WF-NSLDS TO WFNSL27D.WF-NSLDS   
*S**  /*    
*S**  /* Need to move bytes 8-13 of 59 fields not increased 
*S**  /*  with mid year 2026-2027 mods          
*S**  /*   (ignoring cents)         
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-SUB-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-UNS-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-CMB-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CON-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-CON-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-TCH-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-SUB-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-UNS-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-CMB-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-SUB-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-UNS-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-CMB-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CON-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-CON-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-TCH-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-PERK-TOTAL,8,6) TO      
*S**       WFNSL27D.WF-NS-PERK-TOTAL
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-PERK-CUR,8,6) TO        
*S**       WFNSL27D.WF-NS-PERK-CUR  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL-UG,8,6) TO    
*S**       WFNSL27D.WF-NS-TCH-TOTAL-UG          
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL-GR,8,6) TO    
*S**       WFNSL27D.WF-NS-TCH-TOTAL-GR          
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P1-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P1-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P1-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P2-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P2-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P2-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P3-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P3-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P3-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T1-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T1-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T1-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T1-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T1-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T2-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T2-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T2-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T2-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T2-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T3-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T3-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T3-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T3-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T3-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-DSB   
*S**  /*    
*S**  /* Perform I/O to create/update record    
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* LOAD-NSLDS-2627B          
*S**END     
*C**                                FATEMP  WFNSL27L                        L S   NN0000        
*D01NAT8304L FATEMP  WFNSL27L                        ZWDNH   ZWDNH           S      
*D02            2026052410525702026052410525700000017661    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****C           0   ***********************************************************************   
*S****C           0   * 
*S****C           0   *         WolffPack, Inc. 
*S****C           0   *                                            Copyright 1995 - 2026        
*S****C           0   * LDA:    WFNSL27L                              WolffPack, Inc.           
*S****C           0   * System: FINANCIER                           All rights reserved.        
*S****C           0   * 
*S****C           0   ***********************************************************************   
*S****DS          0         1WFNSL27L                        /* Object Name         
*S****DK          0   A   9 2WW-STUDENT-ID                   /*         
*S****DK          0   A   2 2WF-FAO                          /*         
*S****DS          0         2WW-SYSTEM                       /*         
*S****DK          0   N   7 3WW-HOLD                         /*         
*S****DK          0   D     3WW-CDATE                        /*         
*S****DK          0   D     3WW-MDATE                        /*         
*S****DS          0         2WF-NSLDS                        /*         
*S****DK          0   A   1 3WF-NS-PELL-OVP                  /*         
*S****DK          0   A   8 3WF-NS-PELL-OVP-CTC              /*         
*S****DK          0   A   1 3WF-NS-SEOG-OVP                  /*         
*S****DK          0   A   8 3WF-NS-SEOG-OVP-CTC              /*         
*S****DK          0   A   1 3WF-NS-PERK-OVP                  /*         
*S****DK          0   A   8 3WF-NS-PERK-OVP-CTC              /*         
*S****DK          0   A   1 3WF-NS-TCH-OVP                   /*         
*S****DK          0   A   8 3WF-NS-TCH-OVP-CTC               /*         
*S****DK          0   A   1 3WF-NS-IAAS-OVP                  /*         
*S****DK          0   A   8 3WF-NS-IAAS-OVP-CTC              /*         
*S****DK          0   A   1 3WF-NS-LOAN-DEF                  /*         
*S****DK          0   A   1 3WF-NS-LOAN-DIS                  /*         
*S****DK          0   A   1 3WF-NS-LOAN-FRD                  /*         
*S****DK          0   A   1 3WF-NS-LOAN-REP                  /*         
*S****DK          0   A   1 3WF-NS-BANKRUPT                  /*         
*S****DK          0   A   1 3WF-NS-TCH-CONV                  /*         
*S****DK          0   A   6 3WF-NS-SUB-OUT                   /*         
*S****DK          0   A   6 3WF-NS-UNS-OUT                   /*         
*S****DK          0   A   6 3WF-NS-CMB-OUT                   /*         
*S****DK          0   A   6 3WF-NS-CON-OUT                   /*         
*S****DK          0   A   6 3WF-NS-TCH-OUT                   /*         
*S****DK          0   A   6 3WF-NS-SUB-PEND                  /*         
*S****DK          0   A   6 3WF-NS-UNS-PEND                  /*         
*S****DK          0   A   6 3WF-NS-CMB-PEND                  /*         
*S****DK          0   A   6 3WF-NS-SUB-TOTAL                 /*         
*S****DK          0   A   6 3WF-NS-UNS-TOTAL                 /*         
*S****DK          0   A   6 3WF-NS-CMB-TOTAL                 /*         
*S****DK          0   A   6 3WF-NS-CON-TOTAL                 /*         
*S****DK          0   A   6 3WF-NS-TCH-TOTAL                 /*         
*S****DK          0   A   6 3WF-NS-PERK-TOTAL                /*         
*S****DK          0   A   6 3WF-NS-PERK-CUR                  /*         
*S****DK          0   A   6 3WF-NS-TCH-TOTAL-UG              /*         
*S****DK          0   A   6 3WF-NS-TCH-TOTAL-GR              /*         
*S****DK          0   A   1 3WF-NS-LOAN-DEF-CHG              /*         
*S****DK          0   A   1 3WF-NS-LOAN-FRD-CHG              /*         
*S****DK          0   A   1 3WF-NS-LOAN-DIS-CHG              /*         
*S****DK          0   A   1 3WF-NS-LOAN-REP-CHG              /*         
*S****DK          0   A   1 3WF-NS-BANKRUPT-CHG              /*         
*S****DK          0   A   1 3WF-NS-TCH-CONV-CHG              /*         
*S****DK          0   A   1 3WF-NS-OVPMT-CHG                 /*         
*S****DK          0   A   1 3WF-NS-LOAN-CHG                  /*         
*S****DK          0   A   1 3WF-NS-PERKINS-CHG               /*         
*S****DK          0   A   1 3WF-NS-PELL-CHG                  /*         
*S****DK          0   A   1 3WF-NS-TCH-CHG                   /*         
*S****DK          0   A   1 3WF-NS-PELL-ADTNL                /*         
*S****DK          0   A   1 3WF-NS-LOAN-ADTNL                /*         
*S****DK          0   A   1 3WF-NS-TCH-ADTNL                 /*         
*S****DK          0   A   1 3WF-NS-DL-MPN                    /*         
*S****DK          0   A   1 3WF-NS-DLP-MPN                   /*         
*S****DK          0   A   1 3WF-NS-DLG-MPN                   /*         
*S****DK          0   A   1 3WF-NS-SUB-LIMIT-UG              /*         
*S****DK          0   A   1 3WF-NS-CMB-LIMIT-UG              /*         
*S****DK          0   A   1 3WF-NS-SUB-LIMIT-GR              /*         
*S****DK          0   A   1 3WF-NS-CMB-LIMIT-GR              /*         
*S****DK          0   A   1 3WF-NS-C-LEU-FLAG                /*         
*S****DK          0   A   7 3WF-NS-C-LEU                     /*         
*S****DK          0   A   1 3WF-NS-C-SUB-LE-FLAG             /*         
*S****DK          0   A   6 3WF-NS-C-SUB-USAGE-PD            /*         
*S****DK          0   A   1 3WF-NS-C-ENR-PATTERN             /*         
*S****DK          0   A20   3WF-NS-FILLER-020A  
*S****DK          0   A   2 3WF-NS-P1-SEQ                    /*         
*S****DK          0   A   3 3WF-NS-P1-VER                    /*         
*S****DK          0   A6    3WF-NS-P1-SAI       
*S****DK          0   A   8 3WF-NS-P1-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-P1-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-P1-DATE                   /*         
*S****DK          0   A   6 3WF-NS-P1-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-P1-PAID                   /*         
*S****DK          0   A   7 3WF-NS-P1-SCH-PCT                /*         
*S****DK          0   A   6 3WF-NS-P1-AWARD                  /*         
*S****DK          0   A   1 3WF-NS-P1-ADDL-ELIG              /*         
*S****DK          0   A20   3WW-FILLER-020B     
*S****DK          0   A   2 3WF-NS-P2-SEQ                    /*         
*S****DK          0   A   3 3WF-NS-P2-VER                    /*         
*S****DK          0   A6    3WF-NS-P2-SAI       
*S****DK          0   A   8 3WF-NS-P2-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-P2-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-P2-DATE                   /*         
*S****DK          0   A   6 3WF-NS-P2-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-P2-PAID                   /*         
*S****DK          0   A   7 3WF-NS-P2-SCH-PCT                /*         
*S****DK          0   A   6 3WF-NS-P2-AWARD                  /*         
*S****DK          0   A   1 3WF-NS-P2-ADDL-ELIG              /*         
*S****DK          0   A20   3WW-FILLER-020C     
*S****DK          0   A   2 3WF-NS-P3-SEQ                    /*         
*S****DK          0   A   3 3WF-NS-P3-VER                    /*         
*S****DK          0   A6    3WF-NS-P3-SAI       
*S****DK          0   A   8 3WF-NS-P3-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-P3-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-P3-DATE                   /*         
*S****DK          0   A   6 3WF-NS-P3-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-P3-PAID                   /*         
*S****DK          0   A   7 3WF-NS-P3-SCH-PCT                /*         
*S****DK          0   A   6 3WF-NS-P3-AWARD                  /*         
*S****DK          0   A   1 3WF-NS-P3-ADDL-ELIG              /*         
*S****DK          0   A20   3WW-FILLER-020D     
*S****DK          0   A   2 3WF-NS-T1-SEQ                    /*         
*S****DK          0   A   8 3WF-NS-T1-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-T1-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-T1-DATE                   /*         
*S****DK          0   A   6 3WF-NS-T1-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-T1-PAID                   /*         
*S****DK          0   A   6 3WF-NS-T1-AWARD                  /*         
*S****DK          0   A1    3WF-NS-T1-LEVEL     
*S****DK          0   A   4 3WF-NS-T1-AWDYEAR                /*         
*S****DK          0   A   1 3WF-NS-T1-CONV                   /*         
*S****DK          0   A4    3WF-NS-T1-DCHG      
*S****DK          0   A6    3WF-NS-T1-DCHG-AMT  
*S****DK          0   A6    3WF-NS-T1-ADJ-DSB   
*S****DK          0   A20   3WW-FILLER-020E     
*S****DK          0   A   2 3WF-NS-T2-SEQ                    /*         
*S****DK          0   A   8 3WF-NS-T2-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-T2-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-T2-DATE                   /*         
*S****DK          0   A   6 3WF-NS-T2-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-T2-PAID                   /*         
*S****DK          0   A   6 3WF-NS-T2-AWARD                  /*         
*S****DK          0   A1    3WF-NS-T2-LEVEL     
*S****DK          0   A   4 3WF-NS-T2-AWDYEAR                /*         
*S****DK          0   A   1 3WF-NS-T2-CONV                   /*         
*S****DK          0   A4    3WF-NS-T2-DCHG      
*S****DK          0   A6    3WF-NS-T2-DCHG-AMT  
*S****DK          0   A6    3WF-NS-T2-ADJ-DSB   
*S****DK          0   A20   3WW-FILLER-020F     
*S****DK          0   A   2 3WF-NS-T3-SEQ                    /*         
*S****DK          0   A   8 3WF-NS-T3-SCHOOL                 /*         
*S****DK          0   A   2 3WF-NS-T3-TRAN                   /*         
*S****DK          0   A   8 3WF-NS-T3-DATE                   /*         
*S****DK          0   A   6 3WF-NS-T3-SCH-AWD                /*         
*S****DK          0   A   6 3WF-NS-T3-PAID                   /*         
*S****DK          0   A   6 3WF-NS-T3-AWARD                  /*         
*S****DK          0   A1    3WF-NS-T3-LEVEL     
*S****DK          0   A   4 3WF-NS-T3-AWDYEAR                /*         
*S****DK          0   A   1 3WF-NS-T3-CONV                   /*         
*S****DK          0   A4    3WF-NS-T3-DCHG      
*S****DK          0   A6    3WF-NS-T3-DCHG-AMT  
*S****DK          0   A6    3WF-NS-T3-ADJ-DSB   
*S****DK          0   A20   3WW-FILLER-020G     
*S****DK          0   A   2 3WF-NS-L01-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L01-DFLT     
*S****DK          0   A   1 3WF-NS-L01-CHG                   /*         
*S****DK          0   A2    3WF-NS-L01-TYPE     
*S****DK          0   A   6 3WF-NS-L01-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L01-STA                   /*         
*S****DK          0   A   8 3WF-NS-L01-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L01-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L01-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L01-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L01-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L01-GA                    /*         
*S****DK          0   A   3 3WF-NS-L01-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L01-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L01-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L01-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L01-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L01-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L01-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L01-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L01-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L01-SUBSIDY-DT            /*         
*S****DK          0   A20   3WW-FILLER-020H     
*S****DK          0   A   2 3WF-NS-L02-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L02-DFLT     
*S****DK          0   A   1 3WF-NS-L02-CHG                   /*         
*S****DK          0   A2    3WF-NS-L02-TYPE     
*S****DK          0   A   6 3WF-NS-L02-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L02-STA                   /*         
*S****DK          0   A   8 3WF-NS-L02-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L02-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L02-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L02-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L02-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L02-GA                    /*         
*S****DK          0   A   3 3WF-NS-L02-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L02-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L02-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L02-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L02-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L02-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L02-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L02-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L02-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L02-SUBSIDY-DT            /*         
*S****DK          0   A20   3WW-FILLER-020I     
*S****DK          0   A   2 3WF-NS-L03-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L03-DFLT     
*S****DK          0   A   1 3WF-NS-L03-CHG                   /*         
*S****DK          0   A2    3WF-NS-L03-TYPE     
*S****DK          0   A   6 3WF-NS-L03-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L03-STA                   /*         
*S****DK          0   A   8 3WF-NS-L03-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L03-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L03-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L03-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L03-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L03-GA                    /*         
*S****DK          0   A   3 3WF-NS-L03-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L03-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L03-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L03-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L03-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L03-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L03-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L03-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L03-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L03-SUBSIDY-DT            /*         
*S****DK          0   A20   3WW-FILLER-020J     
*S****DK          0   A   2 3WF-NS-L04-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L04-DFLT     
*S****DK          0   A   1 3WF-NS-L04-CHG                   /*         
*S****DK          0   A2    3WF-NS-L04-TYPE     
*S****DK          0   A   6 3WF-NS-L04-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L04-STA                   /*         
*S****DK          0   A   8 3WF-NS-L04-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L04-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L04-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L04-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L04-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L04-GA                    /*         
*S****DK          0   A   3 3WF-NS-L04-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L04-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L04-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L04-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L04-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L04-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L04-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L04-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L04-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L04-SUBSIDY-DT            /*         
*S****DK          0   A20   3WW-FILLER-020K     
*S****DK          0   A   2 3WF-NS-L05-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L05-DFLT     
*S****DK          0   A   1 3WF-NS-L05-CHG                   /*         
*S****DK          0   A2    3WF-NS-L05-TYPE     
*S****DK          0   A   6 3WF-NS-L05-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L05-STA                   /*         
*S****DK          0   A   8 3WF-NS-L05-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L05-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L05-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L05-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L05-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L05-GA                    /*         
*S****DK          0   A   3 3WF-NS-L05-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L05-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L05-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L05-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L05-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L05-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L05-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L05-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L05-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L05-SUBSIDY-DT            /*         
*S****DK          0   A20   3WW-FILLER-020L     
*S****DK          0   A   2 3WF-NS-L06-SEQ                   /*         
*S****DK          0   A1    3WF-NS-L06-DFLT     
*S****DK          0   A   1 3WF-NS-L06-CHG                   /*         
*S****DK          0   A2    3WF-NS-L06-TYPE     
*S****DK          0   A   6 3WF-NS-L06-AMT                   /*         
*S****DK          0   A   2 3WF-NS-L06-STA                   /*         
*S****DK          0   A   8 3WF-NS-L06-STA-DATE              /*         
*S****DK          0   A   6 3WF-NS-L06-OUT                   /*         
*S****DK          0   A   8 3WF-NS-L06-OUT-DATE              /*         
*S****DK          0   A   8 3WF-NS-L06-BEG-DATE              /*         
*S****DK          0   A   8 3WF-NS-L06-END-DATE              /*         
*S****DK          0   A   3 3WF-NS-L06-GA                    /*         
*S****DK          0   A   3 3WF-NS-L06-CTC-TYPE              /*         
*S****DK          0   A   8 3WF-NS-L06-SCHOOL                /*         
*S****DK          0   A   8 3WF-NS-L06-CONTACT               /*         
*S****DK          0   A   3 3WF-NS-L06-LEVEL                 /*         
*S****DK          0   A   1 3WF-NS-L06-XUNS                  /*         
*S****DK          0   A   1 3WF-NS-L06-CAP                   /*         
*S****DK          0   A   6 3WF-NS-L06-DSB                   /*         
*S****DK          0   A   8 3WF-NS-L06-DSB-DATE              /*         
*S****DK          0   A   1 3WF-NS-L06-SUBSIDY               /*         
*S****DK          0   A   8 3WF-NS-L06-SUBSIDY-DT            /*         
*S****DK B        0   A     3WW-FILLER-1164     
*S****DE                     LE=1164
*S****DR          0        R2WF-NSLDS           
*S****DFR         0   A 250 3WF-NSLDS1                       /*         
*S****DFR         0   A 250 3WF-NSLDS2                       /*         
*S****DFR         0   A 250 3WF-NSLDS3                       /*         
*S****DFR         0   A 250 3WF-NSLDS4                       /*         
*S****DFR         0   A 250 3WF-NSLDS5                       /*         
*S****DFR         0   A250  3WF-NSLDS6          
*S****DK          0   A250  2WF-NSLDS7          
*S****DK          0   A250  2WF-NSLDS8          
*S****DK          0   A250  2WF-NSLDS9          
*S****DK          0   A250  2WF-NSLDS10         
*S****DK          0   A51   2WF-NSLDS11         
*C**                                FATEMP  WFREJ27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFREJ27P                        ZWDNH   ZWDNH           S      
*D02            2026052914025402026052914025400000011258    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: CPS ISIR Display   
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program displays federal reject information.   
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100000000 
*S****SAG OBJECT-NAME: WFISR27O     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFREJ27M     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFREJ27P           
*S*** System   : FINANCIER          
*S*** Title    : Federal Rejects Display        
*S*** Function : This program displays federal reject information.      
*S***       
*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 WFISR27D /* Passed to object subprogram   
*S**  LOCAL USING WFISR27R /* Passed to object subprogram   
*S**  LOCAL USING WFISR27S /* 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 SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFAFCNNP'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT EVENT-HISTORY 
*S**  /*    
*S**  /* Variables 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 #TITLE(A45)    
*S***       
*S**  01 #R-SUB(N2)     
*S**  01 #HOLD-REJECTS(A110)        
*S**  01 REDEFINE #HOLD-REJECTS     
*S**    02 #HOLD-REJ(A2/1:55)       
*S***       
*S**  01 #DISP-REJECTS(A2/1:55)     
*S***       
*S**  01 #FIN-REJECTS(A2/1:55)      
*S**  01 #FIN-REJECTS-CV(C)         
*S***       
*S**  LOCAL USING WFISX27D          
*S**  LOCAL USING WF27FEXD          
*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**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFISR27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM ISIR-2627-SECURITY ISIR-2627-CNTL-VARS    
*S**      RESET INITIAL ISIR-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**    /* User Exit to load Key fields from GDA to         
*S**    /*  appropriate PDA         
*S**    MOVE ##STUDENT-ID TO WFISR27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFISR27D.WF-FAO        
*S**    /*  
*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**    PERFORM EXTRACT-ISIR-2627 WFISX27D      
*S**    /*  
*S**    RESET #R-SUB    
*S**    MOVE #DISPLAY-REJECTS TO #HOLD-REJECTS  
*S**    FOR #R-SUB = 1 TO 55        
*S**      IF #HOLD-REJ(#R-SUB) = ' '
*S**        ESCAPE BOTTOM           
*S**      ELSE          
*S**        ASSIGN #FIN-REJECTS(#R-SUB) =       
*S**               #HOLD-REJ(#R-SUB)
*S**      END-IF        
*S**     END-FOR        
*S**    /*  
*S**    /* Get ADD record rejects   
*S**        
*S**    /* ##PASS-TEMP CONTAINS WF-AD-SOURCE    
*S**    /*   (passed from WFADDMTP) 
*S**    CALLNAT 'WFAFR27N' WW-GDA WF27FEXD      
*S**    MOVE WF27FEXD.WF-FE-C-REJ-RSNS TO #HOLD-REJECTS     
*S**    FOR #R-SUB = 1 TO 55        
*S**      IF #HOLD-REJ(#R-SUB) = ' '
*S**        ESCAPE BOTTOM           
*S**      ELSE          
*S**        ASSIGN #DISP-REJECTS(#R-SUB) =      
*S**               #HOLD-REJ(#R-SUB)
*S**      END-IF        
*S**     END-FOR        
*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****SAG DEFINE EXIT DEFINE-WINDOW 
*S**/*      
*S**/*  Define Window attributes    
*S**    DEFINE WINDOW CPSISIR       
*S**           SIZE 10*44           
*S**           BASE 11 / 29         
*S**           TITLE #TITLE         
*S**           CONTROL SCREEN       
*S**           FRAMED ON (CD=NE)    
*S**           POSITION OFF         
*S**    COMPRESS 'Federal Rejects' ##PASS-TEMP  
*S**        INTO #TITLE WITH DELIMITER SPACE    
*S**    SET WINDOW 'CPSISIR'        
*S**    ASSIGN ##COLOR = 'NE'       
*S****SAG END-EXIT      
*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 'WFREJ27M'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S**    /*  
*S**    /*  
*S**    /* Check standard PF-Keys   
*S**    INCLUDE WWSTDKEY
*S**    /*  
*S**    /* Trap invalid PF-Keys.    
*S**    IF *PF-KEY = 'ENTR' OR = WWKEYLDA.#SELECT-KEY       
*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 WFREJ27M-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFISR27D WFISR27D-ID WFISR27R WFISR27S        
*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 WFISR27D TO WFISR27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFISR27D-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 = WFISR27D-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 'WFISR27O' WW-GDA     
*S**           WFISR27D 
*S**           WFISR27D-ID          
*S**           WFISR27R 
*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.#NOTEPAD-KEY       
*S**  /*    
*S**  /* Required Fields
*S*** MOVE '##SID' TO REQUIRED-FIELD(1)         
*S*** MOVE '##FAO-ID' TO REQUIRED-FIELD(2)      
*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**END     
*C**                                FATEMP  WWSPURGN                        N S   NN0000        
*D01NAT8304N FATEMP  WWSPURGN                        ZWDNH   ZWDNH           S      
*D02            2026052615482002026052615482000000007063    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subroutine: WWSPURGN          
*S*** System    : FINANCIER         
*S*** Title     : Student purge (non year specific)         
*S*** Function  : This subprogram is used to read/purge student information.        
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S***       
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER         
*S**  01 #STUDENT-DATA  
*S**    02 #GOT-STUDENT-DATA(L)     
*S**    02 #ALLOW-PURGE(L)          
*S**    02 #NOTEPAD(L)  
*S**    02 #NOTEPAD-CV(C)           
*S**    02 #ARRAY(10)   
*S**      03 #FAO(A2)   
*S**      03 #FAO-CV(C) 
*S**      03 #AIDYEAR(A4)           
*S**      03 #ADD(L)    
*S**      03 #ADD-CV(C) 
*S**      03 #FEDERAL(L)
*S**      03 #FEDERAL-CV(C)         
*S**      03 #CSS(L)    
*S**      03 #CSS-CV(C) 
*S**      03 #VERIFICATION(L)       
*S**      03 #VERIFICATION-CV(C)    
*S**      03 #CORRECTION(L)         
*S**      03 #CORRECTION-CV(C)      
*S**      03 #AWARD(L)  
*S**      03 #AWARD-CV(C)           
*S**    02 #FILE-LOGICALS           
*S**      03 #AIDYEAR-L(L)          
*S**      03 #AIDYEAR-CNT(P3)       
*S**      03 #ADD-L(L)  
*S**      03 #ADD-CNT(P3)           
*S**      03 #NOTEPAD-L(L)          
*S**      03 #NOTEPAD-CNT(P3)       
*S**  PARAMETER         
*S**   01 #CMD(A8)      
*S**   01 #SUB(P3)      
*S**   01 #OVERFLOW(L)  
*S***       
*S**  LOCAL USING WWCONST           
*S**  LOCAL USING WFADDDSD          
*S**  LOCAL USING WFADDDSR          
*S**  LOCAL USING WWAOBJ
*S**  LOCAL USING WWBSORTD          
*S***       
*S**  LOCAL 
*S**  01 #SUB2(P3)      
*S**  01 #WORK-ARRAY(30)
*S**    02 #WORK-FAO(A2)
*S**    02 #WORK-AIDYEAR(A4)        
*S**  /*    
*S**  /* Views used for student deletion        
*S**  01 WF-AIDYEAR VIEW OF WF-AIDYEAR          
*S**    02 WW-STUDENT-ID
*S**    02 WF-FAO       
*S**    02 WF-AID-YEAR  
*S**  /*    
*S**  01 WW-AUDIT VIEW OF WW-AUDIT  
*S**    02 WW-RECORD-TYPE           
*S**    02 WF-FAO       
*S**    02 WW-AU-SUBJ-TYPE          
*S**    02 WW-AU-SUBJ-ID
*S**    02 WW-CTIME     
*S**  /*    
*S**  01 WW-STUDENT VIEW OF WW-STUDENT          
*S**    02 WW-STUDENT-ID
*S**    02 WW-ST-SSN    
*S**    02 WF-FAO       
*S**END-DEFINE          
*S***       
*S**ON ERROR
*S**  ASSIGN #CMD = 'ERROR'         
*S**END-ERROR           
*S**RESET #FILE-LOGICALS
*S**MOVE BY POSITION WW-PDA TO WW-GDA           
*S**DECIDE ON FIRST VALUE #CMD      
*S**  VALUE 'READ'      
*S**    PERFORM READ-STUDENT-DATA   
*S**  VALUE 'PURGE'     
*S**    PERFORM PURGE-STUDENT-DATA  
*S**  NONE  
*S**    IGNORE          
*S**END-DECIDE          
*S**MOVE BY POSITION WW-GDA TO WW-PDA           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PURGE-STUDENT-DATA        
*S*************************************************************************         
*S***       
*S**  ASSIGN #AIDYEAR-L = TRUE      
*S**  PURGE-AIDYEAR.    
*S**  FIND WF-AIDYEAR WITH WW-STUDENT-ID = ##STUDENT-ID     
*S**    IF NO RECORDS FOUND         
*S**      ASSIGN #AIDYEAR-L = FALSE 
*S**      ESCAPE BOTTOM 
*S**    END-NOREC       
*S**    DELETE(PURGE-AIDYEAR.)      
*S**  END-FIND          
*S**  /*    
*S**  /* Find outstanding Notepad records       
*S**  ASSIGN #NOTEPAD-L = TRUE      
*S**  PURGE-AUDIT.      
*S**  FIND WW-AUDIT WITH WW-AU-SUBJ-ID = ##STUDENT-ID       
*S**    IF NO RECORDS FOUND         
*S**      ASSIGN #NOTEPAD-L = FALSE 
*S**      ESCAPE BOTTOM 
*S**    END-NOREC       
*S**    DELETE(PURGE-AUDIT.)        
*S**  END-FIND          
*S**END-SUBROUTINE /* PURGE-STUDENT-DATA        
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE READ-STUDENT-DATA         
*S*************************************************************************         
*S***       
*S**  ASSIGN #AIDYEAR-L = TRUE      
*S**  FIND WF-AIDYEAR WITH WW-STUDENT-ID = ##STUDENT-ID     
*S**    IF NO RECORDS FOUND         
*S**      ASSIGN #AIDYEAR-L = FALSE 
*S**      FIND WW-STUDENT WITH WW-STUDENT-ID = ##STUDENT-ID 
*S**      FOR #SUB = 1 TO 10        
*S**        IF WW-STUDENT.WF-FAO = #FAO(#SUB) OR
*S**           #FAO(#SUB) = SPACE   
*S**          MOVE WW-STUDENT.WF-FAO TO #FAO(#SUB)          
*S**          ESCAPE BOTTOM         
*S**        END-IF      
*S**      END-FOR       
*S**      END-FIND      
*S**      ESCAPE BOTTOM 
*S**    END-NOREC       
*S**    ASSIGN #AIDYEAR-CNT = *NUMBER           
*S**    /*  
*S**    /* Accumulate unique FAOs in work array 
*S**    FOR #SUB = 1 TO 30          
*S**      IF WF-AIDYEAR.WF-FAO = #WORK-FAO(#SUB) OR         
*S**         #WORK-FAO(#SUB) = SPACE
*S**        MOVE WF-AIDYEAR.WF-FAO TO #WORK-FAO(#SUB)       
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**    END-FOR         
*S**    /*  
*S**    /* Accumulate unique AidYears in work array         
*S**    FOR #SUB = 1 TO 30          
*S**      IF WF-AIDYEAR.WF-AID-YEAR = #WORK-AIDYEAR(#SUB) OR
*S**         #WORK-AIDYEAR(#SUB) = SPACE        
*S**        MOVE WF-AIDYEAR.WF-AID-YEAR TO #WORK-AIDYEAR(#SUB)          
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**    END-FOR         
*S**  END-FIND          
*S**  /*    
*S**  /* Sort work arrays and select entries for display    
*S**  IF #AIDYEAR-L     
*S**    /*  
*S**    /* Sort and fill FAO array (first 10/ascending)     
*S**    RESET WWBSORTD  
*S**    MOVE #WORK-FAO(1:30) TO #SORT-KEY(1:30) 
*S**    FOR #SUB = 30 TO 1 STEP -1  
*S**      IF #WORK-FAO(#SUB) NE SPACE           
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**    END-FOR         
*S**    ASSIGN #SORT-MAX = #SUB     
*S**    PERFORM BUBBLE-SORT WWBSORTD
*S**    IF #SORT-MAX > 10           
*S**      ASSIGN #OVERFLOW = TRUE   
*S**    END-IF          
*S**    MOVE #SORT-KEY(1:10) TO #FAO(1:10)      
*S**    /*  
*S**    /* Sort and fill AidYear array (last 10/descending) 
*S**    RESET WWBSORTD  
*S**    MOVE #WORK-AIDYEAR(1:30) TO #SORT-KEY(1:30)         
*S**    FOR #SUB = 30 TO 1 STEP -1  
*S**      IF #WORK-AIDYEAR(#SUB) NE SPACE       
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**    END-FOR         
*S**    ASSIGN #SORT-MAX = #SUB     
*S**    PERFORM BUBBLE-SORT WWBSORTD
*S**    IF #SORT-MAX > 10           
*S**      ASSIGN #OVERFLOW = TRUE   
*S**    END-IF          
*S**    ASSIGN #SUB2 = #SORT-MAX    
*S**    FOR #SUB = 1 TO 10          
*S**      IF #SUB2 = 0  
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**      MOVE #SORT-KEY(#SUB2) TO #AIDYEAR(#SUB)           
*S**      SUBTRACT 1 FROM #SUB2     
*S**    END-FOR         
*S**    MOVE PROTECTED-ATTR TO #FAO-CV(*)       
*S**  END-IF
*S**  /*    
*S**  FOR #SUB = 1 TO 10
*S**    IF #AIDYEAR(#SUB) NE SPACE  
*S**      /*
*S**      /* Find outstanding ADD file records for the current SSN      
*S**      ASSIGN #ADD-L = TRUE      
*S**      FOR #SUB2 = 1 TO 10       
*S**        IF #FAO(#SUB2) NE SPACE 
*S**          MOVE PROTECTED-ATTR TO #ADD-CV(#SUB)          
*S**          ASSIGN WWAOBJ.#FUNCTION = 'GET'   
*S**          ASSIGN WFADDDSD.WF-FAO = #FAO(#SUB2)          
*S**          ASSIGN WFADDDSD.WF-AID-YEAR = #AIDYEAR(#SUB)  
*S**          ASSIGN WFADDDSD.WW-ST-SSN = ##SSN 
*S**          ASSIGN WFADDDSD.WF-AD-SOURCE = 'F'
*S**          CALLNAT 'WFADDDSO' WW-GDA         
*S**                  WFADDDSD      
*S**                  WFADDDSD-ID   
*S**                  WFADDDSR      
*S**                  WWAOBJ        
*S**          IF WWAOBJ.#EXISTS     
*S**           ASSIGN #ADD(#SUB) = TRUE         
*S**          END-IF    
*S**          ASSIGN WFADDDSD.WF-AD-SOURCE = 'B'
*S**          CALLNAT 'WFADDDSO' WW-GDA         
*S**                  WFADDDSD      
*S**                  WFADDDSD-ID   
*S**                  WFADDDSR      
*S**                  WWAOBJ        
*S**          IF WWAOBJ.#EXISTS     
*S**            ASSIGN #ADD(#SUB) = TRUE        
*S**          END-IF    
*S**          ASSIGN WFADDDSD.WF-AD-SOURCE = 'C'
*S**          CALLNAT 'WFADDDSO' WW-GDA         
*S**                  WFADDDSD      
*S**                  WFADDDSD-ID   
*S**                  WFADDDSR      
*S**                  WWAOBJ        
*S**          IF WWAOBJ.#EXISTS     
*S**           ASSIGN #ADD(#SUB) = TRUE         
*S**          END-IF    
*S**        END-IF      
*S**      END-FOR       
*S**    END-IF          
*S**  END-FOR           
*S**  /*    
*S**  /* Find outstanding Notepad records       
*S**  ASSIGN #NOTEPAD-L = TRUE      
*S**  RESET #NOTEPAD-CNT
*S**  FIND WW-AUDIT WITH WW-AU-SUBJ-ID = ##STUDENT-ID       
*S**    IF NO RECORDS FOUND         
*S**      ASSIGN #NOTEPAD-L = FALSE 
*S**    END-NOREC       
*S**    IF WW-AUDIT.WW-RECORD-TYPE = NOTE-TYPE  
*S**      ASSIGN #NOTEPAD-CNT = #NOTEPAD-CNT + 1
*S**    END-IF          
*S**  END-FIND          
*S**  IF #NOTEPAD-CNT > 0           
*S**    ASSIGN #NOTEPAD = TRUE      
*S**  END-IF
*S**  MOVE PROTECTED-ATTR TO #NOTEPAD-CV        
*S**END-SUBROUTINE /* READ-STUDENT-DATA         
*S***       
*S**END     
*E          
