*H**ANAT8304202607101354227LINUX                            4CAUC     04.2          
*C**                                FATEMP  WFNSD27M                        M S   NN0000        
*D01NAT8304M FATEMP  WFNSD27M                        ZWDNH   ZWDNH           S      
*D02            2026070712062402026070712062400000011744    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*** MAP2: PROTOTYPE             --- CREATED BY UNIX 8.3.4 ---         
*S*** INPUT USING MAP 'XXXXXXXX'    
*S***     ##COMP-NAME ##DISP-AY ##DISP-FAO ##DISP-LIT ##SID ##ST-SPECIAL
*S***     ##ST-STATUS #CMB-OUT #CMB-PEND #CMB-TOTAL #CNT-LOAN #CNT-PELL 
*S***     #CNT-TCH #CON-OUT #CON-TOTAL #ENROLLMENT #LEU-FLAG #LIFE-MAX-TOT          
*S***     #MATCH-NSLDS #PELL-LEU #PERK-CUR #PERK-TOTAL #PS1-NSLDS #PS2-NSLDS        
*S***     #PS3-NSLDS #SUB-OUT #SUB-PEND #SUB-TOTAL #SUB-USAGE-PD #TAB-LOAN          
*S***     #TAB-PELL #TAB-TCH #TCH-OUT #TCH-TOTAL #TEACH-TOTAL-GR        
*S***     #TEACH-TOTAL-UG #TRAN-NSLDS #UNS-OUT #UNS-PEND #UNS-TOTAL     
*S***     #VER-NSLDS WFNSL27D.WF-NS-BANKRUPT WFNSL27D.WF-NS-C-SUB-LE-FLAG           
*S***     WFNSL27D.WF-NS-CMB-LIMIT-GR WFNSL27D.WF-NS-CMB-LIMIT-UG       
*S***     WFNSL27D.WF-NS-DL-MPN WFNSL27D.WF-NS-DLG-MPN WFNSL27D.WF-NS-DLP-MPN       
*S***     WFNSL27D.WF-NS-IAAS-OVP WFNSL27D.WF-NS-IAAS-OVP-CTC           
*S***     WFNSL27D.WF-NS-LIMIT-EXCP WFNSL27D.WF-NS-LOAN-ADTNL           
*S***     WFNSL27D.WF-NS-LOAN-DEF WFNSL27D.WF-NS-LOAN-DIS   
*S***     WFNSL27D.WF-NS-LOAN-FRD WFNSL27D.WF-NS-LOAN-REP   
*S***     WFNSL27D.WF-NS-PELL-ADTNL WFNSL27D.WF-NS-PELL-OVP 
*S***     WFNSL27D.WF-NS-PELL-OVP-CTC WFNSL27D.WF-NS-PERK-OVP           
*S***     WFNSL27D.WF-NS-PERK-OVP-CTC WFNSL27D.WF-NS-SEOG-OVP           
*S***     WFNSL27D.WF-NS-SEOG-OVP-CTC WFNSL27D.WF-NS-SUB-LIMIT-GR       
*S***     WFNSL27D.WF-NS-SUB-LIMIT-UG WFNSL27D.WF-NS-TCH-ADTNL          
*S***     WFNSL27D.WF-NS-TCH-CONV WFNSL27D.WF-NS-TCH-OVP    
*S***     WFNSL27D.WF-NS-TCH-OVP-CTC
*S**DEFINE DATA PARAMETER           
*S**1 ##COMP-NAME (A035)
*S**1 ##DISP-AY (A007)  
*S**1 ##DISP-FAO (A002) 
*S**1 ##DISP-LIT (A004) 
*S**1 ##SID (A009)      
*S**1 ##ST-SPECIAL (A020)           
*S**1 ##ST-STATUS (A020)
*S**1 #CMB-OUT (A007)   
*S**1 #CMB-PEND (A007)  
*S**1 #CMB-TOTAL (A007) 
*S**1 #CNT-LOAN (A002)  
*S**1 #CNT-PELL (A002)  
*S**1 #CNT-TCH (A002)   
*S**1 #CON-OUT (A007)   
*S**1 #CON-TOTAL (A007) 
*S**1 #ENROLLMENT (A001)
*S**1 #LEU-FLAG (A001)  
*S**1 #LIFE-MAX-TOT (A019)          
*S**1 #MATCH-NSLDS (A001)           
*S**1 #PELL-LEU (A008)  
*S**1 #PERK-CUR (A007)  
*S**1 #PERK-TOTAL (A007)
*S**1 #PS1-NSLDS (A002) 
*S**1 #PS2-NSLDS (A002) 
*S**1 #PS3-NSLDS (A002) 
*S**1 #SUB-OUT (A007)   
*S**1 #SUB-PEND (A007)  
*S**1 #SUB-TOTAL (A007) 
*S**1 #SUB-USAGE-PD (A007)          
*S**1 #TAB-LOAN (A001)  
*S**1 #TAB-PELL (A001)  
*S**1 #TAB-TCH (A001)   
*S**1 #TCH-OUT (A007)   
*S**1 #TCH-TOTAL (A007) 
*S**1 #TEACH-TOTAL-GR (A007)        
*S**1 #TEACH-TOTAL-UG (A007)        
*S**1 #TRAN-NSLDS (A002)
*S**1 #UNS-OUT (A007)   
*S**1 #UNS-PEND (A007)  
*S**1 #UNS-TOTAL (A007) 
*S**1 #VER-NSLDS (A001) 
*S**1 WFNSL27D.WF-NS-BANKRUPT (A001)
*S**1 WFNSL27D.WF-NS-C-SUB-LE-FLAG (A001)       
*S**1 WFNSL27D.WF-NS-CMB-LIMIT-GR (A001)        
*S**1 WFNSL27D.WF-NS-CMB-LIMIT-UG (A001)        
*S**1 WFNSL27D.WF-NS-DL-MPN (A001)  
*S**1 WFNSL27D.WF-NS-DLG-MPN (A001) 
*S**1 WFNSL27D.WF-NS-DLP-MPN (A001) 
*S**1 WFNSL27D.WF-NS-IAAS-OVP (A001)
*S**1 WFNSL27D.WF-NS-IAAS-OVP-CTC (A008)        
*S**1 WFNSL27D.WF-NS-LIMIT-EXCP (A001)          
*S**1 WFNSL27D.WF-NS-LOAN-ADTNL (A001)          
*S**1 WFNSL27D.WF-NS-LOAN-DEF (A001)
*S**1 WFNSL27D.WF-NS-LOAN-DIS (A001)
*S**1 WFNSL27D.WF-NS-LOAN-FRD (A001)
*S**1 WFNSL27D.WF-NS-LOAN-REP (A001)
*S**1 WFNSL27D.WF-NS-PELL-ADTNL (A001)          
*S**1 WFNSL27D.WF-NS-PELL-OVP (A001)
*S**1 WFNSL27D.WF-NS-PELL-OVP-CTC (A008)        
*S**1 WFNSL27D.WF-NS-PERK-OVP (A001)
*S**1 WFNSL27D.WF-NS-PERK-OVP-CTC (A008)        
*S**1 WFNSL27D.WF-NS-SEOG-OVP (A001)
*S**1 WFNSL27D.WF-NS-SEOG-OVP-CTC (A008)        
*S**1 WFNSL27D.WF-NS-SUB-LIMIT-GR (A001)        
*S**1 WFNSL27D.WF-NS-SUB-LIMIT-UG (A001)        
*S**1 WFNSL27D.WF-NS-TCH-ADTNL (A001)           
*S**1 WFNSL27D.WF-NS-TCH-CONV (A001)
*S**1 WFNSL27D.WF-NS-TCH-OVP (A001) 
*S**1 WFNSL27D.WF-NS-TCH-OVP-CTC (A008)         
*S**END-DEFINE          
*S**FORMAT PS=021 LS=079 ZP=OFF SG=OFF KD=ON  IP=OFF        
*S*** MAP2: MAP PROFILES *****************************        200***********        
*S*** .TOTOTOOOMOA NENEYEYEBLBL4YGR5YREN    ^"`+={};!@ 'WWHELPRH',=        *        
*S*** 023079        N1NNLCN____         X        01 NCST    YL           1 *        
*S**************************************************************************        
*S**INPUT          (     IP=OFF      HE='WWHELPRH',=                      /*        
*S**                                                                       )        
*S** 001T *DATX  (AD=OD EM=MM'/'DD'/'YYYY ) /*.01S008 D    .
*S** 031T '-'(YE)       
*S** 033T ##DISP-AY  (AD=ODL CD=YE ) /*.01U007 A007 .       
*S** 041T 'NSLDS -'(YE) 
*S** 070T *TIMX  (AD=OD EM=' 'HH':'II' 'AP CD=YE ) /*.01S009 T    .     
*S**/       
*S**/       
*S** 001T 'Student:'(YE)
*S** 011T ##SID  (AD=ODL CD=GR HE='WWHELPRH',= ) /*.01U009 A009 .       
*S** 022T ##COMP-NAME  (AD=ODL CD=GR HE='WWHELPRH',= ) /*.01U035 A035 . 
*S** 059T ##ST-STATUS  (AD=ODR CD=GR HE='WWHELPRH',= ) /*.01U020 A020 . 
*S**/       
*S** 011T ##DISP-LIT  (AD=ODL CD=YE ) /*.01U004 A004 .      
*S** 018T ##DISP-FAO  (AD=ODR CD=GR HE='WWHELPRH',= ) /*.01U002 A002 .  
*S** 022T ##ST-SPECIAL  (AD=ODL CD=RE HE='WWHELPRH',= ) /*.01U020 A020 .
*S**/       
*S**/       
*S** 003T 'NSLDS match:'(NE)        
*S** 023T #MATCH-NSLDS  (AD=ODL CD=GR /*.01U001 A001 .      
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-MATCH-NSL   ' )   
*S** 027T 'Defaulted loans:'(NE)    
*S** 046T WFNSL27D.WF-NS-LOAN-DEF  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'Pell Overpmt:'(NE)       
*S** 067T WFNSL27D.WF-NS-PELL-OVP  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 069T WFNSL27D.WF-NS-PELL-OVP-CTC  (AD=ODL CD=GR /*.01U008 A008 .   
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'NSLDS results:'(NE)      
*S** 023T #VER-NSLDS  (AD=ODL CD=GR /*.01U001 A001 .        
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-VER-NSL     ' )   
*S** 027T 'Discharged loans:'(NE)   
*S** 046T WFNSL27D.WF-NS-LOAN-DIS  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'TEACH Overpmt:'(NE)      
*S** 067T WFNSL27D.WF-NS-TCH-OVP  (AD=ODL CD=GR /*.01U001 A001 .        
*S**      HE='WWHELPRH',= )         
*S** 069T WFNSL27D.WF-NS-TCH-OVP-CTC  (AD=ODL CD=GR /*.01U008 A008 .    
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'NSLDS post:'(NE)         
*S** 016T #PS1-NSLDS  (AD=ODL CD=GR /*.01U002 A002 .        
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-NSLDS-PS1   ' )   
*S** 019T #PS2-NSLDS  (AD=ODL CD=GR /*.01U002 A002 .        
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-NSLDS-PS2   ' )   
*S** 022T #PS3-NSLDS  (AD=ODL CD=GR /*.01U002 A002 .        
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-NSLDS-PS3   ' )   
*S** 027T 'Fraud loans:'(NE)        
*S** 046T WFNSL27D.WF-NS-LOAN-FRD  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'IAAS Overpmt:'(NE)       
*S** 067T WFNSL27D.WF-NS-IAAS-OVP  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 069T WFNSL27D.WF-NS-IAAS-OVP-CTC  (AD=ODL CD=GR /*.01U008 A008 .   
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'NSLDS transaction:'(NE)  
*S** 022T #TRAN-NSLDS  (AD=ODL CD=GR /*.01U002 A002 .       
*S**      HE='WWHELRRH','WFISR27D.WF-IS-C-NSLDS-TRAN  ' )   
*S** 027T 'Satis repayment:'(NE)    
*S** 046T WFNSL27D.WF-NS-LOAN-REP  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'SEOG Overpmt:'(NE)       
*S** 067T WFNSL27D.WF-NS-SEOG-OVP  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 069T WFNSL27D.WF-NS-SEOG-OVP-CTC  (AD=ODL CD=GR /*.01U008 A008 .   
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 027T 'Active bankruptcy:'(NE)  
*S** 046T WFNSL27D.WF-NS-BANKRUPT  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'Perkins Overpmt:'(NE)    
*S** 067T WFNSL27D.WF-NS-PERK-OVP  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 069T WFNSL27D.WF-NS-PERK-OVP-CTC  (AD=ODL CD=GR /*.01U008 A008 .   
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'Pell LEU:'(NE)           
*S** 014T #LEU-FLAG  (AD=ODL'_' CD=GR /*.99U001 A001 .      
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-C-LEU-FLAG    ' )   
*S** 016T #PELL-LEU  (AD=ODL'_' CD=GR /*.99U008 A008 .      
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-C-LEU         ' )   
*S** 027T 'Converted TEACH:'(NE)    
*S** 046T WFNSL27D.WF-NS-TCH-CONV  (AD=ODL CD=GR /*.01U001 A001 .       
*S**      HE='WWHELPRH',= )         
*S** 050T 'TEACH Unsub Agg:'(NE)    
*S** 070T #TEACH-TOTAL-UG  (AD=ODL CD=GR /*.99U007 A007 .   
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-TCH-TOTAL-UG  ' )   
*S**/       
*S** 003T 'Enrollment pattrn:'(NE)  
*S** 023T #ENROLLMENT  (AD=ODL'_' CD=GR /*.99U001 A001 .    
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-C-ENR-PATTERN ' )   
*S** 027T 'Loan Limit EX Flag:'(NE) 
*S** 046T WFNSL27D.WF-NS-LIMIT-EXCP  (AD=ODL CD=GR /*.99U001 A001 .     
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-LIMIT-EXCP    ' )   
*S** 050T 'TEACH Grad Agg:'(NE)     
*S** 070T #TEACH-TOTAL-GR  (AD=ODL CD=GR /*.99U007 A007 .   
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-TCH-TOTAL-GR  ' )   
*S**/       
*S** 003T '-----------------Direct/FFEL----------------'(BL)
*S** 050T '----------Perkins----------'(BL)     
*S**/       
*S** 015T 'Limit Principal Pending'(NE)         
*S** 041T 'Total'(NE)   
*S** 050T 'Cumulative:'(NE)         
*S** 070T #PERK-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .       
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-PERK-TOTAL    ' )   
*S**/       
*S** 003T 'Subsidized:'(NE)         
*S** 017T WFNSL27D.WF-NS-SUB-LIMIT-UG  (AD=ODL CD=GR /*.01U001 A001 .   
*S**      HE='WWHELPRH',= )         
*S** 019T WFNSL27D.WF-NS-SUB-LIMIT-GR  (AD=ODL CD=GR /*.01U001 A001 .   
*S**      HE='WWHELPRH',= )         
*S** 022T #SUB-OUT  (AD=ODL CD=GR /*.01U007 A007 .          
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-SUB-OUT       ' )   
*S** 031T #SUB-PEND  (AD=ODL CD=GR /*.01U007 A007 .         
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-SUB-PEND      ' )   
*S** 040T #SUB-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .        
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-SUB-TOTAL     ' )   
*S** 050T 'Current year:'(NE)       
*S** 070T #PERK-CUR  (AD=ODL CD=GR /*.01U007 A007 .         
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-PERK-CUR      ' )   
*S**/       
*S** 003T 'Unsubsidized:'(NE)       
*S** 022T #UNS-OUT  (AD=ODL CD=GR /*.01U007 A007 .          
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-UNS-OUT       ' )   
*S** 031T #UNS-PEND  (AD=ODL CD=GR /*.01U007 A007 .         
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-UNS-PEND      ' )   
*S** 040T #UNS-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .        
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-UNS-TOTAL     ' )   
*S**/       
*S** 003T 'Combined:'(NE)           
*S** 017T WFNSL27D.WF-NS-CMB-LIMIT-UG  (AD=ODL CD=GR /*.01U001 A001 .   
*S**      HE='WWHELPRH',= )         
*S** 019T WFNSL27D.WF-NS-CMB-LIMIT-GR  (AD=ODL CD=GR /*.01U001 A001 .   
*S**      HE='WWHELPRH',= )         
*S** 022T #CMB-OUT  (AD=ODL CD=GR /*.01U007 A007 .          
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-CMB-OUT       ' )   
*S** 031T #CMB-PEND  (AD=ODL CD=GR /*.01U007 A007 .         
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-CMB-PEND      ' )   
*S** 040T #CMB-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .        
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-CMB-TOTAL     ' )   
*S** 050T 'Pell paymts:'(YE)        
*S** 064T #TAB-PELL  (AD=AN'_' ) /*.99U001 A001 .           
*S** 066T #CNT-PELL  (AD=ODL CD=GR /*.01U002 A002 .         
*S**      HE='WWHELRRH','WWSYSVRD.WF-PGM-NSLDS-CNT    ' )   
*S** 069T 'Addnl:'(NE)  
*S** 076T WFNSL27D.WF-NS-PELL-ADTNL  (AD=ODL CD=GR /*.01U001 A001 .     
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'Consolidated:'(NE)       
*S** 022T #CON-OUT  (AD=ODL CD=GR /*.01U007 A007 .          
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-CON-OUT       ' )   
*S** 040T #CON-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .        
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-CON-TOTAL     ' )   
*S** 050T 'TEACH paymts:'(YE)       
*S** 064T #TAB-TCH  (AD=AN'_' ) /*.99U001 A001 .
*S** 066T #CNT-TCH  (AD=ODL CD=GR /*.01U002 A002 .          
*S**      HE='WWHELRRH','WWSYSVRD.WF-PGM-NSLDS-CNT    ' )   
*S** 069T 'Addnl:'(NE)  
*S** 076T WFNSL27D.WF-NS-TCH-ADTNL  (AD=ODL CD=GR /*.01U001 A001 .      
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'Convrtd TEACH:'(NE)      
*S** 022T #TCH-OUT  (AD=ODL CD=GR /*.01U007 A007 .          
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-TCH-OUT       ' )   
*S** 040T #TCH-TOTAL  (AD=ODL CD=GR /*.01U007 A007 .        
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-TCH-TOTAL     ' )   
*S** 050T 'Loan detail:'(YE)        
*S** 064T #TAB-LOAN  (AD=AN'_' ) /*.99U001 A001 .           
*S** 066T #CNT-LOAN  (AD=ODL CD=GR /*.01U002 A002 .         
*S**      HE='WWHELRRH','WWSYSVRD.WF-PGM-NSLDS-CNT    ' )   
*S** 069T 'Addnl:'(NE)  
*S** 076T WFNSL27D.WF-NS-LOAN-ADTNL  (AD=ODL CD=GR /*.01U001 A001 .     
*S**      HE='WWHELPRH',= )         
*S**/       
*S** 003T 'DL Sub Usage Per:'(NE)   
*S** 024T WFNSL27D.WF-NS-C-SUB-LE-FLAG  (AD=LDO' ' CD=GR /*.01D001 A001 .           
*S**      HE='WWHELPRH',= )         
*S** 027T #SUB-USAGE-PD  (AD=ODL' ' CD=GR /*.01U007 A007 .  
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-C-SUB-USAGE-PD' )   
*S**/       
*S** 003T 'Direct MPN:'(NE)         
*S** 015T WFNSL27D.WF-NS-DL-MPN  (AD=ODL CD=GR /*.01U001 A001 .         
*S**      HE='WWHELPRH',= )         
*S** 018T 'PLUS:'(NE)   
*S** 024T WFNSL27D.WF-NS-DLP-MPN  (AD=ODL CD=GR /*.01U001 A001 .        
*S**      HE='WWHELPRH',= )         
*S** 027T 'GradPLUS:'(NE)           
*S** 037T WFNSL27D.WF-NS-DLG-MPN  (AD=ODL CD=GR /*.01U001 A001 .        
*S**      HE='WWHELPRH',= )         
*S** 039T 'Lifetime Max Agg Tot'(NE)
*S** 060T #LIFE-MAX-TOT  (AD=ODL CD=GR /*.01U019 A019 .     
*S**      HE='WWHELRRH','WFNSL27D.WF-NS-LIFE-MAX-TOT  ' )   
*S*** MAP2: VALIDATION *****************************************************        
*S*** MAP2: END OF MAP *****************************************************        
*S**END     
*C**                                FATEMP  WFNSD27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFNSD27P                        ZWDNH   ZWDNH           S      
*D02            2026070712333602026070712333600000018454    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: 2026-27 NSLDS Display          
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program presents the NSLDS Display 
*S****SAG DESCS(2): for the 2026-27 processing year.        
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100000000 
*S****SAG OBJECT-NAME: WFNSL27O     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFNSD27M     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFNSD27P           
*S*** System   : FINANCIER          
*S*** Title    : 2026-27 NSLDS Display          
*S*** Function : This program presents the NSLDS Display    
*S***            for the 2026-27 processing year.           
*S***       
*S***       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WFNSL27D /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27R /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27S /* Shadow file       
*S**  LOCAL USING WWAOBJ   /* Used by object subprograms    
*S***       
*S**  LOCAL USING WWCONST  /* Constants         
*S**  LOCAL USING WWDIALDA /* Common data for dialog objects.           
*S**  LOCAL USING WWENVIRA /* Used to capture/restore previous environment.         
*S**  LOCAL USING WWKEYLDA /* Used to set function keys and names.      
*S**  LOCAL USING WWVALLDA /* Used by valid values/edit mask routine    
*S**  LOCAL 
*S****SAG DEFINE EXIT PROGRAM-CONSTANTS         
*S**  01 #PGM-YEAR(A4) INIT<'2027'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT SECURITY-PGM  
*S**  /*    
*S**  /* Security program exit      
*S**  01 #SECURITY-PROGRAM(A8) INIT<'WFNSDNNP'> 
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT EVENT-HISTORY 
*S**  /*    
*S**  /* Literals utilized by Event History routine         
*S**  01 #EVENT-TYPE(A5) CONST<' '> 
*S**  01 #EVENT-DESC(A40) CONST<' '>
*S****SAG END-EXIT      
*S****SAG DEFINE EXIT REQUIREMENTS  
*S**  /*    
*S**  /* Variables Requirement routine          
*S**  01 #REQMNTS(3)    
*S**    02 #REQMNT-TYPE(A1)              /* (A/Application, D/Disbursement)         
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S**    02 #REQMNT-DOC(A6)               /* Document mnemonic           
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S**    02 #REQMNT-PD(A2)                /* (ST/Student, AY/Aid Year)   
*S**        INIT (1)<' '> (2)<' '> (3)<' '>     
*S****SAG END-EXIT      
*S***       
*S*** Scalar Constants. 
*S**  01 #SUB-PARM(A1)  
*S***       
*S*** Miscellaneous Variables.      
*S**  01 #NEXT(L)                        /* Next processing selected    
*S**  01 #DISPLAYED-KEY(A11) /* Last record found           
*S**  01 #TYPE-POS(P3)  
*S**  01 #KEY(A11)  /* Key field copied from map.           
*S**  01 #NEW-OBJECT(L)         /* GET was done on different object     
*S**  01 #BYPASS-OBJECT(L)      /* I/O was done via subprogram          
*S**  01 #BYPASS-INPUT(L)       /* do not perform input statement       
*S**  01 #NULL-KEY(A11) 
*S****SAG DEFINE EXIT LOCAL-DATA    
*S**  01 #SUBPGM(A8)    
*S***       
*S**  01 #DISPLAY-FIELDS
*S**    02 #SUB-OUT-N(N6)           
*S**    02 #SUB-PEND-N(N6)          
*S**    02 #SUB-TOTAL-N(N6)         
*S**    02 #UNS-OUT-N(N6)           
*S**    02 #UNS-PEND-N(N6)          
*S**    02 #UNS-TOTAL-N(N6)         
*S**    02 #CMB-OUT-N(N6)           
*S**    02 #CMB-PEND-N(N6)          
*S**    02 #CMB-TOTAL-N(N6)         
*S**    02 #CON-OUT-N(N6)           
*S**    02 #CON-TOTAL-N(N6)         
*S**    02 #TCH-OUT-N(N6)           
*S**    02 #TCH-TOTAL-N(N6)         
*S**    02 #PERK-TOTAL-N(N6)        
*S**    02 #LIFE-MAX-TOT-N(N15)     
*S**    02 #PERK-CUR-N(N6)          
*S**    02 #SUB-USAGE-PD-N(N6)      
*S**    02 REDEFINE #SUB-USAGE-PD-N 
*S**      03 #SUB-USAGE-PD-R(N3.3)  
*S**    02 #SUB-OUT(A7) 
*S**    02 #SUB-PEND(A7)
*S**    02 #SUB-TOTAL(A7)           
*S**    02 #UNS-OUT(A7) 
*S**    02 #UNS-PEND(A7)
*S**    02 #UNS-TOTAL(A7)           
*S**    02 #CMB-OUT(A7) 
*S**    02 #CMB-PEND(A7)
*S**    02 #CMB-TOTAL(A7)           
*S**    02 #CON-OUT(A7) 
*S**    02 #CON-TOTAL(A7)           
*S**    02 #TCH-OUT(A7) 
*S**    02 #TCH-TOTAL(A7)           
*S**    02 #PERK-TOTAL(A7)          
*S**    02 #LIFE-MAX-TOT(A19)       
*S**    02 #PERK-CUR(A7)
*S**    02 #ENROLLMENT(A1)          
*S**    02 #PELL-LEU(A8)
*S**    02 #LEU-FLAG(A1)
*S**    02 #SUB-LE-FLAG(A1)         
*S**    02 #SUB-USAGE-PD(A7)        
*S**    02 #TEACH-TOTAL-UG-N(N6)    
*S**    02 #TEACH-TOTAL-GR-N(N6)    
*S**    02 #TEACH-TOTAL-UG(A7)      
*S**    02 #TEACH-TOTAL-GR(A7)      
*S***       
*S**  01 #TEMP-LEU(A7)  
*S**  01 REDEFINE #TEMP-LEU         
*S**    02 #TEMP-LEU-N(N2.5)        
*S**  01 #HOLD-LEU(N4.3)
*S**  01 #TAB-PELL(A1)  
*S**  01 #CNT-PELL(A2)  
*S**  01 #CNT-PELL-N(N2)
*S**  01 #TAB-TCH(A1)   
*S**  01 #CNT-TCH(A2)   
*S**  01 #CNT-TCH-N(N2) 
*S**  01 #TAB-LOAN(A1)  
*S**  01 #CNT-LOAN(A2)  
*S**  01 #CNT-LOAN-N(N2)
*S***       
*S**  LOCAL USING WFISZ27D          
*S****SAG END-EXIT      
*S**END-DEFINE          
*S***       
*S***       
*S*** Define Formats    
*S**FORMAT PS=23 KD=ON LS=133 ZP=OFF
*S***       
*S**PERFORM INITIALIZATIONS         
*S***       
*S*************************************************************************         
*S***       
*S**PROG.   
*S**REPEAT                                           /* until exit action           
*S**  /*    
*S**NEW-SCREEN.         
*S**  REPEAT   /* Escape this repeat with indexes set as desired.       
*S****SAG DEFINE EXIT AFTER-NEW-SCREEN          
*S**    /*  
*S**    /* Processing to be performed after the NEW-SCREEN REPEAT verb  
*S**    IF ##AID-YEAR NE #PGM-YEAR  
*S**      ESCAPE BOTTOM(PROG.)      
*S**    END-IF          
*S****SAG END-EXIT      
*S**    /*  
*S**    /*  Security / Required fields          
*S**    /*    Perform first time and/or new student (set via Selection) 
*S**    IF #DISPLAYED-KEY = #NULL-KEY           
*S**      MOVE 'WFNSL27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM NSLDS-2627-SECURITY NSLDS-2627-CNTL-VARS  
*S**      RESET INITIAL NSLDS-2627-LOGICALS     
*S**      /*
*S**      PERFORM REQUIRED-FIELD-CHECK REQUIRED-FIELD(*)    
*S**      PERFORM SET-KEYS          
*S**    END-IF          
*S**    /*  
*S**    /* Load appropriate function
*S**    IF #ADD-OBJECT  
*S**      ASSIGN #FUNCTION = 'STORE'
*S**      RESET #ADD-OBJECT         
*S**    ELSE
*S**      IF #DISPLAYED-KEY NE #KEY 
*S**         OR #KEY = #NULL-KEY    
*S**        ASSIGN #FUNCTION = 'GET'
*S**      ELSE          
*S**        ASSIGN #FUNCTION = 'UPDATE'         
*S**      END-IF        
*S**    END-IF          
*S****SAG DEFINE EXIT BEFORE-CALL-OBJECT        
*S**    /*  
*S**    /* Load key info from GDA, allows selection criteria
*S**    /* to be properly processed 
*S**    MOVE ##STUDENT-ID TO WFNSL27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFNSL27D.WF-FAO        
*S****SAG END-EXIT      
*S**    /*  
*S**    /* Perform object I/O subprogram        
*S**    IF #BYPASS-OBJECT           
*S**      RESET #BYPASS-OBJECT      
*S**    ELSE
*S**      PERFORM CALL-OBJECT       
*S**    END-IF          
*S****SAG DEFINE EXIT AFTER-CALL-OBJECT         
*S**    /*  
*S**    PERFORM EXTRACT-ISIR-NSLDS-2627 WFISZ27D
*S**    /*  
*S**    /*  Mask numeric NSLDS fields           
*S**    RESET #DISPLAY-FIELDS       
*S**    IF WFNSL27D.WF-NS-SUB-OUT = MASK(999999)
*S**      ASSIGN #SUB-OUT-N = VAL(WFNSL27D.WF-NS-SUB-OUT)   
*S**      MOVE EDITED #SUB-OUT-N (EM=ZZZ,ZZZ) TO #SUB-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-SUB-PEND = MASK(999999)           
*S**      ASSIGN #SUB-PEND-N = VAL(WFNSL27D.WF-NS-SUB-PEND) 
*S**      MOVE EDITED #SUB-PEND-N (EM=ZZZ,ZZZ) TO #SUB-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-SUB-TOTAL = MASK(999999)          
*S**      ASSIGN #SUB-TOTAL-N = VAL(WFNSL27D.WF-NS-SUB-TOTAL)           
*S**      MOVE EDITED #SUB-TOTAL-N (EM=ZZZ,ZZZ) TO #SUB-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-OUT = MASK(999999)
*S**      ASSIGN #UNS-OUT-N = VAL(WFNSL27D.WF-NS-UNS-OUT)   
*S**      MOVE EDITED #UNS-OUT-N (EM=ZZZ,ZZZ) TO #UNS-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-PEND = MASK(999999)           
*S**      ASSIGN #UNS-PEND-N = VAL(WFNSL27D.WF-NS-UNS-PEND) 
*S**      MOVE EDITED #UNS-PEND-N (EM=ZZZ,ZZZ) TO #UNS-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-UNS-TOTAL = MASK(999999)          
*S**      ASSIGN #UNS-TOTAL-N = VAL(WFNSL27D.WF-NS-UNS-TOTAL)           
*S**      MOVE EDITED #UNS-TOTAL-N (EM=ZZZ,ZZZ) TO #UNS-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-OUT = MASK(999999)
*S**      ASSIGN #CMB-OUT-N = VAL(WFNSL27D.WF-NS-CMB-OUT)   
*S**      MOVE EDITED #CMB-OUT-N (EM=ZZZ,ZZZ) TO #CMB-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-PEND = MASK(999999)           
*S**      ASSIGN #CMB-PEND-N = VAL(WFNSL27D.WF-NS-CMB-PEND) 
*S**      MOVE EDITED #CMB-PEND-N (EM=ZZZ,ZZZ) TO #CMB-PEND 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CMB-TOTAL = MASK(999999)          
*S**      ASSIGN #CMB-TOTAL-N = VAL(WFNSL27D.WF-NS-CMB-TOTAL)           
*S**      MOVE EDITED #CMB-TOTAL-N (EM=ZZZ,ZZZ) TO #CMB-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CON-OUT = MASK(999999)
*S**      ASSIGN #CON-OUT-N = VAL(WFNSL27D.WF-NS-CON-OUT)   
*S**      MOVE EDITED #CON-OUT-N (EM=ZZZ,ZZZ) TO #CON-OUT   
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-CON-TOTAL = MASK(999999)          
*S**      ASSIGN #CON-TOTAL-N = VAL(WFNSL27D.WF-NS-CON-TOTAL)           
*S**      MOVE EDITED #CON-TOTAL-N (EM=ZZZ,ZZZ) TO #CON-TOTAL           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-PERK-TOTAL = MASK(999999)         
*S**      ASSIGN #PERK-TOTAL-N = VAL(WFNSL27D.WF-NS-PERK-TOTAL)         
*S**      MOVE EDITED #PERK-TOTAL-N (EM=ZZZ,ZZZ) TO #PERK-TOTAL         
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-PERK-CUR = MASK(999999)           
*S**      ASSIGN #PERK-CUR-N = VAL(WFNSL27D.WF-NS-PERK-CUR) 
*S**      MOVE EDITED #PERK-CUR-N (EM=ZZZ,ZZZ) TO #PERK-CUR 
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-TCH-TOTAL-UG = MASK(999999)       
*S**      ASSIGN #TEACH-TOTAL-UG-N = VAL(WFNSL27D.WF-NS-TCH-TOTAL-UG)   
*S**      MOVE EDITED #TEACH-TOTAL-UG-N (EM=ZZZ,ZZZ) TO #TEACH-TOTAL-UG 
*S**    ELSE
*S**      MOVE WFNSL27D.WF-NS-TCH-TOTAL-UG TO #TEACH-TOTAL-UG           
*S**    END-IF          
*S**    IF WFNSL27D.WF-NS-TCH-TOTAL-GR = MASK(999999)       
*S**      ASSIGN #TEACH-TOTAL-GR-N = VAL(WFNSL27D.WF-NS-TCH-TOTAL-GR)   
*S**      MOVE EDITED #TEACH-TOTAL-GR-N (EM=ZZZ,ZZZ) TO #TEACH-TOTAL-GR 
*S**    ELSE
*S**      MOVE WFNSL27D.WF-NS-TCH-TOTAL-GR TO #TEACH-TOTAL-GR           
*S**    END-IF          
*S**    MOVE SUBSTRING(WFNSL27D.WF-NS-LIFE-MAX-TOT,1,13) TO 
*S**         WFNSL27D.WF-NS-LIFE-MAX-TOT        
*S**    MOVE RIGHT JUSTIFIED WFNSL27D.WF-NS-LIFE-MAX-TOT TO 
*S**         WFNSL27D.WF-NS-LIFE-MAX-TOT        
*S**    EXAMINE WFNSL27D.WF-NS-LIFE-MAX-TOT FOR ' ' REPLACE WITH '0'    
*S**    IF WFNSL27D.WF-NS-LIFE-MAX-TOT = MASK(999999999999999)          
*S**      ASSIGN #LIFE-MAX-TOT-N = VAL(WFNSL27D.WF-NS-LIFE-MAX-TOT)     
*S**      MOVE EDITED #LIFE-MAX-TOT-N (EM=ZZZ,ZZZ,ZZZ,ZZZ,ZZZ) TO       
*S**           #LIFE-MAX-TOT        
*S**    ELSE
*S**      MOVE WFNSL27D.WF-NS-LIFE-MAX-TOT TO #LIFE-MAX-TOT 
*S**    END-IF          
*S**    /*  
*S**    /*  Load count fields       
*S**    RESET #CNT-PELL   #CNT-TCH   #CNT-LOAN  
*S**          #CNT-PELL-N #CNT-TCH-N #CNT-LOAN-N
*S**    DECIDE FOR EVERY CONDITION  
*S**      WHEN WFNSL27D.WF-NS-P1-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-P2-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-P3-SEQ NE ' '     
*S**        ADD 1 TO #CNT-PELL-N    
*S**      WHEN WFNSL27D.WF-NS-T1-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-T2-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-T3-SEQ NE ' '     
*S**        ADD 1 TO #CNT-TCH-N     
*S**      WHEN WFNSL27D.WF-NS-L01-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L02-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L03-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L04-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L05-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN WFNSL27D.WF-NS-L06-SEQ NE ' '    
*S**        ADD 1 TO #CNT-LOAN-N    
*S**      WHEN NONE     
*S**        IGNORE      
*S**    END-DECIDE      
*S**    MOVE EDITED #CNT-PELL-N (EM=Z9) TO #CNT-PELL        
*S**    MOVE EDITED #CNT-TCH-N  (EM=Z9) TO #CNT-TCH         
*S**    MOVE EDITED #CNT-LOAN-N (EM=Z9) TO #CNT-LOAN        
*S**    /*  
*S**    /* Pell LEU and Enrollment fields       
*S**    MOVE WFNSL27D.WF-NS-C-LEU-FLAG TO #LEU-FLAG         
*S**    MOVE WFNSL27D.WF-NS-C-LEU TO #TEMP-LEU  
*S**    COMPUTE #HOLD-LEU = #TEMP-LEU-N * 100   
*S**    MOVE EDITED #HOLD-LEU (EM=ZZZZ.999) TO #PELL-LEU    
*S**    MOVE WFNSL27D.WF-NS-C-ENR-PATTERN TO #ENROLLMENT    
*S**    /*  
*S**    IF WFNSL27D.WF-NS-C-SUB-USAGE-PD = MASK(999999)     
*S**      ASSIGN #SUB-USAGE-PD-N = VAL(WFNSL27D.WF-NS-C-SUB-USAGE-PD)   
*S**      MOVE EDITED #SUB-USAGE-PD-R (EM=ZZZ.999) TO #SUB-USAGE-PD     
*S**    END-IF          
*S**    MOVE WFNSL27D.WF-NS-C-SUB-LE-FLAG TO #SUB-LE-FLAG   
*S****SAG END-EXIT      
*S**    /*  
*S**    /* Load shadow file definitions for appropriate map 
*S**    IF NOT #CONFIRM-PURGE       
*S**      MOVE LOAD TO #SUB-PARM    
*S**      PERFORM CALL-EXT-SUB      
*S**    END-IF          
*S**    /*  
*S**    /* Assign appropriate message           
*S**    IF ##MSG = SPACE
*S**      DECIDE ON FIRST VALUE OF #FUNCTION    
*S**        VALUE 'GET' 
*S**          IF #ADD-OBJECT        
*S**            COMPRESS 'This information not currently stored for #TEMP,'         
*S**              'ready to add' INTO ##MSG     
*S**          ELSE      
*S**            COMPRESS 'To modify the current #TEMP information,'     
*S**              'make changes and press ENTER' INTO ##MSG 
*S**          END-IF    
*S**        VALUE 'NEXT'
*S**          COMPRESS 'Next #TEMP information has been displayed'      
*S**            INTO ##MSG          
*S**        VALUE 'UPDATE'          
*S**          COMPRESS '#TEMP information has been modified'
*S**            INTO ##MSG          
*S**        VALUE 'STORE'           
*S**          COMPRESS '#TEMP information has been added'   
*S**            INTO ##MSG          
*S**        VALUE 'DELETE'          
*S**          IF #CONFIRM-PURGE     
*S**            COMPRESS '#TEMP information has been purged'
*S**              INTO ##MSG        
*S**          ELSE      
*S**            COMPRESS 'Press ENTER to confirm purge'     
*S**              INTO ##MSG        
*S**          END-IF    
*S**        ANY         
*S**          EXAMINE ##MSG FOR '#TEMP' AND REPLACE WITH ##SYSTEM-DATA-TYPE         
*S**          EXAMINE ##MSG FOR ##SYSTEM-DATA-TYPE GIVING POSITION #TYPE-POS        
*S**          IF #TYPE-POS = 1      
*S**            EXAMINE SUBSTRING(##MSG,1,1) AND TRANSLATE INTO UPPER CASE          
*S**          END-IF    
*S**        NONE        
*S**          IGNORE    
*S**      END-DECIDE    
*S**    END-IF          
*S**    SET CONTROL 'WB'
*S**    /*  
*S**    /* INPUT processing         
*S**    /*  
*S**    /* Input Map    
*S**    IF NOT #BYPASS-INPUT        
*S**      INPUT WITH TEXT ##MSG,    
*S**                      ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3)     
*S**            USING MAP 'WFNSD27M'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S****SAG DEFINE EXIT AFTER-INPUT   
*S**    /*  
*S**    /*  If Expand key selected, fetch Pell/TEACH/Loan detail        
*S**    IF *PF-KEY = WWKEYLDA.#EXPAND-KEY       
*S**      DECIDE FOR FIRST CONDITION
*S**        WHEN *CURS-FIELD = POS(#TAB-PELL)        /* Pell payments   
*S**          MOVE 'WFN27PGN' TO #SUBPGM        
*S**        WHEN *CURS-FIELD = POS(#TAB-TCH)         /* TEACH payments  
*S**          MOVE 'WFN27TGN' TO #SUBPGM        
*S**        WHEN *CURS-FIELD = POS(#TAB-LOAN)        /* Loan detail     
*S**          MOVE 'WFN27LNN' TO #SUBPGM        
*S**        WHEN ANY    
*S**          PERFORM PROCESS-NSL-SUBPGM        
*S**        WHEN NONE   
*S**          REINPUT 'Not an expandable field' ALARM       
*S**      END-DECIDE    
*S**      PERFORM SET-KEYS          
*S**      ESCAPE TOP    
*S**    END-IF          
*S****SAG END-EXIT      
*S**    /*  
*S**    /*  
*S**    /* Check standard PF-Keys   
*S****SAG DEFINE EXIT BEFORE-STD-KEY-PROCESSING 
*S**    /*  
*S**    /* Processing to be performed prior to 'standard key' processing
*S**    /*  Trigger year-specific routing program exit      
*S**    IF *PF-KEY = WWKEYLDA.#RETURN-KEY       
*S**      MOVE 'EXIT' TO ##PASS-KEY 
*S**    END-IF          
*S****SAG END-EXIT      
*S**    INCLUDE WWSTDKEY
*S**    /*  
*S**    /* Trap invalid PF-Keys.    
*S**    IF *PF-KEY = 'ENTR' OR = WWKEYLDA.#SELECT-KEY       
*S****SAG DEFINE EXIT VALID-PFKEYS  
*S**       OR = WWKEYLDA.#EXPAND-KEY
*S****SAG END-EXIT      
*S**      IGNORE        
*S**    ELSE
*S**      REINPUT 'Invalid program function key' ALARM      
*S**    END-IF          
*S**    /*  
*S**    /* Perform edit routine     
*S**    RESET INITIAL #FAIL-EDIT    
*S**    MOVE EDIT TO #SUB-PARM      
*S**    PERFORM CALL-EXT-SUB        
*S**    IF #FAIL-EDIT   
*S**      REINPUT FULL 'Edit errors occurred'   
*S**              MARK #MARK-FIELD ALARM        
*S**    END-IF          
*S**    /*  
*S*************************************************************************         
*S**DEFINE SUBROUTINE NEW-SCREEN    
*S*************************************************************************         
*S**  /*    
*S**  /* Subroutine to allow escape from screen loop        
*S**  ESCAPE BOTTOM(NEW-SCREEN.) IMMEDIATE      
*S**END-SUBROUTINE /* NEW-SCREEN    
*S**  /*    
*S**  END-REPEAT /* on NEW-SCREEN   
*S**END-REPEAT /* on Repeat of Program.         
*S***       
*S**PERFORM FINAL-PROCESSING        
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-EXT-SUB  
*S*************************************************************************         
*S**  /*    
*S**  /* Call Map specific external subroutine  
*S**  PERFORM WFNSD27M-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFNSL27D WFNSL27D-ID WFNSL27R WFNSL27S        
*S**END-SUBROUTINE /* CALL-EXT-SUB  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT   
*S*************************************************************************         
*S**  /*    
*S**  /* Prior to processing object 
*S**  IF WWAOBJ.#FUNCTION = 'DELETE'
*S**    RESET #CONFIRM-PURGE        
*S**  END-IF
*S**  /*    
*S**  /* Assign #KEY to equal the input fields  
*S**  MOVE BY NAME WFNSL27D TO WFNSL27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFNSL27D-ID     
*S**  /*    
*S**  /* Invoke subprogram to process object    
*S**  PERFORM CALL-OBJECT-IO        
*S**  /*    
*S**  IF WWAOBJ.#FUNCTION = 'GET' AND           
*S**     NOT WWAOBJ.#EXISTS         
*S**    ASSIGN #ADD-OBJECT = TRUE   
*S**  END-IF
*S**  /*    
*S**  ASSIGN #DISPLAYED-KEY = WFNSL27D-ID       
*S**  /*    
*S**  /* Reset #KEY if next record displayed    
*S**  IF #FUNCTION = 'NEXT'         
*S**    ASSIGN #KEY = #DISPLAYED-KEY
*S**  END-IF
*S**  /*    
*S**  /* Set logical for update processing      
*S**  IF #FUNCTION = 'STORE'        
*S**            OR = 'UPDATE'       
*S**    ASSIGN #UPDATE-PERFORMED = TRUE         
*S**  END-IF
*S**  /*    
*S**  /* Update performed           
*S**  IF #UPDATE-PERFORMED THEN     
*S**    CALLNAT 'WWDUTILN' WW-GDA WWVALLDA      
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    END TRANSACTION 
*S**    RESET #UPDATE-PERFORMED #ACTION #ADD-OBJECT #DATA-MODIFIED      
*S**  END-IF
*S**END-SUBROUTINE /* CALL-OBJECT   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-IO
*S*************************************************************************         
*S***       
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-IO
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE FINAL-PROCESSING          
*S*************************************************************************         
*S**  /*    
*S**  INCLUDE WWEND /* Restore environment.     
*S**END-SUBROUTINE /* FINAL-PROCESSING          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE INITIALIZATIONS           
*S*************************************************************************         
*S**  /*    
*S**  INCLUDE WWBEGIN                                /* Capture environment         
*S**  SET CONTROL 'WBM'                  /* Set window size/base        
*S**  /*    
*S**  /* Specify which PF-KEYS are valid, start by resetting all keys,  
*S**  /*  then assign desired keys using RESET INITIAL.     
*S**  INCLUDE WWPFSTD /* Standard PF-Keys.      
*S****SAG DEFINE EXIT SET-PF-KEYS   
*S***       
*S*** Set additional PF Keys        
*S**  RESET INITIAL WWKEYLDA.#SELECT-KEY        
*S**                WWKEYLDA.#EXPAND-KEY        
*S**                WWKEYLDA.#NOTEPAD-KEY       
*S****SAG END-EXIT      
*S**END-SUBROUTINE /* INITIALIZATIONS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SET-KEYS      
*S*************************************************************************         
*S***       
*S**  INCLUDE WWSETKEY /* Set specified keys    
*S**  INCLUDE WWSETHLP /* Set Help keys         
*S**END-SUBROUTINE /* SET-KEY       
*S****SAG DEFINE EXIT MISCELLANEOUS-SUBROUTINES 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PROCESS-NSL-SUBPGM        
*S*************************************************************************         
*S***       
*S*** Call expand subprogram        
*S**  CALLNAT #SUBPGM WW-GDA #DISPLAYED-KEY #ADD-OBJECT     
*S**                  WFNSL27D WFNSL27D-ID WFNSL27R WFNSL27S
*S**                  WWAOBJ        
*S**END-SUBROUTINE /* PROCESS-NSL-SUBPGM        
*S****SAG END-EXIT      
*S**END     
*C**                                FATEMP  WFPKD27N                        N S   NN0000        
*D01NAT8304N FATEMP  WFPKD27N                        ZWDNH   ZWDNH           S      
*D02            2026070613104702026070613104700000004574    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFPKD27N          
*S*** System    : FINANCIER         
*S*** Title     : Packaging routine - Determine Pell Award  
*S*** Function  : This subprogram determines Pell awards post 2024      
*S***              specifically this is the the 2026-2027 Aid Year      
*S***       
*S***              Year specific Pell min and Max amounts are also      
*S***                hard-coded here
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*** Institutional Notes:          
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER         
*S**    01 #PASS-AID-YEAR(A4)       
*S**    01 #PASS-TIME(N1)           
*S**    01 #PASS-COA(N6)
*S**    01 #PASS-EFC(N6)
*S**    01 #PASS-PELL-AWARD(P6.2)   
*S**    01 #PASS-SUCCESS(A1)        
*S***       
*S**  LOCAL USING WFISX27D          
*S**  LOCAL USING WWAOBJ
*S***       
*S**  LOCAL 
*S**    01 #MAX-PELL-AWD(N6) INIT <7395>        
*S**    01 #MIN-PELL-AWD(N6) INIT <740>         
*S**    01 #MAX-EFC(N6) INIT <14790>
*S**    01 #MAX-PELL-ELIG(L)        
*S**    01 #MIN-PELL-ELIG(L)        
*S**    01 #PELL-DETERMINED(L)      
*S**    01 #NEED-TO-ROUND(L)        
*S**    01 #SUBPGM(A8)  
*S**    01 #SUB(P3)     
*S**    01 #AWD-SUB(P3) 
*S**    01 #HOLD-PELL-AWARD(N6)     
*S**    01 REDEFINE #HOLD-PELL-AWARD
*S**      02 #HOLD-PELL-5(N5)       
*S**      02 #HOLD-PELL-1(N1)       
*S**    01 #RTN-CODE(A1)
*S**    01 #AWARD-FC(N6.2)          
*S**    01 #AWARD-NEED(N6.2)        
*S**    01 #INST-PARMS(L)           
*S**    01 #AID-CCYY(N4)
*S**    01 REDEFINE #AID-CCYY       
*S**      02 #AID-CC(N2)
*S**      02 #AID-YY(N2)
*S***       
*S*** Institutional variables       
*S***       
*S***       
*S**END-DEFINE          
*S***       
*S*************************************************************************         
*S**  /*    
*S**  /* Populate WW-GDA from WW-PDA
*S**  MOVE BY POSITION WW-PDA TO WW-GDA         
*S**  ASSIGN #AID-CCYY = VAL(##AID-YEAR)        
*S**  /*    
*S**  /*  ISIR data     
*S**  PERFORM EXTRACT-ISIR-2627 WFISX27D        
*S**  /*    
*S**  /* Determine Pell award       
*S**  /*    
*S**  /*   Determine Maximum Pell Eligibility   
*S**  IF #PELL-MAX = '1' OR         
*S**     #PELL-MAX = '2' OR         
*S**     #PELL-MAX = '3'
*S**    ASSIGN #MAX-PELL-ELIG = TRUE
*S**    ASSIGN #PASS-PELL-AWARD = #MAX-PELL-AWD 
*S**  END-IF
*S**  /*    
*S**  /*   Determine Minimum Pell Eligibilty    
*S**  IF #PELL-MIN = '1' OR         
*S**     #PELL-MIN = '2' OR         
*S**     #PELL-MIN = '3' OR         
*S**     #PELL-MIN = '4' OR         
*S**     #PELL-MIN = '5'
*S**    ASSIGN #MIN-PELL-ELIG = TRUE
*S**    IF #PASS-PELL-AWARD = 0     
*S**      ASSIGN #PASS-PELL-AWARD = #MIN-PELL-AWD           
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /*   Calculate Pell based on SAI          
*S**  IF NOT #MAX-PELL-ELIG AND     
*S**     NOT #MIN-PELL-ELIG         
*S**    IF #PASS-EFC <= 0           
*S**      ASSIGN #PASS-PELL-AWARD = #MAX-PELL-AWD           
*S**    ELSE
*S**      IF #PASS-EFC <= #MAX-PELL-AWD         
*S**        ASSIGN #PASS-PELL-AWARD = #MAX-PELL-AWD -       
*S**                                  #PASS-EFC 
*S**        ASSIGN #NEED-TO-ROUND = TRUE        
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Pell awards must be rounded to the nearest 5 dollars           
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN #PASS-EFC > #MAX-EFC   
*S**       /*           
*S**       /* SAI cannot exceed threshold       
*S**      ASSIGN #PASS-PELL-AWARD = 0           
*S**      ASSIGN #PASS-SUCCESS = 'M'
*S**    WHEN #PASS-PELL-AWARD > #MIN-PELL-AWD AND           
*S**         #PASS-PELL-AWARD > #PASS-COA       
*S**       /*           
*S**       /* Cap Pell award at COA 
*S**      ASSIGN #PASS-PELL-AWARD = #PASS-COA   
*S**    WHEN #PASS-PELL-AWARD < #MIN-PELL-AWD AND           
*S**         NOT #MIN-PELL-ELIG     
*S**      /*
*S**      /* Pell grant can not be calculated as < MINIMUM Pell         
*S**      ASSIGN #PASS-PELL-AWARD = 0           
*S**    WHEN #MIN-PELL-ELIG         
*S**      /*
*S**      /* Student may qualify for a minimum Pell         
*S**      ASSIGN #PASS-PELL-AWARD = #MIN-PELL-AWD           
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**  IF #NEED-TO-ROUND 
*S**    IF #PASS-PELL-AWARD >= #PASS-COA        
*S**        
*S**      /*
*S**      /* Pell cannot exceed COA (don't round)           
*S**      IGNORE        
*S**    ELSE
*S**      /*
*S**      /* Round any remaining Pell awards to nearest $5  
*S**      PERFORM ROUND-TO-NEAREST-FIVE         
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Populate WW-PDA from WW-GDA
*S**  MOVE BY POSITION WW-GDA TO WW-PDA         
*S**  /*    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE ROUND-TO-NEAREST-FIVE     
*S*************************************************************************         
*S**  /*    
*S**  ASSIGN #HOLD-PELL-AWARD = #PASS-PELL-AWARD
*S**  IF #HOLD-PELL-1 = 0 OR        
*S**     #HOLD-PELL-1 = 1 OR        
*S**     #HOLD-PELL-1 = 2           
*S**    ASSIGN #HOLD-PELL-1 = 0     
*S**  END-IF
*S**  IF #HOLD-PELL-1 = 3 OR        
*S**     #HOLD-PELL-1 = 4 OR        
*S**     #HOLD-PELL-1 = 5 OR        
*S**     #HOLD-PELL-1 = 6 OR        
*S**     #HOLD-PELL-1 = 7           
*S**    ASSIGN #HOLD-PELL-1 = 5     
*S**  END-IF
*S**  IF #HOLD-PELL-1 = 8 OR        
*S**     #HOLD-PELL-1 = 9           
*S**    ASSIGN #HOLD-PELL-1 = 0     
*S**    ASSIGN #HOLD-PELL-5 = #HOLD-PELL-5 + 1  
*S**  END-IF
*S**  ASSIGN #PASS-PELL-AWARD = #HOLD-PELL-AWARD
*S**  /*    
*S**END-SUBROUTINE      
*S**END     
*C**                                FATEMP  WFPKP27L                        L S   NN0000        
*D01NAT8304L FATEMP  WFPKP27L                        ZWDNH   ZWDNH           S      
*D02            2026070809365902026070809365900000002845    
*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:    WFPKP27L                              WolffPack, Inc.           
*S****C           0   * System: FINANCIER                           All rights reserved.        
*S****C           0   * 
*S****C           0   ***********************************************************************   
*S****DS          0         1DL-ANNUAL-LIMITS   
*S****DS          0         2FRESHMEN           
*S****DK   S      0002N5    3FRESH-SUB          
*S****HS1   
*S****I                      3500   
*S****DK   S      0002N5    3FRESH-DEP-UNSUB    
*S****HS1   
*S****I                      5500   
*S****DK   S      0002N5    3FRESH-INDEP-UNSUB  
*S****HS1   
*S****I                      9500   
*S****DS          0         2SOPHMORE           
*S****DK   S      0002N5    3SOPH-SUB           
*S****HS1   
*S****I                      4500   
*S****DK   S      0002N5    3SOPH-DEP-UNSUB     
*S****HS1   
*S****I                      6500   
*S****DK   S      0002N5    3SOPH-INDEP-UNSUB   
*S****HS1   
*S****I                      10500  
*S****DS          0         2JR-SR  
*S****DK   S      0002N5    3JR-SR-SUB          
*S****HS1   
*S****I                      5500   
*S****DK   S      0002N5    3JR-SR-DEP-UNSUB    
*S****HS1   
*S****I                      7500   
*S****DK   S      0002N5    3JR-SR-INDEP-UNSUB  
*S****HS1   
*S****I                      12500  
*S****DS          0         2GRAD   
*S****DK   S      0002N5    3GRAD-SUB           
*S****HS1   
*S****I                      0      
*S****DK   S      0002N5    3GRAD-UNSUB         
*S****HS1   
*S****I                      20500  
*S****DK   S      0002N5    3GRAD-UNSUB-OBBBA   
*S****HS1   
*S****I                      20500  
*S****DS          0         1DL-LIFETIME-LIMITS 
*S****DS          0         2FRESHMEN           
*S****DK   S      0002N6    3FRESH-SUB          
*S****HS1   
*S****I                      23000  
*S****DK   S      0002N6    3FRESH-DEP-UNSUB    
*S****HS1   
*S****I                      31000  
*S****DK   S      0002N6    3FRESH-INDEP-UNSUB  
*S****HS1   
*S****I                      57500  
*S****DS          0         2SOPHMORE           
*S****DK   S      0002N6    3SOPH-SUB           
*S****HS1   
*S****I                      23000  
*S****DK   S      0002N6    3SOPH-DEP-UNSUB     
*S****HS1   
*S****I                      31000  
*S****DK   S      0002N6    3SOPH-INDEP-UNSUB   
*S****HS1   
*S****I                      57500  
*S****DS          0         2JR-SR  
*S****DK   S      0002N6    3JR-SR-SUB          
*S****HS1   
*S****I                      23000  
*S****DK   S      0002N6    3JR-SR-DEP-UNSUB    
*S****HS1   
*S****I                      31000  
*S****DK   S      0002N6    3JR-SR-INDEP-UNSUB  
*S****HS1   
*S****I                      57500  
*S****DS          0         2GRAD   
*S****DK   S      0002N6    3GRAD-SUB           
*S****HS1   
*S****I                      65500  
*S****DK   S      0002N6    3GRAD-UNSUB         
*S****HS1   
*S****I                      138500 
*S****DK   S      0002N6    3GRAD-UNSUB-OBBBA   
*S****HS1   
*S****I                      100000 
*S****DK   S      0002N6    3MAX-STUDENT-LIMIT  
*S****HS1   
*S****I                      257500 
*C**                                FATEMP  WFPKP27N                        N S   NN0000        
*D01NAT8304N FATEMP  WFPKP27N                        ZWDNH   ZWDNH           S      
*D02            2026070915050202026070915050200000018756    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFPKP27N          
*S*** System    : FINANCIER         
*S*** Title     : Packaging routine 
*S*** Function  : This subprogram packages and individual student       
*S***       
*S***             FINANCIER implementation:     
*S***               - This subprogram supplies the student specific     
*S***                   packaging logic.        
*S***               - Institutional logic should be contained           
*S***                   in a subprogram modeled after WXPKP27N.         
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*** Institutional Notes:          
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER         
*S**    01 #STUDENT-PACKAGED(L)     
*S**  PARAMETER USING WFPKPAKD      
*S**  PARAMETER USING WFPKFNDD      
*S**  PARAMETER USING WWSTDNTD      
*S**  PARAMETER USING WFAIDYRD      
*S***       
*S**  LOCAL USING WFPKPAKL          
*S**  LOCAL USING WFFED27D          
*S**  LOCAL USING WFFED27R          
*S**  LOCAL USING WFISR27D          
*S**  LOCAL USING WFISR27R          
*S**  LOCAL USING WFNSL27D          
*S**  LOCAL USING WFNSL27R          
*S**  LOCAL USING WFBUDGTD          
*S**  LOCAL USING WFBUDGTR          
*S**  LOCAL USING WFAWARDD          
*S**  LOCAL USING WFAWARDR          
*S**  LOCAL USING WFAWARDL          
*S**  LOCAL USING WFTSCPTD          
*S**  LOCAL USING WFTSCPTR          
*S**  LOCAL USING WFTSCPTL          
*S**  LOCAL USING WWAOBJ
*S***       
*S**  LOCAL USING WFPKP27L  /* Direct Loan limits           
*S***       
*S**  LOCAL 
*S**    01 #SUBPGM(A8)  
*S**    01 #SUB(P3)     
*S**    01 #AWD-SUB(P3) 
*S**    01 #FUND-SUB(P3)
*S**    01 #REQ-SUB(P3) 
*S**    01 #AWARD-MAX(N6.2)         
*S**    01 #NSLDS-SUB-TOTAL(N6)     
*S**    01 #NSLDS-CMB-TOTAL(N6)     
*S**    01 #CURRENT-PELL-LEU(P4.3)  
*S**    01 #PRIOR-YR-PELL-LEU(P4.3) 
*S**    01 #PELL-LEU(P4.3)          
*S**    01 #NSLDS-PELL-LEU-NO(N7)   
*S**    01 #NSLDS-PELL-LEU(P4.3)    
*S**    01 #REMAINING-LEU(P4.5)     
*S**    01 #ELIG-SUB(N5)
*S**    01 #ELIG-UNSUB(N5)          
*S**    01 #UNSUB-AGG(N6)           
*S**    01 #RTN-CODE(A1)
*S**    01 #AWARD-FC(N6.2)          
*S**    01 #AWARD-NEED(N6.2)        
*S**    01 #INST-PARMS(L)           
*S**    01 #TEMP-PELL-AWARD(P5)     
*S**    01 #TEMP-PELL-AWARD-TRUNC(N5.2)         
*S**    01 REDEFINE #TEMP-PELL-AWARD-TRUNC      
*S**      02 #TEMP-PAT-N5(N5)       
*S**      02 #TEMP-PAT-D2(N2)       
*S**    01 #CPS-EXISTS(A1)          
*S**    01 #AID-CCYY(N4)
*S**    01 REDEFINE #AID-CCYY       
*S**      02 #AID-CC(N2)
*S**      02 #AID-YY(N2)
*S**    01 #PELL-MIN(A1)
*S**    01 #PELL-MAX(A1)
*S**    01 #PELL-ELIG-PRT(A20)      
*S**    01 #PELL-MIN-PRT(A20)       
*S**    01 #PELL-MAX-PRT(A20)       
*S**    01 #HOLD-LIFETIME-MAX(A6)   
*S**    01 REDEFINE #HOLD-LIFETIME-MAX          
*S**      02 #HOLD-LIFETIME-MAX-N(N6)           
*S***       
*S**    01 #STUDENT-AWARDS(20)             /* Holds existing award      
*S**      02 WF-FUND-ID(A9)         
*S**      02 WF-AW-OFF(P5.2)        
*S**      02 TERM-ARRAY(12)         
*S**        03 WF-AW-D-OFF(P5.2)    
*S***       
*S*** Requirement variables         
*S**  01 APP-TYPE(A1) INIT<'A'>     
*S**  01 #HOLD-TEMP(A10)
*S**  01 #HOLD-PRIOR-PELL(A1)       
*S**  01 #EDIT-HOLD(A12)
*S**  01 #REQMTS-READ(L)
*S**  01 #REQMTS-COMPLETE(L)        
*S**  01 #REQMTS-FOUND(L)           
*S**  01 #REQ-TYPE(A1)  
*S**  01 #REQ-STAT-ARRAY(10)        
*S**    02 #REQ-STAT(A1)
*S**  01 #REQ-STAT-SUB(P3)          
*S**  01 #REQS          
*S**    02 #REQ(30)     
*S**      03 #RE-D-AFF (A1)         
*S**      03 #RE-D-STAT (A1)        
*S**      03 #RE-D-ST-DOC (A6)      
*S***       
*S**  01 #STUDENT-VARIABLES         
*S**    02 #STUDENT-LOGICALS        
*S**      03 #CHECK-DEGREE(L)       
*S**      03 #CHECK-PAR-ED-LEVEL(L) 
*S**      03 #CHECK-EFC(L)          
*S**      03 #CHECK-RECVD-DATE(L)   
*S**      03 #CHECK-INSTATE-RES(L)  
*S***       
*S*** Institutional variables       
*S***       
*S***       
*S**END-DEFINE          
*S***       
*S*************************************************************************         
*S**  /*    
*S**  /* Populate WW-GDA from WW-PDA
*S**  MOVE BY POSITION WW-PDA TO WW-GDA         
*S**  ASSIGN #AID-CCYY = VAL(##AID-YEAR)        
*S**  COMPUTE #AID-CCYY = #AID-CCYY - 1         
*S**  MOVE #USE-PRIOR-PELL TO #HOLD-PRIOR-PELL  
*S**  RESET WFPKPAKD    
*S**  MOVE #HOLD-PRIOR-PELL TO #USE-PRIOR-PELL  
*S**  /*    
*S**  /* Read data for passed SID   
*S**  /*  Federal data  
*S**  MOVE 'GET' TO WWAOBJ.#FUNCTION
*S**  ASSIGN WFFED27D.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFFED27D.WW-STUDENT-ID = ##STUDENT-ID          
*S**  PERFORM CALL-OBJECT-FEDERAL   
*S**  /*    
*S**  /*  ISIR data     
*S**  ASSIGN WFISR27D.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFISR27D.WW-STUDENT-ID = ##STUDENT-ID          
*S**  PERFORM CALL-OBJECT-ISIR      
*S**  /*    
*S**  /*  NSLDS data    
*S**  ASSIGN WFNSL27D.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFNSL27D.WW-STUDENT-ID = ##STUDENT-ID          
*S**  PERFORM CALL-OBJECT-NSLDS     
*S**  /*    
*S**  /*  TRANSCRIPT data           
*S**  ASSIGN WFTSCPTD.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFTSCPTD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  PERFORM CALL-OBJECT-TRANSCRIPT
*S**  /*    
*S**  RESET WFPKPAKD.#REJECT-RSNS(*)
*S**  RESET #STUDENT-LOGICALS       
*S**  RESET #STUDENT-AWARDS (*)     
*S**  /*    
*S**  /* Load existing awards       
*S**  PERFORM LOAD-EXISTING-AWARDS  
*S**  /*    
*S**  /* Setup student variables    
*S**  /*    
*S**  /* FC/PC/SC, Need, COA, etc.  
*S**  IF WFAIDYRD.WF-AY-M1-FC > 999999          
*S**    MOVE 999999 TO WFPKPAKD.#FED-EFC        
*S**  ELSE  
*S**    MOVE WFAIDYRD.WF-AY-M1-FC TO WFPKPAKD.#FED-EFC      
*S**  END-IF
*S**  /*    
*S**  IF WFAIDYRD.WF-AY-M2-FC > 999999          
*S**    MOVE 999999 TO WFPKPAKD.#EFC
*S**  ELSE  
*S**    MOVE WFAIDYRD.WF-AY-M2-FC TO WFPKPAKD.#EFC          
*S**    IF WFPKPAKD.#EFC < 0        
*S**      ASSIGN WFPKPAKD.#EFC = 0  
*S**    END-IF          
*S**  END-IF
*S**  MOVE WFPKPAKD.#EFC TO WFPKPAKD.#FC        
*S**  /*    
*S**  IF WFAIDYRD.WF-AY-M2-PC > 999999          
*S**    MOVE 999999 TO WFPKPAKD.#PC 
*S**  ELSE  
*S**    IF WFAIDYRD.WF-AY-M2-PC < 0 
*S**      ASSIGN WFPKPAKD.#PC = 0   
*S**    ELSE
*S**      MOVE WFAIDYRD.WF-AY-M2-PC TO WFPKPAKD.#PC         
*S**    END-IF          
*S**  END-IF
*S**  IF WFAIDYRD.WF-AY-M2-SC > 999999          
*S**    MOVE 999999 TO #SC          
*S**  ELSE  
*S**    IF WFAIDYRD.WF-AY-M2-SC < 0 
*S**      ASSIGN WFPKPAKD.#SC = 0   
*S**    ELSE
*S**      MOVE WFAIDYRD.WF-AY-M2-SC TO WFPKPAKD.#SC         
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Load COA       
*S**  MOVE WFAIDYRD.WF-AY-M1-BUDGET TO WFPKPAKD.#PELL-COA   
*S**  MOVE WFAIDYRD.WF-AY-M2-BUDGET TO WFPKPAKD.#COA        
*S**  /*    
*S**  /* Load Need      
*S**  COMPUTE WFPKPAKD.#PELL-NEED = WFAIDYRD.WF-AY-M1-NEED  
*S**  COMPUTE WFPKPAKD.#NEED = WFAIDYRD.WF-AY-M2-NEED -     
*S**       WFAIDYRD.WF-AY-W-AID-MN  
*S**  MOVE WFPKPAKD.#NEED TO WFPKPAKD.#REM-NEED 
*S**  /*    
*S**  /* Load FC        
*S**  MOVE WFPKPAKD.#FC TO WFPKPAKD.#REM-FC     
*S**  MOVE WFPKPAKD.#SC TO WFPKPAKD.#REM-SC     
*S**  MOVE WFPKPAKD.#PC TO WFPKPAKD.#REM-PC     
*S**  /*    
*S**  /*    
*S**  /* Set student specific variables from year specific data         
*S**  ASSIGN #S-CIT          = WFFED27D.WF-FE-S-CIT         
*S**  ASSIGN #ISIR-DEP-STAT  = WFISR27D.WF-IS-C-DEP-MODEL   
*S**  ASSIGN #AY-DEP-STAT    = WFAIDYRD.WF-AY-M1-DEP        
*S**  ASSIGN #ISIR-PELL-ELIG = WFISR27D.WF-IS-C-PELL-ELIG   
*S**  ASSIGN #PELL-MIN       = WFISR27D.WF-IS-C-MIN-PELL-IND
*S**  ASSIGN #PELL-MAX       = WFISR27D.WF-IS-C-MAX-PELL-IND
*S**  ASSIGN #CPS-RECVD-DATE = WFISR27D.WF-IS-C-APP-RCPT-DATE           
*S**  ASSIGN #INT-WORK       = WFAIDYRD.WF-AY-S-INT-WS      
*S**  ASSIGN #S-DEG          = WWSTDNTD.WW-ST-AC-DEG        
*S**  ASSIGN #S-CLASS        = WWSTDNTD.WW-ST-AC-CLS        
*S**  ASSIGN #S-TIM          = WWSTDNTD.WW-ST-RT1-TIM       
*S**  ASSIGN #NS-PERK-TOTAL  = WFNSL27D.WF-NS-PERK-TOTAL    
*S**  ASSIGN #FE-HSG         = WFAIDYRD.WF-AY-S-HSG         
*S**  MOVE RIGHT JUSTIFIED WFISR27D.WF-IS-FISAP-TOT-INC TO  
*S**                       #FISAP   
*S**  EXAMINE #FISAP FOR ' ' AND REPLACE WITH '0'           
*S**  IF #FISAP = MASK(99999999)    
*S**    ASSIGN #FISAP-N      = VAL(WFISR27D.WF-IS-FISAP-TOT-INC)        
*S**  END-IF
*S**  IF WFISR27D.WF-IS-C-SAI = ' ' 
*S**    ASSIGN #BLANK-SAI = 'Y'     
*S**  END-IF
*S**  /*    
*S**  /* Examine NSLDS Limit Eligibility flag, if set       
*S**  /*   verify that Subsidized limit used does not exceed 150%       
*S**  IF WFNSL27D.WF-NS-C-SUB-LE-FLAG = 'Y'     
*S**    IF WFNSL27D.WF-NS-C-SUB-USAGE-PD > '150000' /* 999v999          
*S**      ASSIGN #S-DL-SUB-LIMIT = 'Y'   /* Limit Sub loans 
*S**    ELSE
*S**      ASSIGN #S-DL-SUB-LIMIT = 'N'   /* Do not limit Sub loans      
*S**    END-IF          
*S**  ELSE  
*S**    ASSIGN #S-DL-SUB-LIMIT = 'N'     /* Do not limit Sub loans      
*S**  END-IF
*S**  /*    
*S**  /* Class level    
*S**  PERFORM DETERMINE-CLASS-LEVEL 
*S**  /*    
*S**  /* Institutional override parameters      
*S**  ASSIGN #INST-PARMS = TRUE     
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  ASSIGN #INST-PARMS = FALSE    
*S**  /*    
*S**  /* NSLDS DL totals
*S**  IF WFNSL27D.WF-NS-SUB-TOTAL = MASK (999999)           
*S**    MOVE EDITED WFNSL27D.WF-NS-SUB-TOTAL TO #NSLDS-SUB-TOTAL (EM=999999)        
*S**  ELSE  
*S**    MOVE RIGHT JUSTIFIED WFNSL27D.WF-NS-SUB-TOTAL TO    
*S**         WFNSL27D.WF-NS-SUB-TOTAL           
*S**    EXAMINE WFNSL27D.WF-NS-SUB-TOTAL FOR ' ' REPLACE WITH '0'       
*S**    IF WFNSL27D.WF-NS-SUB-TOTAL = MASK(999999)          
*S**      MOVE EDITED WFNSL27D.WF-NS-SUB-TOTAL TO           
*S**                  #NSLDS-SUB-TOTAL (EM=999999)          
*S**    ELSE
*S**      MOVE 0 TO #NSLDS-SUB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSL27D.WF-NS-CMB-TOTAL = MASK(999999)
*S**    MOVE EDITED WFNSL27D.WF-NS-CMB-TOTAL TO #NSLDS-CMB-TOTAL (EM=999999)        
*S**  ELSE  
*S**    MOVE RIGHT JUSTIFIED WFNSL27D.WF-NS-CMB-TOTAL TO    
*S**         WFNSL27D.WF-NS-CMB-TOTAL           
*S**    EXAMINE WFNSL27D.WF-NS-CMB-TOTAL FOR ' ' REPLACE WITH '0'       
*S**    IF WFNSL27D.WF-NS-CMB-TOTAL = MASK(999999)          
*S**     MOVE EDITED WFNSL27D.WF-NS-CMB-TOTAL TO
*S**                 #NSLDS-CMB-TOTAL (EM=999999)           
*S**    ELSE
*S**      MOVE 0 TO #NSLDS-CMB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* (post OBBBA)   
*S**  /*    Loan limit exception flag           
*S**  /*    Student Lifetime max total          
*S**  /*    Lifetime limit          
*S**  MOVE WFNSL27D.WF-NS-LIMIT-EXCP TO #NS-LIMIT-EXCEP     
*S**  MOVE DL-ANNUAL-LIMITS.GRAD-UNSUB-OBBBA TO 
*S**       #ANNUAL-GRAD-UNSUB-OBBBA 
*S**  MOVE DL-LIFETIME-LIMITS.GRAD-UNSUB-OBBBA TO           
*S**       #LIFETIME-GRAD-UNSUB-OBBBA           
*S**  IF WFNSL27D.WF-NS-LIFE-MAX-TOT = MASK (999999999999999)           
*S**    MOVE SUBSTRING(WFNSL27D.WF-NS-LIFE-MAX-TOT,8,6) TO  
*S**          #HOLD-LIFETIME-MAX    
*S**    MOVE #HOLD-LIFETIME-MAX-N TO #NS-LIFETIME-MAX       
*S**  ELSE  
*S**    MOVE 0 TO #NS-LIFETIME-MAX  
*S**  END-IF
*S**  MOVE DL-LIFETIME-LIMITS.MAX-STUDENT-LIMIT TO #MAX-STUDENT-LIMIT   
*S**  MOVE WFNSL27D.WF-NS-CMB-LIMIT-GRAD TO #NS-CMB-LIMIT-GRAD          
*S**  /*    
*S**  /* Pell LEU       
*S**  IF WFNSL27D.WF-NS-C-LEU = MASK(9999999)   
*S**    ASSIGN #NSLDS-PELL-LEU-NO = VAL(WFNSL27D.WF-NS-C-LEU)           
*S**    /* Delivered as 100% = 01V00000, need to convert to 100%        
*S**    COMPUTE #NSLDS-PELL-LEU = #NSLDS-PELL-LEU-NO / 1000 
*S**  END-IF
*S**  /*    
*S**  /* Determine LEU to use (COD vs NSLDS - use higher one)           
*S**  IF WWSTDNTD.WW-ST-PELL-LEU > #NSLDS-PELL-LEU          
*S**    ASSIGN #CURRENT-PELL-LEU = WWSTDNTD.WW-ST-PELL-LEU  
*S**  ELSE  
*S**    ASSIGN #CURRENT-PELL-LEU = #NSLDS-PELL-LEU          
*S**  END-IF
*S**  /*    
*S**  /* Setup student report detail (#PKG-PASS-TEMP)       
*S**  /*   returned to WFPKPAKB print logic via #PKG-PASS-TEMP          
*S**  COMPRESS 'Col=' WWSTDNTD.WW-ST-AC-COL     
*S**           '; Deg=' WWSTDNTD.WW-ST-AC-DEG   
*S**           '; Cls=' WWSTDNTD.WW-ST-AC-CLS   
*S**           '; TStat=' #CLASS-LEVEL '|'      
*S**     INTO #PKG-PASS-TEMP LEAVING NO SPACE   
*S**  MOVE EDITED WWSTDNTD.WW-ST-RT1-GPA(EM=9.999) TO #HOLD-TEMP        
*S**  COMPRESS #PKG-PASS-TEMP 'GPA=' #HOLD-TEMP 
*S**           '; IOS=' WWSTDNTD.WW-ST-AC-IOS   
*S**           '; Dep=' #AY-DEP-STAT
*S**           '; DL Sub=' #NSLDS-SUB-TOTAL     
*S**           '; DL Cmb=' #NSLDS-CMB-TOTAL     
*S**     INTO #PKG-PASS-TEMP LEAVING NO SPACE   
*S**  COMPRESS #PKG-PASS-TEMP '#'   
*S**           'NS Lim Excp=' #NS-LIMIT-EXCEP   
*S**           '; NS Lifetime Max=' #NS-LIFETIME-MAX        
*S**     INTO #PKG-PASS-TEMP LEAVING NO SPACE   
*S**  /*    
*S**  /* Get PELL-MIN and PELL-MAX (Read from yr specific ISIR)         
*S**  COMPRESS #PKG-PASS-TEMP ';'   
*S**    INTO #PKG-PASS-TEMP LEAVING NO SPACE    
*S**  IF #ISIR-PELL-ELIG = ' '      
*S**    ASSIGN #PELL-ELIG-PRT = 'blank'         
*S**  ELSE  
*S**    ASSIGN #PELL-ELIG-PRT = #ISIR-PELL-ELIG 
*S**  END-IF
*S**  COMPRESS '\Pell: Elig=' #PELL-ELIG-PRT ';'
*S**    INTO #PELL-ELIG-PRT LEAVING NO SPACE    
*S**  IF #PELL-MAX = ' '
*S**    ASSIGN #PELL-MAX-PRT = 'blank'          
*S**  ELSE  
*S**    ASSIGN #PELL-MAX-PRT = #PELL-MAX        
*S**  END-IF
*S**  COMPRESS 'Max=' #PELL-MAX-PRT ';'         
*S**    INTO #PELL-MAX-PRT LEAVING NO SPACE     
*S**  IF #PELL-MIN = ' '
*S**    ASSIGN #PELL-MIN-PRT = 'blank'          
*S**  ELSE  
*S**    ASSIGN #PELL-MIN-PRT = #PELL-MIN        
*S**  END-IF
*S**  COMPRESS 'Min=' #PELL-MIN-PRT ';'         
*S**    INTO #PELL-MIN-PRT LEAVING NO SPACE     
*S**  COMPRESS #PKG-PASS-TEMP       
*S**           '  ' #PELL-ELIG-PRT  
*S**           '  ' #PELL-MAX-PRT   
*S**           '  ' #PELL-MIN-PRT   
*S**     INTO #PKG-PASS-TEMP        
*S**  MOVE EDITED #CURRENT-PELL-LEU (EM=999.999) TO #HOLD-TEMP          
*S**  COMPRESS #PKG-PASS-TEMP 'LEU=' #HOLD-TEMP 
*S**     INTO #PKG-PASS-TEMP        
*S**  /*    
*S**  /* Package passed funds for student       
*S**  FOR #FUND-SUB = 1 TO 20       
*S**    MOVE WFPKFNDD.WF-FUND-ID(#FUND-SUB) TO  
*S**         WFPKPAKD.FUND-ID(#FUND-SUB)        
*S**    /*  
*S**    /* No fund requested        
*S**    IF WFPKFNDD.WF-FUND-ID(#FUND-SUB) = ' ' 
*S**      PERFORM PREPARE-BYPASS    
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* No remaining need        
*S**    /*  (Effective 2025, student may be eligible for a minimum Pell 
*S**    /*   even if there is no need)          
*S**     IF ((WFPKFNDD.WF-FUND-ID (#FUND-SUB) = WFPKFNDD.PELL-FUND-ID AND           
*S**          #PELL-NEED = 0 AND #PELL-MIN = ' ') OR        
*S**         (WFPKFNDD.WF-FUND-ID (#FUND-SUB) NOT = WFPKFNDD.PELL-FUND-ID           
*S**           AND #REM-NEED = 0))  
*S**      IF WFPKFNDD.WF-FU-REPL-FC(#FUND-SUB) NOT = ' ' AND
*S**         WFPKFNDD.WF-FU-REPL-FC(#FUND-SUB) NOT = 'N'    
*S**        IF #REM-FC = 0 AND      
*S**           #REM-PC = 0 AND      
*S**           #REM-SC = 0          
*S**          ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-NEED      
*S**          PERFORM PREPARE-BYPASS
*S**          ESCAPE TOP
*S**        END-IF      
*S**      ELSE          
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-NEED        
*S**        PERFORM PREPARE-BYPASS  
*S**        ESCAPE TOP  
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Determine if student already has award           
*S**    /*  from this fund (no re-awarding)     
*S**    FOR #AWD-SUB = 1 TO 20      
*S**      IF (#STUDENT-AWARDS.WF-FUND-ID(#AWD-SUB) =        
*S**          WFPKFNDD.WF-FUND-ID(#FUND-SUB)) AND           
*S**         (#STUDENT-AWARDS.WF-AW-OFF(#AWD-SUB) > 0)      
*S**         ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-PREV-AWARDED         
*S**         ESCAPE BOTTOM          
*S**      END-IF        
*S**    END-FOR         
*S**    /*  
*S**    /* Recheck reject reason (#FUND-PREV-AWARDED above) 
*S**    IF #REJECT-RSN(#FUND-SUB) NE ' '        
*S**      PERFORM PREPARE-BYPASS    
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Fund edits   
*S**    PERFORM FUND-EDITS          
*S**    IF FUND-REJECT(#FUND-SUB) = 'Y' OR      
*S**       #REJECT-RSN(#FUND-SUB) NOT = ' '     
*S**      PERFORM PREPARE-BYPASS    
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Requirement edit         
*S**    IF WFPKFNDD.FUND-DOC(#FUND-SUB) NOT = ' '           
*S**      PERFORM CHECK-REQUIREMENTS
*S**      IF #REJECT-RSN(#FUND-SUB) NOT = ' '   
*S**        PERFORM PREPARE-BYPASS  
*S**        ESCAPE TOP  
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Student must be Pell eligible (per ISIR)         
*S**    IF WFPKFNDD.FUND-PELL-ELIG(#FUND-SUB) = 'Y'         
*S**      IF #ISIR-PELL-ELIG NOT = 'Y'          
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #NOT-PELL-ELIGIBLE          
*S**        ESCAPE TOP  
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* EFC minimum / maximum    
*S**    IF WFPKFNDD.FUND-EFC-CHECK(#FUND-SUB) = 'Y'         
*S**      PERFORM CHECK-EFC         
*S**      IF NOT #CHECK-EFC         
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #EFC-CHECK-ERR  
*S**        ESCAPE TOP  
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* CPS received date        
*S**    IF WFPKFNDD.FUND-RECVD-DATE(#FUND-SUB) NOT = ' '    
*S**      PERFORM CHECK-RECEIVED-DATE           
*S**      IF NOT #CHECK-RECVD-DATE  
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #DATE-PASSED    
*S**        ESCAPE TOP  
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0
*S**    ASSIGN #AWARD-FC = 0        
*S**    ASSIGN #AWARD-NEED = 0      
*S**    ASSIGN #AWARD-MAX = 0       
*S**    RESET #CHECK-DEGREE         
*S**    /*  
*S**    DECIDE ON FIRST VALUE WFPKFNDD.FUND-CATEGORY(#FUND-SUB)         
*S**      /*
*S**      /* Fund specific packaging routines, must         
*S**      /* be kept in sync with institution fund list     
*S**      /*
*S**      /*  Pell      
*S**      VALUE 'PELL'  
*S**        PERFORM PACKAGE-PELL    
*S**      /*
*S**      /*  SEOG      
*S**      VALUE 'SEOG'  
*S**        PERFORM PACKAGE-SEOG    
*S**      /*
*S**      /*  State Grant           
*S**      VALUE 'STGRANT'           
*S**        PERFORM PACKAGE-STATE-GRANT         
*S**      /*
*S**      /*  TEACH     
*S**      VALUE 'TEACH' 
*S**        PERFORM PACKAGE-TEACH   
*S**      /*
*S**      /*  Work study
*S**      VALUE 'WORK'  
*S**        PERFORM PACKAGE-WORK    
*S**      /*
*S**      /*  GRADPLUS  
*S**      VALUE 'GRADPLUS'          
*S**        PERFORM PACKAGE-GRADPLUS
*S**      /*
*S**      /*  PLUS      
*S**      VALUE 'PLUS'  
*S**        PERFORM PACKAGE-PLUS    
*S**      /*
*S**      /*  DL Sub    
*S**      VALUE 'DLSUB' 
*S**        PERFORM PACKAGE-DLSUB   
*S**      /*
*S**      /*  DL Unsub  
*S**      VALUE 'DLUNSUB'           
*S**        PERFORM PACKAGE-DLUNSUB 
*S**      /*
*S**      NONE          
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #PROG-NOT-FOUND 
*S**    END-DECIDE      
*S**    /*  
*S**    /* Update running totals fund rejected  
*S**    IF #REJECT-RSN(#FUND-SUB) NOT = ' '     
*S**      PERFORM PREPARE-BYPASS    
*S**    END-IF          
*S**    /*  
*S**    /* Accumulate paked awards to allow for check against total COA 
*S**    /*   to prevent potential overaward     
*S**    ADD WFPKPAKD.AWARD-AMT(#FUND-SUB) TO #TOTAL-PKG-AWDS
*S**    /*  
*S**  END-FOR           
*S**  /*    
*S**  /*    
*S**  /* Populate WW-PDA from WW-GDA
*S**  MOVE BY POSITION WW-GDA TO WW-PDA         
*S**  /*    
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-INSTITUTIONAL-PKGING 
*S*************************************************************************         
*S**  /*    
*S**  /* This subroutine is used to invoke the institional  
*S**  /*   specific code, invoked from each program         
*S**  /*    
*S**  /* As #FUND-SUB is passed to institutional calc,      
*S**  /*    WFPKFNDD.FUND-CATEGORY(#FUND-SUB) is examined for           
*S**  /*    fund specific processing
*S**  /* Set #REJECT-RSN(#FUND-SUB) to non-blank to stop fund processing
*S**  /*    for student 
*S**  /*    
*S**  CALLNAT 'WXPKP27N' WW-GDA     
*S**           #FUND-SUB
*S**           #INST-PARMS          
*S**           WFPKPAKD 
*S**           WFPKFNDD 
*S**           WWSTDNTD WWSTDNTD-ID 
*S**           WFAIDYRD WFAIDYRD-ID 
*S**           WFFED27D WFFED27D-ID 
*S**           WFISR27D WFISR27D-ID 
*S**           WFNSL27D WFNSL27D-ID 
*S***       
*S**END-SUBROUTINE /* CALL-INSTITUTIONAL-PKGING 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-AWARD         
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-AWARD file object subprogram   
*S**  CALLNAT 'WFAWARDO' WW-GDA     
*S**           WFAWARDD 
*S**           WFAWARDD-ID          
*S**           WFAWARDR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-AWARD         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-FEDERAL       
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-FEDERAL-2627 file 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-ISIR          
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-ISIR-2627 file object subprogram           
*S**  CALLNAT 'WFISR27O' WW-GDA     
*S**           WFISR27D 
*S**           WFISR27D-ID          
*S**           WFISR27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-ISIR          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-NSLDS         
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-NSLDS-2627 file object subprogram          
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-NSLDS         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-TRANSCRIPT    
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-TRANSCRIPT file object subprogram          
*S**  CALLNAT 'WFTSCPTO' WW-GDA     
*S**           WFTSCPTD 
*S**           WFTSCPTD-ID          
*S**           WFTSCPTR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-TRANSCRIPT    
*S***       
*S**INCLUDE WFPKPAKC    
*S***       
*S**END     
*C**                                FATEMP  WFPKPAKB                        F S   NN0000        
*D01NAT8304F FATEMP  WFPKPAKB                        ZWDNH   ZWDNH           S      
*D02            2026070916582002026070916582000000056123    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFPKPAKB           
*S*** System   : FINANCIER          
*S*** Title    : Packaging Selection
*S*** Function : This program drives the selection of students for a    
*S***             mass packaging run.  It reads a work file of selected 
*S***             students (created by WFPKSELB)
*S***             and then invokes a year-specific program to apply     
*S***             packaging logic.  
*S***       
*S***      Copyright 1995 - 2012 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 WFAIDYRD /* Passed to object subprogram (WF-AIDYEAR)  
*S**  LOCAL USING WFAIDYRR /* Passed to object subprogram (WF-AIDYEAR)  
*S**  LOCAL USING WWSTDNTD /* Passed to object subprogram (WW-STUDENT)  
*S**  LOCAL USING WWSTDNTR /* Passed to object subprogram (WW-STUDENT)  
*S**  LOCAL USING WWAOBJ   /* Used by object subprograms    
*S***       
*S**  LOCAL USING WFPKPAKL /* Packaging LDA     
*S**  LOCAL USING WFPKPAKD /* Packaging PDA (Student data)  
*S**  LOCAL USING WFPKFNDD /* Packaging Funds PDA           
*S**  LOCAL USING WWCONST  /* Constants LDA     
*S**  LOCAL USING WFMAINTD /* Batch transactions
*S**  LOCAL USING WWVALLDA /* Value validation  
*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**  01 #REPLACE-LIT(A30)          
*S***       
*S**  01 #DEBUG-DET(A1) INIT<'2'>   
*S**  01 #ESTIMATED-PELL-FUND(A8) INIT<'PELL-EST'>          
*S***       
*S**  01 #END-KEY       
*S**    02 WF-AID-YEAR(A4)          
*S**    02 WF-FAO(A2)   
*S**    02 WW-STUDENT-ID(A9)        
*S**    02 WF-EC-SRC(A1)
*S**  01 REDEFINE #END-KEY          
*S**    02 #END-KEY-RED(A16)        
*S***       
*S**  01 #STUDENT-PACKAGED(L)       
*S**  01 #TOTAL-PACKAGE(P7.2)       
*S**  01 #HOLD-AMOUNT(A7)           
*S**  01 REDEFINE #HOLD-AMOUNT      
*S**    02 #HOLD-AMOUNT-N(N5.2)     
*S***       
*S**  01 #READ-COUNTER(P7)          
*S**  01 #BYPASS-COUNTER(P7)        
*S**  01 #NOSELECT-COUNTER(P7)      
*S**  01 #SELECT-COUNTER(P7)        
*S**  01 #STATUS-COUNTER(P7)        
*S**  01 #WRITE-COUNTER(P7)         
*S**  01 #AWD-WRITE-COUNTER(P7)     
*S**  01 #PKG-WRITE-COUNTER(P7)     
*S**  01 #FR-WRITE-COUNTER(P7)      
*S**  01 #DL-WRITE-COUNTER(P7)      
*S**  01 #AWD-DISP(A10) 
*S**  01 #WRITE-LINE(A35)           
*S**  01 #WRITE-LINE-2(A65)         
*S**  01 #PASS-TEMP(A30)
*S**  01 #PASS-KEY(A30) 
*S**  01 #HOLD-TEMP1(A200)          
*S**  01 #HOLD-TEMP2(A200)          
*S**  01 #HOLD-TEMP3(A200)          
*S**  01 #HOLD-TEMP4(A200)          
*S**  01 #HOLD-TEMP5(A200)          
*S**  01 #HOLD-TEMP(A12)
*S**  01 #PRINT-LINE(A200)          
*S**  01 #PRINT-PRIORITY-REPORT(L)  
*S**  01 #79-UNDERSCORE(A79)        
*S**  01 #TAB-FIELDS(A100)          
*S**  01 REDEFINE #TAB-FIELDS       
*S**    02 #3T(A3)      
*S**    02 #3T-FILLER(A97)          
*S**  01 REDEFINE #TAB-FIELDS       
*S**    02 #6T(A6)      
*S**    02 #6T-FILLER(A94)          
*S**  01 REDEFINE #TAB-FIELDS       
*S**    02 #9T(A9)      
*S**    02 #9T-FILLER(A91)          
*S**  01 #PRT1-LINE     
*S**    02 #PRT1-COA-LIT(A10) INIT<'Pell COA: '>
*S**    02 #PRT1-COA(A6)
*S**    02 #PRT1-FILLER2(A1) INIT<' '>          
*S**    02 #PRT1-NEED-LIT(A11) INIT<'Pell Need: '>          
*S**    02 #PRT1-NEED(A5)           
*S**    02 #PRT1-FILLER3(A2) INIT<' '>          
*S**    02 #PRT1-FC-LIT(A14) INIT<'Pell EFC: '> 
*S**    02 #PRT1-FC(A7) 
*S**    02 #PRT1-FILLER6(A48) INIT<' '>         
*S**  01 REDEFINE #PRT1-LINE        
*S**    02 #PRT1-LINE-R(A102)       
*S**  01 #PRT2-LINE     
*S**    02 #PRT2-FILLER1(A5) INIT<' '>          
*S**    02 #PRT2-COA-LIT(A5) INIT<'COA: '>      
*S**    02 #PRT2-COA(A6)
*S**    02 #PRT2-FILLER2(A6) INIT<' '>          
*S**    02 #PRT2-NEED-LIT(A6) INIT<'Need: '>    
*S**    02 #PRT2-NEED(A5)           
*S**    02 #PRT2-FILLER3(A8) INIT<' '>          
*S**    02 #PRT2-FC-LIT(A8) INIT<'FC: '>        
*S**    02 #PRT2-FC(A7) 
*S***   02 #PRT2-FILLER4(A1) INIT<' '>          
*S**    02 #PRT2-PC-LIT(A4) INIT<'PC: '>        
*S**    02 #PRT2-PC(A6) 
*S**    02 #PRT2-FILLER5(A1) INIT<' '>          
*S**    02 #PRT2-SC-LIT(A4) INIT<'SC: '>        
*S**    02 #PRT2-SC(A6) 
*S**    02 #PRT2-FILLER6(A29) INIT<' '>         
*S**  01 REDEFINE #PRT2-LINE        
*S**    02 #PRT2-LINE-R(A104)       
*S**  01 #PRT3-LINE     
*S**    02 #PRT3-NEED-LIT(A28) INIT<'Remaining ======>     Need: '>     
*S**    02 #PRT3-NEED(A5)           
*S**    02 #PRT3-FILLER3(A8) INIT<' '>          
*S**    02 #PRT3-FC-LIT(A7) INIT<'FC: '>        
*S**    02 #PRT3-FC(A7) 
*S***   02 #PRT3-FILLER4(A1) INIT<' '>          
*S**    02 #PRT3-PC-LIT(A4) INIT<'PC: '>        
*S**    02 #PRT3-PC(A6) 
*S**    02 #PRT3-FILLER5(A1) INIT<' '>          
*S**    02 #PRT3-SC-LIT(A4) INIT<'SC: '>        
*S**    02 #PRT3-SC(A6) 
*S**    02 #PRT3-FILLER6(A28) INIT<' '>         
*S**  01 REDEFINE #PRT3-LINE        
*S**    02 #PRT3-LINE-R(A104)       
*S**  01 #PRT4-LINE     
*S**    02 #PRT4-FILLER1(A4) INIT<' '>          
*S**    02 #PRT4-LIT(A19) INIT<'Total package amt: '>       
*S**    02 #PRT4-PKG-AMT(A9)        
*S**    02 #PRT4-FILLER2(A68) INIT<' '>         
*S**  01 REDEFINE #PRT4-LINE        
*S**    02 #PRT4-LINE-R(A100)       
*S**  01 #PRT5-LINE     
*S**    02 #PRT5-FILLER1(A9) INIT<' '>          
*S**    02 #PRT5-MEET-NEED-LIT(A14) INIT<'Meets need: '>    
*S**    02 #PRT5-MEET-NEED(A1)      
*S**    02 #PRT5-FILLER2(A8) INIT<' '>          
*S**    02 #PRT5-REM-NEED-LIT(A16) INIT<'Remaining Need: '> 
*S**    02 #PRT5-REM-NEED(A5)       
*S**    02 #PRT5-FILLER3(A47) INIT<' '>         
*S**  01 REDEFINE #PRT5-LINE        
*S**    02 #PRT5-LINE-R(A100)       
*S**  01 #PRT6-LINE     
*S**    02 #PRT6-FILLER1(A9) INIT<' '>          
*S**    02 #PRT6-REPL-FC-LIT(A14) INIT<'Replaces FC:'>      
*S**    02 #PRT6-REPL-FC(A1)        
*S**    02 #PRT6-FILLER3(A76) INIT<' '>         
*S**  01 REDEFINE #PRT6-LINE        
*S**    02 #PRT6-LINE-R(A100)       
*S**  01 #PRT7-LINE     
*S**    02 #PRT7-FILLER1(A9) INIT<' '>          
*S**    02 #PRT7-REPL-FC-LIT(A14) INIT<'Replaces FC:'>      
*S**    02 #PRT7-REPL-FC(A1)        
*S**    02 #PRT7-FILLER2(A7) INIT<' '>          
*S**    02 #PRT7-REM-FC-LIT(A16) INIT<'Remaining FC:'>      
*S**    02 #PRT7-RUN-FC(A6)         
*S**    02 #PRT7-FILLER3(A7) INIT<' '>          
*S**    02 #PRT7-REM-SC-LIT(A16) INIT<'Remaining SC:'>      
*S**    02 #PRT7-RUN-SC(A6)         
*S**    02 #PRT7-FILLER4(A20) INIT<' '>         
*S**  01 REDEFINE #PRT7-LINE        
*S**    02 #PRT7-LINE-R(A102)       
*S**  01 #PRT8-LINE     
*S**    02 #PRT8-FILLER1(A9) INIT<' '>          
*S**    02 #PRT8-REPL-FC-LIT(A14) INIT<'Replaces FC:'>      
*S**    02 #PRT8-REPL-FC(A1)        
*S**    02 #PRT8-FILLER2(A7) INIT<' '>          
*S**    02 #PRT8-REM-FC-LIT(A16) INIT<'Remaining FC:'>      
*S**    02 #PRT8-RUN-FC(A6)         
*S**    02 #PRT8-FILLER3(A7) INIT<' '>          
*S**    02 #PRT8-REM-PC-LIT(A16) INIT<'Remaining PC:'>      
*S**    02 #PRT8-RUN-PC(A6)         
*S**    02 #PRT8-FILLER4(A20) INIT<' '>         
*S**  01 REDEFINE #PRT8-LINE        
*S**    02 #PRT8-LINE-R(A102)       
*S**  01 #PRT9-LINE     
*S**    02 #PRT9-FILLER1(A9) INIT<' '>          
*S**    02 #PRT9-REPL-FC-LIT(A14) INIT<'Replaces FC:'>      
*S**    02 #PRT9-REPL-FC(A1)        
*S**    02 #PRT9-FILLER2(A8) INIT<' '>          
*S**    02 #PRT9-REM-FC-LIT(A15) INIT<'Remaining FC:'>      
*S**    02 #PRT9-RUN-FC(A7)         
*S**    02 #PRT9-FILLER3(A47) INIT<' '>         
*S**  01 REDEFINE #PRT9-LINE        
*S**    02 #PRT9-LINE-R(A101)       
*S***       
*S**  01 #SUB(P3)       
*S**  01 #FUND-NO(N2)   
*S***       
*S*** Input files       
*S**  01 WF-SEL         
*S**    02 #YEAR(A4)    
*S**    02 #DELIMITER1(A1)          
*S**    02 #FAO(A2)     
*S**    02 #DELIMITER2(A1)          
*S**    02 #SID(A9)     
*S**    02 #DELIMITER3(A1)          
*S**    02 #NAME(A35)   
*S**    02 #DELIMITER4(A1)          
*S**    02 #FILLER1(A55)
*S**    02 #POPULATION(A1)          
*S**    02 #FILLER2(A1) 
*S**    02 #PROCESS-RSN(A20)        
*S**  01 REDEFINE WF-SEL
*S**    02 #WF-SELECTED(A131)       
*S***       
*S**  01 #SUBSCRIPTS    
*S**    02 #SUB2(P3)    
*S**    02 #AWARD-SUB(P3)           
*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-FORMAT(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 #STATUS-FUNCTION(A8)     
*S**    02 #STATUS-DECISION(A1)     
*S***       
*S*** Award transaction input file. 
*S**  01 #MAINT-HDR(L)  INIT<FALSE> 
*S**  01 WF-MAINTB-HDR  
*S**    02 HDR(A9)      INIT<'BATCH HDR'>       
*S**    02 BATCH-ID(A8) INIT<'PACKAGE'>         
*S**    02 USER-ID(A8)  INIT<'WFPKPAKB'>        
*S**    02 FAO(A2)      
*S**    02 AID-YEAR(A4) 
*S**    02 ACTIVATE(A1) 
*S**    02 DECISION(A1) INIT<'Y'>   
*S**    02 #FILLER1(A47)
*S**  01 REDEFINE WF-MAINTB-HDR     
*S**    02 WF-MAINTB(A80)           
*S**  01 #AWARD-HDR(L)  INIT<FALSE> 
*S**  01 WF-AWARDB-HDR  
*S**    02 SID(A9)      
*S**    02 AID-YEAR(A4) 
*S**    02 FAO(A2)      
*S**    02 FUND-ID(A9)  
*S**    02 ACTION-CODE(A2)          
*S**    02 AMOUNT(A9)   
*S**    02 #FILLER1(A45)
*S**  01 REDEFINE WF-AWARDB-HDR     
*S**    02 WF-AWARDB(A80)           
*S**  01 #LOGICALS      
*S**    02 #WROTE-AWARD-TRAN(L)     
*S**    02 #WROTE-AWARD-HDR(L)      
*S**    02 #WROTE-PACKAGING-HDR(L)  
*S***       
*S*** Award transaction file.       
*S**  01 AWARD-TRAN     
*S**    02 KEY-INFO     
*S**      03 WW-ST-SID(A9)          
*S**      03 WF-AID-YEAR(A4)        
*S**      03 WF-FAO(A2) 
*S**      03 WF-FUND-ID(A9)         
*S**      03 K-FILLER(A1)           
*S**      03 ACTION-CODE(A2)        
*S**      03 AMOUNT(A9) 
*S**      03 DIST-CODE(A1)          
*S**      03 K-FILLER2(A43)         
*S**  01 REDEFINE AWARD-TRAN        
*S**    02 HEADER-TRAN  
*S**      03 HEADER(A9) 
*S**      03 ID(A8)     
*S**      03 USER(A8)   
*S**      03 FAO(A2)    
*S**      03 AID-YEAR(A4)           
*S**      03 H-FILLER(A49)          
*S**    02 REDEFINE HEADER-TRAN     
*S**      03 BATCH-HEADER(A80)      
*S***       
*S**01 FUND-ROSTER-TRAN 
*S**  02 WW-ST-SID(A9)  
*S**  02 WF-AID-YEAR(A4)
*S**  02 WF-FAO(A2)     
*S**  02 WF-FUND-ID(A9) 
*S**  02 EST-FUND(A1)   
*S**  02 ACTION-CODE(A2)
*S**  02 AMOUNT(A9)     
*S**  02 REDEFINE AMOUNT
*S**    03 AMOUNT-N (N9)
*S**  02 DIST-CODE(A1)  
*S**  02 NAME(A35)      
*S**  02 K-FILLER2(A8)  
*S**01 REDEFINE FUND-ROSTER-TRAN    
*S**  02 FILLER(A80)    
*S***       
*S**01 DETAIL-LINE      
*S**  02 LAST-NAME(A20) 
*S**  02 FIRST-NAME(A20)
*S**  02 WW-ST-SID(A9)  
*S**  02 LINE-NO(N2)    
*S**  02 WF-AID-YEAR(A4)
*S**  02 WF-FAO(A2)     
*S**  02 STUDENT-PACKAGED(A1)       
*S**  02 PRINT-LINE(A79)
*S**01 REDEFINE DETAIL-LINE         
*S**  02 FILLER(A137)   
*S***       
*S*** Award table       
*S**  01 #AWARD-ARRAY   
*S**    02 WF-PM-AW1-OFF(N5)        
*S**    02 WF-PM-AW1-FUND(A2)       
*S**    02 WF-PM-AW1-ACCT(A12)      
*S**    02 WF-PM-AW1-STAT(A1)       
*S**    02 WF-PM-AW2-OFF(N5)        
*S**    02 WF-PM-AW2-FUND(A2)       
*S**    02 WF-PM-AW2-ACCT(A12)      
*S**    02 WF-PM-AW2-STAT(A1)       
*S**    02 WF-PM-AW3-OFF(N5)        
*S**    02 WF-PM-AW3-FUND(A2)       
*S**    02 WF-PM-AW3-ACCT(A12)      
*S**    02 WF-PM-AW3-STAT(A1)       
*S**    02 WF-PM-AW4-OFF(N5)        
*S**    02 WF-PM-AW4-FUND(A2)       
*S**    02 WF-PM-AW4-ACCT(A12)      
*S**    02 WF-PM-AW4-STAT(A1)       
*S**    02 WF-PM-AW5-OFF(N5)        
*S**    02 WF-PM-AW5-FUND(A2)       
*S**    02 WF-PM-AW5-ACCT(A12)      
*S**    02 WF-PM-AW5-STAT(A1)       
*S**    02 WF-PM-AW6-OFF(N5)        
*S**    02 WF-PM-AW6-FUND(A2)       
*S**    02 WF-PM-AW6-ACCT(A12)      
*S**    02 WF-PM-AW6-STAT(A1)       
*S**    02 WF-PM-AW7-OFF(N5)        
*S**    02 WF-PM-AW7-FUND(A2)       
*S**    02 WF-PM-AW7-ACCT(A12)      
*S**    02 WF-PM-AW7-STAT(A1)       
*S**    02 WF-PM-AW8-OFF(N5)        
*S**    02 WF-PM-AW8-FUND(A2)       
*S**    02 WF-PM-AW8-ACCT(A12)      
*S**    02 WF-PM-AW8-STAT(A1)       
*S**    02 WF-PM-AW9-OFF(N5)        
*S**    02 WF-PM-AW9-FUND(A2)       
*S**    02 WF-PM-AW9-ACCT(A12)      
*S**    02 WF-PM-AW9-STAT(A1)       
*S**    02 WF-PM-AW10-OFF(N5)       
*S**    02 WF-PM-AW10-FUND(A2)      
*S**    02 WF-PM-AW10-ACCT(A12)     
*S**    02 WF-PM-AW10-STAT(A1)      
*S**  01 REDEFINE #AWARD-ARRAY      
*S**    02 #AWARD-OCCURS(10)        
*S**      03 WF-PM-AW-OFF(N5)       
*S**      03 WF-PM-AW-FUND(A2)      
*S**      03 WF-PM-AW-ACCT(A12)     
*S**      03 REDEFINE WF-PM-AW-ACCT 
*S**        04 WF-FU-ACCT(A11)      
*S**        04 WF-FU-DIST-CODE(A1)  
*S**      03 WF-PM-AW-STAT(A1)      
*S***       
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**EJECT OFF(1)        
*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**DEFINE PRINTER(5)   
*S**FORMAT(5) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S**DEFINE PRINTER(6)   
*S**FORMAT(6) 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 PACKAGING ***'   
*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 PACKAGING ***'   
*S**        71T 'Page' *PAGE-NUMBER(2)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        25T 'Students Selected but not Packaged'        
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 32T 'Aid Year:' ##DISP-AY           
*S**      / 37T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name'    
*S**  SKIP(2) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(3)   
*S**  WRITE(3) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER PACKAGING ***'   
*S**        71T 'Page' *PAGE-NUMBER(3)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        32T 'Students Packaged' 
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 32T 'Aid Year:' ##DISP-AY           
*S**      / 37T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name'    
*S**  SKIP(3) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(4)   
*S**  WRITE(4) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER PACKAGING  ***'  
*S**        71T 'Page' *PAGE-NUMBER(4)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        33T 'Fund Statistics'   
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'Fund ID       Name'    
*S**  SKIP(4) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(5)   
*S**  WRITE(5) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER PACKAGING ***'   
*S**        71T 'Page' *PAGE-NUMBER(5)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        25T 'Students Selected but not Packaged'        
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 32T 'Aid Year:' ##DISP-AY           
*S**      / 37T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name'    
*S**  SKIP(5) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(6)   
*S**  WRITE(6) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER PACKAGING ***'   
*S**        71T 'Page' *PAGE-NUMBER(6)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        32T 'Students Packaged' 
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 32T 'Aid Year:' ##DISP-AY           
*S**      / 37T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name'    
*S**  SKIP(6) 1         
*S**END-TOPPAGE         
*S***       
*S**ASSIGN ##PGM-ID = *PROGRAM      
*S**ASSIGN ##BYPASS-TRANSLATION = ' '           
*S**MOVE ALL ' ' TO #TAB-FIELDS     
*S**MOVE ALL '_' TO #79-UNDERSCORE  
*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 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**        'Distribution Code:' #INPUT-DIST-CODE /         
*S**        'Student detail:' #PRINT-STUDENT-DETAIL /       
*S**        'Fund detail:' #PRINT-FUND-DETAIL / 
*S**        'Print priority order report:' #PRINT-OPT-RPT / 
*S**        'Use prior Year Pell:' #PKG-USE-PRIOR-PELL /    
*S**        'Fund no:' #PKG-FUND-CT 
*S**  /*    
*S**  IF #PKG-FUND-CT = MASK(99) OR 
*S**     #PKG-FUND-CT = MASK(9)     
*S**    ASSIGN #FUND-NO = VAL(#PKG-FUND-CT)     
*S**  ELSE  
*S**    ASSIGN #FUND-NO = 1         
*S**  END-IF
*S**  /*    
*S**  IF #FUND-NO > 0 AND #INPUT-AID-YEAR > '2013'          
*S**    INPUT(AD=MITL'_' SG=ON IP=OFF ZP=OFF)   
*S**          'Fund 1:' #PKG-FUND-1 /           
*S**          'Fund 2:' #PKG-FUND-2 /           
*S**          'Fund 3:' #PKG-FUND-3 /           
*S**          'Fund 4:' #PKG-FUND-4 /           
*S**          'Fund 5:' #PKG-FUND-5 /           
*S**          'Fund 6:' #PKG-FUND-6 /           
*S**          'Fund 7:' #PKG-FUND-7 
*S**  END-IF
*S**  IF #FUND-NO > 7 AND #INPUT-AID-YEAR > '2013'          
*S**    INPUT(AD=MITL'_' SG=ON IP=OFF ZP=OFF)   
*S**          'Fund 8:' #PKG-FUND-8 /           
*S**          'Fund 9:' #PKG-FUND-9 /           
*S**          'Fund 10:' #PKG-FUND-10 /         
*S**          'Fund 11:' #PKG-FUND-11 /         
*S**          'Fund 12:' #PKG-FUND-12 /         
*S**          'Fund 13:' #PKG-FUND-13 /         
*S**          'Fund 14:' #PKG-FUND-14 /         
*S**  END-IF
*S**  IF #FUND-NO > 14 AND          
*S**     #FUND-NO < 21 AND          
*S**     #INPUT-AID-YEAR > '2013'   
*S**    INPUT(AD=MITL'_' SG=ON IP=OFF ZP=OFF)   
*S**          'Fund 15:' #PKG-FUND-15 /         
*S**          'Fund 16:' #PKG-FUND-16 /         
*S**          'Fund 17:' #PKG-FUND-17 /         
*S**          'Fund 18:' #PKG-FUND-18 /         
*S**          'Fund 19:' #PKG-FUND-19 /         
*S**          'Fund 20:' #PKG-FUND-20           
*S**  END-IF
*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***       
*S**IF *DEVICE = 'BATCH' THEN       
*S**  SET CONTROL 'D' /* Set delimiter mode for batch input 
*S**END-IF  
*S**MOVE EDITED *TIMX(EM=MMDDHHII) TO #INPUT-BATCH-ID       
*S***       
*S*************************************************************************         
*S***       
*S*** Load parameters   
*S**MOVE #PRINT-STUDENT-DETAIL TO #DEBUG-DET    
*S**IF #PRINT-STUDENT-DETAIL = ' '  
*S**  ASSIGN #DEBUG-DET = '2' /* Default Student detail (all funds)     
*S**END-IF  
*S**IF #PRINT-FUND-DETAIL = ' '     
*S**  ASSIGN #PRINT-FUND-DETAIL = '1' /* Default Fund roster detail off 
*S**END-IF  
*S**IF #PRINT-OPT-RPT = ' '         
*S**  ASSIGN #PRINT-OPT-RPT = 'N'       /* Default priority report off  
*S**END-IF  
*S**IF #PRINT-OPT-RPT = 'Y'         
*S**  ASSIGN #PRINT-PRIORITY-REPORT = TRUE      
*S**ELSE    
*S**  ASSIGN #PRINT-PRIORITY-REPORT = FALSE     
*S**END-IF  
*S**/*      
*S**/* Override Pell EFC to Pell SAI
*S**IF ##AID-YEAR > '2024'          
*S**  ASSIGN #PRT1-LINE.#PRT1-FC-LIT = 'Pell SAI: '         
*S**END-IF  
*S**/*      
*S**/* Load Fund IDs into WFPKFNDD array        
*S**MOVE #PKG-FUND-ID(*) TO WFPKFNDD.WF-FUND-ID(*)          
*S**/*      
*S**ASSIGN WFPKFNDD.RUNMODE = 'BATCH'           
*S***       
*S*** Load Fund info    
*S**CALLNAT 'WFPKFNDN'  
*S**         WW-GDA     
*S**         WFPKFNDD   
*S***       
*S**READ WORK FILE 1 WF-SEL         
*S**  /*    
*S**  /* Rejected packaging records 
*S**  ADD 1 TO #READ-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**  /* New student processing     
*S**  RESET WFPKPAKD    
*S**  ASSIGN #STUDENT-PACKAGED = FALSE          
*S**  ASSIGN WFPKPAKD.#USE-PRIOR-PELL = #PKG-USE-PRIOR-PELL 
*S**  RESET #PKG-PASS-TEMP          
*S**        #HOLD-TEMP1 
*S**        #HOLD-TEMP2 
*S**        #HOLD-TEMP3 
*S**        #HOLD-TEMP4 
*S**        #HOLD-TEMP5 
*S**  ASSIGN DETAIL-LINE.LINE-NO = 0
*S**  /*    
*S**  /* SID lookup     
*S**  ASSIGN ##FAO-ID = WF-SEL.#FAO 
*S**  ASSIGN ##AID-YEAR = #INPUT-AID-YEAR       
*S**  ASSIGN ##SID = WF-SEL.#SID    
*S**  PERFORM GET-STUDENT-KEY       
*S**  PERFORM GET-STUDENT-INFO      
*S**  /*    
*S**  /* Read student data          
*S**  /*    
*S**  /* Read WW-STUDENT data       
*S**  ASSIGN WWSTDNTD.WF-FAO = ##FAO-ID         
*S**  ASSIGN WWSTDNTD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-STATUS         
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ATTRIBUTES     
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ACAD-CAREER    
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-REG-TERM1      
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-REG-TERM2      
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-REG-TERM3      
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-REG-TERM4      
*S**  MOVE 'GET' TO WWAOBJ.#FUNCTION
*S**  PERFORM CALL-OBJECT-STUDENT   
*S**  /*    
*S**  /* Read WF-AIDYEAR data       
*S**  ASSIGN WFAIDYRD.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFAIDYRD.WF-AID-YEAR = ##AID-YEAR  
*S**  ASSIGN WFAIDYRD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  PERFORM CALL-OBJECT-AIDYEAR   
*S**  /*    
*S**  /* Invoke intermediate subprogram         
*S**  CALLNAT 'WFPKPAKN' WW-GDA     
*S**                     #STUDENT-PACKAGED      
*S**                     WFPKPAKD   
*S**                     WFPKFNDD   
*S**                     WWSTDNTD   
*S**                     WWSTDNTD-ID
*S**                     WFAIDYRD   
*S**                     WFAIDYRD-ID
*S**  /*    
*S**  /* If limited run, print report line      
*S**  PERFORM SETUP-PRINT-DETAIL    
*S**  IF #STUDENT-PACKAGED          
*S**    ADD 1 TO #SELECT-COUNTER    
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(3) / ##SID ##COMP-NAME 'Packaged'           
*S**    END-IF          
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    COMPRESS FULL ##SID  ##COMP-NAME  'Packaged'        
*S**     INTO DETAIL-LINE.PRINT-LINE
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    PERFORM PRINT-PACKAGE-DETAIL
*S**    /*  
*S**    /* Create transactions      
*S**    PERFORM WRITE-AWARD-TRANSACTION         
*S**    PERFORM WRITE-PACKAGING-TRANSACTION     
*S**    PERFORM WRITE-FUND-ROSTER-TRANSACTION   
*S***   PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  ELSE  
*S**    ADD 1 TO #NOSELECT-COUNTER  
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(2) / ##SID ##COMP-NAME 'Not packaged'       
*S**    END-IF          
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    COMPRESS FULL ##SID  ##COMP-NAME  'Not packaged'    
*S**     INTO DETAIL-LINE.PRINT-LINE
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    PERFORM PRINT-BYPASS-DETAIL 
*S***   PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  END-IF
*S**  /*    
*S**  /* Check for limited-run maximum          
*S**  IF #INPUT-LIMIT-COUNT > 0     
*S**    IF #SELECT-COUNTER GE #INPUT-LIMIT-COUNT
*S**      ESCAPE BOTTOM IMMEDIATE   
*S**    END-IF          
*S**  END-IF
*S**        
*S**END-WORK
*S***       
*S*** Issue final END TRANSACTION   
*S**PERFORM COMMIT-OR-BACKOUT       
*S***       
*S*** Print job statistics          
*S**COMPUTE #BYPASS-COUNTER = #STATUS-COUNTER + #NOSELECT-COUNTER       
*S**WRITE(1)
*S**    15T 'FINANCIER processing:' /           
*S**    17T 'Student records read:' 
*S**                        (I) 55T #READ-COUNTER (EM=Z,ZZZ,ZZ9) //     
*S**    17T 'Students packaged:'    
*S**                        (I) 55T #SELECT-COUNTER (EM=Z,ZZZ,ZZ9) /    
*S**    17T 'Packaging bypass:'     
*S**                        (I) 55T #BYPASS-COUNTER (EM=Z,ZZZ,ZZ9) /    
*S***       
*S*** Sort tentative awards for fund roster reporting       
*S**CLOSE WORK 5        
*S**READ WORK FILE 5 FUND-ROSTER-TRAN           
*S**END-ALL 
*S***       
*S**SORT BY FUND-ROSTER-TRAN.NAME USING         
*S**  FUND-ROSTER-TRAN.WW-ST-SID    
*S**  FUND-ROSTER-TRAN.WF-AID-YEAR  
*S**  FUND-ROSTER-TRAN.WF-FAO       
*S**  FUND-ROSTER-TRAN.WF-FUND-ID   
*S**  FUND-ROSTER-TRAN.EST-FUND     
*S**  FUND-ROSTER-TRAN.ACTION-CODE  
*S**  FUND-ROSTER-TRAN.AMOUNT       
*S**  FUND-ROSTER-TRAN.DIST-CODE    
*S***  FUND-ROSTER-TRAN.NAME        
*S**  FUND-ROSTER-TRAN.K-FILLER2    
*S** WRITE WORK 5 FUND-ROSTER-TRAN  
*S**END-SORT
*S***       
*S*** Print fund detail 
*S**FOR #SUB = 1 to 20  
*S**  DECIDE ON FIRST VALUE OF WFPKFNDD.WF-FU-REPL-FC(#SUB) 
*S**    VALUE 'N'       
*S**     ASSIGN #REPLACE-LIT = ' '  
*S**    VALUE 'S'       
*S**     ASSIGN #REPLACE-LIT = 'Replaces: SC'   
*S**    VALUE 'P'       
*S**     ASSIGN #REPLACE-LIT = 'Replaces: PC'   
*S**    VALUE 'F'       
*S**     ASSIGN #REPLACE-LIT = 'Replaces: FC'   
*S**    NONE
*S**     ASSIGN #REPLACE-LIT = ' '  
*S**  END-DECIDE        
*S**  IF WFPKFNDD.WF-FUND-ID(#SUB) <> ' '       
*S**    IF #SUB > 1     
*S**      NEWPAGE(4)    
*S**    END-IF          
*S**    WRITE(4)        
*S**     2T WFPKFNDD.WF-FUND-ID(#SUB)           
*S**     15T WFPKFNDD.WF-FU-NAME(#SUB)          
*S**     //  10T 'Meets Need: '     
*S**       51T WFPKFNDD.WF-FU-MEET-NEED(#SUB)   
*S**     / 10T 'Replace FC/SC/PC: ' 
*S**       40T #REPLACE-LIT         
*S**     / 10T 'Offer Limit: '      
*S**       40T WFPKFNDD.WF-FU-U-O-LIM(#SUB) (EM=ZZZ,ZZZ,ZZ9.99)         
*S**     // 10T 'Beginning balance (offers):'   
*S**       40T WFPKFNDD.BEGINNING-BAL(#SUB) (EM=ZZZ,ZZZ,ZZ9.99)         
*S**     / 10T 'Amount Offered: '   
*S**       40T WFPKFNDD.AWD-OFFERS(#SUB) (EM=ZZZ,ZZZ,ZZ9.99)
*S**     / 10T 'Ending Balance: '   
*S**       40T WFPKFNDD.ENDING-BAL(#SUB) (EM=ZZZ,ZZZ,ZZ9.99)
*S**     / 10T 'Students awarded:'  
*S**       43T WFPKFNDD.AWD-COUNT(#SUB) (EM=Z,ZZZ,ZZ9)      
*S**     // ' '         
*S**    /*  
*S**    /* Fund parameters          
*S**    WRITE(4)        
*S**      / 10T 'Fund parameters:'  
*S**      / ' '         
*S**    IF WFPKFNDD.FUND-PELL (#SUB) = 'Y'      
*S**      WRITE(4)      
*S**        13T 'Fund ID:'  WFPKFNDD.WF-FUND-ID (#SUB)      
*S**        43T 'Category:'  WFPKFNDD.FUND-CATEGORY (#SUB)  
*S**        70T 'Pell fund'         
*S**        / ' '       
*S**    ELSE
*S**      WRITE(4)      
*S**        13T 'Fund ID:'  WFPKFNDD.WF-FUND-ID (#SUB)      
*S**        43T 'Category:'  WFPKFNDD.FUND-CATEGORY (#SUB)  
*S**        / ' '       
*S**    END-IF          
*S**    IF WFPKFNDD.FUND-PKG (#SUB) = 'Y'       
*S**      WRITE(4)      
*S**        13T '(Fund considered this run)'    
*S**        / ' '       
*S**    ELSE
*S**      IF WFPKFNDD.FUND-PKG (#SUB) = 'F'     
*S**        WRITE(4)    
*S**          13T '(Fund NOT considered this run - no funds available)' 
*S**          / ' '     
*S**      ELSE          
*S**        WRITE(4)    
*S**          13T '(Fund NOT considered this run)'          
*S**          / ' '     
*S**      END-IF        
*S**    END-IF          
*S**    IF WFPKFNDD.FUND-PELL-ELIG (#SUB) = 'Y' 
*S**      WRITE(4)      
*S**        13T 'Student must be Pell eligible (per ISIR)'  
*S**    END-IF          
*S**    IF WFPKFNDD.FUND-EFC-CHECK (#SUB) = 'Y' 
*S**      IF ##AID-YEAR > '2024'    
*S**        WRITE(4)    
*S**          13T 'Minimum SAI:' WFPKFNDD.FUND-MIN-EFC (#SUB)           
*S**          43T 'Maximum SAI:' WFPKFNDD.FUND-MAX-EFC (#SUB)           
*S**      ELSE          
*S**        WRITE(4)    
*S**          13T 'Minimum EFC:' WFPKFNDD.FUND-MIN-EFC (#SUB)           
*S**          43T 'Maximum EFC:' WFPKFNDD.FUND-MAX-EFC (#SUB)           
*S**      END-IF        
*S**    END-IF          
*S**    IF WFPKFNDD.FUND-DOC (#SUB) NOT = ' '   
*S**      IF WFPKFNDD.FUND-DOC-EXCLUDE (#SUB) = 'Y'         
*S**        WRITE(4)    
*S**          13T 'Exclude Document:' WFPKFNDD.FUND-DOC (#SUB)          
*S**          43T '(excludes student from consideration'    
*S**      ELSE          
*S**        IF WFPKFNDD.FUND-DOC-STAT (#SUB) = ' '          
*S**          WRITE(4)  
*S**            13T 'Required document:' WFPKFNDD.FUND-DOC (#SUB)       
*S**            43T '(Document needs to exist)' 
*S**        ELSE        
*S**          COMPRESS '(Document status must = '           
*S**                WFPKFNDD.FUND-DOC-STAT (#SUB) ')' TO    
*S**                   #WRITE-LINE  
*S**          WRITE(4)  
*S**            13T 'Required document:' WFPKFNDD.FUND-DOC (#SUB)       
*S**            43T #WRITE-LINE     
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    IF WFPKFNDD.WF-FUND-ID (#SUB) = WFPKFNDD.PELL-FUND-ID           
*S**      WRITE(4) /    
*S**        13T '** = Estimated Pell (PELL-EST)'
*S**    END-IF          
*S**    /*  
*S**    /* Student detail (per fund)
*S**    IF #PRINT-FUND-DETAIL = '2' 
*S**      WRITE(4)      
*S**       // 7T  'ID ' 
*S**          20T 'Name '           
*S**          54T 'Amount'          
*S**          64T 'Tran'
*S**        / ' '       
*S**    END-IF          
*S**    IF #PRINT-FUND-DETAIL = '2' 
*S**      /*
*S**      /* Print fund roster      
*S**      CLOSE WORK 05 
*S**      READ WORK FILE 05 FUND-ROSTER-TRAN    
*S**        IF FUND-ROSTER-TRAN.WF-FUND-ID = WFPKFNDD.WF-FUND-ID(#SUB)  
*S**          MOVE RIGHT JUSTIFIED FUND-ROSTER-TRAN.AMOUNT  
*S**             TO #HOLD-AMOUNT    
*S**          IF FUND-ROSTER-TRAN.EST-FUND = '*'
*S**            MOVE EDITED #HOLD-AMOUNT-N (EM=ZZ,ZZ9.99) TO #HOLD-TEMP 
*S**            COMPRESS #HOLD-TEMP '**' INTO #HOLD-TEMP LEAVING NO SPACE           
*S**          ELSE      
*S**            MOVE EDITED #HOLD-AMOUNT-N (EM=ZZ,ZZ9.99) TO #HOLD-TEMP 
*S**          END-IF    
*S**          WRITE(4)  
*S**           4T FUND-ROSTER-TRAN.WW-ST-SID    
*S**           16T FUND-ROSTER-TRAN.NAME        
*S**           52T #HOLD-TEMP       
*S**           65T FUND-ROSTER-TRAN.ACTION-CODE 
*S**        END-IF      
*S**      END-WORK      
*S**    END-IF          
*S**  END-IF
*S**END-FOR 
*S***       
*S*** Sort and print student detail (name order)
*S**CLOSE WORK 6        
*S**READ WORK FILE 6 DETAIL-LINE    
*S**END-ALL 
*S***       
*S**SORT BY DETAIL-LINE.LAST-NAME   
*S**        DETAIL-LINE.FIRST-NAME  
*S**        DETAIL-LINE.WW-ST-SID   
*S**        DETAIL-LINE.LINE-NO     
*S** ASCENDING USING    
*S*** DETAIL-LINE.NAME  
*S*** DETAIL-LINE.WW-ST-SID         
*S*** DETAIL-LINE.LINE-NO           
*S**  DETAIL-LINE.WF-AID-YEAR       
*S**  DETAIL-LINE.WF-FAO
*S**  DETAIL-LINE.STUDENT-PACKAGED  
*S**  DETAIL-LINE.PRINT-LINE        
*S** WRITE WORK 7 DETAIL-LINE       
*S**END-SORT
*S**READ WORK FILE 07 DETAIL-LINE   
*S**  IF DETAIL-LINE.STUDENT-PACKAGED = 'Y'     
*S**    WRITE(6) DETAIL-LINE.PRINT-LINE         
*S**  ELSE  
*S**    WRITE(5) DETAIL-LINE.PRINT-LINE         
*S**  END-IF
*S**END-WORK
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-AIDYEAR       
*S*************************************************************************         
*S**  /*    
*S**  /* Call WF-AIDYEAR file object subprogram 
*S**  CALLNAT 'WFAIDYRO' WW-GDA     
*S**           WFAIDYRD 
*S**           WFAIDYRD-ID          
*S**           WFAIDYRR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-AIDYEAR       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-STUDENT       
*S*************************************************************************         
*S**  /*    
*S**  /* Call WW-STUDENT file 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*************************************************************************         
*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 #FR-WRITE-COUNTER        
*S**END-SUBROUTINE /* COMMIT-OR-BACKOUT         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PRINT-BYPASS-DETAIL       
*S*************************************************************************         
*S**  /*    
*S**  /* Print bypass detail        
*S**  SEPARATE #PKG-PASS-TEMP INTO #HOLD-TEMP1 #HOLD-TEMP2  
*S**     WITH DELIMITER '|'         
*S**  SEPARATE #HOLD-TEMP2 INTO #HOLD-TEMP2 #HOLD-TEMP3     
*S**     WITH DELIMITER '#'         
*S**  SEPARATE #HOLD-TEMP3 INTO #HOLD-TEMP3 #HOLD-TEMP4     
*S**     WITH DELIMITER '\'         
*S**  IF #DEBUG-DET = '3'           
*S**    COMPRESS ##ST-STATUS '; ' TO #WRITE-LINE-2 LEAVING NO SPACE     
*S**    COMPRESS #WRITE-LINE-2 #HOLD-TEMP1 TO #WRITE-LINE-2 
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(2) 11T #WRITE-LINE-2
*S**    END-IF          
*S**    COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE     
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    IF #HOLD-TEMP2 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP2 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(2) 11T #WRITE-LINE-2        
*S**        ELSE        
*S**          WRITE(2) 11T #WRITE-LINE-2 /      
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**    END-IF          
*S**    IF #HOLD-TEMP3 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP3 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(2) 11T #WRITE-LINE-2        
*S**        ELSE        
*S**          WRITE(2) 11T #WRITE-LINE-2 /      
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**      IF ##AID-YEAR > '2026'    
*S**        IGNORE      
*S**      ELSE          
*S**        MOVE ' ' TO DETAIL-LINE.PRINT-LINE  
*S**        PERFORM WRITE-PRINT-DETAIL-FILE     
*S**      END-IF        
*S**    END-IF          
*S**    IF #HOLD-TEMP4 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP4 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(2) 11T #WRITE-LINE-2 /      
*S**        ELSE        
*S**          WRITE(2) 11T #WRITE-LINE-2        
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**      MOVE ' ' TO DETAIL-LINE.PRINT-LINE    
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**    END-IF          
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      IF ##AID-YEAR > '2024'    
*S**        IF #BLANK-SAI = 'Y'     
*S**          WRITE(2) 1T  'Pell COA:' #PELL-COA
*S**          18T 'Pell Need:' #PELL-NEED       
*S**          36T 'Pell SAI:  '  ' BLANK'       
*S**        ELSE        
*S**          WRITE(2) 1T  'Pell COA:' #PELL-COA
*S**          18T 'Pell Need:' #PELL-NEED       
*S**          36T 'Pell SAI:  ' #FED-EFC(EM=ZZZZZ9-)        
*S**        END-IF      
*S**      ELSE          
*S**        WRITE(2) 1T  'Pell COA:' #PELL-COA  
*S**                 18T 'Pell Need:' #PELL-NEED
*S**                 36T 'Pell EFC:  ' #FED-EFC 
*S**      END-IF        
*S**    END-IF          
*S**    MOVE EDITED #PELL-COA (EM=ZZZZZ9) TO #PRT1-LINE.#PRT1-COA       
*S**    MOVE EDITED WFPKPAKD.#PELL-NEED (EM=ZZZZ9) TO #PRT1-LINE.#PRT1-NEED         
*S**    MOVE EDITED WFPKPAKD.#FED-EFC (EM=ZZZZZ9-) TO #PRT1-LINE.#PRT1-FC           
*S**    IF #BLANK-SAI = 'Y'         
*S**      MOVE ' BLANK' TO #PRT1-LINE.#PRT1-FC  
*S**    END-IF          
*S**    MOVE #PRT1-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(2) 1T  '     COA:' #COA         
*S**               18T '     Need:' WFPKPAKD.#NEED          
*S**               42T 'FC:  ' WFPKPAKD.#FC (EM=ZZZZZ9-)    
*S**               56T 'PC:' WFPKPAKD.#PC       
*S**               67T 'SC:' WFPKPAKD.#SC /     
*S**    END-IF          
*S**    MOVE EDITED #COA (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-COA
*S**    MOVE EDITED WFPKPAKD.#NEED (EM=ZZZZ9) TO #PRT2-LINE.#PRT2-NEED  
*S**    MOVE EDITED WFPKPAKD.#FC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-FC     
*S**    MOVE EDITED WFPKPAKD.#PC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-PC     
*S**    MOVE EDITED WFPKPAKD.#SC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-SC     
*S**    MOVE #PRT2-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  END-IF
*S**  FOR #AWARD-SUB = 1 TO 20      
*S**    IF WFPKPAKD.FUND-ID(#AWARD-SUB) NOT = ' '           
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        WRITE(2) 8T WFPKPAKD.FUND-ID(#AWARD-SUB)        
*S**                    #DET-LINE(#AWARD-SUB)   
*S**      END-IF        
*S**      COMPRESS FULL #6T WFPKPAKD.FUND-ID(#AWARD-SUB)    
*S**                  #DET-LINE(#AWARD-SUB)     
*S**       INTO DETAIL-LINE.PRINT-LINE          
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**    END-IF          
*S**  END-FOR           
*S**  IF #DEBUG-DET = '3'           
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(2) / 1T 'Remaining ======>'     
*S**               18T '     Need:' WFPKPAKD.#NEED          
*S**               42T 'FC:  ' WFPKPAKD.#FC     
*S**               56T 'PC:' WFPKPAKD.#PC       
*S**               67T 'SC:' WFPKPAKD.#SC /     
*S**    END-IF          
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE EDITED WFPKPAKD.#NEED (EM=ZZZZ9) TO #PRT3-LINE.#PRT3-NEED  
*S**    MOVE EDITED WFPKPAKD.#FC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-FC     
*S**    MOVE EDITED WFPKPAKD.#PC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-PC     
*S**    MOVE EDITED WFPKPAKD.#SC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-SC     
*S**    MOVE #PRT3-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  END-IF
*S**  IF #PRINT-PRIORITY-REPORT     
*S**    WRITE(2) '_'(79)
*S**  END-IF
*S**  COMPRESS #79-UNDERSCORE       
*S**   INTO DETAIL-LINE.PRINT-LINE  
*S**    LEAVING NO SPACE
*S**  PERFORM WRITE-PRINT-DETAIL-FILE           
*S**END-SUBROUTINE /* PRINT-BYPASS-DETAIL       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PRINT-PACKAGE-DETAIL      
*S*************************************************************************         
*S**  /*    
*S**  /* Print package detail       
*S**  SEPARATE #PKG-PASS-TEMP INTO #HOLD-TEMP1 #HOLD-TEMP2  
*S**     WITH DELIMITER '|'         
*S**  SEPARATE #HOLD-TEMP2 INTO #HOLD-TEMP2 #HOLD-TEMP3     
*S**     WITH DELIMITER '#'         
*S**  SEPARATE #HOLD-TEMP3 INTO #HOLD-TEMP3 #HOLD-TEMP4 #HOLD-TEMP5     
*S**     WITH DELIMITER '\'         
*S**  IF #DEBUG-DET = '3'           
*S**    COMPRESS ##ST-STATUS '; ' TO #WRITE-LINE-2 LEAVING NO SPACE     
*S**    COMPRESS #WRITE-LINE-2 #HOLD-TEMP1 TO #WRITE-LINE-2 
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(3) 11T #WRITE-LINE-2
*S**    END-IF          
*S**    COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE     
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    IF #HOLD-TEMP2 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP2 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(3) 11T #WRITE-LINE-2        
*S**        ELSE        
*S**          WRITE(3) 11T #WRITE-LINE-2 /      
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**    END-IF          
*S**    IF #HOLD-TEMP3 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP3 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(3) 11T #WRITE-LINE-2        
*S**        ELSE        
*S**          WRITE(3) 11T #WRITE-LINE-2 /      
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**      IF ##AID-YEAR > '2026'    
*S**        IGNORE      
*S**      ELSE          
*S**        MOVE ' ' TO DETAIL-LINE.PRINT-LINE  
*S**        PERFORM WRITE-PRINT-DETAIL-FILE     
*S**      END-IF        
*S**    END-IF          
*S**    IF #HOLD-TEMP4 NOT = ' '    
*S**      COMPRESS #HOLD-TEMP4 TO #WRITE-LINE-2 
*S**          LEAVING NO SPACE      
*S**      IF #PRINT-PRIORITY-REPORT 
*S**        IF ##AID-YEAR > '2026'  
*S**          WRITE(3) 11T #WRITE-LINE-2 /      
*S**        ELSE        
*S**          WRITE(3) 11T #WRITE-LINE-2        
*S**        END-IF      
*S**      END-IF        
*S**      COMPRESS FULL #9T #WRITE-LINE-2 INTO DETAIL-LINE.PRINT-LINE   
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**      MOVE ' ' TO DETAIL-LINE.PRINT-LINE    
*S**      PERFORM WRITE-PRINT-DETAIL-FILE       
*S**    END-IF          
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      IF ##AID-YEAR > '2024'    
*S**        IF #BLANK-SAI = 'Y'     
*S**          WRITE(3) 1T  'Pell COA:' #PELL-COA
*S**          18T 'Pell Need:' #PELL-NEED       
*S**          36T 'Pell SAI:  '     
*S**          47T ' BLANK'          
*S**        ELSE        
*S**          WRITE(3) 1T  'Pell COA:' #PELL-COA
*S**          18T 'Pell Need:' #PELL-NEED       
*S**          36T 'Pell SAI: '      
*S**          50T  #FED-EFC(EM=ZZZZZ9-)         
*S**        END-IF      
*S**      ELSE          
*S**        WRITE(3) 1T  'Pell COA:' #PELL-COA  
*S**                 18T 'Pell Need:' #PELL-NEED
*S**                 36T 'Pell EFC:  ' #FED-EFC 
*S**      END-IF        
*S**    END-IF          
*S**    MOVE EDITED #PELL-COA (EM=ZZZZZ9) TO #PRT1-LINE.#PRT1-COA       
*S**    MOVE EDITED WFPKPAKD.#PELL-NEED (EM=ZZZZ9) TO #PRT1-LINE.#PRT1-NEED         
*S**    MOVE EDITED WFPKPAKD.#FED-EFC (EM=ZZZZZ9-) TO #PRT1-LINE.#PRT1-FC           
*S**    IF #BLANK-SAI = 'Y'         
*S**      MOVE ' BLANK' TO #PRT1-LINE.#PRT1-FC  
*S**    END-IF          
*S**    MOVE #PRT1-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(3) 1T  '     COA:' #COA         
*S**               18T '     Need:' WFPKPAKD.#NEED          
*S**               42T 'FC:'        
*S**               50T  WFPKPAKD.#FC (EM=ZZZZZ9-)           
*S**               57T 'PC:' WFPKPAKD.#PC       
*S**               68T 'SC:' WFPKPAKD.#SC /     
*S**    END-IF          
*S**    MOVE EDITED #COA (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-COA
*S**    MOVE EDITED WFPKPAKD.#NEED (EM=ZZZZ9) TO #PRT2-LINE.#PRT2-NEED  
*S**    MOVE EDITED WFPKPAKD.#FC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-FC     
*S**    MOVE EDITED WFPKPAKD.#PC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-PC     
*S**    MOVE EDITED WFPKPAKD.#SC (EM=ZZZZZ9) TO #PRT2-LINE.#PRT2-SC     
*S**    MOVE #PRT2-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  END-IF
*S**  MOVE 0 TO #TOTAL-PACKAGE      
*S**  FOR #AWARD-SUB = 1 TO 20      
*S**    IF WFPKPAKD.FUND-ID(#AWARD-SUB) NOT = ' '           
*S**      COMPUTE #TOTAL-PACKAGE = #TOTAL-PACKAGE +         
*S**                               WFPKPAKD.AWARD-AMT(#AWARD-SUB)       
*S**      IF #DEBUG-DET = '1'       
*S**        IF WFPKPAKD.AWARD-AMT(#AWARD-SUB) > 0           
*S**          IF #PRINT-PRIORITY-REPORT         
*S**            WRITE(3) 5T WFPKPAKD.FUND-ID(#AWARD-SUB)    
*S**                         #DET-LINE(#AWARD-SUB)          
*S**          END-IF    
*S**          COMPRESS FULL #3T WFPKPAKD.FUND-ID(#AWARD-SUB)
*S**                      #DET-LINE(#AWARD-SUB) 
*S**           INTO DETAIL-LINE.PRINT-LINE      
*S**          PERFORM WRITE-PRINT-DETAIL-FILE   
*S**        END-IF      
*S**      END-IF        
*S**      IF #DEBUG-DET = '2'       
*S**        IF #PRINT-PRIORITY-REPORT           
*S**          WRITE(3) 5T WFPKPAKD.FUND-ID(#AWARD-SUB)      
*S**                       #DET-LINE(#AWARD-SUB)
*S**        END-IF      
*S**        COMPRESS FULL #3T WFPKPAKD.FUND-ID(#AWARD-SUB)  
*S**                    #DET-LINE(#AWARD-SUB)   
*S**         INTO DETAIL-LINE.PRINT-LINE        
*S**        PERFORM WRITE-PRINT-DETAIL-FILE     
*S**      END-IF        
*S**      IF #DEBUG-DET = '3'       
*S**        IF #PRINT-PRIORITY-REPORT           
*S**          WRITE(3) 5T WFPKPAKD.FUND-ID(#AWARD-SUB)      
*S**                       #DET-LINE(#AWARD-SUB)
*S**        END-IF      
*S**        COMPRESS FULL #3T WFPKPAKD.FUND-ID(#AWARD-SUB)  
*S**                    #DET-LINE(#AWARD-SUB)   
*S**         INTO DETAIL-LINE.PRINT-LINE        
*S**        PERFORM WRITE-PRINT-DETAIL-FILE     
*S**        IF WFPKPAKD.AWARD-AMT(#AWARD-SUB) > 0           
*S**          IF #PRINT-PRIORITY-REPORT         
*S**            WRITE(3) 10T 'Meets need: '     
*S**                     24T WFPKFNDD.WF-FU-MEET-NEED(#AWARD-SUB)       
*S**                    33T 'Remaining Need:' WFPKPAKD.#RUN-NEED(#AWARD-SUB)        
*S**          END-IF    
*S**          MOVE WFPKFNDD.WF-FU-MEET-NEED(#AWARD-SUB) TO  
*S**                      #PRT5-LINE.#PRT5-MEET-NEED        
*S**          MOVE EDITED WFPKPAKD.#RUN-NEED(#AWARD-SUB) (EM=ZZZZ9) TO  
*S**                      #PRT5-LINE.#PRT5-REM-NEED         
*S**          MOVE #PRT5-LINE-R TO DETAIL-LINE.PRINT-LINE   
*S**          PERFORM WRITE-PRINT-DETAIL-FILE   
*S**          DECIDE ON FIRST VALUE OF WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB)           
*S**            VALUE 'N'           
*S**              IF #PRINT-PRIORITY-REPORT     
*S**                WRITE(3) 10T 'Replaces FC: '
*S**                             WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) /   
*S**              END-IF
*S**              MOVE WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) TO
*S**                          #PRT6-LINE.#PRT6-REPL-FC      
*S**              MOVE #PRT6-LINE-R TO DETAIL-LINE.PRINT-LINE           
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**              MOVE ' ' TO DETAIL-LINE.PRINT-LINE        
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**            VALUE 'S'           
*S**              IF #PRINT-PRIORITY-REPORT     
*S**                WRITE(3) 10T 'Replaces FC: '
*S**                             WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB)     
*S**                         33T 'Remaining FC: '           
*S**                             WFPKPAKD.#RUN-FC(#AWARD-SUB)           
*S**                        60T 'Remaining SC:' WFPKPAKD.#RUN-SC(#AWARD-SUB)        
*S**                         /      
*S**              END-IF
*S**              MOVE WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) TO
*S**                          #PRT7-LINE.#PRT7-REPL-FC      
*S**              MOVE EDITED WFPKPAKD.#RUN-FC(#AWARD-SUB) (EM=ZZZZZ9) TO           
*S**                          #PRT7-LINE.#PRT7-RUN-FC       
*S**              MOVE EDITED WFPKPAKD.#RUN-SC(#AWARD-SUB) (EM=ZZZZZ9) TO           
*S**                          #PRT7-LINE.#PRT7-RUN-SC       
*S**              MOVE #PRT7-LINE-R TO DETAIL-LINE.PRINT-LINE           
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**              MOVE ' ' TO DETAIL-LINE.PRINT-LINE        
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**            VALUE 'P'           
*S**              IF #PRINT-PRIORITY-REPORT     
*S**                WRITE(3) 10T 'Replaces FC: '
*S**                             WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB)     
*S**                         33T 'Remaining FC: '           
*S**                             WFPKPAKD.#RUN-FC(#AWARD-SUB)           
*S**                        60T 'Remaining PC:' WFPKPAKD.#RUN-PC(#AWARD-SUB)        
*S**                         /      
*S**              END-IF
*S**              MOVE WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) TO
*S**                          #PRT8-LINE.#PRT8-REPL-FC      
*S**              MOVE EDITED WFPKPAKD.#RUN-FC(#AWARD-SUB) (EM=ZZZZZ9) TO           
*S**                          #PRT8-LINE.#PRT8-RUN-FC       
*S**              MOVE EDITED WFPKPAKD.#RUN-PC(#AWARD-SUB) (EM=ZZZZZ9) TO           
*S**                          #PRT8-LINE.#PRT8-RUN-PC       
*S**              MOVE #PRT8-LINE-R TO DETAIL-LINE.PRINT-LINE           
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**              MOVE ' ' TO DETAIL-LINE.PRINT-LINE        
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**            VALUE 'F'           
*S**              IF #PRINT-PRIORITY-REPORT     
*S**                WRITE(3) 10T 'Replaces FC: '
*S**                             WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB)     
*S**                         33T 'Remaining FC: '           
*S**                             WFPKPAKD.#RUN-FC(#AWARD-SUB)           
*S**                         /      
*S**              END-IF
*S**              MOVE WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) TO
*S**                          #PRT9-LINE.#PRT9-REPL-FC      
*S**              MOVE EDITED WFPKPAKD.#RUN-FC(#AWARD-SUB) (EM=ZZZZZ9) TO           
*S**                          #PRT9-LINE.#PRT9-RUN-FC       
*S**              MOVE #PRT9-LINE-R TO DETAIL-LINE.PRINT-LINE           
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**              MOVE ' ' TO DETAIL-LINE.PRINT-LINE        
*S**              PERFORM WRITE-PRINT-DETAIL-FILE           
*S**            NONE    
*S**              IF #PRINT-PRIORITY-REPORT     
*S**                WRITE(3) 10T 'Replaces FC: '
*S**                             WFPKFNDD.WF-FU-REPL-FC(#AWARD-SUB) /   
*S**              END-IF
*S**          END-DECIDE
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-FOR           
*S**  IF #DEBUG-DET = '3'           
*S**    IF #PRINT-PRIORITY-REPORT   
*S**      WRITE(3) / 1T 'Remaining ======>'     
*S**               18T '     Need:' WFPKPAKD.#REM-NEED      
*S**               42T 'FC:'        
*S**               49T  WFPKPAKD.#REM-FC (EM=ZZZZZ9-)       
*S**               56T 'PC:'        
*S**               60T  WFPKPAKD.#REM-PC        
*S**               67T 'SC:'        
*S**               71T  WFPKPAKD.#REM-SC /      
*S**    END-IF          
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE EDITED WFPKPAKD.#REM-NEED (EM=ZZZZ9) TO #PRT3-LINE.#PRT3-NEED          
*S**    MOVE EDITED WFPKPAKD.#REM-FC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-FC 
*S**    MOVE EDITED WFPKPAKD.#REM-PC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-PC 
*S**    MOVE EDITED WFPKPAKD.#REM-SC (EM=ZZZZZ9) TO #PRT3-LINE.#PRT3-SC 
*S**    MOVE #PRT3-LINE-R TO DETAIL-LINE.PRINT-LINE         
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**    MOVE ' ' TO DETAIL-LINE.PRINT-LINE      
*S**    PERFORM WRITE-PRINT-DETAIL-FILE         
*S**  END-IF
*S**  /*    
*S**  IF #PRINT-PRIORITY-REPORT     
*S**    WRITE(3) / 5T 'Total package amt:'  #TOTAL-PACKAGE (EM=ZZ,ZZ9.99)           
*S**  END-IF
*S**  MOVE ' ' TO DETAIL-LINE.PRINT-LINE        
*S**  PERFORM WRITE-PRINT-DETAIL-FILE           
*S**  MOVE EDITED #TOTAL-PACKAGE (EM=ZZ,ZZ9.99) TO #PRT4-LINE.#PRT4-PKG-AMT         
*S**  MOVE #PRT4-LINE-R TO DETAIL-LINE.PRINT-LINE           
*S**  PERFORM WRITE-PRINT-DETAIL-FILE           
*S**  IF #PRINT-PRIORITY-REPORT     
*S**    WRITE(3) '_'(79)
*S**  END-IF
*S**  COMPRESS #79-UNDERSCORE       
*S**   INTO DETAIL-LINE.PRINT-LINE  
*S**    LEAVING NO SPACE
*S**  PERFORM WRITE-PRINT-DETAIL-FILE           
*S**  /*    
*S**END-SUBROUTINE /* PRINT-PACKAGE-DETAIL      
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE SETUP-PRINT-DETAIL        
*S*************************************************************************         
*S**  /*    
*S**  /* Print bypass detail        
*S** MOVE ##STATUS TO #PASS-TEMP    
*S** MOVE 'WWSTDNTD.WW-ST-ST-STATUS' TO #PASS-KEY           
*S** PERFORM GET-VALUE-TRANSLATION #PASS-KEY #PASS-TEMP     
*S** MOVE #PASS-TEMP TO ##ST-STATUS 
*S**  RESET #DET-LINE(*)
*S**  FOR #AWARD-SUB = 1 TO 20      
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFPKPAKD.#REJECT-RSN(#AWARD-SUB) NOT = ' '   
*S**        DECIDE ON FIRST VALUE OF #REJECT-RSN(#AWARD-SUB)
*S**          VALUE #FUND-PREV-AWARDED          
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund previously awarded'    
*S**          VALUE #NOT-PELL-ELIGIBLE          
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not Pell eligible'          
*S**          VALUE #HAS-BLANK-SAI  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Blank SAI'      
*S**          VALUE #FUND-NOT-FOUND 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund not found' 
*S**          VALUE #FUND-FROZEN    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund frozen'    
*S**          VALUE #FUND-ALLOW     
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund not allowed'           
*S**          VALUE #FUND-STATUS    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund status'    
*S**          VALUE #DEGREE-REQ     
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Degree requirement'         
*S**          VALUE #PAR-ED-LEVEL   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Parent Ed level'
*S**          VALUE #PELL-INDEX-ERR 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Pell index > fund index max'
*S**          VALUE #EFC-CHECK-ERR  
*S**            IF ##AID-YEAR > '2024'          
*S**              ASSIGN #DET-LINE(#AWARD-SUB) =
*S**                           ': SAI out of range'         
*S**            ELSE    
*S**              ASSIGN #DET-LINE(#AWARD-SUB) =
*S**                           ': EFC out of range'         
*S**            END-IF  
*S**          VALUE #FUND-MIN-ERR   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund min not met'           
*S**          VALUE #FUND-LIMIT-ERR 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund limit exceeded'        
*S**          VALUE #NO-SECOND-DEGREE           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Second degree'  
*S**          VALUE #FUND-MAX-ERR   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': No Fund maximum'
*S**          VALUE #NO-NEED        
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': No remaining need'          
*S**          VALUE #INVALID-ENR    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid enrollment'         
*S**          VALUE #INVALID-CLASS  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid class'  
*S**          VALUE #INVALID-DEGREE 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid degree' 
*S**          VALUE #INVALID-COLLEGE
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid college'
*S**          VALUE #INVALID-MAJOR  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid major'  
*S**          VALUE #INVALID-YR-COL 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid year in college'    
*S**          VALUE #INVALID-DEP    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid dep status'         
*S**          VALUE #NO-INT         
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not interested in work'     
*S**          VALUE #NO-LOAN        
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not interested in loan'     
*S**          VALUE #PACKAGE-FUND   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Fund not set for packaging' 
*S**          VALUE #REQ-NOT-FOUND  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Requirement not met'        
*S**          VALUE #REQ-FOUND      
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Invalid Requirement'        
*S**          VALUE #PROG-NOT-FOUND 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Category not found'         
*S**          VALUE #STATE-RES      
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': State residency'
*S**          VALUE #GPA-THRESHOLD-ERR          
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': GPA threshold'  
*S**          VALUE #NEED-THRESHOLD-ERR         
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Need threshold' 
*S**          VALUE #FC-THRESHOLD-ERR           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': FC threshold'   
*S**          VALUE #INCOME-THRESHOLD-ERR       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Income threshold'           
*S**          VALUE #APPROVED-PROGRAM-ERR       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not in approved program'    
*S**          VALUE #SNAPSHOT-ERR   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Snapshot error' 
*S**          VALUE #INVALID-REQ    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Reqmt not allowed'          
*S**          VALUE #NUM-AWARDS     
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Number of awards'           
*S**          VALUE #DATE-PASSED    
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Cutoff date passed'         
*S**          VALUE #ALTERNATE-FUND 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Alternate fund awarded'     
*S**          VALUE #DEP-STATUS-ERR 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Dependency status'          
*S**          VALUE #NOT-ELIGIBLE   
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not eligible'   
*S**          VALUE #FISAP-INCOME-ERR           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': FISAP income limit'         
*S**          VALUE #ANNUAL-LIMIT-ERR           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Annual limit reached'       
*S**          VALUE #LIFETIME-LIMIT-ERR         
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Lifetime limit reached'     
*S**          VALUE #CIT-ERR        
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Citizenship inappropriate'  
*S**          VALUE #NOT-GRAD-STDNT 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not a graduate student'     
*S**          VALUE #NOT-DEP-STDNT  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Not a dependent student'    
*S**          VALUE #NO-ISIR        
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': No ISIR found'  
*S**          VALUE #NO-FUNDS       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': No fund limit defined'      
*S**          VALUE #NO-PELL-AWARD  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': No Pell awarded'
*S**          VALUE #PELL-LEU-LIMIT 
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Pell LEU limit' 
*S**          VALUE #GR-WITH-BACH-DEG-ERR       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Graduate with bach degree'  
*S**          VALUE #M2-BUDGET-ERR  
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': M2 Budget = 0'  
*S**          VALUE #DL-SUB-LIMIT-ERR           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': DL Sub limit '  
*S**          VALUE #MAX-SAI-THRESHOLD          
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Max SAI Threshold'          
*S**          VALUE #LIFETIME-MAX-ERR           
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Lifetime max reached'       
*S**          VALUE #CMB-LIMIT-GRAD-ERR-C       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Grad Loan limit - Exceeded' 
*S**          VALUE #CMB-LIMIT-GRAD-ERR-E       
*S**            ASSIGN #DET-LINE(#AWARD-SUB) =  
*S**                         ': Grad Loan limit - Close or Equal'       
*S**          NONE      
*S**            COMPRESS 'No reject message:'   
*S**                      WFPKPAKD.#REJECT-RSN(#AWARD-SUB)  
*S**                 TO #DET-LINE(#AWARD-SUB)   
*S**        END-DECIDE  
*S**      WHEN WFPKPAKD.AWARD-AMT(#AWARD-SUB) > 0           
*S**        MOVE EDITED WFPKPAKD.AWARD-AMT(#AWARD-SUB) (EM=ZZZ,ZZ9.99)  
*S**             TO #AWD-DISP       
*S**        IF WFPKFNDD.WF-FUND-ID(#AWARD-SUB) = PELL-FUND-ID AND       
*S**           WFPKPAKD.#USE-EST-PELL = 'Y'     
*S**          COMPRESS 'Awarded:' #AWD-DISP '** (PELL-EST)' 
*S**                   TO #DET-LINE(#AWARD-SUB) 
*S**        ELSE        
*S**          COMPRESS 'Awarded:' #AWD-DISP     
*S**                   TO #DET-LINE(#AWARD-SUB) 
*S**        END-IF      
*S**      WHEN NONE     
*S**        MOVE EDITED WFPKPAKD.AWARD-AMT(#AWARD-SUB) (EM=ZZZ,ZZ9.99)  
*S**             TO #AWD-DISP       
*S**        COMPRESS 'No award:' #AWD-DISP      
*S**                 TO #DET-LINE(#AWARD-SUB)   
*S**        IGNORE      
*S**    END-DECIDE      
*S**  END-FOR           
*S**END-SUBROUTINE /* SETUP-PRINT-DETAIL        
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-AWARD-TRANSACTION   
*S*************************************************************************         
*S**  /*    
*S**  /* Write award transactions   
*S**  IF NOT #WROTE-AWARD-HDR       
*S**    ASSIGN #WROTE-AWARD-HDR = TRUE          
*S**    ASSIGN AWARD-TRAN.HEADER = 'BATCH HDR'  
*S**    ASSIGN AWARD-TRAN.ID = #INPUT-BATCH-ID  
*S**    ASSIGN AWARD-TRAN.USER = 'WFPKPAKB'     
*S**    ASSIGN AWARD-TRAN.FAO = ##FAO-ID        
*S**    ASSIGN AWARD-TRAN.AID-YEAR = ##AID-YEAR 
*S**    ADD 1 TO #AWD-WRITE-COUNTER 
*S**    WRITE WORK 3 AWARD-TRAN     
*S**  END-IF
*S**  FOR #AWARD-SUB = 1 to 20      
*S**    IF WFPKPAKD.AWARD-AMT(#AWARD-SUB) > 0   
*S**      RESET AWARD-TRAN          
*S**      ASSIGN #WROTE-AWARD-TRAN = TRUE       
*S**      ASSIGN AWARD-TRAN.WW-ST-SID = WWSTDNTD.WW-ST-SID  
*S**      ASSIGN AWARD-TRAN.WF-AID-YEAR = ##AID-YEAR        
*S**      ASSIGN AWARD-TRAN.WF-FAO = ##FAO-ID   
*S**      IF WFPKFNDD.WF-FUND-ID(#AWARD-SUB) = PELL-FUND-ID AND         
*S**         WFPKPAKD.#USE-EST-PELL = 'Y'       
*S**        ASSIGN AWARD-TRAN.WF-FUND-ID = #ESTIMATED-PELL-FUND         
*S**      ELSE          
*S**        ASSIGN AWARD-TRAN.WF-FUND-ID = WFPKFNDD.WF-FUND-ID(#AWARD-SUB)          
*S**      END-IF        
*S**      ASSIGN AWARD-TRAN.ACTION-CODE = WFPKFNDD.FUND-OFFER(#AWARD-SUB)           
*S**      MOVE EDITED WFPKPAKD.AWARD-AMT(#AWARD-SUB) (EM=99999.99)      
*S**        TO AWARD-TRAN.AMOUNT    
*S**      IF #INPUT-DIST-CODE NE ' '
*S**        ASSIGN AWARD-TRAN.DIST-CODE = #INPUT-DIST-CODE  
*S**      ELSE          
*S**        ASSIGN AWARD-TRAN.DIST-CODE = WFPKFNDD.WF-FU-DIST(#AWARD-SUB)           
*S**      END-IF        
*S**      ADD 1 TO #AWD-WRITE-COUNTER           
*S**      WRITE WORK 3 AWARD-TRAN   
*S**    END-IF          
*S**  END-FOR           
*S**END-SUBROUTINE /* WRITE-AWARD-TRANSACTION   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-FUND-ROSTER-TRANSACTION         
*S*************************************************************************         
*S**  /*    
*S**  /* Write Fund roster transactions         
*S**  FOR #AWARD-SUB = 1 to 20      
*S**    IF WFPKPAKD.AWARD-AMT(#AWARD-SUB) > 0   
*S**      RESET FUND-ROSTER-TRAN    
*S**      ASSIGN FUND-ROSTER-TRAN.WW-ST-SID = WWSTDNTD.WW-ST-SID        
*S**      ASSIGN FUND-ROSTER-TRAN.WF-AID-YEAR = ##AID-YEAR  
*S**      ASSIGN FUND-ROSTER-TRAN.WF-FAO = ##FAO-ID         
*S**      ASSIGN FUND-ROSTER-TRAN.WF-FUND-ID =  
*S**             WFPKFNDD.WF-FUND-ID(#AWARD-SUB)
*S**      IF WFPKPAKD.#USE-EST-PELL = 'Y'       
*S**        ASSIGN FUND-ROSTER-TRAN.EST-FUND = '*'          
*S**      END-IF        
*S**      ASSIGN FUND-ROSTER-TRAN.ACTION-CODE = 
*S**             WFPKFNDD.FUND-OFFER(#AWARD-SUB)
*S**      ASSIGN FUND-ROSTER-TRAN.AMOUNT = WFPKPAKD.AWARD-AMT(#AWARD-SUB)           
*S**      IF #INPUT-DIST-CODE NE ' '
*S**        ASSIGN FUND-ROSTER-TRAN.DIST-CODE = #INPUT-DIST-CODE        
*S**      ELSE          
*S**        ASSIGN FUND-ROSTER-TRAN.DIST-CODE = 
*S**               WFPKFNDD.WF-FU-DIST(#AWARD-SUB)          
*S**      END-IF        
*S**      ASSIGN FUND-ROSTER-TRAN.NAME = ##COMP-NAME        
*S**      ADD 1 TO #FR-WRITE-COUNTER
*S**      WRITE WORK 5 FUND-ROSTER-TRAN         
*S**    END-IF          
*S**  END-FOR           
*S**END-SUBROUTINE /* WRITE-FUND-ROSTER-TRANSACTION         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-PACKAGING-TRANSACTION           
*S*************************************************************************         
*S**  /*    
*S**  /* Write packaging transactions for students with award transactions          
*S**  IF #WROTE-AWARD-TRAN          
*S**    IF NOT #WROTE-PACKAGING-HDR 
*S**      ASSIGN #WROTE-PACKAGING-HDR = TRUE    
*S**      ASSIGN INPUT-TRAN.HEADER = 'BATCH HDR'
*S**      ASSIGN INPUT-TRAN.ID = #INPUT-BATCH-ID
*S**      ASSIGN INPUT-TRAN.USER = 'WFPKPAKB'   
*S**      ADD 1 TO #PKG-WRITE-COUNTER           
*S**      WRITE WORK 4 INPUT-TRAN   
*S**    END-IF          
*S**    /*  
*S**    /* Write packaging status transaction   
*S**    RESET INPUT-TRAN
*S**    ASSIGN INPUT-TRAN.WW-ST-SID = WWSTDNTD.WW-ST-SID    
*S**    ASSIGN INPUT-TRAN.WF-AID-YEAR = ##AID-YEAR          
*S**    ASSIGN INPUT-TRAN.WF-FAO = ##FAO-ID     
*S**    ASSIGN INPUT-TRAN.FILE-FIELD = 'WF-AIDYEAR.WF-AY-P-STAT'        
*S**    ASSIGN INPUT-TRAN.DATA-VALUE = 'P'                /* Aid packaged           
*S**    ADD 1 TO #PKG-WRITE-COUNTER 
*S**    WRITE WORK 4 INPUT-TRAN     
*S**    /*  
*S**    RESET #WROTE-AWARD-TRAN     
*S**  END-IF
*S**END-SUBROUTINE /* WRITE-PACKAGING-TRANSACTION           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-PRINT-DETAIL-FILE   
*S*************************************************************************         
*S**  /*    
*S**  /* Write detail lines to work file        
*S**  /*  (for student name sorted report)      
*S**  ADD 1 TO DETAIL-LINE.LINE-NO  
*S**  ASSIGN DETAIL-LINE.WW-ST-SID = WWSTDNTD.WW-ST-SID     
*S**  ASSIGN DETAIL-LINE.WF-AID-YEAR = ##AID-YEAR           
*S**  ASSIGN DETAIL-LINE.WF-FAO = ##FAO-ID      
*S**  ASSIGN DETAIL-LINE.LAST-NAME = WWSTDNTD.WW-ST-NM-LAST 
*S**  ASSIGN DETAIL-LINE.FIRST-NAME = WWSTDNTD.WW-ST-NM-FIRST           
*S**  IF #STUDENT-PACKAGED          
*S**    ASSIGN DETAIL-LINE.STUDENT-PACKAGED = 'Y'           
*S**  ELSE  
*S**    ASSIGN DETAIL-LINE.STUDENT-PACKAGED = 'N'           
*S**  END-IF
*S**  WRITE WORK 6 DETAIL-LINE      
*S**END-SUBROUTINE /* WRITE-PRINT-DETAIL-FILE   
*S**END     
*C**                                FATEMP  WFPKPAKC                        G S   NN0000        
*D01NAT8304G FATEMP  WFPKPAKC                        ZWDNH   ZWDNH           S      
*D02            2026070910455102026070910455100000054127    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Copycode  : WFPKPAKC          
*S*** System    : FINANCIER         
*S*** Title     : Packaging routine 
*S*** Function  : This copycode include WolffPack delivered subroutines 
*S***              used by the institutional packaging subprograms.     
*S***       
*S***             Inline subroutines include:   
*S***               - CHECK-DEGREE  
*S***                 - Verifies that a student's degree is within a    
*S***                   specific subset         
*S***               - CHECK-DEGREE-ASSOCIATES   
*S***                 - Verifies that a student's degree is within a    
*S***                   specific subset         
*S***               - CHECK-DEGREE-BACHELORS    
*S***                 - Verifies that a student's degree is within a    
*S***                   specific subset         
*S***               - CHECK-EFC     
*S***                 - Verifies that a student's EFC is within a       
*S***                   fund specific range     
*S***               - CHECK-INSTATE-RESIDENCY   
*S***                 - Verifies that a student's residency is instate  
*S***               - CHECK-PAR-ED-LEVEL        
*S***                 - Verifies that a parent's education level        
*S***                   is within a subset      
*S***               - CHECK-RECEIVED-DATE       
*S***                 - Verifies that a student's ISIR received date    
*S***                   is prior to the fund's deadline     
*S***               - CHECK-REQUIREMENTS        
*S***                 - Verifies that a student's requirement documents 
*S***                   are appropriate to the fund         
*S***               - FUND-EDITS    
*S***                 - Performs fund specific edits        
*S***                     (Not frozen, awarding allowed, etc.)          
*S***               - LOAD-EXISTING-AWARDS      
*S***                 - Loads a students previously awarded funds       
*S***                   for packaging consideration         
*S***               - PACKAGE-DLSUB 
*S***                 - Processes a potential Direct Loan (Sub) for     
*S***                   a student invoking the federal logic,           
*S***                   PACKAGE-FED-DLSUB, and then invoking the institutional      
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-DLUNSUB           
*S***                 - Processes a potential Direct Loan (UnSub) for   
*S***                   a student invoking the federal logic,           
*S***                   PACKAGE-FED-DLUNSUB, and then invoking the institutional    
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-FED-DLSUB         
*S***                 - Processes a potential Direct Loan (Sub) for     
*S***                   a student, using the federal logic only,        
*S***                   additional institional edits may be 
*S***                   added in PACKAGE-DLSUB (WxPKPyyN)   
*S***               - PACKAGE-FED-DLUNSUB       
*S***                 - Processes a potential Direct Loan (UnSub) for   
*S***                   a student, using the federal logic only,        
*S***                   additional institional edits may be 
*S***                   added in PACKAGE-DLUNSUB (WxPKPyyN) 
*S***               - PACKAGE-FED-SEOG          
*S***                 - Processes a potential SEOG for      
*S***                   a student, using the federal logic only,        
*S***                   additional institional edits may be 
*S***                   added in PACKAGE-SEOG (WxPKPyyN)    
*S***               - PACKAGE-GRADPLUS          
*S***                 - Processes a potential Graduate PLUS Loan for    
*S***                   a student invoking the federal logic,           
*S***                   PACKAGE-FED-GRADPLUS, and then invoking the     
*S***                   institutional packaging routine (WxPKPyyN)      
*S***               - PACKAGE-PLUS  
*S***                 - Processes a potential PLUS Loan for 
*S***                   a student invoking the federal logic,           
*S***                   PACKAGE-FED-PLUS, and then invoking the institutional       
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-PELL  
*S***                 - Processes a potential Pell award for a student, 
*S***                   actual WF-PELL lookup is done via external      
*S***                   subroutine PELL-LOOKUP (WFPKPELE) AY < 2025     
*S***                      OR       
*S***                   subroutine DETERMINE-PELL-AWARD (WFPKDPAE) AY > 2024        
*S***               - PACKAGE-SEOG  
*S***                 - Processes a potential SEOG Loan for 
*S***                   a student invoking the federal logic,           
*S***                   PACKAGE-FED-SEOG, and then invoking the institutional       
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-STATE-GRANT       
*S***                 - Processes a potential state grant Loan for      
*S***                   a student invoking the institutional
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-TEACH 
*S***                 - Processes a potential TEACH Loan for
*S***                   a student invoking the institutional
*S***                   packaging routine (WxPKPyyN)        
*S***               - PACKAGE-WORK  
*S***                 - Processes a potential Work Study award for      
*S***                   a student and then invoking the institutional   
*S***                   packaging routine (WxPKPyyN)        
*S***               - PREPARE-AWARD 
*S***                 - Processes a potential award for a student,      
*S***                   including adjusting Need, SC/PC/FC, editing against         
*S***                   fund limits, etc.       
*S***               - PREPARE-BYPASS
*S***                 - Processes a non-award for a student,
*S***                   including adjusting Need, SC/PC/FC  
*S***       
*S***      Copyright 1995 - 2013 WolffPack, Inc.  All rights reserved.  
*S***       
*S*** Institutional Notes:          
*S*************************************************************************         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-DEGREE  
*S*************************************************************************         
*S**  /*    
*S**  DECIDE ON EVERY VALUE OF #S-DEG           
*S**    VALUE 'AA', 'AS', 'AAS', 'BAS'          
*S**      ASSIGN #CHECK-DEGREE = TRUE           
*S**    NONE
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**END-SUBROUTINE /* CHECK-DEGREE  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-DEGREE-ASSOCIATES   
*S*************************************************************************         
*S**  /*    
*S**  DECIDE ON EVERY VALUE OF #S-DEG           
*S**    VALUE 'AA', 'AS', 'AAS'     
*S**      ASSIGN #CHECK-DEGREE = TRUE           
*S**    NONE
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**END-SUBROUTINE /* CHECK-DEGREE-ASSOCIATES   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-DEGREE-BACHELORS    
*S*************************************************************************         
*S**  /*    
*S**  DECIDE ON EVERY VALUE OF #S-DEG           
*S**    VALUE 'AA', 'AS', 'AAS'     
*S**      ASSIGN #CHECK-DEGREE = TRUE           
*S**    NONE
*S**      IGNORE        
*S**  END-DECIDE        
*S**  /*    
*S**END-SUBROUTINE /* CHECK-DEGREE-BACHELORS    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-EFC     
*S*************************************************************************         
*S**  /*    
*S**  /* EFC must be within minimum and maximum range       
*S**  ASSIGN #CHECK-EFC = FALSE     
*S**  IF (WFPKFNDD.FUND-MIN-EFC(#FUND-SUB) <= #EFC) AND     
*S**     (#EFC <= WFPKFNDD.FUND-MAX-EFC(#FUND-SUB))         
*S**    ASSIGN #CHECK-EFC = TRUE    
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* CHECK-EFC     
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-INSTATE-RESIDENCY   
*S*************************************************************************         
*S**  /*    
*S**  /* Check whether student is instate resident          
*S**  ASSIGN #CHECK-INSTATE-RES = FALSE         
*S**  IF #S-IOS = '1'   
*S**    ASSIGN #CHECK-INSTATE-RES = TRUE        
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* CHECK-INSTATE-RESIDENCY   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-PAR-ED-LEVEL        
*S*************************************************************************         
*S**  /*    
*S**  ASSIGN #CHECK-PAR-ED-LEVEL = FALSE        
*S**  IF ##AID-YEAR > '2014'        
*S**    IF (#P1-LEV NOT = ' ' AND   
*S**        #P2-LEV NOT = ' ')      
*S**      IF (#P1-LEV = '1' OR      
*S**          #P1-LEV = '2') AND    
*S**         (#P2-LEV = '1' OR      
*S**          #P2-LEV = '2')        
*S**       ASSIGN #CHECK-PAR-ED-LEVEL = TRUE    
*S**      END-IF        
*S**    END-IF          
*S**  ELSE  
*S**   IF (#FA-LEV NOT = ' ' AND    
*S**       #MO-LEV NOT = ' ')       
*S**     IF (#FA-LEV  = '1' OR      
*S**         #FA-LEV  = '2') AND    
*S**        (#MO-LEV  = '1' OR      
*S**         #MO-LEV  = '2')        
*S**       ASSIGN #CHECK-PAR-ED-LEVEL = TRUE    
*S**     END-IF         
*S**   END-IF           
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* CHECK-PAR-ED-LEVEL        
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-RECEIVED-DATE       
*S*************************************************************************         
*S**  /*    
*S**  /* ISIR must be received prior to fund deadline       
*S**  ASSIGN #CHECK-RECVD-DATE = FALSE          
*S**  IF (WFPKFNDD.FUND-RECVD-DATE(#FUND-SUB) > 
*S**      #CPS-RECVD-DATE)          
*S**    ASSIGN #CHECK-RECVD-DATE = TRUE         
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* CHECK-RECEIVED-DATE       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CHECK-REQUIREMENTS        
*S*************************************************************************         
*S**  /*    
*S**  IF NOT #REQMTS-READ           
*S**    ASSIGN #REQ-TYPE = APP-TYPE 
*S**    PERFORM READ-REQUIREMENTS #REQ-TYPE #REQS           
*S**    ASSIGN #REQMTS-READ = TRUE  
*S**  END-IF
*S**  /*    
*S**  RESET #REQMTS-COMPLETE        
*S**        #REQMTS-FOUND           
*S**  IF WFPKFNDD.FUND-DOC-EXCLUDE(#FUND-SUB) NOT = 'Y'     
*S**    SEPARATE WFPKFNDD.FUND-DOC-STAT(#FUND-SUB) INTO #REQ-STAT-ARRAY(*)          
*S**  END-IF
*S**  FOR #REQ-SUB = 1 TO 30        
*S**    IF #REQS.#RE-D-ST-DOC(#REQ-SUB) = WFPKFNDD.FUND-DOC(#FUND-SUB)  
*S**      ASSIGN #REQMTS-FOUND = TRUE           
*S**      /*
*S**      /* If no statuses requested, just check for requirement existence         
*S**      /*
*S**      IF WFPKFNDD.FUND-DOC-STAT(#FUND-SUB) = ' ' OR     
*S**         WFPKFNDD.FUND-DOC-EXCLUDE(#FUND-SUB) = 'Y'     
*S**        ESCAPE BOTTOM           
*S**      END-IF        
*S**      FOR #REQ-STAT-SUB = 1 TO 10           
*S**        IF #REQS.#RE-D-STAT(#REQ-SUB) = #REQ-STAT(#REQ-STAT-SUB) AND
*S**           #REQ-STAT(#REQ-STAT-SUB) NOT = ' '           
*S**          ASSIGN #REQMTS-COMPLETE = TRUE    
*S**        END-IF      
*S**        ESCAPE BOTTOM           
*S**      END-FOR       
*S**    END-IF          
*S**  END-FOR           
*S**  /*    
*S**  IF WFPKFNDD.FUND-DOC-STAT(#FUND-SUB) = ' '
*S**    /* Only check for document  
*S**    IF NOT #REQMTS-FOUND        
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #REQ-NOT-FOUND    
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**  ELSE  
*S**    IF WFPKFNDD.FUND-DOC-EXCLUDE(#FUND-SUB) = 'Y'       
*S**      /* Document is not allowed for fund   
*S**      IF #REQMTS-FOUND          
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #REQ-FOUND      
*S**        ESCAPE ROUTINE          
*S**      END-IF        
*S**    ELSE
*S**      /* Check for document status          
*S**      IF NOT #REQMTS-COMPLETE   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #REQ-NOT-FOUND  
*S**        ESCAPE ROUTINE          
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**END-SUBROUTINE /* CHECK-REQUIREMENTS        
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DETERMINE-CLASS-LEVEL     
*S*************************************************************************         
*S**  /*    
*S**  /*  Determine Class level     
*S**  /*    Default looks at STUDENT data       
*S**  DECIDE ON FIRST VALUE OF #S-TIM           
*S**    VALUE 'F'       
*S**      ASSIGN #CLASS-LEVEL = 'F' 
*S**    VALUE 'T'       
*S**      ASSIGN #CLASS-LEVEL = 'T' 
*S**    VALUE 'H'       
*S**      ASSIGN #CLASS-LEVEL = 'H' 
*S**    VALUE 'L'       
*S**      ASSIGN #CLASS-LEVEL = 'L' 
*S**    NONE
*S**      ASSIGN #CLASS-LEVEL = 'F' 
*S**  END-DECIDE        
*S**END-SUBROUTINE /* DETERMINE-CLASS-LEVEL     
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE FUND-EDITS    
*S*************************************************************************         
*S**  /*    
*S**  IF WFPKPAKD.#REJECT-RSN(#FUND-SUB) NOT = ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Verify funds are eligible for awarding 
*S**  /*    
*S**  /* Fund doesn't exist         
*S**  IF WFPKFNDD.EXISTS(#FUND-SUB) = 'N'       
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-NOT-FOUND     
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Fund not set for packaging 
*S**  IF WFPKFNDD.FUND-PKG(#FUND-SUB) NOT = 'Y' AND         
*S**     WFPKFNDD.FUND-PKG(#FUND-SUB) NOT = 'F' 
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #PACKAGE-FUND       
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Fund limit error           
*S**  IF WFPKFNDD.FUND-PKG(#FUND-SUB) = 'F'     
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-LIMIT-ERR     
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  IF WFPKFNDD.WF-FU-FREEZE-OFF(#FUND-SUB) = 'Y'         
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-FROZEN        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  IF WFPKFNDD.WF-FU-ALLOW-AWDS(#FUND-SUB) NOT = 'Y'     
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-ALLOW         
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  IF WFPKFNDD.WF-FU-STATUS(#FUND-SUB) NOT = 'A'         
*S**    MOVE 'Y' TO FUND-REJECT(#FUND-SUB)      
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-STATUS        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* FUND-EDITS    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-EXISTING-AWARDS      
*S*************************************************************************         
*S**  /*    
*S**  /* Lookup existing awards for student     
*S**  RESET WFAWARDD    
*S**  ASSIGN WFAWARDD.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFAWARDD.WF-AID-YEAR = ##AID-YEAR  
*S**  ASSIGN WFAWARDD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  MOVE 'NEXT' TO WWAOBJ.#FUNCTION           
*S**  /*    
*S**  /* Loop through awards and load into array
*S**  FOR #SUB = 1 TO 20
*S**    PERFORM CALL-OBJECT-AWARD   
*S**    IF NOT WWAOBJ.#EXISTS OR    
*S**      WFAWARDD.WW-STUDENT-ID NOT = ##STUDENT-ID         
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**    MOVE BY NAME WFAWARDD TO #STUDENT-AWARDS(#SUB)      
*S**    /*  
*S**    /* Move award disbursement data to array
*S**    MOVE BY NAME WFAWARDD.WF-AWARD-DISB TO WFAWARDL.WF-AWARD-DISB   
*S**    /*  
*S**  END-FOR           
*S**  /*    
*S**END-SUBROUTINE /* LOAD-EXISTING-AWARDS      
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-DLSUB 
*S*************************************************************************         
*S**  /*    
*S**  /* Call Direct Loan Sub logic 
*S**  PERFORM PACKAGE-FED-DLSUB     
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional DLSUB logic       
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  ASSIGN #ELIG-SUB = WFPKPAKD.AWARD-AMT(#FUND-SUB)      
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-DLSUB 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-DLUNSUB           
*S*************************************************************************         
*S**  /*    
*S**  /* Call Direct Loan Unsub logic           
*S**  PERFORM PACKAGE-FED-DLUNSUB   
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional DLUNSUB logic     
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  ASSIGN #ELIG-UNSUB = WFPKPAKD.AWARD-AMT(#FUND-SUB)    
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-DLUNSUB           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-FED-DLSUB         
*S*************************************************************************         
*S**  /*    
*S**  /* Subsidized Usage Limit check           
*S**  IF #S-DL-SUB-LIMIT = 'Y'      
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #DL-SUB-LIMIT-ERR 
*S**      ESCAPE ROUTINE
*S**  END-IF
*S**  /*    
*S**  /* Citizen or eligible non-citizen        
*S**  IF #S-CIT = 'U' OR
*S**     #S-CIT = 'E'   
*S**      /* Allowed students       
*S**      IGNORE        
*S**    ELSE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #CIT-ERR          
*S**      ESCAPE ROUTINE
*S**  END-IF
*S**  /*    
*S**  /* Graduate students not allowed DL Sub   
*S**  /*  New graduate levels for 2027+ (OBBBA) 
*S**  IF ##AID-YEAR > '2026'        
*S**    IF WWSTDNTD.WW-ST-AC-CLS = 'GN' OR      
*S**       WWSTDNTD.WW-ST-AC-CLS = 'GP' OR      
*S**       WWSTDNTD.WW-ST-AC-CLS = 'GC'         
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-IF          
*S**  ELSE  
*S**    IF WWSTDNTD.WW-ST-AC-CLS = 'GR' OR      
*S**       WWSTDNTD.WW-ST-AC-CLS = 'G+'         
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Student class level        
*S**  DECIDE ON FIRST VALUE OF #CLASS-LEVEL     
*S**    VALUE 'F', 'T', 'H'         
*S**      /*
*S**      /* At least half-time     
*S**      IGNORE        
*S**    NONE
*S**      /*
*S**      /* Less than half-time    
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-ENR      
*S**      ESCAPE ROUTINE
*S**  END-DECIDE        
*S**  /*    
*S**  /* Check Annual limits        
*S**  /*  New graduate levels for 2027+ (OBBBA) 
*S**  IF ##AID-YEAR > '2026'        
*S**    DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS      
*S**      VALUE 'FR'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-SUB  
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB    
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB  
*S**        END-IF      
*S**      VALUE 'SO'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-SUB   
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB     
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB   
*S**        END-IF      
*S**      VALUE 'JR', 'SR', 'U+'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-SUB  
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB    
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB  
*S**        END-IF      
*S**      VALUE 'GN', 'GP', 'GC'    
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  ELSE  
*S**    DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS      
*S**      VALUE 'FR'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-SUB  
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB    
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB  
*S**        END-IF      
*S**      VALUE 'SO'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-SUB   
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB     
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB   
*S**        END-IF      
*S**      VALUE 'JR', 'SR', 'U+'    
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-SUB  
*S**        IF #AY-DEP-STAT = 'D'   
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB    
*S**        ELSE        
*S**          ASSIGN #UNSUB-AGG = DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB  
*S**        END-IF      
*S**      VALUE 'GR', 'G+'          
*S**        ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.GRAD-SUB   
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  END-IF
*S**  /*    
*S**  /* Check aggregate limits     
*S**  /*  New graduate levels for 2027+ (OBBBA) 
*S**  IF ##AID-YEAR > '2026'        
*S**    DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS      
*S**      VALUE 'FR'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.FRESH-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-SUB -       
*S**                #NSLDS-SUB-TOTAL
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'SO'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.SOPH-SUB        
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-SUB -        
*S**                  #NSLDS-SUB-TOTAL          
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'JR', 'SR', 'U+'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.JR-SR-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-SUB -       
*S**                  #NSLDS-SUB-TOTAL          
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'GN', 'GP', 'GC'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) >= DL-LIFETIME-LIMITS.GRAD-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.GRAD-SUB -        
*S**                  #NSLDS-SUB-TOTAL          
*S**        END-IF      
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  ELSE  
*S**    DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS      
*S**      VALUE 'FR'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.FRESH-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-SUB -       
*S**                #NSLDS-SUB-TOTAL
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'SO'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.SOPH-SUB        
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-SUB -        
*S**                  #NSLDS-SUB-TOTAL          
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'JR', 'SR', 'U+'    
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) > DL-LIFETIME-LIMITS.JR-SR-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-SUB -       
*S**                  #NSLDS-SUB-TOTAL          
*S**          IF #AWARD-MAX > 0 AND #NSLDS-CMB-TOTAL >= #UNSUB-AGG      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR     
*S**            ESCAPE ROUTINE      
*S**          END-IF    
*S**        END-IF      
*S**      VALUE 'GR', 'G+'          
*S**        IF (#AWARD-MAX + #NSLDS-SUB-TOTAL) >= DL-LIFETIME-LIMITS.GRAD-SUB       
*S**          COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.GRAD-SUB -        
*S**                  #NSLDS-SUB-TOTAL          
*S**        END-IF      
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS  
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  END-IF
*S**  /*    
*S**  /* If NSLDS amount > Lifetime limit, #AWARD-MAX will be < 0       
*S**  IF #AWARD-MAX LE 0
*S**    ASSIGN #AWARD-MAX = 0       
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR 
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  IF (#UNSUB-AGG - #NSLDS-CMB-TOTAL) < #AWARD-MAX       
*S**    COMPUTE #AWARD-MAX = #UNSUB-AGG - #NSLDS-CMB-TOTAL  
*S**  END-IF
*S**  /*    
*S**  /* If Total DLUSUB - Total Combined < DLSUB AWARD MAX,
*S**  /*   New Award Max will be <= 0           
*S**  IF #AWARD-MAX LE 0
*S**    ASSIGN #AWARD-MAX = 0       
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR 
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /*  New lifetime BORROWING limits for 2027+ (OBBBA)   
*S**  IF ##AID-YEAR > '2026'        
*S**    IF #NS-LIMIT-EXCEP = 'Y'    
*S**      IGNORE        
*S**    ELSE
*S**      IF (#AWARD-MAX + #NS-LIFETIME-MAX) >  
*S**          #MAX-STUDENT-LIMIT    
*S**        COMPUTE #AWARD-MAX = #MAX-STUDENT-LIMIT -       
*S**                        #NS-LIFETIME-MAX    
*S**        IF #AWARD-MAX LE 0      
*S**          ASSIGN #AWARD-MAX = 0 
*S**          ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-MAX-ERR         
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-FED-DLSUB         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-FED-DLUNSUB       
*S*************************************************************************         
*S**  /*    
*S**  /* Citizen or eligible non-citizen        
*S**  IF #S-CIT = 'U' OR
*S**     #S-CIT = 'E'   
*S**      /* Allowed students       
*S**      IGNORE        
*S**    ELSE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #CIT-ERR          
*S**      ESCAPE ROUTINE
*S**  END-IF
*S**  /*    
*S**  /* Student class level        
*S**  DECIDE ON FIRST VALUE OF #CLASS-LEVEL     
*S**    VALUE 'F', 'T', 'H'         
*S**      /*
*S**      /* At least half-time     
*S**      IGNORE        
*S**    NONE
*S**      /*
*S**      /* Less than half-time    
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-ENR      
*S**      ESCAPE ROUTINE
*S**  END-DECIDE        
*S**  /*    
*S**  /* For OBBBA+, Grad students Citizen or eligible non-citizen      
*S**  IF ##AID-YEAR > '2026'        
*S**    IF #NS-LIMIT-EXCEP = 'Y'    
*S**      IGNORE        
*S**    ELSE
*S**      IF #NS-CMB-LIMIT-GRAD = 'C'           
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #CMB-LIMIT-GRAD-ERR-C       
*S**        ESCAPE ROUTINE          
*S**      ELSE          
*S**        IF #NS-CMB-LIMIT-GRAD = 'E'         
*S**          ASSIGN #REJECT-RSN(#FUND-SUB) = #CMB-LIMIT-GRAD-ERR-E     
*S**          ESCAPE ROUTINE        
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  /*  New limits for 2027+ (OBBBA)          
*S**  IF ##AID-YEAR > '2026'        
*S**    DECIDE ON FIRST VALUE OF #AY-DEP-STAT   
*S**      VALUE 'D'     
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-DEP-UNSUB    
*S**          VALUE 'SO'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-DEP-UNSUB     
*S**          VALUE 'JR', 'SR', 'U+'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-DEP-UNSUB    
*S**          VALUE 'GN', 'GP', 'GC'
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      VALUE 'I'     
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-INDEP-UNSUB  
*S**          VALUE 'SO'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-INDEP-UNSUB   
*S**          VALUE 'JR', 'SR', 'U+'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-INDEP-UNSUB  
*S**          VALUE 'GN', 'GP', 'GC'
*S**            IF #NS-LIMIT-EXCEP = 'Y'        
*S**              ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.GRAD-UNSUB       
*S**            ELSE    
*S**              ASSIGN #AWARD-MAX = #ANNUAL-GRAD-UNSUB-OBBBA          
*S**            END-IF  
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-DEP    
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  ELSE  
*S**    DECIDE ON FIRST VALUE OF #AY-DEP-STAT   
*S**      VALUE 'D'     
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-DEP-UNSUB    
*S**          VALUE 'SO'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-DEP-UNSUB     
*S**          VALUE 'JR', 'SR', 'U+'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-DEP-UNSUB    
*S**          VALUE 'GR', 'G+'      
*S**            ASSIGN #AWARD-MAX = 0           
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      VALUE 'I'     
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.FRESH-INDEP-UNSUB  
*S**          VALUE 'SO'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.SOPH-INDEP-UNSUB   
*S**          VALUE 'JR', 'SR', 'U+'
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.JR-SR-INDEP-UNSUB  
*S**          VALUE 'GR', 'G+'      
*S**            ASSIGN #AWARD-MAX = DL-ANNUAL-LIMITS.GRAD-UNSUB         
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-DEP    
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  END-IF
*S**  /*    
*S**  /* Adjust UNSUB max amount with potential SUB award   
*S**  COMPUTE #AWARD-MAX = #AWARD-MAX - #ELIG-SUB           
*S**  IF #AWARD-MAX < 0 
*S**    ASSIGN #AWARD-MAX = 0       
*S**  END-IF
*S**  /*    
*S**  /* Check Aggregate limits     
*S**  /*  New limits for 2027+      
*S**  IF ##AID-YEAR > '2026'        
*S**    DECIDE ON FIRST VALUE OF #AY-DEP-STAT   
*S**      VALUE 'D'     
*S**        /* Dependent
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB      
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB -         
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'SO'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB       
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB -          
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'JR', 'SR', 'U+'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB      
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB -         
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'GN', 'GC'      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      VALUE 'I'     
*S**        /* Independent          
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB    
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB -       
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'SO'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB     
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB -        
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'JR', 'SR', 'U+'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB    
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB -       
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'GN', 'GC'      
*S**            IF #NS-LIMIT-EXCEP = 'Y'        
*S**              IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >      
*S**                  DL-LIFETIME-LIMITS.GRAD-UNSUB         
*S**                COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.GRAD-UNSUB -
*S**                        #NSLDS-CMB-TOTAL - #ELIG-SUB    
*S**              END-IF
*S**            ELSE    
*S**              IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >      
*S**                  #LIFETIME-GRAD-UNSUB-OBBBA
*S**                COMPUTE #AWARD-MAX = #LIFETIME-GRAD-UNSUB-OBBBA -   
*S**                        #NSLDS-CMB-TOTAL - #ELIG-SUB    
*S**              END-IF
*S**            END-IF  
*S***         VALUE 'GP'
*S***           IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S***               DL-LIFETIME-LIMITS.GRAD-UNSUB           
*S***             COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.PROF-UNSUB -  
*S***                     #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S***           END-IF  
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #DEP-STATUS-ERR 
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  ELSE  
*S**    DECIDE ON FIRST VALUE OF #AY-DEP-STAT   
*S**      VALUE 'D'     
*S**        /* Dependent
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB      
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-DEP-UNSUB -         
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'SO'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB       
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-DEP-UNSUB -          
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'JR', 'SR', 'U+'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB      
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-DEP-UNSUB -         
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      VALUE 'I'     
*S**        /* Independent          
*S**        DECIDE ON FIRST VALUE OF WWSTDNTD.WW-ST-AC-CLS  
*S**          VALUE 'FR'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB    
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.FRESH-INDEP-UNSUB -       
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'SO'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB     
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.SOPH-INDEP-UNSUB -        
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'JR', 'SR', 'U+'
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB    
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.JR-SR-INDEP-UNSUB -       
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          VALUE 'GR', 'G+'      
*S**            IF (#AWARD-MAX + #NSLDS-CMB-TOTAL + #ELIG-SUB) >        
*S**                DL-LIFETIME-LIMITS.GRAD-UNSUB           
*S**              COMPUTE #AWARD-MAX = DL-LIFETIME-LIMITS.GRAD-UNSUB -  
*S**                      #NSLDS-CMB-TOTAL - #ELIG-SUB      
*S**            END-IF  
*S**          NONE      
*S**            ASSIGN #AWARD-MAX = 0           
*S**            ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS          
*S**            ESCAPE ROUTINE      
*S**        END-DECIDE  
*S**      NONE          
*S**        ASSIGN #AWARD-MAX = 0   
*S**        ASSIGN #REJECT-RSN(#FUND-SUB) = #DEP-STATUS-ERR 
*S**        ESCAPE ROUTINE          
*S**    END-DECIDE      
*S**  END-IF
*S**  /*    
*S**  /* If NSLDS amount > Lifetime limit, #AWARD-MAX will be < 0       
*S**  IF #AWARD-MAX LE 0
*S**    ASSIGN #AWARD-MAX = 0       
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-LIMIT-ERR 
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /*  New lifetime BORROWING limits for 2027+ (OBBBA)   
*S**  IF ##AID-YEAR > '2026'        
*S**    IF #NS-LIMIT-EXCEP = 'Y'    
*S**      IGNORE        
*S**    ELSE
*S**      IF (#AWARD-MAX + #NS-LIFETIME-MAX) >  
*S**          #MAX-STUDENT-LIMIT    
*S**        COMPUTE #AWARD-MAX = #MAX-STUDENT-LIMIT -       
*S**                        #NS-LIFETIME-MAX    
*S**        IF #AWARD-MAX LE 0      
*S**          ASSIGN #AWARD-MAX = 0 
*S**          ASSIGN #REJECT-RSN(#FUND-SUB) = #LIFETIME-MAX-ERR         
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-FED-DLUNSUB       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-FED-GRADPLUS      
*S*************************************************************************         
*S**  /*    
*S**  /* Citizen or eligible non-citizen        
*S**  IF #S-CIT = 'U' OR
*S**     #S-CIT = 'E'   
*S**      /* Allowed students       
*S**      IGNORE        
*S**    ELSE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #CIT-ERR          
*S**      ESCAPE ROUTINE
*S**  END-IF
*S**  /*    
*S**  /* Enrollment status          
*S**  DECIDE ON FIRST VALUE OF #CLASS-LEVEL     
*S**    VALUE 'F'       
*S**      IGNORE        
*S**    VALUE 'T'       
*S**      IGNORE        
*S**    VALUE 'H'       
*S**      IGNORE        
*S**    VALUE 'L'       
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-ENR      
*S**      ESCAPE ROUTINE
*S**    NONE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-ENR      
*S**      ESCAPE ROUTINE
*S**  END-DECIDE        
*S**  /*    
*S**  /* Student must be a graduate student     
*S**  IF WWSTDNTD.WW-ST-AC-CLS = 'GR' OR        
*S**     WWSTDNTD.WW-ST-AC-CLS = 'G+'           
*S**    IGNORE          
*S**  ELSE  
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-CLASS      
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-FED-GRADPLUS      
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-FED-PLUS          
*S*************************************************************************         
*S**  /*    
*S**  /* Citizen or eligible non-citizen        
*S**  IF #S-CIT = 'U' OR
*S**     #S-CIT = 'E'   
*S**      /* Allowed students       
*S**      IGNORE        
*S**    ELSE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #CIT-ERR          
*S**      ESCAPE ROUTINE
*S**  END-IF
*S**  /*    
*S**  /* Enrollment status          
*S**  DECIDE ON FIRST VALUE OF #CLASS-LEVEL     
*S**    VALUE 'F', 'T', 'H'         
*S**      /*
*S**      /* At least half-time     
*S**      IGNORE        
*S**    NONE
*S**      /*
*S**      /* Less than half-time    
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-ENR      
*S**      ESCAPE ROUTINE
*S**  END-DECIDE        
*S**  /*    
*S**  /* Student must be a dependent student    
*S**  IF WFAIDYRD.WF-AY-M1-DEP NOT = 'D'        
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #INVALID-DEP        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-FED-PLUS          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-FED-SEOG          
*S*************************************************************************         
*S**  /*    
*S**  /* Federal SEOG code          
*S**  IGNORE
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-FED-SEOG          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-GRADPLUS          
*S*************************************************************************         
*S**  /*    
*S**  /* Call Direct Loan Graduate PLUS logic   
*S**  PERFORM PACKAGE-FED-GRADPLUS  
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional GRADPLUS logic    
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-GRADPLUS          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-PELL  
*S*************************************************************************         
*S**  /*    
*S**  /* Student must be Pell eligible (per ISIR)           
*S**  RESET #USE-EST-PELL           
*S**  IF #ISIR-PELL-ELIG NOT = 'Y'  
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #NOT-PELL-ELIGIBLE  
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #BLANK-SAI = 'Y'           
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #HAS-BLANK-SAI      
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /*  Determine Enrollment status           
*S**  DECIDE ON FIRST VALUE OF #CLASS-LEVEL     
*S**    VALUE 'F'       
*S**      ASSIGN #HOLD-TIM = 1      
*S**    VALUE 'T'       
*S**      ASSIGN #HOLD-TIM = 2      
*S**    VALUE 'H'       
*S**      ASSIGN #HOLD-TIM = 3      
*S**    VALUE 'L'       
*S**      ASSIGN #HOLD-TIM = 4      
*S**    NONE
*S**      ASSIGN #HOLD-TIM = 0      
*S**  END-DECIDE        
*S**  /*    
*S**  /* Check input parameter for prior year Pell lookup   
*S**  IF #USE-PRIOR-PELL = 'Y'      
*S**    /*  
*S**    /* Determine Pell LEU for prior year's undisbursed Pell         
*S**    /*   (Won't be included in reported LEU - COD or NSLDS)         
*S**    COMPRESS 'WFPKC' #AID-YY 'N' INTO #SUBPGM LEAVING NO SPACE      
*S**    CALLNAT #SUBPGM WW-GDA      
*S**                    #CPS-EXISTS 
*S**                    #PRIOR-YR-PELL-LEU      
*S**    /*  
*S**    /* Add undisbursed Pell to COD's Disbursed Pell     
*S**    COMPUTE #PELL-LEU = #PRIOR-YR-PELL-LEU + #CURRENT-PELL-LEU      
*S**    /*  
*S**    /* Add prior year Pell LEU to display detail        
*S**    /*COMPRESS EDITED #PRIOR-YR-PELL-LEU (EM=999.999) TO #HOLD-TEMP 
*S**    MOVE EDITED #PRIOR-YR-PELL-LEU (EM=999.999) TO #EDIT-HOLD       
*S**    COMPRESS #EDIT-HOLD TO #HOLD-TEMP       
*S**    COMPRESS #PKG-PASS-TEMP '/' #HOLD-TEMP  
*S**      INTO #PKG-PASS-TEMP       
*S**    /*  
*S**  ELSE  
*S**    ASSIGN #PELL-LEU = #CURRENT-PELL-LEU    
*S**  END-IF
*S**  /*    
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN #PELL-LEU < WFPKFNDD.FUND-MIN-LEU(#FUND-SUB)   
*S**      /*
*S**      /* Not at Pell LEU minimum, student is OK to continue         
*S**      /*  use current calculated Pell award 
*S**      IGNORE        
*S**    WHEN #PELL-LEU >= WFPKFNDD.FUND-MAX-LEU(#FUND-SUB)  
*S**      /*
*S**      /* Exceeded Pell LEU minimum          
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #PELL-LEU-LIMIT   
*S**      ESCAPE ROUTINE
*S**    WHEN NONE       
*S**      /*
*S**      /* Between min and max, use Estimated Pell time   
*S**      /*  from input parm       
*S**      ASSIGN #USE-EST-PELL = 'Y'
*S**      ASSIGN #HOLD-TIM = VAL(WFPKFNDD.FUND-LEU-TIM(#FUND-SUB))      
*S**      /*
*S**  END-DECIDE        
*S**  /*    
*S**  /*  Determine Pell award      
*S**  ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0  
*S**  ASSIGN #PELL-AWARD = 0        
*S**  MOVE #RTN-CODE TO #HOLD-RTN-CODE          
*S**  IF ##AID-YEAR < '2025'        
*S**    PERFORM PELL-LOOKUP ##AID-YEAR #HOLD-TIM
*S**                        #PELL-COA #FED-EFC  
*S**                        WFPKPAKD.AWARD-AMT(#FUND-SUB)   
*S**                        #RTN-CODE           
*S**  ELSE  
*S**    PERFORM DETERMINE-PELL-AWARD ##AID-YEAR #HOLD-TIM   
*S**                        #PELL-COA #FED-EFC  
*S**                        WFPKPAKD.AWARD-AMT(#FUND-SUB)   
*S**                        #RTN-CODE           
*S**  END-IF
*S**  /*    
*S**  IF WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0      
*S**    /*  
*S**    /* Student doesn't qualify for Pell funds           
*S**    IF #RTN-CODE = 'M'          
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #MAX-SAI-THRESHOLD
*S**      ESCAPE ROUTINE
*S**    ELSE
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-PELL-AWARD    
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**  ELSE  
*S**    MOVE WFPKPAKD.AWARD-AMT(#FUND-SUB) TO #PELL-AWARD   
*S**  END-IF
*S**  MOVE #HOLD-RTN-CODE TO #RTN-CODE          
*S**  /*    
*S**  DECIDE FOR FIRST CONDITION    
*S**    WHEN #PELL-LEU < WFPKFNDD.FUND-MIN-LEU(#FUND-SUB)   
*S**      /*
*S**      /* Not at Pell LEU minimum, student is OK to continue         
*S**      /*  use current calculated Pell award 
*S**      IGNORE        
*S**    WHEN #PELL-LEU > WFPKFNDD.FUND-MAX-LEU(#FUND-SUB)   
*S**      /*
*S**      /* Exceeded Pell LEU minimum          
*S**      MOVE 0 TO WFPKPAKD.AWARD-AMT(#FUND-SUB)           
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #PELL-LEU-LIMIT   
*S**      ESCAPE ROUTINE
*S**    WHEN NONE       
*S**      /*
*S**      /* Student's LEU is within specified LEU range    
*S**      /*  prorate Pell award based on remaining LEU percentage      
*S**      COMPUTE #REMAINING-LEU =  
*S**              (600 - #PELL-LEU) / 100       
*S**      COMPUTE #TEMP-PELL-AWARD-TRUNC =      
*S**        (#PELL-AWARD * #REMAINING-LEU)      
*S**      COMPUTE #PELL-AWARD = #TEMP-PAT-N5    
*S**      /*
*S**      MOVE #PELL-AWARD TO WFPKPAKD.AWARD-AMT(#FUND-SUB) 
*S**      /*
*S**  END-DECIDE        
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-PELL  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-PLUS  
*S*************************************************************************         
*S**  /*    
*S**  /* Call Direct Loan PLUS logic
*S**  PERFORM PACKAGE-FED-PLUS      
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional PLUS logic        
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-PLUS  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-SEOG  
*S*************************************************************************         
*S**  /*    
*S**  /* Verify student is not pursuing a second Bachelor's degree      
*S**  IF #S-DEG = '2' OR
*S**     #S-DEG = '8'   
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-SECOND-DEGREE   
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Call SEOG logic
*S**  PERFORM PACKAGE-FED-SEOG      
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional SEOG logic        
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-SEOG  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-STATE-GRANT       
*S*************************************************************************         
*S**  /*    
*S**  /* Student degree requirements
*S**  PERFORM CHECK-DEGREE          
*S**  IF NOT #CHECK-DEGREE          
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #DEGREE-REQ         
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Parent degree requirements 
*S**  PERFORM CHECK-PAR-ED-LEVEL    
*S**  IF NOT #CHECK-PAR-ED-LEVEL    
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #PAR-ED-LEVEL       
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Invoke Institutional state grant logic 
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-STATE-GRANT       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-TEACH 
*S*************************************************************************         
*S**  /*    
*S**  /* Invoke Institutional TEACH logic       
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-TEACH 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PACKAGE-WORK  
*S*************************************************************************         
*S**  /*    
*S**  /* Check for interest in work 
*S**  IF #INT-WORK NOT = 'Y'        
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-INT 
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Insert Institutional work study logic here         
*S**  /*    
*S**  PERFORM CALL-INSTITUTIONAL-PKGING         
*S**  IF #REJECT-RSN(#FUND-SUB) NE ' '          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  PERFORM PREPARE-AWARD         
*S**  /*    
*S**END-SUBROUTINE /* PACKAGE-WORK  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PREPARE-AWARD 
*S*************************************************************************         
*S**  /*    
*S**  /* Fund limits checked and potentially, a transaction is generated
*S**  /*  #AWARD-MAX and WFPKPAKD.AWARD-AMT(#FUND-SUB) may be tweaked   
*S**  /*   before this, but should be set by now if not wanting to use the          
*S**  /*   WF-FUND-ATTRIBUTES values
*S**  /*    
*S**  IF #REJECT-RSN(#FUND-SUB) NOT = ' '       
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Tentative award
*S**  /* Award up to fund max (up to remaining need)        
*S**  /*    
*S**  IF WFPKPAKD.FUND-ID(#FUND-SUB) = PELL-FUND-ID         
*S**    /* No need to determine award amount for Pell       
*S**    /*   done by Pell table lookup          
*S**    /*    or        
*S**    /*  DETERMINE-PELL-AWRD (AY > 2024)     
*S**    /*  
*S**    /* Adjust remaining need    
*S**    /*  by definition, Pell does not replace FC         
*S**    COMPUTE #REM-NEED = #REM-NEED - WFPKPAKD.AWARD-AMT(#FUND-SUB)   
*S**    IF ##AID-YEAR > '2024'      
*S**      IF #REM-NEED < 0          
*S**        COMPUTE #REM-NEED = 0   
*S**      ELSE          
*S**        COMPUTE #REM-NEED = #REM-NEED - #AWARD-NEED     
*S**      END-IF        
*S**    END-IF          
*S**  ELSE  
*S**    /* Award max - limited by fund max or remaining to offer        
*S**    IF #AWARD-MAX = 0           
*S**      IF (WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB) -           
*S**           WFPKFNDD.ENDING-BAL(#FUND-SUB)) >
*S**           WFPKFNDD.WF-FU-AWD-MAX(#FUND-SUB)
*S**        ASSIGN #AWARD-MAX = WFPKFNDD.WF-FU-AWD-MAX(#FUND-SUB)       
*S**      ELSE          
*S**        IF WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB) = 0        
*S**          ASSIGN #AWARD-MAX = WFPKFNDD.WF-FU-AWD-MAX(#FUND-SUB)     
*S**        ELSE        
*S**          ASSIGN #AWARD-MAX =   
*S**           (WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB) -         
*S**             WFPKFNDD.ENDING-BAL(#FUND-SUB))
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* If #AWARD-MAX = 0, there's no upper limit available          
*S**    /*   (either Fund Attribute max OR Fund Utilization Offer amt)  
*S**    IF #AWARD-MAX = 0           
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-FUNDS         
*S**      PERFORM PREPARE-BYPASS    
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**    /*  
*S**    /* Replaces SC/PC/FC        
*S**    IF WFPKFNDD.WF-FU-REPL-FC(#FUND-SUB) NOT = ' '      
*S**      DECIDE ON FIRST VALUE OF WFPKFNDD.WF-FU-REPL-FC(#FUND-SUB)    
*S**        VALUE 'F'   
*S**          /* FC     
*S**          IF #AWARD-MAX > #REM-FC           
*S**            ASSIGN #AWARD-FC = #REM-FC      
*S**          ELSE      
*S**            IF #AWARD-MAX < #REM-FC         
*S**              ASSIGN #AWARD-FC = #AWARD-MAX 
*S**            ELSE    
*S**              ASSIGN #AWARD-FC = #REM-FC    
*S**            END-IF  
*S**          END-IF    
*S**          IF #AWARD-FC > #COA   
*S**            ASSIGN #AWARD-FC = #COA         
*S**          END-IF    
*S**          /*        
*S**          /* Verify that total of packaged awards does not exceed COA           
*S**          /*        
*S**          /*  (2025+ student may have qualifed for minimum          
*S**          /*    Pell with a large SAI and other funds may have      
*S**          /*     exceeded COA trying to offset FC)      
*S**          IF #AWARD-FC + #TOTAL-PKG-AWDS > #COA         
*S**            ASSIGN #AWARD-FC = #COA - #TOTAL-PKG-AWDS   
*S**          END-IF    
*S**          COMPUTE #REM-FC = #REM-FC - #AWARD-FC         
*S**        VALUE 'P'   
*S**          /* PC     
*S**          IF #AWARD-MAX > #REM-PC           
*S**            ASSIGN #AWARD-FC = #REM-PC      
*S**          ELSE      
*S**            IF #AWARD-MAX < #REM-PC         
*S**              ASSIGN #AWARD-FC = #AWARD-MAX 
*S**            ELSE    
*S**              ASSIGN #AWARD-FC = #REM-PC    
*S**            END-IF  
*S**          END-IF    
*S**          IF #AWARD-FC > #COA   
*S**            ASSIGN #AWARD-FC = #COA         
*S**          END-IF    
*S**          /*        
*S**          /* Verify that total of packaged awards does not exceed COA           
*S**          /*        
*S**          /*  (2025+ student may have qualifed for minimum          
*S**          /*    Pell with a large SAI and other funds may have      
*S**          /*     exceeded COA trying to offset PC)      
*S**          IF #AWARD-FC + #TOTAL-PKG-AWDS > #COA         
*S**            ASSIGN #AWARD-FC = #COA - #TOTAL-PKG-AWDS   
*S**          END-IF    
*S**          COMPUTE #REM-FC = #REM-FC - #AWARD-FC         
*S**          COMPUTE #REM-PC = #REM-PC - #AWARD-FC         
*S**        VALUE 'S'   
*S**          /* SC     
*S**          IF #AWARD-MAX > #REM-SC           
*S**            ASSIGN #AWARD-FC = #REM-SC      
*S**          ELSE      
*S**            IF #AWARD-MAX < #REM-SC         
*S**              ASSIGN #AWARD-FC = #AWARD-MAX 
*S**            ELSE    
*S**              ASSIGN #AWARD-FC = #REM-SC    
*S**            END-IF  
*S**          END-IF    
*S**          IF #AWARD-FC > #COA   
*S**            ASSIGN #AWARD-FC = #COA         
*S**          END-IF    
*S**          /*        
*S**          /* Verify that total of packaged awards does not exceed COA           
*S**          /*        
*S**          /*  (2025+ student may have qualifed for minimum          
*S**          /*    Pell with a large SAI and other funds may have      
*S**          /*     exceeded COA trying to offset SC)      
*S**          IF #AWARD-FC + #TOTAL-PKG-AWDS > #COA         
*S**            ASSIGN #AWARD-FC = #COA - #TOTAL-PKG-AWDS   
*S**          END-IF    
*S**          COMPUTE #REM-FC = #REM-FC - #AWARD-FC         
*S**          COMPUTE #REM-SC = #REM-SC - #AWARD-FC         
*S**        NONE        
*S**          IGNORE    
*S**      END-DECIDE    
*S**    END-IF          
*S**    /*  
*S**    /* Meet need    
*S**    /*  Reduce potential maximum by any potential FC award          
*S**    COMPUTE #AWARD-MAX = #AWARD-MAX - #AWARD-FC         
*S**    IF WFPKFNDD.WF-FU-MEET-NEED(#FUND-SUB) = 'Y'        
*S**      IF #AWARD-MAX > #REM-NEED 
*S**        ASSIGN #AWARD-NEED = #REM-NEED      
*S**      ELSE          
*S**        IF #AWARD-MAX > 0       
*S**          ASSIGN #AWARD-NEED = #AWARD-MAX   
*S**        ELSE        
*S**          ASSIGN #AWARD-NEED = 0
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    COMPUTE #REM-NEED = #REM-NEED - #AWARD-NEED         
*S**    /*  
*S**    /* Add award components (Meets FC and Need) for total award     
*S**    COMPUTE WFPKPAKD.AWARD-AMT(#FUND-SUB) = 
*S**            #AWARD-FC + #AWARD-NEED         
*S**    IF WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0    
*S**      ASSIGN #REJECT-RSN(#FUND-SUB) = #NO-NEED          
*S**      PERFORM PREPARE-BYPASS    
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**    /*  
*S**    /* Fund limits  
*S**    IF WFPKFNDD.WF-FU-LIMIT-AWDS(#FUND-SUB) NOT = ' '   
*S**      /* limit      
*S**      IF (WFPKFNDD.ENDING-BAL(#FUND-SUB) +  
*S**          WFPKPAKD.AWARD-AMT(#FUND-SUB)) >= 
*S**         WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB)  
*S**        IF WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB) -          
*S**           WFPKFNDD.ENDING-BAL(#FUND-SUB) > 0           
*S**          COMPUTE WFPKPAKD.AWARD-AMT(#FUND-SUB) =       
*S**                  WFPKFNDD.WF-FU-U-O-LIM(#FUND-SUB)-    
*S**                  WFPKFNDD.ENDING-BAL(#FUND-SUB)        
*S**          IF WFPKPAKD.AWARD-AMT(#FUND-SUB) <> 0         
*S**            /* Awarded amount GREATER than the fund award MAXIMUM do
*S**            /* not award and adjust remaining need      
*S**            IF WFPKPAKD.AWARD-AMT(#FUND-SUB) >          
*S**               WFPKFNDD.WF-FU-AWD-MAX(#FUND-SUB)        
*S**              ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0  
*S**              COMPUTE #REM-NEED = #REM-NEED + #AWARD-NEED           
*S**              ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-MAX-ERR         
*S**              ESCAPE ROUTINE    
*S**            END-IF  
*S**            /* Awarded amount LESS than the fund award MINIMUM do not           
*S**            /* award and adjust remaining need          
*S**            IF WFPKPAKD.AWARD-AMT(#FUND-SUB) <          
*S**               WFPKFNDD.WF-FU-AWD-MIN(#FUND-SUB)        
*S**              ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0  
*S**              COMPUTE #REM-NEED = #REM-NEED + #AWARD-NEED           
*S**              ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-MIN-ERR         
*S**              ESCAPE ROUTINE    
*S**            END-IF  
*S**            /* Awarded amount less than award need adjust remaining 
*S**            /* need no fund award minimum   
*S**            IF WFPKPAKD.AWARD-AMT(#FUND-SUB) < #AWARD-NEED          
*S**              COMPUTE #REM-NEED = #REM-NEED +           
*S**                (#AWARD-NEED - WFPKPAKD.AWARD-AMT(#FUND-SUB))       
*S**            END-IF  
*S**          END-IF    
*S**        ELSE        
*S**          ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0      
*S**          ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-LIMIT-ERR           
*S**          COMPUTE #REM-NEED = #REM-NEED + #AWARD-NEED   
*S**          ESCAPE ROUTINE        
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Awarded amount GREATER than the fund award MAXIMUM do          
*S**  /* not award and adjust remaining need    
*S**  IF WFPKPAKD.AWARD-AMT(#FUND-SUB) >        
*S**     WFPKFNDD.WF-FU-AWD-MAX(#FUND-SUB)      
*S**    ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0
*S**    COMPUTE #REM-NEED = #REM-NEED + #AWARD-NEED         
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-MAX-ERR       
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  /* Awarded amount LESS than the fund award MINIMUM do not         
*S**  /* award and adjust remaining need        
*S**  IF WFPKPAKD.AWARD-AMT(#FUND-SUB) <        
*S**     WFPKFNDD.WF-FU-AWD-MIN(#FUND-SUB)      
*S**    ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0
*S**    COMPUTE #REM-NEED = #REM-NEED + #AWARD-NEED         
*S**    ASSIGN #REJECT-RSN(#FUND-SUB) = #FUND-MIN-ERR       
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  /*    
*S**  IF WFPKPAKD.AWARD-AMT(#FUND-SUB) > 0      
*S**    ASSIGN #STUDENT-PACKAGED = TRUE         
*S**  ELSE  
*S**    ASSIGN WFPKPAKD.AWARD-AMT(#FUND-SUB) = 0
*S**  END-IF
*S**  IF #REM-NEED < 0  
*S**    ASSIGN #REM-NEED = 0        
*S**  END-IF
*S**  /*    
*S**  /* Update running totals      
*S**  ASSIGN WFPKPAKD.#RUN-NEED(#FUND-SUB) = #REM-NEED      
*S**  ASSIGN WFPKPAKD.#RUN-FC(#FUND-SUB) = #REM-FC          
*S**  ASSIGN WFPKPAKD.#RUN-SC(#FUND-SUB) = #REM-SC          
*S**  ASSIGN WFPKPAKD.#RUN-PC(#FUND-SUB) = #REM-PC          
*S**  IF WFPKPAKD.AWARD-AMT(#FUND-SUB) > 0      
*S**    COMPUTE WFPKFNDD.AWD-COUNT(#FUND-SUB) = 
*S**            WFPKFNDD.AWD-COUNT(#FUND-SUB) + 1           
*S**    COMPUTE WFPKFNDD.AWD-OFFERS(#FUND-SUB) =
*S**            WFPKFNDD.AWD-OFFERS(#FUND-SUB) +
*S**            WFPKPAKD.AWARD-AMT(#FUND-SUB)   
*S**    COMPUTE WFPKFNDD.ENDING-BAL(#FUND-SUB) =
*S**            WFPKFNDD.ENDING-BAL(#FUND-SUB) +
*S**            WFPKPAKD.AWARD-AMT(#FUND-SUB)   
*S**  END-IF
*S**  /*    
*S**END-SUBROUTINE /* PREPARE-AWARD 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PREPARE-BYPASS
*S*************************************************************************         
*S**  /*    
*S**  /* No award       
*S**  /* Update running totals      
*S**  ASSIGN WFPKPAKD.#RUN-NEED(#FUND-SUB) = #REM-NEED      
*S**  ASSIGN WFPKPAKD.#RUN-FC(#FUND-SUB) = #REM-FC          
*S**  ASSIGN WFPKPAKD.#RUN-SC(#FUND-SUB) = #REM-SC          
*S**  ASSIGN WFPKPAKD.#RUN-PC(#FUND-SUB) = #REM-PC          
*S**  /*    
*S**END-SUBROUTINE /* PREPARE-BYPASS
*S***       
*C**                                FATEMP  WFPKPAKL                        L S   NN0000        
*D01NAT8304L FATEMP  WFPKPAKL                        ZWDNH   ZWDNH           S      
*D02            2026070914464502026070914464500000006118    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****C           0   ***********************************************************************   
*S****C           0   *         WolffPack, Inc. 
*S****C           0   *Copyright 1995 - 2011    
*S****C           0   *LDA:    WFPKPAKL                              WolffPack, Inc.
*S****C           0   * System: FINANCIER                           All rights reserved.        
*S****C           0   * 
*S****C           0   ***********************************************************************   
*S****DS          0         1WFPKPAKL           
*S****C           0   *                                      /* Used to supply institution      
*S****C           0   *                                      /*  specific information           
*S****C           0   * 
*S****DS          0         2#REJECT-REASONS    
*S****DK   S      0002A2    3#NOT-PELL-ELIGIBLE 
*S****HS1   
*S****I                      PE     
*S****DK   S      0002A2    3#FUND-PREV-AWARDED 
*S****HS1   
*S****I                      FP     
*S****DK   S      0002A2    3#NO-NEED           
*S****HS1   
*S****I                      NN     
*S****DK   S      0002A2    3#DEGREE-REQ        
*S****HS1   
*S****I                      DR     
*S****DK   S      0002A2    3#FUND-FROZEN       
*S****HS1   
*S****I                      FF     
*S****DK   S      0002A2    3#FUND-ALLOW        
*S****HS1   
*S****I                      FA     
*S****DK   S      0002A2    3#PACKAGE-FUND      
*S****HS1   
*S****I                      PF     
*S****DK   S      0002A2    3#FUND-STATUS       
*S****HS1   
*S****I                      FS     
*S****DK   S      0002A2    3#FUND-NOT-FOUND    
*S****HS1   
*S****I                      FN     
*S****DK   S      0002A2    3#PAR-ED-LEVEL      
*S****HS1   
*S****I                      PL     
*S****DK   S      0002A2    3#PELL-INDEX-ERR    
*S****HS1   
*S****I                      PI     
*S****DK   S      0002A2    3#EFC-CHECK-ERR     
*S****HS1   
*S****I                      EC     
*S****DK   S      0002A2    3#FUND-MIN-ERR      
*S****HS1   
*S****I                      FM     
*S****DK   S      0002A2    3#FUND-MAX-ERR      
*S****HS1   
*S****I                      FX     
*S****DK   S      0002A2    3#FUND-LIMIT-ERR    
*S****HS1   
*S****I                      FL     
*S****DK   S      0002A2    3#NO-SECOND-DEGREE  
*S****HS1   
*S****I                      NS     
*S****DK   S      0002A2    3#INVALID-CLASS     
*S****HS1   
*S****I                      IC     
*S****DK   S      0002A2    3#INVALID-COLLEGE   
*S****HS1   
*S****I                      IL     
*S****DK   S      0002A2    3#INVALID-DEGREE    
*S****HS1   
*S****I                      IG     
*S****DK   S      0002A2    3#INVALID-MAJOR     
*S****HS1   
*S****I                      IM     
*S****DK   S      0002A2    3#INVALID-YR-COL    
*S****HS1   
*S****I                      YC     
*S****DK   S      0002A2    3#INVALID-DEP       
*S****HS1   
*S****I                      ID     
*S****DK   S      0002A2    3#INVALID-ENR       
*S****HS1   
*S****I                      IE     
*S****DK   S      0002A2    3#INVALID-REQ       
*S****HS1   
*S****I                      IR     
*S****DK   S      0002A2    3#NO-INT
*S****HS1   
*S****I                      NI     
*S****DK   S      0002A2    3#NO-LOAN           
*S****HS1   
*S****I                      NL     
*S****DK   S      0002A2    3#REQ-NOT-FOUND     
*S****HS1   
*S****I                      RQ     
*S****DK   S      0002A2    3#PROG-NOT-FOUND    
*S****HS1   
*S****I                      PN     
*S****DK   S      0002A2    3#REQ-FOUND         
*S****HS1   
*S****I                      RF     
*S****DK   S      0002A2    3#STATE-RES         
*S****HS1   
*S****I                      SR     
*S****DK   S      0002A2    3#GPA-THRESHOLD-ERR 
*S****HS1   
*S****I                      GT     
*S****DK   S      0002A2    3#NEED-THRESHOLD-ERR
*S****HS1   
*S****I                      NT     
*S****DK   S      0002A2    3#INCOME-THRESHOLD-ERR          
*S****HS1   
*S****I                      IT     
*S****DK   S      0002A2    3#FC-THRESHOLD-ERR  
*S****HS1   
*S****I                      FT     
*S****DK   S      0002A2    3#APPROVED-PROGRAM-ERR          
*S****HS1   
*S****I                      AP     
*S****DK   S      0002A2    3#SNAPSHOT-ERR      
*S****HS1   
*S****I                      SE     
*S****DK   S      0002A2    3#NUM-AWARDS        
*S****HS1   
*S****I                      NA     
*S****DK   S      0002A2    3#DATE-PASSED       
*S****HS1   
*S****I                      DP     
*S****DK   S      0002A2    3#ALTERNATE-FUND    
*S****HS1   
*S****I                      AF     
*S****DK   S      0002A2    3#DEP-STATUS-ERR    
*S****HS1   
*S****I                      DS     
*S****DK   S      0002A2    3#NOT-ELIGIBLE      
*S****HS1   
*S****I                      NE     
*S****DK   S      0002A2    3#FISAP-INCOME-ERR  
*S****HS1   
*S****I                      FI     
*S****DK   S      0002A2    3#ANNUAL-LIMIT-ERR  
*S****HS1   
*S****I                      AL     
*S****DK   S      0002A2    3#LIFETIME-LIMIT-ERR
*S****HS1   
*S****I                      LL     
*S****DK   S      0002A2    3#CIT-ERR           
*S****HS1   
*S****I                      CE     
*S****DK   S      0002A2    3#NOT-GRAD-STDNT    
*S****HS1   
*S****I                      NG     
*S****DK   S      0002A2    3#NOT-DEP-STDNT     
*S****HS1   
*S****I                      ND     
*S****DK   S      0002A2    3#NO-ISIR           
*S****HS1   
*S****I                      NR     
*S****DK   S      0002A2    3#NO-FUNDS          
*S****HS1   
*S****I                      NU     
*S****DK   S      0002A2    3#NO-PELL-AWARD     
*S****HS1   
*S****I                      PA     
*S****DK   S      0002A2    3#M2-BUDGET-ERR     
*S****HS1   
*S****I                      M2     
*S****DK   S      0002A2    3#GR-WITH-BACH-DEG-ERR          
*S****HS1   
*S****I                      GB     
*S****DK   S      0002A2    3#PELL-LEU-LIMIT    
*S****HS1   
*S****I                      LE     
*S****DK   S      0002A2    3#DL-SUB-LIMIT-ERR  
*S****HS1   
*S****I                      SL     
*S****DK   S      0002A2    3#HAS-BLANK-SAI     
*S****HS1   
*S****I                      BS     
*S****DK   S      0002A2    3#MAX-SAI-THRESHOLD 
*S****HS1   
*S****I                      MS     
*S****DK   S      0002A2    3#LIFETIME-MAX-ERR  
*S****HS1   
*S****I                      LM     
*S****DK   S      0002A2    3#CMB-LIMIT-GRAD-ERR-C          
*S****HS1   
*S****I                      L1     
*S****DK   S      0002A2    3#CMB-LIMIT-GRAD-ERR-E          
*S****HS1   
*S****I                      L2     
*S****C           0   * 
*S****C           0   *                                      /* OBBBA fields,       
*S****C           0   *                                      /*  used in WFPKPAKC, 2027+        
*S****DS          0         2#OBBBA-VARIABLES   
*S****DK   S      0002A1    3#NS-LIMIT-EXCEP    
*S****HS1   
*S****I                      N      
*S****DK   S      0002N6    3#NS-LIFETIME-MAX   
*S****HS1   
*S****I                      0      
*S****DK   S      0002N6    3#MAX-STUDENT-LIMIT 
*S****HS1   
*S****I                      0      
*S****DK   S      0002N6    3#ANNUAL-GRAD-UNSUB-OBBBA       
*S****HS1   
*S****I                      0      
*S****DK   S      0002N6    3#LIFETIME-GRAD-UNSUB-OBBBA     
*S****HS1   
*S****I                      0      
*S****DK   S      0002A1    3#NS-CMB-LIMIT-GRAD 
*S****HS1   
*S****I                      N      
*S****DK          0   A1    3#HOLD-RTN-CODE     
*S****C           0   * 
*E          
