*H**ANAT8304202608071228402LINUX                            4CAUC     04.2          
*C**                                FATEMP2 WFPKD27N                        N S   NN0000        
*D01NAT8304N FATEMP2 WFPKD27N                        ZWDNH   ZWDNH           S      
*D02            2026080710275302026080710275300000004576    
*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 GE #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**                                FATEMP2 WFPKPAKB                        F S   NN0000        
*D01NAT8304F FATEMP2 WFPKPAKB                        ZWDNH   ZWDNH           S      
*D02            2026080712202102026080712202100000056458    
*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(A6)           
*S**    02 #PRT2-FILLER3(A7) 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(A6)           
*S**    02 #PRT3-FILLER3(A7) 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**  IF ##AID-YEAR < '2027'        
*S**    SEPARATE #HOLD-TEMP3 INTO #HOLD-TEMP3 #HOLD-TEMP4   
*S**     WITH DELIMITER '\'         
*S**  ELSE  
*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**  END-IF
*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 (EM=ZZZZZ9-)         
*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 (EM=ZZZZZ9-)         
*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**  IF ##AID-YEAR < '2027'        
*S**    SEPARATE #HOLD-TEMP3 INTO #HOLD-TEMP3 #HOLD-TEMP4 #HOLD-TEMP5   
*S**     WITH DELIMITER '\'         
*S**  ELSE  
*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**  END-IF
*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 (EM=ZZZZZ9-)         
*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  WFNSB27E                        S S   NN0000        
*D01NAT8304S FATEMP  WFNSB27E                        ZWDNH   ZWDNH           S      
*D02            2026071210261502026071210261500000030083    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subroutine: WFNSB27E          
*S*** System    : FINANCIER         
*S*** Title     : 2026-27 NSLDS Load subroutine 
*S*** Function  : This external subroutine loads the student's          
*S***             NSLDS record from an external federal record.         
*S***             It is performed during the ADD Load process.          
*S***       
*S***       Note: Module copied from WFNSL27E, modified to allow for    
*S***             additional fields and increased field sizes in        
*S***             mid 2026-2027 processing year.
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER         
*S**   01 PASSED-NSLDS  
*S**     02 WF-NSLDS1(A250)         
*S**     02 WF-NSLDS2(A250)         
*S**     02 WF-NSLDS3(A250)         
*S**     02 WF-NSLDS4(A250)         
*S**     02 WF-NSLDS5(A250)         
*S**     02 WF-NSLDS6(A250)         
*S**     02 WF-NSLDS7(A250)         
*S**     02 WF-NSLDS8(A250)         
*S**     02 WF-NSLDS9(A250)         
*S**     02 WF-NSLDS10(A250)        
*S**     02 WF-NSLDS11(A51)         
*S***       
*S**  LOCAL USING WFNSB27L          
*S**  LOCAL USING WFNSL27D /* Passed to object subprogram   
*S**  LOCAL USING WFNSL27R /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /* Passed to object subprogram   
*S**  LOCAL 
*S**    01 #FIELD-COUNT (N2) INIT<0>
*S**    01 #LENGTH (N3) INIT<0>     
*S**END-DEFINE          
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-NSLDS-2627B          
*S*************************************************************************         
*S**  /*    
*S**  /* Set up record keys         
*S**  ASSIGN WFNSL27D.WF-FAO = ##FAO-ID         
*S**  ASSIGN WFNSL27D.WW-STUDENT-ID = ##STUDENT-ID          
*S**  /*    
*S**  /* Get NSLDS record           
*S**  MOVE 'GET' TO WWAOBJ.#FUNCTION
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**  IF WWAOBJ.#EXISTS 
*S**    MOVE 'UPDATE' TO WWAOBJ.#FUNCTION       
*S**  ELSE  
*S**    MOVE 'STORE' TO WWAOBJ.#FUNCTION        
*S**  END-IF
*S**  /*    
*S**  /* Load NSLDS record from passed federal record       
*S**  MOVE BY NAME PASSED-NSLDS TO WFNSB27L.WF-NSLDS        
*S**  /*    
*S**  /* year specific logic due to OBBBA modifications     
*S**  /*   (for fields not increased in size, max out at 999999)        
*S**  /*     (Assumed 00 for cents values)      
*S**  IF WFNSB27L.WF-NS-SUB-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-SUB-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-OUT    
*S**    COMPRESS 'A1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-SUB-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-UNS-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-OUT    
*S**    COMPRESS 'A2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-UNS-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-CMB-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-OUT    
*S**    COMPRESS 'A3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-CMB-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CON-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-CON-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CON-OUT    
*S**    COMPRESS 'A4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CON-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-CON-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-TCH-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-OUT    
*S**    COMPRESS 'A5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-TCH-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-SUB-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-SUB-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-PEND   
*S**    COMPRESS 'A6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-PEND ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-SUB-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-UNS-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-PEND   
*S**    COMPRESS 'A7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-PEND ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-UNS-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-PEND = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-CMB-PEND > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-PEND   
*S**    COMPRESS 'A8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-PEND ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-CMB-PEND 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-SUB-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-SUB-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-SUB-TOTAL  
*S**    COMPRESS 'A9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-SUB-TOTAL = 'N/A            '     
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-SUB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-UNS-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-UNS-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-UNS-TOTAL  
*S**    COMPRESS 'B1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-UNS-TOTAL = 'N/A            '     
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-UNS-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CMB-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-CMB-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CMB-TOTAL  
*S**    COMPRESS 'B2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CMB-TOTAL = 'N/A            '     
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-CMB-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-CON-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-CON-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-CON-TOTAL  
*S**    COMPRESS 'B3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-CON-TOTAL = 'N/A            '     
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-CON-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL = MASK(999999999999999) AND           
*S**     WFNSB27L.WF-NS-TCH-TOTAL > '000000099999900'       
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL  
*S**    COMPRESS 'B4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL = 'N/A            '     
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-TCH-TOTAL
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-PERK-TOTAL = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-PERK-TOTAL > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-PERK-TOTAL 
*S**    COMPRESS 'B5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-PERK-TOTAL = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-PERK-TOTAL           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-PERK-CUR = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-PERK-CUR > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-PERK-CUR   
*S**    COMPRESS 'B6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-PERK-CUR = 'N/A            '      
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-PERK-CUR 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL-UG = MASK(999999999999999) AND        
*S**     WFNSB27L.WF-NS-TCH-TOTAL-UG > '000000099999900'    
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL-UG           
*S**    COMPRESS 'B7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL-UG = 'N/A            '  
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-TCH-TOTAL-UG         
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-TCH-TOTAL-GR = MASK(999999999999999) AND        
*S**     WFNSB27L.WF-NS-TCH-TOTAL-GR > '000000099999900'    
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-TCH-TOTAL-GR           
*S**    COMPRESS 'B8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-TCH-TOTAL-GR = 'N/A            '  
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-TCH-TOTAL-GR         
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P1-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-SCH-AWD 
*S**    COMPRESS 'B9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P1-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P1-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-PAID    
*S**    COMPRESS 'C1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P1-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P1-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P1-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P1-AWARD   
*S**    COMPRESS 'C2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P1-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P1-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P2-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-SCH-AWD 
*S**    COMPRESS 'C3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P2-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P2-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-PAID    
*S**    COMPRESS 'C4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P2-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P2-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P2-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P2-AWARD   
*S**    COMPRESS 'C5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P2-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P2-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-P3-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-SCH-AWD 
*S**    COMPRESS 'C6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P3-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-P3-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-PAID    
*S**    COMPRESS 'C7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P3-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-P3-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-P3-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-P3-AWARD   
*S**    COMPRESS 'C8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-P3-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-P3-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T1-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-SCH-AWD 
*S**    COMPRESS 'C9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T1-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T1-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-PAID    
*S**    COMPRESS 'D1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T1-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T1-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-AWARD   
*S**    COMPRESS 'D2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T1-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T1-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-DCHG-AMT
*S**    COMPRESS 'D3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-DCHG-AMT = 'N/A            '   
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T1-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T1-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T1-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T1-ADJ-DSB 
*S**    COMPRESS 'D4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T1-ADJ-DSB = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T1-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T2-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-SCH-AWD 
*S**    COMPRESS 'D5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T2-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T2-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-PAID    
*S**    COMPRESS 'D6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T2-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T2-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-AWARD   
*S**    COMPRESS 'D7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T2-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T2-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-DCHG-AMT
*S**    COMPRESS 'D8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-DCHG-AMT = 'N/A            '   
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T2-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T2-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T2-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T2-ADJ-DSB 
*S**    COMPRESS 'D9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T2-ADJ-DSB = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T2-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-SCH-AWD = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T3-SCH-AWD > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-SCH-AWD 
*S**    COMPRESS 'E1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-SCH-AWD = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T3-SCH-AWD           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-PAID = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-T3-PAID > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-PAID    
*S**    COMPRESS 'E2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-PAID = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T3-PAID  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-AWARD = MASK(999999999999999) AND
*S**     WFNSB27L.WF-NS-T3-AWARD > '000000099999900'        
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-AWARD   
*S**    COMPRESS 'E3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-AWARD ='N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T3-AWARD 
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-DCHG-AMT = MASK(999999999999999) AND         
*S**     WFNSB27L.WF-NS-T3-DCHG-AMT > '000000099999900'     
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-DCHG-AMT
*S**    COMPRESS 'E4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-DCHG-AMT = 'N/A            '   
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T3-DCHG-AMT          
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-T3-ADJ-DSB = MASK(999999999999999) AND          
*S**     WFNSB27L.WF-NS-T3-ADJ-DSB > '000000099999900'      
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-T3-ADJ-DSB 
*S**    COMPRESS 'E5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-T3-ADJ-DSB = 'N/A            '    
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-T3-ADJ-DSB           
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-AMT    
*S**    COMPRESS 'E6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L01-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-OUT    
*S**    COMPRESS 'E7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L01-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L01-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L01-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L01-DSB    
*S**    COMPRESS 'E8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L01-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L01-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-AMT    
*S**    COMPRESS 'E9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L02-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-OUT    
*S**    COMPRESS 'F1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L02-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L02-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L02-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L02-DSB    
*S**    COMPRESS 'F2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L02-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L02-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-AMT    
*S**    COMPRESS 'F3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L03-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-OUT    
*S**    COMPRESS 'F4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L03-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L03-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L03-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L03-DSB    
*S**    COMPRESS 'F5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L03-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L03-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-AMT    
*S**    COMPRESS 'F6' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L04-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-OUT    
*S**    COMPRESS 'F7' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L04-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L04-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L04-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L04-DSB    
*S**    COMPRESS 'F8' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L04-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L04-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-AMT    
*S**    COMPRESS 'F9' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L05-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-OUT    
*S**    COMPRESS 'G1' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L05-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L05-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L05-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L05-DSB    
*S**    COMPRESS 'G2' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L05-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L05-DSB  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-AMT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-AMT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-AMT    
*S**    COMPRESS 'G3' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-AMT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L06-AMT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-OUT = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-OUT > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-OUT    
*S**    COMPRESS 'G4' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-OUT = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L06-OUT  
*S**    END-IF          
*S**  END-IF
*S**  IF WFNSB27L.WF-NS-L06-DSB = MASK(999999999999999) AND 
*S**     WFNSB27L.WF-NS-L06-DSB > '000000099999900'         
*S**    MOVE '000000099999900' TO WFNSB27L.WF-NS-L06-DSB    
*S**    COMPRESS 'G5' ',' ##PASS-TEMP INTO ##PASS-TEMP      
*S**      LEAVING NO SPACE          
*S**  ELSE  
*S**    IF WFNSB27L.WF-NS-L06-DSB = 'N/A            '       
*S**      MOVE '       N/A     ' TO WFNSB27L.WF-NS-L06-DSB  
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Remove last byte if it's a comma       
*S**  EXAMINE ##PASS-TEMP FOR ',' GIVING LENGTH IN #LENGTH  
*S**  IF #LENGTH > 0 AND SUBSTRING(##PASS-TEMP, #LENGTH, 1) = ','       
*S**    ASSIGN #LENGTH = #LENGTH - 1
*S**    MOVE SUBSTRING(##PASS-TEMP, 1, #LENGTH) TO ##PASS-TEMP          
*S**  END-IF
*S**  /*    
*S**  MOVE BY NAME WFNSB27L.WF-NSLDS TO WFNSL27D.WF-NSLDS   
*S**  /*    
*S**  /* Need to move bytes 8-13 of 59 fields not increased 
*S**  /*  with mid year 2026-2027 mods          
*S**  /*   (ignoring cents)         
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-SUB-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-UNS-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-CMB-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CON-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-CON-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-TCH-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-SUB-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-UNS-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-PEND,8,6) TO        
*S**       WFNSL27D.WF-NS-CMB-PEND  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-SUB-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-SUB-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-UNS-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-UNS-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CMB-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-CMB-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-CON-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-CON-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL,8,6) TO       
*S**       WFNSL27D.WF-NS-TCH-TOTAL 
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-PERK-TOTAL,8,6) TO      
*S**       WFNSL27D.WF-NS-PERK-TOTAL
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-PERK-CUR,8,6) TO        
*S**       WFNSL27D.WF-NS-PERK-CUR  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL-UG,8,6) TO    
*S**       WFNSL27D.WF-NS-TCH-TOTAL-UG          
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-TCH-TOTAL-GR,8,6) TO    
*S**       WFNSL27D.WF-NS-TCH-TOTAL-GR          
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P1-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P1-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P1-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P1-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P2-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P2-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P2-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P2-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-P3-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-P3-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-P3-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-P3-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T1-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T1-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T1-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T1-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T1-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T1-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T2-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T2-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T2-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T2-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T2-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T2-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-SCH-AWD,8,6) TO      
*S**       WFNSL27D.WF-NS-T3-SCH-AWD
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-PAID,8,6) TO         
*S**       WFNSL27D.WF-NS-T3-PAID   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-AWARD,8,6) TO        
*S**       WFNSL27D.WF-NS-T3-AWARD  
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-DCHG-AMT,8,6) TO     
*S**       WFNSL27D.WF-NS-T3-DCHG-AMT           
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-T3-ADJ-DSB,8,6) TO      
*S**       WFNSL27D.WF-NS-T3-ADJ-DSB
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L01-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L01-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L02-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L02-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L03-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L03-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L04-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L04-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L05-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L05-DSB   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-AMT,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-AMT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-OUT,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-OUT   
*S**  MOVE SUBSTRING(WFNSB27L.WF-NS-L06-DSB,8,6) TO         
*S**       WFNSL27D.WF-NS-L06-DSB   
*S**  /*    
*S**  /* Perform I/O to create/update record    
*S**  CALLNAT 'WFNSL27O' WW-GDA     
*S**           WFNSL27D 
*S**           WFNSL27D-ID          
*S**           WFNSL27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* LOAD-NSLDS-2627B          
*S**END     
*C**                                FATEMP  WFNSD27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFNSD27P                        ZWDNH   ZWDNH           S      
*D02            2026071208253702026071208253700000018348    
*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**    /*  
*S**    IF WFNSL27D.WF-NS-LIFE-MAX-TOT = MASK(999999999999999)          
*S**      /*
*S**      /* remove implied decimal 
*S**      MOVE SUBSTRING(WFNSL27D.WF-NS-LIFE-MAX-TOT,1,13) TO           
*S**           WFNSL27D.WF-NS-LIFE-MAX-TOT      
*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     
*E          
