Tables or Views:

a. PS_UM_APPL_EXT_VW

(This view is based onĀ PS_UM_APPL_EXTRACT, and UMAPPEXT uses these 33 tables:

PS_ACAD_GROUP_TBL
PS_ACAD_PLAN
PS_ACAD_PLAN_TBL
PS_ACAD_PROG
PS_ACAD_PROG_TBL
PS_ACAD_SUBPLAN
PS_ACAD_SUBPLN_TBL
PS_ADM_APPL_CMP
PS_ADM_APPL_DATA
PS_ADM_APPL_PLAN
PS_ADM_APPL_PROG
PS_ADM_APPL_SBPLAN
PS_CITIZENSHIP
PS_DIVERS_ETHNIC
PS_EMAIL_ADDRESSES
PS_ETHNIC_GRP_TBL
PS_EXT_ACAD_DATA
PS_EXT_ACAD_SUM
PS_EXT_ORG_PRI_VW
PS_EXT_ORG_TBL
PS_EXT_ORG_TBL_ADM
PS_NAMES
PS_PERS_NID
PS_PERSONAL_DATA
PS_PERSONAL_PHONE
PS_PROG_RSN_TBL
PS_RESIDENCY_OFF
PS_RESP_RSN_TBL
PS_STDNT_CAR_TERM
PS_STDNT_RESPONSE
PS_STDNT_TEST_COMP
PS_TERM_TBL
PS_TERM_VAL_TBL
SQR code for UMAPPEXT
!************************************************************************
!umappext2.SQR															                      				*
!************************************************************************
! DESCRIPTION: Admissions Table Extract                               	*
! OWNER:    							                                            	*
! FREQUENCY:   Manual					                                      		*
!************************************************************************
! SPECIFICATIONS BY:   Gregory J. Patterson                        	   	*
! ISSUE: ISSUE #47                                                      *
! DATE:                    					                                  	* 
!************************************************************************
! CREATED BY:  Peter Andersen                                           *
! CREATION DT: Jan 6, 2006                                          		*
!************************************************************************
!                      MODIFICATION LOG			                          	*
!************************************************************************
! Mod #  Programmer  Start Date  End Date    Desription                	*
! -----  ----------  ----------  ----------  ------------------------- 	*
! 1      PSA         11/09/06    11/09/06    New field -                * 
!                                            UM_FST_PROG_ACTION         *
!                                            comment = ! ??1109         *
! 2      PSA         02/12/07                New field -                *
!                                            UM_FST_PROG_DATE           *
!                                            comment = ! ??0212         *
! 3      PSA         05/22/07                Get first ACAD_PLAN ??0522 *
! 4      PSA         06/07/07                More new fields etc ??0607 *
! 5      PSA         10/04/07                16 new status dates        *
!                                            remove  test scores        *
! 6      PSA          11/02/07               New Fields for Withdrawal  *
!                                            deferral !??1107           *
! 7      PSA         04/22/08                Use Extract Control Record *
! 8      PSA         06/11/08             Add UM_DISCONTINUE_DATE ??0611*
! 9      PSA         07/15/08               Skip Minor ACAD_PLANs ??0715*
! 10     PSA         06/01/10               Simplify Loops              *
! 11     PSA         07/21/10               Remove DDEF from defer logic*
! 12     PSA         09/09/10               Look in both admissions & in*
!                                           student for matric/defr/canc*
!                                           check dates  ??0910         *
! 13     PSA         09/10/12               standardize cutoff dates    *
!                                        UMREPORT-2 Peter Andersen 09/12* 
!                                                                       *
! 14     PSA         04/30/14            Fix net confirm for defers     *
!                                             REPORT-170 PSA 04/14      *
!************************************************************************

#include 'setenv.sqc'   ! Set environment

!***********************************************************************
!        Begin Setup
!***********************************************************************
Begin-Setup
#include 'setup01a.sqc'
#define DLim ';'

declare-variable
 date $input_Date
 date $FiveYearsAgo 
 date $TwoYearsAgo 
 date $Residency_Dt
 date $Response_Dt
 date $From_date1
 date $From_date2
 date $From_date3
 date $From_date4
 date $From_date5
 date $From_date6
 date $From_date7
 date $From_date8
 date $From_date9
 date $From_date10
 date $to_Dt1
 date $to_Dt2
 date $to_Dt3
 date $to_Dt4
 date $to_Dt5
 date $to_Dt6
 date $to_Dt7
 date $to_Dt8
 date $to_Dt9
 date $to_Dt10
 date $TSTDT1X1
 date $TSTDT1X2
 date $TSTDT1X3
 date $TSTDT1X4
 date $TSTDT1X5
 date $TSTDT2X1
 date $TSTDT2X2
 date $TSTDT2X3
 date $TSTDT2X4
 date $TSTDT2X5
 date $TSTDT3X1
 date $TSTDT3X2
 date $TSTDT3X3
 date $TSTDT3X4
 date $TSTDT3X5
 date $TSTDT4X1
 date $TSTDT4X2
 date $TSTDT4X3
 date $TSTDT4X4
 date $TSTDT4X5
 date $TSTDT5X1
 date $TSTDT5X2
 date $TSTDT5X3
 date $TSTDT5X4
 date $TSTDT5X5
 date $Fubar_Date
 date $First_Prog_Action_Date
 text $Input_Trm1
 text $Input_Term2
 text $input_Flag1
 text $input_Flag2
 text $First_Prog_Action                                                !??1109
 text $Response_Reason_Descr                                            !??0607
 text $Academic_Group                                                   !??0607
 text $Academic_Group_Descr                                             !??0607
 date $UM_APP_DATE                                                      !??0104
 date $UM_COMPLETE_DATE
 date $UM_ADMIT_DATE
 date $UM_NETCONFIRM_DATE
 date $UM_GROSSCONFIRM_DATE
 date $UM_ENROLL_DATE
 date $UM_DEFER_DATE
 date $UM_DENY_DATE
 date $UM_DISCONTINUE_DATE
 date $UM_WADMINC_DATE
 date $UM_WADMTOT_DATE
 date $UM_WAPPINC_DATE
 date $UM_WAPPTOTAL_DATE
 date $UM_WADMADMIT_DATE
 date $UM_NOSHOW_DATE
 date $UM_NODECISION_DATE
 date $UM_WAPPDEF_DATE
 date $UM_WAIT_DATE
 date $UM_DEIN_DATE
 date $UM_MATRIC_DATE
 date $This_Term_end_date
 date $cancel_row_date 
 date $matr_row_date 
 date $defer_row_date
 date $ac_row_date
 date $wadm_row_date
 date $wapp_row_date

 
 text $UM_WAPPDEF_TERM
 text $UM_WAPPDEF_PLAN
 text $UM_WAPPDEF_SUBPLAN
 text $UM_WAPPDEF_PRGSTAT
 text $UM_WAPPDEF_PROGACT
 text $UM_WAPPDEF_PRGREAS
 text $Row_Check
 
end-declare

End-Setup




!***********************************************************************
! Proc Options(Main);
!***********************************************************************
Begin-Program
   Let $Reporttitle = 'Make Applicant Reporting Extract'
   let $Reportid = 'umappext'
   let $first_time = 'Y'
   do Stdapi-Init
   do Init-DateTime
   do Get-Current-DateTime
   BEGIN-SQL
   ALTER SESSION SET "_optimizer_cost_based_transformation" = ON
   end-sql

   show 'Get Parameters:'
   if $prcs_process_instance = '' or $prcs_oprid = 'BATCH'
    let $prcs_oprid = 'PANDERSEN'
    let $prcs_run_cntl_id = 'BATCH'
    do Select-Parameters
   else
    do Select-Parameters
   end-if
   Show $Input_Trm1
   

   if $input_Flag1 = 'Y'
    let $input_date = datenow()
   end-if
  show $input_date
  Let $FiveYearsAgo = dateadd($input_date,'YEAR',-5)
  Let $TwoYearsAgo = dateadd($input_date,'YEAR',-5)
  
begin-SELECT
count(*) &GobSTOP
  if &GobStop < 450000
  	show 'Not enough records in PS_PERSONAL_DATA'
  	stop quiet
  	else
  	show &Gobstop ' records in PS_PERSONAL_DATA'
  	end-if    
from PS_PERSONAL_DATA
end-select
  Let $Control_now = edit(datenow(),'yyyy/mm/dd:hh:mi:ssam')
  show $Control_now
  Do Extract_Control('7', 'PS_UM_APPL_EXTRACT','UMAPPEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)
  
!  if $input_Flag2 = 'Y'
!    BEGIN-SQL on-error=SQL-Recover
!    TRUNCATE TABLE SYSADM.PS_UM_APPL_EXTRACT
!    END-SQL
!   else
!    begin-sql on-error=SQL-Recover
!    DELETE  FROM SYSADM.PS_UM_APPL_EXTRACT dxx where dxx.admit_term >= $Input_Trm1 and dxx.admit_term <= $Input_Term2 
!    end-sql
!  end-if
   Begin-sql
   TRUNCATE TABLE SYSADM.PS_UM_APPL_EXT_BLD
   end-sql

   BEGIN-SQL on-error=SQL-Recover
   COMMIT
   END-SQL

   show 'Table trimmed.'
   Show $Input_Trm1
   Show $Input_Term2
   do List_Applicants
   do blasto_data
    Do Extract_Control('9', 'PS_UM_APPL_EXTRACT','UMAPPEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)


   BEGIN-SQL on-error=SQL-Recover
   COMMIT
   END-SQL
 	
   do Stdapi-Term
End-Program

!***********************************************************************
!  Page Heading                                       
!***********************************************************************
Begin-Heading 8
! #include 'umstdhdg.sqc'
	print $INSTITUTION_NAME (+1,1) center bold box
   Print 'In Date:'    (+1,1)
   Print $input_Date (,+1) DATE bold
   Print 'Beginning Term: ' (,41)
   Print $Input_Trm1 (,+1) bold
   Print 'Ending Term ' (,+2)
   Print $Input_term2 (,+1) bold
   
End-Heading

!***********************************************************************
!  Procedure  List_Applicants                                          *
!                                                                      *                    
!***********************************************************************
Begin-Procedure List_Applicants
Let #APP_COUNT = 0	
BEGIN-SELECT
A.EMPLID,
A.LAST_NAME,
A.FIRST_NAME,
A.MIDDLE_NAME,
A.NAME,
A.ADDRESS1,
A.ADDRESS2,
A.ADDRESS3,
A.ADDRESS4,
A.CITY,
A.STATE,
A.POSTAL,
A.COUNTY,
A.COUNTRY,
A.SEX,
A.BIRTHDATE,
A.BIRTHPLACE,
A.BIRTHSTATE,
A.BIRTHCOUNTRY,
A.MAR_STATUS,
A.MAR_STATUS_DT,
A.DT_OF_DEATH,
B.ACAD_CAREER,
C.STDNT_CAR_NBR,
B.ADM_APPL_NBR,
B.INSTITUTION,
B.ADM_APPL_CTR,
B.ADMIT_TYPE,
B.FIN_AID_INTEREST,
B.HOUSING_INTEREST,
B.REGION,
B.LAST_SCH_ATTEND,
B.GRADUATION_DT,
B.ACADEMIC_LEVEL,
B.ADM_APPL_COMPLETE,
B.ADM_APPL_DT,
B.ADM_APPL_CMPLT_DT,
B.ADM_APPL_METHOD,
B.ADM_CREATION_DT,
B.ADM_CREATION_BY,
B.ADM_UPDATED_DT,
B.ADM_UPDATED_BY,
B.APPL_FEE_TYPE,
B.RECRUITER_ID,
C.CAMPUS,
C.APPL_PROG_NBR,
C.EFFDT,
C.EFFSEQ,
C.ACAD_PROG,
C.PROG_STATUS,
C.PROG_ACTION,
C.ACTION_DT,
C.PROG_REASON,
C.ADMIT_TERM,
C.EXP_GRAD_TERM,
C.ADM_APPL_NBR,
'AD' &DATASOURCE,
to_date($input_date) &Recalculated_input_date,
C.ACAD_LOAD_APPR,
C.REQ_TERM
 LET #APP_COUNT = #APP_COUNT + 1
 
 
 
  Let  $UM_APP_DATE  = '01-JAN-1901'                                      !??0104
  Let  $UM_COMPLETE_DATE = '01-JAN-1901'                                  !??0104
  Let  $UM_ADMIT_DATE = '01-JAN-1901'                                     !??0104
  Let  $UM_NETCONFIRM_DATE = '01-JAN-1901'                                !??0104
  Let  $UM_GROSSCONFIRM_DATE = '01-JAN-1901'                              !??0104
  Let  $UM_ENROLL_DATE = '01-JAN-1901'                                    !??0104
  Let  $UM_DEFER_DATE = '01-JAN-1901'                                     !??0104
  Let  $UM_DENY_DATE = '01-JAN-1901'                                      !??0104
  Let  $UM_DISCONTINUE_DATE = '01-JAN-1901'                               !??0611
  Let  $UM_WADMINC_DATE = '01-JAN-1901'                                   !??0104
  Let  $UM_WADMTOT_DATE = '01-JAN-1901'                                   !??0104
  Let  $UM_WAPPINC_DATE = '01-JAN-1901'                                   !??0104
  Let  $UM_WAPPTOTAL_DATE = '01-JAN-1901'                                 !??0104
  Let  $UM_WADMADMIT_DATE = '01-JAN-1901'                                 !??0104
  Let  $UM_NOSHOW_DATE = '01-JAN-1901'                                    !??0104
  Let  $UM_NODECISION_DATE = '01-JAN-1901'                                !??0104
  Let  $UM_WAPPDEF_DATE = '01-JAN-1901'                                   !??0104
  Let $UM_WAIT_DATE = '01-JAN-1901'
  Let $UM_DEIN_DATE = '01-JAN-1901'
  Let $UM_MATRIC_DATE = '01-JAN-1901'
  let $UM_WAPPDEF_TERM = '0000'
  Let $UM_WAPPDEF_PLAN = ' '
  Let $UM_WAPPDEF_SUBPLAN = ' '
  Let $UM_WAPPDEF_PRGSTAT = ' '
  Let $UM_WAPPDEF_PROGACT = ' '
  Let $UM_WAPPDEF_PRGREAS = ' '
  Let  $PROG_ACTION = &C.PROG_ACTION
  Let  $PROG_STATUS = &C.PROG_STATUS
  Let  $PROG_REASON = &C.PROG_REASON
  let  $Row_Check = ' '                                                   !Top Row  Y
                                                                          !Top Program but not Top Row P
 
 DO GET_PREVIOUS_NAME
 DO GET_EMAIL
 DO GET_PHONE
 DO GET_NID
 DO GET_ETHNIC
 DO GET_COUNTRY
 DO GET_RESIDENCY
 DO GET_A_DESCR
 DO Get_Last_Sch_info
 DO Scan_Student_Car_Term                                                 ! Values need for Scan subs and first and last
 if &DATASOURCE = 'AD'
   DO GET_APPL_PLAN
 else
   DO GET_STU_PLAN
 end-if
 DO GET_RESPONSE
 Do GET_EXT_TABLE
 Do Get_ACAD_PROG_APPL
 Do Get_Prog_Rsn_Descr
 Do MAXXY
 Let #nl_index = 0
 Let #Temp_satvm = #max_sat_verb + #max_sat_math
 if &B.INSTITUTION = 'UMS05' and &B.ACAD_CAREER = 'UGRD'
    and (&B.ADMIT_TYPE = 'EFY' or &B.ADMIT_TYPE = 'FYR' or &B.ADMIT_TYPE = 'TRF' )
 DO GET_NL_INDEX(&B.INSTITUTION,&A.EMPLID,&B.ACAD_CAREER,&B.adm_appl_nbr,#Temp_satvm,#nl_index)
 end-if
 !Do first_or_last_action
 !if $Row_Check = ' '    and #Most_recent_appl_prog_nbr =  &C.APPL_PROG_NBR                                     
 ! 		 Let $Row_Check = 'Y'                                             
 !end-if   
 
 do Scan_em_all                                                  
 !do scan_acad_prog 
 
 if $row_check = ' ' and #Max_appl_prog_nbr = &C.APPL_PROG_NBR 
 	     Let $Row_Check = 'Y'
 end-if             
 Let $last_prog_action = 'APPL'
 if $UM_ADMIT_DATE > strtodate('01-JAN-1902')
 	Let $last_prog_action = 'ADMT'
 end-if
 if ($UM_MATRIC_DATE >= $UM_APP_DATE
 	and $UM_MATRIC_DATE >= $UM_DEFER_DATE
 	and $UM_MATRIC_DATE >= $UM_DENY_DATE
 	and $UM_MATRIC_DATE >= $UM_WADMTOT_DATE
 	and $UM_MATRIC_DATE >= $UM_WAPPTOTAL_DATE
 	and $UM_MATRIC_DATE >= $UM_ADMIT_DATE
  and $UM_MATRIC_DATE >= $UM_WAIT_DATE
 	And $UM_MATRIC_DATE >= $UM_DEIN_DATE
 	and $UM_MATRIC_DATE > strtodate('01-JAN-1902')) 
 	 Let $last_prog_action = 'MATR'
   else
 	 if ($UM_DEIN_DATE >= $UM_APP_DATE
    	and $UM_DEIN_DATE >= $UM_DEFER_DATE
    	and $UM_DEIN_DATE >= $UM_DENY_DATE
    	and $UM_DEIN_DATE >= $UM_WADMTOT_DATE
    	and $UM_DEIN_DATE >= $UM_WAPPTOTAL_DATE
   	  and $UM_DEIN_DATE >= $UM_WAIT_DATE
    	and $UM_DEIN_DATE >= $UM_ADMIT_DATE
        and $UM_DEIN_DATE >= $UM_WAPPTOTAL_DATE
    	and $UM_DEIN_DATE > strtodate('01-JAN-1902'))  
    	Let $last_prog_action = 'DEIN'
    	else
 	    if ($UM_WADMTOT_DATE >= $UM_APP_DATE
    	and $UM_WADMTOT_DATE >= $UM_DEFER_DATE
    	and $UM_WADMTOT_DATE >= $UM_DENY_DATE
   	  and $UM_WADMTOT_DATE >= $UM_WAIT_DATE
    	and $UM_WADMTOT_DATE >= $UM_ADMIT_DATE
        and $UM_WADMTOT_DATE >= $UM_WAPPTOTAL_DATE
    	and $UM_WADMTOT_DATE > strtodate('01-JAN-1902'))  
      Let $last_prog_action = 'WADM'
    	else
    	 if ($UM_WAPPTOTAL_DATE >= $UM_APP_DATE
        	and $UM_WAPPTOTAL_DATE >= $UM_DEFER_DATE
 	        and $UM_WAPPTOTAL_DATE >= $UM_DENY_DATE
       	  and $UM_WAPPTOTAL_DATE >= $UM_WAIT_DATE
 	        and $UM_WAPPTOTAL_DATE >= $UM_ADMIT_DATE
 	        and $UM_WAPPTOTAL_DATE > strtodate('01-JAN-1902'))  
          Let $last_prog_action = 'WAPP'
        	else
          	if ($UM_DENY_DATE >= $UM_APP_DATE
        	     and $UM_DENY_DATE >= $UM_DEFER_DATE
               and $UM_DENY_DATE >= $UM_WAIT_DATE
 	             and $UM_DENY_DATE >= $UM_ADMIT_DATE
 	             and $UM_DENY_DATE > strtodate('01-JAN-1902'))  
               Let $last_prog_action = 'DENY'
        	     else
                 if ($UM_DEFER_DATE >= $UM_APP_DATE
                 	  and $UM_DEFER_DATE >= $UM_WAIT_DATE
 	                  and $UM_DEFER_DATE >= $UM_ADMIT_DATE
 	                  and $UM_DEFER_DATE > strtodate('01-JAN-1902'))  
                    Let $last_prog_action = 'DEFR'
        	          else
        	          if $UM_WAIT_DATE >= $UM_APP_DATE
        	          	and $UM_WAIT_DATE >= $UM_ADMIT_DATE
        	          	and $UM_WAIT_DATE > strtodate('01-JAN-1902')
                      Let $last_prog_action = 'WAIT'
        	          end-if
        	       end-if
        	  end-if
       end-if
    end-if
  end-if
  end-if
  if $UM_GROSSCONFIRM_DATE >= $UM_APP_DATE
 	and $UM_GROSSCONFIRM_DATE >= $UM_DEFER_DATE
 	and $UM_GROSSCONFIRM_DATE >= $UM_DENY_DATE
 	and $UM_GROSSCONFIRM_DATE >= $UM_DISCONTINUE_DATE                     !?0611
 	and $UM_GROSSCONFIRM_DATE >= $UM_WADMTOT_DATE
 	and $UM_GROSSCONFIRM_DATE >= $UM_WAPPTOTAL_DATE
  and $UM_GROSSCONFIRM_DATE >= $UM_WAIT_DATE
  and $UM_GROSSCONFIRM_DATE >= $UM_ADMIT_DATE
 	And $UM_GROSSCONFIRM_DATE >= $UM_DEIN_DATE
 	and $UM_GROSSCONFIRM_DATE >= strtodate('01-JAN-1902')
 	Let $last_prog_action = 'MATR'
  end-if	

 DO INSERT_ROWS

FROM PS_PERSONAL_DATA A, PS_ADM_APPL_DATA B, PS_ADM_APPL_PROG C
  WHERE  A.EMPLID = B.EMPLID
     AND B.EMPLID = C.EMPLID
     AND B.ACAD_CAREER = C.ACAD_CAREER
     AND B.ADM_APPL_NBR = C.ADM_APPL_NBR
     AND C.EFFDT =
        (SELECT MAX(C_ED.EFFDT) FROM PS_ADM_APPL_PROG C_ED
        WHERE C.EMPLID = C_ED.EMPLID
          AND C.ACAD_CAREER = C_ED.ACAD_CAREER
          AND C.ADM_APPL_NBR = C_ED.ADM_APPL_NBR
          AND C.APPL_PROG_NBR = C_ED.APPL_PROG_NBR                          ! comment out to Use Most Recent Prog_Nbr
!          AND C_ED.PROG_ACTION not in ('RADM','RLOA','LEAV')                          !??061608 Exclusions
          AND C_ED.EFFDT <= $input_date)
    AND C.EFFSEQ =
        (SELECT MAX(C_ES.EFFSEQ) FROM PS_ADM_APPL_PROG C_ES
        WHERE C.EMPLID = C_ES.EMPLID
          AND C.ACAD_CAREER = C_ES.ACAD_CAREER
          AND C.ADM_APPL_NBR = C_ES.ADM_APPL_NBR
          AND C.APPL_PROG_NBR = C_ES.APPL_PROG_NBR
!          AND C_ES.PROG_ACTION not in ('RADM','RLOA','LEAV')                          !??061608 Exclusions
          AND C.EFFDT = C_ES.EFFDT)
    AND (C.ADMIT_TERM >= $Input_Trm1 and C.ADMIT_TERM <= $Input_Term2)
    and not exists (select
                  'QTB'
                  FROM   PS_ADM_APPL_DATA QTB, PS_ACAD_PROG QTC
                  WHERE  C.EMPLID = QTC.EMPLID
                     AND C.ACAD_CAREER = QTC.ACAD_CAREER
                     AND C.ADM_APPL_NBR = QTC.ADM_APPL_NBR
                     AND C.APPL_PROG_NBR = QTC.APPL_PROG_NBR
                     AND QTB.EMPLID = QTC.EMPLID
                     AND QTB.ACAD_CAREER = QTC.ACAD_CAREER
                     AND QTB.ADM_APPL_NBR = QTC.ADM_APPL_NBR
                     AND QTC.EFFDT =
                            (SELECT MAX(QTC_ED.EFFDT) FROM PS_ACAD_PROG QTC_ED
                             WHERE QTC.EMPLID = QTC_ED.EMPLID
                             AND QTC.ACAD_CAREER = QTC_ED.ACAD_CAREER
                             AND QTC.ADM_APPL_NBR = QTC_ED.ADM_APPL_NBR
                             AND QTC.APPL_PROG_NBR = QTC_ED.APPL_PROG_NBR
!                             AND QTC_ED.PROG_ACTION not in ('RADM','RLOA','LEAV')     !?061608 Exclusions
!                                                                                       UMREPORT-2 Peter Andersen 09/12
                               AND QTC_ED.EFFDT <= greatest (
                                  (case when c.admit_term > '0410' then 
                                  case when substr(c.admit_term,3,2) = '10' then to_date('15-OCT-'||to_char(to_number(substr(c.admit_term,1,2)) + 1999,'9999'),'DD-MON-YYYY') else 
                                  case when substr(c.admit_term,3,2) = '20' then to_date('15-FEB-'||to_char(to_number(substr(c.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') else 
                                  to_date('15-AUG-'||to_char(to_number(substr(c.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') end
                                  end else to_date('15-OCT-2004','DD-MON-YYYY') end ),
                                 (select endo.ssr_trmac_last_dt from ps_term_tbl endo where 
                                  endo.institution = QTB.institution 
                                  and endo.acad_career = QTC.acad_career
                                  and endo.strm = (select max(li.admit_term) from ps_acad_prog li 
                                  where li.emplid = qtc.emplid and li.acad_career = qtc.acad_career and li.adm_appl_nbr = qtc.adm_appl_nbr )))
                                  )
                     AND QTC.EFFSEQ =
                            (SELECT MAX(QTC_ES.EFFSEQ) FROM PS_ACAD_PROG QTC_ES
                             WHERE QTC.EMPLID = QTC_ES.EMPLID
                             AND QTC.ACAD_CAREER = QTC_ES.ACAD_CAREER
                             AND QTC.ADM_APPL_NBR = QTC_ES.ADM_APPL_NBR
                             AND QTC.APPL_PROG_NBR = QTC_ES.APPL_PROG_NBR
!                             AND QTC_ES.PROG_ACTION not in ('RADM','RLOA','LEAV')    !?061608 Exclusions
                             AND QTC.EFFDT = QTC_ES.EFFDT)
                             AND (QTC.ADMIT_TERM >= $Input_Trm1 and QTC.ADMIT_TERM <= $Input_Term2)
!                    and QTC.prog_reason not in ('APRM','NSHW','AADM','PMAT','PMNO','WDFA','WMRG','WMRA')
!                    and QTC.PROG_STATUS <> 'CN' 
!                     and QTC.PROG_ACTION not in ('RADM','RLOA','LEAV')                 !??061608 Exclusions
                        )                                                     
      AND NOT exists ( select 'Dup' from PS_ADM_APPL_PROG DUPP                                  ! J.B. s mod for applications
          WHERE C.EMPLID = DUPP.EMPLID                                                          ! that have been deleted for
          AND C.ACAD_CAREER = DUPP.ACAD_CAREER                                                  ! being duplicates
!          AND C.STDNT_CAR_NBR = DUPP.STDNT_CAR_NBR
          AND C.ADM_APPL_NBR = DUPP.ADM_APPL_NBR
          AND DUPP.PROG_ACTION = 'WADM' 
          AND DUPP.PROG_REASON = 'DUP')

UNION
select
STA.EMPLID,
STA.LAST_NAME,
STA.FIRST_NAME,
STA.MIDDLE_NAME,
STA.NAME,
STA.ADDRESS1,
STA.ADDRESS2,
STA.ADDRESS3,
STA.ADDRESS4,
STA.CITY,
STA.STATE,
STA.POSTAL,
STA.COUNTY,
STA.COUNTRY,
STA.SEX,
STA.BIRTHDATE,
STA.BIRTHPLACE,
STA.BIRTHSTATE,
STA.BIRTHCOUNTRY,
STA.MAR_STATUS,
STA.MAR_STATUS_DT,
STA.DT_OF_DEATH,
STB.ACAD_CAREER,
STC.STDNT_CAR_NBR,
STB.ADM_APPL_NBR,
STB.INSTITUTION,
STB.ADM_APPL_CTR,
STB.ADMIT_TYPE,
STB.FIN_AID_INTEREST,
STB.HOUSING_INTEREST,
STB.REGION,
STB.LAST_SCH_ATTEND,
STB.GRADUATION_DT,
STB.ACADEMIC_LEVEL,
STB.ADM_APPL_COMPLETE,
STB.ADM_APPL_DT,
STB.ADM_APPL_CMPLT_DT,
STB.ADM_APPL_METHOD,
STB.ADM_CREATION_DT,
STB.ADM_CREATION_BY,
STB.ADM_UPDATED_DT,
STB.ADM_UPDATED_BY,
STB.APPL_FEE_TYPE,
STB.RECRUITER_ID,
STC.CAMPUS,
STC.APPL_PROG_NBR,
STC.EFFDT,
STC.EFFSEQ,
STC.ACAD_PROG,
STC.PROG_STATUS,
STC.PROG_ACTION,
STC.ACTION_DT,
STC.PROG_REASON,
STC.ADMIT_TERM,
STC.EXP_GRAD_TERM,
STC.ADM_APPL_NBR,
'ST',
!                                                                      UMREPORT-2 Peter Andersen 09/12
 case when stc.admit_term > '0410' then 
       case when substr(stc.admit_term,3,2) = '10' then to_date('15-OCT-'||to_char(to_number(substr(stc.admit_term,1,2)) + 1999,'9999'),'DD-MON-YYYY') else 
       case when substr(stc.admit_term,3,2) = '20' then to_date('15-FEB-'||to_char(to_number(substr(stc.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') else 
        to_date('15-AUG-'||to_char(to_number(substr(stc.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') end
       end else to_date('15-OCT-2004','DD-MON-YYYY') end,    
!(select ndo.ssr_trmac_last_dt from ps_term_tbl ndo where 
!        ndo.institution = stb.institution 
!        and ndo.acad_career = stc.acad_career
!        and ndo.strm = (select max(lop.admit_term) from ps_acad_prog lop 
!                      where lop.emplid = stc.emplid and lop.acad_career = stc.acad_career and lop.adm_appl_nbr = stc.adm_appl_nbr 
!                      and lop.prog_action not in ('RADM','RLOA','LEAV')
!                      )),           !??061608 Exclusions       
STC.ACAD_LOAD_APPR,
STC.REQ_TERM
FROM PS_PERSONAL_DATA STA, PS_ADM_APPL_DATA STB, PS_ACAD_PROG STC
  WHERE  STA.EMPLID = STB.EMPLID
     AND STB.EMPLID = STC.EMPLID
     AND STB.ACAD_CAREER = STC.ACAD_CAREER
     AND STB.ADM_APPL_NBR = STC.ADM_APPL_NBR
     AND STC.EFFDT =
        (SELECT MAX(STC_ED.EFFDT) FROM PS_ACAD_PROG STC_ED
         WHERE STC.EMPLID = STC_ED.EMPLID
         AND STC.ACAD_CAREER = STC_ED.ACAD_CAREER
         AND STC.ADM_APPL_NBR = STC_ED.ADM_APPL_NBR
         AND STC.APPL_PROG_NBR = STC_ED.APPL_PROG_NBR
!         AND STC_ED.PROG_ACTION not in ('RADM','RLOA','LEAV')                           !??061608 Exclusions
!                                                                                         UMREPORT-2 Peter Andersen 09/12
         AND STC_ED.EFFDT <= GREATEST (
             (case when stc.admit_term > '0410' then 
             case when substr(stc.admit_term,3,2) = '10' then to_date('15-OCT-'||to_char(to_number(substr(stc.admit_term,1,2)) + 1999,'9999'),'DD-MON-YYYY') else 
              case when substr(stc.admit_term,3,2) = '20' then to_date('15-FEB-'||to_char(to_number(substr(stc.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') else 
              to_date('15-AUG-'||to_char(to_number(substr(stc.admit_term,1,2))+2000,'9999'),'DD-MON-YYYY') end
              end else to_date('15-OCT-2004','DD-MON-YYYY') end ),
              (select endo.ssr_trmac_last_dt from ps_term_tbl endo where 
                      endo.institution = STB.institution 
                      and endo.acad_career = STC.acad_career
                      and endo.strm = (select max(li.admit_term) from ps_acad_prog li 
                      where li.emplid = stc.emplid and li.acad_career = stc.acad_career and li.adm_appl_nbr = stc.adm_appl_nbr )
                      )))
         AND STC.EFFSEQ =
            (SELECT MAX(STC_ES.EFFSEQ) FROM PS_ACAD_PROG STC_ES
             WHERE STC.EMPLID = STC_ES.EMPLID
             AND STC.ACAD_CAREER = STC_ES.ACAD_CAREER
             AND STC.ADM_APPL_NBR = STC_ES.ADM_APPL_NBR
             AND STC.APPL_PROG_NBR = STC_ES.APPL_PROG_NBR
!             AND STC_ES.PROG_ACTION not in ('RADM','RLOA','LEAV')                        !??061608 Exclusions
             AND STC.EFFDT = STC_ES.EFFDT)

       AND (STC.ADMIT_TERM >= $Input_Trm1 and STC.ADMIT_TERM <= $Input_Term2)
!       AND STC.ADMIT_TERM < NVL((SELECT MIN(VO.ADMIT_TERM) FROM PS_ACAD_PROG VO   !??061608 Possible Term Limiter
!                        WHERE VO.EMPLID = STC.EMPLID                              !??061608 can overide exclusions
!                        AND VO.ACAD_CAREER = STC.ACAD_CAREER
!                        AND VO.ADM_APPL_NBR = STC.ADM_APPL_NBR
!                        AND VO.APPL_PROG_NBR = STC.APPL_PROG_NBR
!                        AND VO.PROG_ACTION in ('RADM','RLOA','LEAV')
!                        ),'9999')
!        AND STC.PROG_ACTION not in ('RADM','RLOA','LEAV')                                  !??061608 Exclusions

END-SELECT

show 'Applicants selected = ' #APP_COUNT
End-Procedure  ! List_Applicants


!***********************************************************************
!  Select Parameters                                       
!***********************************************************************


Begin-Procedure Select-Parameters
Let $input_date = datenow()
Let $Input_Trm1 = '0610'
Let $Input_Term2 = '9999'
Let $Input_Flag3 = 'Y'
begin-select
R.AS_OF_DATE,
R.UM_BEGIN_TERM,
R.UM_END_TERM,
R.FLAG1,
R.FLAG2,
R.FLAG3
  Let $input_date = &R.AS_OF_DATE
  if &R.FLAG1 = 'Y' 
  	 Let $input_date = datenow()
  end-if
  Let $Input_Trm1 = &R.UM_BEGIN_TERM
  Let $Input_term = &R.UM_BEGIN_TERM
  Let $Input_Term2 = &R.UM_END_TERM
  Let $input_Flag2 = &R.FLAG2
  Let $input_Flag3 = &R.FLAG3
FROM PS_UM_RUN_UMAPPEXT R
WHERE R.OPRID = $prcs_oprid
  AND R.RUN_CNTL_ID = $prcs_run_cntl_id

end-select
show $input_date
if $input_Flag3 <> 'Y' 
show 'Using from SP Term1: ' $Input_Trm1 ' Term2: ' $Input_Term2
else
Let $compare = '0'||to_char(  to_number(substr($input_date,10,2)) - 1   )
Let $compare = substr($compare,length($compare)-1,2)
show 'AUTO: ' $input_date '--> ' $compare
begin-select 
VIK.STRM, 
VIK.DESCR, 
VIK.DESCRSHORT 
   show &VIK.STRM '--' &VIK.DESCR '--' &VIK.DESCRSHORT
   Let $input_term = &VIK.STRM
   LET $Input_trm1 = &VIK.STRM
   Let $input_term2 = '9999'
from ps_term_val_tbl VIK
where  substr(VIK.STRM,1,2) = $compare 
and substr(VIK.STRM,3,1) = decode(substr(to_char($input_date),4,3),'JAN','2','FEB','2','MAR','2','APR','2','MAY','2',
'JUN','3','JUL','3','AUG','3','SEP','1','OCT','1','NOV','1','DEC','1','1')
end-select
show 'Automatic Term1: ' $Input_Term ' to ' $Input_Term2
end-if
  Let $Input_Trm1_M = ''''||$Input_Trm1||''''
  Let $Input_Term2_M = ''''||$Input_Term2||''''

End-Procedure

!***********************************************************************
!  Get Input for Terms                                      
!***********************************************************************
Begin-Procedure Get-Input
Let #input_bad = 1
 Input $input_date type=date 'Enter Date'
 Input $Input_Trm1 type=text status=#input_status  'Please Enter the First Term'
 Input $input_term2 type=text status=#input_status  'Please Enter the Second Term'
End-Procedure

!***********************************************************************
!  Get Previous Name                                     
!***********************************************************************
Begin-Procedure Get_Previous_Name
Let $Previous_Name = ' '
Begin-select
SB1.Name
  if &SB1.Name > ' ' 
    Let $Previous_Name = &SB1.Name
  end-if
FROM PS_NAMES SB1
WHERE  SB1.NAME_TYPE = 'FR1'
 and SB1.EMPLID = &A.EMPLID
 and SB1.EFFDT =
 (SELECT MAX(SB1_ED.EFFDT) FROM PS_NAMES SB1_ED
 WHERE SB1.EMPLID = SB1_ED.EMPLID
 AND SB1.NAME_TYPE = SB1_ED.NAME_TYPE
 AND SB1_ED.EFFDT <= $input_date) 

end-select
End-Procedure
!***********************************************************************
!  Get Preferred email address                                    
!***********************************************************************
Begin-Procedure Get_email
Let $Email_Addr = ' '
Let $Email_Hom_Addr = ' '
Begin-select
SB2.EMAIL_ADDR,
SB2.E_ADDR_TYPE,
SB2.PREF_EMAIL_FLAG
  if &SB2.EMAIL_ADDR > ' ' and &SB2.PREF_EMAIL_FLAG = 'Y'
  Let $Email_Addr = &SB2.EMAIL_ADDR
  end-if
  if &SB2.EMAIL_ADDR > ' ' and &SB2.E_ADDR_TYPE = 'HOME'
  Let $Email_Hom_Addr = &SB2.EMAIL_ADDR
  end-if
FROM PS_EMAIL_ADDRESSES SB2
WHERE  SB2.EMPLID = &A.EMPLID
 
end-select
End-Procedure
!***********************************************************************
!  Get Preferred Phone Number                                    
!***********************************************************************
Begin-Procedure Get_phone
Let $Phone = ' '
Begin-select
SB3.PHONE
  if &SB3.PHONE > ' '
    Let $Phone = &SB3.PHONE
  end-if
FROM PS_PERSONAL_PHONE SB3
WHERE  SB3.PREF_PHONE_FLAG = 'Y'
 and SB3.EMPLID = &A.EMPLID
 
end-select
End-Procedure
!***********************************************************************
!  Get NID for USA and Canada                                  
!***********************************************************************
Begin-Procedure Get_nid
Let $Nid_Usa = ' '
Let $Nid_Can = ' '
Begin-select
SB4.NATIONAL_ID,
SB4.COUNTRY
  if &SB4.COUNTRY = 'USA' and &SB4.NATIONAL_ID > ' '
    Let $Nid_Usa = &SB4.NATIONAL_ID
  end-if
  if &SB4.COUNTRY = 'CAN' and &SB4.NATIONAL_ID > ' '
    Let $Nid_Can = &SB4.NATIONAL_ID
  end-if
FROM PS_PERS_NID SB4
WHERE  SB4.EMPLID = &A.EMPLID
 
end-select
End-Procedure
!***********************************************************************
!  Get Ethnic Data                                    
!***********************************************************************
Begin-Procedure Get_ethnic
Let $Ethnic_Grp_cd = ' '
Let $Ethnic_Category = ' '
Let $Ethnic_Descr = ' '
Let $Hisp_Latino = 'N'
Let $Multi_Race = 'N'
Let $Old_Group = ' '
Let $Ethnic_Group = ' '
Let $UM_ETH_GRP_DESCR = ' '
Let #Race_multi = 0
Begin-select
SB6.ETHNIC_GRP_CD,
SB6.APS_EC_NDS_AUS,
SB7.ETHNIC_CATEGORY,
SB7.DESCR50,
SB7.SETID,
SB7.ETHNIC_GRP_CD,
SB7.ETHNIC_GROUP
  if &SB6.ETHNIC_GRP_CD > ' ' and $Ethnic_grp_cd = ' '
    Let $Ethnic_Grp_cd = &SB6.ETHNIC_GRP_CD
    Let $Ethnic_Category = &SB7.ETHNIC_CATEGORY
    Let $Ethnic_Descr = &SB7.DESCR50
    Let $Ethnic_Group = &SB7.ETHNIC_GROUP
  end-if
  if &SB7.ETHNIC_GROUP = '3'
  	Let $Hisp_Latino = 'Y'
  else
    if &SB7.ETHNIC_GROUP <> $Old_Group
   	if &SB7.ETHNIC_GROUP <> '6'
    Add 1 to #Race_multi                                               ! Not a true count
    end-if
    Let $Old_Group = &SB7.ETHNIC_GROUP
    end-if
  end-if 
FROM PS_DIVERS_ETHNIC SB6, PS_ETHNIC_GRP_TBL SB7
  WHERE SB6.ETHNIC_GRP_CD = SB7.ETHNIC_GRP_CD
     AND SB6.EMPLID = &A.EMPLID
     AND SB6.ETHNIC_GRP_CD <> 'NOTHIS'
     AND SB7.EFFDT =
        (SELECT MAX(SB7_ED.EFFDT) FROM PS_ETHNIC_GRP_TBL SB7_ED
        WHERE SB7.SETID = SB7_ED.SETID
          AND SB7.ETHNIC_GRP_CD = SB7_ED.ETHNIC_GRP_CD
          AND SB7_ED.EFFDT <= $input_date)
     AND SB7.SETID = 'USA'
  order by decode(sb7.ethnic_group,'3','1','2'), decode(sb6.primary_indicator,'Y','1','2')
end-select
if #Race_multi > 1
	Let $Multi_Race = 'Y'
end-if
DO GET_XLAT('ETHNIC_GROUP',$Ethnic_Group,$UM_ETH_GRP_DESCR)
End-Procedure

!***********************************************************************
!  Get Country Data                                 
!***********************************************************************
Begin-Procedure Get_Country
Let $Country_Usa = ' '
Let $Citizenship_Status_Usa = ' '
Let $Country_Oth = ' '
Let $Citizenship_Status_Oth = ' '
Begin-select
SB8.COUNTRY,
SB8.CITIZENSHIP_STATUS
  if &SB8.COUNTRY = 'USA'
    Let $Country_Usa = &SB8.COUNTRY
    Let $Citizenship_Status_Usa = &SB8.CITIZENSHIP_STATUS
  end-if
  if &SB8.COUNTRY <> 'USA' and (&SB8.CITIZENSHIP_STATUS = 'N' or &SB8.CITIZENSHIP_STATUS = ' ' )
    Let $Country_Oth = &SB8.COUNTRY
    Let $Citizenship_Status_Oth = &SB8.CITIZENSHIP_STATUS
  end-if
FROM PS_CITIZENSHIP SB8
WHERE  SB8.EMPLID = &A.EMPLID
 
end-select
End-Procedure

!***********************************************************************
!  Get Calculated Noel Levitz Index                           
!***********************************************************************
Begin-Procedure GET_NL_INDEX($in_institution,$in_emplid,$in_acad_career,$in_adm_appl_nbr,#in_combined_sat,:#out_index)
Let #out_index = 0
Let #hsgpa = 0
Let #nl_rating = 0
Begin-select
ug.emplid
ug.acad_career
ug.adm_appl_nbr
ug.evaluation_code
ug.rating_cmp
ug.rating_cmp_value
   Let #hsgpa = &ug.rating_cmp_value
from sysadm.ps_adm_appl_cmp ug
where ug.rating_cmp = 'HSGPA'
and ug.emplid = $in_emplid
and ug.acad_career = $in_acad_career
and ug.adm_appl_nbr = $in_adm_appl_nbr
end-select
 if #hsgpa > 0 and #in_combined_sat > 0
  Let #nl_rating = #hsgpa*12.5 + #in_combined_sat*.03125
  evaluate #nl_rating
    when  >= 85
     Let #out_index = 1
     break
    when  >= 78 
     Let #out_index = 2
     break
    when  >= 71
     Let #out_index = 3
     break
    when  >= 66
     Let #out_index = 4
     break
    when-other
     Let #out_index = 5
  end-evaluate
  end-if
 
End-Procedure




!***********************************************************************
!  Get Residency Data                                 
!***********************************************************************
Begin-Procedure Get_Residency
Let $Effective_Term = ' '
Let $Residency = ' '
Let $Residency_Dt = '01-JAN-1901'
Let $Admission_Res = ' '
Let $Admission_Excpt = ' '
Begin-select
SB9.EFFECTIVE_TERM,
SB9.RESIDENCY,
SB9.RESIDENCY_DT,
SB9.ADMISSION_RES,
SB9.ADMISSION_EXCPT
  if &SB9.EFFECTIVE_TERM > ' '
    Let $Effective_Term = &SB9.EFFECTIVE_TERM
  end-if
  if &SB9.RESIDENCY > ' '
    Let $Residency = &SB9.RESIDENCY
  end-if
  if &SB9.RESIDENCY > ' '
    Let $Residency_Dt = &SB9.RESIDENCY_DT
  end-if
  if &SB9.ADMISSION_RES > ' '
    Let $Admission_Res = &SB9.ADMISSION_RES
  end-if
  if &SB9.ADMISSION_EXCPT > ' '
    Let $Admission_Excpt = &SB9.ADMISSION_EXCPT
  end-if
FROM PS_RESIDENCY_OFF SB9
WHERE  SB9.EMPLID = &A.EMPLID
AND SB9.ACAD_CAREER = &B.ACAD_CAREER
AND SB9.INSTITUTION = &B.INSTITUTION
AND (SB9.EFFECTIVE_TERM = (SELECT MAX(EB9.EFFECTIVE_TERM) FROM PS_RESIDENCY_OFF EB9
     WHERE EB9.EMPLID = SB9.EMPLID AND  EB9.ACAD_CAREER = SB9.ACAD_CAREER and EB9.INSTITUTION = SB9.INSTITUTION
     AND EB9.EFFECTIVE_TERM <= &C.ADMIT_TERM)                                                                    ! ??1006
 OR (SB9.EFFECTIVE_TERM = (SELECT MAX(EC9.EFFECTIVE_TERM) FROM PS_RESIDENCY_OFF EC9                       ! ??1006
     WHERE EC9.EMPLID = SB9.EMPLID AND EC9.ACAD_CAREER = EC9.ACAD_CAREER AND EC9.INSTITUTION = SB9.INSTITUTION)  ! ??1006
     AND NOT EXISTS (SELECT 'X' FROM PS_RESIDENCY_OFF ED9                                                 ! ??1006
     WHERE ED9.EMPLID=SB9.EMPLID AND ED9.ACAD_CAREER = SB9.ACAD_CAREER AND ED9.INSTITUTION = SB9.INSTITUTION     ! ??1006
     AND ED9.EFFECTIVE_TERM <= &C.ADMIT_TERM))                                                                   ! ??1006
     ) 
end-select
End-Procedure


!***********************************************************************
!  Get Acad Prog  Descr                                 
!***********************************************************************
Begin-Procedure Get_A_Descr
Let $Acad_Prog_Descr = ' '
Let $Academic_Group = ' '                                               !??0607
Let $Academic_Group_descr = ' '                                         !??0607
Begin-select
SB10.DESCR,
SB10.INSTITUTION,
SB10.ACAD_PROG,
SB10.ACAD_GROUP,
CR10.DESCR
  if &SB10.DESCR > ' '
    Let $Acad_Prog_Descr = &SB10.DESCR
  end-if
  if &SB10.ACAD_GROUP > ' '
    Let $Academic_Group = &SB10.ACAD_GROUP
  end-if
  if &CR10.DESCR > ' '
    Let $Academic_Group_Descr = &CR10.DESCR
  end-if
FROM PS_ACAD_PROG_TBL SB10, PS_ACAD_GROUP_TBL CR10
WHERE  SB10.ACAD_PROG = &C.ACAD_PROG
AND SB10.INSTITUTION = &B.INSTITUTION
AND SB10.INSTITUTION = CR10.INSTITUTION(+)
AND SB10.ACAD_GROUP = CR10.ACAD_GROUP(+)
AND SB10.EFFDT =
        (SELECT MAX(SB10_ED.EFFDT) FROM PS_ACAD_PROG_TBL SB10_ED
        WHERE SB10.INSTITUTION = SB10_ED.INSTITUTION
          AND SB10.ACAD_PROG = SB10_ED.ACAD_PROG
          AND SB10_ED.EFFDT <= $input_date)
AND ( CR10.EFFDT =
        (SELECT MAX(CR10_ED.EFFDT) FROM PS_ACAD_GROUP_TBL CR10_ED
        WHERE CR10.INSTITUTION = CR10_ED.INSTITUTION
          AND CR10.ACAD_GROUP = CR10_ED.ACAD_GROUP
          AND CR10_ED.EFFDT <= $input_date)
          or CR10.EFFDT is null)
end-select
End-Procedure

!***********************************************************************
!  Get Last School Info                                
!***********************************************************************
Begin-Procedure Get_Last_Sch_info
Let $Last_Sch_Descr = ' '
Let $Last_Sch_Type = ' '
Let $Ext_Org_Id_Descr = ' '
Let $Ext_org_id = &B.LAST_SCH_ATTEND
Begin-select
lbs.LS_SCHOOL_TYPE,                                                     
las.descr    
  if &las.descr > ' '
    Let $Last_Sch_Descr = &las.descr
    Let $Ext_Org_Id_Descr = &las.descr
  end-if
  if &lbs.LS_SCHOOL_TYPE > ' '
  	Let $Last_Sch_type = &lbs.LS_SCHOOL_type
  end-if

FROM PS_EXT_ORG_PRI_VW LAS 
  , PS_EXT_ORG_TBL_ADM LBS 
 WHERE  LAS.EFFDT = ( SELECT MAX(A_AED.EFFDT) 
 FROM PS_EXT_ORG_PRI_VW A_AED WHERE A_AED.EXT_ORG_ID = LAS.EXT_ORG_ID
   AND A_AED.EFFDT <= $input_date) 
   AND LAS.EFF_STATUS = 'A' 
   AND LAS.EXT_ORG_ID = LBS.EXT_ORG_ID 
   AND LBS.EFFDT = ( SELECT MAX(LBS_ED.EFFDT) 
   FROM PS_EXT_ORG_TBL_ADM LBS_ED WHERE LBS_ED.EXT_ORG_ID = LBS.EXT_ORG_ID AND LBS_ED.EFFDT <= $input_date)
   AND LBS.EFF_STATUS = 'A'                                                
!PS_EXT_ORG_TBL LAS
 AND las.ext_org_id = &B.last_sch_attend
!AND las.effdt =
!        (SELECT MAX(LAS_ED.EFFDT) FROM PS_EXT_ORG_TBL LAS_ED
!        WHERE LAS.EXT_ORG_ID = LAS_ED.EXT_ORG_ID
!          AND LAS_ED.EFFDT <= [$input_date_M])
end-select
End-Procedure
!***********************************************************************
! Get UM_ACAD_PROG_APPL, UM_ACAD_APPL_PLAN from applied row
!***********************************************************************
begin-procedure get_ACAD_PROG_APPL
	Let $Um_Acad_Prog_Appl = ' '
	Let $Um_Acad_Plan_Appl = ' '
begin-select
nvl(CPX.ACAD_PROG,' ') &CPX.ACAD_PROG,
nvl(DPX.ACAD_PLAN,' ') &DPX.ACAD_PLAN
    Let $Um_Acad_Prog_Appl = &CPX.ACAD_Prog
    Let $Um_Acad_Plan_Appl = &DPX.ACAD_PLAN
FROM PS_ADM_APPL_PROG CPX, PS_ADM_APPL_PLAN DPX
where   CPX.EMPLID = DPX.EMPLID(+)
    AND CPX.ACAD_CAREER = DPX.ACAD_CAREER(+)
    AND CPX.STDNT_CAR_NBR = DPX.STDNT_CAR_NBR(+)
    AND CPX.ADM_APPL_NBR = DPX.ADM_APPL_NBR(+)
    AND CPX.APPL_PROG_NBR = DPX.APPL_PROG_NBR(+)
    AND CPX.EFFDT = DPX.EFFDT(+)
    AND CPX.EFFSEQ = DPX.EFFSEQ(+)
    AND CPX.EMPLID = &A.EMPLID
    AND CPX.INSTITUTION = &B.INSTITUTION
    AND CPX.ACAD_CAREER = &B.ACAD_CAREER
    AND CPX.ADM_APPL_NBR = &B.ADM_APPL_NBR
    AND CPX.ADMIT_TERM = &C.ADMIT_TERM
    AND CPX.APPL_PROG_NBR = &C.APPL_PROG_NBR
    AND CPX.PROG_STATUS = 'AP' 
     AND CPX.EFFDT =
        (SELECT MAX(CPX_ED.EFFDT) FROM PS_ADM_APPL_PROG CPX_ED
        WHERE CPX.EMPLID = CPX_ED.EMPLID
          AND CPX.ACAD_CAREER = CPX_ED.ACAD_CAREER
          AND CPX.STDNT_CAR_NBR = CPX_ED.STDNT_CAR_NBR
          AND CPX.ADM_APPL_NBR = CPX_ED.ADM_APPL_NBR
          AND CPX.APPL_PROG_NBR = CPX_ED.APPL_PROG_NBR
          AND CPX.ADMIT_TERM = CPX_ED.ADMIT_TERM
          AND CPX.ACTION_DT = CPX_ED.ACTION_DT
          AND CPX.PROG_ACTION = CPX_ED.PROG_ACTION
          AND CPX_ED.EFFDT <= $input_date)
    AND CPX.EFFSEQ =
        (SELECT MAX(CPX_ES.EFFSEQ) FROM PS_ADM_APPL_PROG CPX_ES
        WHERE CPX.EMPLID = CPX_ES.EMPLID
          AND CPX.ACAD_CAREER = CPX_ES.ACAD_CAREER
          AND CPX.STDNT_CAR_NBR = CPX_ES.STDNT_CAR_NBR
          AND CPX.ADM_APPL_NBR = CPX_ES.ADM_APPL_NBR
          AND CPX.APPL_PROG_NBR = CPX_ES.APPL_PROG_NBR
          AND CPX.ADMIT_TERM = CPX_ES.ADMIT_TERM
          AND CPX.ACTION_DT = CPX_ES.ACTION_DT
          AND CPX.PROG_ACTION = CPX_ES.PROG_ACTION
          AND CPX.EFFDT = CPX_ES.EFFDT)
          order by cpx.effdt, cpx.effseq
end-select
end-procedure

!***********************************************************************
! Get Description for Program Reason
!***********************************************************************
begin-procedure Get_Prog_Rsn_Descr
	Let $Um_Prog_Rsn_Descr = ' '
begin-select
nvl(RSN.DESCR,' ') &rsn.descr
  Let $Um_Prog_Rsn_Descr = &RSN.DESCR 
FROM PS_PROG_RSN_TBL RSN
WHERE RSN.PROG_REASON = &C.PROG_REASON
 AND RSN.EFF_STATUS = 'A'
 AND RSN.SETID = 'UMSYS'
 AND RSN.PROG_ACTION = &C.PROG_ACTION
      AND RSN.EFFDT =
        (SELECT MAX(RSN_ED.EFFDT) FROM PS_PROG_RSN_TBL RSN_ED
        WHERE  RSN.PROG_ACTION = RSN_ED.PROG_ACTION
        AND RSN.PROG_REASON = RSN_ED.PROG_REASON
        AND RSN.EFF_STATUS = RSN_ED.EFF_STATUS
        AND RSN.SETID = RSN_ED.SETID
          AND RSN_ED.EFFDT <= $input_date)
 
end-select
end-procedure







!***********************************************************************
!  Get Application PlanData                                
!***********************************************************************

begin-procedure Get_Appl_Plan
Let $Acad_Plan = ' '
Let $Acad_Plan_Descr = ' '
Let $Acad_Plan_Type = ' '
Let $Degree = ' '
Let $Acad_Sub_Plan = ' '
Let $Acad_SubPlan_Descr = ' '
Let $Acad_SubPlan_Type = ' '
Let $Min_Acad_Plan = ' '
Let $Min_Acad_Plan_Descr = ' '
Let $Min_Acad_Plan_Type = ' '
Let $Min_Degree = ' '
Let $Min_Acad_Sub_Plan = ' '
Let $Min_Acad_SubPlan_Descr = ' '
Let $Min_Acad_SubPlan_Type = ' '
Let $Min_Acad_Prog = ' '
begin-select
NVL(SB12.ACAD_PLAN,' ') &SB12.ACAD_PLAN, 
NVL(SB13.DESCR,' ') &SB13.DESCR,
NVL(SB13.ACAD_PLAN_TYPE,' ') &SB13.ACAD_PLAN_TYPE,
NVL(SB13.DEGREE,' ') &SB13.DEGREE,
NVL(SB14.ACAD_PLAN,' ') &SB14.ACAD_PLAN,
NVL(SB14.ACAD_SUB_PLAN,' ' ) &SB14.ACAD_SUB_PLAN,
NVL(SB15.ACAD_SUBPLAN_TYPE,' ') &SB15.ACAD_SUBPLAN_TYPE
NVL(SB15.DESCR,' ') &SB15.DESCR
SB12.REQ_TERM,
SB13.ACAD_PROG
  Let $Acad_Plan = &SB12.ACAD_PLAN
  Let $Acad_Plan_Descr = &SB13.DESCR
  Let $Acad_Plan_Type = &SB13.ACAD_PLAN_TYPE
  Let $Degree = &SB13.DEGREE
  Let $Acad_Sub_Plan = &SB14.ACAD_SUB_PLAN
  Let $Acad_SubPlan_Descr = &SB15.DESCR
  Let $Acad_SubPlan_Type = &SB15.ACAD_SUBPLAN_TYPE
  if $Min_Acad_plan <= ' '
  Let $Min_Acad_Plan = &SB12.ACAD_PLAN
  Let $Min_Acad_Plan_Descr = &SB13.DESCR
  Let $Min_Acad_Plan_Type = &SB13.ACAD_PLAN_TYPE
  Let $Min_Degree = &SB13.DEGREE
  Let $Min_Acad_Sub_Plan = &SB14.ACAD_SUB_PLAN
  Let $Min_Acad_SubPlan_Descr = &SB15.DESCR
  Let $Min_Acad_SubPlan_Type = &SB15.ACAD_SUBPLAN_TYPE
  Let $Min_ACAD_PROG = &SB13.ACAD_PROG
  end-if

FROM PS_ADM_APPL_PLAN SB12, PS_ACAD_PLAN_TBL SB13, PS_ADM_APPL_SBPLAN SB14, PS_ACAD_SUBPLN_TBL SB15
  WHERE SB12.EMPLID = &A.EMPLID
  AND SB12.ACAD_CAREER = &B.ACAD_CAREER
  AND SB12.ADM_APPL_NBR = &B.ADM_APPL_NBR
  AND SB12.APPL_PROG_NBR = &C.APPL_PROG_NBR
  AND SB13.INSTITUTION = &B.INSTITUTION
  AND SB13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')                        !??0715

     AND SB12.ACAD_PLAN = SB13.ACAD_PLAN
     AND SB13.EFFDT =
        (SELECT MAX(SB13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL SB13_ED
        WHERE SB13.INSTITUTION = SB13_ED.INSTITUTION
          AND SB13.ACAD_PLAN = SB13_ED.ACAD_PLAN
          AND SB13_ED.EFFDT <= $input_date)
     
     AND SB12.EMPLID =  SB14.EMPLID(+)
     AND SB12.ACAD_CAREER =  SB14.ACAD_CAREER(+)
     AND SB12.STDNT_CAR_NBR =  SB14.STDNT_CAR_NBR(+)
     AND SB12.ADM_APPL_NBR =  SB14.ADM_APPL_NBR(+)
     AND SB12.APPL_PROG_NBR =  SB14.APPL_PROG_NBR(+)
     AND SB12.ACAD_PLAN =  SB14.ACAD_PLAN(+)
     AND SB12.EFFDT = SB14.EFFDT(+)
     AND SB12.EFFSEQ = SB14.EFFSEQ(+)
!     AND ( SB14.EFFDT =
!        (SELECT MAX(SB14_ED.EFFDT) FROM PS_ADM_APPL_SBPLAN SB14_ED
!        WHERE SB14.EMPLID = SB14_ED.EMPLID
!          AND SB14.ACAD_CAREER = SB14_ED.ACAD_CAREER
!          AND SB14.ACAD_PLAN = SB14_ED.ACAD_PLAN
!          AND SB14.STDNT_CAR_NBR = SB14_ED.STDNT_CAR_NBR
!          AND SB14.ADM_APPL_NBR = SB14_ED.ADM_APPL_NBR
!          AND SB14.APPL_PROG_NBR = SB14_ED.APPL_PROG_NBR
!          AND SB14_ED.EFFDT <= $input_date)
!   
!    AND SB14.EFFSEQ =
!        (SELECT MAX(SB14_ES.EFFSEQ) FROM PS_ADM_APPL_SBPLAN SB14_ES
!        WHERE SB14.EMPLID = SB14_ES.EMPLID
!          AND SB14.ACAD_CAREER = SB14_ES.ACAD_CAREER
!          AND SB14.ACAD_PLAN = SB14_ES.ACAD_PLAN
!          AND SB14.STDNT_CAR_NBR = SB14_ES.STDNT_CAR_NBR
!          AND SB14.ADM_APPL_NBR = SB14_ES.ADM_APPL_NBR
!          AND SB14.APPL_PROG_NBR = SB14_ES.APPL_PROG_NBR
!          AND SB14.EFFDT = SB14_ES.EFFDT)
!     OR SB14.EFFDT IS NULL)
     AND SB14.ACAD_PLAN =  SB15.ACAD_PLAN(+)
     AND SB14.ACAD_SUB_PLAN =  SB15.ACAD_SUB_PLAN(+)
     AND ( SB15.EFFDT =
        (SELECT MAX(SB15_ED.EFFDT) FROM PS_ACAD_SUBPLN_TBL SB15_ED
        WHERE SB15.INSTITUTION = SB15_ED.INSTITUTION
          AND SB15.ACAD_PLAN = SB15_ED.ACAD_PLAN
          AND SB15.ACAD_SUB_PLAN = SB15_ED.ACAD_SUB_PLAN
          AND SB15_ED.EFFDT <= $input_date)
     OR SB15.EFFDT IS NULL) 
     order by SB12.EFFDT, SB12.EFFSEQ, SB12.PLAN_SEQUENCE
end-select
end-procedure
!***********************************************************************
!  Get Student PlanData                                
!***********************************************************************

begin-procedure Get_Stu_Plan
Let $Acad_Plan = ' '
Let $Acad_Plan_Descr = ' '
Let $Acad_Plan_Type = ' '
Let $Degree = ' '
Let $Acad_Sub_Plan = ' '
Let $Acad_SubPlan_Descr = ' '
Let $Acad_SubPlan_Type = ' '
Let #N_plans = 0
Let $Min_Acad_Plan = ' '
Let $Min_Acad_Plan_Descr = ' '
Let $Min_Acad_Plan_Type = ' '
Let $Min_Degree = ' '
Let $Min_Acad_Sub_Plan = ' '
Let $Min_Acad_SubPlan_Descr = ' '
Let $Min_Acad_SubPlan_Type = ' '
Let $Min_Acad_Prog = ' '
! Find a date appropriate to the admisssions term
Let $This_Term_end_date = datenow()
Begin-select
nvl(min(term_begin_dt),SYSDATE) &THIS_TERM_END_DATE
 Let $This_Term_end_date = &THIS_TERM_END_DATE
from ps_term_tbl rqe 
where 
rqe.institution = &B.INSTITUTION 
and rqe.acad_career = &B.ACAD_CAREER
and rqe.strm > &C.ADMIT_TERM
end-select
begin-select
NVL(ST12.ACAD_PLAN,' ') &ST12.ACAD_PLAN, 
NVL(ST12.EFFDT,to_date('01-JAN-1901','DD-MON-YYYY')) &ST12.EFFDT,
NVL(ST13.DESCR,' ') &ST13.DESCR,
NVL(ST13.ACAD_PLAN_TYPE,' ') &ST13.ACAD_PLAN_TYPE,
NVL(ST13.DEGREE,' ') &ST13.DEGREE,
NVL(ST14.ACAD_PLAN,' ') &ST14.ACAD_PLAN,
NVL(ST14.ACAD_SUB_PLAN,' ' ) &ST14.ACAD_SUB_PLAN,
NVL(ST15.ACAD_SUBPLAN_TYPE,' ') &ST15.ACAD_SUBPLAN_TYPE
NVL(ST15.DESCR,' ') &ST15.DESCR
ST12.REQ_TERM,
ST12.ACAD_CAREER,
ST12.STDNT_CAR_NBR,
ST13.ACAD_PROG
  if (&ST12.EFFDT < $This_Term_end_date or $Acad_plan <= ' ')
  	and &ST12.ACAD_CAREER = &B.ACAD_CAREER
  	AND &ST12.STDNT_CAR_NBR = &C.STDNT_CAR_NBR
  Let $Acad_Plan = &ST12.ACAD_PLAN
  Let $Acad_Plan_Descr = &ST13.DESCR
  Let $Acad_Plan_Type = &ST13.ACAD_PLAN_TYPE
  Let $Degree = &ST13.DEGREE
  Let $Acad_Sub_Plan = &ST14.ACAD_SUB_PLAN
  Let $Acad_SubPlan_Descr = &ST15.DESCR
  Let $Acad_SubPlan_Type = &ST15.ACAD_SUBPLAN_TYPE
  add 1 to #N_plans
  end-if
  if $Min_Acad_plan <= ' '
  	and &ST12.ACAD_CAREER = &B.ACAD_CAREER
  	AND &ST12.STDNT_CAR_NBR = &C.STDNT_CAR_NBR
  	Let $Min_Acad_Plan = &ST12.ACAD_PLAN
    Let $Min_Acad_Plan_Descr = &ST13.DESCR
    Let $Min_Acad_Plan_Type = &ST13.ACAD_PLAN_TYPE
    Let $Min_Degree = &ST13.DEGREE
    Let $Min_Acad_Sub_Plan = &ST14.ACAD_SUB_PLAN
    Let $Min_Acad_SubPlan_Descr = &ST15.DESCR
    Let $Min_Acad_SubPlan_Type = &ST15.ACAD_SUBPLAN_TYPE
    Let $Min_ACAD_PROG = &ST13.ACAD_PROG
  end-if
FROM PS_ACAD_PLAN ST12, PS_ACAD_PLAN_TBL ST13, PS_ACAD_SUBPLAN ST14, PS_ACAD_SUBPLN_TBL ST15
  WHERE ST12.EMPLID = &A.EMPLID
!--  AND ST12.ACAD_CAREER = &B.ACAD_CAREER
  AND ST13.INSTITUTION = &B.INSTITUTION
  AND ST13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')                     !??0715
     AND ST12.ACAD_PLAN = ST13.ACAD_PLAN
     AND ST13.EFFDT =
        (SELECT MAX(ST13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL ST13_ED
        WHERE ST13.INSTITUTION = ST13_ED.INSTITUTION
          AND ST13.ACAD_PLAN = ST13_ED.ACAD_PLAN
          AND ST13_ED.EFFDT <= $input_date)
     AND ST12.EMPLID =  ST14.EMPLID(+)
     AND ST12.ACAD_CAREER =  ST14.ACAD_CAREER(+)
     AND ST12.STDNT_CAR_NBR =  ST14.STDNT_CAR_NBR(+)
     AND ST12.ACAD_PLAN =  ST14.ACAD_PLAN(+)
!     AND ( ST14.EFFDT =
!        (SELECT MAX(ST14_ED.EFFDT) FROM PS_ACAD_SUBPLAN ST14_ED
!        WHERE ST14.EMPLID = ST14_ED.EMPLID
!          AND ST14.ACAD_CAREER = ST14_ED.ACAD_CAREER
!          AND ST14.ACAD_PLAN = ST14_ED.ACAD_PLAN
!          AND ST14.STDNT_CAR_NBR = ST14_ED.STDNT_CAR_NBR
!          AND ST14.ACAD_PLAN = ST14_ED.ACAD_PLAN
!          AND ST14_ED.EFFDT <= $input_date)
!    AND ST14.EFFSEQ =
!        (SELECT MAX(ST14_ES.EFFSEQ) FROM PS_ACAD_SUBPLAN ST14_ES
!        WHERE ST14.EMPLID = ST14_ES.EMPLID
!          AND ST14.ACAD_CAREER = ST14_ES.ACAD_CAREER
!          AND ST14.ACAD_PLAN = ST14_ES.ACAD_PLAN
!          AND ST14.STDNT_CAR_NBR = ST14_ES.STDNT_CAR_NBR
!          AND ST14.ACAD_PLAN = ST14_ES.ACAD_PLAN
!          AND ST14.EFFDT = ST14_ES.EFFDT)
!     OR ST14.EFFDT IS NULL)
     AND ST12.effdt = st14.effdt(+)
     and st12.effseq = st14.effseq(+)

     AND ST14.ACAD_PLAN =  ST15.ACAD_PLAN(+)
     AND ST14.ACAD_SUB_PLAN =  ST15.ACAD_SUB_PLAN(+)
     AND ( ST15.EFFDT =
        (SELECT MAX(ST15_ED.EFFDT) FROM PS_ACAD_SUBPLN_TBL ST15_ED
        WHERE ST15.INSTITUTION = ST15_ED.INSTITUTION
          AND ST15.ACAD_PLAN = ST15_ED.ACAD_PLAN
          AND ST15.ACAD_SUB_PLAN = ST15_ED.ACAD_SUB_PLAN
          AND ST15_ED.EFFDT <= $input_date)
     OR ST15.EFFDT IS NULL) 
     order by st12.effdt, st12.effseq, st14.effdt, st14.effseq,
     decode(ST13.ACAD_PLAN_TYPE,'MAJ',1,'DMJ',3,'SP',1,'PRP',1,'CON',1,'COS',1,'HON',1,'RTC',1,'CER',2,5) desc, st12.plan_sequence desc
end-select
if #n_plans = 0
	show 'No plan for ' &A.EMPLID
end-if
end-Procedure
!***********************************************************************
!  Get Student Response
!***********************************************************************

Begin-Procedure Get_Response
Let $Response_Reason = ' '
Let $Response_Dt = '01-JAN-1901'
Let $Response_Reason_Descr = ' '
begin-select
sb16.response_reason,
sb16.response_dt,
sb16.ext_org_id,
sb16.descr,
uj.descr
  if &sb16.response_reason > ' '
    Let $Response_Reason = &sb16.response_reason
  end-if
  if &sb16.response_dt > '01-JAN-06'
    Let $Response_Dt = &sb16.response_dt
  end-if
  if &uj.descr > ' '
  	Let $Response_Reason_Descr = &uj.descr
  end-if
from ps_stdnt_response sb16, ps_resp_rsn_tbl uj
where sb16.acad_career = uj.acad_career(+)
and sb16.response_reason = uj.response_reason(+)
and sb16.emplid = &a.emplid
and sb16.acad_career = &b.acad_career
and sb16.adm_appl_nbr = &b.adm_appl_nbr
and  &b.institution = uj.institution(+)
end-select
end-Procedure
!***********************************************************************
!  Get External Organization Table
!***********************************************************************
begin-procedure get_ext_table
Let $Ext_Org_ID1 = '0'
Let $Descr1 =  ' '
Let $Ls_School_type1 = ' '
Let $City1 = ' '
Let $State1 = ' '
Let $Country1 = ' '
Let $Ext_Career1 = ' '
Let $From_Date1 = '01-JAN-1901'
Let $To_Dt1 = '01-JAN-1901'
Let $Ext_Summ_Type1 = ' '
Let $Ext_Acad_Level1 = ' '
Let #Class_Rank1 =  0
Let #Class_Size1 =  0
Let $Gpa_Type1 =  ' '
Let #Ext_GPA1 =  0
Let #Convert_GPA1 = 0
Let #Percentile1 = 0
Let $Rank_type1 = ' '
Let $Ext_Org_ID2 = '0'
Let $Descr2 = ' '
Let $Ls_School_type2 =' '
Let $City2 =' '
Let $State2 = ' '
Let $Country2 =' '
Let $Ext_Career2 = ' '
Let $From_Date2 = '01-JAN-1901'
Let $To_Dt2 = '01-JAN-1901'
Let $Ext_Summ_Type2 = ' '
Let $Ext_Acad_Level2 = ' '
Let #Class_Rank2 = 0
Let #Class_Size2 = 0
Let $Gpa_Type2 = ' '
Let #Ext_GPA2 = 0
Let #Convert_GPA2 =0
Let #Percentile2 = 0
Let $Rank_type2 = ' '
Let $Ext_Org_ID3 = '0'
Let $Descr3 =  ' '
Let $Ls_School_type3 = ' '
Let $City3 = ' '
Let $State3 = ' '
Let $Country3 = ' '
Let $Ext_Career3 = ' '
Let $From_Date3 = '01-JAN-1901'
Let $To_Dt3 = '01-JAN-1901'
Let $Ext_Summ_Type3 = ' '
Let $Ext_Acad_Level3 = ' '
Let #Class_Rank3 =  0
Let #Class_Size3 =  0
Let $Gpa_Type3 =  ' '
Let #Ext_GPA3 =  0
Let #Convert_GPA3 = 0
Let #Percentile3 = 0
Let $Rank_type3 = ' '
Let $Ext_Org_ID4 = '0'
Let $Descr4 =  ' '
Let $Ls_School_type4 = ' '
Let $City4 = ' '
Let $State4 = ' '
Let $Country4 = ' '
Let $Ext_Career4 = ' '
Let $From_Date4 = '01-JAN-1901'
Let $To_Dt4 = '01-JAN-1901'
Let $Ext_Summ_Type4 = ' '
Let $Ext_Acad_Level4 = ' '
Let #Class_Rank4 =  0
Let #Class_Size4 =  0
Let $Gpa_Type4 =  ' '
Let #Ext_GPA4 =  0
Let #Convert_GPA4 = 0
Let #Percentile4 = 0
Let $Rank_type4 = ' '
Let $Ext_Org_ID5 = '0'
Let $Descr5 =  ' '
Let $Ls_School_type5 = ' '
Let $City5 = ' '
Let $State5 = ' '
Let $Country5 = ' '
Let $Ext_Career5 = ' '
Let $From_Date5 = '01-JAN-1901'
Let $To_Dt5 = '01-JAN-1901'
Let $Ext_Summ_Type5 = ' '
Let $Ext_Acad_Level5 = ' '
Let #Class_Rank5 =  0
Let #Class_Size5 =  0
Let $Gpa_Type5 =  ' '
Let #Ext_GPA5 =  0
Let #Convert_GPA5 = 0
Let #Percentile5 = 0
Let $Rank_type5 = ' '
Let $Ext_Org_ID6 = '0'
Let $Descr6 =  ' '
Let $Ls_School_type6 = ' '
Let $City6 = ' '
Let $State6 = ' '
Let $Country6 = ' '
Let $Ext_Career6 = ' '
Let $From_Date6 = '01-JAN-1901'
Let $To_Dt6 = '01-JAN-1901'
Let $Ext_Summ_Type6 = ' '
Let $Ext_Acad_Level6 = ' '
Let #Class_Rank6 =  0
Let #Class_Size6 =  0
Let $Gpa_Type6 =  ' '
Let #Ext_GPA6 =  0
Let #Convert_GPA6 = 0
Let #Percentile6 = 0
Let $Rank_type6 = ' '
Let $Ext_Org_ID7 = '0'
Let $Descr7 =  ' '
Let $Ls_School_type7 = ' '
Let $City7 = ' '
Let $State7 = ' '
Let $Country7 = ' '
Let $Ext_Career7 = ' '
Let $From_Date7 = '01-JAN-1901'
Let $To_Dt7 = '01-JAN-1901'
Let $Ext_Summ_Type7 = ' '
Let $Ext_Acad_Level7 = ' '
Let #Class_Rank7 =  0
Let #Class_Size7 =  0
Let $Gpa_Type7 =  ' '
Let #Ext_GPA7 =  0
Let #Convert_GPA7 = 0
Let #Percentile7 = 0
Let $Rank_type7 = ' '
Let $Ext_Org_ID8 = '0'
Let $Descr8 =  ' '
Let $Ls_School_type8 = ' '
Let $City8 = ' '
Let $State8 = ' '
Let $Country8 = ' '
Let $Ext_Career8 = ' '
Let $From_Date8 = '01-JAN-1901'
Let $To_Dt8 = '01-JAN-1901'
Let $Ext_Summ_Type8 = ' '
Let $Ext_Acad_Level8 = ' '
Let #Class_Rank8 =  0
Let #Class_Size8 =  0
Let $Gpa_Type8 =  ' '
Let #Ext_GPA8 =  0
Let #Convert_GPA8 = 0
Let #Percentile8 = 0
Let $Rank_type8 = ' '
Let $Ext_Org_ID9 = '0'
Let $Descr9 =  ' '
Let $Ls_School_type9 = ' '
Let $City9 = ' '
Let $State9 = ' '
Let $Country9 = ' '
Let $Ext_Career9 = ' '
Let $From_Date9 = '01-JAN-1901'
Let $To_Dt9 = '01-JAN-1901'
Let $Ext_Summ_Type9 = ' '
Let $Ext_Acad_Level9 = ' '
Let #Class_Rank9 =  0
Let #Class_Size9 =  0
Let $Gpa_Type9 =  ' '
Let #Ext_GPA9 =  0
Let #Convert_GPA9 = 0
Let #Percentile9 = 0
Let $Rank_type9 = ' '
Let $Ext_Org_ID10 = '0'
Let $Descr10 =  ' '
Let $Ls_School_type10 = ' '
Let $City10 = ' '
Let $State10 = ' '
Let $Country10 = ' '
Let $Ext_Career10 = ' '
Let $From_Date10 = '01-JAN-1901'
Let $To_Dt10 = '01-JAN-1901'
Let $Ext_Summ_Type10 = ' '
Let $Ext_Acad_Level10 = ' '
Let #Class_Rank10 =  0
Let #Class_Size10 =  0
Let $Gpa_Type10 =  ' '
Let #Ext_GPA10 =  0
Let #Convert_GPA10 = 0
Let #Percentile10 = 0
Let $Rank_type10 = ' '
Let #Tindex = 0
BEGIN-SELECT
NVL(ETA.EXT_ORG_ID,' ') &ETA.EXT_ORG_ID,
NVL(ETB.DESCR,' ') &ETB.DESCR,
NVL(ETB.LS_SCHOOL_TYPE,' ') &ETB.LS_SCHOOL_TYPE,
NVL(ETB.CITY,' ') &ETB.CITY,
NVL(ETB.STATE,' ') &ETB.STATE,
NVL(ETB.COUNTRY,' ') &ETB.COUNTRY,
NVL(ETA.EXT_CAREER,' ') &ETA.EXT_CAREER,
NVL(ETA.FROM_DT,'01-JAN-01 ') &ETA.FROM_DT,
NVL(ETA.TO_DT,'01-JAN-1901') &ETA.TO_DT,
NVL(ETB.EXT_ORG_ID,' ') &ETB.EXT_ORG_ID,
NVL(ETB.EFFDT,'01-JAN-1901') &ETB.EFFDT,
NVL(ETA.EXT_DATA_NBR,0) &ETA.EXT_DATA_NBR,
NVL(AC.EXT_SUMM_TYPE,' ') &AC.EXT_SUMM_TYPE,
NVL(AC.EXT_ACAD_LEVEL,' ') &AC.EXT_ACAD_LEVEL,
NVL(AC.CLASS_RANK,0) &AC.CLASS_RANK,
NVL(AC.CLASS_SIZE,0) &AC.CLASS_SIZE,
NVL(AC.GPA_TYPE,' ') &AC.GPA_TYPE,
NVL(AC.EXT_GPA,0) &AC.EXT_GPA,
NVL(AC.CONVERT_GPA,0) &AC.CONVERT_GPA,
NVL(AC.PERCENTILE,0) &AC.PERCENTILE,
NVL(AC.RANK_TYPE,' ') &AC.RANK_TYPE,
CASE WHEN ETA.EXT_ORG_ID = $ext_org_id then ' ' else 'X' end &WOODOO

  Let #Tindex = #Tindex + 1
  evaluate #Tindex
    when = 1
   	    Let $Ext_Org_Id1 = &ETA.EXT_ORG_ID
    	  Let $Descr1 = &ETB.DESCR
    	  Let $Ls_School_Type1 = &ETB.LS_SCHOOL_TYPE
    	  Let $City1 = &ETB.CITY
    	  Let $State1 = &ETB.STATE
    	  Let $Country1 = &ETB.COUNTRY
    	  Let $Ext_Career1 = &ETA.EXT_CAREER
    		Let $From_Date1 = &ETA.FROM_DT
    		Let $To_Dt1 = &ETA.TO_DT
    		if $ext_org_id <= '0'                                            !if not obtained from previous school
    			Let $ext_org_id = $ext_org_id1                                 ! get ext_org_id here
    			Let $Ext_Org_Id_Descr = $Descr1
    		end-if
    	Let $Inca = 'HSOV'
    	If $Ls_School_type1= 'col' or $Ls_School_type1 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type1 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level1 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank1 = &AC.CLASS_RANK
      Let #Class_Size1 = &AC.CLASS_SIZE
      Let $Gpa_Type1 = &AC.GPA_TYPE
      Let #Ext_GPA1 = &AC.EXT_GPA
      Let #Convert_GPA1 = &AC.CONVERT_GPA
      Let #Percentile1 = &AC.PERCENTILE
      Let $Rank_type1 = &AC.RANK_TYPE
      break
   when = 2
    	    Let $Ext_Org_Id2 = &ETA.EXT_ORG_ID
    	  Let $Descr2 = &ETB.DESCR
    	  Let $Ls_School_Type2 = &ETB.LS_SCHOOL_TYPE
    	  Let $City2 = &ETB.CITY
    	  Let $State2 = &ETB.STATE
    	  Let $Country2 = &ETB.COUNTRY
    	  Let $Ext_Career2 = &ETA.EXT_CAREER
    		Let $From_Date2 = &ETA.FROM_DT
    		Let $To_Dt2 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type2= 'col' or $Ls_School_type2 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type2 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level2 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank2 = &AC.CLASS_RANK
      Let #Class_Size2 = &AC.CLASS_SIZE
      Let $Gpa_Type2 = &AC.GPA_TYPE
      Let #Ext_GPA2 = &AC.EXT_GPA
      Let #Convert_GPA2 = &AC.CONVERT_GPA
      Let #Percentile2 = &AC.PERCENTILE
      Let $Rank_type2 = &AC.RANK_TYPE
      break
    when = 3
   	    Let $Ext_Org_Id3 = &ETA.EXT_ORG_ID
    	  Let $Descr3 = &ETB.DESCR
    	  Let $Ls_School_Type3 = &ETB.LS_SCHOOL_TYPE
    	  Let $City3 = &ETB.CITY
    	  Let $State3 = &ETB.STATE
    	  Let $Country3 = &ETB.COUNTRY
    	  Let $Ext_Career3 = &ETA.EXT_CAREER
    		Let $From_Date3 = &ETA.FROM_DT
    		Let $To_Dt3 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type3= 'col' or $Ls_School_type3 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type3 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level3 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank3 = &AC.CLASS_RANK
      Let #Class_Size3 = &AC.CLASS_SIZE
      Let $Gpa_Type3 = &AC.GPA_TYPE
      Let #Ext_GPA3 = &AC.EXT_GPA
      Let #Convert_GPA3 = &AC.CONVERT_GPA
      Let #Percentile3 = &AC.PERCENTILE
      Let $Rank_type3 = &AC.RANK_TYPE
      break
    when = 4
    	  Let $Ext_Org_Id4 = &ETA.EXT_ORG_ID
    	  Let $Descr4 = &ETB.DESCR
    	  Let $Ls_School_Type4 = &ETB.LS_SCHOOL_TYPE
    	  Let $City4 = &ETB.CITY
    	  Let $State4 = &ETB.STATE
    	  Let $Country4 = &ETB.COUNTRY
    	  Let $Ext_Career4 = &ETA.EXT_CAREER
    		Let $From_Date4 = &ETA.FROM_DT
    		Let $To_Dt4 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type4= 'col' or $Ls_School_type4 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type4 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level4 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank4 = &AC.CLASS_RANK
      Let #Class_Size4 = &AC.CLASS_SIZE
      Let $Gpa_Type4 = &AC.GPA_TYPE
      Let #Ext_GPA4 = &AC.EXT_GPA
      Let #Convert_GPA4 = &AC.CONVERT_GPA
      Let #Percentile4 = &AC.PERCENTILE
      Let $Rank_type4 = &AC.RANK_TYPE
      break
    when = 5
    	    Let $Ext_Org_Id5 = &ETA.EXT_ORG_ID
    	  Let $Descr5 = &ETB.DESCR
    	  Let $Ls_School_Type5 = &ETB.LS_SCHOOL_TYPE
    	  Let $City5 = &ETB.CITY
    	  Let $State5 = &ETB.STATE
    	  Let $Country5 = &ETB.COUNTRY
    	  Let $Ext_Career5 = &ETA.EXT_CAREER
    		Let $From_Date5 = &ETA.FROM_DT
    		Let $To_Dt5 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type5= 'col' or $Ls_School_type5 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type5 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level5 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank5 = &AC.CLASS_RANK
      Let #Class_Size5 = &AC.CLASS_SIZE
      Let $Gpa_Type5 = &AC.GPA_TYPE
      Let #Ext_GPA5 = &AC.EXT_GPA
      Let #Convert_GPA5 = &AC.CONVERT_GPA
      Let #Percentile5 = &AC.PERCENTILE
      Let $Rank_type5 = &AC.RANK_TYPE
      break
    when = 6
    	    Let $Ext_Org_Id6 = &ETA.EXT_ORG_ID
    	  Let $Descr6 = &ETB.DESCR
    	  Let $Ls_School_Type6 = &ETB.LS_SCHOOL_TYPE
    	  Let $City6 = &ETB.CITY
    	  Let $State6 = &ETB.STATE
    	  Let $Country6 = &ETB.COUNTRY
    	  Let $Ext_Career6 = &ETA.EXT_CAREER
    		Let $From_Date6 = &ETA.FROM_DT
    		Let $To_Dt6 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type6= 'col' or $Ls_School_type6 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type6 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level6 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank6 = &AC.CLASS_RANK
      Let #Class_Size6 = &AC.CLASS_SIZE
      Let $Gpa_Type6 = &AC.GPA_TYPE
      Let #Ext_GPA6 = &AC.EXT_GPA
      Let #Convert_GPA6 = &AC.CONVERT_GPA
      Let #Percentile6 = &AC.PERCENTILE
      Let $Rank_type6 = &AC.RANK_TYPE
      break
    when = 7
    	    Let $Ext_Org_Id7 = &ETA.EXT_ORG_ID
    	  Let $Descr7 = &ETB.DESCR
    	  Let $Ls_School_Type7 = &ETB.LS_SCHOOL_TYPE
    	  Let $City7 = &ETB.CITY
    	  Let $State7 = &ETB.STATE
    	  Let $Country7 = &ETB.COUNTRY
    	  Let $Ext_Career7 = &ETA.EXT_CAREER
    		Let $From_Date7 = &ETA.FROM_DT
    		Let $To_Dt7 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type7= 'col' or $Ls_School_type7 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type7 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level7 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank7 = &AC.CLASS_RANK
      Let #Class_Size7 = &AC.CLASS_SIZE
      Let $Gpa_Type7 = &AC.GPA_TYPE
      Let #Ext_GPA7 = &AC.EXT_GPA
      Let #Convert_GPA7 = &AC.CONVERT_GPA
      Let #Percentile7 = &AC.PERCENTILE
      Let $Rank_type7 = &AC.RANK_TYPE
      break
    when = 8
    	    Let $Ext_Org_Id8 = &ETA.EXT_ORG_ID
    	  Let $Descr8 = &ETB.DESCR
    	  Let $Ls_School_Type8 = &ETB.LS_SCHOOL_TYPE
    	  Let $City8 = &ETB.CITY
    	  Let $State8 = &ETB.STATE
    	  Let $Country8 = &ETB.COUNTRY
    	  Let $Ext_Career8 = &ETA.EXT_CAREER
    		Let $From_Date8 = &ETA.FROM_DT
    		Let $To_Dt8 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type8= 'col' or $Ls_School_type8 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type8 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level8 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank8 = &AC.CLASS_RANK
      Let #Class_Size8 = &AC.CLASS_SIZE
      Let $Gpa_Type8 = &AC.GPA_TYPE
      Let #Ext_GPA8 = &AC.EXT_GPA
      Let #Convert_GPA8 = &AC.CONVERT_GPA
      Let #Percentile8 = &AC.PERCENTILE
      Let $Rank_type8 = &AC.RANK_TYPE
      break
    when = 9
    	    Let $Ext_Org_Id9 = &ETA.EXT_ORG_ID
    	  Let $Descr9 = &ETB.DESCR
    	  Let $Ls_School_Type9 = &ETB.LS_SCHOOL_TYPE
    	  Let $City9 = &ETB.CITY
    	  Let $State9 = &ETB.STATE
    	  Let $Country9 = &ETB.COUNTRY
    	  Let $Ext_Career9 = &ETA.EXT_CAREER
    		Let $From_Date9 = &ETA.FROM_DT
    		Let $To_Dt9 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type9= 'col' or $Ls_School_type9 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type9 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level9 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank9 = &AC.CLASS_RANK
      Let #Class_Size9 = &AC.CLASS_SIZE
      Let $Gpa_Type9 = &AC.GPA_TYPE
      Let #Ext_GPA9 = &AC.EXT_GPA
      Let #Convert_GPA9 = &AC.CONVERT_GPA
      Let #Percentile9 = &AC.PERCENTILE
      Let $Rank_type9 = &AC.RANK_TYPE
      break
    when = 10
    	    Let $Ext_Org_Id10 = &ETA.EXT_ORG_ID
    	  Let $Descr10 = &ETB.DESCR
    	  Let $Ls_School_Type10 = &ETB.LS_SCHOOL_TYPE
    	  Let $City10 = &ETB.CITY
    	  Let $State10 = &ETB.STATE
    	  Let $Country10 = &ETB.COUNTRY
    	  Let $Ext_Career10 = &ETA.EXT_CAREER
    		Let $From_Date10 = &ETA.FROM_DT
    		Let $To_Dt10 = &ETA.TO_DT
    	Let $Inca = 'HSOV'
    	If $Ls_School_type1= 'col' or $Ls_School_type1 = 'UGOV'
    		Let $Inca = 'UGOV'
    	end-if
   	  Let $Ext_Summ_Type10 = &AC.EXT_SUMM_TYPE
   	  Let $Ext_Acad_Level10 = &AC.EXT_ACAD_LEVEL
      Let #Class_Rank10 = &AC.CLASS_RANK
      Let #Class_Size10 = &AC.CLASS_SIZE
      Let $Gpa_Type10 = &AC.GPA_TYPE
      Let #Ext_GPA10 = &AC.EXT_GPA
      Let #Convert_GPA10 = &AC.CONVERT_GPA
      Let #Percentile10 = &AC.PERCENTILE
      Let $Rank_type10 = &AC.RANK_TYPE
  end-evaluate
FROM PS_EXT_ACAD_DATA ETA,
 (SELECT LAS.EXT_ORG_ID 
 , LAS.EFFDT 
 , LAS.EFF_STATUS 
 , LAS.DESCR 
 , LAS.OTH_NAME_SORT_SRCH 
 , LAS.EXT_ORG_TYPE 
 , LBS.LS_SCHOOL_TYPE 
 , LAS.CITY 
 , LAS.STATE 
 , LAS.COUNTRY 
  FROM PS_EXT_ORG_PRI_VW LAS 
  , PS_EXT_ORG_TBL_ADM LBS 
 WHERE  LAS.EFFDT = ( SELECT MAX(A_AED.EFFDT) FROM PS_EXT_ORG_PRI_VW A_AED WHERE A_AED.EXT_ORG_ID = LAS.EXT_ORG_ID
   AND A_AED.EFFDT <= SYSDATE) 
   AND LAS.EFF_STATUS = 'A' 
   AND LAS.EXT_ORG_ID = LBS.EXT_ORG_ID 
   AND LBS.EFFDT = ( SELECT MAX(LBS_ED.EFFDT) FROM PS_EXT_ORG_TBL_ADM LBS_ED WHERE LBS_ED.EXT_ORG_ID = LBS.EXT_ORG_ID AND LBS_ED.EFFDT <= SYSDATE)
   AND LBS.EFF_STATUS = 'A' ) ETB,
   PS_EXT_ACAD_SUM AC
  WHERE ETA.EXT_ORG_ID =  ETB.EXT_ORG_ID(+)
!     AND ( ETB.EFFDT =
!        (SELECT MAX(ETB_ED.EFFDT) FROM PS_EXT_ORG_TBL ETB_ED
!        WHERE ETB.EXT_ORG_ID = ETB_ED.EXT_ORG_ID
!          AND ETB_ED.EFFDT <= $input_date)
!     OR ETB.EFFDT IS NULL)
     and AC.EMPLID(+) = ETA.EMPLID
     and AC.EXT_ORG_ID(+) =  ETA.EXT_ORG_ID
     and AC.EXT_CAREER(+) = ETA.EXT_CAREER
     and AC.EXT_DATA_NBR(+) = ETA.EXT_DATA_NBR
     AND ETA.EMPLID = &A.EMPLID
     order by 22, 9 DESC
     
END-SELECT
end-procedure

begin-procedure zedo
	Let #Num_Testo = 0
	Let #Num_Compy = 0
end-procedure

begin-procedure maxxy
Let #MAX_SAT_MATH = 0
Let #MAX_SAT_VERB = 0
Let #MAX_SAT_ERWS = 0
Let #MAX_SAT_MSS = 0
Let #MAX_GRE_QUAN = 0
Let #MAX_GRE_VERB = 0

Let #MAX_MAT_WAC = 0
Let #MAX_MAT_WAP = 0
Let #MAX_GMAT_ANALYW = 0
Let #MAX_GMAT_ANALY = 0
Let #MAX_GMAT_QUAN = 0
Let #MAX_GMAT_VERB = 0
! 5 years
Let #MAX_SAT_WRIT = 0
Let #MAX_ACT_ENGL = 0
Let #MAX_ACT_MATH = 0
Let #MAX_ACT_READ = 0
Let #Max_ACT_COMP = 0
! 2 years
Let #MAX_TOEFL_COMPI = 0
Let #MAX_TOEFL_COMPP = 0
Let #MAX_TOEFL_COMPC =  0
BEGIN-SELECT
MXT.TEST_COMPONENT,
MAX(MXT.SCORE) &MXT.Maxxy
  if &MXT.TEST_COMPONENT = 'MATH'
  Let #MAX_SAT_MATH = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'VERB'
  Let #MAX_SAT_VERB = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'WRIT'
 	Let #MAX_SAT_WRIT = &MXT.Maxxy
 end-if
 if &MXT.TEST_COMPONENT = 'ERWS'
  Let #MAX_SAT_ERWS = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'MSS'
  Let #MAX_SAT_MSS = &MXT.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP MXT
WHERE MXT.EMPLID = &A.EMPLID
AND ( MXT.TEST_COMPONENT = 'MATH' or MXT.TEST_COMPONENT = 'VERB' or MXT.TEST_COMPONENT = 'WRIT' or MXT.TEST_COMPONENT = 'ERWS' or MXT.TEST_COMPONENT = 'MSS')
AND MXT.TEST_ID = 'SAT 1'
AND MXT.TEST_DT >= $FiveYearsAgo
group by MXT.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MOOS.TEST_COMPONENT,
MAX(MOOS.SCORE) &MOOS.Maxxy
  if &MOOS.TEST_COMPONENT = 'MATH'
  Let #MAX_ACT_MATH = &MOOS.Maxxy
  end-if
 if &MOOS.TEST_COMPONENT = 'ENGL'
  Let #MAX_ACT_ENGL = &MOOS.Maxxy
  end-if
 if &MOOS.TEST_COMPONENT = 'COMP'
 	Let #MAX_ACT_COMP = &MOOS.Maxxy
 end-if
  if &MOOS.TEST_COMPONENT = 'READ'
 	Let #MAX_ACT_READ = &MOOS.Maxxy
 end-if
FROM PS_STDNT_TEST_COMP MOOS
WHERE MOOS.EMPLID = &A.EMPLID
AND ( MOOS.TEST_COMPONENT = 'MATH' or MOOS.TEST_COMPONENT = 'ENGL' or MOOS.TEST_COMPONENT = 'COMP' or MOOS.TEST_COMPONENT = 'READ' )
AND MOOS.TEST_ID = 'ACT'
AND MOOS.TEST_DT >= $FiveYearsAgo
group by MOOS.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MEEC.TEST_COMPONENT,
MAX(MEEC.SCORE) &MEEC.Maxxy
  if &MEEC.TEST_COMPONENT = 'COMPI'
  Let #MAX_TOEFL_COMPI = &MEEC.Maxxy
  end-if
 if &MEEC.TEST_COMPONENT = 'COMPP'
  Let #MAX_TOEFL_COMPP = &MEEC.Maxxy
  end-if
 if &MEEC.TEST_COMPONENT = 'COMPC'
 	Let #MAX_TOEFL_COMPC = &MEEC.Maxxy
 end-if
FROM PS_STDNT_TEST_COMP MEEC
WHERE MEEC.EMPLID = &A.EMPLID
AND ( MEEC.TEST_COMPONENT = 'COMPI' or MEEC.TEST_COMPONENT = 'COMPP' or MEEC.TEST_COMPONENT = 'COMPC')
AND MEEC.TEST_ID = 'TOEFL'
AND MEEC.TEST_DT >= $TwoYearsAgo
group by MEEC.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MXV.TEST_COMPONENT,
MAX(MXV.SCORE) &MXV.Maxxy,
  if &MXV.TEST_COMPONENT = 'QUAN'
  Let #MAX_GRE_QUAN = &MXV.Maxxy
  end-if
 if &MXV.TEST_COMPONENT = 'VERB'
  Let #MAX_GRE_VERB = &MXV.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP MXV
WHERE MXV.EMPLID = &A.EMPLID
AND (MXV.TEST_COMPONENT = 'VERB' or MXV.TEST_COMPONENT = 'QUAN')
AND MXV.TEST_ID = 'GRE'
group by MXV.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MAT.TEST_COMPONENT,
MAX(MAT.SCORE) &MAT.Maxxy,
  if &MAT.TEST_COMPONENT = 'WAC'
  Let #MAX_MAT_WAC = &MAT.Maxxy
  end-if
 if &MAT.TEST_COMPONENT = 'WAP'
  Let #MAX_MAT_WAP = &MAT.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP MAT
WHERE MAT.EMPLID = &A.EMPLID
AND (MAT.TEST_COMPONENT = 'WAC' or MAT.TEST_COMPONENT = 'WAC')
AND MAT.TEST_ID = 'MAT'
group by MAT.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
GMAT.TEST_COMPONENT,
MAX(GMAT.SCORE) &GMAT.Maxxy,
  if &GMAT.TEST_COMPONENT = 'ANLY'
  Let #MAX_GMAT_ANALY = &GMAT.Maxxy
  end-if
 if &GMAT.TEST_COMPONENT = 'ANALYW'
  Let #MAX_GMAT_ANALYW = &GMAT.Maxxy
  end-if
 if &GMAT.TEST_COMPONENT = 'QUAN'
  Let #MAX_GMAT_QUAN = &GMAT.Maxxy
  end-if
 if &GMAT.TEST_COMPONENT = 'VERB'
  Let #MAX_GMAT_VERB = &GMAT.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP GMAT
WHERE GMAT.EMPLID = &A.EMPLID
AND (GMAT.TEST_COMPONENT = 'ANLY' or GMAT.TEST_COMPONENT = 'ANALYW'
      or GMAT.TEST_COMPONENT = 'QUAN' or GMAT.TEST_COMPONENT = 'VERB')
AND GMAT.TEST_ID = 'GMAT'
group by GMAT.TEST_COMPONENT
END-SELECT

end-procedure



begin-procedure incremento
	  Let #Num_Testo = #Num_Testo + 1
	  Let #Num_Compy = 0
end-procedure

!***********************************************************************
!  Sql insert rows 
!***********************************************************************

Begin-Procedure Insert_Rows
Let $Calling_Procedure = 'Insert_Rows'
if mod(#app_count,10000) = 0
 show #app_count ' records so far.'
 BEGIN-SQL on-error=SQL-Recover
   COMMIT
 END-SQL
end-if
 
let $Fubar_Date = &C.EFFDT
BEGIN-SQL ON-ERROR=SQL-Recover
   INSERT INTO SYSADM.PS_UM_APPL_EXT_BLD
   VALUES
  	(&A.EMPLID,
     &A.LAST_NAME,
     &A.FIRST_NAME,
     &A.MIDDLE_NAME,
     &A.NAME,
     $Previous_Name,
     &A.ADDRESS1,
     &A.ADDRESS2,
     &A.ADDRESS3,
     &A.ADDRESS4,
     &A.CITY,
     &A.STATE,
     &A.POSTAL,
     &A.COUNTY,
     &A.COUNTRY,
     $Email_Addr,
     $Phone,
     &A.SEX,
     &A.BIRTHDATE,
     &A.BIRTHPLACE,
     &A.BIRTHSTATE,
     &A.BIRTHCOUNTRY,
     $Nid_Usa,
     $Nid_Can,
     $Ethnic_Grp_Cd,
     $Ethnic_Category,
     $Ethnic_Descr,
     &A.MAR_STATUS,
     &A.MAR_STATUS_DT,
     &A.DT_OF_DEATH,
     $Country_Usa,
     $Citizenship_Status_Usa,
     $Country_Oth,
     $Citizenship_Status_Oth,
     $Effective_Term,
     $Residency,
     $Residency_Dt,
     $Admission_Res,
     $Admission_Excpt,
     &B.ACAD_CAREER,
     &C.STDNT_CAR_NBR,
     &B.ADM_APPL_NBR,
     &B.INSTITUTION,
     &B.ADM_APPL_CTR,
     &B.ADMIT_TYPE,
     &B.FIN_AID_INTEREST,
     &B.HOUSING_INTEREST,
     &B.REGION,
     &B.LAST_SCH_ATTEND,
     &B.GRADUATION_DT,
     &B.ACADEMIC_LEVEL,
     &B.ADM_APPL_COMPLETE,
     &B.ADM_APPL_DT,
     &B.ADM_APPL_CMPLT_DT,
     &B.ADM_APPL_METHOD,
     &B.ADM_CREATION_DT,
     &B.ADM_CREATION_BY,
     &B.ADM_UPDATED_DT,
     &B.ADM_UPDATED_BY,
     &C.APPL_PROG_NBR,
     $Fubar_Date,
     &C.EFFSEQ,
     &C.ACAD_PROG,
     $Acad_Prog_Descr,
     $Um_Acad_Prog_appl,
     $PROG_STATUS,
     $PROG_ACTION,
     &C.ACTION_DT,
     $PROG_REASON,
     $Um_Prog_Rsn_Descr,
     &C.ADMIT_TERM,
     &C.EXP_GRAD_TERM,
     $Acad_Plan,
     $Acad_Plan_Descr,
     $Um_Acad_Plan_Appl,
     $Acad_Plan_Type,
     $Academic_Group,                                                   !??0607                                         
     $Academic_Group_Descr,                                             !??0607
     $Degree,
     $Acad_Sub_Plan,
     $Acad_SubPlan_Descr,
     $Acad_SubPlan_Type,
     $Response_Reason,
     $Response_Reason_Descr,
     $Response_Dt,
     $Ext_Org_Id,
     $Ext_Org_Id_Descr,
     $Ext_Org_Id1, $Descr1, $Ls_School_Type1, $City1, $State1, $Country1, $Ext_Career1, $From_Date1, $To_Dt1, $Ext_Summ_Type1, $Ext_Acad_Level1,
         #Class_Rank1, #Class_Size1, $Gpa_Type1, #Ext_GPA1, #Convert_GPA1, #Percentile1, $Rank_type1,
     $Ext_Org_Id2, $Descr2, $Ls_School_Type2, $City2, $State2, $Country2, $Ext_Career2, $From_Date2, $To_Dt2, $Ext_Summ_Type2, $Ext_Acad_Level2,
         #Class_Rank2, #Class_Size2, $Gpa_Type2, #Ext_GPA2, #Convert_GPA2, #Percentile2, $Rank_type2,
     $Ext_Org_Id3, $Descr3, $Ls_School_Type3, $City3, $State3, $Country3, $Ext_Career3, $From_Date3, $To_Dt3, $Ext_Summ_Type3, $Ext_Acad_Level3,
         #Class_Rank3, #Class_Size3, $Gpa_Type3, #Ext_GPA3, #Convert_GPA3, #Percentile3, $Rank_type3,
     $Ext_Org_Id4, $Descr4, $Ls_School_Type4, $City4, $State4, $Country4, $Ext_Career4, $From_Date4, $To_Dt4, $Ext_Summ_Type4, $Ext_Acad_Level4,
         #Class_Rank4, #Class_Size4, $Gpa_Type4, #Ext_GPA4, #Convert_GPA4, #Percentile4, $Rank_type4,
     $Ext_Org_Id5, $Descr5, $Ls_School_Type5, $City5, $State5, $Country5, $Ext_Career5, $From_Date5, $To_Dt5, $Ext_Summ_Type5, $Ext_Acad_Level5,
         #Class_Rank5, #Class_Size5, $Gpa_Type5, #Ext_GPA5, #Convert_GPA5, #Percentile5, $Rank_type5,
     $Ext_Org_Id6, $Descr6, $Ls_School_Type6, $City6, $State6, $Country6, $Ext_Career6, $From_Date6, $To_Dt6, $Ext_Summ_Type6, $Ext_Acad_Level6,
         #Class_Rank6, #Class_Size6, $Gpa_Type6, #Ext_GPA6, #Convert_GPA6, #Percentile6, $Rank_type6,
     $Ext_Org_Id7, $Descr7, $Ls_School_Type7, $City7, $State7, $Country7, $Ext_Career7, $From_Date7, $To_Dt7, $Ext_Summ_Type7, $Ext_Acad_Level7,
         #Class_Rank7, #Class_Size7, $Gpa_Type7, #Ext_GPA7, #Convert_GPA7, #Percentile7, $Rank_type7,
     $Ext_Org_Id8, $Descr8, $Ls_School_Type8, $City8, $State8, $Country8, $Ext_Career8, $From_Date8, $To_Dt8, $Ext_Summ_Type8, $Ext_Acad_Level8,
         #Class_Rank8, #Class_Size8, $Gpa_Type8, #Ext_GPA8, #Convert_GPA8, #Percentile8, $Rank_type8,
     $Ext_Org_Id9, $Descr9, $Ls_School_Type9, $City9, $State9, $Country9, $Ext_Career9, $From_Date9, $To_Dt9, $Ext_Summ_Type9, $Ext_Acad_Level9,
         #Class_Rank9, #Class_Size9, $Gpa_Type9, #Ext_GPA9, #Convert_GPA9, #Percentile9, $Rank_type9,
     $Ext_Org_Id10, $Descr10, $Ls_School_Type10, $City10, $State10, $Country10, $Ext_Career10, $From_Date10, $To_Dt10, $Ext_Summ_Type10, $Ext_Acad_Level10,
         #Class_Rank10, #Class_Size10, $Gpa_Type10, #Ext_GPA10, #Convert_GPA10, #Percentile10, $Rank_type10,
     #Max_SAT_Math, #Max_SAT_Verb,
       $First_Prog_Action, $First_Prog_Action_date, #Max_GRE_QUAN, #Max_GRE_VERB, $Last_Sch_Descr, $Last_Sch_Type,
       #Max_SAT_WRIT, #Max_ACT_MATH, #Max_ACT_ENGL, #MAX_ACT_COMP, #MAX_ACT_READ, #MAX_TOEFL_COMPI, #MAX_TOEFL_COMPP, #MAX_TOEFL_COMPC,
       $Min_Acad_prog, $Min_Acad_Plan, $Min_Acad_Sub_Plan ,&C.CAMPUS,
      $ADMT_PROG1, $ADMT_PROG2, $ADMT_PROG3, $ADMT_PROG4,
      $COND_PROG1, $COND_PROG2,$COND_PROG3,$COND_PROG4,
      $APPL_PROG1, $APPL_PROG2,$APPL_PROG3,$APPL_PROG4,
      $DEIN_PROG1, $DEIN_PROG2, $DEIN_PROG3, $DEIN_PROG4,
      $WADM_PROG1, $WADM_PROG2, $WADM_PROG3, $WADM_PROG4,
      $DENY_PROG1, $DENY_PROG2, $DENY_PROG3, $DENY_PROG4,
      $RECN_PROG1, $RECN_PROG2, $RECN_PROG3, $RECN_PROG4,
       $WAPP_PROG1, $WAPP_PROG2, $WAPP_PROG3, $WAPP_PROG4 ,
       $UM_APP_DATE, $UM_COMPLETE_DATE, $UM_ADMIT_DATE, $UM_NETCONFIRM_DATE, $UM_GROSSCONFIRM_DATE,
       $UM_ENROLL_DATE, $UM_DEFER_DATE, $UM_DENY_DATE, $UM_WADMINC_DATE, $UM_WADMTOT_DATE, 
       $UM_WAPPINC_DATE, $UM_WAPPTOTAL_DATE, $UM_WADMADMIT_DATE, $UM_NOSHOW_DATE, $UM_NODECISION_DATE, $UM_WAPPDEF_DATE, $UM_WAPPDEF_TERM,
       $UM_WAPPDEF_PLAN, $UM_WAPPDEF_SUBPLAN, $UM_WAPPDEF_PRGSTAT, $UM_WAPPDEF_PROGACT, $UM_WAPPDEF_PRGREAS,
       &DATASOURCE, &Recalculated_input_date, $Row_check ,$Last_Prog_Action, $UM_WAIT_DATE, $UM_DEIN_DATE, $UM_MATRIC_DATE,
       #MAX_MAT_WAC, #MAX_MAT_WAP, #MAX_GMAT_ANALY, #MAX_GMAT_ANALYW, #MAX_GMAT_QUAN, #MAX_GMAT_VERB
       ,&C.ACAD_LOAD_APPR, $UM_DISCONTINUE_DATE, $Email_Hom_Addr,$Ethnic_group, $Hisp_latino, $Multi_Race, $UM_ETH_GRP_DESCR
       ,&B.APPL_FEE_TYPE, &C.REQ_TERM,
        &B.RECRUITER_ID,#nl_index,#MAX_SAT_ERWS, #MAX_SAT_MSS
       )
	END-SQL
 End-Procedure

!***********************************************************************! ??1004
! Scan Student Career Term Table                                        ! ??1004
!***********************************************************************! ??1004

begin-procedure Scan_Student_Car_Term                                    !??1004
Let #Student_Car_term_no = 0                                             !??1004
let $fully_enrl_dt = '01-JAN-1901'
begin-select                                                             !??1004
STUCAR.REG_CARD_DATE,  
stucar.fully_enrl_dt                                                  !??1004
rownum &Student_Car_term_no                                              !??1004
  Let #Student_Car_term_no = &Student_Car_term_no                        !??1004
  Let $Fully_enrl_dt = &stucar.fully_enrl_dt                             !??1004
FROM PS_STDNT_CAR_TERM STUCAR                                            !??1004
WHERE STUCAR.EMPLID = &A.EMPLID                                          !??1004
AND STUCAR.INSTITUTION = &B.INSTITUTION                                  !??1004
AND STUCAR.ACAD_CAREER = &B.ACAD_CAREER                                  !??1004 
AND STUCAR.STRM = &C.ADMIT_TERM                                          !??1004
end-select
end-procedure
!***********************************************************************
! Scan Student and Admissions Stack from old to new
!***********************************************************************
begin-procedure Scan_Em_all
	
	Let #Max_appl_prog_nbr = 0
	Let $Found_Defer_date = '01-JAN-1901'    
	Let #found_Defer_effseq = 0                              
	Let $Found_Defer_term = '0000'                                         
  Let $Found_Defer_plan = ' '
	Let $Found_Defer_subplan = ' '
	Let $Found_Defer_prgstat = ' '
	Let $Found_Defer_progact = ' '
	Let $Found_Defer_prgreas = ' '
	Let $Found_defer = 'N'
	
	Let $Top_date_last_term = '01-JAN-1901'
	Let #Top_seq_last_term = 0
	Let $Top_plan_last_term = ' '
	Let $Top_subplan_last_term = ' '
	Let $Top_prgstat_last_term = ' '
	Let $Top_progact_last_term = ' '
	Let $Top_prgreas_last_term = ' '
	
	Let $Exists_Term_After_Defer = 'N'
	Let $last_term = '0000'
	
	Let $Top_action_date_last_term = '01-JAN-1901'
  let $NET_CONFIRM_PROG_STATUS = ' '
  Let $NET_CONFIRM_PROG_ACTION = ' '
  Let $Net_Confirm_ADM_APPL_NBR = '0000000'
  
  Let $First_Prog_Action = ' '                                           
	Let $First_Prog_Action_date = '01-JAN-1901'    
	
  Let $ADMT_PROG1 = 'N'
	Let $ADMT_PROG2 = 'N'
	let $ADMT_PROG3 = 'N'
	let $ADMT_PROG4 = 'N'
	Let $COND_PROG1 = 'N'
	Let $COND_PROG2 = 'N'
	let $COND_PROG3 = 'N'
	let $COND_PROG4 = 'N'
	Let $APPL_PROG1 = 'N'
	Let $APPL_PROG2 = 'N'
	let $APPL_PROG3 = 'N'
	let $APPL_PROG4 = 'N'
	Let $DEIN_PROG1 = 'N'
	Let $DEIN_PROG2 = 'N'
	let $DEIN_PROG3 = 'N'
	let $DEIN_PROG4 = 'N'
	Let $WADM_PROG1 = 'N'
	Let $WADM_PROG2 = 'N'
	let $WADM_PROG3 = 'N'
	let $WADM_PROG4 = 'N'
	Let $DENY_PROG1 = 'N'
	Let $DENY_PROG2 = 'N'
	let $DENY_PROG3 = 'N'
	let $DENY_PROG4 = 'N'
	Let $RECN_PROG1 = 'N'
	Let $RECN_PROG2 = 'N'
	let $RECN_PROG3 = 'N'
	let $RECN_PROG4 = 'N'
	Let $WAPP_PROG1 = 'N'
	Let $WAPP_PROG2 = 'N'
	let $WAPP_PROG3 = 'N'
	let $WAPP_PROG4 = 'N'
	
!           This loop finds critical dates that match the student career number 
	Let $cancel_row_date = '01-JAN-1901'
	Let $matr_row_date = '01-JAN-1901'
	Let $defer_row_date = '01-JAN-1901'
	
! Look in either student or admissions	
if	&datasource = 'ST'                                                  !??0910
Begin-Select
cnx.emplid, 
cnx.acad_career, 
cnx.adm_appl_nbr, 
cnx.appl_prog_nbr, 
cnx.stdnt_car_nbr,
cnx.effdt, 
cnx.effseq, 
cnx.institution, 
cnx.acad_prog, 
cnx.prog_status, 
cnx.prog_action, 
cnx.action_dt, 
cnx.prog_reason, 
cnx.admit_term 
!cnx.datasource

   if &CNX.PROG_STATUS = 'CN'
   	let $cancel_row_date = &CNX.EFFDT 
   end-if
   if &CNX.PROG_ACTION = 'MATR'
  	let $matr_row_date = &CNX.EFFDT
  end-if
 
 if &CNX.PROG_ACTION = 'DEFR'
  	let $defer_row_date = &CNX.EFFDT
  end-if
  
  if &cnx.prog_action = 'DISC'                                        ! REPORT-170 PSA 04/14 **** latest date like the rest
  	  let $UM_DISCONTINUE_DATE = &cnx.ACTION_DT                       ! REPORT-170 PSA 04/14 ****
  end-if                                                              ! REPORT-170 PSA 04/14 ****
                    
FROM 
 PS_ACAD_PROG CNX
 WHERE 
 CNX.INSTITUTION = &B.INSTITUTION
AND CNX.ACAD_CAREER = &B.ACAD_CAREER
AND CNX.EMPLID = &A.EMPLID
AND CNX.ADMIT_TERM = &C.ADMIT_TERM
AND CNX.STDNT_CAR_NBR = &C.STDNT_CAR_NBR
AND CNX.EFFDT <= &Recalculated_input_date
order by cnx.effdt  , cnx.effseq  
end-select
else                                                                    !??0910

Begin-Select                                                            !??0910 start
acnx.emplid, 
acnx.acad_career, 
acnx.adm_appl_nbr, 
acnx.appl_prog_nbr, 
acnx.effdt, 
acnx.effseq, 
acnx.institution, 
acnx.acad_prog, 
acnx.prog_status, 
acnx.prog_action, 
acnx.action_dt, 
acnx.prog_reason, 
acnx.admit_term 
!cnx.datasource

   if &ACNX.PROG_STATUS = 'CN'
   	let $cancel_row_date = &ACNX.EFFDT 
   end-if
   if &ACNX.PROG_ACTION = 'MATR'
  	let $matr_row_date = &ACNX.EFFDT
  end-if
 ! if &CNX.PROG_ACTION = 'DEFR' or &CNX.PROG_ACTION = 'DDEF'
 if &ACNX.PROG_ACTION = 'DEFR'
  	let $defer_row_date = &ACNX.EFFDT
  end-if
 if &acnx.prog_action = 'DISC'                                        ! REPORT-170 PSA 04/14 **** latest date like the rest
     let $UM_DISCONTINUE_DATE = &acnx.ACTION_DT                       ! REPORT-170 PSA 04/14 
 end-if                                                               ! REPORT-170 PSA 04/14 

FROM 
 PS_ADM_APPL_PROG ACNX
 WHERE 
 ACNX.INSTITUTION = &B.INSTITUTION
AND ACNX.ACAD_CAREER = &B.ACAD_CAREER
AND ACNX.EMPLID = &A.EMPLID
AND ACNX.ADMIT_TERM = &C.ADMIT_TERM
AND ACNX.ADM_APPL_NBR = &B.ADM_APPL_NBR
AND ACNX.EFFDT <= &Recalculated_input_date
order by acnx.effdt  , acnx.effseq  
end-select
end-if                                                                  !??0910 end
	
! most dates are set here - student career number is not always a factor
	                        
Begin-Select
x.emplid, 
x.acad_career, 
x.adm_appl_nbr, 
x.appl_prog_nbr, 
x.stdnt_car_nbr,
xplus.adm_appl_complete,
xplus.adm_appl_cmplt_dt,
xplus.adm_appl_dt,
x.effdt, 
x.effseq, 
x.institution, 
x.acad_prog, 
!x.descr_prog, 
x.prog_status, 
x.prog_action, 
x.action_dt, 
x.prog_reason, 
x.admit_term, 
x.exp_grad_term, 
x.req_term, 
x.acad_load_appr, 
x.campus, 
x.acad_prog_dual, 
x.joint_prog_appr, 
x.acad_plan, 
!x.acad_plan_type, 
!x.plan_descr, 
xplan.acad_plan_type
xplan.descr
x.declare_dt, 
x.plan_sequence, 
nvl(x.acad_sub_plan,' ') &X.ACAD_SUB_PLAN, 
!x.acad_subplan_type, 
!x.um_subpln_descr, 
nvl(xsub.acad_subplan_type,' ') &XSUB.ACAD_SUBPLAN_TYPE,
nvl(xsub.descr,' ') &XSUB.DESCR,
!x.row_check,
!x.row_count3
CASE WHEN (row_number () over ( partition BY x.emplid 
 , x.acad_career 
 , x.adm_appl_nbr 
  ORDER BY x.effdt DESC 
  , x.effseq DESC nulls LAST)) = 1 THEN 'Y' ELSE 'N' END &Row_check,
!LEAD (X.PROG_STATUS,1,' ') OVER ( order by x.effdt, x.effseq) as &Next_PROG_STATUS,
!LEAD (X.EFFDT,1,'01-JAN-1901') OVER (order by x.effdt, x.effseq) as &Next_EFFDT,
MAX(X.EFFDT) OVER (partition by x.institution, x.acad_career, x.adm_appl_nbr, x.appl_prog_nbr, x.emplid) as &MAXEFFDT,
MAX(X.EFFSEQ) OVER (partition by x.institution, x.acad_career, x.adm_appl_nbr, x.appl_prog_nbr, x.emplid, x.effdt) as &MAXEFFSEQ,
x.datasource,
(SELECT count(*) FROM ps_acad_prog qtz 
     WHERE qtz.emplid = x.emplid 
     and qtz.institution = x.institution
     and qtz.admit_term = x.admit_term
     AND qtz.acad_career = x.acad_career 
     AND qtz.adm_appl_nbr = x.adm_appl_nbr 
     AND qtz.appl_prog_nbr = x.appl_prog_nbr 
     AND qtz.prog_status = x.prog_status 
     AND qtz.prog_action = x.prog_action
     and qtz.action_dt = x.action_dt) as &itexists

   if &X.APPL_PROG_NBR > #Max_appl_prog_nbr 
   	   and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR 
    	  and &X.ADMIT_TERM <= &C.ADMIT_TERM  
     	Let #Max_appl_prog_nbr = &X.APPL_PROG_NBR
   end-if

   if  (&X.PROG_ACTION = 'ADMT' or &X.PROG_ACTION = 'COND')    
   	  	and  &X.APPL_PROG_NBR = &C.APPL_PROG_NBR       
      	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
      	and &X.ADMIT_TERM <= &C.ADMIT_TERM  
!      if $First_Prog_Action_date = '01-JAN-1901'
    	Let $First_Prog_Action = 'ADMT'                                      
    	Let $First_Prog_Action_date = &x.ACTION_DT 
!      end-if                     
   end-if                                                                 
  !          <<Deferred>>
!  if (&X.prog_action = 'DEFR'  or &X.prog_action = 'DDEF')  
  	if &X.prog_action = 'DEFR'   
   	  	and  &X.APPL_PROG_NBR = &C.APPL_PROG_NBR       
      	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
       	and (
      	&X.DATASOURCE = 'AD' 
      	or &X.DATASOURCE = &DATASOURCE
      	)
    	  	let $UM_DEFER_DATE = &X.ACTION_DT                            
  end-if                                                                 
  !        <<Denied>>   (only look on admissions stack)    (changed this)              
  if &X.PROG_ACTION = 'DENY'                                         
  	and  &X.APPL_PROG_NBR = &C.APPL_PROG_NBR       
   	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
  	and &X.EFFDT = &MAXEFFDT                                        
  	and &X.EFFSEQ = &MAXEFFSEQ     
  	and &X.DATASOURCE = 'AD'                                   
  	let $UM_DENY_DATE = &x.ACTION_DT                                 
  end-if                                                                 

            

 	
 	if  (&X.ADMIT_TERM <= &C.ADMIT_TERM    
 		and &X.ADM_APPL_NBR = &B.ADM_APPL_NBR and &X.DATASOURCE = 'AD' )
 		or ( &X.ADMIT_TERM = &C.ADMIT_TERM and &X.STDNT_CAR_NBR = &C.STDNT_CAR_NBR and &X.DATASOURCE = 'ST')
 !		and (&X.ADMIT_TERM = &C.ADMIT_TERM or &X.DATASOURCE = 'AD')
  evaluate  &X.PROG_ACTION    
   when = 'ADMT'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $ADMT_PROG1 = 'Y'
   		break
   	when = 1
   		let $ADMT_PROG2 = 'Y'
   	when = 2
   		let $ADMT_PROG3 = 'Y'
   	when = 3
   		let $ADMT_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'COND'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $COND_PROG1 = 'Y'
   		break
   	when = 1
   		let $COND_PROG2 = 'Y'
   	when = 2
   		let $COND_PROG3 = 'Y'
   	when = 3
   		let $COND_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'APPL'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $APPL_PROG1 = 'Y'
   		break
   	when = 1
   		let $APPL_PROG2 = 'Y'
   	when = 2
   		let $APPL_PROG3 = 'Y'
   	when = 3
   		let $APPL_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'DEIN'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $DEIN_PROG1 = 'Y'
   		break
   	when = 1
   		let $DEIN_PROG2 = 'Y'
   	when = 2
   		let $DEIN_PROG3 = 'Y'
   	when = 3
   		let $DEIN_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'WADM'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $WADM_PROG1 = 'Y'
   		break
   	when = 1
   		let $WADM_PROG2 = 'Y'
   	when = 2
   		let $WADM_PROG3 = 'Y'
   	when = 3
   		let $WADM_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'DENY'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $DENY_PROG1 = 'Y'
   		break
   	when = 1
   		let $DENY_PROG2 = 'Y'
   	when = 2
   		let $DENY_PROG3 = 'Y'
   	when = 3
   		let $DENY_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'RECN'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $RECN_PROG1 = 'Y'
   		break
   	when = 1
   		let $RECN_PROG2 = 'Y'
   	when = 2
   		let $RECN_PROG3 = 'Y'
   	when = 3
   		let $RECN_PROG4 = 'Y'
   	end-evaluate
   	break
   when = 'WAPP'
   	evaluate &X.APPL_PROG_NBR
   	when = 0
   		let $WAPP_PROG1 = 'Y'
   		break
   	when = 1
   		let $WAPP_PROG2 = 'Y'
   	when = 2
   		let $WAPP_PROG3 = 'Y'
   	when = 3
   		let $WAPP_PROG4 = 'Y'
   	end-evaluate
   	break
  end-evaluate 

 end-if

 !       <<Defer Action >>
!  if (&X.PROG_ACTION = 'DEFR' or ( &X.PROG_ACTION = 'DDEF' and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR))
  if &X.PROG_ACTION = 'DEFR' 
   	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
   	and &X.ADMIT_TERM <= &C.ADMIT_TERM
  	and &X.DATASOURCE = 'AD'
  	Let $Found_Defer = 'Y'                                              
  	Let $Found_defer_date = &X.effdt
  	Let #found_defer_effseq = &x.effseq                                 
  	Let $Found_defer_term = &X.ADMIT_TERM     
    Let $Found_defer_plan = &X.ACAD_PLAN
    Let $Found_defer_subplan = &X.ACAD_SUB_PLAN
    Let $Found_defer_prgstat = &X.PROG_STATUS
    Let $Found_defer_progact = &X.PROG_ACTION
    Let $Found_defer_prgreas = &X.PROG_REASON
  end-if      
   if &X.ADMIT_TERM < &C.ADMIT_TERM             
  	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
  	and &X.DATASOURCE = 'AD'
   	and (&X.DATASOURCE = 'AD' or &X.DATASOURCE = &DATASOURCE)
    let #top_seq_last_term = &X.EFFSEQ                               
    let $Top_action_date_last_term = &X.ACTION_DT                    
    let $Last_term = &X.ADMIT_TERM
    Let $Top_plan_last_term = &X.ACAD_PLAN
    Let $Top_subplan_last_term = &X.ACAD_SUB_PLAN
    Let $Top_prgstat_last_term = &X.PROG_STATUS
    Let $Top_progact_last_term = &X.PROG_ACTION
    Let $Top_prgreas_last_term = &X.PROG_REASON

  end-if               
                                                 
  if $Found_Defer = 'Y' and &X.ADMIT_TERM > $Found_Defer_term
  	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR   
  	and &X.DATASOURCE = 'AD'
  	Let $Exists_Term_After_Defer = 'Y'
  end-if        
    !           <<Applied>>
    if 
    	$UM_APP_DATE = '01-JAN-1901' 	and 
    	    &X.ADMIT_TERM <= &C.ADMIT_TERM   
    	  	and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR 
    	  	and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR
    	  	and &x.datasource = 'AD'
 	    Let $UM_APP_DATE = &XPLUS.ADM_APPL_DT
    end-if                   
     !      << Application Complete>>                
  	if &XPLUS.ADM_APPL_COMPLETE = 'Y'                
  		   and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR 
  		   and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  		   AND &X.ADMIT_TERM = &C.ADMIT_TERM                        
  		if $UM_COMPLETE_DATE = '01-JAN-1901' 
  		  Let $UM_COMPLETE_DATE = &XPLUS.ADM_APPL_CMPLT_DT                 
  	  end-if
   	end-if                                                               
  !          <<Admitted>>
  if (&X.PROG_STATUS = 'AD' or                                        
  	 &X.PROG_STATUS = 'PM' or                                        
  	 &X.PROG_STATUS = 'AC'  )
	   and &X.ADMIT_TERM <= &C.ADMIT_TERM 
	   and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR  
	   and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR     
	   and &X.DATASOURCE = 'AD'                                 
  	if $UM_ADMIT_DATE = '01-JAN-1901'                                  
  	 let $UM_ADMIT_DATE = &X.ACTION_DT                               
    end-if                                                               
  end-if                                                                 
  !          <<WaitList Date >>
  if (&X.prog_action = 'WAIT' or
  	 &X.prog_action = 'WAOF')
  	 and  &X.ADMIT_TERM <= &C.ADMIT_TERM  
  	 and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR  
 	   and ( &X.ADM_APPL_NBR = &C.ADM_APPL_NBR or &X.ADM_APPL_NBR <= '' )  
 !	    if $UM_WAIT_DATE = '01-JAN-1901'                                         
  	 	let $UM_WAIT_DATE = &X.ACTION_DT
 ! 	  end-if
  end-if
  !          <<DEIN Date >>
  if (&X.prog_action = 'DEIN' 
   	 and   &X.ADMIT_TERM <= &C.ADMIT_TERM  
   	 and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR 
 	   and (&X.ADM_APPL_NBR = &C.ADM_APPL_NBR or &X.ADM_APPL_NBR <= '' )  )
 	   or (&X.prog_action = 'DEIN' and &X.DATASOURCE = 'ST'
 	   and &X.ADMIT_TERM = &C.ADMIT_TERM )
 	!    if $UM_DEIN_DATE = '01-JAN-1901'                                          
  	 	let $UM_DEIN_DATE = &X.ACTION_DT
  !	  end-if
  end-if
  !          <<MATRIC Date >>
  if &X.prog_action = 'MATR' 
  	   	 and &X.ADMIT_TERM <= &C.ADMIT_TERM  
!  	   	 and (&X.APPL_PROG_NBR = &C.APPL_PROG_NBR) 
  ! 	 	   and (&X.ADM_APPL_NBR = &C.ADM_APPL_NBR or &X.ADM_APPL_NBR <= '' or &X.APPL_PROG_NBR = &C.APPL_PROG_NBR or &DATASOURCE = 'ST')   
   	 	   and
   	 	    (
   	 	   (&X.ADM_APPL_NBR = &C.ADM_APPL_NBR and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR) 
   	 	    or (&X.DATASOURCE = 'ST' AND &X.ADMIT_TERM = &C.ADMIT_TERM))   
      	 	let $UM_MATRIC_DATE = &X.ACTION_DT
  end-if
   !          <<Gross Confirmed>>    (same as net confirmed here)
 if (&X.prog_status = 'PM' and &X.prog_action <> 'ACTI' )      
   	 and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR and &X.ADMIT_TERM <= &C.ADMIT_TERM 
   	 and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR 
   	 and &X.DATASOURCE = 'AD'
   if $UM_GROSSCONFIRM_DATE = '01-JAN-1901'  or $UM_GROSSCONFIRM_DATE > &X.ACTION_DT                            
  	  let $UM_GROSSCONFIRM_DATE = &X.ACTION_DT                       
   end-if                                                                
  end-if                   
  
   !      <<Gross Confirm>>
  if (( &x.prog_status = 'AC' and &x.prog_action = 'MATR' ) or     
!  	 (&x.prog_status = 'AC' and (&x.prog_action = 'DEFR' or &x.prog_action = 'DDEF'))  )
  	 (&x.prog_status = 'AC' and &x.prog_action = 'DEFR' )  )
  	 and &X.ADMIT_TERM = &C.ADMIT_TERM 
  	 and &X.DATASOURCE = 'ST'        
    if $UM_GROSSCONFIRM_DATE = '01-JAN-1901'                               
    	Let $UM_GROSSCONFIRM_DATE = &x.ACTION_DT                       
    end-if                                                               
  end-if                                                                 

  !          <<Net Confirmed>>     
     
  if ((&X.prog_status = 'PM' and &X.prog_action <> 'ACTI' )        
  	   	 and &X.ADM_APPL_NBR = &C.ADM_APPL_NBR and &X.ADMIT_TERM <= &C.ADMIT_TERM 
  	   	 and &X.APPL_PROG_NBR = &C.APPL_PROG_NBR 
  	   	 )
  	   	 or  (
  	   	 (( &X.prog_action = 'MATR' and $matr_row_date > $cancel_row_date and $matr_row_date > $UM_DISCONTINUE_DATE)  ! REPORT-170 PSA 04/14 
  	   	  or                                                               ! **** REPORT-170 PSA 04/14 ****
!  	     ((&X.prog_action = 'DEFR' or &X.prog_action = 'DDEF') and $defer_row_date > $cancel_row_date))  
  	     (&X.prog_action = 'DEFR' and $defer_row_date > $cancel_row_date 
  	        and $UM_GROSSCONFIRM_DATE <> '01-JAN-1901' and $defer_row_date > $UM_DISCONTINUE_DATE)                    ! REPORT-170 PSA 04/14 
  	     )  
!          AND &DATASOURCE = 'ST' 
!          AND &X.STDNT_CAR_NBR = &C.STDNT_CAR_NBR 
         AND ((&itexists = 0 and &X.STDNT_CAR_NBR = &C.STDNT_CAR_NBR) or &X.DATASOURCE = 'ST')
  	   	 AND &X.ADMIT_TERM = &C.ADMIT_TERM 
  	   	 AND &X.EFFDT <= &Recalculated_input_date
  	   	 )

  	if $UM_NETCONFIRM_DATE = '01-JAN-1901' or $UM_NETCONFIRM_DATE > &X.ACTION_DT
  	 let $UM_NETCONFIRM_DATE = &X.ACTION_DT         
  	 let $Net_confirm_prog_status = &X.prog_status
  	 let $Net_confirm_Prog_action = &X.PROG_ACTION 
  	 Let $Net_Confirm_ADM_APPL_NBR = &X.ADM_APPL_NBR                
    end-if                                                               
   !                            <<Confirmed & Enrolled >>                
    if #student_car_term_no > 0                                       ! From scan_student_car_term                        
    	if $UM_ENROLL_DATE = '01-JAN-1901'
    		let $UM_ENROLL_DATE = $Fully_enrl_dt                          ! From scan_student_car_term                    
   	end-if   
    !                                         <<No Decision>>  Part 1                  
   	  if $UM_NODECISION_DATE = '01-JAN-1901'	and
    		 (&X.prog_status = 'PM' and &X.prog_action <> 'ACTI' )
    		let $UM_NODECISION_DATE = &X.ACTION_DT
    	end-if
    end-if
  end-if                                                                
  !          << DISC Date >>                                            !??0611 04/30 PSA
 ! if &x.prog_action = 'DISC'                                           ! 
 ! 	and &x.admit_term = &C.admit_term                                   !  
 ! 	if $UM_DISCONTINUE_DATE = '01-JAN-1901'                             !  
 ! 	  let $UM_DISCONTINUE_DATE = &x.ACTION_DT                           !  
 ! 	 end-if                                                             !  
 ! end-if                                                               !  
  !         <<< POTENTIAL LAST ACTION >>>>>
  !
    !        <<Administrative Withdrwal incomplete>> (Last action) 
  if &X.PROG_ACTION = 'WADM' and &X.PROG_REASON = 'INC'
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  	AND &X.EFFDT = &MAXEFFDT
  	AND &X.EFFSEQ = &MAXEFFSEQ
  	let $UM_WADMINC_DATE = &X.ACTION_DT
	    !                                         <<No Decision>>  Part 2                  
   		let $UM_NODECISION_DATE = &X.ACTION_DT
   end-if
  if &X.PROG_ACTION = 'WAPP' and &X.PROG_REASON = 'AAPP'         
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  	and &X.EFFDT = &MAXEFFDT
  	and &X.EFFSEQ = &MAXEFFSEQ
  	let $UM_WAPPINC_DATE = &X.ACTION_DT
    !                                         <<No Decision>>  Part 3                  
 		let $UM_NODECISION_DATE = &X.ACTION_DT
  end-if
   !        <<Administrative Withdrwal total>>                            
  if &X.PROG_ACTION = 'WADM'      
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR

  	and (&X.DATASOURCE = 'AD'
  	 or (&X.STDNT_CAR_NBR = &C.STDNT_CAR_NBR and &X.ADMIT_TERM = &C.ADMIT_TERM) )  
  	and &X.EFFDT = &MAXEFFDT     
  	and &X.EFFSEQ = &MAXEFFSEQ                           
  	let $UM_WADMTOT_DATE = &X.ACTION_DT           
  end-if                                                                 
  !       <<Applicant withdrawal total>>
  if &X.PROG_ACTION = 'WAPP'                                   
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  	and &X.EFFDT = &MAXEFFDT
  	and &X.EFFSEQ = &MAXEFFSEQ
  	and &X.ADMIT_TERM = &C.ADMIT_TERM
  	let $UM_WAPPTOTAL_DATE = &X.ACTION_DT
  end-if
  !       <<Admitted and withdrawn>>
  if &X.PROG_STATUS = 'CN'           
  	and  (&X.PROG_REASON = 'AADM' or &X.PROG_REASON = 'PMAT' or &X.PROG_REASON = 'PMNO'
  	or &X.PROG_REASON = 'DEFR' or &X.PROG_REASON = 'WFDA' or &X.PROG_REASON = 'APRM'
  	or &X.PROG_REASON = 'NSHW' or &X.PROG_REASON = 'WMRG' or &X.PROG_REASON = 'WMRA'
  	or &X.PROG_REASON = 'AUTO' or &X.PROG_REASON = 'DDEF' )
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  	and &X.EFFDT = &MAXEFFDT
  	and &X.EFFSEQ = &MAXEFFSEQ
  	let $UM_WADMADMIT_DATE = &X.ACTION_DT
  end-if
  !       <<No Show>>
  if &X.PROG_STATUS = 'CN' and &X.PROG_REASON = 'NSHW'
  	AND &X.INSTITUTION = &B.INSTITUTION
  	AND &X.ACAD_CAREER = &B.ACAD_CAREER
  	AND &X.EMPLID = &A.EMPLID
  	AND &X.ADM_APPL_NBR = &B.ADM_APPL_NBR
  	AND &X.APPL_PROG_NBR = &C.APPL_PROG_NBR
  	and &X.EFFDT = &MAXEFFDT
  	and &X.EFFSEQ = &MAXEFFSEQ
    Let $UM_NOSHOW_DATE = &X.ACTION_DT
  end-if


FROM 
( SELECT a.emplid 
 , a.acad_career 
 , a.stdnt_car_nbr 
 , a.adm_appl_nbr 
 , a.appl_prog_nbr 
 , a.effdt 
 , a.effseq 
 , a.institution 
 , a.acad_prog 
 , a.prog_status 
 , a.prog_action 
 , a.action_dt 
 , a.prog_reason 
 , a.admit_term 
 , a.exp_grad_term 
 , a.req_term 
 , a.acad_load_appr 
 , a.campus 
 , a.acad_prog_dual 
 , a.joint_prog_appr 
 , b.acad_plan 
 , b.declare_dt 
 , b.plan_sequence 
 , c.acad_sub_plan 
 ,'AD' as DATASOURCE
  FROM ps_adm_appl_prog a 
  , ps_adm_appl_plan b 
  , ps_adm_appl_sbplan c 
 WHERE b.emplid(+) = a.emplid 
   AND b.acad_career(+) = a.acad_career 
   AND b.adm_appl_nbr(+) = a.adm_appl_nbr 
   AND b.appl_prog_nbr(+) = a.appl_prog_nbr 
   AND b.effdt(+) = a.effdt 
   AND b.effseq(+) = a.effseq 
   AND c.emplid(+) = b.emplid 
   AND c.acad_career(+) = b.acad_career 
   AND c.adm_appl_nbr(+) = b.adm_appl_nbr 
   AND c.appl_prog_nbr(+) = b.appl_prog_nbr 
   AND c.effdt(+) = b.effdt 
   AND c.effseq(+) = b.effseq 
   AND c.acad_plan(+) = b.acad_plan 

  UNION 
 SELECT a2.emplid 
 , a2.acad_career 
 , a2.stdnt_car_nbr 
 , a2.adm_appl_nbr 
 , a2.appl_prog_nbr 
 , a2.effdt 
 , a2.effseq 
 , a2.institution 
 , a2.acad_prog 
 , a2.prog_status 
 , a2.prog_action 
 , a2.action_dt 
 , a2.prog_reason 
 , a2.admit_term 
 , a2.exp_grad_term 
 , a2.req_term 
 , a2.acad_load_appr 
 , a2.campus 
 , a2.acad_prog_dual 
 , a2.joint_prog_appr 
 , b2.acad_plan 
 , b2.declare_dt 
 , b2.plan_sequence 
 , c2.acad_sub_plan 
 ,'ST'
  FROM ps_ACAD_prog a2 
  , ps_ACAD_plan b2 
  , ps_ACAD_subplan c2 
 WHERE b2.emplid(+) = a2.emplid 
   AND b2.acad_career(+) = a2.acad_career 
   AND b2.stdnt_car_nbr(+) = a2.stdnt_car_nbr 
   AND b2.effdt(+) = a2.effdt 
   AND b2.effseq(+) = a2.effseq 
   AND c2.emplid(+) = b2.emplid 
   AND c2.acad_career(+) = b2.acad_career 
   AND c2.stdnt_car_nbr(+) = b2.stdnt_car_nbr 
   AND c2.acad_plan(+) = b2.acad_plan 
   AND c2.effdt(+) = b2.effdt 
   AND c2.effseq(+) = b2.effseq 
   AND c2.acad_plan(+) = b2.acad_plan 

    ) X, ps_acad_plan_tbl XPLAN , ps_acad_prog_tbl XPROG, ps_acad_subpln_tbl XSUB, PS_ADM_APPL_DATA XPLUS 
 WHERE x.institution = xplan.institution(+) 
   AND x.acad_plan = xplan.acad_plan(+) 
   AND ( xplan.effdt = ( 
 SELECT MAX(xplan_ed.effdt) 
  FROM ps_acad_plan_tbl xplan_ed 
 WHERE xplan_ed.institution = xplan.institution 
   AND xplan_ed.acad_plan = xplan.acad_plan 
   AND xplan_ed.eff_status = 'A') 
    OR xplan.effdt IS NULL) 
   AND x.institution = xprog.institution(+) 
   AND x.acad_prog = xprog.acad_prog(+) 
   AND ( xprog.effdt = ( 
 SELECT MAX(xprog_ed.effdt) 
  FROM ps_acad_prog_tbl xprog_ed 
 WHERE xprog_ed.institution = xprog.institution 
   AND xprog_ed.acad_prog = xprog.acad_prog 
   AND xprog_ed.eff_status = 'A') 
    OR xprog.effdt IS NULL) 
   AND x.institution = xsub.institution(+) 
   AND x.acad_plan = xsub.acad_plan(+) 
   AND x.acad_sub_plan = xsub.acad_sub_plan(+) 
   AND ( xsub.effdt = ( 
 SELECT MAX(xsub_ed.effdt) 
  FROM ps_acad_subpln_tbl xsub_ed 
 WHERE xsub_ed.institution = xsub.institution 
   AND xsub_ed.acad_plan = xsub.acad_plan 
   AND xsub_ed.acad_sub_plan = xsub.acad_sub_plan 
   AND xsub_ed.eff_status = 'A') 
    OR xsub.effdt IS NULL)
 AND xplus.emplid(+) = x.emplid
     and xplus.acad_career(+) = x.acad_career
     and xplus.adm_appl_nbr(+) = x.adm_appl_nbr
     and xplus.institution(+) = x.institution
AND X.INSTITUTION = &B.INSTITUTION
AND X.ACAD_CAREER = &B.ACAD_CAREER
AND X.EMPLID = &A.EMPLID
AND ( X.EFFDT <= &Recalculated_input_date or ( x.datasource = 'AD' and  X.EFFDT <= $input_date))
order by x.effdt  , x.effseq  
end-select

  !        <<Administrative Withdrwal incomplete>> (Last action) 

   
  !      <<Applicant Withdrawal deferral>>
  if  $Found_Defer = 'Y' and $Found_defer_term >= $last_term 
  	!and &X.DATASOURCE = 'AD'
  	if  $Found_defer_term = $last_term 
  		 and $Exists_Term_After_Defer = 'Y'                                  ! Defer out
  		Let $UM_WAPPDEF_DATE = $Found_Defer_date
  		Let $UM_WAPPDEF_TERM = $last_term
  		Let $UM_WAPPDEF_PLAN = $Top_plan_last_term
  		Let $UM_WAPPDEF_SUBPLAN = $Top_subplan_last_term
      Let $UM_WAPPDEF_PRGSTAT = $Top_prgstat_last_term
      Let $UM_WAPPDEF_PROGACT = $Top_progact_last_term
      Let $UM_WAPPDEF_PRGREAS = $Top_prgreas_last_term    
  	end-if
  	if  $Found_defer_term > $Last_term                                      ! Defer in
  		and $last_term <> '0000'
  		Let $UM_WAPPDEF_DATE = $Found_Defer_date
  		Let $UM_WAPPDEF_TERM = $Last_term
  		Let $UM_WAPPDEF_PLAN = $Top_plan_last_term
  		Let $UM_WAPPDEF_SUBPLAN = $Top_subplan_last_term
      Let $UM_WAPPDEF_PRGSTAT = $Top_prgstat_last_term
      Let $UM_WAPPDEF_PROGACT = $Top_progact_last_term
      Let $UM_WAPPDEF_PRGREAS = $Top_prgreas_last_term    
  	end-if
  	if $UM_WAPPDEF_TERM = '0000'                                           ! Default (defer out)
  		if $last_term > '0000'
  		Let $UM_WAPPDEF_DATE = $Found_Defer_date
  		Let $UM_WAPPDEF_TERM = $Last_term
  		Let $UM_WAPPDEF_PLAN = $Top_plan_last_term
  		Let $UM_WAPPDEF_SUBPLAN = $Top_subplan_last_term
      Let $UM_WAPPDEF_PRGSTAT = $Top_prgstat_last_term
      Let $UM_WAPPDEF_PROGACT = $Top_progact_last_term
      Let $UM_WAPPDEF_PRGREAS = $Top_prgreas_last_term   

      else
      Let $UM_WAPPDEF_DATE = $Found_Defer_date
  		Let $UM_WAPPDEF_TERM = $Found_defer_term
  		Let $UM_WAPPDEF_PLAN = $Found_defer_plan
  		Let $UM_WAPPDEF_SUBPLAN = $Found_defer_subplan
      Let $UM_WAPPDEF_PRGSTAT = $Found_defer_prgstat
      Let $UM_WAPPDEF_PROGACT = $Found_defer_progact
      Let $UM_WAPPDEF_PRGREAS = $Found_defer_prgreas   

      end-if
  	end-if
  end-if
  ! If you have a record you must have applied somewhere
  if $APPL_PROG1 = 'N' and $APPL_PROG2 = 'N' and $APPL_PROG3 = 'N' and $APPL_PROG4 = 'N'
	    Let $APPL_PROG1 = 'Y'
  end-if
  if $UM_APP_DATE = '01-JAN-1901' and &XPLUS.ADM_APPL_DT > '01-JAN-1901'
		Let $UM_APP_DATE = &XPLUS.ADM_APPL_DT
 		show 'Missing entry for ' &X.EMPLID ' at ' &XPLUS.ADM_APPL_DT
 end-if
  
end-procedure

!***********************************************************************
! Get xlatlongname from good ol PSXLATITEM
!***********************************************************************

begin-procedure get_xlat($in_name,$in_value,:$xlat_val)
Let $xlat_val = ' '
begin-select
xlt.xlatlongname,
  Let $xlat_val = &xlt.xlatlongname
from psxlatitem xlt
where xlt.fieldname = $in_name
and xlt.fieldvalue = $in_value
and xlt.effdt = ( select max(xlt_ed.effdt) from psxlatitem xlt_ed
    where xlt_ed.fieldvalue = xlt.fieldvalue and xlt_ed.fieldname = xlt.fieldname and xlt.effdt <= $_input_date)
end-select	
end-procedure
!***********************************************************************
! Move data from um_appl_ext_bld to um_appl_extract
!***********************************************************************

begin-procedure Blasto_Data
Begin-select
count(*) &CTR_UM_BLD
FROM SYSADM.PS_UM_APPL_EXT_BLD buildies
end-select
if &CTR_UM_BLD > 0	 
	 if $input_Flag2 = 'Y'
    BEGIN-SQL 
    TRUNCATE TABLE PS_UM_appl_EXTRACT
    END-SQL
   else
    begin-sql 
    DELETE  FROM ps_um_appl_extract dxx where dxx.admit_term >= [$Input_Trm1_M] and dxx.admit_term <= [$Input_Term2_M]
    end-sql
  end-if

   BEGIN-SQL 
   COMMIT
   END-SQL
   show 'Extract trimmed.'
   
   BEGIN-SQL
   INSERT INTO PS_UM_appl_EXTRACT ( SELECT * FROM SYSADM.PS_UM_appl_EXT_BLD)
   END-SQL
   
   BEGIN-SQL
   COMMIT
   END-SQL
   show 'Rows inserted from UM_APPL_EXT_BLD.'
  end-if
end-procedure

!***********************************************************************
! SQL-Recover Procedure
!***********************************************************************
Begin-Procedure SQL-Recover

show '$Calling_Procedure => ' $Calling_Procedure
display $SQL-Error
Do Extract_Control('3', 'PS_UM_APPL_EXTRACT','UMAPPEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)

End-Procedure SQL-Recover


!***********************************************************************
!SQC Include Files                                                     *
!***********************************************************************
#include 'stdapi.sqc'		!Update Process API
#include 'datetime.sqc'		!Date and Time Functions
#include 'datemath.sqc'		!Date Manipulation Routines
#include 'curdttim.sqc' 	!Get-Current-DateTime procedure
#include 'tranctrl.sqc'		!Transaction Control
#include 'umextctl.sqc'   !Extract Control



b. PS_UM_STUD_EXTRACT

(PS_UM_STUD_EXT_ARC is better for daily tracking data. The archive table is based on extract and UMSTUEXT uses these 35 tables:

PS_ACAD_GROUP_TBL
PS_ACAD_PLAN
PS_ACAD_PLAN_TBL
PS_ACAD_PROG
PS_ACAD_PROG_TBL
PS_ACAD_SUBPLAN
PS_ACAD_SUBPLN_TBL
PS_ADDRESSES
PS_ADM_APPL_DATA
PS_CITIZENSHIP
PS_CLASS_ATTRIBUTE
PS_CLASS_TBL
PS_COUNTRY_TBL
PS_DEGREE_TBL
PS_DIVERS_ETHNIC
PS_EMAIL_ADDRESSES
PS_ETHNIC_GRP_TBL
PS_EXT_ORG_PRI_VW
PS_EXT_ORG_TBL_ADM
PS_INSTITUTION_TBL
PS_ITEM_SF
PS_NAMES
PS_PERS_NID
PS_PERSONAL_DATA
PS_PROG_RSN_TBL
PS_RESIDENCY_OFF
PS_RESP_RSN_TBL
PS_STDNT_ADVR_HIST
PS_STDNT_CAR_TERM
PS_STDNT_ENRL
PS_STDNT_RESPONSE
PS_STDNT_TEST_COMP
PS_TERM_TBL
PS_TERM_VAL_TBL
PS_UM_ENRL_PIN



c. PS_ACAD_PLAN_TBL

d. PS_TERM_VAL_TBL

e. PS_INSTITUTION_TBL

f. PS_ADMIT_TYPE_TBL

g. PS_LS_SCHL_TYP_TBL

h.Ā PS_RESIDENCY_TBL

i. PS_ACAD_CAR_TBL

j. PSXLATITEM

Fields needed:

a. From PS_UM_APPL_EXT_VW:

        • institution → join table to get e.DESCRSHORT
        • emplid
        • admit_term → join table to get d.DESCR
        • acad_prog
        • acad_prog_descr
        • acad_plan → join table to get c.DESCR
        • acad_career →  join table to get i.DESCR
        • sex → join table to get j.XLATSHORTNAME
        • um_eth_grp_descr
        • admission_res →  join table to get h.DESCRSHORT
        • admit_type → join table to get f.DESCRSHORT
        • birthdate → need to calculate age as of applied term and also categorize age
        • city
        • county
        • state
        • country
        • postal
        • um_app_date→ need to calculate Applied
        • um_admit_date→ need to calculate Admitted
        • um_netconfirm_date→ need to calculate NetConfirmed
        • um_deny_date→ need to calculate Denied
        • last_sch_attend
        • um_last_sch_descr
        • ext_org_id
        • um_ext_orgid_descr
        • um_last_sch_type → join table to get g.DESCR

b. From PS_UM_STUD_EXTRACT:

        • unt_taken_prgrssĀ 

c. From PS_ACAD_PLAN_TBL:

        • DESCR

d. FromĀ PS_TERM_VAL_TBL:

        • DESCR

e. From PS_INSTITUTION_TBL:

        • DESCRSHORT

f. FromĀ PS_ADMIT_TYPE_TBL:

        • DESCRSHORTĀ 

g. From PS_LS_SCHL_TYP_TBL

        • DESCRĀ 

h.Ā From PS_RESIDENCY_TBL

        • DESCRSHORT

i. From PS_ACAD_CAR_TBL

        • DESCRĀ 

j. From PSXLATITEM

        • XLATSHORTNAME (where FIELDNAME= 'SEX')

Calculations:

    • Applied = (case when a.um_app_date > to_date('01/01/1901', 'MM/DD/YYYY') and a.um_app_date <=Ā date_users_pickedĀ then 1 else 0Ā end)Ā 


    • Admitted = (case when a.um_admit_dateĀ Ā > to_date('01/01/1901', 'MM/DD/YYYY') and a.um_admit_dateĀ Ā <=Ā date_users_pickedĀ then 1 else 0Ā end)Ā 


    • NetConfirmed = (case when um_netconfirm_dateĀ > to_date('01/01/1901', 'MM/DD/YYYY') and um_netconfirm_dateĀ <=Ā date_users_pickedĀ then 1 else 0Ā end)Ā 


    • DeniedĀ = (case when a.um_deny_dateĀ Ā > to_date('01/01/1901', 'MM/DD/YYYY') and a.um_deny_dateĀ Ā <=Ā date_users_pickedĀ then 1 else 0Ā end)Ā 


    • Enrolled = (case when a.um_admit_date > to_date('01/01/1901', 'MM/DD/YYYY') and a.um_admit_date <=Ā date_users_pickedĀ and b.unt_taken_prgrss >0 then 1 else 0)Ā Ā 

Problems:

    • Not sure how the calculations for Applied, Admitted, NetConfirmed, Denied, and Enrolled work the best
    • I had issues with duplicated records when I joined tables because I didn't incorporate max(effdt) logic in sub queries,Ā 
    • Data issues- not every institutions use in the same way
SQR code for UMSTUEXT
!************************************************************************
!umstuext.SQR															                      				*
!************************************************************************
! DESCRIPTION: Simple  Student Table Extract                          	*
! OWNER:    							                                            	*
! FREQUENCY:   Manual					                                      		*
!************************************************************************
! SPECIFICATIONS BY:                           	   	*
! ISSUE:                                                       *
! DATE:                    					                                  	* 
!************************************************************************
! CREATED BY:  Peter Andersen                                           *
! CREATION DT: Jan 6, 2006                                          		*
!************************************************************************
!                      MODIFICATION LOG			                          	*
!****************************************************************************
! Mod #     Programmer  Start Date  End Date    Description                	*
! -----     ----------  ----------  ----------  ------------------------- 	*
! REPORT-57       PSA    03/15/13   04/15/13    Get_Advisor change
! REPORT-193      PSA    09/22/14               Null Acad Level Description *
! REPORT-195      PSA    10/9/14                Revert part of Advisor change*
! REPORT-313      PSA     8/17                  Address logic change        *
!****************************************************************************

#include 'setenv.sqc'   ! Set environment

!***********************************************************************
!        Begin Setup
!***********************************************************************
Begin-Setup
#include 'setup01a.sqc'
#define DLim ';'

declare-variable
 date $input_Date
 date $FiveYearsAgo 
 date $TwoYearsAgo 
 date $Residency_Dt
 text $Row_Check
 date $Declare_dt
 date $Response_Dt
 date $Term_begin_dt
 date $Term_end_dt
end-declare
Load-Lookup Name=State_Descr
     table =PS_STATE_TBL
     key =STATE
     return_Value=DESCR
     where=COUNTRY='USA'
Load-Lookup Name=Country_Descr
     table= PS_COUNTRY_TBL
     key = COUNTRY
     return_Value = DESCR
Load-Lookup Name=Institution_Descr
     table = 'PS_INSTITUTION_TBL INS'
     key = INSTITUTION
     Return_Value = DESCR
     where= 'INS.EFFDT = (select max(ins_ed.effdt) from ps_institution_tbl ins_ed where ins_ed.institution = ins.institution ) AND INS.EFF_STATUS = ''A'''
Load-Lookup Name=Get_Xlat_Academic_Level
     table='psxlatitem xlt'
     key = fieldvalue
     return_value = xlatlongname
     where='xlt.fieldname= ''ACADEMIC_LEVEL'' and xlt.effdt= ( select max(xlt_ed.effdt) from psxlatitem xlt_ed  where xlt_ed.fieldvalue = xlt.fieldvalue and xlt_ed.fieldname = xlt.fieldname and xlt.effdt <= SYSDATE)'
Load-Lookup Name=Get_Xlat_Ethnic_Group
     table='psxlatitem xleg'
     key = fieldvalue
     return_value = xlatlongname
     where='xleg.fieldname= ''ETHNIC_GROUP'' and xleg.effdt= ( select max(xleg_ed.effdt) from psxlatitem xleg_ed  where xleg_ed.fieldvalue = xleg.fieldvalue and xleg_ed.fieldname = xleg.fieldname and xleg.effdt <= SYSDATE)'
End-Setup



!***********************************************************************
! Proc Options(Main);
!***********************************************************************
Begin-Program
   Let $Reporttitle = 'Make Student Reporting Extract'
   let $Reportid = 'umstuext'
   let $first_time = 'Y'
!   BEGIN-SQL
!   ALTER SESSION SET cursor_sharing='SIMILAR'
!   end-sql

   do Stdapi-Init
   do Init-DateTime
   do Get-Current-DateTime
   show 'Get Parameters:'
   if $prcs_process_instance = '' or $prcs_oprid = 'BATCH'
    let $prcs_oprid = 'PANDERSEN'
    let $prcs_run_cntl_id = 'BATCH'
    do Select-Parameters
   else
    do Select-Parameters
   end-if
   Show $Input_Trm1

   if $input_Flag1 = 'Y'
    let $input_date = datenow()
   end-if
  show $input_date
  Let $FiveYearsAgo = dateadd($input_date,'YEAR',-5)
  Let $TwoYearsAgo = dateadd($input_date,'YEAR',-5)
  
!BEGIN-SQL
!ALTER SESSION SET "_optimizer_cost_based_transformation" = ON
!end-sql

  
BEGIN-SELECT 
MAX(ENDA.STRM) &ENDA.STRM
  Let $This_Term  = &ENDA.STRM
FROM PS_TERM_TBL ENDA
WHERE  
ENDA.TERM_END_DT >= $input_date
AND ENDA.TERM_BEGIN_DT <= $input_date
END-SELECT

begin-SELECT
count(*) &GobSTOP
  if &GobStop < 450000
  	show 'Not enough records in PS_PERSONAL_DATA'
  	stop quiet
  	else
  	show &Gobstop ' records in PS_PERSONAL_DATA'
  	end-if    
from PS_PERSONAL_DATA
end-select
  Let $Control_now = edit(datenow(),'yyyy/mm/dd:hh:mi:ssam')
  show $Control_now
  Do Extract_Control('7', 'PS_UM_STUD_EXTRACT','UMSTUEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)

  Do Get_Ranges
!  if $input_Flag2 = 'Y'
!    BEGIN-SQL on-error=SQL-Recover
!    TRUNCATE TABLE PS_UM_STUD_EXTRACT
!    END-SQL
!   else
!    begin-sql on-error=SQL-Recover
!    DELETE  FROM ps_um_stud_extract dxx where dxx.strm >= [$Input_Trm1_M] and dxx.strm <= [$Input_Term2_M]
!    end-sql
!  end-if

!   BEGIN-SQL on-error=SQL-Recover
!   COMMIT
!   END-SQL

!   show 'Table trimmed.'
   BEGIN-SQL
   TRUNCATE TABLE SYSADM.PS_UM_STUD_EXT_BLD
   END-SQL
   Show $Input_Trm1
   Show $Input_Term2
   do List_Students
   do blasto_data
   Do Extract_Control('9', 'PS_UM_STUD_EXTRACT','UMSTUEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)

   BEGIN-SQL on-error=SQL-Recover
   COMMIT
   END-SQL
 	
   do Stdapi-Term
End-Program

!***********************************************************************
!  Page Heading                                       
!***********************************************************************
Begin-Heading 8
! #include 'umstdhdg.sqc'
	print $INSTITUTION_NAME (+1,1) center bold box
   Print 'In Date:'    (+1,1)
   Print $input_Date (,+1) DATE bold
   Print 'Beginning Term: ' (,41)
   Print $Input_Trm1 (,+1) bold
   Print 'Ending Term ' (,+2)
   Print $Input_term2 (,+1) bold
   
End-Heading

!***********************************************************************
!  Procedure  List_Students                                          *
!                                                                      *                    
!***********************************************************************
Begin-Procedure List_Students
Let #STU_COUNT = 0	
Let #Student_Car_term_no = 0                                               
BEGIN-SELECT !loops=1000
STA.EMPLID,
NVL(STA.LAST_NAME,' ') &STA.LAST_NAME,
NVL(STA.FIRST_NAME,' ') &STA.FIRST_NAME,
NVL(STA.MIDDLE_NAME,' ') &STA.MIDDLE_NAME,
NVL(STA.NAME_PREFIX,' ') &STA.NAME_PREFIX,
NVL(STA.NAME_SUFFIX,' ') &STA.NAME_SUFFIX,
NVL(STA.NAME,' ') &STA.NAME,
NVL(STA.ADDRESS1,' ') &STA.ADDRESS1,
NVL(STA.ADDRESS2,' ') &STA.ADDRESS2,
NVL(STA.ADDRESS3,' ') &STA.ADDRESS3,
NVL(STA.ADDRESS4,' ') &STA.ADDRESS4,
NVL(STA.CITY,' ') &STA.CITY,
NVL(STA.STATE,' ') &STA.STATE,
NVL(STA.POSTAL,' ') &STA.POSTAL,
NVL(STA.COUNTY,' ') &STA.COUNTY,
NVL(STA.COUNTRY,' ') &STA.COUNTRY,
NVL(STA.SEX,' ') &STA.SEX,
STA.BIRTHDATE,
NVL(STA.BIRTHPLACE,' ') &STA.BIRTHPLACE,
NVL(STA.BIRTHSTATE,' ') &STA.BIRTHSTATE,
NVL(STA.BIRTHCOUNTRY,' ') &STA.BIRTHCOUNTRY,
NVL(STA.MAR_STATUS,' ') &STA.MAR_STATUS,
NVL(STA.MAR_STATUS_DT,'01-JAN-1901') &STA.MAR_STATUS_DT,
NVL(STA.DT_OF_DEATH,'01-JAN-1901') &STA.DT_OF_DEATH,
NVL(STA.PHONE,' ') &STA.PHONE,
STC.EMPLID,
STC.ACAD_CAREER,
STC.STDNT_CAR_NBR,
STC.ADM_APPL_NBR,
STC.INSTITUTION,
STC.CAMPUS,
STC.APPL_PROG_NBR,
STC.EFFDT,
STC.EFFSEQ,
STC.ACAD_PROG,
STC.PROG_STATUS,
STC.PROG_ACTION,
STC.ACTION_DT,
STC.PROG_REASON,
STC.ADMIT_TERM,
STC.EXP_GRAD_TERM,
STC.REQ_TERM,
STC.ACAD_LOAD_APPR,
STC.COMPLETION_TERM,
STC.ACAD_PROG_DUAL,
STC.JOINT_PROG_APPR,
NVL(STC.DEGR_CHKOUT_STAT,' ') &STC.DEGR_CHKOUT_STAT,
STUCAR.REG_CARD_DATE,  
stucar.fully_enrl_dt,                                                   
stucar.acad_level_bot,
Stucar.acad_level_eot,
stucar.acad_level_proj,
stucar.unt_term_tot,
stucar.grade_points,
stucar.cur_gpa,
stucar.cum_gpa,
stucar.academic_load,
stucar.fa_load,
rownum &Student_Car_term_no,
stucar.unt_taken_prgrss,
stucar.unt_passd_prgrss,
stucar.unt_trnsfr,
stucar.tot_passd_prgrss,
stucar.tot_grade_points,
STUCAR.STRM,
STUCAR.WITHDRAW_CODE,
STUCAR.WITHDRAW_REASON,
STUCAR.WITHDRAW_DATE,
STUCAR.LAST_DATE_ATTENDED,
STUCAR.ACAD_PROG_PRIMARY,
STUCAR.NSLDS_LOAN_YEAR,
STUCAR.OVRD_ACAD_LVL_ALL,
STUCAR.OVRD_ACAD_LVL_PROJ,
STUCAR.ELIG_TO_ENROLL,
STUCAR.OVRD_MAX_UNITS,
STUCAR.MAX_TOTAL_UNIT,
STUCAR.MAX_NOGPA_UNIT,
STUCAR.MAX_AUDIT_UNIT,
STUCAR.MAX_WAIT_UNIT,
STUCAR.MIN_TOTAL_UNIT,
STUCAR.OVRD_BILL_UNITS,
STUCAR.PROJ_BILL_UNT,
STUCAR.UNT_TAKEN_GPA,       !
STUCAR.UNT_PASSD_GPA,
STUCAR.UNT_TAKEN_NOGPA,
STUCAR.UNT_PASSD_NOGPA,
STUCAR.UNT_INPROG_GPA,
STUCAR.UNT_INPROG_NOGPA,
STUCAR.UNT_AUDIT,
STUCAR.TRF_TAKEN_GPA,
STUCAR.TRF_TAKEN_NOGPA,
STUCAR.TRF_PASSED_GPA,
STUCAR.TRF_PASSED_NOGPA,
STUCAR.TRF_GRADE_POINTS,
STUCAR.UNT_TEST_CREDIT,
STUCAR.UNT_OTHER,
STUCAR.UNT_TAKEN_FA,
STUCAR.UNT_PASSD_FA,
STUCAR.UNT_TAKEN_FA_GPA,
STUCAR.GRADE_POINTS_FA,
STUCAR.RESET_CUM_STATS,
STUCAR.TOT_TAKEN_PRGRSS,
STUCAR.TOT_TAKEN_GPA,
STUCAR.TOT_PASSD_GPA,
STUCAR.TOT_TAKEN_NOGPA,
STUCAR.TOT_PASSD_NOGPA,
STUCAR.TOT_INPROG_GPA,
STUCAR.TOT_INPROG_NOGPA,
STUCAR.TOT_AUDIT,
STUCAR.TOT_TRNSFR,
STUCAR.TOT_TEST_CREDIT,
STUCAR.TOT_OTHER,
STUCAR.TOT_CUMULATIVE,
STUCAR.TOT_TAKEN_FA,
STUCAR.TOT_PASSD_FA,
STUCAR.TOT_TAKEN_FA_GPA,
STUCAR.TOT_GRD_POINTS_FA,
STUCAR.FORM_OF_STUDY,
STUCAR.TERM_TYPE,
STUCAR.CLASS_RANK_NBR,
STUCAR.CLASS_RANK_TOT,
STUCAR.SEL_GROUP,
STUCAR.TUIT_CALC_REQ,
STUCAR.TUIT_CALC_DTTM,
STUCAR.FA_STATS_CALC_REQ,
STUCAR.FA_STATS_CALC_DTTM,
STUCAR.FA_ELIGIBILITY,
STUCAR.BILLING_CAREER,
STUCAR.UNIT_MULTIPLIER,
STUCAR.ACAD_YEAR,
STUCAR.ACAD_GROUP_ADVIS,
STUCAR.CUR_RESIDENT_TERMS,
STUCAR.TRF_RESIDENT_TERMS,
STUCAR.CUM_RESIDENT_TERMS,
STUCAR.REFUND_PCT,
STUCAR.REFUND_SCHEME,
STUCAR.PRO_RATA_ELIGIBLE,
STUCAR.ENRL_ON_TRANS_DT,
STUCAR.STATS_ON_TRANS_DT,
STUCAR.FULLY_GRADED_DT,
STUCAR.STUDY_AGREEMENT,
STUCAR.START_DATE,
STUCAR.END_DATE,
STUCAR.MAX_CRSE_COUNT,
STUCAR.REGISTERED,
STUCAR.OVRD_TUIT_GROUP,
STUCAR.OVRD_WDRW_SCHED,
STUCAR.TUITION_RES_TERMS,
STUCAR.OVRD_INIT_ADD_FEE,
STUCAR.OVRD_INIT_ENR_FEE,
STUCAR.TC_UNITS_ADJUST,
STUCAR.LOCK_IN_AMT,
STUCAR.LOCK_IN_DT,
STUCAR.ACAD_CAREER_FIRST,
STUCAR.ACADEMIC_LOAD_DT,
STUCAR.UNTPRG_CHG_NSLC_DT,
STUCAR.SSR_ACTIVATION_DT,
STUCAR.EMPLID,
STUCAR.ACAD_CAREER,
STUCAR.INSTITUTION,
STUCAR.STDNT_CAR_NBR,
NVL(APX.ADM_APPL_CTR,' ') &APX.ADM_APPL_CTR,
NVL(APX.ADMIT_TYPE,' ') &APX.ADMIT_TYPE,
NVL(APX.ADM_APPL_DT,
TO_DATE('01-JAN-1901 ','DD-MON-YYYY')) &APX.ADM_APPL_DT,
NVL(PIN.PIN_NUM,0) &PIN.PIN_NUM,
NVL(PIN.VALIDATED,' ') &PIN.VALIDATED,
NVL(PIN.VALIDATED_DT,TO_DATE('01-JAN-1901 ','DD-MON-YYYY')) &PIN.VALIDATED_DT,
NVL(APX.LAST_SCH_ATTEND,' ') &APX.LAST_SCH_ATTEND,
NVL(APX.GRADUATION_DT,TO_DATE('01-JAN-1901 ','DD-MON-YYYY')) &APX.GRADUATION_DT
 let  $Row_Check = 'N'    
 ! Flag = 'Y' for highest acad_career among career with unt_taken_prgrss > 0 
 ! if only one then Flag = 'Y'
 !do get_calc_units
 DO career_rank(&STUCAR.STRM, &STUCAR.INSTITUTION, &STUCAR.EMPLID, &STUCAR.ACAD_CAREER, $Row_Career_Rank)   
 do MULTI_REG
 if #units_this_career > 0 and $Row_career_rank = 'Y' and &STUCAR.ACAD_CAREER <> 'NCRD'
 	let  $Row_Check = 'Y'
 end-if
 Let #Student_Car_term_no = &Student_Car_term_no                         
 Lookup Get_Xlat_Academic_Level &stucar.acad_level_bot $Acad_Level_bot_descr     ! call get_xlat
 ! REPORT 193 PSA 09/22/14
 If $Acad_Level_bot_descr <= ' '
 	  Let $Acad_Level_bot_descr = ' '
 	  show 'Bad Acad_Level_bot ' &stucar.emplid
 	end-if
 Let $Adm_appl_ctr = &APX.ADM_APPL_CTR
 Let $Admit_type = &APX.ADMIT_TYPE
 Let $ADM_APPL_DT = &APX.ADM_APPL_DT
 Let $Degr_chkout_stat = &STC.DEGR_CHKOUT_STAT                     ! get from PS_ACAD_PROG instead            
 DO GET_MISSING_ADDRESS
 if $address1 = ' ' and $address2 = ' ' and $address3 = ' ' and $address4 = ' '
   Let $address1 =  &STA.ADDRESS1
   Let $address2 = &STA.ADDRESS2
   Let $address3 =  &STA.ADDRESS3
   Let $address4 =  &STA.ADDRESS4
   Let $city =  &STA.CITY
   Let $state = &STA.STATE
   Let $postal = &STA.POSTAL
   Let $county = &STA.COUNTY
   Let $COUNTRY = &STA.COUNTRY
 end-if          
 if &APX.ADMIT_TYPE <= ' ' and &STC.ACAD_PROG <> 'NDUG' and &STC.ACAD_PROG <> 'DIST' and &STC.ACAD_PROG <> 'DLL' 
  do Term_Stats(&STC.INSTITUTION, &STC.ACAD_CAREER, &STUCAR.STRM, $Term_begin_dt, $Term_end_Dt)
 	do Missing_Admit_type 
 end-if                              
 DO GET_PREVIOUS_NAME
 DO GET_EMAIL
! DO GET_PHONE
 Let $Phone = &STA.PHONE
 DO GET_NID
 DO GET_ETHNIC
 DO GET_COUNTRY
 Lookup State_Descr &STA.STATE $State_Descr
 if $State_Descr <= ' ' 
 	Let $State_Descr = ' '
 end-if
 Lookup Country_Descr &STA.COUNTRY $Country_Descr
 if $Country_Descr <= ' ' 
 	Let $Country_Descr = ' '
 end-if
 Lookup Institution_Descr &STC.INSTITUTION $Institution_Descr
 if $Institution_Descr <= ' ' 
 	Let $Institution_Descr = ' '
 end-if
 DO GET_RESIDENCY
 DO GET_A_DESCR
 DO GET_RESPONSE
 DO Get_Last_Sch_info
 DO GET_STU_PLAN
 Do GET_TUITION_FEES
 do GET_DISTANCE_WEB
 do GET_ADVISOR
 do maxxy

  add 1 to #STU_COUNT
  do interval_commit
 
! if #um_unt_taken_prgrss_rowc <> &stucar.unt_taken_prgrss and &stucar.strm = '0910' and $Row_Check = 'Y'
! 	 show &stucar.institution ' - ' &stucar.emplid ' ' &stucar.unt_taken_prgrss ' ' #um_unt_taken_prgrss_rowc
! end-if
 DO INSERT_ROWS
FROM PS_STDNT_CAR_TERM STUCAR, PS_PERSONAL_DATA STA,  PS_ACAD_PROG STC, PS_ADM_APPL_DATA APX
, PS_UM_ENRL_PIN PIN
  WHERE  STUCAR.EMPLID = STC.EMPLID(+) 
     AND STUCAR.ACAD_CAREER = STC.ACAD_CAREER(+) 
     AND STUCAR.STDNT_CAR_NBR = STC.STDNT_CAR_NBR(+)
     AND STUCAR.INSTITUTION = STC.INSTITUTION(+) 
     AND STUCAR.EMPLID = STA.EMPLID(+)  
     AND STC.EMPLID = APX.EMPLID(+)
     AND STC.ACAD_CAREER = APX.ACAD_CAREER(+)
     AND STC.ADM_APPL_NBR = APX.ADM_APPL_NBR(+)
     AND (STC.EFFDT =
        (SELECT MAX(STC_ED.EFFDT) FROM PS_ACAD_PROG STC_ED
         WHERE STC.EMPLID = STC_ED.EMPLID
         AND STC.ACAD_CAREER = STC_ED.ACAD_CAREER
         AND STC.STDNT_CAR_NBR = STC_ED.STDNT_CAR_NBR
         AND STC.INSTITUTION = STC_ED.INSTITUTION
         AND STC_ED.EFFDT <= (select least(stop.SSR_TRMAC_LAST_DT,SYSDATE)
           from ps_term_tbl stop where stop.institution = stucar.institution 
           and stop.acad_career = stucar.acad_career and stop.strm = stucar.strm )) or STC.EFFDT is null)
     AND (STC.EFFSEQ =
        (SELECT MAX(STC_ES.EFFSEQ) FROM PS_ACAD_PROG STC_ES
         WHERE STC.EMPLID = STC_ES.EMPLID
         AND STC.ACAD_CAREER = STC_ES.ACAD_CAREER
         AND STC.STDNT_CAR_NBR = STC_ES.STDNT_CAR_NBR
         AND STC.INSTITUTION = STC_ES.INSTITUTION
         AND STC.EFFDT = STC_ES.EFFDT) or STC.EFFSEQ is null)
         AND STUCAR.STRM BETWEEN [$input_Trm1_M] AND [$input_Term2_M]
         AND PIN.INSTITUTION(+) = STUCAR.INSTITUTION
         AND PIN.EMPLID(+) = STUCAR.EMPLID
         AND PIN.STRM(+) = STUCAR.STRM

!       AND (STUCAR.UNT_TERM_TOT > 0 or STUCAR.UNT_TAKEN_PRGRSS > 0 or STUCAR.UNT_AUDIT > 0 or STUCAR.ACADEMIC_LOAD <> 'N')
END-SELECT

show 'Students selected = ' #STU_COUNT
End-Procedure  ! List_Applicants


!***********************************************************************
!  Select Parameters                                       
!***********************************************************************


Begin-Procedure Select-Parameters
Let $input_date = datenow()
Let $Input_Trm1 = '0910'
Let $Input_Term2 = '9999'
Let $Input_Flag3 = 'Y'
begin-select
R.AS_OF_DATE,
R.UM_BEGIN_TERM,
R.UM_END_TERM,
R.FLAG1,
R.FLAG2,
R.FLAG3
  Let $input_date = &R.AS_OF_DATE
  if &R.FLAG1 = 'Y' 
  	 Let $input_date = datenow()
  end-if
  Let $Input_Trm1 = &R.UM_BEGIN_TERM
  Let $Input_term = &R.UM_BEGIN_TERM
  Let $Input_Term2 = &R.UM_END_TERM
  Let $input_Flag2 = &R.FLAG2
  Let $input_Flag3 = &R.FLAG3
FROM PS_UM_RUN_UMSTUEXT R
WHERE R.OPRID = $prcs_oprid
  AND R.RUN_CNTL_ID = $prcs_run_cntl_id

end-select
show $input_date
if $input_Flag3 <> 'Y'
show 'Using from SP Term1: ' $Input_Trm1 ' Term2: ' $Input_Term2
else
Let $compare = '0'||to_char(  to_number(substr($input_date,10,2)) - 1   )
Let $compare = substr($compare,length($compare)-1,2)
show 'AUTO: ' $input_date '--> ' $compare
begin-select 
VIK.STRM, 
VIK.DESCR, 
VIK.DESCRSHORT 
   show &VIK.STRM '--' &VIK.DESCR '--' &VIK.DESCRSHORT
   Let $input_term = &VIK.STRM
   LET $Input_trm1 = &VIK.STRM
   Let $input_term2 = '9999'
from ps_term_val_tbl VIK
where  substr(VIK.STRM,1,2) = $compare 
and substr(VIK.STRM,3,1) = decode(substr(to_char($input_date),4,3),'JAN','2','FEB','2','MAR','2','APR','2','MAY','2',
'JUN','3','JUL','3','AUG','3','SEP','1','OCT','1','NOV','1','DEC','1','1')
end-select
show 'Automatic Term1: ' $Input_Term ' to ' $Input_Term2
end-if
  Let $Input_Trm1_M = ''''||$Input_Trm1||''''
  Let $Input_term_M = ''''||$Input_term||''''
  Let $Input_Term2_M = ''''||$Input_Term2||''''
  Let $input_Flag2_M = ''''||$input_Flag2||''''
  Let $input_date_M = ''''||$input_date||''''

End-Procedure

!***********************************************************************
!  Get Input for Terms                                      
!***********************************************************************
Begin-Procedure Get-Input
Let #input_bad = 1
 Input $input_date type=date 'Enter Date'
 Input $Input_Trm1 type=text status=#input_status  'Please Enter the First Term'
 Input $input_term2 type=text status=#input_status  'Please Enter the Second Term'
End-Procedure

!***********************************************************************
!  Get Previous Name                                     
!***********************************************************************
Begin-Procedure Get_Previous_Name
Let $Previous_Name = ' '
Begin-select
SB1.Name
  if &SB1.Name > ' ' 
    Let $Previous_Name = &SB1.Name
  end-if
FROM PS_NAMES SB1
WHERE  SB1.NAME_TYPE = 'FR1'
 and SB1.EMPLID = &STA.EMPLID
 and SB1.EFFDT =
 (SELECT MAX(SB1_ED.EFFDT) FROM PS_NAMES SB1_ED
 WHERE SB1.EMPLID = SB1_ED.EMPLID
 AND SB1.NAME_TYPE = SB1_ED.NAME_TYPE
 AND SB1_ED.EFFDT <= [$input_date_M]) 

end-select
End-Procedure
!***********************************************************************
!  Get Preferred email address                                    
!***********************************************************************
Begin-Procedure Get_email
Let $Email_Addr = ' '
Let $Hom_Email_Addr = ' '
Begin-select
SB2.EMAIL_ADDR,
SB2.PREF_EMAIL_FLAG,
SB2.E_ADDR_TYPE
  if &SB2.EMAIL_ADDR > ' ' and &SB2.PREF_EMAIL_FLAG = 'Y'
    Let $Email_Addr = &SB2.EMAIL_ADDR
  end-if
  if &SB2.EMAIL_ADDR > ' ' and &SB2.E_ADDR_TYPE = 'HOME'
  	Let $Hom_Email_Addr = &SB2.EMAIL_ADDR
  end-if
FROM PS_EMAIL_ADDRESSES SB2
WHERE SB2.EMPLID = &STA.EMPLID
order by sb2.E_ADDR_TYPE,decode(SB2.PREF_EMAIL_FLAG,'Y',1,9) 
end-select
End-Procedure

!***********************************************************************
!  Get NID for USA and Canada                                  
!***********************************************************************
Begin-Procedure Get_nid
Let $Nid_Usa = ' '
Let $Nid_Can = ' '
Begin-select
SB4.NATIONAL_ID,
SB4.COUNTRY
  if &SB4.COUNTRY = 'USA' and &SB4.NATIONAL_ID > ' '
    Let $Nid_Usa = &SB4.NATIONAL_ID
  end-if
  if &SB4.COUNTRY = 'CAN' and &SB4.NATIONAL_ID > ' '
    Let $Nid_Can = &SB4.NATIONAL_ID
  end-if
FROM PS_PERS_NID SB4
WHERE  SB4.EMPLID = &STA.EMPLID
 
end-select
End-Procedure
!***********************************************************************
!  Get Ethnic Data                                    
!***********************************************************************
Begin-Procedure Get_ethnic
Let $Ethnic_Grp_cd = ' '
Let $Ethnic_Category = ' '
Let $Ethnic_Descr = ' '
Let $Hisp_Latino = 'N'
Let $Multi_Race = 'N'
Let $Old_Group = ' '
Let $Ethnic_Group = ' '
Let $UM_ETH_GRP_DESCR = ' '
Let #Race_multi = 0
Begin-select
SB6.ETHNIC_GRP_CD,
SB6.APS_EC_NDS_AUS,
SB7.ETHNIC_CATEGORY,
SB7.DESCR50,
SB7.SETID,
SB7.ETHNIC_GRP_CD,
SB7.ETHNIC_GROUP
  if &SB6.ETHNIC_GRP_CD > ' ' and $Ethnic_grp_cd = ' '
    Let $Ethnic_Grp_cd = &SB6.ETHNIC_GRP_CD
    Let $Ethnic_Category = &SB7.ETHNIC_CATEGORY
    Let $Ethnic_Descr = &SB7.DESCR50
    Let $Ethnic_Group = &SB7.ETHNIC_GROUP
  end-if
  if &SB7.ETHNIC_GROUP = '3'
  	Let $Hisp_Latino = 'Y'
  else
    if &SB7.ETHNIC_GROUP <> $Old_Group
  	if &SB7.ETHNIC_GROUP <> '6'
    Add 1 to #Race_multi                                               ! Not a true count
    end-if
    Let $Old_Group = &SB7.ETHNIC_GROUP
    end-if
  end-if 
FROM PS_DIVERS_ETHNIC SB6, PS_ETHNIC_GRP_TBL SB7
  WHERE SB6.ETHNIC_GRP_CD = SB7.ETHNIC_GRP_CD
!     AND  SB6.PRIMARY_INDICATOR  = 'Y'
     AND SB6.ETHNIC_GRP_CD <> 'NOTHIS'
     AND SB6.EMPLID = &STA.EMPLID
     AND SB7.EFFDT =
        (SELECT MAX(SB7_ED.EFFDT) FROM PS_ETHNIC_GRP_TBL SB7_ED
        WHERE SB7.SETID = SB7_ED.SETID
          AND SB7.ETHNIC_GRP_CD = SB7_ED.ETHNIC_GRP_CD
          AND SB7_ED.EFFDT <= [$input_date_M])
     AND SB7.SETID = 'USA'
  order by decode(sb7.ethnic_group,'3','1','2'), decode(sb6.primary_indicator,'Y','1','2')
end-select
if #Race_multi > 1
	Let $Multi_Race = 'Y'
end-if
!DO GET_XLAT('ETHNIC_GROUP',$Ethnic_Group,$UM_ETH_GRP_DESCR)
Lookup Get_Xlat_Ethnic_Group $Ethnic_Group $UM_ETH_GRP_DESCR
if $UM_ETH_GRP_DESCR <= ' '
	Let $UM_ETH_GRP_DESCR = ' '
end-if
End-Procedure

!***********************************************************************
!  Get Country Data                                 
!***********************************************************************

Begin-Procedure Get_Country
Let $Country_Usa = ' '
Let $Citizenship_Status_Usa = ' '
Let $Country_Oth = ' '
Let $Citizenship_Status_Oth = ' '
Begin-select
SB8.COUNTRY,
SB8.CITIZENSHIP_STATUS
  if &SB8.COUNTRY = 'USA'
    Let $Country_Usa = &SB8.COUNTRY
    Let $Citizenship_Status_Usa = &SB8.CITIZENSHIP_STATUS
  end-if
  if &SB8.COUNTRY <> 'USA' and $Country_Oth = ' '                       ! Ticket 59071 from Bill G.
 ! 	(&SB8.CITIZENSHIP_STATUS = 'N' or &SB8.CITIZENSHIP_STATUS = ' ' )
    Let $Country_Oth = &SB8.COUNTRY
    Let $Citizenship_Status_Oth = &SB8.CITIZENSHIP_STATUS
  end-if
FROM PS_CITIZENSHIP SB8
WHERE  SB8.EMPLID = &STA.EMPLID
order by decode(sb8.country,'USA',1,2), decode(SB8.CITIZENSHIP_STATUS,'N',1,' ',2,3)
 
end-select
End-Procedure
!***********************************************************************
!  Get item_type ranges
!***********************************************************************
begin-procedure get_ranges
	Let $UMA_RANGE_FROM_TUI = '000000000000'
	Let $UMA_RANGE_TO_TUI = '999999999999'
	Let $UMA_RANGE_FROM_ADM = '000000000000'
	Let $UMA_RANGE_TO_ADM = '999999999999'
	Let $UMA_RANGE_FROM_ENR = '000000000000'
	Let $UMA_RANGE_TO_ENR = '999999999999'

	Let $UMF_RANGE_FROM_TUI = '000000000000'
	Let $UMF_RANGE_TO_TUI = '999999999999'
	Let $UMF_RANGE_FROM_ADM = '000000000000'
	Let $UMF_RANGE_TO_ADM = '999999999999'
	Let $UMF_RANGE_FROM_ENR = '000000000000'
	Let $UMF_RANGE_TO_ENR = '999999999999'

	Let $UMPI_RANGE_FROM_TUI = '000000000000'
	Let $UMPI_RANGE_TO_TUI = '999999999999'
	Let $UMPI_RANGE_FROM_ADM = '000000000000'
	Let $UMPI_RANGE_TO_ADM = '999999999999'
	Let $UMPI_RANGE_FROM_ENR = '000000000000'
	Let $UMPI_RANGE_TO_ENR = '999999999999'

	Let $UMFK_RANGE_FROM_TUI = '000000000000'
	Let $UMFK_RANGE_TO_TUI = '999999999999'
	Let $UMFK_RANGE_FROM_ADM = '000000000000'
	Let $UMFK_RANGE_TO_ADM = '999999999999'
	Let $UMFK_RANGE_FROM_ENR = '000000000000'
	Let $UMFK_RANGE_TO_ENR = '999999999999'

	Let $UMM_RANGE_FROM_TUI = '000000000000'
	Let $UMM_RANGE_TO_TUI = '999999999999'
	Let $UMM_RANGE_FROM_ADM = '000000000000'
	Let $UMM_RANGE_TO_ADM = '999999999999'
	Let $UMM_RANGE_FROM_ENR = '000000000000'
	Let $UMM_RANGE_TO_ENR = '999999999999'

	Let $UM_RANGE_FROM_TUI = '0000000000'
	Let $UM_RANGE_TO_TUI = '9999999999'
	Let $UM_RANGE_FROM_ADM = '0000000000'
	Let $UM_RANGE_TO_ADM = '9999999999'
	Let $UM_RANGE_FROM_ENR = '0000000000'
	Let $UM_RANGE_TO_ENR = '9999999999'

	Let $USM_RANGE_FROM_TUI = '0000000000'
	Let $USM_RANGE_TO_TUI = '9999999999'
	Let $USM_RANGE_FROM_ADM = '0000000000'
	Let $USM_RANGE_TO_ADM = '9999999999'
	Let $USM_RANGE_FROM_ENR = '0000000000'
	Let $USM_RANGE_TO_ENR = '9999999999'
	
BEGIN-SELECT
RATF.TREE_NAME
RATF.TREE_NODE
RATF.SETID
MIN(RBTF.RANGE_FROM) &RANGE_FROM
MAX(RBTF.RANGE_TO) &RANGE_TO
RATF.TREE_NODE_NUM
RATF.TREE_NODE_NUM_END
RATF.PARENT_NODE_NAME 
  evaluate &RATF.TREE_NAME 
  when = 'UMA_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UMA_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UMA_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UMA_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UMA_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UMA_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UMA_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'UMF_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UMF_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UMF_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UMF_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UMF_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UMF_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UMF_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'UMFK_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UMFK_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UMFK_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UMFK_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UMFK_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UMFK_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UMFK_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'UMM_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UMM_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UMM_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UMM_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UMM_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UMM_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UMM_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'UM_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UM_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UM_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UM_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UM_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UM_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UM_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'USM_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $USM_RANGE_FROM_TUI = &RANGE_FROM
    	Let $USM_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $USM_RANGE_FROM_ADM = &RANGE_FROM
    	Let $USM_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $USM_RANGE_FROM_ENR = &RANGE_FROM
    	Let $USM_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  when = 'UMPI_CHARGES'
  	evaluate &RATF.TREE_NODE
  	when = 'TUI'
  		Let $UMPI_RANGE_FROM_TUI = &RANGE_FROM
    	Let $UMPI_RANGE_TO_TUI = &RANGE_TO
  	when = 'ADM'
  		Let $UMPI_RANGE_FROM_ADM = &RANGE_FROM
    	Let $UMPI_RANGE_TO_ADM = &RANGE_TO
  	when = 'ENR'
  		Let $UMPI_RANGE_FROM_ENR = &RANGE_FROM
    	Let $UMPI_RANGE_TO_ENR = &RANGE_TO
  	end-evaluate
  end-evaluate
  	
from  PSTREENODE RATF, PSTREELEAF RBTF WHERE
RATF.EFFDT = ( SELECT MAX(RATF_ED.EFFDT) FROM PSTREENODE RATF_ED 
 WHERE RATF_ED.SETID = RATF.SETID AND RATF_ED.SETCNTRLVALUE = RATF.SETCNTRLVALUE AND RATF_ED.TREE_NAME = RATF.TREE_NAME 
 AND RATF_ED.TREE_NODE_NUM = RATF.TREE_NODE_NUM AND RATF_ED.TREE_NODE = RATF.TREE_NODE AND RATF_ED.TREE_BRANCH = RATF.TREE_BRANCH 
 AND RATF.EFFDT <= SYSDATE)
AND RBTF.EFFDT = ( SELECT MAX(RBTF_ED.EFFDT) FROM PSTREELEAF RBTF_ED WHERE RBTF_ED.SETID = RBTF.SETID 
AND RBTF_ED.SETCNTRLVALUE = RBTF.SETCNTRLVALUE AND RBTF_ED.TREE_NAME = RBTF.TREE_NAME AND RBTF_ED.TREE_NODE_NUM = RBTF.TREE_NODE_NUM
 AND RBTF_ED.TREE_BRANCH = RBTF.TREE_BRANCH AND RBTF.EFFDT <= SYSDATE)
AND RATF.PARENT_NODE_NAME = 'ALL'
AND RATF.TREE_NAME IN ('UMA_CHARGES','UMF_CHARGES','UMFK_CHARGES','UMM_CHARGES','UM_CHARGES','USM_CHARGES','UMPI_CHARGES')
AND RATF.TREE_NAME = RBTF.TREE_NAME
AND RATF.SETID = RBTF.SETID
AND RATF.SETCNTRLVALUE = RBTF.SETCNTRLVALUE
AND RATF.TREE_NODE_NUM = RBTF.TREE_NODE_NUM
AND RATF.TREE_BRANCH = RBTF.TREE_BRANCH
AND RBTF.TREE_NODE_NUM >= RATF.TREE_NODE_NUM
AND RBTF.TREE_NODE_NUM <= RATF.TREE_NODE_NUM_END
GROUP BY RATF.TREE_NAME, RATF.TREE_NODE, RATF.SETID, RATF.TREE_NODE_NUM, RATF.TREE_NODE_NUM_END, RATF.PARENT_NODE_NAME
ORDER BY RATF.TREE_NAME, RATF.TREE_NODE
	END-SELECT
	show 'Item type Ranges established:'
	show 'UMA TUI '  $UMA_RANGE_FROM_TUI 
	show 'UMA TUI '  $UMA_RANGE_TO_TUI 
	show 'UMA ADM '  $UMA_RANGE_FROM_ADM 
	show 'UMA ADM '  $UMA_RANGE_TO_ADM 
	show 'UMA ENR '  $UMA_RANGE_FROM_ENR 
	show 'UMA ENR '  $UMA_RANGE_TO_ENR 

	show 'UMF TUI '  $UMF_RANGE_FROM_TUI 
	show 'UMF TUI '  $UMF_RANGE_TO_TUI 
	show 'UMF ADM '  $UMF_RANGE_FROM_ADM 
	show 'UMF ADM '  $UMF_RANGE_TO_ADM 
	show 'UMF ENR '  $UMF_RANGE_FROM_ENR 
	show 'UMF ENR '  $UMF_RANGE_TO_ENR 

	show 'UMPI TUI '  $UMPI_RANGE_FROM_TUI 
	show 'UMPI TUI '  $UMPI_RANGE_TO_TUI 
	show 'UMPI ADM '  $UMPI_RANGE_FROM_ADM 
	show 'UMPI ADM '  $UMPI_RANGE_TO_ADM 
	show 'UMPI ENR '  $UMPI_RANGE_FROM_ENR 
	show 'UMPI ENR '  $UMPI_RANGE_TO_ENR 

	show 'UMFK TUI '  $UMFK_RANGE_FROM_TUI 
	show 'UMFK TUI '  $UMFK_RANGE_TO_TUI 
	show 'UMFK ADM '  $UMFK_RANGE_FROM_ADM 
	show 'UMFK ADM '  $UMFK_RANGE_TO_ADM 
	show 'UMFK ENR '  $UMFK_RANGE_FROM_ENR 
	show 'UMFK ENR '  $UMFK_RANGE_TO_ENR 

	show 'UMM TUI '  $UMM_RANGE_FROM_TUI 
	show 'UMM TUI '  $UMM_RANGE_TO_TUI 
	show 'UMM ADM '  $UMM_RANGE_FROM_ADM 
	show 'UMM ADM '  $UMM_RANGE_TO_ADM 
	show 'UMM ENR '  $UMM_RANGE_FROM_ENR 
	show 'UMM ENR '  $UMM_RANGE_TO_ENR 

	show 'UM TUI '  $UM_RANGE_FROM_TUI 
	show 'UM TUI '  $UM_RANGE_TO_TUI 
	show 'UM ADM '  $UM_RANGE_FROM_ADM 
	show 'UM ADM '  $UM_RANGE_TO_ADM 
	show 'UM ENR '  $UM_RANGE_FROM_ENR 
	show 'UM ENR '  $UM_RANGE_TO_ENR 

	show 'USM TUI '  $USM_RANGE_FROM_TUI 
	show 'USM TUI '  $USM_RANGE_TO_TUI 
	show 'USM ADM '  $USM_RANGE_FROM_ADM 
	show 'USM ADM '  $USM_RANGE_TO_ADM 
	show 'USM ENR '  $USM_RANGE_FROM_ENR 
	show 'USM ENR '  $USM_RANGE_TO_ENR 
		
end-procedure
!***********************************************************************
!  Get tuition and fees                                                         
!***********************************************************************

! Darren Michael says use CHARGES trees 10/19/09

begin-procedure GET_TUITION_FEES
	let #Tuition = 0
	let #Fees = 0
  evaluate &STUCAR.INSTITUTION
    when = 'UMS01'
    	Let $tname = 'UMA_CHARGES'
    	Let $RANGE_FROM_TUI = $UMA_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UMA_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UMA_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UMA_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UMA_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UMA_RANGE_TO_ENR 
    when = 'UMS02'
    	Let $tname = 'UMF_CHARGES'
    	Let $RANGE_FROM_TUI = $UMF_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UMF_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UMF_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UMF_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UMF_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UMF_RANGE_TO_ENR 
    when = 'UMS03'
    	Let $tname = 'UMFK_CHARGES'
    	Let $RANGE_FROM_TUI = $UMFK_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UMFK_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UMFK_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UMFK_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UMFK_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UMFK_RANGE_TO_ENR 
    when = 'UMS04'
    	Let $tname = 'UMM_CHARGES'
    	Let $RANGE_FROM_TUI = $UMM_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UMM_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UMM_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UMM_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UMM_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UMM_RANGE_TO_ENR 
    when = 'UMS05'
    	Let $tname = 'UM_CHARGES'
    	Let $RANGE_FROM_TUI = $UM_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UM_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UM_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UM_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UM_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UM_RANGE_TO_ENR 
    when = 'UMS06'
    	Let $tname = 'USM_CHARGES'
    	Let $RANGE_FROM_TUI = $USM_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $USM_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $USM_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $USM_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $USM_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $USM_RANGE_TO_ENR 
    when = 'UMS07'
    	Let $tname = 'UMPI_CHARGES'
    	Let $RANGE_FROM_TUI = $UMPI_RANGE_FROM_TUI 
	    Let $RANGE_TO_TUI =   $UMPI_RANGE_TO_TUI 
	    Let $RANGE_FROM_ADM = $UMPI_RANGE_FROM_ADM 
	    Let $RANGE_TO_ADM =   $UMPI_RANGE_TO_ADM 
	    Let $RANGE_FROM_ENR = $UMPI_RANGE_FROM_ENR 
	    Let $RANGE_TO_ENR =   $UMPI_RANGE_TO_ENR 

   end-evaluate
   Let $Tname_M = ''''||$tname||''''
  	Let $RANGE_FROM_TUI_M = ''''||$UMPI_RANGE_FROM_TUI||'''' 
	  Let $RANGE_TO_TUI_M =   ''''||$UMPI_RANGE_TO_TUI||'''' 
	  Let $RANGE_FROM_ADM_M = ''''||$UMPI_RANGE_FROM_ADM||'''' 
	  Let $RANGE_TO_ADM_M =   ''''||$UMPI_RANGE_TO_ADM||'''' 
	  Let $RANGE_FROM_ENR_M = ''''||$UMPI_RANGE_FROM_ENR||'''' 
	  Let $RANGE_TO_ENR_M =   ''''||$UMPI_RANGE_TO_ENR||'''' 

begin-select
!x.tree_node,
ctf.item_type,
ctf.item_amt
   if  &ctf.item_type >= $RANGE_FROM_TUI    
      and &ctf.item_type <= $RANGE_TO_TUI      
    		add &ctf.item_amt to #Tuition
    		else
    		add &ctf.item_amt to #FEES
    	end-if
FROM PS_ITEM_SF ctf
!, ( Select ATF.TREE_NODE, ATF.SETID, MIN(BTF.RANGE_FROM) AS RANGE_FROM, MAX(BTF.RANGE_TO) AS RANGE_TO, atf.tree_node_num, atf.tree_node_num_end, atf.PARENT_NODE_NAME from  PSTREENODE ATF, PSTREELEAF BTF WHERE 
! atf.effdt = ( select max(atf_ed.effdt) from pstreenode atf_ed where atf_ed.setid = atf.setid and atf_ed.setcntrlvalue = atf.setcntrlvalue and atf_ed.tree_name = atf.tree_name and atf_ed.tree_node_num = atf.tree_node_num  and atf_ed.tree_node = atf.tree_node and atf_ed.tree_branch = atf.tree_branch and atf.effdt <= $input_date ) 
! and btf.effdt = ( select max(btf_ed.effdt) from pstreeleaf btf_ed where btf_ed.setid = btf.setid and btf_ed.setcntrlvalue = btf.setcntrlvalue and btf_ed.tree_name = btf.tree_name and btf_ed.tree_node_num = btf.tree_node_num  and btf_ed.tree_branch = btf.tree_branch and btf.effdt <= $input_date ) 
! and atf.parent_node_name = 'ALL' and atf.tree_name = $Tname and atf.setid = btf.setid and atf.setcntrlvalue = btf.setcntrlvalue and atf.tree_node_num = btf.tree_node_num and atf.tree_branch = btf.tree_branch and atf.tree_name = btf.tree_name and btf.tree_node_num >= atf.tree_node_num and btf.tree_node_num <= atf.tree_node_num_end
! group by ATF.TREE_NODE, ATF.SETID, atf.tree_node_num, atf.tree_node_num_end, atf.PARENT_NODE_NAME ) X
WHERE CTF.ITEM_TERM = &STUCAR.STRM
AND CTF.BUSINESS_UNIT = &STUCAR.INSTITUTION
AND CTF.COMMON_ID = &STUCAR.EMPLID
AND CTF.ACAD_CAREER = &STC.ACAD_CAREER
AND CTF.STDNT_CAR_NBR = &STC.STDNT_CAR_NBR
AND CTF.SA_ID_TYPE = 'P'
!AND ctf.business_unit = x.setid
and (
(ctf.item_type >= [$RANGE_FROM_ADM_M]   
and ctf.item_type <= [$RANGE_TO_ADM_M])  
or   
( ctf.item_type >= [$RANGE_FROM_ENR_M]   
and ctf.item_type <= [$RANGE_TO_ENR_M] )
or
( ctf.item_type >= [$RANGE_FROM_TUI_M]   !x.range_from
and ctf.item_type <= [$RANGE_TO_TUI_M] ) !x.range_to
)  

!group by x.tree_node
end-select
end-procedure
!***********************************************************************
!  Get Residency Data                                 
!***********************************************************************
Begin-Procedure Get_Residency
Let $Effective_Term = ' '
Let $Residency = ' '
Let $Residency_Dt = STRTODATE('01-JAN-1901','DD-MON-YYYY')
Let $Admission_Res = ' '
Let $Admission_Excpt = ' '
Begin-select
SB9.EFFECTIVE_TERM,
SB9.RESIDENCY,
SB9.TUITION_RES,
SB9.RESIDENCY_DT,
SB9.ADMISSION_RES,
SB9.ADMISSION_EXCPT
  if &SB9.EFFECTIVE_TERM > ' '
    Let $Effective_Term = &SB9.EFFECTIVE_TERM
  end-if
  if &SB9.RESIDENCY > ' '
    Let $Residency = &SB9.TUITION_RES
  end-if
  if &SB9.RESIDENCY > ' '
    Let $Residency_Dt = &SB9.RESIDENCY_DT
  end-if
  if &SB9.ADMISSION_RES > ' '
    Let $Admission_Res = &SB9.ADMISSION_RES
  end-if
  if &SB9.ADMISSION_EXCPT > ' '
    Let $Admission_Excpt = &SB9.ADMISSION_EXCPT
  end-if
FROM PS_RESIDENCY_OFF SB9
WHERE  SB9.EMPLID = &STUCAR.EMPLID
AND SB9.ACAD_CAREER = &STUCAR.ACAD_CAREER
AND SB9.INSTITUTION = &STUCAR.INSTITUTION
AND (SB9.EFFECTIVE_TERM = (SELECT MAX(EB9.EFFECTIVE_TERM) FROM PS_RESIDENCY_OFF EB9
     WHERE EB9.EMPLID = SB9.EMPLID AND  EB9.ACAD_CAREER = SB9.ACAD_CAREER and EB9.INSTITUTION = SB9.INSTITUTION
     AND EB9.EFFECTIVE_TERM <= &STUCAR.STRM)                                                                    ! ??1006
 OR (SB9.EFFECTIVE_TERM = (SELECT MAX(EC9.EFFECTIVE_TERM) FROM PS_RESIDENCY_OFF EC9                       ! ??1006
     WHERE EC9.EMPLID = SB9.EMPLID AND EC9.ACAD_CAREER = EC9.ACAD_CAREER AND EC9.INSTITUTION = SB9.INSTITUTION)  ! ??1006
     AND NOT EXISTS (SELECT 'X' FROM PS_RESIDENCY_OFF ED9                                                 ! ??1006
     WHERE ED9.EMPLID=SB9.EMPLID AND ED9.ACAD_CAREER = SB9.ACAD_CAREER AND ED9.INSTITUTION = SB9.INSTITUTION     ! ??1006
     AND ED9.EFFECTIVE_TERM <= &STUCAR.STRM))                                                                   ! ??1006
     ) 
end-select
End-Procedure


!***********************************************************************
!  Get Acad Prog  Descr                                 
!***********************************************************************
Begin-Procedure Get_A_Descr
Let $Acad_Prog_Descr = ' '
Let $Acad_prog_Primary_Descr = ' '
Let $Academic_Group = ' '                                               !??0607
Let $Academic_Group_descr = ' '                                         !??0607
Let $Level_Load_Rule = ' '
Let $Fa_eligibility2 = ' '                                              ! REPORT-201
Let #I = 1
while #I <= 2
if #i = 1
 let $look_Acad_prog = &Stucar.ACAD_prog_primary
else
 let $look_acad_prog = &Stc.acad_prog
end-if
Begin-select
SB10.DESCR,
SB10.INSTITUTION,
SB10.ACAD_PROG,
SB10.ACAD_GROUP,
SB10.LEVEL_LOAD_RULE,
SB10.FA_ELIGIBILITY
CR10.DESCR
  if &SB10.DESCR > ' ' and #i = 1
    Let $Acad_Prog_Primary_Descr = &SB10.DESCR
  end-if
  if &SB10.DESCR > ' ' and #i = 2
    Let $Acad_Prog_Descr = &SB10.DESCR
  end-if
  if &SB10.ACAD_GROUP > ' ' and #i = 1
    Let $Academic_Group = &SB10.ACAD_GROUP
  end-if
  if &CR10.DESCR > ' ' and #i = 1
    Let $Academic_Group_Descr = &CR10.DESCR
  end-if
  if &SB10.LEVEL_LOAD_RULE > ' ' and #i = 1
  	Let $Level_Load_Rule = &SB10.LEVEL_LOAD_RULE
  end-if
  if &SB10.FA_ELIGIBILITY > ' ' and #i = 1                              ! REPORT-201
  	Let $Fa_eligibility2 = &SB10.FA_ELIGIBILITY
  end-if
FROM PS_ACAD_PROG_TBL SB10, PS_ACAD_GROUP_TBL CR10
WHERE  SB10.ACAD_PROG = $look_Acad_prog
AND SB10.INSTITUTION = &STUCAR.INSTITUTION
AND SB10.INSTITUTION = CR10.INSTITUTION(+)
AND SB10.ACAD_GROUP = CR10.ACAD_GROUP(+)
AND SB10.EFFDT =
        (SELECT MAX(SB10_ED.EFFDT) FROM PS_ACAD_PROG_TBL SB10_ED
        WHERE SB10.INSTITUTION = SB10_ED.INSTITUTION
          AND SB10.ACAD_PROG = SB10_ED.ACAD_PROG
          AND SB10_ED.EFFDT <= [$input_date_M])
AND ( CR10.EFFDT =
        (SELECT MAX(CR10_ED.EFFDT) FROM PS_ACAD_GROUP_TBL CR10_ED
        WHERE CR10.INSTITUTION = CR10_ED.INSTITUTION
          AND CR10.ACAD_GROUP = CR10_ED.ACAD_GROUP
          AND CR10_ED.EFFDT <= [$input_date_M])
          or CR10.EFFDT is null)
end-select
add 1 to #I
end-while
End-Procedure

!***********************************************************************
!  Get Last School Info                                
!***********************************************************************
Begin-Procedure Get_Last_Sch_info
Let $Last_Sch_Descr = ' '
Let $Last_Sch_Type = ' '
Let $Ext_Org_Id_Descr = ' '
Let $Ext_org_id = &apx.LAST_SCH_ATTEND
Begin-select
lbs.LS_SCHOOL_TYPE,                                                     
las.descr    
  if &las.descr > ' '
    Let $Last_Sch_Descr = &las.descr
    Let $Ext_Org_Id_Descr = &las.descr
  end-if
  if &lbs.LS_SCHOOL_TYPE > ' '
  	Let $Last_Sch_type = &lbs.LS_SCHOOL_type
  end-if

FROM PS_EXT_ORG_PRI_VW LAS 
  , PS_EXT_ORG_TBL_ADM LBS 
 WHERE  LAS.EFFDT = ( SELECT MAX(A_AED.EFFDT) 
 FROM PS_EXT_ORG_PRI_VW A_AED WHERE A_AED.EXT_ORG_ID = LAS.EXT_ORG_ID
   AND A_AED.EFFDT <= $input_date) 
   AND LAS.EFF_STATUS = 'A' 
   AND LAS.EXT_ORG_ID = LBS.EXT_ORG_ID 
   AND LBS.EFFDT = ( SELECT MAX(LBS_ED.EFFDT) 
   FROM PS_EXT_ORG_TBL_ADM LBS_ED WHERE LBS_ED.EXT_ORG_ID = LBS.EXT_ORG_ID AND LBS_ED.EFFDT <= $input_date)
   AND LBS.EFF_STATUS = 'A'                                                
 AND las.ext_org_id = &apx.last_sch_attend
end-select
End-Procedure

!***********************************************************************
! Get Description for Program Reason
!***********************************************************************
begin-procedure Get_Prog_Rsn_Descr
	Let $Um_Prog_Rsn_Descr = ' '
begin-select
nvl(RSN.DESCR,' ') &rsn.descr
  Let $Um_Prog_Rsn_Descr = &RSN.DESCR 
FROM PS_PROG_RSN_TBL RSN
WHERE RSN.PROG_REASON = &STC.PROG_REASON
 AND RSN.EFF_STATUS = 'A'
 AND RSN.SETID = 'UMSYS'
 AND RSN.PROG_ACTION = &STC.PROG_ACTION
      AND RSN.EFFDT =
        (SELECT MAX(RSN_ED.EFFDT) FROM PS_PROG_RSN_TBL RSN_ED
        WHERE  RSN.PROG_ACTION = RSN_ED.PROG_ACTION
        AND RSN.PROG_REASON = RSN_ED.PROG_REASON
        AND RSN.SETID = RSN_ED.SETID
          AND RSN_ED.EFFDT <= [$input_date_M])
 
end-select
end-procedure


!***********************************************************************
!     Get Distance and Web hours
!***********************************************************************
begin-procedure Get_Distance_Web
Let #Web_Hrs = 0
Let #Dist_Hrs = 0
Let #Chk_Hrs = 0
Let #Itv_Hrs = 0

BEGIN-SELECT
CU.EMPLID,
CU.ACAD_CAREER,
CU.INSTITUTION,
CU.STRM,
CU.CLASS_NBR,
!CU.CRSE_CAREER,
CU.SESSION_CODE,
CU.STDNT_ENRL_STATUS,
!CU.ENRL_STATUS_REASON,
!CU.ENRL_ACTION_LAST,
!CU.ENRL_ACTN_RSN_LAST,
!CU.ENRL_ACTN_PRC_LAST,
!CU.STATUS_DT,
!CU.ENRL_ADD_DT,
CU.ENRL_DROP_DT,
!CU.UNT_TAKEN,
CU.UNT_PRGRSS,
!CU.UNT_PRGRSS_FA,
!CU.UNT_BILLING,
!CU.CRSE_COUNT,
!CU.GRADING_BASIS_ENRL,
!CU.GRADING_BASIS_DT,
!CU.OVRD_GRADING_BASIS,
!CU.CRSE_GRADE_OFF,
!CU.CRSE_GRADE_INPUT,
!CU.GRADE_DT,
!CU.REPEAT_CODE,
!CU.REPEAT_DT,
!CU.ASSOCIATED_CLASS,
CU.AUDIT_GRADE_BASIS,
CU.EARN_CREDIT,
!CU.INCLUDE_IN_GPA,
CU.UNITS_ATTEMPTED,
!CU.GRADE_POINTS,
!CU.GRADE_POINTS_FA,
!CU.GRD_PTS_PER_UNIT,
!CU.MANDATORY_GRD_BAS,
!CU.DROP_CLASS_IF_ENRL,
!CU.ASSOCIATION_99,
!CU.TSCRPT_NOTE_ID,
!CU.TSCRPT_NOTE_EXISTS,
!CU.NOTIFY_STDNT_CHNG,
!CU.REPEAT_CANDIDATE,
!CU.VALID_ATTEMPT,
!CU.GRADE_CATEGORY,
!CU.SEL_GROUP,
!CU.DYN_CLASS_NBR,
!CU.UNT_EARNED,
!CU.LAST_UPD_DT_STMP,
!CU.LAST_UPD_TM_STMP,
!CU.LAST_ENRL_DT_STMP,
!CU.LAST_ENRL_TM_STMP,
!CU.LAST_DROP_DT_STMP,
!CU.LAST_DROP_TM_STMP,
!CU.ENRL_REQ_SOURCE,
!CU.LAST_UPD_ENREQ_SRC,
!CU.GRADING_SCHEME_ENR,
!CU.RELATE_CLASS_NBR_1,
!CU.RELATE_CLASS_NBR_2,
!CU.ACAD_PROG,
CU2.CRSE_ID,
CU2.CRSE_OFFER_NBR,
CU2.CLASS_SECTION,
!CU2.ACAD_GROUP,
decode(( SELECT SUM(decode(z.crse_attr ,'DIST' ,1 ,'BRD' ,2 ,0))  FROM ps_class_attribute z WHERE CU2.crse_id = z.crse_id AND CU2.crse_offer_nbr = z.crse_offer_nbr AND CU2.strm = z.strm AND CU2.session_code = z.session_code AND CU2.class_section = z.class_section AND ((z.crse_attr = 'DIST' AND (z.crse_attr_value = 'ITV' OR z.crse_attr_value = 'VIDEOCONF')) OR (z.crse_attr ='BRD'))),1,'R',3,'B',' ') &UM_DISTANCE_FLAG,
NVL(( SELECT DISTINCT 'Y'  FROM ps_class_attribute z WHERE CU2.crse_id = z.crse_id AND CU2.crse_offer_nbr = z.crse_offer_nbr AND CU2.strm = z.strm AND CU2.session_code = z.session_code AND CU2.class_section = z.class_section AND z.crse_attr IN ('DIST','DIST' )),'N') &UM_DIST_ATTR_FLAG,
decode ( ( SELECT MIN( decode(z.crse_attr_value ,'ITV' ,'1' ,'VIDEOCONF' ,'2' ,'ONLINE' ,'3' ,'ONSITE' ,'4' ,'BROADCAST' ,'5' ,'0') ) FROM ps_class_attribute z WHERE CU2.crse_id = z.crse_id AND CU2.crse_offer_nbr = z.crse_offer_nbr AND CU2.strm = z.strm AND CU2.session_code = z.session_code AND CU2.class_section = z.class_section AND ( ( z.crse_attr = 'DIST' AND z.crse_attr_value = 'ITV' ) 
  OR (z.crse_attr = 'DIST' AND z.crse_attr_value = 'VIDEOCONF') OR (z.crse_attr = 'DIST' AND z.crse_attr_value = 'ONLINE') OR (z.crse_attr = 'DIST' AND z.crse_attr_value = 'ONSITE') OR (z.crse_attr ='BRD' AND z.crse_attr_value = 'BROADCAST') ) ),'1','ITV','2','VIDEOCONF','3','ONLINE','4','ONSITE','5','BROADCAST','0','?')  &UM_IMODE,
CU2.ENRL_CAP,
CU2.ACAD_ORG
  if &UM_DIST_ATTR_FLAG = 'Y'
    Let #Dist_Hrs = #Dist_Hrs + &cu.unt_prgrss
  end-if
  if &UM_IMODE = 'ONLINE'
  	Let #Web_Hrs = #Web_hrs + &cu.unt_prgrss
  end-if
  if  &UM_DISTANCE_FLAG = 'R'
  	Let #ITV_HRS = #ITV_HRS + &cu.unt_prgrss
  end-if
  Let #Chk_Hrs = #Chk_Hrs + &cu.unt_prgrss

FROM PS_STDNT_ENRL CU , PS_CLASS_TBL CU2
 WHERE CU.CLASS_NBR = CU2.CLASS_NBR
   AND CU.STRM = CU2.STRM
   AND CU.SESSION_CODE = CU2.SESSION_CODE
   AND CU.INSTITUTION = CU2.INSTITUTION
   AND CU.EMPLID = &STUCAR.EMPLID
   AND CU.ACAD_CAREER = &STUCAR.ACAD_CAREER
   AND CU.INSTITUTION = &STUCAR.INSTITUTION
   AND CU.STRM = &STUCAR.STRM
   AND CU.STDNT_ENRL_STATUS = 'E'
   AND (CU.EARN_CREDIT = 'Y' 
   or (CU.UNITS_ATTEMPTED <> 'N' AND CU.AUDIT_GRADE_BASIS = 'N') and CU.ENRL_DROP_DT is null )
END-SELECT
end-procedure


!***********************************************************************
!  Get multi registrations
!***********************************************************************
begin-procedure multi_reg
	Let $UMS01_FLAG = ' '
	Let $UMS02_FLAG = ' '
	Let $UMS03_FLAG = ' '
	Let $UMS04_FLAG = ' '
	Let $UMS05_FLAG = ' '
	Let $UMS06_FLAG = ' '
	Let $UMS07_FLAG = ' '
	Let #UMS01_UNT_TAKEN_PRGRSS = 0
	Let #UMS02_UNT_TAKEN_PRGRSS = 0
	Let #UMS03_UNT_TAKEN_PRGRSS = 0
	Let #UMS04_UNT_TAKEN_PRGRSS = 0
	Let #UMS05_UNT_TAKEN_PRGRSS = 0
	Let #UMS06_UNT_TAKEN_PRGRSS = 0
	Let #UMS07_UNT_TAKEN_PRGRSS = 0
	Let #um_unt_taken_prgrss_rowc = 0
	Let #um_unt_taken_fa_rowc = 0
	Let #units_this_career = 0
	Let $UM_ACAD_LOAD_RC = ' '
	begin-select
multi.institution,
multi.unt_prgrss,
multi.acad_career,
multi.unt_prgrss_fa
    evaluate &multi.institution
    when = 'UMS01'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS01_FLAG = 'Y'
    	Let #UMS01_UNT_TAKEN_PRGRSS = #UMS01_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS02'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS02_FLAG = 'Y'
    	Let #UMS02_UNT_TAKEN_PRGRSS = #UMS02_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS03'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS03_FLAG = 'Y'
    	Let #UMS03_UNT_TAKEN_PRGRSS = #UMS03_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS04'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS04_FLAG = 'Y'
    	Let #UMS04_UNT_TAKEN_PRGRSS = #UMS04_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS05'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS05_FLAG = 'Y'
    	Let #UMS05_UNT_TAKEN_PRGRSS = #UMS05_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS06'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS06_FLAG = 'Y'
    	Let #UMS06_UNT_TAKEN_PRGRSS = #UMS06_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    when = 'UMS07'
    	IF &multi.acad_career <> 'NCRD'
    	Let $UMS07_FLAG = 'Y'
    	Let #UMS07_UNT_TAKEN_PRGRSS = #UMS07_UNT_TAKEN_PRGRSS + &multi.UNT_PRGRSS
      END-IF
    	break
    end-evaluate
    if &STUCAR.INSTITUTION = &multi.institution and &multi.acad_career <> 'NCRD'
    	Let #um_unt_taken_prgrss_rowc = #um_unt_taken_prgrss_rowc + &multi.UNT_PRGRSS
    	Let #um_unt_taken_fa_rowc = #um_unt_taken_fa_rowc + &multi.UNT_PRGRSS_FA
    end-if
    if &STUCAR.INSTITUTION = &multi.institution and &STUCAR.ACAD_CAREER = &multi.ACAD_CAREER
    	Let #units_this_career = #units_this_career + &multi.UNT_PRGRSS
    end-if
from PS_STDNT_ENRL multi
WHERE multi.emplid = &STUCAR.EMPLID 
     AND multi.strm = &STUCAR.STRM 
     AND MULTI.STDNT_ENRL_STATUS = 'E'
AND (MULTI.EARN_CREDIT = 'Y' 
  or (MULTI.UNITS_ATTEMPTED <> 'N' AND MULTI.AUDIT_GRADE_BASIS = 'N') and MULTI.ENRL_DROP_DT is null )

end-select
if #um_unt_taken_prgrss_rowc >= 12
	Let $UM_ACAD_LOAD_RC = 'F'
else
  if (&stucar.acad_level_bot = 'GR' or  &stucar.acad_level_bot = 'MAS' or  &stucar.acad_level_bot = 'PHD') and #um_unt_taken_prgrss_rowc >= 6
		Let $UM_ACAD_LOAD_RC = 'F'
	else
		Let $UM_ACAD_LOAD_RC = 'P'
	end-if
end-if

end-procedure

begin-procedure GET_MISSING_ADDRESS
 Let $address1 =  ' '
 Let $address2 = ' '
 Let $address3 =  ' '
 Let $address4 =  ' '
 Let $city =  ' '
 Let $state = ' '
 Let $postal = ' '
 Let $county = ' '
 Let $COUNTRY = ' '
 
begin-select
miss.address1,
miss.address2,
miss.address3,
miss.address4,
miss.city,
miss.state,
miss.postal,
miss.county,
miss.country,
miss.address_type
   if $city = ' '                                                    ! REPORT-313
   	Let $address1 = &miss.address1
    Let $address2 = &miss.address2
    Let $address3 =  &miss.address3
    Let $address4 = &miss.address4
    Let $city = &miss.city
    Let $state = &miss.state
    Let $postal = &miss.postal
    Let $county = &miss.county
    Let $COUNTRY = &miss.country
   end-if
 from ps_addresses miss
 where miss.emplid = &STA.EMPLID
 and miss.effdt = ( select max(miss_ed.effdt) from ps_addresses miss_ed
 where miss_ed.emplid = miss.emplid
 and miss_ed.address_type = miss.address_type
! and miss_ed.eff_status = miss.eff_status
 )
 and miss.eff_status = 'A'
 order by decode(miss.address_type,'HOME','1','BILL','2','MAIL','3','CHK','4','BUSN','5','CAMP','6','7')
 end-select

end-procedure
!***********************************************************************
!  Get Student PlanData                                
!***********************************************************************

begin-procedure Get_Stu_Plan
Let $Acad_Plan = ' '
Let $Acad_Plan_Descr = ' '
Let $Acad_Plan_Type = ' '
Let $Degree = ' '
Let $Acad_Sub_Plan = ' '
Let $Acad_SubPlan_Descr = ' '
Let $Acad_SubPlan_Type = ' '
Let $Declare_dt = STRTODATE('01-JAN-1901','DD-MON-YYYY')
Let #Plan_sequence = 0
Let $STDNT_DEGR = ' '
!Let $Degr_chkout_stat = ' '                                             ! get from PS_ACAD_PROG instead
Let $Advis_status = ' '
Let $Education_Lvl = ' '
let #n_plans = 0
! Find a date appropriate to the strm
Begin-select
nvl(max(SSR_TRMAC_LAST_DT),SYSDATE) &THIS_TERM_END_DATE
from ps_term_tbl rqe 
where 
rqe.institution = &STUCAR.INSTITUTION
and rqe.acad_career = &STUCAR.ACAD_CAREER
and rqe.strm = &STUCAR.STRM
end-select

begin-select
NVL(ST12.ACAD_PLAN,' ') &ST12.ACAD_PLAN, 
ST12.DECLARE_DT,
ST12.EFFDT,
ST12.PLAN_SEQUENCE,
ST12.REQ_TERM,
ST12.STDNT_DEGR,
ST12.DEGR_CHKOUT_STAT,
ST12.ADVIS_STATUS,
NVL(ST13.DESCR,' ') &ST13.DESCR,
NVL(ST13.ACAD_PLAN_TYPE,' ') &ST13.ACAD_PLAN_TYPE,
NVL(ST13.DEGREE,' ') &ST13.DEGREE,
NVL(ST14.ACAD_PLAN,' ') &ST14.ACAD_PLAN,
NVL(ST14.ACAD_SUB_PLAN,' ' ) &ST14.ACAD_SUB_PLAN,
NVL(ST15.ACAD_SUBPLAN_TYPE,' ') &ST15.ACAD_SUBPLAN_TYPE,
NVL(ST15.DESCR,' ') &ST15.DESCR,
NVL(DG.EDUCATION_LVL,' ') &DG.EDUCATION_LVL

  if &ST12.EFFDT < &THIS_TERM_END_DATE or $Acad_plan <= ' ' 
    Let $Acad_Plan = &ST12.ACAD_PLAN
    Let $Declare_dt = &ST12.DECLARE_DT
    Let #Plan_sequence = &ST12.PLAN_SEQUENCE
    Let $STDNT_DEGR = &ST12.STDNT_DEGR
!    Let $Degr_chkout_stat = &ST12.DEGR_CHKOUT_STAT                     ! get from PS_ACAD_PROG instead            
    Let $Advis_status = &ST12.ADVIS_STATUS
    Let $Acad_Plan_Descr = &ST13.DESCR
    Let $Acad_Plan_Type = &ST13.ACAD_PLAN_TYPE
    Let $Degree = &ST13.DEGREE
    Let $Acad_Sub_Plan = &ST14.ACAD_SUB_PLAN
    Let $Acad_SubPlan_Descr = &ST15.DESCR
    Let $Acad_SubPlan_Type = &ST15.ACAD_SUBPLAN_TYPE
    Let $Education_Lvl = &DG.EDUCATION_LVL
    add 1 to #n_plans
 end-if
FROM PS_ACAD_PLAN ST12, PS_ACAD_PLAN_TBL ST13, PS_ACAD_SUBPLAN ST14, PS_ACAD_SUBPLN_TBL ST15, PS_DEGREE_TBL DG
  WHERE ST12.EMPLID = &STUCAR.EMPLID
  AND ST12.ACAD_CAREER = &STUCAR.ACAD_CAREER
  AND ST12.STDNT_CAR_NBR = &STUCAR.STDNT_CAR_NBR
  AND ST13.INSTITUTION = &STUCAR.INSTITUTION
  AND ST13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')
!      AND  ST12.EFFDT =
!        (SELECT MAX(ST12_ED.EFFDT) FROM PS_ACAD_PLAN ST12_ED
!        WHERE ST12.EMPLID = ST12_ED.EMPLID
!          AND ST12.ACAD_CAREER = ST12_ED.ACAD_CAREER
!          AND ST12.ACAD_PLAN = ST12_ED.ACAD_PLAN
!          AND ST12.STDNT_CAR_NBR = ST12_ED.STDNT_CAR_NBR
!          AND ST12_ED.EFFDT <= [$input_date_M])
!    AND ST12.EFFSEQ =
!        (SELECT MAX(ST12_ES.EFFSEQ) FROM PS_ACAD_PLAN ST12_ES
!        WHERE ST12.EMPLID = ST12_ES.EMPLID
!          AND ST12.ACAD_CAREER = ST12_ES.ACAD_CAREER
!          AND ST12.ACAD_PLAN = ST12_ES.ACAD_PLAN
!          AND ST12.STDNT_CAR_NBR = ST12_ES.STDNT_CAR_NBR
!          AND ST12.EFFDT = ST12_ES.EFFDT)
     AND ST12.ACAD_PLAN = ST13.ACAD_PLAN
     AND ST13.EFFDT =
        (SELECT MAX(ST13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL ST13_ED
        WHERE ST13.INSTITUTION = ST13_ED.INSTITUTION
          AND ST13.ACAD_PLAN = ST13_ED.ACAD_PLAN
          AND ST13_ED.EFFDT <= [$input_date_M])
     AND ST12.EMPLID =  ST14.EMPLID(+)
     AND ST12.ACAD_CAREER =  ST14.ACAD_CAREER(+)
     AND ST12.STDNT_CAR_NBR =  ST14.STDNT_CAR_NBR(+)
     AND ST12.ACAD_PLAN =  ST14.ACAD_PLAN(+)
     AND ST12.effdt = st14.effdt(+)
     and st12.effseq = st14.effseq(+)
     AND ST14.ACAD_PLAN =  ST15.ACAD_PLAN(+)
     AND ST14.ACAD_SUB_PLAN =  ST15.ACAD_SUB_PLAN(+)
     AND ( ST15.EFFDT =
        (SELECT MAX(ST15_ED.EFFDT) FROM PS_ACAD_SUBPLN_TBL ST15_ED
        WHERE ST15.INSTITUTION = ST15_ED.INSTITUTION
          AND ST15.ACAD_PLAN = ST15_ED.ACAD_PLAN
          AND ST15.ACAD_SUB_PLAN = ST15_ED.ACAD_SUB_PLAN
          AND ST15_ED.EFFDT <= [$input_date_M])
     OR ST15.EFFDT IS NULL) 
     AND ST13.DEGREE = DG.DEGREE(+)
     and (dg.effdt = 
       ( select max(dg_ed.effdt) from ps_degree_tbl dg_ed
         where dg.degree = dg_ed.degree)
         or dg.effdt is null)
         order by  st12.effdt , st12.effseq , 
          decode(ST13.ACAD_PLAN_TYPE,'MAJ',1,'DMJ',3,'SP',1,'PRP',1,'CON',1,'COS',1,'HON',1,'RTC',1,'CER',2,5) desc, st12.plan_sequence desc 

end-select

! Find the first prog/plan value for this student career

Let $Min_Acad_Plan = ' '
Let $Min_Acad_Plan_Descr = ' '
Let $Min_Acad_Plan_Type = ' '
Let $Min_Degree = ' '
Let $Min_Acad_Sub_Plan = ' '
Let $Min_Acad_SubPlan_Descr = ' '
Let $Min_Acad_SubPlan_Type = ' '
Let $Min_Acad_Prog = ' '
begin-select
NVL(MNS12.ACAD_PLAN,' ') &MNS12.ACAD_PLAN, 
NVL(MNS13.DESCR,' ') &MNS13.DESCR,
NVL(MNS13.ACAD_PLAN_TYPE,' ') &MNS13.ACAD_PLAN_TYPE,
NVL(MNS13.DEGREE,' ') &MNS13.DEGREE,
NVL(MNS14.ACAD_PLAN,' ') &MNS14.ACAD_PLAN,
NVL(MNS14.ACAD_SUB_PLAN,' ' ) &MNS14.ACAD_SUB_PLAN,
NVL(MNS15.ACAD_SUBPLAN_TYPE,' ') &MNS15.ACAD_SUBPLAN_TYPE,
NVL(MNS15.DESCR,' ') &MNS15.DESCR
MNSC.ACAD_PROG
  Let $Min_Acad_Plan = &MNS12.ACAD_PLAN
  Let $Min_Acad_Plan_Descr = &MNS13.DESCR
  Let $Min_Acad_Plan_Type = &MNS13.ACAD_PLAN_TYPE
  Let $Min_Degree = &MNS13.DEGREE
  Let $Min_Acad_Sub_Plan = &MNS14.ACAD_SUB_PLAN
  Let $Min_Acad_SubPlan_Descr = &MNS15.DESCR
  Let $Min_Acad_SubPlan_Type = &MNS15.ACAD_SUBPLAN_TYPE
  Let $Min_ACAD_PROG = &MNSC.ACAD_PROG
FROM PS_ACAD_PROG MNSC, PS_ACAD_PLAN MNS12, PS_ACAD_PLAN_TBL MNS13, PS_ACAD_SUBPLAN MNS14, PS_ACAD_SUBPLN_TBL MNS15
 WHERE  MNSC.EMPLID = &STUCAR.EMPLID
     AND MNSC.ACAD_CAREER = &STUCAR.ACAD_CAREER
     AND MNSC.STDNT_CAR_NBR = &STUCAR.STDNT_CAR_NBR
!     AND MNSC.ADMIT_TERM = &STUCAR.STRM
     AND MNS13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')
     AND MNSC.EFFDT =
        (SELECT MIN(MNSC_ED.EFFDT) FROM PS_ACAD_PROG MNSC_ED
        WHERE MNSC.EMPLID = MNSC_ED.EMPLID
          AND MNSC.ACAD_CAREER = MNSC_ED.ACAD_CAREER
          AND MNSC.STDNT_CAR_NBR = MNSC_ED.STDNT_CAR_NBR
            )
    AND MNSC.EFFSEQ =
        (SELECT MIN(MNSC_ES.EFFSEQ) FROM PS_ACAD_PROG MNSC_ES
        WHERE MNSC.EMPLID = MNSC_ES.EMPLID
          AND MNSC.ACAD_CAREER = MNSC_ES.ACAD_CAREER
          AND MNSC.STDNT_CAR_NBR = MNSC_ES.STDNT_CAR_NBR
          AND MNSC.EFFDT = MNSC_ES.EFFDT)
    AND MNS12.EMPLID(+) = MNSC.EMPLID
    AND MNS12.ACAD_CAREER(+) = MNSC.ACAD_CAREER
    AND MNS12.STDNT_CAR_NBR(+) = MNSC.STDNT_CAR_NBR
    AND MNS13.INSTITUTION(+) = MNSC.INSTITUTION
     AND (MNS12.EFFDT =
        (SELECT MIN(MNS12_ED.EFFDT) FROM PS_ACAD_PLAN MNS12_ED
        WHERE MNS12.EMPLID = MNS12_ED.EMPLID
          AND MNS12.ACAD_CAREER = MNS12_ED.ACAD_CAREER
          AND MNS12.ACAD_PLAN = MNS12_ED.ACAD_PLAN
          AND MNS12.STDNT_CAR_NBR = MNS12_ED.STDNT_CAR_NBR ) or MNS12.EFFDT is NULL)
    AND (MNS12.EFFSEQ =
        (SELECT MIN(MNS12_ES.EFFSEQ) FROM PS_ACAD_PLAN MNS12_ES
        WHERE MNS12.EMPLID = MNS12_ES.EMPLID
          AND MNS12.ACAD_CAREER = MNS12_ES.ACAD_CAREER
          AND MNS12.ACAD_PLAN = MNS12_ES.ACAD_PLAN
          AND MNS12.STDNT_CAR_NBR = MNS12_ES.STDNT_CAR_NBR
          AND MNS12.EFFDT = MNS12_ES.EFFDT) or MNS12.EFFSEQ is null)
     AND MNS12.ACAD_PLAN = MNS13.ACAD_PLAN
     AND MNS13.EFFDT =
        (SELECT MIN(MNS13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL MNS13_ED
        WHERE MNS13.INSTITUTION = MNS13_ED.INSTITUTION
          AND MNS13.ACAD_PLAN = MNS13_ED.ACAD_PLAN )
     AND MNS12.EMPLID =  MNS14.EMPLID(+)
     AND MNS12.ACAD_CAREER =  MNS14.ACAD_CAREER(+)
     AND MNS12.STDNT_CAR_NBR =  MNS14.STDNT_CAR_NBR(+)
     AND MNS12.ACAD_PLAN =  MNS14.ACAD_PLAN(+)
!     AND ( MNS14.EFFDT =
!        (SELECT MIN(MNS14_ED.EFFDT) FROM PS_ACAD_SUBPLAN MNS14_ED
!        WHERE MNS14.EMPLID = MNS14_ED.EMPLID
!          AND MNS14.ACAD_CAREER = MNS14_ED.ACAD_CAREER
!          AND MNS14.ACAD_PLAN = MNS14_ED.ACAD_PLAN
!          AND MNS14.STDNT_CAR_NBR = MNS14_ED.STDNT_CAR_NBR)
!    AND MNS14.EFFSEQ =
!        (SELECT MIN(MNS14_ES.EFFSEQ) FROM PS_ACAD_SUBPLAN MNS14_ES
!        WHERE MNS14.EMPLID = MNS14_ES.EMPLID
!          AND MNS14.ACAD_CAREER = MNS14_ES.ACAD_CAREER
!          AND MNS14.ACAD_PLAN = MNS14_ES.ACAD_PLAN
!          AND MNS14.STDNT_CAR_NBR = MNS14_ES.STDNT_CAR_NBR
!          AND MNS14.EFFDT = MNS14_ES.EFFDT)
!     OR MNS14.EFFDT IS NULL)
     AND MNS12.effdt = MNS14.effdt(+)
     and MNS12.effseq = MNS14.effseq(+)

     AND MNS14.ACAD_PLAN =  MNS15.ACAD_PLAN(+)
     AND MNS14.ACAD_SUB_PLAN =  MNS15.ACAD_SUB_PLAN(+)
     AND ( MNS15.EFFDT =
        (SELECT MIN(MNS15_ED.EFFDT) FROM PS_ACAD_SUBPLN_TBL MNS15_ED
        WHERE MNS15.INSTITUTION = MNS15_ED.INSTITUTION
          AND MNS15.ACAD_PLAN = MNS15_ED.ACAD_PLAN
          AND MNS15.ACAD_SUB_PLAN = MNS15_ED.ACAD_SUB_PLAN )
     OR MNS15.EFFDT IS NULL) 
     order by MNS12.EFFDT desc
end-select

! Find the prog/plan value at the end of the term

Let $Orig_Acad_Plan = ' '
Let $Orig_Acad_Plan_Descr = ' '
Let $Orig_Acad_Plan_Type = ' '
Let $Orig_Degree = ' '
Let $Orig_Acad_Prog = ' '

begin-select
ORIG.EMPLID,
NVL(ORG12.ACAD_PLAN,' ') &ORG12.ACAD_PLAN,
NVL(ORG13.DESCR,' ') &ORG13.DESCR,
NVL(ORG13.ACAD_PLAN_TYPE,' ') &ORG13.ACAD_PLAN_TYPE,
NVL(ORG13.DEGREE,' ') &ORG13.DEGREE,
NVL(ORIG.ACAD_PROG,' ') &ORIG.ACAD_PROG
    Let $Orig_Acad_Plan = &ORG12.ACAD_PLAN
    Let $Orig_Acad_Plan_Descr = &ORG13.DESCR
    Let $Orig_Acad_Plan_Type = &ORG13.ACAD_PLAN_TYPE
    Let $Orig_Degree = &ORG13.DEGREE
    Let $Orig_Acad_Prog = &ORIG.ACAD_PROG
FROM PS_ACAD_PROG ORIG, PS_ACAD_PLAN ORG12
,PS_ACAD_PLAN_TBL ORG13
 WHERE  ORIG.EMPLID = &STUCAR.EMPLID
     AND ORIG.ACAD_CAREER = &STUCAR.ACAD_CAREER
     AND ORIG.STDNT_CAR_NBR = &STUCAR.STDNT_CAR_NBR
     AND ORIG.EFFDT =
        (SELECT MAX(ORIG_ED.EFFDT) FROM PS_ACAD_PROG ORIG_ED
        WHERE ORIG.EMPLID = ORIG_ED.EMPLID
          AND ORIG.ACAD_CAREER = ORIG_ED.ACAD_CAREER
          AND ORIG.STDNT_CAR_NBR = ORIG_ED.STDNT_CAR_NBR
          AND ORIG_ED.EFFDT <= (SELECT OD.TERM_END_DT FROM PS_TERM_TBL OD
                WHERE OD.INSTITUTION = ORIG.INSTITUTION
                AND OD.ACAD_CAREER = ORIG.ACAD_CAREER
                AND OD.STRM = &STUCAR.STRM)
            )
    AND ORIG.EFFSEQ =
        (SELECT MAX(ORG_ES.EFFSEQ) FROM PS_ACAD_PROG ORG_ES
        WHERE ORIG.EMPLID = ORG_ES.EMPLID
          AND ORIG.ACAD_CAREER = ORG_ES.ACAD_CAREER
          AND ORIG.STDNT_CAR_NBR = ORG_ES.STDNT_CAR_NBR
          AND ORIG.EFFDT = ORG_ES.EFFDT)
     AND ORG13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')
    AND ORG12.EMPLID(+) = ORIG.EMPLID
    AND ORG12.ACAD_CAREER(+) = ORIG.ACAD_CAREER
    AND ORG12.STDNT_CAR_NBR(+) = ORIG.STDNT_CAR_NBR
    AND ORG13.INSTITUTION = ORIG.INSTITUTION
     AND (ORG12.EFFDT =
        (SELECT MAX(ORG12_ED.EFFDT) FROM PS_ACAD_PLAN ORG12_ED
        WHERE ORG12.EMPLID = ORG12_ED.EMPLID
          AND ORG12.ACAD_CAREER = ORG12_ED.ACAD_CAREER
          AND ORG12.ACAD_PLAN = ORG12_ED.ACAD_PLAN
          AND ORG12.STDNT_CAR_NBR = ORG12_ED.STDNT_CAR_NBR
          AND ORG12_ED.EFFDT <= (SELECT OD12.TERM_END_DT FROM PS_TERM_TBL OD12
                WHERE OD12.INSTITUTION = ORIG.INSTITUTION
                AND OD12.ACAD_CAREER = ORIG.ACAD_CAREER
                AND OD12.STRM = &STUCAR.STRM)
            ) OR ORG12.EFFDT IS NULL)
    AND (ORG12.EFFSEQ =
        (SELECT MAX(ORG12_ES.EFFSEQ) FROM PS_ACAD_PLAN ORG12_ES
        WHERE ORG12.EMPLID = ORG12_ES.EMPLID
          AND ORG12.ACAD_CAREER = ORG12_ES.ACAD_CAREER
          AND ORG12.ACAD_PLAN = ORG12_ES.ACAD_PLAN
          AND ORG12.STDNT_CAR_NBR = ORG12_ES.STDNT_CAR_NBR
          AND ORG12.EFFDT = ORG12_ES.EFFDT) or ORG12.EFFSEQ is NULL)
     AND ORG12.ACAD_PLAN = ORG13.ACAD_PLAN
     AND ORG13.EFFDT =
        (SELECT MAX(ORG13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL ORG13_ED
        WHERE ORG13.INSTITUTION = ORG13_ED.INSTITUTION
          AND ORG13.ACAD_PLAN = ORG13_ED.ACAD_PLAN
          AND ORG13_ED.EFFDT <= [$input_date_M])
      order by decode(ORG13.ACAD_PLAN_TYPE,'MAJ',1,'DMJ',3,'SP',1,'PRP',1,'CON',1,'COS',1,'HON',1,'RTC',1,'CER',2,5) desc,
       org12.effdt , org12.effseq , ORG12.plan_sequence desc 
            
end-select

!  If there is no prog/plan value at start of term get min value after start of term

if $Orig_Acad_Plan <= ' ' or  $Orig_Acad_Prog <= ' '
begin-select
ERIG.EMPLID,
NVL(ERIG12.ACAD_PLAN,' ') &ERIG12.ACAD_PLAN,
NVL(ERIG13.DESCR,' ') &ERIG13.DESCR,
NVL(ERIG13.ACAD_PLAN_TYPE,' ') &ERIG13.ACAD_PLAN_TYPE,
NVL(ERIG13.DEGREE,' ') &ERIG13.DEGREE,
NVL(ERIG.ACAD_PROG,' ') &ERIG.ACAD_PROG
    Let $ORIG_Acad_Plan = &ERIG12.ACAD_PLAN
    Let $ORIG_Acad_Plan_Descr = &ERIG13.DESCR
    Let $Orig_Acad_Plan_Type = &ERIG13.ACAD_PLAN_TYPE
    Let $Orig_Degree = &ERIG13.DEGREE
    Let $Orig_Acad_Prog = &ERIG.ACAD_PROG
FROM PS_ACAD_PROG ERIG, PS_ACAD_PLAN ERIG12
,PS_ACAD_PLAN_TBL ERIG13
 WHERE  ERIG.EMPLID = &STUCAR.EMPLID
     AND ERIG.ACAD_CAREER = &STUCAR.ACAD_CAREER
     AND ERIG.STDNT_CAR_NBR = &STUCAR.STDNT_CAR_NBR
     AND ERIG.EFFDT =
        (SELECT MIN(ERIG_ED.EFFDT) FROM PS_ACAD_PROG ERIG_ED
        WHERE ERIG.EMPLID = ERIG_ED.EMPLID
          AND ERIG.ACAD_CAREER = ERIG_ED.ACAD_CAREER
          AND ERIG.STDNT_CAR_NBR = ERIG_ED.STDNT_CAR_NBR
          AND ERIG_ED.EFFDT > (SELECT OD.TERM_END_DT FROM PS_TERM_TBL OD
                WHERE OD.INSTITUTION = ERIG.INSTITUTION
                AND OD.ACAD_CAREER = ERIG.ACAD_CAREER
                AND OD.STRM = &STUCAR.STRM)
            )
    AND ERIG.EFFSEQ =
        (SELECT MAX(ORG_ES.EFFSEQ) FROM PS_ACAD_PROG ORG_ES
        WHERE ERIG.EMPLID = ORG_ES.EMPLID
          AND ERIG.ACAD_CAREER = ORG_ES.ACAD_CAREER
          AND ERIG.STDNT_CAR_NBR = ORG_ES.STDNT_CAR_NBR
          AND ERIG.EFFDT = ORG_ES.EFFDT)
     AND ERIG13.ACAD_PLAN_TYPE in ('MAJ','DMJ','SP','PRP','CER')
    AND ERIG12.EMPLID(+) = ERIG.EMPLID
    AND ERIG12.ACAD_CAREER(+) = ERIG.ACAD_CAREER
    AND ERIG12.STDNT_CAR_NBR(+) = ERIG.STDNT_CAR_NBR
    AND ERIG13.INSTITUTION = ERIG.INSTITUTION
     AND (ERIG12.EFFDT =
        (SELECT MIN(ERIG12_ED.EFFDT) FROM PS_ACAD_PLAN ERIG12_ED
        WHERE ERIG12.EMPLID = ERIG12_ED.EMPLID
          AND ERIG12.ACAD_CAREER = ERIG12_ED.ACAD_CAREER
          AND ERIG12.ACAD_PLAN = ERIG12_ED.ACAD_PLAN
          AND ERIG12.STDNT_CAR_NBR = ERIG12_ED.STDNT_CAR_NBR
          AND ERIG12_ED.EFFDT > (SELECT OD12.TERM_END_DT FROM PS_TERM_TBL OD12
                WHERE OD12.INSTITUTION = ERIG.INSTITUTION
                AND OD12.ACAD_CAREER = ERIG.ACAD_CAREER
                AND OD12.STRM = &STUCAR.STRM)
            ) OR ERIG12.EFFDT IS NULL)
    AND (ERIG12.EFFSEQ =
        (SELECT MAX(ERIG12_ES.EFFSEQ) FROM PS_ACAD_PLAN ERIG12_ES
        WHERE ERIG12.EMPLID = ERIG12_ES.EMPLID
          AND ERIG12.ACAD_CAREER = ERIG12_ES.ACAD_CAREER
          AND ERIG12.ACAD_PLAN = ERIG12_ES.ACAD_PLAN
          AND ERIG12.STDNT_CAR_NBR = ERIG12_ES.STDNT_CAR_NBR
          AND ERIG12.EFFDT = ERIG12_ES.EFFDT) or ERIG12.EFFSEQ is NULL)
     AND ERIG12.ACAD_PLAN = ERIG13.ACAD_PLAN
     AND ERIG13.EFFDT =
        (SELECT MAX(ERIG13_ED.EFFDT) FROM PS_ACAD_PLAN_TBL ERIG13_ED
        WHERE ERIG13.INSTITUTION = ERIG13_ED.INSTITUTION
          AND ERIG13.ACAD_PLAN = ERIG13_ED.ACAD_PLAN
          AND ERIG13_ED.EFFDT <= [$input_date_M])
           order by decode(ERIG13.ACAD_PLAN_TYPE,'MAJ',1,'DMJ',3,'SP',1,'PRP',1,'CER',2,5) desc , ERIG12.effdt, ERIG12.plan_sequence desc
        
end-select
end-if
if #n_plans = 0
	show 'No plan for ' &STUCAR.EMPLID
end-if

end-Procedure
!***********************************************************************
!  Get Current Term
!***********************************************************************

begin-procedure Current_term($in_institution,$in_career,:$This_Term_is)
Let $This_Term_is = '0000'
BEGIN-SELECT 
ENDO.STRM
  Let $This_term_is = &ENDO.STRM
FROM PS_TERM_TBL ENDO
WHERE ENDO.INSTITUTION = $in_institution
AND ENDO.ACAD_CAREER = $in_career
  AND ENDO.TERM_BEGIN_DT = 
  (SELECT MAX(ENDO_IN.TERM_BEGIN_DT) FROM PS_TERM_TBL ENDO_IN 
  WHERE ENDO_IN.INSTITUTION = ENDO.INSTITUTION
  and ENDO_IN.ACAD_CAREER = ENDO.ACAD_CAREER 
  AND ENDO_IN.TERM_BEGIN_DT <= $_input_date)
END-SELECT
end-procedure

!***********************************************************************
!  Get  Term Stats
!***********************************************************************

begin-procedure Term_stats($in_institution, $in_career, $in_strm, :$Term_begin_dt_out, :$Term_end_Dt_out)
Let $Term_begin_dt_out = STRTODATE('01-JAN-1901','DD-MON-YYYY')
Let $Term_End_Dt_Out = STRTODATE('01-JAN-1901','DD-MON-YYYY')
BEGIN-SELECT 
ENDO.STRM,
ENDO.TERM_BEGIN_DT,
ENDO.TERM_END_DT
  Let $Term_begin_dt_out = &ENDO.TERM_BEGIN_DT
  Let $Term_End_Dt_Out = &ENDO.TERM_END_DT
FROM PS_TERM_TBL ENDO
WHERE ENDO.INSTITUTION = $in_institution
AND ENDO.ACAD_CAREER = $in_career
AND ENDO.STRM = $in_strm
END-SELECT
end-procedure
!***********************************************************************
!  Get Missing Admit_type
!***********************************************************************
begin-procedure Missing_Admit_type
  Let $Adm_appl_ctr = ' '
  Let $Admit_type = ' '
  Let $ADM_APPL_DT = STRTODATE('01-JAN-1901','DD-MON-YYYY')
BEGIN-SELECT
NVL(VAP.ADM_APPL_CTR,' ') &VAP.ADM_APPL_CTR,
NVL(VAP.ADMIT_TYPE,' ') &VAP.ADMIT_TYPE,
NVL(VAP.ADM_APPL_DT, TO_DATE('01-JAN-1901 ','DD-MON-YYYY')) &VAP.ADM_APPL_DT
  Let $Adm_appl_ctr = &VAP.ADM_APPL_CTR
  Let $Admit_type = &VAP.ADMIT_TYPE
  Let $ADM_APPL_DT = &VAP.ADM_APPL_DT
FROM PS_ADM_APPL_DATA VAP
WHERE VAP.INSTITUTION = &STC.INSTITUTION
	AND VAP.ACAD_CAREER = &STC.ACAD_CAREER
	AND VAP.EMPLID = &STC.EMPLID
	AND VAP.ADM_APPL_DT = 
	   (select MAX(VAP_IN.ADM_APPL_DT)
	        from PS_ADM_APPL_DATA VAP_IN where 
	        VAP_IN.emplid = VAP.emplid 
	        and VAP_IN.acad_career = VAP.acad_career 
	        and VAP_IN.institution = VAP.institution
	        and VAP_IN.ADM_APPL_DT <= $Term_end_Dt)
end-select
!PRINT  'Missing Admit Type for ' (+1,1)
!PRINT  &STC.EMPLID (,+1)
!PRINT  'is' (,+1)
!PRINT  $Admit_type (,+1)
!PRINT  'in Term' (,+1)
!PRINT  &STUCAR.STRM (,+1)
!PRINT  'appl date =' (,+1)
!PRINT  $ADM_APPL_DT (,+1)
!PRINT  'at Institution ' (,+1)
!Print  &STC.INSTITUTION (,+1)
!PRINT  'with Term ending at' (,+1)
!PRINT  $Term_end_dt (,+1)
end-procedure
!***********************************************************************
!  Get Student Response
!***********************************************************************

Begin-Procedure Get_Response
Let $Response_Reason = ' '
Let $Response_Dt = STRTODATE('01-JAN-1901','DD-MON-YYYY')
Let $Ext_Org_Id = ' '                                                   ! I will reset this later in get_last_sch_info 
Let $Ext_Org_Id_Descr = ' '
Let $Response_Reason_Descr = ' '
begin-select
sb16.response_reason,
sb16.response_dt,
sb16.ext_org_id,
sb16.descr,
uj.descr
  if &sb16.response_reason > ' '
    Let $Response_Reason = &sb16.response_reason
  end-if
  if &sb16.response_dt > '01-JAN-06'
    Let $Response_Dt = &sb16.response_dt
  end-if
  if &sb16.ext_org_id > ' '
    Let $Ext_Org_Id = &sb16.ext_org_id                                  ! See above - this is no longer reliable
  end-if
  if &sb16.descr > ' '
    Let $Ext_Org_Id_Descr = &sb16.descr
  end-if
  if &uj.descr > ' '
  	Let $Response_Reason_Descr = &uj.descr
  end-if
from ps_stdnt_response sb16, ps_resp_rsn_tbl uj
where sb16.acad_career = uj.acad_career(+)
and sb16.response_reason = uj.response_reason(+)
and sb16.emplid = &stucar.emplid
and sb16.acad_career = &stucar.acad_career
and sb16.stdnt_car_nbr = &stucar.stdnt_car_nbr
and  &stucar.institution = uj.institution(+)
end-select
end-Procedure

begin-procedure zedo
	Let #Num_Testo = 0
	Let #Num_Compy = 0
end-procedure

begin-procedure maxxy
Let #MAX_SAT_MATH = 0
Let #MAX_SAT_VERB = 0
Let #MAX_SAT_ERWS = 0
Let #MAX_SAT_MSS = 0
Let #MAX_GRE_QUAN = 0
Let #MAX_GRE_VERB = 0
! 5 years
Let #MAX_SAT_WRIT = 0
Let #MAX_ACT_ENGL = 0
Let #MAX_ACT_MATH = 0
Let #Max_ACT_COMP = 0
! 2 years
Let #MAX_TOEFL_COMPI = 0
Let #MAX_TOEFL_COMPP = 0
Let #MAX_TOEFL_COMPC =  0
BEGIN-SELECT
MXT.TEST_COMPONENT,
MAX(MXT.SCORE) &MXT.Maxxy
  if &MXT.TEST_COMPONENT = 'MATH'
  Let #MAX_SAT_MATH = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'VERB'
  Let #MAX_SAT_VERB = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'WRIT'
 	Let #MAX_SAT_WRIT = &MXT.Maxxy
 end-if
 if &MXT.TEST_COMPONENT = 'ERWS'
  Let #MAX_SAT_ERWS = &MXT.Maxxy
  end-if
 if &MXT.TEST_COMPONENT = 'MSS'
  Let #MAX_SAT_MSS = &MXT.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP MXT
WHERE MXT.EMPLID = &STA.EMPLID
AND ( MXT.TEST_COMPONENT = 'MATH' or MXT.TEST_COMPONENT = 'VERB' or MXT.TEST_COMPONENT = 'WRIT' or MXT.TEST_COMPONENT = 'ERWS' or MXT.TEST_COMPONENT = 'MSS')
AND MXT.TEST_ID = 'SAT 1'
AND MXT.TEST_DT >= $FiveYearsAgo
group by MXT.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MOOS.TEST_COMPONENT,
MAX(MOOS.SCORE) &MOOS.Maxxy
  if &MOOS.TEST_COMPONENT = 'MATH'
  Let #MAX_ACT_MATH = &MOOS.Maxxy
  end-if
 if &MOOS.TEST_COMPONENT = 'ENGL'
  Let #MAX_ACT_ENGL = &MOOS.Maxxy
  end-if
 if &MOOS.TEST_COMPONENT = 'COMP'
 	Let #MAX_ACT_COMP = &MOOS.Maxxy
 end-if
FROM PS_STDNT_TEST_COMP MOOS
WHERE MOOS.EMPLID = &STA.EMPLID
AND ( MOOS.TEST_COMPONENT = 'MATH' or MOOS.TEST_COMPONENT = 'ENGL' or MOOS.TEST_COMPONENT = 'COMP' )
AND MOOS.TEST_ID = 'ACT'
AND MOOS.TEST_DT >= $FiveYearsAgo
group by MOOS.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MEEC.TEST_COMPONENT,
MAX(MEEC.SCORE) &MEEC.Maxxy
  if &MEEC.TEST_COMPONENT = 'COMPI'
  Let #MAX_TOEFL_COMPI = &MEEC.Maxxy
  end-if
 if &MEEC.TEST_COMPONENT = 'COMPP'
  Let #MAX_TOEFL_COMPP = &MEEC.Maxxy
  end-if
 if &MEEC.TEST_COMPONENT = 'COMPC'
 	Let #MAX_TOEFL_COMPC = &MEEC.Maxxy
 end-if
FROM PS_STDNT_TEST_COMP MEEC
WHERE MEEC.EMPLID = &STA.EMPLID
AND ( MEEC.TEST_COMPONENT = 'COMPI' or MEEC.TEST_COMPONENT = 'COMPP' or MEEC.TEST_COMPONENT = 'COMPC')
AND MEEC.TEST_ID = 'TOEFL'
AND MEEC.TEST_DT >= $TwoYearsAgo
group by MEEC.TEST_COMPONENT
END-SELECT

BEGIN-SELECT
MXV.TEST_COMPONENT,
MAX(MXV.SCORE) &MXV.Maxxy,
  if &MXV.TEST_COMPONENT = 'QUAN'
  Let #MAX_GRE_QUAN = &MXV.Maxxy
  end-if
 if &MXV.TEST_COMPONENT = 'VERB'
  Let #MAX_GRE_VERB = &MXV.Maxxy
  end-if
FROM PS_STDNT_TEST_COMP MXV
WHERE MXV.EMPLID = &STA.EMPLID
AND (MXV.TEST_COMPONENT = 'VERB' or MXV.TEST_COMPONENT = 'QUAN')
AND MXV.TEST_ID = 'GRE'
group by MXV.TEST_COMPONENT
END-SELECT

end-procedure
begin-procedure incremento
	  Let #Num_Testo = #Num_Testo + 1
	  Let #Num_Compy = 0
end-procedure

!***********************************************************************
!   Get Advisor info
!***********************************************************************
Begin-Procedure Get_Advisor
Let $Advisor_id = ' '
Let $Advisor_Last_Name = ' '
Let $Advisor_First_Name = ' '
Let $Advisor_Middle_Name = ' '
Let $Advisor_Name_Suffix = ' '
Let #n_advisor_match = 0                                                      
BEGIN-SELECT 
B.ADVISOR_ID,
B.COMMITTEE_ID
NVL(C.LAST_NAME,' ') &C.LAST_NAME,
NVL(C.FIRST_NAME,' ') &C.FIRST_NAME,
NVL(C.MIDDLE_NAME,' ') &C.MIDDLE_NAME,
NVL(C.NAME_SUFFIX,' ') &C.NAME_SUFFIX
! role of 'ADVR' is last one through                                               ! REPORT-57 no longer true
    Let $Advisor_id = &B.ADVISOR_ID
    if $Advisor_id <= ' ' 
       Let $Advisor_id = &B.COMMITTEE_ID
    end-if
    Let $Advisor_Last_Name = &C.LAST_NAME
    Let $Advisor_First_Name = &C.FIRST_NAME
    Let $Advisor_Middle_Name = &C.MIDDLE_NAME
    Let $Advisor_Name_Suffix = &C.NAME_SUFFIX
    if &Sta.emplid ='0415762' or &STA.EMPLID = '0704565' or &STA.EMPLID = '0017881'
      show &Sta.emplid ' ' &Stucar.STRM ' ' $Advisor_id
      end-if
FROM  PS_STDNT_ADVR_HIST B, PS_NAMES C, PS_TERM_TBL CSTOP                           ! REPORT-57 TERM_TBL add
WHERE  B.EMPLID = &STA.EMPLID
AND    B.INSTITUTION = &STC.INSTITUTION
AND    B.ACAD_CAREER = &STC.ACAD_CAREER
!AND    B.ADVISOR_ID > ' '                                                          ! REPORT-57
AND B.EFFDT = ( SELECT MAX(B_ED.EFFDT) FROM PS_STDNT_ADVR_HIST B_ED                 ! REPORT-57 restore subqueries
     WHERE B_ED.EMPLID = B.EMPLID
     AND B_ED.INSTITUTION = B.INSTITUTION
!     AND B_ED.ADVISOR_ROLE = B.ADVISOR_ROLE                                        ! REPORT-57
!     AND B_ED.STDNT_ADVISOR_NBR = B.STDNT_ADVISOR_NBR                              ! REPORT-57      
!     AND B_ED.EFFDT <= CSTOP.TERM_BEGIN_DT                      
      AND B_ED.EFFDT <= CSTOP.TERM_END_DT                                           ! REPORT-195
     ) 
AND B.STDNT_ADVISOR_NBR = (SELECT MIN(B_N.STDNT_ADVISOR_NBR) FROM PS_STDNT_ADVR_HIST B_N 
     WHERE B_N.EMPLID = B.EMPLID
     AND B_N.INSTITUTION = B.INSTITUTION
     AND B_N.EFFDT = B.effdt
!     AND B_N.ADVISOR_ROLE = B.ADVISOR_ROLE                                         ! REPORT-57
) 
 AND B.ADVISOR_ID = C.EMPLID(+)
 AND B.INSTITUTION = CSTOP.INSTITUTION
 AND B.ACAD_CAREER = CSTOP.ACAD_CAREER
 AND CSTOP.STRM = &STUCAR.STRM
 AND (C.NAME_TYPE = 'PRI' OR C.NAME_TYPE IS NULL)
 AND (C.EFFDT = ( SELECT MAX(C_ED.EFFDT) FROM PS_NAMES C_ED
      WHERE C_ED.EMPLID = C.EMPLID
      AND C_ED.NAME_TYPE = C.NAME_TYPE) OR C.EFFDT IS NULL)
! order by decode (B.Advisor_Role,'ADVR','9','0'),                                   ! REPORT-57 remove the order by
!  case when  b.acad_prog = &STC.ACAD_PROG then '9' else '0' end,
!  case when b.acad_plan = $Acad_Plan then '9' else '0' end, 
!	b.effdt
END-SELECT
end-procedure

!***********************************************************************
!  Sql insert rows 
!***********************************************************************

Begin-Procedure Insert_Rows
Let $Calling_Procedure = 'Insert_Rows'
let $Fubar_Date = &STC.EFFDT
BEGIN-SQL ON-ERROR=SQL-Recover
   INSERT INTO SYSADM.PS_UM_STUD_EXT_BLD
   VALUES
  	(&STUCAR.EMPLID,
     &STA.LAST_NAME,
     &STA.FIRST_NAME,
     &STA.MIDDLE_NAME,
     &STA.NAME_PREFIX,
     &STA.NAME_SUFFIX,
     &STA.NAME,
     $Previous_Name,
     $address1,
     $address2,
     $address3,
     $address4,
     $city,
     $state,
     $State_Descr,
     $postal,
     $county,
     $country,
     $Country_Descr,
     $Email_Addr,
     $Phone,
     &STA.SEX,
     &STA.BIRTHDATE,
     &STA.BIRTHPLACE,
     &STA.BIRTHSTATE,
     &STA.BIRTHCOUNTRY,
     $Nid_Usa,
     $Nid_Can,
     $Ethnic_Grp_Cd,
     $Ethnic_Category,
     $Ethnic_Descr,
     &STA.MAR_STATUS,
     CASE WHEN &STA.MAR_STATUS_DT < TO_DATE('01-JAN-1901','DD-MON-YYYY') OR &STA.MAR_STATUS_DT IS NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STA.MAR_STATUS_DT END,
     CASE WHEN &STA.DT_OF_DEATH < TO_DATE('01-JAN-1901','DD-MON-YYYY') OR &STA.DT_OF_DEATH is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STA.DT_OF_DEATH END,
     $Country_Usa,
     $Citizenship_Status_Usa,
     $Country_Oth,
     $Citizenship_Status_Oth,
     $Effective_Term,
     NVL(&STC.ADMIT_TERM,'0000'),
     $Residency,
     CASE WHEN $Residency_Dt < TO_DATE('01-JAN-1901','DD-MON-YYYY') OR $Residency_dt is null THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE $Residency_Dt END,
     $Admission_Res,
     $Admission_Excpt,
     &STUCAR.ACAD_CAREER,
     &STUCAR.STDNT_CAR_NBR,
     nvl(&STC.ADM_APPL_NBR,' '),
     &STUCAR.INSTITUTION,
     $Institution_Descr,
     NVL(&STC.ACAD_PROG,' '),
     NVL(&STC.PROG_STATUS,' '),
     NVL(&STC.PROG_ACTION,' '),
     CASE WHEN &STC.ACTION_DT < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STC.ACTION_DT is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STC.ACTION_DT END,
     NVL(&STC.PROG_REASON,' '),
     NVL(&STC.EXP_GRAD_TERM,'0000'),
     NVL(&STC.REQ_TERM,'0000'),
     NVL(&STC.ACAD_LOAD_APPR,' '),
     NVL(&STC.COMPLETION_TERM,'0000'),
     NVL(&STC.ACAD_PROG_DUAL,' '),
     NVL(&STC.JOINT_PROG_APPR,' '),
     $Acad_Prog_Descr,
     $Acad_Plan,
     CASE WHEN $Declare_dt < TO_DATE('01-JAN-1901','DD-MON-YYYY') or $Declare_dt is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE $Declare_dt END,
     #Plan_sequence,
     $STDNT_DEGR,
     $Degr_chkout_stat,
     $Advis_status,
     &STUCAR.STRM,
     CASE WHEN &STUCAR.REG_CARD_DATE < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.REG_CARD_DATE is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.REG_CARD_DATE END,
     &STUCAR.WITHDRAW_CODE,
     &STUCAR.WITHDRAW_REASON,
     CASE WHEN &STUCAR.WITHDRAW_DATE < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.WITHDRAW_DATE is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.WITHDRAW_DATE END,
     CASE WHEN &STUCAR.LAST_DATE_ATTENDED < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.LAST_DATE_ATTENDED is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.LAST_DATE_ATTENDED END,
     &STUCAR.ACAD_PROG_PRIMARY,
     &STUCAR.NSLDS_LOAN_YEAR,
     &STUCAR.OVRD_ACAD_LVL_ALL,
     &STUCAR.OVRD_ACAD_LVL_PROJ,
     &STUCAR.ELIG_TO_ENROLL,
     &STUCAR.OVRD_MAX_UNITS,
     &STUCAR.MAX_TOTAL_UNIT,
     &STUCAR.MAX_NOGPA_UNIT,
     &STUCAR.MAX_AUDIT_UNIT,
     &STUCAR.MAX_WAIT_UNIT,
     &STUCAR.MIN_TOTAL_UNIT,
     &STUCAR.OVRD_BILL_UNITS,
     &STUCAR.PROJ_BILL_UNT,
     &STUCAR.UNT_TAKEN_GPA,
     &STUCAR.UNT_PASSD_GPA,
     &STUCAR.UNT_TAKEN_NOGPA, 
     &STUCAR.UNT_PASSD_NOGPA,
     &STUCAR.UNT_INPROG_GPA,
     &STUCAR.UNT_INPROG_NOGPA, 
     &STUCAR.UNT_AUDIT,
     &STUCAR.TRF_TAKEN_GPA, 
     &STUCAR.TRF_TAKEN_NOGPA, 
     &STUCAR.TRF_PASSED_GPA,
     &STUCAR.TRF_PASSED_NOGPA, 
     &STUCAR.TRF_GRADE_POINTS,
     &STUCAR.UNT_TEST_CREDIT,
     &STUCAR.UNT_OTHER,
     &STUCAR.UNT_TAKEN_FA,
     &STUCAR.UNT_PASSD_FA,
     &STUCAR.UNT_TAKEN_FA_GPA,
     &STUCAR.GRADE_POINTS_FA,
     &STUCAR.RESET_CUM_STATS,
     &STUCAR.TOT_TAKEN_PRGRSS,
     &STUCAR.TOT_TAKEN_GPA,
     &STUCAR.TOT_PASSD_GPA,
     &STUCAR.TOT_TAKEN_NOGPA,
     &STUCAR.TOT_PASSD_NOGPA,
     &STUCAR.TOT_INPROG_GPA,
     &STUCAR.TOT_INPROG_NOGPA,
     &STUCAR.TOT_AUDIT,
     &STUCAR.TOT_TRNSFR,
     &STUCAR.TOT_TEST_CREDIT,
     &STUCAR.TOT_OTHER,
     &STUCAR.TOT_CUMULATIVE,
     &STUCAR.TOT_TAKEN_FA,
     &STUCAR.TOT_PASSD_FA,
     &STUCAR.TOT_TAKEN_FA_GPA,
     &STUCAR.TOT_GRD_POINTS_FA,
     &STUCAR.FORM_OF_STUDY,
     &STUCAR.TERM_TYPE,
     &STUCAR.CLASS_RANK_NBR, 
     &STUCAR.CLASS_RANK_TOT,
     &STUCAR.SEL_GROUP, 
     &STUCAR.TUIT_CALC_REQ, 
     &STUCAR.TUIT_CALC_DTTM,
     &STUCAR.FA_STATS_CALC_REQ,
     &STUCAR.FA_STATS_CALC_DTTM,
     &STUCAR.FA_ELIGIBILITY,
     &STUCAR.BILLING_CAREER,
     &STUCAR.UNIT_MULTIPLIER,
     &STUCAR.ACAD_YEAR,
     &STUCAR.ACAD_GROUP_ADVIS,
     &STUCAR.CUR_RESIDENT_TERMS ,
     &STUCAR.TRF_RESIDENT_TERMS ,
     &STUCAR.CUM_RESIDENT_TERMS ,
     &STUCAR.REFUND_PCT ,
     &STUCAR.REFUND_SCHEME ,
     &STUCAR.PRO_RATA_ELIGIBLE , 
     CASE WHEN &stucar.fully_enrl_dt < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &stucar.fully_enrl_dt is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &stucar.fully_enrl_dt END,
     CASE WHEN &STUCAR.ENRL_ON_TRANS_DT < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.ENRL_ON_TRANS_DT is null THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.ENRL_ON_TRANS_DT END,
     CASE WHEN &STUCAR.STATS_ON_TRANS_DT < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.STATS_ON_TRANS_DT is null THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.STATS_ON_TRANS_DT END,
     CASE WHEN &STUCAR.FULLY_GRADED_DT < TO_DATE('01-JAN-1901','DD-MON-YYYY') or &STUCAR.FULLY_GRADED_DT is null THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE &STUCAR.FULLY_GRADED_DT END,
     &STUCAR.STUDY_AGREEMENT ,
     &STUCAR.START_DATE,
     &STUCAR.END_DATE,
     &STUCAR.MAX_CRSE_COUNT ,
     &STUCAR.REGISTERED ,
     &STUCAR.OVRD_TUIT_GROUP ,
     &STUCAR.OVRD_WDRW_SCHED ,
     &STUCAR.TUITION_RES_TERMS  , 
     &STUCAR.OVRD_INIT_ADD_FEE , 
     &STUCAR.OVRD_INIT_ENR_FEE ,
     &STUCAR.TC_UNITS_ADJUST ,
     &STUCAR.LOCK_IN_AMT , 
     &STUCAR.LOCK_IN_DT,
     &STUCAR.ACAD_CAREER_FIRST, 
     &STUCAR.ACADEMIC_LOAD_DT,
     &STUCAR.UNTPRG_CHG_NSLC_DT,
     &STUCAR.SSR_ACTIVATION_DT, 
     $Acad_Plan_Descr,
     $Acad_Plan_Type,
     $Academic_Group,                                                                                           
     $Academic_Group_Descr,                                              
     $Degree,
     $Acad_Sub_Plan,
     $Acad_SubPlan_Descr,
     $Acad_SubPlan_Type,
     $Response_Reason,
     $Response_Reason_Descr,
     CASE WHEN $Response_Dt < TO_DATE('01-JAN-1901','DD-MON-YYYY') or $Response_Dt is NULL THEN TO_DATE('01-JAN-1901','DD-MON-YYYY') ELSE $Response_Dt END,
     $Ext_Org_Id,
     $Ext_Org_Id_Descr,
     #Max_SAT_Math, #Max_SAT_Verb,
     #Max_GRE_QUAN, #Max_GRE_VERB,
     $Last_Sch_Descr, $Last_Sch_Type,
     #Max_SAT_WRIT, #Max_ACT_MATH, #Max_ACT_ENGL, #MAX_ACT_COMP, #MAX_TOEFL_COMPI, #MAX_TOEFL_COMPP, #MAX_TOEFL_COMPC,
     $Min_Acad_prog, $Min_Acad_Plan,
     $Min_Acad_Sub_Plan ,NVL(&STC.CAMPUS,' '), &Stucar.unt_term_tot, &stucar.grade_points, &Stucar.cur_gpa, &stucar.cum_gpa,
     &stucar.acad_level_bot, &stucar.acad_level_eot, &stucar.acad_level_proj, $Acad_Level_bot_descr,
      &stucar.academic_load, &stucar.fa_load,
      &Stucar.unt_taken_prgrss, &stucar.unt_passd_prgrss,
     &stucar.unt_trnsfr, &stucar.tot_passd_prgrss, &stucar.tot_grade_points, $Row_check,
     #Tuition, #Fees ,#Web_Hrs, #Dist_Hrs, #Itv_Hrs, $ADM_APPL_CTR, $ADMIT_TYPE,
     $UMS01_FLAG,$UMS02_FLAG,$UMS03_FLAG,$UMS04_FLAG,$UMS05_FLAG,$UMS06_FLAG,$UMS07_FLAG, 
     $Level_Load_Rule,$Advisor_id,$Advisor_Last_Name,$Advisor_First_Name,$Advisor_Middle_Name,$Advisor_Name_Suffix
     ,$Education_Lvl, #UMS01_UNT_TAKEN_PRGRSS, #UMS02_UNT_TAKEN_PRGRSS,#UMS03_UNT_TAKEN_PRGRSS,#UMS04_UNT_TAKEN_PRGRSS,
      #UMS05_UNT_TAKEN_PRGRSS, #UMS06_UNT_TAKEN_PRGRSS, #UMS07_UNT_TAKEN_PRGRSS,
      $Acad_Prog_Primary_Descr, &PIN.PIN_NUM, &PIN.VALIDATED, &PIN.VALIDATED_DT,
      #um_unt_taken_prgrss_rowc, $Hom_Email_Addr, $UM_ACAD_LOAD_RC, $Orig_Acad_Prog, $Orig_Acad_Plan, 
      $Ethnic_group, $Hisp_latino, $Multi_Race, $UM_ETH_GRP_DESCR, &APX.GRADUATION_DT
      ,#units_this_career,#MAX_SAT_ERWS, #MAX_SAT_MSS)
	END-SQL
!   if #rec_mark = 0
!   begin-sql
!   commit
!   end-sql     
!   end-if

 End-Procedure

!***********************************************************************
!  Procedure  Get Rows 
!                                                                      *                    
!***********************************************************************

Begin-Procedure GET_ROWS
Let $Calling_Procedure = 'GET_ROWS'
Let #APPLES1 = 0
Let #APPLES2 = 0
Let #APPLES3 = 0
Let #APPLES4 = 0
Let #APPLES5 = 0
Let #APPLES6 = 0
Let #APPLES7 = 0
Let #APP_COUNT = 0
Begin-Select
S.EMPLID,
S.LAST_NAME,
S.FIRST_NAME,
S.Email_Addr,
S.SEX,
S.BIRTHDATE,
S.Ethnic_Grp_Cd,
S.Ethnic_Category,
S.UM_Ethnic_Descr,
S.UM_Country_Usa,
S.Citizenship_Status,
S.Residency,
S.ACAD_CAREER,
S.STDNT_CAR_NBR,
S.INSTITUTION,
S.ACAD_PROG,
S.Acad_Prog_Descr,
S.Acad_Plan,
S.UM_Acad_Plan_Descr

   Let #APP_COUNT = #APP_COUNT + 1
   evaluate &S.INSTITUTION
	  when = 'UMS01'                      
		  Let #APPLES1 = #APPLES1 + 1
	  	break
	  when = 'UMS02'                      
		  Let #APPLES2 = #APPLES2 + 1
	  	break
   	when = 'UMS03'                      
		  Let #APPLES3 = #APPLES3 + 1
		  break
	  when = 'UMS04'                     
		  Let #APPLES4 = #APPLES4 + 1
		  break
	  when = 'UMS05'                      
		  Let #APPLES5 = #APPLES5 + 1
		  break
	  when = 'UMS06'                     
		  Let #APPLES6 = #APPLES6 + 1
		  break
	  when = 'UMS07'                      
		  Let #APPLES7 = #APPLES7 + 1
		  break
	  end-evaluate
!  Print &S.INSTITUTION (+1,1) on-break print=never before=Before_INS
!  Print &S.EMPLID (+1,1,20) bold shade
!  Print &S.FIRST_NAME (,+2,25) bold shade
!  Print &S.LAST_NAME (,+2,50) bold shade
!  Print &S.SEX (,+2)
!  Print &S.BIRTHDATE (,+2)
!  Print &S.Ethnic_Grp_Cd (,+2)
!  Print &S.ACAD_CAREER (+1,1)
!  Print &S.ACAD_PROG (,+2)
!  Print &S.ADMIT_TERM (,+2)
!  Print &S.Acad_Plan (,+2)
!   print '=================================================================================' (+1,1)
FROM PS_UM_STUD_EXTRACT S
where S.ADMIT_TERM >= [$Input_Trm1_M] and S.ADMIT_TERM <= [$Input_Term2_M]
ORDER by S.INSTITUTION, S.LAST_NAME, S.FIRST_NAME
 
End-Select	
print '=================================================================================' (+1,1)
Print 'Students Selected:' (+1,1)
print '---------------------------------------------------------------------------------' (+1,1)
print '  UMS01  ' (+1,1) underline
print '  UMS02  ' (,12) underline
print '  UMS03  ' (,24) underline
print '  UMS04  ' (,36) underline
print '  UMS05  ' (,48) underline
print '  UMS06  ' (,60) underline
print '  UMS07  ' (,72) underline
print '  TOTAL  ' (,84) underline
print #APPLES1 (+1,1) edit '9999,999'
print #APPLES2 (,12) edit '9999,999'
print #APPLES3 (,24) edit '9999,999'
print #APPLES4 (,36) edit '9999,999'
print #APPLES5 (,48) edit '9999,999'
print #APPLES6 (,60) edit '9999,999'
print #APPLES7 (,72) edit '9999,999'
print #APP_COUNT (,84) edit '9999,999'
print '=================================================================================' (+1,1)
End-Procedure  ! Get_Rows
!***********************************************************************
! Long Institution Name
!
!***********************************************************************
Begin-Procedure Pretty_INS
evaluate &S.INSTITUTION
	when = 'UMS01'                      
		Let $INSTITUTION_NAME = 'University of Maine at Augusta' 
		break
	when = 'UMS02'                      
		Let $INSTITUTION_NAME = 'Univ of Maine at Farmington' 
		break
	when = 'UMS03'                      
		Let $INSTITUTION_NAME = 'Univ of Maine at Fort Kent' 
		break
	when = 'UMS04'                     
		Let $INSTITUTION_NAME = 'University of Maine at Machias' 
		break
	when = 'UMS05'                      
		Let $INSTITUTION_NAME = 'University of Maine' 
		break
	when = 'UMS06'                     
		Let $INSTITUTION_NAME = 'University of Southern Maine' 
		break
	when = 'UMS07'                      
		Let $INSTITUTION_NAME = 'Univ of Maine at Presque Isle' 
		break
	when-other
		Let $INSTITUTION_NAME = &S.INSTITUTION 
end-evaluate
end-procedure

!***********************************************************************
!    Rank Academic Career
!***********************************************************************
begin-procedure career_rank($strm, $institution, $emplid, $acad_career_in, :$funny_cars)
Let $funny_cars = 'N'
begin-select 
caz.acad_career,
!rank() over (order by case when caz.fa_eligibility = 'Y' then 'X' else 'Z' end, decode(caz.acad_career,'LAW','1','GRAD','2','UGRD','3','4')) &Ranko
rank() over (order by decode(caz.acad_career,'LAW','1','GRAD','2','PBAC','3','UGRD','4','5')) &Ranko
	  if &caz.acad_career = $acad_career_in and &Ranko = 1
	  	Let $funny_cars = 'Y'
	  end-if
from PS_STDNT_ENRL caz
where caz.strm = &_STUCAR.STRM
and caz.institution = &_STUCAR.INSTITUTION
and caz.emplid = &_STUCAR.EMPLID
!and caz.acad_career = $acad_career_in
and caz.unt_prgrss > 0
and caz.stdnt_enrl_status = 'E'
AND (CAZ.EARN_CREDIT = 'Y' 
  or (CAZ.UNITS_ATTEMPTED <> 'N' AND CAZ.AUDIT_GRADE_BASIS = 'N') and CAZ.ENRL_DROP_DT is null )


end-select
end-procedure

!***********************************************************************
! Institution Break
!
!***********************************************************************
Begin-Procedure Before_INS
  do Pretty_ins
  if $first_time = 'Y'
  	 Let $First_time = 'N'
  else
	   new-page
	end-if

end-procedure

begin-procedure interval_commit
	Let #rec_mark = mod(#STU_COUNT,500)
 if #rec_mark = 0
 show #stu_count ' records so far.'
 begin-sql
 commit
 end-sql
 end-if
end-procedure

!***********************************************************************
! Move data from um_stud_ext_bld to um_stud_extract
!***********************************************************************

begin-procedure Blasto_Data
Begin-select
count(*) &CTR_UM_BLD
FROM SYSADM.PS_UM_STUD_EXT_BLD buildies
end-select
if &CTR_UM_BLD > 0	 
	 if $input_Flag2 = 'Y'
    BEGIN-SQL 
    TRUNCATE TABLE PS_UM_STUD_EXTRACT
    END-SQL
   else
    begin-sql 
    DELETE  FROM ps_um_stud_extract dxx where dxx.strm >= [$Input_Trm1_M] and dxx.strm <= [$Input_Term2_M]
    end-sql
  end-if

   BEGIN-SQL 
   COMMIT
   END-SQL
   show 'Extract trimmed.'
   
   BEGIN-SQL
   INSERT INTO PS_UM_STUD_EXTRACT ( SELECT * FROM SYSADM.PS_UM_STUD_EXT_BLD)
   END-SQL
   
   BEGIN-SQL
   COMMIT
   END-SQL
   show 'Rows inserted from UM_STUD_EXT_BLD.'
  end-if
end-procedure

!***********************************************************************
! SQL-Recover Procedure
!***********************************************************************
Begin-Procedure SQL-Recover

show '$Calling_Procedure => ' $Calling_Procedure
display $SQL-Error
Do Extract_Control('3', 'PS_UM_STUD_EXTRACT','UMSTUEXT', $Control_now, $prcs_oprid, $prcs_run_cntl_id,
   $input_date, $Input_Term, $Input_Term2, &R.FLAG1, &R.FLAG2, &R.FLAG3)

show 'Fields: ' &STUCAR.EMPLID ' '&STA.NAME ' '  &STUCAR.ACAD_CAREER ' '  &STUCAR.INSTITUTION 
!show '1   ' &STUCAR.EMPLID ' ' &STA.LAST_NAME ' '  &STA.FIRST_NAME ' ' &STA.MIDDLE_NAME ' '  &STA.NAME
!show '2   '$Previous_Name ' ' &STA.ADDRESS1 ' '  &STA.ADDRESS2 ' ' &STA.ADDRESS3 ' ' &STA.ADDRESS4
!show '3   '  &STA.CITY ' '  &STA.STATE ' ' $State_Descr ' '  &STA.POSTAL ' ' &STA.COUNTY ' ' &STA.COUNTRY ' '  $Country_Descr
!show '4   '     $Email_Addr ' ' $Phone ' ' &STA.SEX
!show '5D  '     &STA.BIRTHDATE 
!show '6   '     &STA.BIRTHPLACE ' '  &STA.BIRTHSTATE ' ' &STA.BIRTHCOUNTRY ' ' $Nid_Usa ' '  $Nid_Can ' ' $Ethnic_Grp_Cd
!show '7   '     $Ethnic_Category ' ' $Ethnic_Descr ' '  &STA.MAR_STATUS
!show '8D  >' &STA.MAR_STATUS_DT '<'
!show '9D  >' &STA.DT_OF_DEATH '<'
!show '10  '      $Country_Usa ' '  $Citizenship_Status_Usa ' ' $Country_Oth ' '  $Citizenship_Status_Oth ' '  $Effective_Term ' '&STC.ADMIT_TERM
!show '11  '      $Residency
!show '12D >'   $Residency_Dt '<' 
show '13  '  $Admission_Res ' '  $Admission_Excpt ' ' &STUCAR.ACAD_CAREER ' ' &STUCAR.STDNT_CAR_NBR ' ' &STC.ADM_APPL_NBR
!show '14  '   &STUCAR.INSTITUTION ' '  $Institution_Descr ' ' &STC.ACAD_PROG ' ' &STC.PROG_STATUS ' ' &STC.PROG_ACTION
!show '15  ' &STC.ACTION_DT
!show '16  ' &STC.PROG_REASON ' ' &STC.EXP_GRAD_TERM ' ' &STC.REQ_TERM ' ' &STC.ACAD_LOAD_APPR ' ' &STC.COMPLETION_TERM ' ' &STC.ACAD_PROG_DUAL
!show '17  ' &STC.JOINT_PROG_APPR ' '  $Acad_Prog_Descr ' ' $Acad_Plan ' ' 
!show '18D >' $Declare_dt '<'
show '19  '  #Plan_sequence ' ' $STDNT_DEGR ' '  $Degr_chkout_stat ' '  $Advis_status ' '  &STUCAR.STRM ' '
!show '20D >' &STUCAR.REG_CARD_DATE '<'
!show '21  '   &STUCAR.WITHDRAW_CODE ' '  &STUCAR.WITHDRAW_REASON
!show '22D >' &STUCAR.WITHDRAW_DATE '<'
!show '23D >' &STUCAR.LAST_DATE_ATTENDED '<'
!show '24  ' &STUCAR.ACAD_PROG_PRIMARY ' ' &STUCAR.NSLDS_LOAN_YEAR ' ' &STUCAR.OVRD_ACAD_LVL_ALL ' '  &STUCAR.OVRD_ACAD_LVL_PROJ ' '&STUCAR.ELIG_TO_ENROLL
!show '25  '   &STUCAR.OVRD_MAX_UNITS ' '  &STUCAR.MAX_TOTAL_UNIT ' ' &STUCAR.MAX_NOGPA_UNIT ' '  &STUCAR.MAX_AUDIT_UNIT ' ' &STUCAR.MAX_WAIT_UNIT
!show '26  '  &STUCAR.MIN_TOTAL_UNIT ' '  &STUCAR.OVRD_BILL_UNITS ' '  &STUCAR.PROJ_BILL_UNT ' '  &STUCAR.UNT_TAKEN_GPA ' '     &STUCAR.UNT_PASSD_GPA
!show '27  ' &STUCAR.UNT_TAKEN_NOGPA ' ' &STUCAR.UNT_PASSD_NOGPA ' '  &STUCAR.UNT_INPROG_GPA ' ' &STUCAR.UNT_INPROG_NOGPA ' '  &STUCAR.UNT_AUDIT
!show '28  '  &STUCAR.TRF_TAKEN_GPA ' ' &STUCAR.TRF_TAKEN_NOGPA ' '  &STUCAR.TRF_PASSED_GPA ' '  &STUCAR.TRF_PASSED_NOGPA ' ' &STUCAR.TRF_GRADE_POINTS
!show '29  '  &STUCAR.UNT_TEST_CREDIT ' ' &STUCAR.UNT_OTHER ' ' &STUCAR.UNT_TAKEN_FA ' ' &STUCAR.UNT_PASSD_FA ' ' &STUCAR.UNT_TAKEN_FA_GPA ' ' &STUCAR.GRADE_POINTS_FA
!show '30  '   &STUCAR.RESET_CUM_STATS ' ' &STUCAR.TOT_TAKEN_PRGRSS ' ' &STUCAR.TOT_TAKEN_GPA ' '  &STUCAR.TOT_PASSD_GPA ' ' &STUCAR.TOT_TAKEN_NOGPA
!show '31  '     &STUCAR.TOT_PASSD_NOGPA ' ' &STUCAR.TOT_INPROG_GPA ' ' &STUCAR.TOT_INPROG_NOGPA ' '  &STUCAR.TOT_AUDIT ' ' &STUCAR.TOT_TRNSFR ' ' &STUCAR.TOT_TEST_CREDIT
!show '32  '      &STUCAR.TOT_OTHER ' ' &STUCAR.TOT_CUMULATIVE ' ' &STUCAR.TOT_TAKEN_FA ' ' &STUCAR.TOT_PASSD_FA ' '  &STUCAR.TOT_TAKEN_FA_GPA ' '  &STUCAR.TOT_GRD_POINTS_FA
!show '33  '      &STUCAR.FORM_OF_STUDY ' '  &STUCAR.TERM_TYPE ' ' &STUCAR.CLASS_RANK_NBR ' ' &STUCAR.CLASS_RANK_TOT ' ' &STUCAR.SEL_GROUP ' ' &STUCAR.TUIT_CALC_REQ 
!show '34DT >' &STUCAR.TUIT_CALC_DTTM '<'
!show '35  '     &STUCAR.FA_STATS_CALC_REQ
!show '36DT >' &STUCAR.FA_STATS_CALC_DTTM '<'
!show '37  '  &STUCAR.FA_ELIGIBILITY ' ' &STUCAR.BILLING_CAREER ' ' &STUCAR.UNIT_MULTIPLIER ' ' &STUCAR.ACAD_YEAR ' ' &STUCAR.ACAD_GROUP_ADVIS
!show '38  '  &STUCAR.CUR_RESIDENT_TERMS ' ' &STUCAR.TRF_RESIDENT_TERMS ' '  &STUCAR.CUM_RESIDENT_TERMS ' ' &STUCAR.REFUND_PCT  ' '   &STUCAR.REFUND_SCHEME 
!show '39  '     &STUCAR.PRO_RATA_ELIGIBLE 
!show '40D >'   &stucar.fully_enrl_dt
!show '41D >' &STUCAR.ENRL_ON_TRANS_DT '<'
!show '42D >' &STUCAR.STATS_ON_TRANS_DT '<'
!show '43D >' &STUCAR.FULLY_GRADED_DT '<'
!show '44  ' &STUCAR.STUDY_AGREEMENT
!show '45D >' &STUCAR.START_DATE '<'
!show '46D >' &STUCAR.END_DATE '<'
!show '47  ' &STUCAR.MAX_CRSE_COUNT ' '  &STUCAR.REGISTERED ' ' &STUCAR.OVRD_TUIT_GROUP ' ' &STUCAR.OVRD_WDRW_SCHED ' ' &STUCAR.TUITION_RES_TERMS   
!show '48  ' &STUCAR.OVRD_INIT_ADD_FEE  ' ' &STUCAR.OVRD_INIT_ENR_FEE ' ' &STUCAR.TC_UNITS_ADJUST ' ' &STUCAR.LOCK_IN_AMT ' '
!show '49  ' &STUCAR.LOCK_IN_DT
!show '50  ' &STUCAR.ACAD_CAREER_FIRST  
!show '51D >' &STUCAR.ACADEMIC_LOAD_DT '<'
!show '52D >' &STUCAR.UNTPRG_CHG_NSLC_DT '<'
!show '53D >' &STUCAR.SSR_ACTIVATION_DT '<'
!show '54  '      $Acad_Plan_Descr ' ' $Acad_Plan_Type ' ' $Academic_Group ' ' $Academic_Group_Descr ' '  $Degree ' '  $Acad_Sub_Plan
!show '55  '      $Acad_SubPlan_Descr ' '  $Acad_SubPlan_Type ' '  $Response_Reason ' ' $Response_Reason_Descr ' '
!show '56D >'  $Response_Dt '<'
!show '57  '   $Ext_Org_Id ' ' $Ext_Org_Id_Descr ' ' #Max_SAT_Math ' ' #Max_SAT_Verb ' ' #Max_GRE_QUAN ' ' #Max_GRE_VERB ' ' $Last_Sch_Descr
!show '58  '  $Last_Sch_Type ' '  #Max_SAT_WRIT ' ' #Max_ACT_MATH ' ' #Max_ACT_ENGL ' ' #MAX_ACT_COMP ' ' #MAX_TOEFL_COMPI ' ' #MAX_TOEFL_COMPP
!show '59  '  #MAX_TOEFL_COMPC ' ' $Min_Acad_prog ' ' $Min_Acad_Plan ' ' $Min_Acad_Sub_Plan ' ' &STC.CAMPUS
!show '60  ' &Stucar.unt_term_tot ' ' &stucar.grade_points ' ' &Stucar.cur_gpa ' ' &stucar.cum_gpa
!show '61  ' &stucar.acad_level_bot ' ' &stucar.acad_level_eot ' ' &stucar.acad_level_proj ' ' $Acad_Level_bot_descr
!show '62  '      &stucar.academic_load ' ' &stucar.fa_load
!show '63  '      &stucar.unt_taken_prgrss ' ' &stucar.unt_passd_prgrss ' ' &stucar.unt_trnsfr ' ' &stucar.tot_passd_prgrss
!show '64  '  &stucar.tot_grade_points ' ' $Row_check,
!show '65  '      #Tuition ' ' #Fees ' '#Web_Hrs ' ' #Dist_Hrs ' ' $ADM_APPL_CTR ' ' $ADMIT_TYPE
!show '66  '     $UMS01_FLAG ' ' $UMS02_FLAG ' ' $UMS03_FLAG ' ' $UMS04_FLAG ' '$UMS05_FLAG ' '$UMS06_FLAG ' '$UMS07_FLAG 

End-Procedure SQL-Recover


!***********************************************************************
!SQC Include Files                                                     *
!***********************************************************************
#include 'stdapi.sqc'		!Update Process API
#include 'datetime.sqc'		!Date and Time Functions
#include 'datemath.sqc'		!Date Manipulation Routines
#include 'curdttim.sqc' 	!Get-Current-DateTime procedure
#include 'tranctrl.sqc'		!Transaction Control
#include 'umextctl.sqc'   !Extract Control