*H**ANAT8304202608211421154LINUX                            4CAUC     04.2          
*C**                                FATEMP  WFTCH27P                        F S   NN0000        
*D01NAT8304F FATEMP  WFTCH27P                        ZWDNH   ZWDNH           S      
*D02            2026082017035102026082017035100000015601    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S****SAG GENERATOR: WW-OBJECT-MAINT-DIALOG           Version: 3.2.2    
*S****SAG TITLE: 2026-27 TEACH Reporting        
*S****SAG SYSTEM: FINANCIER         
*S****SAG GDA: WWGDA    
*S****SAG DESCS(1): This program maintains the WF-CPS-2627  
*S****SAG DESCS(2): file via the WFTCH27M map.  
*S****SAG HEADER1: FINANCIER        
*S****SAG DIRECT-COMMAND-PROCESS:   
*S****SAG ACTIONS: 0101010100000000 
*S****SAG OBJECT-NAME: WFCPS27O     
*S****SAG MAX-WINDOWS: 1
*S****SAG MAP-NAME(1): WFTCH27M     
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFTCH27P           
*S*** System   : FINANCIER          
*S*** Title    : 2026-27 TEACH Reporting        
*S*** Function : This program maintains the WF-CPS-2627     
*S***            file via the WFTCH27M map.     
*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 WFCPS27D /* Passed to object subprogram   
*S**  LOCAL USING WFCPS27R /* Passed to object subprogram   
*S**  LOCAL USING WFCPS27S /* 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<'WFPELNNP'> 
*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***       
*S**  LOCAL USING WFTCH27D          
*S**  LOCAL 
*S**  01 #TEACH1-DISB-DISPLAY           /* Arrays passed to shared      
*S**    02 #CUR-T1-D-DP   (A1/12)       /*   disbursement display       
*S**    02 #CUR-T1-D-OFF  (P5.2/12)     /*   routine WFFGDSBN do not    
*S**    02 #CUR-T1-D-DIS  (P5.2/12)     /*   include #xxx-REL fields    
*S**    02 #CUR-T1-D-DATE (D/12)        /*   that are not needed for    
*S**    02 #RPT-T1-D-NUM  (N2/12)       /*   display, and are not       
*S**    02 #RPT-T1-D-SEQ  (N2/12)       /*   part of Pell/ACG/SMART     
*S**    02 #RPT-T1-D-DIS  (P5.2/12)     /*   data buffers   
*S**    02 #RPT-T1-D-DATE (D/12)    
*S**    02 #ACK-T1-D-NUM  (N2/12)   
*S**    02 #ACK-T1-D-SEQ  (N2/12)   
*S**    02 #ACK-T1-D-DIS  (P5.2/12) 
*S**    02 #ACK-T1-D-DATE (D/12)    
*S**  01 #TEACH2-DISB-DISPLAY       
*S**    02 #CUR-T2-D-DP   (A1/12)   
*S**    02 #CUR-T2-D-OFF  (P5.2/12) 
*S**    02 #CUR-T2-D-DIS  (P5.2/12) 
*S**    02 #CUR-T2-D-DATE (D/12)    
*S**    02 #RPT-T2-D-NUM  (N2/12)   
*S**    02 #RPT-T2-D-SEQ  (N2/12)   
*S**    02 #RPT-T2-D-DIS  (P5.2/12) 
*S**    02 #RPT-T2-D-DATE (D/12)    
*S**    02 #ACK-T2-D-NUM  (N2/12)   
*S**    02 #ACK-T2-D-SEQ  (N2/12)   
*S**    02 #ACK-T2-D-DIS  (P5.2/12) 
*S**    02 #ACK-T2-D-DATE (D/12)    
*S***       
*S**  LOCAL 
*S**  01 #INPUT-EFF-DATE-D(D)       
*S***       
*S**  01 #CURRENT-TCH-EDITED        
*S**    02 #CUR-COST-E(A6)          
*S**    02 #CUR-T1-ENR-DATE-E(A10)  
*S**    02 #CUR-T1-AWARD-E(A9)      
*S**    02 #CUR-T1-DISB-E(A9)       
*S**    02 #CUR-T2-ENR-DATE-E(A10)  
*S**    02 #CUR-T2-AWARD-E(A9)      
*S**    02 #CUR-T2-DISB-E(A9)       
*S***       
*S**  01 #HOLD-ACTION(A1)           
*S**  01 #HOLD-FUNCTION(A15)        
*S***       
*S**  01 #ORIG-T1-ACT(A1)           
*S**  01 #ORIG-T2-ACT(A1)           
*S***       
*S**  01 #FUND-TYPE(A2) 
*S***       
*S**  01 #TAB-T1-DISBS(A1)          
*S**  01 #TAB-T2-DISBS(A1)          
*S***       
*S**  01 #TAB-T2-CV(C)  
*S**  01 #T2-CV(C)      
*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 'WFCPS27D' TO ##FILE-ID          
*S**      MOVE #SECURITY-PROGRAM TO ##PGM-ID    
*S**      PERFORM CPS-2627-SECURITY CPS-2627-CNTL-VARS      
*S**      RESET INITIAL CPS-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 WFCPS27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFCPS27D.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**    IF #FUNCTION = 'GET'        
*S**     /* 
*S**     /* Get TEACH funds from Grant type table           
*S**     IF #TEACH-FUND(*) = SPACE  
*S**       MOVE 'E ' TO #FUND-TYPE                        /* TEACH      
*S**       PERFORM GET-FUND-IDS #FUND-TYPE #TEACH-FUND(*)   
*S**     END-IF         
*S**     /* 
*S**     MOVE *DATX TO #INPUT-EFF-DATE-D        
*S**     ASSIGN #TEACH-ACTION = 'G' 
*S**     RESET #TEACH1-DATA #TEACH2-DATA #TEACH-ACTIVE-FUND(*)          
*S**     /* 
*S**     /* Prefill FY fields if previous report
*S**     MOVE WFCPS27D.WF-CP-RT1-FY TO #CUR-T1-FY           
*S**     MOVE WFCPS27D.WF-CP-RT2-FY TO #CUR-T2-FY           
*S**     /* 
*S**     PERFORM TEACH-REPORT-2627 #INPUT-EFF-DATE-D WFTCH27D           
*S**     MOVE EDITED #CUR-T1-ENR-DATE (EM=MM/DD/YYYY) TO #CUR-T1-ENR-DATE-E         
*S**     MOVE EDITED #CUR-T1-AWARD (EM=ZZ,ZZZ.99) TO #CUR-T1-AWARD-E    
*S**     MOVE EDITED #CUR-T1-DISB (EM=ZZ,ZZZ.99) TO #CUR-T1-DISB-E      
*S**     MOVE EDITED #CUR-T2-ENR-DATE (EM=MM/DD/YYYY) TO #CUR-T2-ENR-DATE-E         
*S**     MOVE EDITED #CUR-T2-AWARD (EM=ZZ,ZZZ.99) TO #CUR-T2-AWARD-E    
*S**     MOVE EDITED #CUR-T2-DISB (EM=ZZ,ZZZ.99) TO #CUR-T2-DISB-E      
*S**     /* 
*S**     /* If no data relevant to second grant, make fields non-display
*S**     IF WFCPS27D.WF-CP-RT2-A-GRANT GE 1 OR  
*S**        WFCPS27D.WF-CP-RT2-R-GRANT GE 1 OR  
*S**        #CUR-T2-AWARD > 0 OR    
*S**        #CUR-T2-DISB > 0 OR     
*S**        #CUR-T2-YR-COL = '0' THRU '13'      
*S**       MOVE NON-DISPLAY-ATTR TO #TAB-T2-CV  
*S**       MOVE PROTECTED-ATTR TO #T2-CV        
*S**     ELSE           
*S**       MOVE NON-DISPLAY-PROT-ATTR TO #TAB-T2-CV #T2-CV  
*S**     END-IF         
*S**    END-IF          
*S****SAG END-EXIT      
*S**    /*  
*S**    /* Load shadow file definitions for appropriate map 
*S**    IF NOT #CONFIRM-PURGE       
*S**      MOVE LOAD TO #SUB-PARM    
*S**      PERFORM CALL-EXT-SUB      
*S**    END-IF          
*S**    /*  
*S**    /* Assign appropriate message           
*S**    IF ##MSG = SPACE
*S**      DECIDE ON FIRST VALUE OF #FUNCTION    
*S**        VALUE 'GET' 
*S**          IF #ADD-OBJECT        
*S**            COMPRESS 'This information not currently stored for #TEMP,'         
*S**              'ready to add' INTO ##MSG     
*S**          ELSE      
*S**            COMPRESS 'To modify the current #TEMP information,'     
*S**              'make changes and press ENTER' INTO ##MSG 
*S**          END-IF    
*S**        VALUE 'NEXT'
*S**          COMPRESS 'Next #TEMP information has been displayed'      
*S**            INTO ##MSG          
*S**        VALUE 'UPDATE'          
*S**          COMPRESS '#TEMP information has been modified'
*S**            INTO ##MSG          
*S**        VALUE 'STORE'           
*S**          COMPRESS '#TEMP information has been added'   
*S**            INTO ##MSG          
*S**        VALUE 'DELETE'          
*S**          IF #CONFIRM-PURGE     
*S**            COMPRESS '#TEMP information has been purged'
*S**              INTO ##MSG        
*S**          ELSE      
*S**            COMPRESS 'Press ENTER to confirm purge'     
*S**              INTO ##MSG        
*S**          END-IF    
*S**        ANY         
*S**          EXAMINE ##MSG FOR '#TEMP' AND REPLACE WITH ##SYSTEM-DATA-TYPE         
*S**          EXAMINE ##MSG FOR ##SYSTEM-DATA-TYPE GIVING POSITION #TYPE-POS        
*S**          IF #TYPE-POS = 1      
*S**            EXAMINE SUBSTRING(##MSG,1,1) AND TRANSLATE INTO UPPER CASE          
*S**          END-IF    
*S**        NONE        
*S**          IGNORE    
*S**      END-DECIDE    
*S**    END-IF          
*S**    SET CONTROL 'WB'
*S****SAG DEFINE EXIT DEFINE-WINDOW 
*S**    /*  
*S**    /*  Define Window attributes
*S**    DEFINE WINDOW TEACH         
*S**           SIZE 18*77           
*S**           BASE 4 / 2           
*S**           TITLE 'TEACH Reporting'          
*S**           CONTROL SCREEN       
*S**           FRAMED ON (CD=NE)    
*S**           POSITION OFF         
*S**    SET WINDOW 'TEACH'          
*S**    ASSIGN ##COLOR = 'NE'       
*S****SAG END-EXIT      
*S**    /*  
*S**    /* INPUT processing         
*S**    /*  
*S**    /* Input Map    
*S**    IF NOT #BYPASS-INPUT        
*S**      INPUT WITH TEXT ##MSG,    
*S**                      ##MSG-DATA(1),##MSG-DATA(2),##MSG-DATA(3)     
*S**            USING MAP 'WFTCH27M'
*S**    END-IF          
*S**    /*  
*S**    RESET ##MSG     
*S****SAG DEFINE EXIT AFTER-INPUT   
*S**    /*  
*S**    /*  If Expand key selected, fetch Disbursements display         
*S**    IF *PF-KEY = WWKEYLDA.#EXPAND-KEY       
*S**      IF *CURS-FIELD = POS(#TAB-T1-DISBS)   
*S**        MOVE BY NAME #TEACH1-DISB-DETAIL TO #TEACH1-DISB-DISPLAY    
*S**        CALLNAT 'WFFGDSBN' WW-GDA #TEACH1-DISB-DISPLAY  
*S**        RESET #DISPLAYED-KEY    
*S**        ESCAPE TOP  
*S**      ELSE          
*S**        IF *CURS-FIELD = POS(#TAB-T2-DISBS) 
*S**          MOVE BY NAME #TEACH2-DISB-DETAIL TO #TEACH2-DISB-DISPLAY  
*S**          CALLNAT 'WFFGDSBN' WW-GDA #TEACH2-DISB-DISPLAY
*S**          RESET #DISPLAYED-KEY  
*S**          ESCAPE TOP
*S**        ELSE        
*S**          REINPUT 'Not an expandable field' ALARM       
*S**        END-IF      
*S**      END-IF        
*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**      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 WFTCH27M-MASK-EDITS #SUB-PARM WWVALLDA        
*S**          WFCPS27D WFCPS27D-ID WFCPS27R WFCPS27S        
*S**END-SUBROUTINE /* CALL-EXT-SUB  
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT   
*S*************************************************************************         
*S**  /*    
*S**  /* Prior to processing object 
*S**  IF WWAOBJ.#FUNCTION = 'DELETE'
*S**    RESET #CONFIRM-PURGE        
*S**  END-IF
*S****SAG DEFINE EXIT BEFORE-OBJECT-CALL        
*S**  /*    
*S**  /* Additional processing before calling the main object subprogram
*S**  IF WWAOBJ.#FUNCTION = 'UPDATE'
*S**    /*  
*S**    /* If Orig or Disb action has changed, update datestamp         
*S**    IF WFCPS27D.WF-CP-RT1-ACT NE #ORIG-T1-ACT           
*S**      IF WFCPS27D.WF-CP-RT1-ACT = ' '       
*S**        RESET WFCPS27D.WF-CP-RT1-ACT-RSN    
*S**              WFCPS27D.WF-CP-RT1-ACT-DATE   
*S**      ELSE          
*S**        ASSIGN WFCPS27D.WF-CP-RT1-ACT-DATE = *DATX      
*S**      END-IF        
*S**    END-IF          
*S**    IF WFCPS27D.WF-CP-RT2-ACT NE #ORIG-T2-ACT           
*S**      IF WFCPS27D.WF-CP-RT2-ACT = ' '       
*S**        RESET WFCPS27D.WF-CP-RT2-ACT-RSN    
*S**              WFCPS27D.WF-CP-RT2-ACT-DATE   
*S**      ELSE          
*S**        ASSIGN WFCPS27D.WF-CP-RT2-ACT-DATE = *DATX      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S****SAG END-EXIT      
*S**  /*    
*S**  /* Assign #KEY to equal the input fields  
*S**  MOVE BY NAME WFCPS27D TO WFCPS27D-ID.STRUCTURE        
*S**  ASSIGN #KEY = WFCPS27D-ID     
*S**  /*    
*S**  /* Invoke subprogram to process object    
*S**  PERFORM CALL-OBJECT-IO        
*S****SAG DEFINE EXIT AFTER-OBJECT-CALL         
*S**  /*    
*S**  /* On each I/O, capture "original" actions to use in comparison   
*S**  MOVE WFCPS27D.WF-CP-RT1-ACT TO #ORIG-T1-ACT           
*S**  MOVE WFCPS27D.WF-CP-RT2-ACT TO #ORIG-T2-ACT           
*S****SAG END-EXIT      
*S**  /*    
*S**  IF WWAOBJ.#FUNCTION = 'GET' AND           
*S**     NOT WWAOBJ.#EXISTS         
*S**    ASSIGN #ADD-OBJECT = TRUE   
*S**  END-IF
*S**  /*    
*S**  ASSIGN #DISPLAYED-KEY = WFCPS27D-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 'WFCPS27O' WW-GDA     
*S**           WFCPS27D 
*S**           WFCPS27D-ID          
*S**           WFCPS27R 
*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.#NOTEPAD-KEY       
*S**                WWKEYLDA.#EXPAND-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**END     
*C**                                FATEMP  WFTCR27N                        N S   NN0000        
*D01NAT8304N FATEMP  WFTCR27N                        ZWDNH   ZWDNH           S      
*D02            2026082017112402026082017112400000029367    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFTCR27N          
*S*** System    : FINANCIER         
*S*** Title     : Federal Grant Export          
*S*** Function  : This subprogram produces TEACH Federal Grant records  
*S***             to be converted by WFFLEyyB to XML documents ready    
*S***             for transmittal to COD.       
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER USING WWREQIBD      
*S**  PARAMETER USING WFTCH27D      
*S**  PARAMETER USING WWTABLED      
*S**  PARAMETER USING WWSTDNCD      
*S**  PARAMETER USING WFCPS27D      
*S**  PARAMETER USING WFFED27D      
*S**  PARAMETER USING WFISW27D      
*S**  PARAMETER         
*S**   01 #REPORT-TEACH(L)          
*S**  PARAMETER         
*S**   01 #ACCUMULATORS 
*S**     02 #STUDENT-COUNT(P7)      
*S**     02 #P-STNT-COUNT (P7)      
*S**     02 #P-AWRD-TOTAL (P13.2)   
*S**     02 #P-AWRD-NET   (P13.2)   
*S**     02 #P-DISB-TOTAL (P13.2)   
*S**     02 #P-DISB-NET   (P13.2)   
*S**     02 #T-STNT-COUNT (P7)      
*S**     02 #T-AWRD-TOTAL (P13.2)   
*S**     02 #T-AWRD-NET   (P13.2)   
*S**     02 #T-DISB-TOTAL (P13.2)   
*S**     02 #T-DISB-NET   (P13.2)   
*S**  PARAMETER         
*S**   01 #PRINT-LINE   
*S**     02 #PRT-STUDENT-ID(A9)     
*S**     02 #PRT-STUDENT-NAME(A35)  
*S**     02 #PRT-FED-TRAN(A2)       
*S**     02 #FILLER(A1) 
*S**     02 #PRT-GRANT(A6)          
*S**     02 #PRT-RECTYPE(A4)        
*S**     02 #PRT-AMT(A8)
*S**     02 #PRT-COMMENT(A20)       
*S**  PARAMETER         
*S**   01 #ERROR-LINE   
*S**     02 #ERR-STUDENT-ID(A9)     
*S**     02 #ERR-STUDENT-NAME(A35)  
*S**     02 #ERR-FED-TRAN(A2)       
*S**     02 #FILLER(A1) 
*S**     02 #ERR-GRANT(A6)          
*S**     02 #ERR-RECTYPE(A4)        
*S**     02 #ERR-AMT(A8)
*S**     02 #ERR-COMMENT(A20)       
*S***       
*S**  LOCAL USING WWCONST           
*S**  LOCAL USING WFFLE27D          
*S**  LOCAL USING WFFID27D /* Instituional Data Load        
*S**  LOCAL USING WWCALEND /* Passed to object subprogram   
*S**  LOCAL USING WWCALENR /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /*       
*S***       
*S**  LOCAL 
*S**   01 #REPORT-ORIG(L)           
*S**   01 #REPORT-DISB(L)           
*S**   01 #REPORT-ERROR(L)          
*S***       
*S**   01 #EVENT-TYPE(A5)           
*S**   01 #EVENT-DESC(A40)          
*S**   01 #EVENT-ORIGINATION        
*S**     02 #EO-ORIG-LABEL(A6)  INIT<'Orig  '>  
*S**     02 #EO-CLAS-LABEL(A6)  INIT<'Class='>  
*S**     02 #EO-CLAS-VALUE(A2)      
*S**     02 #EO-TRAN-LABEL(A14) INIT<' FederalTran#='>      
*S**     02 #EO-TRAN-VALUE(A2)      
*S**     02 #EO-AWRD-LABEL(A5)  INIT<' Awd='>   
*S**     02 #EO-AWRD-VALUE(A6)      
*S**   01 REDEFINE #EVENT-ORIGINATION           
*S**     02 #EVENT-ORIG(A41)        
*S**   01 #EVENT-DISBURSEMENT       
*S**     02 #ED-DISB-LABEL(A6)  INIT<'Disb  '>  
*S**     02 #ED-DSBN-LABEL(A5)  INIT<'Dsb#='>   
*S**     02 #ED-DSBN-VALUE(A2)      
*S**     02 #ED-SEQN-LABEL(A6)  INIT<' Seq#='>  
*S**     02 #ED-SEQN-VALUE(A2)      
*S**     02 #ED-FILLER    (A1)  INIT<' '>       
*S**     02 #ED-DPNM-VALUE(A7)      
*S**     02 #ED-DSBV-LABEL(A5)  INIT<' Dsb='>   
*S**     02 #ED-DSBV-VALUE(A6)      
*S**   01 REDEFINE #EVENT-DISBURSEMENT          
*S**     02 #EVENT-DISB(A40)        
*S***       
*S**   01 #WW-CALENDAR  
*S**     02 WW-RT01-BEG-DATE(D)     
*S**     02 WW-RT02-BEG-DATE(D)     
*S**     02 WW-RT03-BEG-DATE(D)     
*S**     02 WW-RT04-BEG-DATE(D)     
*S**     02 WW-RT05-BEG-DATE(D)     
*S**     02 WW-RT06-BEG-DATE(D)     
*S**     02 WW-RT07-BEG-DATE(D)     
*S**     02 WW-RT08-BEG-DATE(D)     
*S**     02 WW-RT09-BEG-DATE(D)     
*S**     02 WW-RT10-BEG-DATE(D)     
*S**     02 WW-RT11-BEG-DATE(D)     
*S**     02 WW-RT12-BEG-DATE(D)     
*S**     02 WW-RT01-END-DATE(D)     
*S**     02 WW-RT02-END-DATE(D)     
*S**     02 WW-RT03-END-DATE(D)     
*S**     02 WW-RT04-END-DATE(D)     
*S**     02 WW-RT05-END-DATE(D)     
*S**     02 WW-RT06-END-DATE(D)     
*S**     02 WW-RT07-END-DATE(D)     
*S**     02 WW-RT08-END-DATE(D)     
*S**     02 WW-RT09-END-DATE(D)     
*S**     02 WW-RT10-END-DATE(D)     
*S**     02 WW-RT11-END-DATE(D)     
*S**     02 WW-RT12-END-DATE(D)     
*S**   01 REDEFINE #WW-CALENDAR     
*S**     02 #WW-TERM-START-DATE(D/12)           
*S**     02 #WW-TERM-END-DATE(D/12) 
*S***       
*S**   01 #CAL-TBL-VAL(A10)         
*S**   01 REDEFINE #CAL-TBL-VAL     
*S**     02 #CAL-AY(A4) 
*S**     02 #CAL-FAO(A2)
*S**     02 #CAL-SCHED(A1)          
*S***       
*S**   01 #SUB(N2)       /* Used for passed array and schedule array    
*S**   01 #DSUB(N2)      /* Used for passed array searches  
*S**   01 #ESUB(N2)      /* Used for export array           
*S**   01 #HOLD-NUM(N2) 
*S***       
*S**   01 #GRANT-ID(A23)
*S**   01 REDEFINE #GRANT-ID        
*S**     02 #GID-SSN(A9)
*S**     02 #GID-TYPE(A1)           
*S**     02 #GID-YEAR(A2)           
*S**     02 #GID-SCHOOL(A6)         
*S**     02 #GID-NUM(N3)
*S***       
*S**   01 #AID-CCYY(A4) 
*S**   01 REDEFINE #AID-CCYY        
*S**     02 #AID-CC(A2) 
*S**     02 #AID-YY(A2) 
*S***       
*S**   01 #FID-TYPE(A5)     INIT<'Teach'>       
*S**   01 #FID-FUNCTION(A6) INIT<'EXPORT'>      
*S***       
*S**   01 #DISB-SUB(P3) 
*S**   01 #TERM-SUB(P3) 
*S**   01 #SCHED-DP(A1/12)          
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**FORMAT(2) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S**FORMAT(3) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S***       
*S**AT TOP OF PAGE(2)   
*S**  WRITE(2) NOTITLE ##PGM-ID     
*S**        21T '*** FINANCIER FEDERAL GRANT EXPORT ***'    
*S**        71T 'Page' *PAGE-NUMBER(2)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        31T 'Students in Error' 
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name            Tran  Grant   Transaction'   
*S**        'Errors'    
*S**  SKIP(2) 1         
*S**END-TOPPAGE         
*S**AT TOP OF PAGE(3)   
*S**  WRITE(3) NOTITLE *PROGRAM     
*S**        21T '*** FINANCIER FEDERAL GRANT EXPORT ***'    
*S**        71T 'Page' *PAGE-NUMBER(3)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        31T 'Reported Students' 
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name            Tran  Grant   Transaction'   
*S**  SKIP(3) 1         
*S**END-TOPPAGE         
*S***       
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**MOVE BY POSITION WW-PDA TO WW-GDA           
*S**MOVE ##AID-YEAR TO #AID-CCYY    
*S***       
*S**ASSIGN #TEACH-ACTION = 'G'      
*S**RESET #TEACH1-DATA #TEACH2-DATA #TEACH-ACTIVE-FUND(*)   
*S***       
*S*** Prefill FY fields if previous report      
*S**MOVE WFCPS27D.WF-CP-RT1-FY TO #CUR-T1-FY    
*S**MOVE WFCPS27D.WF-CP-RT2-FY TO #CUR-T2-FY    
*S***       
*S**PERFORM TEACH-REPORT-2627 #INPUT-EFF-DATE-D WFTCH27D    
*S***       
*S**PERFORM GET-TERM-BEG-DATES      
*S***       
*S**PERFORM DECIDE-TO-REPORT-TEACH1 
*S**PERFORM DECIDE-TO-REPORT-TEACH2 
*S**IF #REPORT-TEACH    
*S**  ASSIGN #TEACH-ACTION = 'R'    
*S**  PERFORM TEACH-REPORT-2627 #INPUT-EFF-DATE-D WFTCH27D  
*S**END-IF  
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**MOVE BY POSITION WW-GDA TO WW-PDA           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DECIDE-TO-REPORT-TEACH1   
*S*************************************************************************         
*S**  /*    
*S**  /* If Runmode is not RECOVER, skip anyone who has a "hold" action;
*S**  /*  skip anyone who has been reported and the COD response has not
*S**  /*  been received and processed unless re-report has been requested;          
*S**  /*  skip anyone who has no award and no previously-reported award 
*S**  /* If Runmode is RECOVER, skip anyone who was not reported        
*S**  /*  on the Effective Date     
*S**  IF #INPUT-RUNMODE NE 'RECOVER' AND        
*S**     (WFCPS27D.WF-CP-RT1-ACT = 'H' OR       
*S**     (WFCPS27D.WF-CP-RT1-RPT-DATE > WFCPS27D.WF-CP-RT1-O-ACK-DATE AND           
*S**      WFCPS27D.WF-CP-RT1-RPT-DATE > WFCPS27D.WF-CP-RT1-D-ACK-DATE AND           
*S**      WFCPS27D.WF-CP-RT1-ACT NE 'R') OR     
*S**     (#CUR-T1-AWARD = 0 AND WFCPS27D.WF-CP-RT1-A-AWARD = 0))        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #INPUT-RUNMODE = 'RECOVER' 
*S**    IF WFCPS27D.WF-CP-RT1-RPT-DATE NE #INPUT-EFF-DATE-D 
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  RESET #REPORT-ORIG #REPORT-DISB #REPORT-ERROR         
*S**  RESET WFFLE27D #ESUB          
*S**  /*    
*S**  /* Retrieve institutional data
*S**  FOR #DISB-SUB = 1 TO 12       
*S**    IF #CUR-T1-D-DP(#DISB-SUB) <> ' ' AND   
*S**       (#CUR-T1-D-OFF(#DISB-SUB) <> 0 OR    
*S**        #CUR-T1-D-DIS(#DISB-SUB) <> 0)      
*S**      MOVE #CUR-T1-D-DP(#DISB-SUB) TO #SCHED-DP(#DISB-SUB)          
*S**    END-IF          
*S**  END-FOR           
*S**  PERFORM LOAD-INST-DATA        
*S**  /*    
*S**  /* Set up print line          
*S**  MOVE 'TEACH1' TO #PRT-GRANT #ERR-GRANT    
*S**  MOVE 'Orig' TO #PRT-RECTYPE #ERR-RECTYPE  
*S**  MOVE EDITED #CUR-T1-AWARD (EM=Z,ZZZ.99) TO #PRT-AMT   
*S**  MOVE EDITED #CUR-T1-AWARD (EM=Z,ZZZ.99) TO #ERR-AMT   
*S**  /*    
*S**    IF #CUR-T1-AWARD > 0        
*S**      IF NOT WFISW27D.#EXISTS   
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'No ISIR' TO #ERR-COMMENT      
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF WFCPS27D.WF-CP-C-TRANS-NO = ' '    
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'TRANS NO' TO #ERR-COMMENT     
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T1-YR-COL EQ '6' OR           
*S**         #CUR-T1-YR-COL EQ '7'  
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Class level' TO #ERR-COMMENT  
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T1-ENR-DATE = INIT-DATE       
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Enrollment date' TO #ERR-COMMENT          
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      /* Invalid ATB codes      
*S**      /*   (05,11,13 retired)   
*S**      IF WWSTDNCD.WW-ST-ATB-CODE = '  ' OR  
*S**         (WWSTDNCD.WW-ST-ATB-CODE = '05' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '11' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '13')   
*S**         ASSIGN #REPORT-ERROR = TRUE        
*S**        MOVE 'ATB code' TO #ERR-COMMENT     
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #REPORT-ERROR          
*S**        ESCAPE ROUTINE          
*S**      END-IF        
*S**    END-IF          
*S**  IF (#INPUT-RUNMODE = 'RECOVER' AND        
*S**      WFCPS27D.WF-CP-RT1-RPT-DATE = #INPUT-EFF-DATE-D) OR           
*S**     WFCPS27D.WF-CP-RT1-ACT = 'R' OR        
*S**     #CUR-T1-YR-COL   NE WFCPS27D.WF-CP-RT1-A-YR-COL OR 
*S**     #CUR-T1-ENR-DATE NE WFCPS27D.WF-CP-RT1-A-ENR-DATE OR           
*S**     #CUR-T1-AWARD    NE WFCPS27D.WF-CP-RT1-A-AWARD     
*S**    ASSIGN #REPORT-ORIG = TRUE  
*S**    ADD #CUR-T1-AWARD TO #T-AWRD-NET        
*S**    SUBTRACT WFCPS27D.WF-CP-RT1-A-AWARD FROM #T-AWRD-NET
*S**    /*  
*S**    /* Move origination data to be reported to "report" CPS fields  
*S**    MOVE 1 TO WFCPS27D.WF-CP-RT1-R-GRANT    
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO WFCPS27D.WF-CP-RT1-R-FED-TRAN 
*S**    MOVE #CUR-T1-YR-COL         TO WFCPS27D.WF-CP-RT1-R-YR-COL      
*S**    MOVE #CUR-T1-ENR-DATE       TO WFCPS27D.WF-CP-RT1-R-ENR-DATE    
*S**    MOVE #CUR-T1-AWARD          TO WFCPS27D.WF-CP-RT1-R-AWARD       
*S**    /*  
*S**    /* Create origination event 
*S**    MOVE 'TGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-ORIGINATION        
*S**    MOVE #CUR-T1-YR-COL TO #EO-CLAS-VALUE   
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO #EO-TRAN-VALUE    
*S**    MOVE EDITED #CUR-T1-AWARD (EM=ZZ,ZZ9) TO #EO-AWRD-VALUE         
*S**    MOVE #EVENT-ORIG TO #EVENT-DESC         
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    /* Print on report of processed records 
*S**    WRITE(3) #PRINT-LINE        
*S**    RESET #PRINT-LINE           
*S**  END-IF
*S**  /*    
*S**  /* Clear any old reported/unacknowledged data         
*S**  RESET #RPT-T1-D-NUM(*)  #RPT-T1-D-SEQ(*)  
*S**        #RPT-T1-D-DIS(*)  #RPT-T1-D-DATE(*)  #RPT-T1-D-REL(*)       
*S**  /*    
*S**  /* Cycle through disbursements
*S**  FOR #SUB = 1 TO 12
*S**    IF #CUR-T1-D-DP(#SUB) = ' ' AND         
*S**       #ACK-T1-D-NUM(#SUB) = 0  
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* If previously reported and nothing has changed, skip         
*S**    IF (#ACK-T1-D-REL(#SUB) = 'Y' AND       
*S**        #CUR-T1-D-DIS(#SUB) = #ACK-T1-D-DIS(#SUB)) OR   
*S**       (#ACK-T1-D-REL(#SUB) NE 'Y' AND      
*S**        #CUR-T1-D-OFF(#SUB) = #ACK-T1-D-DIS(#SUB) AND   
*S**        #CUR-T1-D-DIS(#SUB) = 0)
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Set up print line        
*S**    MOVE 'Disb' TO #PRT-RECTYPE 
*S**    MOVE EDITED #CUR-T1-D-DIS(#SUB) (EM=Z,ZZZ.99) TO #PRT-AMT       
*S**    IF ##SCHED-DP-TITLE(#SUB) = ' '         
*S**      MOVE 'CODRptErr' TO #PRT-COMMENT      
*S**    ELSE
*S**      MOVE ##SCHED-DP-TITLE(#SUB) TO #PRT-COMMENT       
*S**    END-IF          
*S**    /*  
*S**    ASSIGN #REPORT-DISB = TRUE  
*S**    IF #ACK-T1-D-REL(#SUB) = 'Y' OR         
*S**       #CUR-T1-D-DIS(#SUB) > 0  
*S**      ADD #CUR-T1-D-DIS(#SUB) TO #T-DISB-TOTAL          
*S**    ELSE
*S**      ADD #CUR-T1-D-OFF(#SUB) TO #T-DISB-TOTAL          
*S**    END-IF          
*S**    ADD #CUR-T1-D-DIS(#SUB) TO #T-DISB-NET  
*S**    SUBTRACT #ACK-T1-D-DIS(#SUB) FROM #T-DISB-NET       
*S**    /*  
*S**    /* Move disbursements to be reported to "report" fields in array
*S**    IF #ACK-T1-D-NUM(#SUB) = 0  
*S**      RESET #HOLD-NUM           
*S**      FOR #DSUB = 1 TO 12       
*S**        IF #ACK-T1-D-NUM(#DSUB) > #HOLD-NUM 
*S**          MOVE #ACK-T1-D-NUM(#DSUB) TO #HOLD-NUM        
*S**        END-IF      
*S**        IF #RPT-T1-D-NUM(#DSUB) > #HOLD-NUM 
*S**          MOVE #RPT-T1-D-NUM(#DSUB) TO #HOLD-NUM        
*S**        END-IF      
*S**      END-FOR       
*S**      COMPUTE #RPT-T1-D-NUM(#SUB) = #HOLD-NUM + 1       
*S**      MOVE 1 TO #RPT-T1-D-SEQ(#SUB)         
*S**    ELSE
*S**      MOVE #ACK-T1-D-NUM(#SUB) TO #RPT-T1-D-NUM(#SUB)   
*S**      IF #ACK-T1-D-REL(#SUB) = 'Y'          
*S**        COMPUTE #RPT-T1-D-SEQ(#SUB) = #ACK-T1-D-SEQ(#SUB) + 1       
*S**      ELSE          
*S**        MOVE 1 TO #RPT-T1-D-SEQ(#SUB)       
*S**      END-IF        
*S**    END-IF          
*S**    IF #ACK-T1-D-REL(#SUB) = 'Y' OR         
*S**       #CUR-T1-D-DIS(#SUB) > 0  
*S**      MOVE #CUR-T1-D-DIS(#SUB) TO #RPT-T1-D-DIS(#SUB)   
*S**      MOVE 'Y' TO #RPT-T1-D-REL(#SUB)       
*S**    ELSE
*S**      MOVE #CUR-T1-D-OFF(#SUB) TO #RPT-T1-D-DIS(#SUB)   
*S**      MOVE 'N' TO #RPT-T1-D-REL(#SUB)       
*S**    END-IF          
*S**    IF #CUR-T1-D-DATE(#SUB) = INIT-DATE     
*S**      MOVE #ACK-T1-D-DATE(#SUB) TO #RPT-T1-D-DATE(#SUB) 
*S**    ELSE
*S**      MOVE #CUR-T1-D-DATE(#SUB) TO #RPT-T1-D-DATE(#SUB) 
*S**    END-IF          
*S**    /*  
*S**    /* Create disbursement event
*S**    MOVE 'TGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-DISBURSEMENT       
*S**    MOVE EDITED #RPT-T1-D-NUM(#SUB) (EM=99)     TO #ED-DSBN-VALUE   
*S**    MOVE EDITED #RPT-T1-D-SEQ(#SUB) (EM=99)     TO #ED-SEQN-VALUE   
*S**    IF ##SCHED-DP-TITLE(#SUB) = ' '         
*S**      MOVE 'CODRptErr'                          TO #ED-DPNM-VALUE   
*S**    ELSE
*S**      MOVE ##SCHED-DP-TITLE(#SUB)               TO #ED-DPNM-VALUE   
*S**    END-IF          
*S**    MOVE EDITED #RPT-T1-D-DIS(#SUB) (EM=ZZ,ZZ9) TO #ED-DSBV-VALUE   
*S**    MOVE #EVENT-DISB TO #EVENT-DESC         
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    /* Print on report of processed records 
*S**    WRITE(3) #PRINT-LINE        
*S**    RESET #PRINT-LINE           
*S**  END-FOR           
*S**  /*    
*S**  IF #REPORT-ORIG OR #REPORT-DISB           
*S**    ASSIGN #REPORT-TEACH = TRUE 
*S**    ADD 1 TO #T-STNT-COUNT      
*S**    ADD #CUR-T1-AWARD TO #T-AWRD-TOTAL      
*S**    /*  
*S**    /* Load CPS data
*S**    RESET WFCPS27D.WF-CP-RT1-ACT
*S**          WFCPS27D.WF-CP-RT1-ACT-RSN        
*S**          WFCPS27D.WF-CP-RT1-ACT-DATE       
*S**    IF WFCPS27D.WF-CP-RT1-FY = ' '          
*S**      MOVE #CUR-T1-FY TO WFCPS27D.WF-CP-RT1-FY          
*S**    END-IF          
*S**    MOVE #INPUT-EFF-DATE-D TO WFCPS27D.WF-CP-RT1-RPT-DATE           
*S**    IF #REPORT-DISB 
*S**      MOVE #CUR-T1-DISB TO WFCPS27D.WF-CP-RT1-R-DISB    
*S**    END-IF          
*S**    /*  
*S**    /* Load export data         
*S**    ASSIGN WFFLE27D.#EXPORT-PROGRAM = 'TEACH'           
*S**    ASSIGN WFFLE27D.#EXPORT-AIDYEAR = ##AID-YEAR        
*S**    ASSIGN WFFLE27D.#EXPORT-FAO     = ##FAO-ID          
*S**    ASSIGN WFFLE27D.#EXPORT-OPEID   = WWTABLED.WW-OPE-ID
*S**    /*  
*S**    MOVE WFISW27D.#SSN TO #E-ORIG-SSN       
*S**    IF WFISW27D.#DOB = MASK(YYYYMMDD)       
*S**      MOVE EDITED WFISW27D.#DOB TO #E-ORIG-DOB (EM=YYYYMMDD)        
*S**    END-IF          
*S**    MOVE WFISW27D.#NM-LAST  TO #E-ORIG-LAST 
*S**    MOVE WFISW27D.#NM-FIRST TO #E-ORIG-FIRST
*S**    MOVE WFISW27D.#NM-MIDDLE   TO #E-ORIG-MI
*S**    MOVE ##SID TO #E-ORIG-STUDENT-ID        
*S**    /*  
*S**    MOVE WFISW27D.#AD-STRT  TO #E-ORIG-AD-STRT          
*S**    MOVE WFISW27D.#AD-CITY  TO #E-ORIG-AD-CITY          
*S**    MOVE WFISW27D.#AD-STATE TO #E-ORIG-AD-STATE         
*S**    MOVE WFISW27D.#AD-ZIP   TO #E-ORIG-AD-ZIP           
*S**    /*  
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFFED27D.WF-FE-S-CIT = 'U'       
*S**        ASSIGN #E-ORIG-CIT = '1'
*S**      WHEN WFFED27D.WF-FE-S-CIT = 'E'       
*S**        ASSIGN #E-ORIG-CIT = '2'
*S**      WHEN NONE     
*S**        IGNORE      
*S**    END-DECIDE      
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN #REPORT-ORIG AND NOT #REPORT-DISB
*S**        MOVE 'ORIG' TO #E-ORIG-UPDATE       
*S**      WHEN NOT #REPORT-ORIG AND #REPORT-DISB
*S**        MOVE 'DISB' TO #E-ORIG-UPDATE       
*S**      WHEN NONE     
*S**        MOVE 'BOTH' TO #E-ORIG-UPDATE       
*S**    END-DECIDE      
*S**    /*  
*S**    MOVE WFISW27D.#SSN TO #GID-SSN          
*S**    MOVE 'H' TO #GID-TYPE       
*S**    MOVE #AID-YY TO #GID-YEAR   
*S**    MOVE WWTABLED.WW-INST-ID TO #GID-SCHOOL 
*S**    MOVE 1 TO #GID-NUM          
*S**    /*  
*S**    MOVE #GRANT-ID TO #E-ORIG-GRANT-ID      
*S**    MOVE 1 TO #E-ORIG-GRANT-NUM 
*S**    /*  
*S**    MOVE WWSTDNCD.WW-ST-ATB-STATE TO #E-ORIG-ATB-STATE  
*S**    MOVE WWSTDNCD.WW-ST-ATB-CODE  TO #E-ORIG-ATB-CODE   
*S**    MOVE WWSTDNCD.WW-ST-ATB-ADMN  TO #E-ORIG-ATB-ADMN   
*S**    MOVE WWSTDNCD.WW-ST-ATB-TEST  TO #E-ORIG-ATB-TEST   
*S**    MOVE WWSTDNCD.WW-ST-ATB-DATE  TO #E-ORIG-ATB-DATE   
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO #E-ORIG-TRANS-NO  
*S**    MOVE #CUR-T1-YR-COL   TO #E-ORIG-YR-COL 
*S**    MOVE #CUR-T1-ENR-DATE TO #E-ORIG-ENR-DATE           
*S**    MOVE #CUR-T1-AWARD    TO #E-ORIG-AWARD  
*S**    FOR #DSUB = 1 TO 12         
*S**      IF #RPT-T1-D-NUM(#DSUB) NE 0          
*S**        ADD 1 TO #ESUB          
*S**        MOVE #RPT-T1-D-NUM(#DSUB)  TO #E-DISB-NUMBER(#ESUB)         
*S**        MOVE #RPT-T1-D-SEQ(#DSUB)  TO #E-DISB-SEQ(#ESUB)
*S**        MOVE #CUR-T1-D-DP(#DSUB)   TO #E-DISB-DP(#ESUB) 
*S**        MOVE #RPT-T1-D-DIS(#DSUB)  TO #E-DISB-AMOUNT(#ESUB)         
*S**        MOVE #RPT-T1-D-DATE(#DSUB) TO #E-DISB-DATE(#ESUB)           
*S**        MOVE #RPT-T1-D-REL(#DSUB)  TO #E-DISB-REL(#ESUB)
*S**        /*          
*S**        /* Term start date, enrollment and cip          
*S**        /*          
*S**        IF ##SCHED-DP(#DSUB) = #CUR-T1-D-DP(#DSUB)      
*S**          MOVE BY NAME WFFID27D.#EXPORT-DISBURSEMENT(#DSUB) TO      
*S**                       WFFLE27D.#EXPORT-DISBURSEMENT(#ESUB)         
*S**          FOR #TERM-SUB = 1 TO 12           
*S**            IF ##SCHED-RT(#TERM-SUB) = ##SCHED-DP-RT(#DSUB)         
*S**              MOVE #WW-TERM-START-DATE(#TERM-SUB) TO    
*S**                   WFFLE27D.#E-DISB-PAYPD-START-DATE(#ESUB)         
*S**              MOVE #WW-TERM-END-DATE(#TERM-SUB) TO      
*S**                   WFFLE27D.#E-DISB-PAYPD-END-DATE(#ESUB)           
*S**              ESCAPE BOTTOM     
*S**            END-IF  
*S**          END-FOR   
*S**        END-IF      
*S**      END-IF        
*S**    END-FOR         
*S**    /*  
*S**    WRITE WORK FILE 2 WFFLE27D  
*S**  END-IF
*S**END-SUBROUTINE /* DECIDE-TO-REPORT-TEACH1   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DECIDE-TO-REPORT-TEACH2   
*S*************************************************************************         
*S**  /*    
*S**  /* If Runmode is not RECOVER, skip anyone who has a "hold" action;
*S**  /*  skip anyone who has been reported and the COD response has not
*S**  /*  been received and processed unless re-report has been requested;          
*S**  /*  skip anyone who has no award and no previously-reported award 
*S**  /* If Runmode is RECOVER, skip anyone who was not reported        
*S**  /*  on the Effective Date     
*S**  IF #INPUT-RUNMODE NE 'RECOVER' AND        
*S**     (WFCPS27D.WF-CP-RT2-ACT = 'H' OR       
*S**     (WFCPS27D.WF-CP-RT2-RPT-DATE > WFCPS27D.WF-CP-RT2-O-ACK-DATE AND           
*S**      WFCPS27D.WF-CP-RT2-RPT-DATE > WFCPS27D.WF-CP-RT2-D-ACK-DATE AND           
*S**      WFCPS27D.WF-CP-RT2-ACT NE 'R') OR     
*S**     (#CUR-T2-AWARD = 0 AND WFCPS27D.WF-CP-RT2-A-AWARD = 0))        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #INPUT-RUNMODE = 'RECOVER' 
*S**    IF WFCPS27D.WF-CP-RT2-RPT-DATE NE #INPUT-EFF-DATE-D 
*S**      ESCAPE ROUTINE
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  RESET #REPORT-ORIG #REPORT-DISB #REPORT-ERROR         
*S**  RESET WFFLE27D #ESUB          
*S**  FOR #DISB-SUB = 1 TO 12       
*S**    IF #CUR-T2-D-DP(#DISB-SUB) <> ' ' AND   
*S**       (#CUR-T2-D-OFF(#DISB-SUB) <> 0 OR    
*S**        #CUR-T2-D-DIS(#DISB-SUB) <> 0)      
*S**      MOVE #CUR-T2-D-DP(#DISB-SUB) TO #SCHED-DP(#DISB-SUB)          
*S**    END-IF          
*S**  END-FOR           
*S**  PERFORM LOAD-INST-DATA        
*S**  /*    
*S**  /* Set up print line          
*S**  MOVE 'TEACH2' TO #PRT-GRANT #ERR-GRANT    
*S**  MOVE 'Orig' TO #PRT-RECTYPE #ERR-RECTYPE  
*S**  MOVE EDITED #CUR-T2-AWARD (EM=Z,ZZZ.99) TO #PRT-AMT   
*S**  MOVE EDITED #CUR-T2-AWARD (EM=Z,ZZZ.99) TO #ERR-AMT   
*S**  /*    
*S**    IF #CUR-T2-AWARD > 0        
*S**      IF NOT WFISW27D.#EXISTS   
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'No ISIR' TO #ERR-COMMENT      
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF WFCPS27D.WF-CP-C-TRANS-NO = ' '    
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'TRANS NO' TO #ERR-COMMENT     
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T2-YR-COL EQ '6' OR           
*S**         #CUR-T2-YR-COL EQ '7'  
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Class level' TO #ERR-COMMENT  
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T2-ENR-DATE = INIT-DATE       
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Enrollment date' TO #ERR-COMMENT          
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      /* Invalid ATB codes      
*S**      /*   (05,11,13 retired)   
*S**      IF WWSTDNCD.WW-ST-ATB-CODE = '  ' OR  
*S**         (WWSTDNCD.WW-ST-ATB-CODE = '05' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '11' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '13')   
*S**         ASSIGN #REPORT-ERROR = TRUE        
*S**        MOVE 'ATB code' TO #ERR-COMMENT     
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #REPORT-ERROR          
*S**        ESCAPE ROUTINE          
*S**      END-IF        
*S**    END-IF          
*S**  IF (#INPUT-RUNMODE = 'RECOVER' AND        
*S**      WFCPS27D.WF-CP-RT2-RPT-DATE = #INPUT-EFF-DATE-D) OR           
*S**     WFCPS27D.WF-CP-RT2-ACT = 'R' OR        
*S**     #CUR-T2-YR-COL   NE WFCPS27D.WF-CP-RT2-A-YR-COL OR 
*S**     #CUR-T2-ENR-DATE NE WFCPS27D.WF-CP-RT2-A-ENR-DATE OR           
*S**     #CUR-T2-AWARD    NE WFCPS27D.WF-CP-RT2-A-AWARD     
*S**    ASSIGN #REPORT-ORIG = TRUE  
*S**    ADD #CUR-T2-AWARD TO #T-AWRD-NET        
*S**    SUBTRACT WFCPS27D.WF-CP-RT2-A-AWARD FROM #T-AWRD-NET
*S**    /*  
*S**    /* Move origination data to be reported to "report" CPS fields  
*S**    MOVE 2 TO WFCPS27D.WF-CP-RT2-R-GRANT    
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO WFCPS27D.WF-CP-RT2-R-FED-TRAN 
*S**    MOVE #CUR-T2-YR-COL         TO WFCPS27D.WF-CP-RT2-R-YR-COL      
*S**    MOVE #CUR-T2-ENR-DATE       TO WFCPS27D.WF-CP-RT2-R-ENR-DATE    
*S**    MOVE #CUR-T2-AWARD          TO WFCPS27D.WF-CP-RT2-R-AWARD       
*S**    /*  
*S**    /* Create origination event 
*S**    MOVE 'TGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-ORIGINATION        
*S**    MOVE #CUR-T2-YR-COL TO #EO-CLAS-VALUE   
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO #EO-TRAN-VALUE    
*S**    MOVE EDITED #CUR-T2-AWARD (EM=ZZ,ZZ9) TO #EO-AWRD-VALUE         
*S**    MOVE #EVENT-ORIG TO #EVENT-DESC         
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    /* Print on report of processed records 
*S**    WRITE(3) #PRINT-LINE        
*S**    RESET #PRINT-LINE           
*S**  END-IF
*S**  /*    
*S**  /* Clear any old reported/unacknowledged data         
*S**  RESET #RPT-T2-D-NUM(*)  #RPT-T2-D-SEQ(*)  
*S**        #RPT-T2-D-DIS(*)  #RPT-T2-D-DATE(*)  #RPT-T2-D-REL(*)       
*S**  /*    
*S**  /* Cycle through disbursements
*S**  FOR #SUB = 1 TO 12
*S**    IF #CUR-T2-D-DP(#SUB) = ' ' AND         
*S**       #ACK-T2-D-NUM(#SUB) = 0  
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* If previously reported and nothing has changed, skip         
*S**    IF (#ACK-T2-D-REL(#SUB) = 'Y' AND       
*S**        #CUR-T2-D-DIS(#SUB) = #ACK-T2-D-DIS(#SUB)) OR   
*S**       (#ACK-T2-D-REL(#SUB) NE 'Y' AND      
*S**        #CUR-T2-D-OFF(#SUB) = #ACK-T2-D-DIS(#SUB) AND   
*S**        #CUR-T2-D-DIS(#SUB) = 0)
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Set up print line        
*S**    MOVE 'Disb' TO #PRT-RECTYPE 
*S**    MOVE EDITED #CUR-T2-D-DIS(#SUB) (EM=Z,ZZZ.99) TO #PRT-AMT       
*S**    IF ##SCHED-DP-TITLE(#SUB) = ' '         
*S**      MOVE 'CODRptErr' TO #PRT-COMMENT      
*S**    ELSE
*S**      MOVE ##SCHED-DP-TITLE(#SUB) TO #PRT-COMMENT       
*S**    END-IF          
*S**    /*  
*S**    ASSIGN #REPORT-DISB = TRUE  
*S**    IF #ACK-T2-D-REL(#SUB) = 'Y' OR         
*S**       #CUR-T2-D-DIS(#SUB) > 0  
*S**      ADD #CUR-T2-D-DIS(#SUB) TO #T-DISB-TOTAL          
*S**    ELSE
*S**      ADD #CUR-T2-D-OFF(#SUB) TO #T-DISB-TOTAL          
*S**    END-IF          
*S**    ADD #CUR-T2-D-DIS(#SUB) TO #T-DISB-NET  
*S**    SUBTRACT #ACK-T2-D-DIS(#SUB) FROM #T-DISB-NET       
*S**    /*  
*S**    /* Move disbursements to be reported to "report" fields in array
*S**    IF #ACK-T2-D-NUM(#SUB) = 0  
*S**      RESET #HOLD-NUM           
*S**      FOR #DSUB = 1 TO 12       
*S**        IF #ACK-T2-D-NUM(#DSUB) > #HOLD-NUM 
*S**          MOVE #ACK-T2-D-NUM(#DSUB) TO #HOLD-NUM        
*S**        END-IF      
*S**        IF #RPT-T2-D-NUM(#DSUB) > #HOLD-NUM 
*S**          MOVE #RPT-T2-D-NUM(#DSUB) TO #HOLD-NUM        
*S**        END-IF      
*S**      END-FOR       
*S**      COMPUTE #RPT-T2-D-NUM(#SUB) = #HOLD-NUM + 1       
*S**      MOVE 1 TO #RPT-T2-D-SEQ(#SUB)         
*S**    ELSE
*S**      MOVE #ACK-T2-D-NUM(#SUB) TO #RPT-T2-D-NUM(#SUB)   
*S**      IF #ACK-T2-D-REL(#SUB) = 'Y'          
*S**        COMPUTE #RPT-T2-D-SEQ(#SUB) = #ACK-T2-D-SEQ(#SUB) + 1       
*S**      ELSE          
*S**        MOVE 1 TO #RPT-T2-D-SEQ(#SUB)       
*S**      END-IF        
*S**    END-IF          
*S**    IF #ACK-T2-D-REL(#SUB) = 'Y' OR         
*S**       #CUR-T2-D-DIS(#SUB) > 0  
*S**      MOVE #CUR-T2-D-DIS(#SUB) TO #RPT-T2-D-DIS(#SUB)   
*S**      MOVE 'Y' TO #RPT-T2-D-REL(#SUB)       
*S**    ELSE
*S**      MOVE #CUR-T2-D-OFF(#SUB) TO #RPT-T2-D-DIS(#SUB)   
*S**      MOVE 'N' TO #RPT-T2-D-REL(#SUB)       
*S**    END-IF          
*S**    IF #CUR-T2-D-DATE(#SUB) = INIT-DATE     
*S**      MOVE #ACK-T2-D-DATE(#SUB) TO #RPT-T2-D-DATE(#SUB) 
*S**    ELSE
*S**      MOVE #CUR-T2-D-DATE(#SUB) TO #RPT-T2-D-DATE(#SUB) 
*S**    END-IF          
*S**    /*  
*S**    /* Create disbursement event
*S**    MOVE 'TGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-DISBURSEMENT       
*S**    MOVE EDITED #RPT-T2-D-NUM(#SUB) (EM=99)     TO #ED-DSBN-VALUE   
*S**    MOVE EDITED #RPT-T2-D-SEQ(#SUB) (EM=99)     TO #ED-SEQN-VALUE   
*S**    IF ##SCHED-DP-TITLE(#SUB) = ' '         
*S**      MOVE 'CODRptErr'                          TO #ED-DPNM-VALUE   
*S**    ELSE
*S**      MOVE ##SCHED-DP-TITLE(#SUB)               TO #ED-DPNM-VALUE   
*S**    END-IF          
*S**    MOVE EDITED #RPT-T2-D-DIS(#SUB) (EM=ZZ,ZZ9) TO #ED-DSBV-VALUE   
*S**    MOVE #EVENT-DISB TO #EVENT-DESC         
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    /* Print on report of processed records 
*S**    WRITE(3) #PRINT-LINE        
*S**    RESET #PRINT-LINE           
*S**  END-FOR           
*S**  /*    
*S**  IF #REPORT-ORIG OR #REPORT-DISB           
*S**    ASSIGN #REPORT-TEACH = TRUE 
*S**    ADD 1 TO #T-STNT-COUNT      
*S**    ADD #CUR-T2-AWARD TO #T-AWRD-TOTAL      
*S**    /*  
*S**    /* Load CPS data
*S**    RESET WFCPS27D.WF-CP-RT2-ACT
*S**          WFCPS27D.WF-CP-RT2-ACT-RSN        
*S**          WFCPS27D.WF-CP-RT2-ACT-DATE       
*S**    IF WFCPS27D.WF-CP-RT2-FY = ' '          
*S**      MOVE #CUR-T2-FY TO WFCPS27D.WF-CP-RT2-FY          
*S**    END-IF          
*S**    MOVE #INPUT-EFF-DATE-D TO WFCPS27D.WF-CP-RT2-RPT-DATE           
*S**    IF #REPORT-DISB 
*S**      MOVE #CUR-T2-DISB TO WFCPS27D.WF-CP-RT2-R-DISB    
*S**    END-IF          
*S**    /*  
*S**    /* Load export data         
*S**    ASSIGN WFFLE27D.#EXPORT-PROGRAM = 'TEACH'           
*S**    ASSIGN WFFLE27D.#EXPORT-AIDYEAR = ##AID-YEAR        
*S**    ASSIGN WFFLE27D.#EXPORT-FAO     = ##FAO-ID          
*S**    ASSIGN WFFLE27D.#EXPORT-OPEID   = WWTABLED.WW-OPE-ID
*S**    /*  
*S**    MOVE WFISW27D.#SSN TO #E-ORIG-SSN       
*S**    IF WFISW27D.#DOB = MASK(YYYYMMDD)       
*S**      MOVE EDITED WFISW27D.#DOB TO #E-ORIG-DOB (EM=YYYYMMDD)        
*S**    END-IF          
*S**    MOVE WFISW27D.#NM-LAST  TO #E-ORIG-LAST 
*S**    MOVE WFISW27D.#NM-FIRST TO #E-ORIG-FIRST
*S**    MOVE WFISW27D.#NM-MIDDLE   TO #E-ORIG-MI
*S**    MOVE ##SID TO #E-ORIG-STUDENT-ID        
*S**    /*  
*S**    MOVE WFISW27D.#AD-STRT  TO #E-ORIG-AD-STRT          
*S**    MOVE WFISW27D.#AD-CITY  TO #E-ORIG-AD-CITY          
*S**    MOVE WFISW27D.#AD-STATE TO #E-ORIG-AD-STATE         
*S**    MOVE WFISW27D.#AD-ZIP   TO #E-ORIG-AD-ZIP           
*S**    /*  
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFFED27D.WF-FE-S-CIT = 'U'       
*S**        ASSIGN #E-ORIG-CIT = '1'
*S**      WHEN WFFED27D.WF-FE-S-CIT = 'E'       
*S**        ASSIGN #E-ORIG-CIT = '2'
*S**      WHEN NONE     
*S**        IGNORE      
*S**    END-DECIDE      
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN #REPORT-ORIG AND NOT #REPORT-DISB
*S**        MOVE 'ORIG' TO #E-ORIG-UPDATE       
*S**      WHEN NOT #REPORT-ORIG AND #REPORT-DISB
*S**        MOVE 'DISB' TO #E-ORIG-UPDATE       
*S**      WHEN NONE     
*S**        MOVE 'BOTH' TO #E-ORIG-UPDATE       
*S**    END-DECIDE      
*S**    /*  
*S**    MOVE WFISW27D.#SSN TO #GID-SSN          
*S**    MOVE 'H' TO #GID-TYPE       
*S**    MOVE #AID-YY TO #GID-YEAR   
*S**    MOVE WWTABLED.WW-INST-ID TO #GID-SCHOOL 
*S**    MOVE 2 TO #GID-NUM          
*S**    /*  
*S**    MOVE #GRANT-ID TO #E-ORIG-GRANT-ID      
*S**    MOVE 2 TO #E-ORIG-GRANT-NUM 
*S**    /*  
*S**    MOVE WWSTDNCD.WW-ST-ATB-STATE TO #E-ORIG-ATB-STATE  
*S**    MOVE WWSTDNCD.WW-ST-ATB-CODE  TO #E-ORIG-ATB-CODE   
*S**    MOVE WWSTDNCD.WW-ST-ATB-ADMN  TO #E-ORIG-ATB-ADMN   
*S**    MOVE WWSTDNCD.WW-ST-ATB-TEST  TO #E-ORIG-ATB-TEST   
*S**    MOVE WWSTDNCD.WW-ST-ATB-DATE  TO #E-ORIG-ATB-DATE   
*S**    MOVE WFCPS27D.WF-CP-C-TRANS-NO TO #E-ORIG-TRANS-NO  
*S**    MOVE #CUR-T2-YR-COL   TO #E-ORIG-YR-COL 
*S**    MOVE #CUR-T2-ENR-DATE TO #E-ORIG-ENR-DATE           
*S**    MOVE #CUR-T2-AWARD    TO #E-ORIG-AWARD  
*S**    FOR #DSUB = 1 TO 12         
*S**      IF #RPT-T2-D-NUM(#DSUB) NE 0          
*S**        ADD 1 TO #ESUB          
*S**        MOVE #RPT-T2-D-NUM(#DSUB)  TO #E-DISB-NUMBER(#ESUB)         
*S**        MOVE #RPT-T2-D-SEQ(#DSUB)  TO #E-DISB-SEQ(#ESUB)
*S**        MOVE #CUR-T2-D-DP(#DSUB)   TO #E-DISB-DP(#ESUB) 
*S**        MOVE #RPT-T2-D-DIS(#DSUB)  TO #E-DISB-AMOUNT(#ESUB)         
*S**        MOVE #RPT-T2-D-DATE(#DSUB) TO #E-DISB-DATE(#ESUB)           
*S**        MOVE #RPT-T2-D-REL(#DSUB)  TO #E-DISB-REL(#ESUB)
*S**        /*          
*S**        /* Term start date, enrollment and cip          
*S**        /*          
*S**        IF ##SCHED-DP(#DSUB) = #CUR-T2-D-DP(#DSUB)      
*S**          MOVE BY NAME WFFID27D.#EXPORT-DISBURSEMENT(#DSUB) TO      
*S**                       WFFLE27D.#EXPORT-DISBURSEMENT(#ESUB)         
*S**          FOR #TERM-SUB = 1 TO 12           
*S**            IF ##SCHED-RT(#TERM-SUB) = ##SCHED-DP-RT(#DSUB)         
*S**              MOVE #WW-TERM-START-DATE(#TERM-SUB) TO    
*S**                   WFFLE27D.#E-DISB-PAYPD-START-DATE(#ESUB)         
*S**              MOVE #WW-TERM-END-DATE(#TERM-SUB) TO      
*S**                   WFFLE27D.#E-DISB-PAYPD-END-DATE(#ESUB)           
*S**              ESCAPE BOTTOM     
*S**            END-IF  
*S**          END-FOR   
*S**        END-IF      
*S**      END-IF        
*S**    END-FOR         
*S**    WRITE WORK FILE 2 WFFLE27D  
*S**  END-IF
*S**END-SUBROUTINE /* DECIDE-TO-REPORT-TEACH2   
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-INST-DATA
*S*************************************************************************         
*S**  /* Retrieve Teach Export data from outside of Financier           
*S**  CALLNAT 'WFFID27N' WW-GDA     
*S**           #FID-TYPE
*S**           #FID-FUNCTION        
*S**           #SCHED-DP(*)         
*S**           WFFID27D 
*S**  /* Move instituional data from PDA to Grant data PDA  
*S**  MOVE BY NAME WFFID27D TO WFFLE27D         
*S***       
*S**END-SUBROUTINE /* LOAD-INST-DATA
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE GET-TERM-BEG-DATES        
*S*************************************************************************         
*S**  /* Get calendar for student's schedule    
*S**  ASSIGN WWCALEND.WW-RECORD-TYPE = TABLE-TYPE           
*S**  ASSIGN WWCALEND.WW-TABLE-ID = 'CALEN'       /* Calendar table     
*S**  MOVE ##AID-YEAR TO #CAL-AY    
*S**  MOVE ##FAO-ID TO #CAL-FAO     
*S**  MOVE ##SCHED-ID TO #CAL-SCHED 
*S**  ASSIGN WWCALEND.WW-TABLE-VALUE = #CAL-TBL-VAL         
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'           
*S**  CALLNAT 'WWCALENO' WW-GDA     
*S**           WWCALEND 
*S**           WWCALEND-ID          
*S**           WWCALENR 
*S**           WWAOBJ   
*S**  MOVE BY NAME WWCALEND TO #WW-CALENDAR     
*S**  /*    
*S**END-SUBROUTINE /* GET-TERM-BEG-DATES        
*S***       
*S**END     
*E          
