*S*************************************************************************         
*S***       
*S***                              WolffPack    
*S***       
*S*** Subprogram: WFFEB27N          
*S*** System    : FINANCIER         
*S*** Title     : 2026-27 Federal Load subprogram           
*S*** Function  : This subprogram loads Federal application data from   
*S***             the ADD file into the WF-FEDERAL-2627 file.           
*S***       
*S***      Copyright 1995 - 2026 WolffPack, Inc.  All rights reserved.  
*S***       
*S***       Note: Module copied from WFFEL27N, modified to allow for    
*S***             additional fields and increased field sizes in        
*S***             mid 2026-2027 processing year.
*S***       
*S*************************************************************************         
*S**DEFINE DATA         
*S**  GLOBAL USING WWGDA
*S**  PARAMETER USING WWPDA         
*S**  PARAMETER         
*S**   01 #PARAMETER-FIELDS         
*S**     02 #PGM-PARAMETERS         
*S**       03 #EARLIER-REC(A1)      
*S**       03 #FED-REJ-CASE(A1)     
*S**       03 #OVRD-FED-REJ(A1)     
*S**       03 #OVRD-C-PEND(A1)      
*S**       03 #OVRD-C-XMIT(A1)      
*S**       03 #OVRD-LOCKED(A1)      
*S**       03 #OVRD-VERIFD(A1)      
*S**       03 #OVRD-PACKAGE(A1)     
*S**     02 #PASSED-PARAMETERS      
*S**       03 #INPUT-COUNTER(P7)    
*S**       03 #NEW-REJ-COUNTER(P7)  
*S**       03 #RE-REJ-COUNTER(P7)   
*S**       03 #BYPASS-COUNTER(P7)   
*S**       03 #ADD-RECORD-COUNTER(P7)           
*S**       03 #PROCESSED-RECORD(L)  
*S**  PARAMETER USING WFADDDSD      
*S***       
*S**  LOCAL USING WFFED27D /* Passed to object subprogram   
*S**  LOCAL USING WFFED27R /* Passed to object subprogram   
*S**  LOCAL USING WWSTDNTD /* Passed to object subprogram   
*S**  LOCAL USING WWSTDNTR /* Passed to object subprogram   
*S**  LOCAL USING WFCPC27D /* Passed to object subprogram   
*S**  LOCAL USING WFCPC27R /* Passed to object subprogram   
*S**  LOCAL USING WWAOBJ   /* Passed to object subprograms  
*S***       
*S*** LOCAL USING WWCONST  /* Constants LDA     
*S**  LOCAL 
*S**   01 SPACE (A1) INIT<' '>      
*S**   01 EDE-TYPE (A1) INIT<'E'>   
*S**   01 INIT-DATE (D) 
*S***       
*S**  LOCAL USING WWVALLDA /* Value validation LDA          
*S**  LOCAL USING WF27FEBL /* Sequential LDA    
*S***       
*S**  LOCAL 
*S**  01 #LOGICALS      
*S**    02 #ADD-FEDERAL(L)          
*S**    02 #ADD-CPS(L)  
*S**    02 #ARRAY-LOADED(L)         
*S***       
*S**  01 #SUB(P5)       
*S**  01 #SUB2(P5)      
*S***       
*S**  01 #DATA-ERROR    
*S**    02 #ERR-SID(A9) 
*S**    02 #ERR-NAM(A30)
*S**    02 #ERR-SRC(A1) 
*S**    02 #ERR-FLD(A25)
*S**    02 #ERR-VAL(A10)
*S***       
*S**  01 #TRANSLATE-FIELD(A30)      
*S**  01 #TRANSLATE-CASE(A1)        
*S**  01 #REMOVE-SPEC-CH(L)         
*S***       
*S**  01 #N(N2)         
*S**  01 #HOLD-FILE(A8) 
*S**  01 #HOLD-SAR(A3)  
*S**  01 #HOLD-EFC(A10) 
*S**  01 #PASS-KEY(A30) 
*S**  01 #PASS-TEMP(A30)
*S***       
*S*** Variables utilized by Event History routine           
*S**  01 #EVENT-TYPE(A5) CONST<'ADDLd'>         
*S**  01 #EVENT-DESC(A40)           
*S***       
*S**  01 #BLANKS-ARRAY(A200)        
*S**  01 REDEFINE #BLANKS-ARRAY     
*S**    02 #BLANK(A1/200)           
*S***       
*S**  01 #EDIT-DATE-YYYYMMDD(A8)    
*S**  01 REDEFINE #EDIT-DATE-YYYYMMDD           
*S**    02 #EDIT-DATE-YYYYMM(A6)    
*S**    02 #EDIT-DATE-DD(A2)        
*S***       
*S**  01 #HOLD-HOLD(N7) 
*S**  01 #HOLD-CDATE(D) 
*S**  01 #HOLD-MDATE(D) 
*S**  01 #HOLD-LOCK(A1) 
*S***       
*S**  01 #CNVT-NEG(L)   
*S**  01 #CNVT-BYTE(A1) 
*S**  01 #SAVE-BYTE(A1) 
*S***       
*S**  01 #HOLD-LAST(A20)
*S**  01 #HOLD-FIRST(A20)           
*S***       
*S**  01 #PASS-FIELDS   
*S**    02 #PASS-NM-LAST(A20)       
*S**    02 #PASS-NM-FIRST(A20)      
*S**    02 #PASS-NM-MI(A1)          
*S**    02 #PASS-PID(A9)
*S***       
*S**  01 #HOLD-LEU(N4.3)
*S**  01 #HOLD-LEU-FLAG(A1)         
*S**  01 #DISP-LEU(A8)  
*S**  01 #DISP-LEU-LIT(A12)         
*S**  01 #HOLD-FIELD(A50)           
*S***       
*S**  01 #START      (I4) INIT <1>  
*S**  01 #POS        (I4)           
*S**  01 #LENGTH     (I4)           
*S**  01 #COUNT      (I4) INIT <0>  
*S**  01 #STR-ARRAY  (A30/60)       
*S**  01 #STR-SUB    (P2)           
*S**  01 #HOLD-TEMP  (A100)         
*S**  01 #LARGE-FIELD-FIRST (A1)    
*S***       
*S**  LOCAL USING WWPARNTD          
*S**END-DEFINE          
*S***       
*S*** Define printers, formats, headings        
*S**FORMAT(2) LS=80 PS=60 ZP=ON IS=OFF ES=OFF SG=OFF        
*S***       
*S**FORMAT KD=ON PS=10  
*S**SET KEY ALL         
*S***       
*S**AT TOP OF PAGE(2)   
*S**  WRITE(2) NOTITLE ##PGM-ID     
*S**        27T '*** FINANCIER ADD LOAD ***'    
*S**        71T 'Page' *PAGE-NUMBER(2)(EM=ZZ9)  
*S**      / *DATX(EM=LLL' 'DD', 'YYYY)          
*S**        31T 'Field Value Errors'
*S**        71T *TIMX(EM=HH':'II' 'AP)          
*S**     // 31T 'Aid Year:' ##DISP-AY           
*S**      / 36T ##DISP-LIT ##DISP-FAO           
*S**    /// 'StudentID     Name                      Src    Error'      
*S**  SKIP(2) 1         
*S**END-TOPPAGE         
*S***       
*S*** Populate WW-GDA from WW-PDA   
*S**  MOVE BY POSITION WW-PDA TO WW-GDA         
*S***       
*S***       
*S**PROG.   
*S**  REPEAT
*S**    /*  
*S**    RESET #PROCESSED-RECORD     
*S**          #FED-REJ-CASE         
*S**          #EARLIER-REC          
*S**    MOVE ##SID TO #ERR-SID      
*S**    MOVE ##COMP-NAME TO #ERR-NAM
*S**    MOVE 'F' TO #ERR-SRC        
*S**    /*  
*S**    /* Load LDA from ADD record 
*S**    MOVE BY NAME WFADDDSD TO WF27FEBL       
*S**    /*  
*S**    /* Get Federal data record  
*S**    MOVE ##STUDENT-ID TO WFFED27D.WW-STUDENT-ID         
*S**    MOVE ##FAO-ID TO WFFED27D.WF-FAO        
*S**    /*  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'GET'         
*S**    PERFORM CALL-OBJECT-FEDERAL 
*S**    /*  
*S**    IF NOT WWAOBJ.#EXISTS       
*S**      ASSIGN #ADD-FEDERAL = TRUE
*S**    END-IF          
*S**    /*  
*S**    /* Federal reject           
*S**    /*  (only applicable for Automatic records)         
*S**    IF #OVRD-FED-REJ = 'Y' OR   
*S**       WFADDDSD.WF-AD-REJ-OVERRIDE = 'O'    
*S**      IGNORE                              /* Bypass Federal Reject edit         
*S**    ELSE
*S**      IF WFADDDSD.WF-AD-SEND-RSN NE 'C'     
*S**        IF WF27FEBL.WF-FE-C-DEP-MODEL = 'X' OR ='Y'    /* Federal rejects       
*S**          ASSIGN #FED-REJ-CASE = 'F'        
*S**          ESCAPE BOTTOM(PROG.)  
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Get CPS data record      
*S**    ASSIGN WWAOBJ.#FUNCTION = 'GET'         
*S**    ASSIGN WFCPC27D.WW-STUDENT-ID = ##STUDENT-ID        
*S**    ASSIGN WFCPC27D.WF-FAO = ##FAO-ID       
*S**    PERFORM CALL-OBJECT-CPS     
*S**    IF NOT WWAOBJ.#EXISTS       
*S**      ASSIGN #ADD-CPS = TRUE    
*S**    END-IF          
*S**    /*  
*S**    /* Don't allow transactions older than current      
*S**    /*   (only if processing batch, override if invoked online)     
*S**    IF ##PGM-ID = 'WFADDLDB'    
*S**      IF WF27FEBL.WF-FE-C-TRANS-NO < WFCPC27D.WF-CP-C-TRANS-NO      
*S**        ASSIGN #EARLIER-REC = 'Y'           
*S**        ESCAPE BOTTOM(PROG.)    
*S**      END-IF        
*S**    END-IF          
*S**    /*  
*S**    /* Check for rejects        
*S**    IF WFADDDSD.WF-AD-REJ-OVERRIDE NE 'O' AND           
*S**      (WFADDDSD.WF-AD-REJ1 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ2 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ3 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ4 NE SPACE OR      
*S**       WFADDDSD.WF-AD-REJ5 NE SPACE)        
*S**      ESCAPE BOTTOM(PROG.)      
*S**    END-IF          
*S**    /*  
*S**    PERFORM UPDATE-STUDENT      
*S**    PERFORM UPDATE-FEDERAL      
*S**    MOVE WF27FEBL.WF-ISIR1 TO #HOLD-FIELD   
*S**    MOVE WF27FEBL.WF-ISIR19 TO #HOLD-FIELD  
*S**    PERFORM LOAD-ISIR-2627B WF27FEBL.WF-ISIR
*S**                            WF27FEBL.WF-ISIRB           
*S**    MOVE ##PASS-TEMP TO #HOLD-TEMP          
*S**    RESET ##PASS-TEMP           
*S**    PERFORM LOAD-NSLDS-2627B WF27FEBL.WF-NSLDS          
*S**    /*  
*S**    /* (2026-2027 Mid year only)
*S**    /* Check for string of OBBBA fields that were truncated,        
*S**    /*  if found report         
*S**    IF ##PASS-TEMP NOT = ' '    
*S**      RESET #LARGE-FIELD-FIRST  
*S**      PERFORM REPORT-LARGE-FIELDS           
*S**    END-IF          
*S**    /*  
*S**    MOVE #HOLD-TEMP TO ##PASS-TEMP          
*S**    /*  
*S**    PERFORM UPDATE-CPS          
*S**    PERFORM LOAD-CORRECTIONS    
*S**    /*  
*S**    /* Add event    
*S**    PERFORM GET-NSLDS-LEU #HOLD-LEU #HOLD-LEU-FLAG      
*S**    MOVE EDITED #HOLD-LEU (EM=ZZZ9.999) TO #DISP-LEU    
*S**    MOVE LEFT JUSTIFIED #DISP-LEU TO #DISP-LEU-LIT      
*S**    COMPRESS '/LEU=' #DISP-LEU-LIT INTO #DISP-LEU-LIT LEAVING NO    
*S**    /*  
*S**    IF WF27FEBL.WF-FE-C-SAI = ' '           
*S**      COMPRESS 'FedTran #' WFCPC27D.WF-CP-C-TRANS-NO '/SAI blank'   
*S**        #DISP-LEU-LIT           
*S**          INTO #EVENT-DESC LEAVING NO       
*S**    ELSE
*S**      MOVE EDITED WF-CP-A-SAI (EM=Z,ZZZ,ZZ9-) TO #HOLD-EFC          
*S**      MOVE LEFT JUSTIFIED #HOLD-EFC TO #HOLD-EFC        
*S**      COMPRESS 'FedTran #' WFCPC27D.WF-CP-C-TRANS-NO '/SAI $' #HOLD-EFC         
*S**        #DISP-LEU-LIT           
*S**          INTO #EVENT-DESC LEAVING NO       
*S**    END-IF          
*S**    PERFORM ADD-EVENT #EVENT-TYPE #EVENT-DESC           
*S**    /*  
*S**    ADD 1 TO #ADD-RECORD-COUNTER
*S**    ASSIGN #PROCESSED-RECORD = TRUE         
*S**    ASSIGN ##PASS-ACTION = 'L'                 /* Confirm load on-line          
*S**    RESET ##PASS-KEY
*S**    ESCAPE BOTTOM(PROG.)        
*S**  END-REPEAT        
*S***       
*S**  MOVE BY POSITION WW-GDA TO WW-PDA         
*S***       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-CPS           
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WF-CPS-xxyy object subprogram 
*S**  CALLNAT 'WFCPC27O' WW-GDA     
*S**           WFCPC27D 
*S**           WFCPC27D-ID          
*S**           WFCPC27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-CPS           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-FEDERAL       
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WF-FEDERAL-xxyy object subprogram         
*S**  CALLNAT 'WFFED27O' WW-GDA     
*S**           WFFED27D 
*S**           WFFED27D-ID          
*S**           WFFED27R 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-FEDERAL       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE CALL-OBJECT-STUDENT       
*S*************************************************************************         
*S**  /*    
*S**  /* Call the WW-STUDENT object subprogram  
*S**  CALLNAT 'WWSTDNTO' WW-GDA     
*S**           WWSTDNTD 
*S**           WWSTDNTD-ID          
*S**           WWSTDNTR 
*S**           WWAOBJ   
*S**END-SUBROUTINE /* CALL-OBJECT-STUDENT       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-CORRECTIONS          
*S*************************************************************************         
*S**  /*    
*S**  /* First, if Corrected ISIR, delete old corrections   
*S**  IF WFADDDSD.WF-AD-SEND-RSN = 'C'          
*S**    MOVE EDE-TYPE TO ##PASS-KEY 
*S**    MOVE 'X' TO ##PASS-TEMP     
*S**    PERFORM PURGE-ECAR          
*S**  END-IF
*S**  /*    
*S**  /* If corrections were made to ADD file fields,       
*S**  /*  create correction records now that student is in FINANCIER    
*S**  DECIDE FOR EVERY CONDITION    
*S**    WHEN WFADDDSD.WF-AD-C-SSN = 'S'         
*S**      /*
*S**      /* SSN modified           
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-SSN'           
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-SSN    
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-DOB = 'B'         
*S**      /*
*S**      /* DOB modified           
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-DOB'           
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      MOVE EDITED WFADDDSD.WW-ST-DOB (EM=YYYYMMDD) TO #VALUE        
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NL = 'L'          
*S**      /*
*S**      /* Last name modified     
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-LAST'       
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-LAST
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NF = 'F'          
*S**      /*
*S**      /* First name modified    
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-FIRST'      
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-FIRST           
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN WFADDDSD.WF-AD-C-NM = 'M'          
*S**      /*
*S**      /* Middle Initial modified
*S**      ASSIGN #PASS-KEY = 'WWSTDNTD.WW-ST-NM-MI'         
*S**      RESET #PASS-TEMP          
*S**      PERFORM GET-SAR-NO #PASS-KEY #PASS-TEMP           
*S**      ASSIGN #HOLD-SAR = #PASS-TEMP         
*S**      ASSIGN #VALUE = WFADDDSD.WW-ST-NM-MI  
*S**      SEPARATE #PASS-KEY INTO #HOLD-FILE #PASS-KEY WITH 
*S**        DELIMITER '.'           
*S**      PERFORM LOAD-UTIL-ARRAY   
*S**    WHEN ANY        
*S**      CALLNAT 'WWDUTILN' WW-GDA WWVALLDA    
*S**    WHEN NONE       
*S**      IGNORE        
*S**  END-DECIDE        
*S**END-SUBROUTINE /* LOAD-CORRECTIONS          
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE LOAD-UTIL-ARRAY           
*S*************************************************************************         
*S**  /*    
*S**  /* Load utility array for correction record create    
*S**  RESET #ARRAY-LOADED           
*S**  ASSIGN #N = 1     
*S**  /*    
*S**  REPEAT WHILE NOT #ARRAY-LOADED
*S**    IF (#FILE(#N) = #HOLD-FILE AND #FIELD(#N) = #PASS-KEY) OR       
*S**       (#FILE(#N) = ' ' AND #FIELD(#N) = ' ')           
*S**      ASSIGN #SAR-FLD-NO(#N) = #HOLD-SAR          /* Found match OR 
*S**      ASSIGN #VALU(#N) = #VALUE                   /*  not yet defined           
*S**      ASSIGN #VALU-SUB = #N     
*S**      ASSIGN #ARRAY-LOADED = TRUE           
*S**      IF #FILE(#N) = ' ' AND #FIELD(#N) = ' '           
*S**        ASSIGN #FILE(#N) = #HOLD-FILE       
*S**        ASSIGN #FIELD(#N) = #PASS-KEY       
*S**      END-IF        
*S**    END-IF          
*S**    ADD 1 TO #N     
*S**  END-REPEAT        
*S**END-SUBROUTINE /* LOAD-UTIL-ARRAY           
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE REPORT-LARGE-FIELDS       
*S*************************************************************************         
*S**  /*    
*S**  /* Load utility array for correction record create    
*S**  REPEAT
*S**    /* Stop after 59 values */  
*S**    IF #COUNT >= 59 
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**        
*S**    /* Find next comma */       
*S**    EXAMINE SUBSTRING(##PASS-TEMP, #START) FOR ','      
*S**      GIVING POSITION #POS      
*S**        
*S**    IF #POS = 0     
*S**      /* Last value (no more commas) */     
*S**      ESCAPE BOTTOM 
*S**    END-IF          
*S**        
*S**    ADD 1 TO #COUNT 
*S**        
*S**    /* Extract value */         
*S**    IF #POS = 1     
*S**      MOVE ' ' TO #FIELD(#COUNT)
*S**    ELSE
*S**      #LENGTH := #POS - 1       
*S**      MOVE SUBSTRING(##PASS-TEMP, #START, #LENGTH)      
*S**        TO #STR-ARRAY(#COUNT)   
*S**    END-IF          
*S**        
*S**    /* Move start past comma */ 
*S**    ADD #POS TO #START          
*S**        
*S**  END-REPEAT        
*S**  FOR #STR-SUB = 1 TO #COUNT    
*S**    IF #STR-ARRAY(#STR-SUB) <> ' '          
*S**      DECIDE FOR FIRST CONDITION
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A1'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A2'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A3'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A4'    
*S**          ASSIGN #VALUE = 'WF-NS-CON-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A5'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A6'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A7'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A8'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-PEND'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'A9'    
*S**          ASSIGN #VALUE = 'WF-NS-SUB-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B1'    
*S**          ASSIGN #VALUE = 'WF-NS-UNS-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B2'    
*S**          ASSIGN #VALUE = 'WF-NS-CMB-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B3'    
*S**          ASSIGN #VALUE = 'WF-NS-CON-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B4'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL' 
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B5'    
*S**          ASSIGN #VALUE = 'WF-NS-PERK-TOTAL'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B6'    
*S**          ASSIGN #VALUE = 'WF-NS-PERK-CUR'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B7'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL-UG'          
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B8'    
*S**          ASSIGN #VALUE = 'WF-NS-TCH-TOTAL-GR'          
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'B9'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C1'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C2'    
*S**          ASSIGN #VALUE = 'WF-NS-P1-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C3'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C4'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C5'    
*S**          ASSIGN #VALUE = 'WF-NS-P2-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C6'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C7'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C8'    
*S**          ASSIGN #VALUE = 'WF-NS-P3-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'C9'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D1'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D2'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D3'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D4'    
*S**          ASSIGN #VALUE = 'WF-NS-T1-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D5'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D6'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D7'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D8'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'D9'    
*S**          ASSIGN #VALUE = 'WF-NS-T2-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E1'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-SCH-AWD'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E2'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-PAID'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E3'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-AWARD'  
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E4'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-DCHG-AMT'           
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E5'    
*S**          ASSIGN #VALUE = 'WF-NS-T3-ADJ-DSB'
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E6'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E7'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E8'    
*S**          ASSIGN #VALUE = 'WF-NS-L01-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'E9'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F1'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F2'    
*S**          ASSIGN #VALUE = 'WF-NS-L02-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F3'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F4'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F5'    
*S**          ASSIGN #VALUE = 'WF-NS-L03-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F6'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F7'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F8'    
*S**          ASSIGN #VALUE = 'WF-NS-L04-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'F9'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G1'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G2'    
*S**          ASSIGN #VALUE = 'WF-NS-L05-DSB'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G3'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-AMT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G4'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-OUT'   
*S**        WHEN #STR-ARRAY(#STR-SUB) = 'G5'    
*S**          ASSIGN #VALUE = 'WF-NS-L06-DSB'   
*S**        WHEN NONE   
*S**          IGNORE    
*S**      END-DECIDE    
*S**      IF #LARGE-FIELD-FIRST = ' '           
*S**        MOVE 'Y' TO #LARGE-FIELD-FIRST      
*S**        MOVE ##SID TO #ERR-SID  
*S**        MOVE ##COMP-NAME TO #ERR-NAM        
*S**      END-IF        
*S**      COMPRESS #VALUE ':'       
*S**       INTO #ERR-FLD LEAVING NO SPACE       
*S**      MOVE '> 999999' TO #ERR-VAL           
*S**      PERFORM WRITE-ERROR-LINE  
*S**    END-IF          
*S**  END-FOR           
*S**END-SUBROUTINE /* REPORT-LARGE-FIELDS       
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE PERFORM-TRANSLATE-CASE    
*S*************************************************************************         
*S**  /*    
*S**  /* Case translation routine   
*S**  PERFORM TRANSLATE-CASE #TRANSLATE-FIELD #TRANSLATE-CASE           
*S**                         #REMOVE-SPEC-CH    
*S**END-SUBROUTINE /* PERFORM-TRANSLATE-CASE    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-FEDERAL
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Federal information      
*S**  IF #ADD-FEDERAL   
*S**    ASSIGN WWAOBJ.#FUNCTION = 'STORE'       
*S**  ELSE  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'UPDATE'      
*S**  END-IF
*S**  /*    
*S**  CALLNAT 'WFFE227N' WW-GDA #LOGICALS #DATA-ERROR       
*S**                  WF27FEBL WF27FEBL-ID      
*S**                  WFFED27D WFFED27D-ID      
*S**                  WFADDDSD WFADDDSD-ID      
*S**                  WWVALLDA      
*S**  /*    
*S**  /* WFFE272N cannot do all FEDERAL updates - USIZE     
*S**  /*    
*S**  PERFORM CALL-OBJECT-FEDERAL   
*S**END-SUBROUTINE /* UPDATE-FEDERAL
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-CPS    
*S*************************************************************************         
*S**  /*    
*S**  /* Due to size restrictions, CPS is updated in WFFE327N           
*S**  /*    
*S**  CALLNAT 'WFFE327N' WW-GDA WFADDDSD WFADDDSD-ID        
*S**  /*    
*S**  /* Reread new or updated CPS record to get info for event record  
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'           
*S**  PERFORM CALL-OBJECT-CPS       
*S**END-SUBROUTINE /* UPDATE-CPS    
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-PARENTS
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Parent information       
*S**  /*  and update Student record to reflect parent ids   
*S**  IF WF27FEBL.WF-FE-P1-SSN NE ' '           
*S**    /*  
*S**    /* Determine parent 1 Parent ID from the SSN, name and DOB on ISIR          
*S**    /* If parent 1 Parent ID is second one in Student record, switch
*S**    /*  the ones in the student's record    
*S**    /* If parent 1 Parent ID doesn't match first one in Student record,         
*S**    /*  move it into first slot in Student record       
*S**    MOVE WF27FEBL.WF-FE-P1-NM-LAST  TO #PASS-NM-LAST    
*S**    MOVE WF27FEBL.WF-FE-P1-NM-FIRST TO #PASS-NM-FIRST   
*S**    RESET #PASS-NM-MI           
*S**    PERFORM DETERMINE-PID WF27FEBL.WF-FE-P1-SSN         
*S**                          #PASS-NM-LAST #PASS-NM-FIRST  
*S**                          #PASS-NM-MI       
*S**                          WF27FEBL.WF-FE-P1-DOB #PASS-PID           
*S**    IF #PASS-PID NE ' '         
*S**      IF #PASS-PID = WWSTDNTD.WW-ST-PARENT-ID2          
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID2 = WWSTDNTD.WW-ST-PARENT-ID1
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID1 = #PASS-PID    
*S**      END-IF        
*S**    END-IF          
*S**    IF #PASS-PID NE ' ' AND     
*S**       #PASS-PID NE WWSTDNTD.WW-ST-PARENT-ID1           
*S**      MOVE #PASS-PID TO WWSTDNTD.WW-ST-PARENT-ID1       
*S**    END-IF          
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-P2-SSN NE ' '           
*S**    /*  
*S**    /* Determine parent 2 Parent ID from the SSN, name and DOB on ISIR          
*S**    /* If parent 2 Parent ID is second one in Student record, switch
*S**    /*  the ones in the student's record    
*S**    /* If parent 2 Parent ID doesn't match first one in Student record,         
*S**    /*  move it into first slot in Student record       
*S**    MOVE WF27FEBL.WF-FE-P2-NM-LAST  TO #PASS-NM-LAST    
*S**    MOVE WF27FEBL.WF-FE-P2-NM-FIRST TO #PASS-NM-FIRST   
*S**    RESET #PASS-NM-MI           
*S**    PERFORM DETERMINE-PID WF27FEBL.WF-FE-P2-SSN         
*S**                          #PASS-NM-LAST #PASS-NM-FIRST  
*S**                          #PASS-NM-MI       
*S**                          WF27FEBL.WF-FE-P1-DOB #PASS-PID           
*S**    IF #PASS-PID NE ' '         
*S**      IF #PASS-PID = WWSTDNTD.WW-ST-PARENT-ID1          
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID1 = WWSTDNTD.WW-ST-PARENT-ID2
*S**        ASSIGN WWSTDNTD.WW-ST-PARENT-ID2 = #PASS-PID    
*S**      END-IF        
*S**    END-IF          
*S**    IF #PASS-PID NE ' ' AND     
*S**       #PASS-PID NE WWSTDNTD.WW-ST-PARENT-ID2           
*S**      MOVE #PASS-PID TO WWSTDNTD.WW-ST-PARENT-ID2       
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  /* Get current information for both parents from External file    
*S**  ASSIGN ##PASS-ACTION = 'R'    
*S**  RESET WWPARNTD    
*S**  ASSIGN WWPARNTD.#PARENT1-ID = WWSTDNTD.WW-ST-PARENT-ID1           
*S**  ASSIGN WWPARNTD.#PARENT2-ID = WWSTDNTD.WW-ST-PARENT-ID2           
*S**  PERFORM PARENTS-SERVICE WWPARNTD          
*S**  /*    
*S**  /* Decide whether parent information needs to be updated          
*S**  RESET #HOLD-LAST #HOLD-FIRST  
*S**  IF WWPARNTD.#PARENT1-ID NE ' '
*S**    IF WF27FEBL.WF-FE-P1-NM-LAST NE ' '     
*S**      IF WWPARNTD.#PARENT1-NAME NE ' '      
*S**        SEPARATE WWPARNTD.#PARENT1-NAME INTO #HOLD-LAST #HOLD-FIRST 
*S**          IGNORE WITH DELIMITERS ','        
*S**        MOVE LEFT JUSTIFIED #HOLD-FIRST TO #HOLD-FIRST  
*S**        ASSIGN #TRANSLATE-CASE = 'U'        
*S**        MOVE #HOLD-LAST TO #TRANSLATE-FIELD 
*S**        PERFORM PERFORM-TRANSLATE-CASE      
*S**      END-IF        
*S**      IF WF27FEBL.WF-FE-P1-NM-LAST  NE #TRANSLATE-FIELD OR          
*S**        (WF27FEBL.WF-FE-P1-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND           
*S**         WF27FEBL.WF-FE-P1-NM-FIRST NE ' ') 
*S**        IF WF27FEBL.WF-FE-P1-NM-LAST NE #TRANSLATE-FIELD
*S**          IF ##CNVT-CASE        
*S**            ASSIGN #TRANSLATE-CASE = 'M'    
*S**            MOVE WF27FEBL.WF-FE-P1-NM-LAST TO #TRANSLATE-FIELD      
*S**            PERFORM PERFORM-TRANSLATE-CASE  
*S**            MOVE #TRANSLATE-FIELD TO #HOLD-LAST         
*S**          ELSE      
*S**            MOVE WF27FEBL.WF-FE-P1-NM-LAST TO #HOLD-LAST
*S**          END-IF    
*S**        END-IF      
*S**        IF WF27FEBL.WF-FE-P1-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND         
*S**           WF27FEBL.WF-FE-P1-NM-FIRST NE ' '
*S**          MOVE WF27FEBL.WF-FE-P1-NM-FIRST TO #HOLD-FIRST
*S**        END-IF      
*S**        COMPRESS #HOLD-LAST ',' INTO #HOLD-LAST LEAVING NO          
*S**        COMPRESS #HOLD-LAST #HOLD-FIRST INTO WWPARNTD.#PARENT1-NAME 
*S**            WITH DELIMITER ' '  
*S**      END-IF        
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P1-SSN NE ' '         
*S**      MOVE WF27FEBL.WF-FE-P1-SSN TO WWPARNTD.#PARENT1-SSN           
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P1-DOB = MASK(YYYYMMDD)           
*S**      MOVE EDITED WF27FEBL.WF-FE-P1-DOB     
*S**               TO WWPARNTD.#PARENT1-DOB (EM=YYYYMMDD)   
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  RESET #HOLD-LAST #HOLD-FIRST  
*S**  IF WWPARNTD.#PARENT2-ID NE ' '
*S**    IF WF27FEBL.WF-FE-P2-NM-LAST NE ' '     
*S**      IF WWPARNTD.#PARENT2-NAME NE ' '      
*S**        SEPARATE WWPARNTD.#PARENT2-NAME INTO #HOLD-LAST #HOLD-FIRST 
*S**          IGNORE WITH DELIMITERS ','        
*S**        MOVE LEFT JUSTIFIED #HOLD-FIRST TO #HOLD-FIRST  
*S**        ASSIGN #TRANSLATE-CASE = 'U'        
*S**        MOVE #HOLD-LAST TO #TRANSLATE-FIELD 
*S**        PERFORM PERFORM-TRANSLATE-CASE      
*S**      END-IF        
*S**      IF WF27FEBL.WF-FE-P2-NM-LAST NE #TRANSLATE-FIELD OR           
*S**        (WF27FEBL.WF-FE-P2-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND           
*S**         WF27FEBL.WF-FE-P2-NM-FIRST NE ' ') 
*S**        IF WF27FEBL.WF-FE-P2-NM-LAST NE #TRANSLATE-FIELD
*S**          IF ##CNVT-CASE        
*S**            ASSIGN #TRANSLATE-CASE = 'M'    
*S**            MOVE WF27FEBL.WF-FE-P2-NM-LAST TO #TRANSLATE-FIELD      
*S**            PERFORM PERFORM-TRANSLATE-CASE  
*S**            MOVE #TRANSLATE-FIELD TO #HOLD-LAST         
*S**          ELSE      
*S**            MOVE WF27FEBL.WF-FE-P2-NM-LAST TO #HOLD-LAST
*S**          END-IF    
*S**        END-IF      
*S**        IF WF27FEBL.WF-FE-P2-NM-FIRST NE SUBSTRING(#HOLD-FIRST,1,1) AND         
*S**           WF27FEBL.WF-FE-P2-NM-FIRST NE ' '
*S**          MOVE WF27FEBL.WF-FE-P2-NM-FIRST TO #HOLD-FIRST
*S**        END-IF      
*S**        COMPRESS #HOLD-LAST ',' INTO #HOLD-LAST LEAVING NO          
*S**        COMPRESS #HOLD-LAST #HOLD-FIRST INTO WWPARNTD.#PARENT2-NAME 
*S**            WITH DELIMITER ' '  
*S**      END-IF        
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P2-SSN NE ' '         
*S**      MOVE WF27FEBL.WF-FE-P2-SSN TO WWPARNTD.#PARENT2-SSN           
*S**    END-IF          
*S**    IF WF27FEBL.WF-FE-P2-DOB = MASK(YYYYMMDD)           
*S**      MOVE EDITED WF27FEBL.WF-FE-P2-DOB     
*S**               TO WWPARNTD.#PARENT2-DOB (EM=YYYYMMDD)   
*S**    END-IF          
*S**  END-IF
*S**  ASSIGN ##PASS-ACTION = 'U'    
*S**  PERFORM PARENTS-SERVICE WWPARNTD          
*S**END-SUBROUTINE /* UPDATE-PARENTS
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE UPDATE-STUDENT
*S*************************************************************************         
*S**  /*    
*S**  /* Add or update Student information      
*S**  ASSIGN WWAOBJ.#FUNCTION = 'GET'           
*S**  ASSIGN WWSTDNTD.WW-STUDENT-ID = ##STUDENT-ID          
*S**  ASSIGN WWSTDNTD.WF-FAO = ##FAO-ID         
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ATTRIBUTES     
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ADDRESS1       
*S**  MOVE 'R' TO WWSTDNTD.WW-ST-ADDRESS2       
*S**  MOVE 'P' TO WWSTDNTD.WW-ST-AD1-TYPE       
*S**  MOVE 'L' TO WWSTDNTD.WW-ST-AD2-TYPE       
*S**  PERFORM CALL-OBJECT-STUDENT   
*S**  IF WWAOBJ.#EXISTS 
*S**    ASSIGN WWAOBJ.#FUNCTION = 'UPDATE'      
*S**  ELSE  
*S**    ASSIGN WWAOBJ.#FUNCTION = 'STORE'       
*S**  END-IF
*S**  /*    
*S**  /* If data stored in mixed case, set up translate variables       
*S**  IF ##CNVT-CASE    
*S**    ASSIGN #TRANSLATE-CASE = 'M'
*S**    RESET #REMOVE-SPEC-CH       
*S**  END-IF
*S**  /*    
*S**  /* Load data      
*S**  MOVE ##SID TO WWSTDNTD.WW-ST-SID          
*S**  IF WFADDDSD.WW-ST-SSN = MASK(999999999)   
*S**    ASSIGN WWSTDNTD.WW-ST-SSN = WFADDDSD.WW-ST-SSN      
*S**  ELSE  
*S**    IF WFADDDSD.WW-ST-SSN NE SPACE          
*S**      MOVE 'Stu-SSN: ' TO #ERR-FLD          
*S**      MOVE WFADDDSD.WW-ST-SSN TO #ERR-VAL   
*S**      PERFORM WRITE-ERROR-LINE  
*S**    END-IF          
*S**  END-IF
*S**  MOVE WFADDDSD.WW-NAME-LAST TO WWSTDNTD.WW-NAME-LAST   
*S**  MOVE WFADDDSD.WW-NAME-FIRST TO WWSTDNTD.WW-NAME-FIRST 
*S**  MOVE WFADDDSD.WW-ST-NM-LAST TO WWSTDNTD.WW-ST-NM-LAST 
*S**  MOVE WFADDDSD.WW-ST-NM-FIRST TO WWSTDNTD.WW-ST-NM-FIRST           
*S**  MOVE WFADDDSD.WW-ST-NM-MI TO WWSTDNTD.WW-ST-NM-MI     
*S**  IF WFADDDSD.WW-ST-DOB NE INIT-DATE        
*S**    MOVE WFADDDSD.WW-ST-DOB TO WWSTDNTD.WW-ST-DOB       
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-EMAIL NE ' '
*S**    MOVE WF27FEBL.WF-FE-EMAIL TO WWSTDNTD.WW-ST-EMAIL   
*S**  END-IF
*S**  IF WF27FEBL.WF-FE-S-ALIEN NE ' '          
*S**    MOVE WF27FEBL.WF-FE-S-ALIEN TO WWSTDNTD.WW-ST-ALIEN 
*S**  END-IF
*S**  IF ##CNVT-CASE    
*S**    MOVE WF27FEBL.WF-FE-AD-STRT TO #TRANSLATE-FIELD     
*S**    PERFORM PERFORM-TRANSLATE-CASE          
*S**    MOVE #TRANSLATE-FIELD TO WF27FEBL.WF-FE-AD-STRT     
*S**    MOVE WF27FEBL.WF-FE-AD-CITY TO #TRANSLATE-FIELD     
*S**    PERFORM PERFORM-TRANSLATE-CASE          
*S**    MOVE #TRANSLATE-FIELD TO WF27FEBL.WF-FE-AD-CITY     
*S**  END-IF
*S**  IF WWSTDNTD.WW-ST-AD1-TYPE = 'P' OR       /* Permanent address    
*S**      (WWSTDNTD.WW-ST-AD1-TYPE = ' ' AND    
*S**       WWSTDNTD.WW-ST-AD2-TYPE = ' ')       
*S**    MOVE 'P' TO WWSTDNTD.WW-ST-AD1-TYPE     
*S**    MOVE WF27FEBL.WF-FE-AD-STRT TO WWSTDNTD.WW-ST-AD1-STRT1         
*S**    MOVE WF27FEBL.WF-FE-AD-CITY TO WWSTDNTD.WW-ST-AD1-CITY          
*S**    MOVE WF27FEBL.WF-FE-AD-STATE TO WWSTDNTD.WW-ST-AD1-STATE        
*S**    MOVE WF27FEBL.WF-FE-AD-ZIP TO WWSTDNTD.WW-ST-AD1-ZIP
*S**    IF WF27FEBL.WF-FE-AD-PHONE IS (N10)     
*S**      ASSIGN WWSTDNTD.WW-ST-AD1-PHONE = VAL(WF27FEBL.WF-FE-AD-PHONE)
*S**    ELSE
*S**      IF WF27FEBL.WF-FE-AD-PHONE NE SPACE   
*S**        MOVE 'Stu-Phone number: ' TO #ERR-FLD           
*S**        MOVE WF27FEBL.WF-FE-AD-PHONE TO #ERR-VAL        
*S**        PERFORM WRITE-ERROR-LINE
*S**      END-IF        
*S**    END-IF          
*S**  ELSE  
*S**    IF WWSTDNTD.WW-ST-AD2-TYPE = 'P' OR = ' ' /* Permanent address  
*S**      MOVE 'P' TO WWSTDNTD.WW-ST-AD2-TYPE   
*S**      MOVE WF27FEBL.WF-FE-AD-STRT TO WWSTDNTD.WW-ST-AD2-STRT1       
*S**      MOVE WF27FEBL.WF-FE-AD-CITY TO WWSTDNTD.WW-ST-AD2-CITY        
*S**      MOVE WF27FEBL.WF-FE-AD-STATE TO WWSTDNTD.WW-ST-AD2-STATE      
*S**      MOVE WF27FEBL.WF-FE-AD-ZIP TO WWSTDNTD.WW-ST-AD2-ZIP          
*S**      IF WF27FEBL.WF-FE-AD-PHONE IS (N10)   
*S**        ASSIGN WWSTDNTD.WW-ST-AD2-PHONE = VAL(WF27FEBL.WF-FE-AD-PHONE)          
*S**      ELSE          
*S**        IF WF27FEBL.WF-FE-AD-PHONE NE SPACE 
*S**          MOVE 'Stu-Phone number: ' TO #ERR-FLD         
*S**          MOVE WF27FEBL.WF-FE-AD-PHONE TO #ERR-VAL      
*S**          PERFORM WRITE-ERROR-LINE          
*S**        END-IF      
*S**      END-IF        
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  MOVE 'W' TO WWSTDNTD.WW-ST-ATTRIBUTES     
*S**  IF WWSTDNTD.WW-ST-AD1-TYPE = 'P'          
*S**    MOVE 'W' TO WWSTDNTD.WW-ST-ADDRESS1     
*S**    MOVE 'N' TO WWSTDNTD.WW-ST-ADDRESS2     
*S**  ELSE  
*S**    IF WWSTDNTD.WW-ST-AD2-TYPE = 'P'        
*S**      MOVE 'N' TO WWSTDNTD.WW-ST-ADDRESS1   
*S**      MOVE 'W' TO WWSTDNTD.WW-ST-ADDRESS2   
*S**    END-IF          
*S**  END-IF
*S**  /*    
*S**  PERFORM UPDATE-PARENTS        
*S**  /*    
*S**  PERFORM CALL-OBJECT-STUDENT   
*S**END-SUBROUTINE /* UPDATE-STUDENT
*S***       
*S*************************************************************************         
*S**DEFINE SUBROUTINE WRITE-ERROR-LINE          
*S*************************************************************************         
*S**  /*    
*S**  /* If processing batch, write out error line          
*S**  IF *DEVICE = 'BATCH'          
*S**    IF #ERR-SID NE ' '          
*S**      WRITE(2) ' '  
*S**    END-IF          
*S**    WRITE(2) #DATA-ERROR        
*S**    RESET #ERR-SID #ERR-NAM     
*S**  END-IF
*S**END-SUBROUTINE /* WRITE-ERROR-LINE          
*S**END     
