*H**ANAT8304202208261154495LINUX                            4CAUC     04.2          
*C**                                FATEMP  WFFLE23B                        F S   NN0000        
*D01NAT8304F FATEMP  WFFLE23B                        ZWDLH   ZWDLH           S      
*D02            2022071815044802022071815044800000038513    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Program  : WFFLE23B           
*S*** System   : FINANCIER          
*S*** Title    : Federal Grant XML Export       
*S*** Function : This program converts the fixed records produced       
*S***            by WFFLRyyB to Federal Grant XML documents and         
*S***            exports them for transmission to COD.      
*S***       
*S***            COD Schema Version 5.0a        
*S***       
*S***      Copyright 1995 - 2022 WolffPack, Inc.  All rights reserved.  
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S***       
*S**  LOCAL USING WWREQIBD          
*S**  LOCAL USING WFFLE23D          
*S**  LOCAL USING WWCONST           
*S**  LOCAL 
*S***       
*S*** Note: '@' inserted in initial values and programmatically         
*S***       replaced with the hex representation for '"' to 
*S***       avoid the Natural compiler's default conversion of          
*S***       double-quotes to single-quotes      
*S***       
*S*** DOCUMENT BLOCK    
*S***       
*S**01 #XML-LINE1       
*S**  02 #XML-L1 (A21) INIT <'<?xml version=@1.0@?>'>       
*S**01 #XML-L2          
*S**  02 #SEG1(A59)     
*S** INIT <'<CommonRecord xmlns=@http://www.ed.gov/FSA/COD/2021/v5.0a@ '>           
*S**  02 #SEG2(A54)     
*S** INIT <'xmlns:xsi=@http://www.w3.org/2001/XMLSchema-instance@ '>    
*S**  02 #SEG3(A57)     
*S** INIT <'xsi:schemaLocation=@http://www.ed.gov/FSA/COD/2021/v5.0a '> 
*S**  02 #SEG4(A22)     
*S** INIT <'CommonRecord5.0a.xsd@>'>
*S**01 REDEFINE #XML-L2 
*S**  02 #XML-LINE2(A192)           
*S***       
*S**01 #TRANSDATA-BEG   
*S**  02 #TRANSDATA-S  (A18) INIT <'<TransmissionData>'>    
*S**  02 #FILLER       (A82)        
*S***       
*S**01 #DOC-OUT         
*S**  02 #DOCID-S      (A12) INIT <'<DocumentID>'>          
*S**  02 #DOCUMENT-ID  (A30)        
*S**  02 REDEFINE #DOCUMENT-ID      
*S**    03 #DOCID-DT   (A10)        
*S**    03 #DOCID-T    (A1)         
*S**    03 #DOCID-TM   (A10)        
*S**    03 #DOCID-SEC  (A1)         
*S**    03 #DOCID-SCHL (A8)         
*S**  02 #DOCID-E      (A13) INIT <'</DocumentID>'>         
*S**  02 #FILLER       (A45)        
*S**01 #CREATE-OUT      
*S**  02 #CREATE-S     (A17) INIT <'<CreatedDateTime>'>     
*S**  02 #CREATE-DT    (A22)        
*S**  02 REDEFINE #CREATE-DT        
*S**    03 #CRT-DATE   (A10)        
*S**    03 #CRT-T      (A1)         
*S**    03 #CRT-TIME   (A10)        
*S**    03 #CRT-SEC    (A1)         
*S**  02 #CREATE-E     (A18) INIT <'</CreatedDateTime>'>    
*S**  02 #FILLER       (A43)        
*S***       
*S**01 #SOURCE-BEG      
*S**  02 #SOURCE-S     (A8)  INIT <'<Source>'>  
*S**  02 #FILLER       (A92)        
*S**01 #SCHOOL-BEG      
*S**  02 #SCHOOL-S     (A8)  INIT <'<School>'>  
*S**  02 #FILLER       (A92)        
*S**01 #SCHOOL-OUT      
*S**  02 #SCHOOLID-S   (A11) INIT <'<RoutingID>'>           
*S**  02 #SCHOOLID     (A8)         
*S**  02 #SCHOOLID-E   (A12) INIT <'</RoutingID>'>          
*S**  02 #FILLER       (A69)        
*S**01 #SCHOOL-END      
*S**  02 #SCHOOL-E     (A9)  INIT <'</School>'> 
*S**  02 #FILLER       (A91)        
*S**01 #SOURCE-END      
*S**  02 #SOURCE-E     (A9)  INIT <'</Source>'> 
*S**  02 #FILLER       (A91)        
*S**01 #DEST-BEG        
*S**  02 #DEST-S       (A13) INIT <'<Destination>'>         
*S**  02 #FILLER       (A87)        
*S**01 #COD-BEG         
*S**  02 #COD-S        (A5)  INIT <'<COD>'>     
*S**  02 #FILLER       (A95)        
*S**01 #COD-OUT         
*S**  02 #CODID-S      (A11) INIT <'<RoutingID>'>           
*S**  02 #CODID        (A8)  INIT <'00000001'>  
*S**  02 #CODID-E      (A12) INIT <'</RoutingID>'>          
*S**  02 #FILLER       (A69)        
*S**01 #COD-END         
*S**  02 #COD-E        (A6)  INIT <'</COD>'>    
*S**  02 #FILLER       (A94)        
*S**01 #DEST-END        
*S**  02 #DEST-E       (A14) INIT <'</Destination>'>        
*S**  02 #FILLER       (A86)        
*S***       
*S**01 #SOFTWARE-BEG    
*S**  02 #SOFTWARE-S   (A10) INIT <'<Software>'>
*S**  02 #FILLER       (A90)        
*S**01 #SW-PROVIDER-OUT 
*S**  02 #SW-PROVIDER-S(A18) INIT <'<SoftwareProvider>'>    
*S**  02 #SW-PROVIDER  (A9)  INIT <'WolffPack'> 
*S**  02 #SW-PROVIDER-E(A19) INIT <'</SoftwareProvider>'>   
*S**  02 #FILLER       (A54)        
*S**01 #SW-VERSION-OUT  
*S**  02 #SW-VERSION-S (A17) INIT <'<SoftwareVersion>'>     
*S**  02 #SW-VERSION   (A6)  INIT <'FIN-V1'>    
*S**  02 #SW-VERSION-E (A18) INIT <'</SoftwareVersion>'>    
*S**  02 #FILLER       (A59)        
*S**01 #SOFTWARE-END    
*S**  02 #SOFTWARE-E   (A11) INIT <'</Software>'>           
*S**  02 #FILLER       (A89)        
*S**01 #FULLRESP-OUT    
*S**  02 #FULL-RESP-S  (A18) INIT <'<FullResponseCode>'>    
*S**  02 #FULL-RESP    (A1)  INIT <'F'>         
*S**  02 #FULL-RESP-E  (A19) INIT <'</FullResponseCode>'>   
*S**  02 #FILLER       (A62)        
*S**01 #TRANSDATA-END   
*S**  02 #TRANSDATA-E  (A19) INIT <'</TransmissionData>'>   
*S**  02 #FILLER       (A81)        
*S***       
*S*** ENTITY BLOCK      
*S***       
*S**01 #RPTSCHL-BEG     
*S**  02 #RPTSCHL-S    (A17) INIT <'<ReportingSchool>'>     
*S**  02 #FILLER       (A83)        
*S**01 #RPTSCHL-OUT     
*S**  02 #RPTSCHLID-S  (A11) INIT <'<RoutingID>'>           
*S**  02 #RPTSCHLID    (A8)         
*S**  02 #RPTSCHLID-E  (A12) INIT <'</RoutingID>'>          
*S**  02 #FILLER       (A69)        
*S***       
*S**01 #RPT-SUMMARY-BEG 
*S**  02 #RPTSUMM      (A26) INIT <'<ReportedFinancialSummary>'>        
*S**  02 #FILLER       (A74)        
*S**01 #FINTYPE-OUT    (A100)       
*S**01 #FINTYPE-OUT-PELL
*S**  02 #FINAWD-PELL-S(A20) INIT <'<FinancialAwardType>'>  
*S**  02 #FINAWD-PELL  (A4)  INIT <'Pell'>      
*S**  02 #FINAWD-PELL-E(A21) INIT <'</FinancialAwardType>'> 
*S**  02 #FILLER       (A55)        
*S**01 REDEFINE #FINTYPE-OUT-PELL   
*S**  02 #FINTYPE-PELL (A100)       
*S**01 #FINTYPE-OUT-TEACH           
*S**  02 #FINAWD-TEACH-S(A20) INIT <'<FinancialAwardType>'> 
*S**  02 #FINAWD-TEACH  (A5)  INIT <'TEACH'>    
*S**  02 #FINAWD-TEACH-E(A21) INIT <'</FinancialAwardType>'>
*S**  02 #FILLER        (A54)       
*S**01 REDEFINE #FINTYPE-OUT-TEACH  
*S**  02 #FINTYPE-TEACH(A100)       
*S**01 #FINAWD-OUT      
*S**  02 #FINAWD-YR-S  (A20) INIT <'<FinancialAwardYear>'>  
*S**  02 #FINAWD-YR    (A4)         
*S**  02 #FINAWD-YR-E  (A21) INIT <'</FinancialAwardYear>'> 
*S**  02 #FILLER       (A55)        
*S**01 #COUNT-OUT       
*S**  02 #TOT-COUNT-S  (A12) INIT <'<TotalCount>'>          
*S**  02 #TOT-COUNT    (A9)         
*S**  02 #TOT-COUNT-E  (A13) INIT <'</TotalCount>'>         
*S**  02 #FILLER       (A66)        
*S**01 #TOTAWD-OUT      
*S**  02 #TOT-RPT-AWD-S(A20) INIT <'<TotalReportedAward>'>  
*S**  02 #TOT-RPT-AWD  (A16)        
*S**  02 #TOT-RPT-AWD-E(A21) INIT <'</TotalReportedAward>'> 
*S**  02 #FILLER       (A43)        
*S**01 #TOTDSB-OUT      
*S**  02 #TOT-RPT-DSB-S(A27) INIT <'<TotalReportedDisbursement>'>       
*S**  02 #TOT-RPT-DSB  (A16)        
*S**  02 #TOT-RPT-DSB-E(A28) INIT <'</TotalReportedDisbursement>'>      
*S**  02 #FILLER       (A29)        
*S**01 #RPT-SUMMARY-END 
*S**  02 #RPT-SUMM-E   (A27) INIT <'</ReportedFinancialSummary>'>       
*S**  02 #FILLER       (A73)        
*S***       
*S**01 #ATTSCHL-BEG     
*S**  02 #ATTSCHL-S    (A16) INIT <'<AttendedSchool>'>      
*S**  02 #FILLER       (A84)        
*S**01 #ATTSCHL-OUT     
*S**  02 #ATTSCHLID-S  (A11) INIT <'<RoutingID>'>           
*S**  02 #ATTSCHLID    (A8)         
*S**  02 #ATTSCHLID-E  (A12) INIT <'</RoutingID>'>          
*S**  02 #FILLER       (A69)        
*S***       
*S*** PERSON BLOCK      
*S***       
*S**01 #STUDENT-BEG     
*S**  02 #STUDENT-S    (A9)  INIT <'<Student>'> 
*S**  02 #FILLER       (A91)        
*S**01 #STUINDEX-BEG    
*S**  02 #STUINDEX-S   (A7)  INIT <'<Index>'>   
*S**  02 #FILLER       (A93)        
*S**01 #STUDENT-SSN-OUT 
*S**  02 #STU-SSN-S    (A5)  INIT <'<SSN>'>     
*S**  02 #STU-SSN      (A9)         
*S**  02 #STU-SSN-E    (A6)  INIT <'</SSN>'>    
*S**  02 #FILLER       (A80)        
*S**01 #STUDENT-DOB-OUT 
*S**  02 #STU-DOB-S    (A11) INIT <'<BirthDate>'>           
*S**  02 #STU-DOB      (A10)        
*S**  02 #STU-DOB-E    (A12) INIT <'</BirthDate>'>          
*S**  02 #FILLER       (A67)        
*S**01 #STUDENT-LAST-OUT
*S**  02 #STU-LAST-S   (A10) INIT <'<LastName>'>
*S**  02 #STU-LAST     (A16)        
*S**  02 #STU-LAST-E   (A11) INIT <'</LastName>'>           
*S**  02 #FILLER       (A63)        
*S**01 #STUINDEX-END    
*S**  02 #STUINDEX-E   (A8)  INIT <'</Index>'>  
*S**  02 #FILLER       (A92)        
*S***       
*S**01 #STU-PERSID-BEG  
*S**  02 #STU-PERSID-S (A19) INIT <'<PersonIdentifiers>'>   
*S**  02 #FILLER       (A81)        
*S**01 #STUDENT-SID-OUT 
*S**  02 #STU-SID-S    (A24) INIT <'<SchoolAssignedPersonID>'>          
*S**  02 #STU-SID      (A9)         
*S**  02 #STU-SID-E    (A25) INIT <'</SchoolAssignedPersonID>'>         
*S**  02 #FILLER       (A42)        
*S**01 #STU-PERSID-END  
*S**  02 #STU-PERSID-E (A20) INIT <'</PersonIdentifiers>'>  
*S**  02 #FILLER       (A80)        
*S***       
*S**01 #STU-NAME-BEG    
*S**  02 #STU-NAME-S   (A6)  INIT <'<Name>'>    
*S**  02 #FILLER       (A94)        
*S**01 #STU-FIRST-OUT   
*S**  02 #STU-FIRST-S  (A11) INIT <'<FirstName>'>           
*S**  02 #STU-FIRST    (A12)        
*S**  02 #STU-FIRST-E  (A12) INIT <'</FirstName>'>          
*S**  02 #FILLER       (A65)        
*S**01 #STU-MI-OUT      
*S**  02 #STU-MI-S     (A15) INIT <'<MiddleInitial>'>       
*S**  02 #STU-MI       (A1)         
*S**  02 #STU-MI-E     (A16) INIT <'</MiddleInitial>'>      
*S**  02 #FILLER       (A68)        
*S**01 #STU-NAME-END    
*S**  02 #STU-NAME-E   (A7) INIT <'</Name>'>    
*S**  02 #FILLER       (A93)        
*S***       
*S**01 #STU-CONTACT-BEG 
*S**  02 #STU-CONT-S   (A10) INIT <'<Contacts>'>
*S**  02 #FILLER       (A90)        
*S**01 #STU-ADDRESS-BEG 
*S**  02 #STU-ADDR-S   (A18) INIT <'<PermanentAddress>'>    
*S**  02 #FILLER       (A82)        
*S**01 #STU-STREET-OUT  
*S**  02 #STU-STRT-S   (A13) INIT <'<AddressLine>'>         
*S**  02 #STU-STRT     (A35)        
*S**  02 #STU-STRT-E   (A14) INIT <'</AddressLine>'>        
*S**  02 #FILLER       (A38)        
*S**01 #STU-CITY-OUT    
*S**  02 #STU-CITY-S   (A6)  INIT  <'<City>'>   
*S**  02 #STU-CITY     (A20)        
*S**  02 #STU-CITY-E   (A7)  INIT  <'</City>'>  
*S**  02 #FILLER       (A67)        
*S**01 #STU-STATE-OUT   
*S**  02 #STU-STATE-S  (A19) INIT <'<StateProvinceCode>'>   
*S**  02 #STU-STATE    (A2)         
*S**  02 #STU-STATE-E  (A20) INIT <'</StateProvinceCode>'>  
*S**  02 #FILLER       (A59)        
*S**01 #STU-COUNTRY-OUT 
*S**  02 #STU-CNTRY-S  (A13) INIT <'<CountryCode>'>         
*S**  02 #STU-CNTRY    (A3)         
*S**  02 #STU-CNTRY-E  (A14) INIT <'</CountryCode>'>        
*S**  02 #FILLER       (A70)        
*S**01 #STU-ZIP-OUT     
*S**  02 #STU-ZIP-S    (A12) INIT <'<PostalCode>'>          
*S**  02 #STU-ZIP      (A13)        
*S**  02 #STU-ZIP-E    (A13) INIT <'</PostalCode>'>         
*S**  02 #FILLER       (A62)        
*S**01 #STU-ADDRESS-END 
*S**  02 #STU-ADDR-E   (A19) INIT <'</PermanentAddress>'>   
*S**  02 #FILLER       (A81)        
*S**01 #STU-CONTACT-END 
*S**  02 #STU-CONT-E   (A11) INIT <'</Contacts>'>           
*S**  02 #FILLER       (A89)        
*S***       
*S**01 #STU-CIT-BEG     
*S**  02 #STU-CITIZ-S  (A13) INIT <'<Citizenship>'>         
*S**  02 #FILLER       (A87)        
*S**01 #STU-CIT-OUT     
*S**  02 #STU-CIT-S    (A23) INIT <'<CitizenshipStatusCode>'>           
*S**  02 #STU-CIT      (A1)         
*S**  02 #STU-CIT-E    (A24) INIT <'</CitizenshipStatusCode>'>          
*S**  02 #FILLER       (A52)        
*S**01 #STU-CIT-END     
*S**  02 #STU-CITIZ-E  (A14) INIT <'</Citizenship>'>        
*S**  02 #FILLER       (A86)        
*S***       
*S*** AWARD BLOCK       
*S***       
*S**01 #AWD-BEG         
*S**  02 #AWD-TAG      (A30)        
*S**  02 #FILLER       (A70)        
*S***       
*S**01 #FG-PELL        (A30) INIT <'<Pell>'>    
*S**01 #FG-TEACH       (A30) INIT <'<TEACH>'>   
*S***       
*S**01 #AWD-END         
*S**  02 #AWD-TAG-END  (A31)        
*S**  02 #FILLER       (A69)        
*S***       
*S**01 #FG-PELL-END    (A31) INIT <'</Pell>'>   
*S**01 #FG-TEACH-END   (A31) INIT <'</TEACH>'>  
*S***       
*S**01 #AWARD-YR-OUT    
*S**  02 #FIN-AWDYR-S  (A20) INIT <'<FinancialAwardYear>'>  
*S**  02 #FIN-AWDYR    (A4)         
*S**  02 #FIN-AWDYR-E  (A21) INIT <'</FinancialAwardYear>'> 
*S**  02 #FILLER       (A55)        
*S**01 #CPSTRAN-OUT     
*S**  02 #CPS-TRAN-S   (A22) INIT <'<CPSTransactionNumber>'>
*S**  02 #CPS-TRAN     (A2)         
*S**  02 #CPS-TRAN-E   (A23) INIT <'</CPSTransactionNumber>'>           
*S**  02 #FILLER       (A53)        
*S***       
*S**01 #AWD-AMT-OUT     
*S**  02 #FIN-AWD-AMT-S(A22) INIT <'<FinancialAwardAmount>'>
*S**  02 #FIN-AWD-AMT  (A8)         
*S**  02 #FIN-AWD-AMT-E(A23) INIT <'</FinancialAwardAmount>'>           
*S**  02 #FILLER       (A47)        
*S**01 #AWARD-UPD-BEG   
*S**  02 #AWDNOTE-S    (A6)  INIT <'<Note>'>    
*S**  02 #FILLER       (A94)        
*S**01 #AWARD-UPD-OUT   
*S**  02 #AWARD-UPD-S  (A19) INIT <'<SchoolNoteMessage>'>   
*S**  02 #AWARD-UPD    (A4)         
*S**  02 #AWARD-UPD-E  (A20) INIT <'</SchoolNoteMessage>'>  
*S**  02 #FILLER       (A57)        
*S**01 #AWARD-UPD-END   
*S**  02 #AWDNOTE-E    (A7)  INIT <'</Note>'>   
*S**  02 #FILLER       (A93)        
*S**01 #AWARD-ID-OUT    
*S**  02 #AWARD-ID-S   (A18) INIT <'<FinancialAwardID>'>    
*S**  02 #AWARD-ID     (A21)        
*S**  02 #AWARD-ID-E   (A19) INIT <'</FinancialAwardID>'>   
*S**  02 #FILLER       (A42)        
*S**01 #AWARD-NUM-OUT   
*S**  02 #AWARD-NUM-S  (A22) INIT <'<FinancialAwardNumber>'>
*S**  02 #AWARD-NUM    (N3)         
*S**  02 #AWARD-NUM-E  (A23) INIT <'</FinancialAwardNumber>'>           
*S**  02 #FILLER       (A52)        
*S**01 #YR-COL-OUT      
*S**  02 #YR-COL-S     (A18) INIT <'<StudentLevelCode>'>    
*S**  02 #YR-COL       (A1)         
*S**  02 #YR-COL-E     (A19) INIT <'</StudentLevelCode>'>   
*S**  02 #FILLER       (A62)        
*S**01 #COST-OUT        
*S**  02 #COST-S       (A16) INIT <'<AttendanceCost>'>      
*S**  02 #COST         (A8)         
*S**  02 #COST-E       (A17) INIT <'</AttendanceCost>'>     
*S**  02 #FILLER       (A59)        
*S**01 #VERSTAT-OUT     
*S**  02 #VERSTAT-S    (A24) INIT <'<VerificationStatusCode>'>          
*S**  02 #VERSTAT      (A1)         
*S**  02 #VERSTAT-E    (A25) INIT <'</VerificationStatusCode>'>         
*S**  02 #FILLER       (A50)        
*S**01 #ENR-OUT         
*S**  02 #ENR-DT-S     (A16) INIT <'<EnrollmentDate>'>      
*S**  02 #ENR-DT       (A10)        
*S**  02 #ENR-DT-E     (A17) INIT <'</EnrollmentDate>'>     
*S**  02 #FILLER       (A57)        
*S***       
*S**01 #ATB-CODE-OUT    
*S**  02 #ATB-CODE-S   (A24) INIT <'<StudentEligibilityCode>'>          
*S**  02 #ATB-CODE     (A2)         
*S**  02 #ATB-CODE-E   (A25) INIT <'</StudentEligibilityCode>'>         
*S**  02 #FILLER       (A49)        
*S**01 #ATB-ADMN-OUT    
*S**  02 #ATB-ADMN-S   (A39)        
*S**                   INIT <'<AbilityToBenefitTestAdministratorCode>'> 
*S**  02 #ATB-ADMN     (A2)         
*S**  02 #ATB-ADMN-E   (A40)        
*S**                   INIT <'</AbilityToBenefitTestAdministratorCode>'>
*S**  02 #FILLER       (A19)        
*S**01 #ATB-TEST-OUT    
*S**  02 #ATB-TEST-S   (A26) INIT <'<AbilityToBenefitTestCode>'>        
*S**  02 #ATB-TEST     (A2)         
*S**  02 #ATB-TEST-E   (A27) INIT <'</AbilityToBenefitTestCode>'>       
*S**  02 #FILLER       (A45)        
*S**01 #ATB-DATE-OUT    
*S**  02 #ATB-DATE-S   (A32) INIT <'<AbilityToBenefitCompletionDate>'>  
*S**  02 #ATB-DATE     (A10)        
*S**  02 #ATB-DATE-E   (A33) INIT <'</AbilityToBenefitCompletionDate>'> 
*S**  02 #FILLER       (A25)        
*S**01 #ATB-STATE-OUT   
*S**  02 #ATB-STATE-S  (A27) INIT <'<AbilityToBenefitStateCode>'>       
*S**  02 #ATB-STATE    (A2)         
*S**  02 #ATB-STATE-E  (A28) INIT <'</AbilityToBenefitStateCode>'>      
*S**  02 #FILLER       (A43)        
*S***       
*S**01 #AEI-OUT         
*S**  02 #AEI-S        (A32) INIT <'<AdditionalEligibilityIndicator>'>  
*S**  02 #AEI          (A5)         
*S**  02 #AEI-E        (A33) INIT <'</AdditionalEligibilityIndicator>'> 
*S**  02 #FILLER       (A30)        
*S***       
*S*** DISB BLOCK        
*S**01 #DISB-NBR-OUT    
*S**  02 #DISB-NBR-S   (A22) INIT <'<Disbursement Number=@'>
*S**  02 #DISB-NBR     (N2)         
*S**  02 #DISB-NBR-E   (A2) INIT <'@>'>         
*S**  02 #FILLER       (A74)        
*S***       
*S**01 #DISB-DP-BEG     
*S**  02 #DPNOTE-S     (A6)  INIT <'<Note>'>    
*S**  02 #FILLER       (A94)        
*S**01 #DISB-DP-OUT     
*S**  02 #DISB-DP-S    (A19) INIT <'<SchoolNoteMessage>'>   
*S**  02 #DISB-DP      (A1)         
*S**  02 #DISB-DP-E    (A20) INIT <'</SchoolNoteMessage>'>  
*S**  02 #FILLER       (A60)        
*S**01 #DISB-DP-END     
*S**  02 #DPNOTE-S     (A7)  INIT <'</Note>'>   
*S**  02 #FILLER       (A93)        
*S***       
*S**01 #DISB-AMT-OUT    
*S**  02 #DISB-AMT-S   (A20) INIT <'<DisbursementAmount>'>  
*S**  02 #DISB-AMT     (A8)         
*S**  02 #DISB-AMT-E   (A21) INIT <'</DisbursementAmount>'> 
*S**  02 #FILLER       (A51)        
*S***       
*S**01 #DISB-DT-OUT     
*S**  02 #DISB-DT-S    (A18) INIT <'<DisbursementDate>'>    
*S**  02 #DISB-DT      (A10)        
*S**  02 #DISB-DT-E    (A19) INIT <'</DisbursementDate>'>   
*S**  02 #FILLER       (A53)        
*S***       
*S**01 #DISB-RLS-OUT    
*S**  02 #DISB-RLS-S   (A30) INIT <'<DisbursementReleaseIndicator>'>    
*S**  02 #DISB-RLS     (A5)         
*S**  02 #DISB-RLS-E   (A31) INIT <'</DisbursementReleaseIndicator>'>   
*S**  02 #FILLER       (A34)        
*S***       
*S**01 #DISB-SEQ-OUT    
*S**  02 #DISB-SEQ-S   (A28) INIT <'<DisbursementSequenceNumber>'>      
*S**  02 #DISB-SEQ     (N2)         
*S**  02 #DISB-SEQ-E   (A29) INIT <'</DisbursementSequenceNumber>'>     
*S**  02 #FILLER       (A41)        
*S***       
*S**01 #DISB-ENRSCH-OUT 
*S**  02 #DISB-ENRSCH-S(A22) INIT <'<EnrollmentSchoolCode>'>
*S**  02 #DISB-ENRSCH  (A8)         
*S**  02 #DISB-ENRSCH-E(A23) INIT <'</EnrollmentSchoolCode>'>           
*S**  02 #FILLER       (A47)        
*S***       
*S**01 #DISB-PAYPD-DATE-OUT         
*S**  02 #DISB-PAYPD-S(A24) INIT <'<PaymentPeriodStartDate>'>           
*S**  02 #DISB-PAYPD-DATE(A10)      
*S**  02 #DISB-PAYPD-E(A25) INIT <'</PaymentPeriodStartDate>'>          
*S***       
*S**01 #DISB-PAYPD-END-OUT          
*S**  02 #DISB-PAYPD-END-S(A22) INIT <'<PaymentPeriodEndDate>'>         
*S**  02 #DISB-PAYPD-END-DATE(A10)  
*S**  02 #DISB-PAYPD-END-E(A23) INIT <'</PaymentPeriodEndDate>'>        
*S***       
*S**01 #DISB-ENR-STATUS-OUT         
*S**  02 #DISB-ENR-STATUS-S(A18) INIT <'<EnrollmentStatus>'>
*S**  02 #DISB-ENR-STATUS(A1)       
*S**  02 #DISB-ENR-STATUS-E(A19) INIT <'</EnrollmentStatus>'>           
*S***       
*S**01 #DISB-CIP-CODE-OUT           
*S**  02 #DISB-CIP-CODE-S(A16)   INIT <'<ProgramCIPCode>'>  
*S**  02 #DISB-CIP-CODE(A20)        
*S**  02 #DISB-CIP-CODE-E(A17)   INIT <'</ProgramCIPCode>'> 
*S**  02 #FILLER (A47)  
*S***       
*S**01 #PGM-LGTH-Y-OUT  
*S**  02 #PGM-LGTH-YRS-S(A25) INIT <'<PublishedPgmLengthYears>'>        
*S**  02 #PGM-LGTH-YRS (A7)         
*S**  02 #PGM-LGTH-YRS-E(A26) INIT <'</PublishedPgmLengthYears>'>       
*S**  02 #FILLER (A42)  
*S***       
*S**01 #PGM-LGTH-M-OUT  
*S**  02 #PGM-LGTH-MOS-S(A26) INIT <'<PublishedPgmLengthMonths>'>       
*S**  02 #PGM-LGTH-MOS(A7)          
*S**  02 #PGM-LGTH-MOS-E(A27) INIT <'</PublishedPgmLengthMonths>'>      
*S**  02 #FILLER (A39)  
*S***       
*S**01 #PGM-LGTH-W-OUT  
*S**  02 #PGM-LGTH-WKS-S(A25) INIT <'<PublishedPgmLengthWeeks>'>        
*S**  02 #PGM-LGTH-WKS(A7)          
*S**  02 #PGM-LGTH-WKS-E(A26) INIT <'</PublishedPgmLengthWeeks>'>       
*S**  02 #FILLER (A42)  
*S***       
*S**01 #PGM-ACAD-W-OUT  
*S**  02 #PGM-ACAD-WKS-S(A27) INIT <'<WeeksProgramsAcademicYear>'>      
*S**  02 #PGM-ACAD-WKS (A7)         
*S**  02 #PGM-ACAD-WKS-E(A28) INIT <'</WeeksProgramsAcademicYear>'>     
*S**  02 #FILLER (A38)  
*S***       
*S**01 #SPEC-PGM-OUT    
*S**  02 #SPEC-PGM-S(A17) INIT <'<SpecialPrograms>'>        
*S**  02 #SPEC-PGM (A1) 
*S**  02 #SPEC-PGM-E(A18) INIT <'</SpecialPrograms>'>       
*S**  02 #FILLER (A64)  
*S***       
*S**01 #CRED-LEVEL-OUT  
*S**  02 #CRED-LEV-S(A24) INIT <'<ProgramCredentialLevel>'> 
*S**  02 #CRED-LEV (A2) 
*S**  02 #CRED-LEV-E(A25) INIT <'</ProgramCredentialLevel>'>
*S**  02 #FILLER (A49)  
*S***       
*S**01 #DISB-CIP-CODE-YEAR-OUT      
*S**  02 #DISB-CIP-CODE-YEAR-S (A20) INIT <'<ProgramCIPCodeYear>'>      
*S**  02 #DISB-CIP-CODE-YEAR (A4)   
*S**  02 #DISB-CIP-CODE-YEAR-E(A21)  INIT <'</ProgramCIPCodeYear>'>     
*S**  02 #FILLER (A55)  
*S***       
*S**01 #DISB-END        
*S**  02 #DISB-E       (A15) INIT <'</Disbursement>'>       
*S**  02 #FILLER       (A85)        
*S***       
*S** 01 #STUDENT-END    
*S**   02 #STUDENT-E   (A10) INIT <'</Student>'>
*S**   02 #FILLER      (A90)        
*S** 01 #ATTSCHL-END    
*S**   02 #ATTSCHL-E   (A17) INIT <'</AttendedSchool>'>     
*S**   02 #FILLER      (A83)        
*S** 01 #RPTSCHL-END    
*S**   02 #RPTSCHL-E   (A18) INIT <'</ReportingSchool>'>    
*S**   02 #FILLER      (A82)        
*S** 01 #END-REC        
*S**   02 #COMMONREC-E (A15) INIT <'</CommonRecord>'>       
*S**   02 #FILLER(A85)  
*S***       
*S** 01 #PELL(L)        
*S** 01 #TEACH(L)       
*S***       
*S** 01 #SUMMARY-COUNTER (P7)       
*S** 01 #READ-COUNTER (P7)          
*S** 01 #WRITE-COUNTER (P7)         
*S** 01 #XML-COUNTER (P7)           
*S***       
*S** 01 #SUB (P3)       
*S** 01 #WORK-FIELD (A50)           
*S** 01 #LINE-OUT(A90)  
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**EJECT OFF(1)        
*S**FORMAT(1) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S***       
*S*** Load Parameters   
*S**MOVE ##PASS-TEMP TO PASS-BATCH-FLDS         
*S***       
*S**PERFORM TRANSLATE-QUOTES-TO-HEX 
*S**WRITE WORK FILE 3 VARIABLE #XML-LINE1       
*S**WRITE WORK FILE 3 VARIABLE #XML-LINE2       
*S**ADD 2 TO #XML-COUNTER           
*S***       
*S**PROG.   
*S**REPEAT  
*S**READ WORK FILE 1 WFFLS23D       
*S** IF (WFFLS23D.#EXPORT-PROGRAM NOT = 'Pell' AND          
*S**     WFFLS23D.#EXPORT-PROGRAM NOT = 'TEACH') OR         
*S**    WFFLS23D.#EXPORT-FAO NOT = #INPUT-FAO OR
*S**    WFFLS23D.#EXPORT-AIDYEAR NOT = #INPUT-AID-YEAR      
*S**   SKIP(1) 3        
*S**   WRITE(1) 3T 'Input parameters do not match summary file'         
*S**   SKIP(1) 1        
*S**   WRITE(1) 3T 'Correct invalid or missing parameters and re-run job'           
*S**   TERMINATE        
*S** END-IF 
*S** ADD 1 TO #SUMMARY-COUNTER      
*S***       
*S** IF #SUMMARY-COUNTER = 1        
*S**   PERFORM DOCUMENT-SETUP       
*S** END-IF 
*S** PERFORM RPT-SUMMARY-SETUP      
*S**END-WORK
*S***       
*S** WRITE WORK FILE 3 VARIABLE #ATTSCHL-BEG    
*S*** WRITE WORK FILE 3 VARIABLE #ATTSCHL-OUT   
*S** COMPRESS #ATTSCHLID-S #ATTSCHLID #ATTSCHLID-E  /* #ATTSCHL-OUT     
*S**   INTO #LINE-OUT LEAVING NO SPACE          
*S** WRITE WORK FILE 3 VARIABLE #LINE-OUT       
*S** ADD 2 TO #XML-COUNTER          
*S***       
*S**READ WORK FILE 2 WFFLE23D       
*S**  IF (WFFLE23D.#EXPORT-PROGRAM NOT = 'Pell' AND         
*S**      WFFLE23D.#EXPORT-PROGRAM NOT = 'TEACH') OR        
*S**     WFFLE23D.#EXPORT-FAO NOT = #INPUT-FAO OR           
*S**     WFFLE23D.#EXPORT-AIDYEAR NOT = #INPUT-AID-YEAR     
*S**    SKIP(1) 3       
*S**    WRITE(1) 3T 'Input parameters do not match student file'        
*S**    SKIP(1) 1       
*S**    WRITE(1) 3T 'Correct invalid or missing parameters and re-run job'          
*S**    TERMINATE       
*S**  END-IF
*S**  ADD 1 TO #READ-COUNTER        
*S***       
*S**  RESET #PELL #TEACH
*S**  RESET INITIAL #STUDENT-SSN-OUT #STUDENT-DOB-OUT       
*S**                #STUDENT-LAST-OUT #STUDENT-SID-OUT      
*S**                #STU-FIRST-OUT #STU-MI-OUT  
*S**                #STU-STREET-OUT #STU-CITY-OUT #STU-STATE-OUT        
*S**                #STU-COUNTRY-OUT #STU-ZIP-OUT           
*S**                #AWARD-YR-OUT #CPSTRAN-OUT #AWD-AMT-OUT 
*S**                #AWARD-UPD-OUT #AWARD-ID-OUT #AWARD-NUM-OUT         
*S**                #YR-COL-OUT #COST-OUT #VERSTAT-OUT #ENR-OUT         
*S**                #ATB-CODE-OUT #ATB-ADMN-OUT #ATB-TEST-OUT           
*S**                #ATB-DATE-OUT #ATB-STATE-OUT
*S**                #AEI-OUT        
*S**  PERFORM TRANSLATE-QUOTES-TO-HEX           
*S***       
*S**  PERFORM STUDENT-SETUP         
*S**  PERFORM AWARD-SETUP           
*S**  FOR #SUB = 1 TO 12
*S**    IF #E-DISB-NUMBER(#SUB) > 0 
*S**      PERFORM DISB-SETUP        
*S**      RESET INITIAL #DISB-NBR-OUT #DISB-AMT-OUT #DISB-DT-OUT        
*S**                    #DISB-RLS-OUT #DISB-SEQ-OUT #DISB-DP-OUT        
*S**      PERFORM TRANSLATE-QUOTES-TO-HEX       
*S**    ELSE
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**  END-FOR           
*S**  WRITE WORK FILE 3 VARIABLE #AWD-TAG-END   
*S**  WRITE WORK FILE 3 VARIABLE #STUDENT-END   
*S**  ADD 2 TO #XML-COUNTER         
*S**  ADD 1 TO #WRITE-COUNTER       
*S***       
*S**  IF (#INPUT-RUNMODE = 'TRIAL' OR = 'SAMPLE') AND       
*S**      #INPUT-LIMIT-COUNT > 0    
*S**    IF #WRITE-COUNTER GE #INPUT-LIMIT-COUNT 
*S**      ESCAPE BOTTOM IMMEDIATE   
*S**    END-IF          
*S**  END-IF
*S**END-WORK
*S***       
*S**WRITE WORK FILE 3 VARIABLE #ATTSCHL-END     
*S**WRITE WORK FILE 3 VARIABLE #RPTSCHL-END     
*S**WRITE WORK FILE 3 VARIABLE #END-REC         
*S**ADD 3 TO #XML-COUNTER           
*S**ESCAPE BOTTOM (PROG.) IMMEDIATE 
*S**END-REPEAT          
*S***       
*S*** Print job statistics          
*S**  WRITE(1) NOTITLE  
*S**    15T 'FINANCIER processing:' /           
*S**    17T 'Summary records read:' 
*S**                        (I) 55T #SUMMARY-COUNTER (EM=Z,ZZZ,ZZ9) /   
*S**    17T 'Student records read:' 
*S**                        (I) 55T #READ-COUNTER (EM=Z,ZZZ,ZZ9) //     
*S**    17T 'Student records exported:'         
*S**                        (I) 55T #WRITE-COUNTER (EM=Z,ZZZ,ZZ9) /     
*S**    17T 'XML lines written:'    
*S**                        (I) 55T #XML-COUNTER (EM=Z,ZZZ,ZZ9) /       
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DOCUMENT-SETUP
*S*************************************************************************         
*S**  MOVE EDITED *DATX(EM=YYYY-MM-DD) TO #DOCID-DT         
*S**  MOVE #DOCID-DT  TO #CRT-DATE  
*S**  MOVE *TIME TO #DOCID-TM       
*S**                #CRT-TIME       
*S**  MOVE WFFLS23D.#EXPORT-ENTITY  TO #SCHOOLID
*S**                                   #DOCID-SCHL          
*S**                                   #RPTSCHLID           
*S**                                   #ATTSCHLID           
*S**  MOVE 'T'   TO #DOCID-T        
*S**                #CRT-T          
*S**  MOVE '0'   TO #DOCID-SEC      
*S**                #CRT-SEC        
*S***       
*S**  WRITE WORK FILE 3 VARIABLE #TRANSDATA-BEG 
*S*** WRITE WORK FILE 3 VARIABLE #DOC-OUT       
*S**  MOVE LEFT JUSTIFIED #DOCID-DT TO #DOCID-DT  /* #DOC-OUT           
*S**  COMPRESS #DOCID-S #DOCUMENT-ID #DOCID-E     /* #DOC-OUT           
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #CREATE-OUT    
*S**  WRITE WORK FILE 3 VARIABLE #SOURCE-BEG    
*S**  WRITE WORK FILE 3 VARIABLE #SCHOOL-BEG    
*S*** WRITE WORK FILE 3 VARIABLE #SCHOOL-OUT    
*S**  COMPRESS #SCHOOLID-S #SCHOOLID #SCHOOLID-E   /* #SCHOOL-OUT       
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #SCHOOL-END    
*S**  WRITE WORK FILE 3 VARIABLE #SOURCE-END    
*S**  WRITE WORK FILE 3 VARIABLE #DEST-BEG      
*S**  WRITE WORK FILE 3 VARIABLE #COD-BEG       
*S**  WRITE WORK FILE 3 VARIABLE #COD-OUT       
*S**  WRITE WORK FILE 3 VARIABLE #COD-END       
*S**  WRITE WORK FILE 3 VARIABLE #DEST-END      
*S**  WRITE WORK FILE 3 VARIABLE #SOFTWARE-BEG  
*S**  WRITE WORK FILE 3 VARIABLE #SW-PROVIDER-OUT           
*S**  WRITE WORK FILE 3 VARIABLE #SW-VERSION-OUT
*S**  WRITE WORK FILE 3 VARIABLE #SOFTWARE-END  
*S**  WRITE WORK FILE 3 VARIABLE #FULLRESP-OUT  
*S**  WRITE WORK FILE 3 VARIABLE #TRANSDATA-END 
*S**  WRITE WORK FILE 3 VARIABLE #RPTSCHL-BEG   
*S*** WRITE WORK FILE 3 VARIABLE #RPTSCHL-OUT   
*S**  COMPRESS #RPTSCHLID-S #RPTSCHLID #RPTSCHLID-E   /* #RPTSCHL-OUT   
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  ADD 21 TO #XML-COUNTER        
*S**END-SUBROUTINE /* DOCUMENT-SETUP
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE RPT-SUMMARY-SETUP         
*S*************************************************************************         
*S**  IF #E-SUMM-STUDENT > 0        
*S**    DECIDE ON FIRST VALUE OF WFFLS23D.#EXPORT-PROGRAM   
*S**      VALUE 'Pell'  
*S**        MOVE #FINTYPE-PELL TO #FINTYPE-OUT  
*S**      VALUE 'TEACH' 
*S**        MOVE #FINTYPE-TEACH TO #FINTYPE-OUT 
*S**      NONE          
*S**        IGNORE      
*S**    END-DECIDE      
*S**    MOVE WFFLS23D.#EXPORT-AIDYEAR TO #FINAWD-YR         
*S**    MOVE EDITED #E-SUMM-STUDENT(EM=ZZZZZZZZ9) TO #TOT-COUNT         
*S**    MOVE EDITED #E-SUMM-AWARD(EM=ZZZZZZZZZZZZ9.99)  TO #TOT-RPT-AWD 
*S**    MOVE EDITED #E-SUMM-DISB(EM=ZZZZZZZZZZZZ9.99)   TO #TOT-RPT-DSB 
*S***       
*S**    WRITE WORK FILE 3 VARIABLE #RPT-SUMMARY-BEG         
*S**    WRITE WORK FILE 3 VARIABLE #FINTYPE-OUT 
*S**    WRITE WORK FILE 3 VARIABLE #FINAWD-OUT  
*S***   WRITE WORK FILE 3 VARIABLE #COUNT-OUT   
*S**    MOVE LEFT JUSTIFIED #TOT-COUNT TO #TOT-COUNT      /* #COUNT-OUT 
*S**    COMPRESS #TOT-COUNT-S #TOT-COUNT #TOT-COUNT-E     /* #COUNT-OUT 
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S***   WRITE WORK FILE 3 VARIABLE #TOTAWD-OUT  
*S**    MOVE LEFT JUSTIFIED #TOT-RPT-AWD TO #TOT-RPT-AWD    /* #TOTAWD-OUT          
*S**    COMPRESS #TOT-RPT-AWD-S #TOT-RPT-AWD #TOT-RPT-AWD-E /* #TOTAWD-OUT          
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S***   WRITE WORK FILE 3 VARIABLE #TOTDSB-OUT  
*S**    MOVE LEFT JUSTIFIED #TOT-RPT-DSB TO #TOT-RPT-DSB    /* #TOTDSB-OUT          
*S**    COMPRESS #TOT-RPT-DSB-S #TOT-RPT-DSB #TOT-RPT-DSB-E /* #TOTDSB-OUT          
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    WRITE WORK FILE 3 VARIABLE #RPT-SUMMARY-END         
*S**    ADD 7 TO #XML-COUNTER       
*S**  END-IF
*S**END-SUBROUTINE /* RPT-SUMMARY-SETUP         
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE STUDENT-SETUP 
*S*************************************************************************         
*S**  MOVE #E-ORIG-SSN        TO #STU-SSN       
*S**  MOVE EDITED #E-ORIG-DOB(EM=YYYY-MM-DD) TO #STU-DOB    
*S**  MOVE #E-ORIG-LAST       TO #STU-LAST      
*S**  MOVE #E-ORIG-STUDENT-ID TO #STU-SID       
*S**  MOVE #E-ORIG-FIRST      TO #STU-FIRST     
*S**  MOVE #E-ORIG-MI         TO #STU-MI        
*S**  MOVE #E-ORIG-AD-STRT TO #WORK-FIELD       
*S**  EXAMINE #WORK-FIELD '&' REPLACE '&amp;'   
*S**  EXAMINE #WORK-FIELD SINGLE-QUOTE REPLACE '&apos;'     
*S**  MOVE #WORK-FIELD        TO #STU-STRT      
*S**  MOVE #E-ORIG-AD-CITY TO #WORK-FIELD       
*S**  EXAMINE #WORK-FIELD '&' REPLACE '&amp;'   
*S**  EXAMINE #WORK-FIELD SINGLE-QUOTE REPLACE '&apos;'     
*S**  MOVE #WORK-FIELD        TO #STU-CITY      
*S**  MOVE #E-ORIG-AD-STATE   TO #STU-STATE     
*S**  MOVE #E-ORIG-AD-ZIP     TO #STU-ZIP       
*S**  MOVE #E-ORIG-CIT        TO #STU-CIT       
*S***       
*S**  WRITE WORK FILE 3 VARIABLE #STUDENT-BEG   
*S**  WRITE WORK FILE 3 VARIABLE #STUINDEX-BEG  
*S**  WRITE WORK FILE 3 VARIABLE #STUDENT-SSN-OUT           
*S**  WRITE WORK FILE 3 VARIABLE #STUDENT-DOB-OUT           
*S*** WRITE WORK FILE 3 VARIABLE #STUDENT-LAST-OUT          
*S**  COMPRESS #STU-LAST-S #STU-LAST #STU-LAST-E /* #STUDENT-LAST-OUT   
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #STUINDEX-END  
*S**  WRITE WORK FILE 3 VARIABLE #STU-PERSID-BEG
*S**  WRITE WORK FILE 3 VARIABLE #STUDENT-SID-OUT           
*S**  WRITE WORK FILE 3 VARIABLE #STU-PERSID-END
*S**  WRITE WORK FILE 3 VARIABLE #STU-NAME-BEG  
*S*** WRITE WORK FILE 3 VARIABLE #STU-FIRST-OUT 
*S**  COMPRESS #STU-FIRST-S #STU-FIRST #STU-FIRST-E /* #STU-FIRST-OUT   
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S*** WRITE WORK FILE 3 VARIABLE #STU-MI-OUT    
*S**  COMPRESS #STU-MI-S #STU-MI #STU-MI-E          /* #STU-MI-OUT      
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #STU-NAME-END  
*S**  WRITE WORK FILE 3 VARIABLE #STU-CONTACT-BEG           
*S**  WRITE WORK FILE 3 VARIABLE #STU-ADDRESS-BEG           
*S*** WRITE WORK FILE 3 VARIABLE #STU-STREET-OUT
*S**  COMPRESS #STU-STRT-S #STU-STRT #STU-STRT-E   /*#STU-STRT-E        
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S*** WRITE WORK FILE 3 VARIABLE #STU-CITY-OUT  
*S**  COMPRESS #STU-CITY-S #STU-CITY #STU-CITY-E /* #STU-CITY-OUT       
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S*** WRITE WORK FILE 3 VARIABLE #STU-STATE-OUT 
*S**  COMPRESS #STU-STATE-S #STU-STATE #STU-STATE-E   /* #STU-STATE-OUT 
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S*** WRITE WORK FILE 3 VARIABLE #STU-ZIP-OUT   
*S**  COMPRESS #STU-ZIP-S #STU-ZIP #STU-ZIP-E /* #STU-ZIP-OUT           
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #STU-ADDRESS-END           
*S**  WRITE WORK FILE 3 VARIABLE #STU-CONTACT-END           
*S**  WRITE WORK FILE 3 VARIABLE #STU-CIT-BEG   
*S*** WRITE WORK FILE 3 VARIABLE #STU-CIT-OUT   
*S**  COMPRESS #STU-CIT-S #STU-CIT #STU-CIT-E     /* #STU-CIT-OUT       
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #STU-CIT-END   
*S**  ADD 24 TO #XML-COUNTER        
*S**END-SUBROUTINE /* STUDENT-SETUP 
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE AWARD-SETUP   
*S*************************************************************************         
*S**  DECIDE ON FIRST VALUE OF WFFLE23D.#EXPORT-PROGRAM     
*S**    VALUE 'Pell'    
*S**      ASSIGN #PELL  = TRUE      
*S**      MOVE #FG-PELL      TO #AWD-TAG        
*S**      MOVE #FG-PELL-END  TO #AWD-TAG-END    
*S**    VALUE 'TEACH'   
*S**      ASSIGN #TEACH = TRUE      
*S**      MOVE #FG-TEACH     TO #AWD-TAG        
*S**      MOVE #FG-TEACH-END TO #AWD-TAG-END    
*S**    NONE
*S**      IGNORE        
*S**  END-DECIDE        
*S***       
*S**  MOVE WFFLE23D.#EXPORT-AIDYEAR               TO #FIN-AWDYR         
*S**  MOVE #E-ORIG-FEDID-TRAN                     TO #CPS-TRAN          
*S**  MOVE EDITED #E-ORIG-AWARD(EM=ZZZZ9.99)      TO #FIN-AWD-AMT       
*S**  MOVE #E-ORIG-UPDATE                         TO #AWARD-UPD         
*S**  MOVE #E-ORIG-GRANT-ID                       TO #AWARD-ID          
*S**  MOVE #E-ORIG-GRANT-NUM                      TO #AWARD-NUM         
*S**  MOVE #E-ORIG-YR-COL                         TO #YR-COL
*S**  MOVE EDITED #E-ORIG-BUDGET(EM=ZZZZ9.99)     TO #COST  
*S**  MOVE #E-ORIG-VER-STATUS                     TO #VERSTAT           
*S**  MOVE EDITED #E-ORIG-ENR-DATE(EM=YYYY-MM-DD) TO #ENR-DT
*S**  MOVE #E-ORIG-ATB-CODE                       TO #ATB-CODE          
*S**  MOVE #E-ORIG-ATB-ADMN                       TO #ATB-ADMN          
*S**  MOVE #E-ORIG-ATB-TEST                       TO #ATB-TEST          
*S**  MOVE EDITED #E-ORIG-ATB-DATE(EM=YYYY-MM-DD) TO #ATB-DATE          
*S**  MOVE #E-ORIG-ATB-STATE                      TO #ATB-STATE         
*S**  IF #E-ORIG-AEI = 'Y'          
*S**     MOVE 'true' TO #AEI        
*S**  ELSE  
*S**     MOVE 'false' TO #AEI       
*S**  END-IF
*S***       
*S**  WRITE WORK FILE 3 VARIABLE #AWD-BEG       
*S**  WRITE WORK FILE 3 VARIABLE #AWARD-YR-OUT  
*S**  WRITE WORK FILE 3 VARIABLE #CPSTRAN-OUT   
*S*** WRITE WORK FILE 3 VARIABLE #AWD-AMT-OUT   
*S**  MOVE LEFT JUSTIFIED #FIN-AWD-AMT TO #FIN-AWD-AMT    /* #AWD-AMT-OUT           
*S**  COMPRESS #FIN-AWD-AMT-S #FIN-AWD-AMT #FIN-AWD-AMT-E /* #AWD-AMT-OUT           
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #AWARD-UPD-BEG 
*S**  WRITE WORK FILE 3 VARIABLE #AWARD-UPD-OUT 
*S**  WRITE WORK FILE 3 VARIABLE #AWARD-UPD-END 
*S**  ADD 7 TO #XML-COUNTER         
*S***       
*S**  IF #TEACH         
*S**    WRITE WORK FILE 3 VARIABLE #AWARD-NUM-OUT           
*S**    WRITE WORK FILE 3 VARIABLE #AWARD-ID-OUT
*S**    WRITE WORK FILE 3 VARIABLE #YR-COL-OUT  
*S**    ADD 3 TO #XML-COUNTER       
*S**  END-IF
*S***       
*S**  IF #PELL          
*S***   WRITE WORK FILE 3 VARIABLE #COST-OUT    
*S**    MOVE LEFT JUSTIFIED #COST TO #COST   /* #COST       
*S**    COMPRESS #COST-S #COST #COST-E       /* #COST       
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**    IF #VERSTAT NE ' '          
*S**      WRITE WORK FILE 3 VARIABLE #VERSTAT-OUT           
*S**      ADD 1 TO #XML-COUNTER     
*S**    END-IF          
*S**  END-IF
*S***       
*S*** WRITE WORK FILE 3 VARIABLE #ENR-OUT       
*S**  MOVE LEFT JUSTIFIED #ENR-DT TO #ENR-DT      /* #ENR-OUT           
*S**  COMPRESS #ENR-DT-S #ENR-DT #ENR-DT-E        /* #ENR-OUT           
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  ADD 1 TO #XML-COUNTER         
*S***       
*S**  IF #PELL          
*S***   WRITE WORK FILE 3 VARIABLE #AEI-OUT     
*S**    COMPRESS #AEI-S #AEI #AEI-E /* #AEI-OUT 
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S***       
*S**  IF #ATB-CODE NE ' '           
*S***   WRITE WORK FILE 3 VARIABLE #ATB-CODE-OUT
*S**    COMPRESS #ATB-CODE-S #ATB-CODE #ATB-CODE-E /* #ATB-CODE-OUT     
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**    IF #ATB-ADMN NE ' '         
*S***     WRITE WORK FILE 3 VARIABLE #ATB-ADMN-OUT          
*S**      COMPRESS #ATB-ADMN-S #ATB-ADMN #ATB-ADMN-E /* #ATB-ADMN-OUT   
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE #LINE-OUT  
*S**      ADD 1 TO #XML-COUNTER     
*S**    END-IF          
*S**    IF #ATB-TEST NE ' '         
*S***     WRITE WORK FILE 3 VARIABLE #ATB-TEST-OUT          
*S**      COMPRESS #ATB-TEST-S #ATB-TEST #ATB-TEST-E /* #ATB-TEST-OUT   
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE #LINE-OUT  
*S**      ADD 1 TO #XML-COUNTER     
*S**    END-IF          
*S**    IF #ATB-STATE NE ' '        
*S***     WRITE WORK FILE 3 VARIABLE #ATB-STATE-OUT         
*S**      COMPRESS #ATB-STATE-S #ATB-STATE #ATB-STATE-E /* #ATB-STATE-OUT           
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE #LINE-OUT  
*S**      ADD 1 TO #XML-COUNTER     
*S**    END-IF          
*S**    IF #ATB-DATE NE ' '         
*S***     WRITE WORK FILE 3 VARIABLE #ATB-DATE-OUT          
*S**      COMPRESS #ATB-DATE-S #ATB-DATE #ATB-DATE-E /* #ATB-DATE-OUT   
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE #LINE-OUT  
*S**      ADD 1 TO #XML-COUNTER     
*S**    END-IF          
*S**  END-IF
*S***       
*S**END-SUBROUTINE /* AWARD-SETUP   
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DISB-SETUP    
*S*************************************************************************         
*S**  MOVE #E-DISB-NUMBER(#SUB) TO #DISB-NBR    
*S**  MOVE #E-DISB-DP(#SUB) TO #DISB-DP         
*S**  MOVE EDITED #E-DISB-AMOUNT(#SUB)(EM=ZZZZ9.99) TO #DISB-AMT        
*S**  MOVE EDITED #E-DISB-DATE(#SUB) (EM=YYYY-MM-DD) TO #DISB-DT        
*S**  IF #E-DISB-REL(#SUB) = 'Y'    
*S**     MOVE 'true' TO #DISB-RLS   
*S**  ELSE  
*S**     MOVE 'false' TO #DISB-RLS  
*S**  END-IF
*S**  MOVE #E-DISB-SEQ(#SUB)  TO #DISB-SEQ      
*S**  IF #E-DISB-ENR-STATUS(#SUB) = 'T'         
*S**    MOVE 'Q' TO #DISB-ENR-STATUS
*S**  ELSE  
*S**    IF #E-DISB-ENR-STATUS(#SUB) = 'N'       
*S**      MOVE 'H' TO #DISB-ENR-STATUS          
*S**    ELSE
*S**      MOVE #E-DISB-ENR-STATUS(#SUB) TO #DISB-ENR-STATUS 
*S**    END-IF          
*S**  END-IF
*S***       
*S**  MOVE #E-DISB-CIP-CODE(#SUB) TO #DISB-CIP-CODE         
*S**  MOVE #E-DISB-CIP-CODE-YEAR(#SUB) TO #DISB-CIP-CODE-YEAR           
*S**  MOVE #EXPORT-OPEID TO #DISB-ENRSCH        
*S***       
*S**  MOVE EDITED #E-DISB-PAYPD-START-DATE(#SUB) (EM=YYYY-MM-DD) TO     
*S**       #DISB-PAYPD-DATE         
*S**  MOVE EDITED #E-DISB-PAYPD-END-DATE(#SUB) (EM=YYYY-MM-DD) TO       
*S**       #DISB-PAYPD-END-DATE     
*S***       
*S*****only ONE of the below can be transmitted 
*S**  MOVE EDITED #E-DISB-PGM-LGTH-YRS(#SUB)(EM=ZZ9.999) TO #PGM-LGTH-YRS           
*S**  MOVE EDITED #E-DISB-PGM-LGTH-MOS(#SUB)(EM=ZZ9.999) TO #PGM-LGTH-MOS           
*S**  MOVE EDITED #E-DISB-PGM-LGTH-WKS(#SUB)(EM=ZZ9.999) TO #PGM-LGTH-WKS           
*S***       
*S**  MOVE EDITED #E-DISB-PGM-ACAD-WKS(#SUB)(EM=ZZ9.999) TO #PGM-ACAD-WKS           
*S**  MOVE #E-DISB-SPEC-PGM(#SUB)                TO #SPEC-PGM           
*S**  MOVE #E-DISB-CRED-LEV(#SUB)                TO #CRED-LEV           
*S***       
*S**  WRITE WORK FILE 3 VARIABLE #DISB-NBR-OUT  
*S*** WRITE WORK FILE 3 VARIABLE #DISB-AMT-OUT  
*S**  MOVE LEFT JUSTIFIED #DISB-AMT TO #DISB-AMT  /* #DISB-AMT-OUT      
*S**  COMPRESS #DISB-AMT-S #DISB-AMT #DISB-AMT-E  /* #DISB-AMT-OUT      
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #DISB-DT-OUT   
*S*** WRITE WORK FILE 3 VARIABLE #DISB-RLS-OUT  
*S**  COMPRESS #DISB-RLS-S #DISB-RLS #DISB-RLS-E /* #DISB-RLS           
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S**  WRITE WORK FILE 3 VARIABLE #DISB-SEQ-OUT  
*S*** WRITE WORK FILE 3 VARIABLE #DISB-ENRSCH-OUT           
*S**  COMPRESS #DISB-ENRSCH-S #DISB-ENRSCH #DISB-ENRSCH-E   
*S**                                                   /* #DISB-ENRSCH-OUT          
*S**    INTO #LINE-OUT LEAVING NO SPACE         
*S**  WRITE WORK FILE 3 VARIABLE #LINE-OUT      
*S***       
*S**  IF #DISB-PAYPD-DATE NE ' '    
*S**      MOVE LEFT JUSTIFIED #DISB-PAYPD-DATE TO #DISB-PAYPD-DATE      
*S**    COMPRESS #DISB-PAYPD-S #DISB-PAYPD-DATE #DISB-PAYPD-E  /*#DISB-PAYPD        
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE  #LINE-OUT 
*S**      ADD 1 TO #XML-COUNTER     
*S**  END-IF
*S**  IF #DISB-PAYPD-END-DATE NE ' '
*S**      MOVE LEFT JUSTIFIED #DISB-PAYPD-END-DATE TO #DISB-PAYPD-END-DATE          
*S**    COMPRESS #DISB-PAYPD-END-S #DISB-PAYPD-END-DATE #DISB-PAYPD-END-E           
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE  #LINE-OUT 
*S**      ADD 1 TO #XML-COUNTER     
*S**  END-IF
*S***       
*S**  IF #DISB-ENR-STATUS NE ' '    
*S**    COMPRESS #DISB-ENR-STATUS-S #DISB-ENR-STATUS #DISB-ENR-STATUS-E 
*S**                                               /* #DISB-ENR-STATUS-OUT          
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S**  IF #DISB-CIP-CODE NE ' '      
*S**    COMPRESS #DISB-CIP-CODE-S #DISB-CIP-CODE #DISB-CIP-CODE-E       
*S**                                              /* #DISB-CIP-CODE-OUT 
*S**      INTO #LINE-OUT LEAVING NO SPACE       
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S***       
*S**  IF VAL(#PGM-LGTH-YRS) > 0     
*S**    MOVE LEFT JUSTIFIED #PGM-LGTH-YRS TO #PGM-LGTH-YRS  
*S**    COMPRESS #PGM-LGTH-YRS-S #PGM-LGTH-YRS #PGM-LGTH-YRS-E          
*S**      INTO #LINE-OUT LEAVING NO SPACE              /* #PGM-LGTH-Y-OUT           
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**   ELSE 
*S**    IF VAL(#PGM-LGTH-MOS) > 0   
*S**      MOVE LEFT JUSTIFIED #PGM-LGTH-MOS TO #PGM-LGTH-MOS
*S**      COMPRESS #PGM-LGTH-MOS-S #PGM-LGTH-MOS #PGM-LGTH-MOS-E        
*S**        INTO #LINE-OUT LEAVING NO SPACE           /* #PGM-LGTH-M-OUT
*S**      WRITE WORK FILE 3 VARIABLE #LINE-OUT  
*S**      ADD 1 TO #XML-COUNTER     
*S**     ELSE           
*S**      IF VAL(#PGM-LGTH-WKS) > 0 
*S**        MOVE LEFT JUSTIFIED #PGM-LGTH-WKS TO #PGM-LGTH-WKS          
*S**        COMPRESS #PGM-LGTH-WKS-S #PGM-LGTH-WKS #PGM-LGTH-WKS-E      
*S**          INTO #LINE-OUT LEAVING NO SPACE        /* #PGM-LGTH-W-OUT 
*S**        WRITE WORK FILE 3 VARIABLE #LINE-OUT
*S**        ADD 1 TO #XML-COUNTER   
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  IF (VAL(#PGM-LGTH-MOS)> 0) OR (VAL(#PGM-LGTH-WKS)> 0) OR          
*S**     (#SPEC-PGM = 'P')          
*S**    MOVE LEFT JUSTIFIED #PGM-ACAD-WKS TO #PGM-ACAD-WKS  
*S**    COMPRESS #PGM-ACAD-WKS-S #PGM-ACAD-WKS #PGM-ACAD-WKS-E          
*S**      INTO #LINE-OUT LEAVING NO SPACE         /* #PGM-ACAD-W-OUT    
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S**  IF #SPEC-PGM NE ' '           
*S**    COMPRESS #SPEC-PGM-S #SPEC-PGM #SPEC-PGM-E          
*S**      INTO #LINE-OUT LEAVING NO SPACE         /* #SPEC-PGM-OUT      
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S**  IF VAL(#CRED-LEV) > 0         
*S**    MOVE LEFT JUSTIFIED #CRED-LEV TO #CRED-LEV          
*S**    COMPRESS #CRED-LEV-S #CRED-LEV #CRED-LEV-E          
*S**      INTO #LINE-OUT LEAVING NO SPACE          /* #CRED-LEVEL-OUT   
*S**    WRITE WORK FILE 3 VARIABLE #LINE-OUT    
*S**    ADD 1 TO #XML-COUNTER       
*S**  END-IF
*S**  IF #DISB-CIP-CODE NE ' '  /*IF we have a cip code then output yr  
*S**    COMPRESS #DISB-CIP-CODE-YEAR-S #DISB-CIP-CODE-YEAR  
*S**             #DISB-CIP-CODE-YEAR-E          
*S**        INTO #LINE-OUT LEAVING NO SPACE     
*S**      WRITE WORK FILE 3 VARIABLE  #LINE-OUT 
*S**      ADD 1 TO #XML-COUNTER     
*S**  END-IF
*S**  WRITE WORK FILE 3 VARIABLE #DISB-DP-BEG   
*S**  WRITE WORK FILE 3 VARIABLE #DISB-DP-OUT   
*S**  WRITE WORK FILE 3 VARIABLE #DISB-DP-END   
*S**  ADD 9 TO #XML-COUNTER         
*S***       
*S**  WRITE WORK FILE 3 VARIABLE #DISB-END      
*S**  ADD 1 TO #XML-COUNTER         
*S**END-SUBROUTINE /* DISB-SETUP    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE TRANSLATE-QUOTES-TO-HEX   
*S*************************************************************************         
*S**  EXAMINE #XML-L1 '@' REPLACE DOUBLE-QUOTE  
*S**  EXAMINE #SEG1 '@' REPLACE DOUBLE-QUOTE    
*S**  EXAMINE #SEG2 '@' REPLACE DOUBLE-QUOTE    
*S**  EXAMINE #SEG3 '@' REPLACE DOUBLE-QUOTE    
*S**  EXAMINE #SEG4 '@' REPLACE DOUBLE-QUOTE    
*S**  EXAMINE #DISB-NBR-S '@' REPLACE DOUBLE-QUOTE          
*S**  EXAMINE #DISB-NBR-E '@' REPLACE DOUBLE-QUOTE          
*S**END-SUBROUTINE /* TRANSLATE-QUOTES-TO-HEX   
*S**END     
*C**                                FATEMP  WFPER23N                        N S   NN0000        
*D01NAT8304N FATEMP  WFPER23N                        ZWDLH   ZWDLH           S      
*D02            2022071803314302022071803314300000017813    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFPER23N          
*S*** System    : FINANCIER         
*S*** Title     : Federal Grant Export          
*S*** Function  : This subprogram produces Pell Federal Grant records   
*S***             to be converted by WFFLEyyB to XML documents ready    
*S***             for transmittal to COD.       
*S***       
*S***      Copyright 1995 - 2022 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 WFPEL23D      
*S**  PARAMETER USING WWTABLED      
*S**  PARAMETER USING WWSTDNCD      
*S**  PARAMETER USING WFCPS23D      
*S**  PARAMETER USING WFFED23D      
*S**  PARAMETER USING WFISW23D      
*S**  PARAMETER         
*S**   01 #REPORT-PELL(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(A20)  
*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(A20)  
*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 WFFLE23D          
*S**  LOCAL USING WFFID23D /* Instituional Data Load        
*S**  LOCAL USING WWCALEND          
*S**  LOCAL USING WWCALENR          
*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(A1)      
*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(A40)        
*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<'Pell'>        
*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 #PELL-ACTION = 'G'       
*S**RESET #PELL-DATA #PELL-ACTIVE-FUND(*)       
*S**PERFORM PELL-REPORT-2223 #INPUT-EFF-DATE-D WFPEL23D     
*S***       
*S**PERFORM GET-TERM-DATES          
*S***       
*S**PERFORM DECIDE-TO-REPORT-PELL   
*S**IF #REPORT-PELL     
*S**  ASSIGN #PELL-ACTION = 'R'     
*S**  PERFORM PELL-REPORT-2223 #INPUT-EFF-DATE-D WFPEL23D   
*S**END-IF  
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**MOVE BY POSITION WW-GDA TO WW-PDA           
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE DECIDE-TO-REPORT-PELL     
*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**     (WFCPS23D.WF-CP-RP-ACT = 'H' OR        
*S**     (WFCPS23D.WF-CP-RP-RPT-DATE > WFCPS23D.WF-CP-RP-O-ACK-DATE AND 
*S**      WFCPS23D.WF-CP-RP-RPT-DATE > WFCPS23D.WF-CP-RP-D-ACK-DATE AND 
*S**      WFCPS23D.WF-CP-RP-ACT NE 'R') OR      
*S**     (#CUR-P-AWARD = 0 AND WFCPS23D.WF-CP-RP-A-AWARD = 0))          
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #INPUT-RUNMODE = 'RECOVER' 
*S**    IF WFCPS23D.WF-CP-RP-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 WFFLE23D #ESUB          
*S**  /*    
*S**  /* Retrieve institutional data
*S**  FOR #DISB-SUB = 1 TO 12       
*S**    IF #CUR-P-D-DP(#DISB-SUB) <> ' ' AND    
*S**        (#CUR-P-D-OFF(#DISB-SUB) <> 0 OR    
*S**        #CUR-P-D-DIS(#DISB-SUB) <> 0)       
*S**      MOVE #CUR-P-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 'Pell' TO #PRT-GRANT #ERR-GRANT      
*S**  MOVE 'Orig' TO #PRT-RECTYPE #ERR-RECTYPE  
*S**  MOVE EDITED #CUR-P-AWARD (EM=Z,ZZZ.99) TO #PRT-AMT    
*S**  MOVE EDITED #CUR-P-AWARD (EM=Z,ZZZ.99) TO #ERR-AMT    
*S**  /*    
*S**    IF #CUR-P-AWARD > 0         
*S**      IF NOT WFISW23D.#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 WFCPS23D.WF-CP-FED-ID = ' '        
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Federal ID' TO #ERR-COMMENT   
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF WFISW23D.#PELL-ELIG NE 'Y'         
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Not Pell eligible' TO #ERR-COMMENT        
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-P-COST = 0        
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE '9month budget' TO #ERR-COMMENT
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF (WFISW23D.#VER = 'Y' OR = '*') AND #CUR-P-VER-FED = ' '    
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Verification' TO #ERR-COMMENT 
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-P-VER-FED = 'V' AND           
*S**         #CUR-P-VER-TRAN NE WFCPS23D.WF-CP-FED-ID3 AND  
*S**         WFFED23D.WF-FE-F-PROF-JUDG NE 'Y'  
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Verification xaction' TO #ERR-COMMENT     
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-P-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**      /*   (03 & 05 retired)    
*S**      IF WWSTDNCD.WW-ST-ATB-CODE = '  ' OR  
*S**         (WWSTDNCD.WW-ST-ATB-CODE = '03' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '05')   
*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**      WFCPS23D.WF-CP-RP-RPT-DATE = #INPUT-EFF-DATE-D) OR
*S**     WFCPS23D.WF-CP-RP-ACT = 'R' OR         
*S**     #CUR-P-COST     NE WFCPS23D.WF-CP-RP-A-COST OR     
*S**     #CUR-P-VER-FED  NE WFCPS23D.WF-CP-RP-A-VER OR      
*S**     #CUR-P-ENR-DATE NE WFCPS23D.WF-CP-RP-A-ENR-DATE OR 
*S**     #CUR-P-AWARD    NE WFCPS23D.WF-CP-RP-A-AWARD       
*S**    ASSIGN #REPORT-ORIG = TRUE  
*S**    ADD #CUR-P-AWARD TO #P-AWRD-NET         
*S**    SUBTRACT WFCPS23D.WF-CP-RP-A-AWARD FROM #P-AWRD-NET 
*S**    /*  
*S**    /* Move origination data to be reported to "report" CPS fields  
*S**    MOVE WFCPS23D.WF-CP-FED-ID3 TO WFCPS23D.WF-CP-RP-R-FED-TRAN     
*S**    IF #PELL-ELIG NE 'Y'        
*S**      MOVE WFCPS23D.WF-CP-RP-A-FED-TRAN     
*S**                                TO WFCPS23D.WF-CP-RP-R-FED-TRAN     
*S**    END-IF          
*S**    MOVE #CUR-P-COST            TO WFCPS23D.WF-CP-RP-R-COST         
*S**    MOVE #CUR-P-VER-FED         TO WFCPS23D.WF-CP-RP-R-VER          
*S**    MOVE #CUR-P-ENR-DATE        TO WFCPS23D.WF-CP-RP-R-ENR-DATE     
*S**    MOVE #CUR-P-AWARD           TO WFCPS23D.WF-CP-RP-R-AWARD        
*S**    /*  
*S**    /* Create origination event 
*S**    MOVE 'PGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-ORIGINATION        
*S**    RESET #EO-CLAS-LABEL        
*S**    MOVE WFCPS23D.WF-CP-FED-ID3 TO #EO-TRAN-VALUE       
*S**    MOVE EDITED #CUR-P-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-P-D-NUM(*)  #RPT-P-D-SEQ(*)    
*S**        #RPT-P-D-DIS(*)  #RPT-P-D-DATE(*)   
*S**  /*    
*S**  /* Cycle through disbursements
*S**  FOR #SUB = 1 TO 12
*S**    IF #CUR-P-D-DP(#SUB) = ' ' AND          
*S**       #ACK-P-D-NUM(#SUB) = 0   
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* If previously reported and amount is unchanged, skip         
*S**    IF #CUR-P-D-DIS(#SUB) = #ACK-P-D-DIS(#SUB)          
*S**      ESCAPE TOP    
*S**    END-IF          
*S**    /*  
*S**    /* Set up print line        
*S**    MOVE 'Disb' TO #PRT-RECTYPE 
*S**    MOVE EDITED #CUR-P-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**    ADD #CUR-P-D-DIS(#SUB) TO #P-DISB-TOTAL 
*S**    ADD #CUR-P-D-DIS(#SUB) TO #P-DISB-NET   
*S**    SUBTRACT #ACK-P-D-DIS(#SUB) FROM #P-DISB-NET        
*S**    /*  
*S**    /* Move disbursements to be reported to "report" fields in array
*S**      IF #ACK-P-D-NUM(#SUB) = 0 
*S**        RESET #HOLD-NUM         
*S**        FOR #DSUB = 1 TO 12     
*S**          IF #ACK-P-D-NUM(#DSUB) > #HOLD-NUM
*S**            MOVE #ACK-P-D-NUM(#DSUB) TO #HOLD-NUM       
*S**          END-IF    
*S**          IF #RPT-P-D-NUM(#DSUB) > #HOLD-NUM
*S**            MOVE #RPT-P-D-NUM(#DSUB) TO #HOLD-NUM       
*S**          END-IF    
*S**        END-FOR     
*S**        COMPUTE #RPT-P-D-NUM(#SUB) = #HOLD-NUM + 1      
*S**        MOVE 1 TO #RPT-P-D-SEQ(#SUB)        
*S**      ELSE          
*S**        MOVE #ACK-P-D-NUM(#SUB) TO #RPT-P-D-NUM(#SUB)   
*S**        COMPUTE #RPT-P-D-SEQ(#SUB) = #ACK-P-D-SEQ(#SUB) + 1         
*S**      END-IF        
*S**      MOVE #CUR-P-D-DIS(#SUB) TO #RPT-P-D-DIS(#SUB)     
*S**      IF #CUR-P-D-DATE(#SUB) = INIT-DATE    
*S**        MOVE #ACK-P-D-DATE(#SUB) TO #RPT-P-D-DATE(#SUB) 
*S**      ELSE          
*S**        MOVE #CUR-P-D-DATE(#SUB) TO #RPT-P-D-DATE(#SUB) 
*S**      END-IF        
*S**    /*  
*S**    /* Create disbursement event
*S**    MOVE 'PGRpt' TO #EVENT-TYPE 
*S**    RESET INITIAL #EVENT-DISBURSEMENT       
*S**    MOVE EDITED #RPT-P-D-NUM(#SUB) (EM=99)     TO #ED-DSBN-VALUE    
*S**    MOVE EDITED #RPT-P-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-P-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-PELL = TRUE  
*S**    ADD 1 TO #P-STNT-COUNT      
*S**    ADD #CUR-P-AWARD TO #P-AWRD-TOTAL       
*S**    /*  
*S**    /* Load CPS updates         
*S**    RESET WFCPS23D.WF-CP-RP-ACT 
*S**          WFCPS23D.WF-CP-RP-ACT-RSN         
*S**          WFCPS23D.WF-CP-RP-ACT-DATE        
*S**    MOVE #INPUT-EFF-DATE-D TO WFCPS23D.WF-CP-RP-RPT-DATE
*S**    IF #REPORT-DISB 
*S**      MOVE #CUR-P-DISB TO WFCPS23D.WF-CP-RP-R-DISB      
*S**    END-IF          
*S**    /*  
*S**    /* Load export data         
*S**    ASSIGN WFFLE23D.#EXPORT-PROGRAM = 'Pell'
*S**    ASSIGN WFFLE23D.#EXPORT-AIDYEAR = ##AID-YEAR        
*S**    ASSIGN WFFLE23D.#EXPORT-FAO     = ##FAO-ID          
*S**    ASSIGN WFFLE23D.#EXPORT-OPEID   = WWTABLED.WW-OPE-ID
*S**    /*  
*S**    MOVE WFISW23D.#SSN TO #E-ORIG-SSN       
*S**    IF WFISW23D.#DOB = MASK(YYYYMMDD)       
*S**      MOVE EDITED WFISW23D.#DOB TO #E-ORIG-DOB (EM=YYYYMMDD)        
*S**    END-IF          
*S**    MOVE WFISW23D.#NM-LAST  TO #E-ORIG-LAST 
*S**    MOVE WFISW23D.#NM-FIRST TO #E-ORIG-FIRST
*S**    MOVE WFISW23D.#NM-MI    TO #E-ORIG-MI   
*S**    MOVE ##SID TO #E-ORIG-STUDENT-ID        
*S**    /*  
*S**    MOVE WFISW23D.#AD-STRT  TO #E-ORIG-AD-STRT          
*S**    MOVE WFISW23D.#AD-CITY  TO #E-ORIG-AD-CITY          
*S**    MOVE WFISW23D.#AD-STATE TO #E-ORIG-AD-STATE         
*S**    MOVE WFISW23D.#AD-ZIP   TO #E-ORIG-AD-ZIP           
*S**    /*  
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFFED23D.WF-FE-S-CIT = 'U'       
*S**        ASSIGN #E-ORIG-CIT = '1'
*S**      WHEN WFFED23D.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 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 WFCPS23D.WF-CP-RP-AEI TO #E-ORIG-AEI           
*S**    MOVE WFCPS23D.WF-CP-FED-ID3 TO #E-ORIG-FEDID-TRAN   
*S**    IF #PELL-ELIG NE 'Y'        
*S**      MOVE WFCPS23D.WF-CP-RP-A-FED-TRAN TO #E-ORIG-FEDID-TRAN       
*S**    END-IF          
*S**    MOVE #CUR-P-COST     TO #E-ORIG-BUDGET  
*S**    MOVE #CUR-P-VER-FED  TO #E-ORIG-VER-STATUS          
*S**    MOVE #CUR-P-ENR-DATE TO #E-ORIG-ENR-DATE
*S**    MOVE #CUR-P-AWARD    TO #E-ORIG-AWARD   
*S**    FOR #DSUB = 1 TO 12         
*S**      IF #RPT-P-D-NUM(#DSUB) NE 0           
*S**        ADD 1 TO #ESUB          
*S**        MOVE #RPT-P-D-NUM(#DSUB)  TO #E-DISB-NUMBER(#ESUB)          
*S**        MOVE #RPT-P-D-SEQ(#DSUB)  TO #E-DISB-SEQ(#ESUB) 
*S**        MOVE #CUR-P-D-DP(#DSUB)   TO #E-DISB-DP(#ESUB)  
*S**        MOVE #RPT-P-D-DIS(#DSUB)  TO #E-DISB-AMOUNT(#ESUB)          
*S**        MOVE #RPT-P-D-DATE(#DSUB) TO #E-DISB-DATE(#ESUB)
*S**        MOVE 'Y'                  TO #E-DISB-REL(#ESUB) 
*S**        /*          
*S**        /* Enrollment,CIP and pgm length,etc
*S**        /*          
*S**        IF ##SCHED-DP(#DSUB) = #CUR-P-D-DP(#DSUB)       
*S**          MOVE BY NAME WFFID23D.#EXPORT-DISBURSEMENT(#DSUB) TO      
*S**                       WFFLE23D.#EXPORT-DISBURSEMENT(#ESUB)         
*S**          MOVE #WW-TERM-START-DATE(#ESUB) TO
*S**            WFFLE23D.#E-DISB-PAYPD-START-DATE(#ESUB)    
*S**          MOVE #WW-TERM-END-DATE(#ESUB) TO  
*S**            WFFLE23D.#E-DISB-PAYPD-END-DATE(#ESUB)      
*S**        END-IF      
*S**      END-IF        
*S**    END-FOR         
*S**    WRITE WORK FILE 2 WFFLE23D  
*S**  END-IF
*S**END-SUBROUTINE /* DECIDE-TO-REPORT-PELL     
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-INST-DATA
*S*************************************************************************         
*S**  /* Retrieve Pell Export data from outside of Financier
*S**  CALLNAT 'WFFID23N' WW-GDA     
*S**           #FID-TYPE
*S**           #FID-FUNCTION        
*S**           #SCHED-DP(*)         
*S**           WFFID23D 
*S**  /* Move instituional data from PDA to Grant data PDA  
*S**  MOVE BY NAME WFFID23D TO WFFLE23D         
*S***       
*S**END-SUBROUTINE /* LOAD-INST-DATA
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE GET-TERM-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-DATES
*S***       
*S**END     
*C**                                FATEMP  WFTCR23N                        N S   NN0000        
*D01NAT8304N FATEMP  WFTCR23N                        ZWDLH   ZWDLH           S      
*D02            2022082611515102022082611515100000029262    
*D03LINUX   
*D04                 ISO_8859-1:1987
*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFTCR23N          
*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 - 2022 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 WFTCH23D      
*S**  PARAMETER USING WWTABLED      
*S**  PARAMETER USING WWSTDNCD      
*S**  PARAMETER USING WFCPS23D      
*S**  PARAMETER USING WFFED23D      
*S**  PARAMETER USING WFISW23D      
*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(A20)  
*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(A20)  
*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 WFFLE23D          
*S**  LOCAL USING WFFID23D /* 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(A1)      
*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(A40)        
*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 WFCPS23D.WF-CP-RT1-FY TO #CUR-T1-FY    
*S**MOVE WFCPS23D.WF-CP-RT2-FY TO #CUR-T2-FY    
*S***       
*S**PERFORM TEACH-REPORT-2223 #INPUT-EFF-DATE-D WFTCH23D    
*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-2223 #INPUT-EFF-DATE-D WFTCH23D  
*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**     (WFCPS23D.WF-CP-RT1-ACT = 'H' OR       
*S**     (WFCPS23D.WF-CP-RT1-RPT-DATE > WFCPS23D.WF-CP-RT1-O-ACK-DATE AND           
*S**      WFCPS23D.WF-CP-RT1-RPT-DATE > WFCPS23D.WF-CP-RT1-D-ACK-DATE AND           
*S**      WFCPS23D.WF-CP-RT1-ACT NE 'R') OR     
*S**     (#CUR-T1-AWARD = 0 AND WFCPS23D.WF-CP-RT1-A-AWARD = 0))        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #INPUT-RUNMODE = 'RECOVER' 
*S**    IF WFCPS23D.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 WFFLE23D #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 WFISW23D.#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 WFCPS23D.WF-CP-FED-ID = ' '        
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Federal ID' TO #ERR-COMMENT   
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T1-YR-COL LT '1' OR           
*S**         #CUR-T1-YR-COL GT '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**      /*   (03 & 05 retired)    
*S**      IF WWSTDNCD.WW-ST-ATB-CODE = '  ' OR  
*S**         (WWSTDNCD.WW-ST-ATB-CODE = '03' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '05')   
*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**      WFCPS23D.WF-CP-RT1-RPT-DATE = #INPUT-EFF-DATE-D) OR           
*S**     WFCPS23D.WF-CP-RT1-ACT = 'R' OR        
*S**     #CUR-T1-YR-COL   NE WFCPS23D.WF-CP-RT1-A-YR-COL OR 
*S**     #CUR-T1-ENR-DATE NE WFCPS23D.WF-CP-RT1-A-ENR-DATE OR           
*S**     #CUR-T1-AWARD    NE WFCPS23D.WF-CP-RT1-A-AWARD     
*S**    ASSIGN #REPORT-ORIG = TRUE  
*S**    ADD #CUR-T1-AWARD TO #T-AWRD-NET        
*S**    SUBTRACT WFCPS23D.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 WFCPS23D.WF-CP-RT1-R-GRANT    
*S**    MOVE WFCPS23D.WF-CP-FED-ID3 TO WFCPS23D.WF-CP-RT1-R-FED-TRAN    
*S**    MOVE #CUR-T1-YR-COL         TO WFCPS23D.WF-CP-RT1-R-YR-COL      
*S**    MOVE #CUR-T1-ENR-DATE       TO WFCPS23D.WF-CP-RT1-R-ENR-DATE    
*S**    MOVE #CUR-T1-AWARD          TO WFCPS23D.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 WFCPS23D.WF-CP-FED-ID3 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 WFCPS23D.WF-CP-RT1-ACT
*S**          WFCPS23D.WF-CP-RT1-ACT-RSN        
*S**          WFCPS23D.WF-CP-RT1-ACT-DATE       
*S**    IF WFCPS23D.WF-CP-RT1-FY = ' '          
*S**      MOVE #CUR-T1-FY TO WFCPS23D.WF-CP-RT1-FY          
*S**    END-IF          
*S**    MOVE #INPUT-EFF-DATE-D TO WFCPS23D.WF-CP-RT1-RPT-DATE           
*S**    IF #REPORT-DISB 
*S**      MOVE #CUR-T1-DISB TO WFCPS23D.WF-CP-RT1-R-DISB    
*S**    END-IF          
*S**    /*  
*S**    /* Load export data         
*S**    ASSIGN WFFLE23D.#EXPORT-PROGRAM = 'TEACH'           
*S**    ASSIGN WFFLE23D.#EXPORT-AIDYEAR = ##AID-YEAR        
*S**    ASSIGN WFFLE23D.#EXPORT-FAO     = ##FAO-ID          
*S**    ASSIGN WFFLE23D.#EXPORT-OPEID   = WWTABLED.WW-OPE-ID
*S**    /*  
*S**    MOVE WFISW23D.#SSN TO #E-ORIG-SSN       
*S**    IF WFISW23D.#DOB = MASK(YYYYMMDD)       
*S**      MOVE EDITED WFISW23D.#DOB TO #E-ORIG-DOB (EM=YYYYMMDD)        
*S**    END-IF          
*S**    MOVE WFISW23D.#NM-LAST  TO #E-ORIG-LAST 
*S**    MOVE WFISW23D.#NM-FIRST TO #E-ORIG-FIRST
*S**    MOVE WFISW23D.#NM-MI    TO #E-ORIG-MI   
*S**    MOVE ##SID TO #E-ORIG-STUDENT-ID        
*S**    /*  
*S**    MOVE WFISW23D.#AD-STRT  TO #E-ORIG-AD-STRT          
*S**    MOVE WFISW23D.#AD-CITY  TO #E-ORIG-AD-CITY          
*S**    MOVE WFISW23D.#AD-STATE TO #E-ORIG-AD-STATE         
*S**    MOVE WFISW23D.#AD-ZIP   TO #E-ORIG-AD-ZIP           
*S**    /*  
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFFED23D.WF-FE-S-CIT = 'U'       
*S**        ASSIGN #E-ORIG-CIT = '1'
*S**      WHEN WFFED23D.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 WFISW23D.#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 WFCPS23D.WF-CP-FED-ID3 TO #E-ORIG-FEDID-TRAN   
*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 WFFID23D.#EXPORT-DISBURSEMENT(#DSUB) TO      
*S**                       WFFLE23D.#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**                   WFFLE23D.#E-DISB-PAYPD-START-DATE(#ESUB)         
*S**              MOVE #WW-TERM-END-DATE(#TERM-SUB) TO      
*S**                   WFFLE23D.#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 WFFLE23D  
*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**     (WFCPS23D.WF-CP-RT2-ACT = 'H' OR       
*S**     (WFCPS23D.WF-CP-RT2-RPT-DATE > WFCPS23D.WF-CP-RT2-O-ACK-DATE AND           
*S**      WFCPS23D.WF-CP-RT2-RPT-DATE > WFCPS23D.WF-CP-RT2-D-ACK-DATE AND           
*S**      WFCPS23D.WF-CP-RT2-ACT NE 'R') OR     
*S**     (#CUR-T2-AWARD = 0 AND WFCPS23D.WF-CP-RT2-A-AWARD = 0))        
*S**    ESCAPE ROUTINE  
*S**  END-IF
*S**  IF #INPUT-RUNMODE = 'RECOVER' 
*S**    IF WFCPS23D.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 WFFLE23D #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 WFISW23D.#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 WFCPS23D.WF-CP-FED-ID = ' '        
*S**        ASSIGN #REPORT-ERROR = TRUE         
*S**        MOVE 'Federal ID' TO #ERR-COMMENT   
*S**        WRITE(2) #ERROR-LINE    
*S**        RESET #ERROR-LINE       
*S**      END-IF        
*S**      IF #CUR-T2-YR-COL LT '1' OR           
*S**         #CUR-T2-YR-COL GT '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**      /*   (03 & 05 retired)    
*S**      IF WWSTDNCD.WW-ST-ATB-CODE = '  ' OR  
*S**         (WWSTDNCD.WW-ST-ATB-CODE = '03' OR 
*S**          WWSTDNCD.WW-ST-ATB-CODE = '05')   
*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**      WFCPS23D.WF-CP-RT2-RPT-DATE = #INPUT-EFF-DATE-D) OR           
*S**     WFCPS23D.WF-CP-RT2-ACT = 'R' OR        
*S**     #CUR-T2-YR-COL   NE WFCPS23D.WF-CP-RT2-A-YR-COL OR 
*S**     #CUR-T2-ENR-DATE NE WFCPS23D.WF-CP-RT2-A-ENR-DATE OR           
*S**     #CUR-T2-AWARD    NE WFCPS23D.WF-CP-RT2-A-AWARD     
*S**    ASSIGN #REPORT-ORIG = TRUE  
*S**    ADD #CUR-T2-AWARD TO #T-AWRD-NET        
*S**    SUBTRACT WFCPS23D.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 WFCPS23D.WF-CP-RT2-R-GRANT    
*S**    MOVE WFCPS23D.WF-CP-FED-ID3 TO WFCPS23D.WF-CP-RT2-R-FED-TRAN    
*S**    MOVE #CUR-T2-YR-COL         TO WFCPS23D.WF-CP-RT2-R-YR-COL      
*S**    MOVE #CUR-T2-ENR-DATE       TO WFCPS23D.WF-CP-RT2-R-ENR-DATE    
*S**    MOVE #CUR-T2-AWARD          TO WFCPS23D.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 WFCPS23D.WF-CP-FED-ID3 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 WFCPS23D.WF-CP-RT2-ACT
*S**          WFCPS23D.WF-CP-RT2-ACT-RSN        
*S**          WFCPS23D.WF-CP-RT2-ACT-DATE       
*S**    IF WFCPS23D.WF-CP-RT2-FY = ' '          
*S**      MOVE #CUR-T2-FY TO WFCPS23D.WF-CP-RT2-FY          
*S**    END-IF          
*S**    MOVE #INPUT-EFF-DATE-D TO WFCPS23D.WF-CP-RT2-RPT-DATE           
*S**    IF #REPORT-DISB 
*S**      MOVE #CUR-T2-DISB TO WFCPS23D.WF-CP-RT2-R-DISB    
*S**    END-IF          
*S**    /*  
*S**    /* Load export data         
*S**    ASSIGN WFFLE23D.#EXPORT-PROGRAM = 'TEACH'           
*S**    ASSIGN WFFLE23D.#EXPORT-AIDYEAR = ##AID-YEAR        
*S**    ASSIGN WFFLE23D.#EXPORT-FAO     = ##FAO-ID          
*S**    ASSIGN WFFLE23D.#EXPORT-OPEID   = WWTABLED.WW-OPE-ID
*S**    /*  
*S**    MOVE WFISW23D.#SSN TO #E-ORIG-SSN       
*S**    IF WFISW23D.#DOB = MASK(YYYYMMDD)       
*S**      MOVE EDITED WFISW23D.#DOB TO #E-ORIG-DOB (EM=YYYYMMDD)        
*S**    END-IF          
*S**    MOVE WFISW23D.#NM-LAST  TO #E-ORIG-LAST 
*S**    MOVE WFISW23D.#NM-FIRST TO #E-ORIG-FIRST
*S**    MOVE WFISW23D.#NM-MI    TO #E-ORIG-MI   
*S**    MOVE ##SID TO #E-ORIG-STUDENT-ID        
*S**    /*  
*S**    MOVE WFISW23D.#AD-STRT  TO #E-ORIG-AD-STRT          
*S**    MOVE WFISW23D.#AD-CITY  TO #E-ORIG-AD-CITY          
*S**    MOVE WFISW23D.#AD-STATE TO #E-ORIG-AD-STATE         
*S**    MOVE WFISW23D.#AD-ZIP   TO #E-ORIG-AD-ZIP           
*S**    /*  
*S**    DECIDE FOR FIRST CONDITION  
*S**      WHEN WFFED23D.WF-FE-S-CIT = 'U'       
*S**        ASSIGN #E-ORIG-CIT = '1'
*S**      WHEN WFFED23D.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 WFISW23D.#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 WFCPS23D.WF-CP-FED-ID3 TO #E-ORIG-FEDID-TRAN   
*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 WFFID23D.#EXPORT-DISBURSEMENT(#DSUB) TO      
*S**                       WFFLE23D.#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**                   WFFLE23D.#E-DISB-PAYPD-START-DATE(#ESUB)         
*S**              MOVE #WW-TERM-END-DATE(#TERM-SUB) TO      
*S**                   WFFLE23D.#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 WFFLE23D  
*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 'WFFID23N' WW-GDA     
*S**           #FID-TYPE
*S**           #FID-FUNCTION        
*S**           #SCHED-DP(*)         
*S**           WFFID23D 
*S**  /* Move instituional data from PDA to Grant data PDA  
*S**  MOVE BY NAME WFFID23D TO WFFLE23D         
*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          
