CHRS Knowledge Base

WA Primary Job Indicator

Updated on

 

Background

Primary Job Indicator in PeopleSoft Workforce Administration is used to flag an employment instance and identify an appointment as the primary job for an employee.  The Job Indicator field is set to ‘Primary Job’ when an employee is first entered into the system. Any concurrent job entered into in the system inserts ‘Secondary Job’ into the Job Indicator field. Currently campuses are responsible for the maintenance of this field via manual process, based on their own business process.

In CHRS Recruiting, PeopleSoft data will be extracted to be pushed into CHRS Recruiting to create users in the recruiting system, and to automatically grant/terminate access to that system.  This user file in CHRS Recruiting links an active employee’s Empl ID to the same employee’s Primary Job Position ID. This data will be pulled from PeopleSoft and fed into CHRS Recruiting.  If an employee has no primary job indicator flag set to Primary, the user be brought over to CHRS Recruiting without any linkage to a position.

For CHRS Recruiting Wave I, all affected campuses have a process in place which addresses this need.  However, since this may not be the case at the rest of the campuses, and it has been determined that this field is crucial for auto completing incumbent and reports_to fields in CHRS Recruiting, this position paper will ensure that everyone is aware of the need to have a process which will result in consistency across the system and to allow all campuses to effectively utilize CHRS Recruiting.

Issue

For campuses that do not have a process in place, there will need to be consistency across the system to ensure the same order of evaluation for multiple records is followed.

Among those with an existing process in place, some are relying on a manual process, which involves periodic review and manual correction to the Primary Job Indicator if needed; others have an automatic process, which nightly maintains the primary job indicator field.  However, not all campuses are using the same criteria to determine which position should be identified as the Primary Job.

The Workforce Admin group has written a GRP for CHRS (GRP #123 - WA Primary Job Indicator) that addresses this need in CHRS. However, since Recruiting will be rolled out prior to the CHRS implementation, campuses will need to have a process in place to regularly maintain the primary job field; failing to do so in 9.0 would impact position incumbent and reports_to fields  in Recruiting (PageUp).

Analysis

The following campuses have been identified as “Wave I” campuses for CHRS Recruiting (Page Up), and all have a working process in place to maintain the Primary Job Indicator Field:

  • Fullerton

  • San Bernardino

  • San Diego

  • San Luis Obispo

  • Stanislaus

The remaining campuses will be polled to identify what process if any is used.

Available options to ensure Primary Job Indicator is maintained are as follows:

  1. Allow campuses to develop a customized, automatic process via COMR to assign and maintain Primary Job Indicator in their current PRD instance. Although this would automate the process, and minimize the risk of dropping active users due to lack of Primary Job Indicator, campuses would not be prevented from using their own criteria to identify the Primary Job.  
  2. Seek the opportunity to standardize, and adjust the coding for GRP #123 to allow campuses to use the functionality in PeopleSoft 9.0.  Since the development work has not been completed yet, adjusting it for 9.0 might require additional time and resources.  
  3. A third option is a hybrid approach of options #1 and #2; share the logic and codes used for GRP #123,  and allow campuses to code based on this logic.  Each campus will use a COMR process to run the code in their own instance as they prepare to implement Recruiting at their campus.   Coding written by the earlier Recruiting implementation waves should be shared with the later waves to ensure the standard processes and criteria are followed throughout.  Campus resources will still be needed to adjust the codes to their campus environment. 

Recommendations

Due to the fact that GRP #123 will not be ready on time for the Recruiting implementation, and central CMS does not have the capacity to develop the coding in PeopleSoft 9.0, we recommend Option #3; sharing coding planned for use with GRP #123 with each campus to have them to develop their own COMR for Primary Job Indicator maintenance.  

If a campus has a process for primary job flag review and correction, it must be complete before 6:00 p.m. The Integration PS to PU - automated data extraction is scheduled at 6:00 p.m. nightly from Sunday through Thursday.  Otherwise, it will not be included in the nightly pull by the integration process PS to PU.

Considerations

This change will be on a go-forward basis; retroactive cleanup will not be required.

Cross-Functional Impacts (Positive / Negative)

  • Benefits Administration: N/A
  • Labor Cost Distribution: N/A
  • Workforce Administration: described above
  • Time & Labor: described above
  • Absence Management: described above
  • Temp Faculty: none anticipated, pending more discussion with the team.
  • Recruiting: described above

CHANGE IMPACT

To be filled out by BSA (from Change Impact Tracking log):

ModuleMap IDChange Impact Log IDMap NameImpact Type% of Employees Impact
WA12643Update JobProcess 

The following items will be answered / addressed by Change Management:

  1. Areas of potential change resistance to proposed HR process / policy changes?

    Campuses may not have the resources or be willing to free up the resources to develop their own COMR.

  2. Potential resource needs in order to plan, engage, prepare, and/or deploy the change?

    For now, if campuses have an existing process for identifying Primary Job they can continue with their existing process; alternatively, they can utilize the SQR provided in Appendix B to put CHRS processes in place now. Each campus will need a resource to develop the COMR for this change in PeopleSoft 9.0. 

    The Business Process Guide will need to be updated (or one created if there is none). 

  3. Associated costs relative to the scope of the change to requirements requested?

    A resource at each campus will be needed for coding the COMR. 

  4. Training needs or if a straightforward change?

    Training on the new process will be required. 

  5. Implication on any other related process / functions?

    An updated process for maintenance of Primary Job Indicator will change the existing process or be a completely new one for campuses who do not use it.

REVISION CONTROL

Revision History

Revision DateReviewed BySummary of RevisionsSection(s) Revised

8/31/18 

Xiaodong Zhu 

Created new document 

All 

9/4/18 

Beverly Mausbach 

Updated verbiage throughout 

All 

10/11/18 

Beverly Mausbach 

Updated to reflect mention of campus processes 

Background, Analysis 

10/22/18 

Beverly Mausbach 

SQR added  

Appendix II 

11/16/18 

Beverly Mausbach 

Campus details on processing of Primary Job 

Appendix III 

4/11/19 

Meryl Montalto 

Added nightly process schedule 

Recommendations 

    
    

Review/Approval History

Review DateReviewed ByAction (Reviewed, Recommended, Approved, Denied, Cancelled)Comments

10/10/18 

Change Management 

Approved 

Survey requested to determine process the non-Wave I campuses use.  Results are in Appendix III. 

10/24/18 

CMS Management 

Approved 

 

NA 

Finance 

 

 

10/17/18 

Standardization Workgroup 

Reviewed 

 

10/23/18 

SWHR 

Reviewed 

 

APPENDIX A: Related Documents

GRP #123 WA Primary Job Indicator (excerpt):

Functional Spec document WA18005 CHRS DS Primary Job Indicator (excerpt):

APPENDIX B: SQR

This SQR is from the San Diego campus, and is used by them to identify primary job indicator and highest education level.  The original SQRwas from Fullerton, and highest education level was added.  They also modified the logic to meet San Diego’s business process.

Click to View SQR:

   !-----------------------------------------------------------------------!

! California State University (CSU)                                     !

! Report Name: SDJOBIND.SQR   (used FULAW032.SQR Fullerton)             !

! Programmer: Sean Chang      (original - Rebecca Ho)                   !

! Date: 11/7/2002                                                       !

! Title: Set Employee Primary Job Indicator and                         !

!        Set Highest Education level                                    !

!-----------------------------------------------------------------------!

! Program Description                                                   !

! -------------------                                                   !

! A. Primary Job Indicator                                             !

!    This program sets Active employees' primary job indicator based on !

!    the following criteria:                                            !

!  1. If an employee has one job, it becomes the primary job            !

!  2. If an employee has multiple jobs, the job with the highest FTE    !

!    will be the primary job and in case of Tie, the lowest EMPL_RCD    !

!    will be selected. Three following exceptions will have the         !

!    priority to above criteria.                                        !

!      a. Department Head, Job codes 2481,2482,2361,2360, 2354, 2325    !

!      b. Assistance Dean, Job code 3070, 3072 and not department 50070 !

!      c. Not any of the following departments                          !

!           42009, 42011, 42012, 42013, 42022, 42026, 44007, 47006,     !

!           47011, 48016                                                !

!                                                                       !

! B. Highest Education Level                                            !

!  1. Fixes all the Highest education Level Discrepancies.              !        

!  2. Reports all employees who do not have any accomplishment but      !

!    Highest Education level is set. (USER MUST FIX THE ISSUE MANUALLY) !

!-----------------------------------------------------------------------!

! Output:                                                               !

! ------                                                                !

! - Employee Primary Job Report                                         !

!-----------------------------------------------------------------------!

! Table Referenced      Description                              Usage  !

! ----------------      -----------                              -----  !

! PS_CSU_BEN_RPT_TBL    CSU Benefits Reporting Values            Select !

! PS_JOB                Employee Job Data                        Select !

!                                                                Update !

! PS_PERSONAL_DATA      Employee Personal Data                   Select !

!-----------------------------------------------------------------------!

! Modifications                                                         !

!-----------------------------------------------------------------------!

! Date-Mod By           Description                                     !

! -----------           -----------                                     !

! 8/18/2016             SDSU- Shahriyar Dadkhah                         !

! 1/11/2017             Update to fix the ranking of few accomplishments!

! 2/21/2017             Added PHARMD and reset the Highest_EDUC_LVL     !    

! 2/27/2018             Updated the priority for job code 2358 & 2359   !

! 08/02/2018            Added tow new Accomplishments Code

!-----------------------------------------------------------------------!

! Set environment.

!-----------------------------------------------------------------------!

#Include 'setenv.sqc'

!-----------------------------------------------------------------------!

! Define column positions for printing.

!-----------------------------------------------------------------------!

#Define col01 1

#Define col02 33

#Define col03 45

#Define col04 53

#Define col05 63

#Define col06 71

#Define col07 79

#Define col08 88

#Define col09 97

#Define col10 106

#Define col11 115

! Define Constants

!-----------------

#Define PRINTER_TYPE     'HPLASERJET'

#Define PAGE_ORIENTATION  LANDSCAPE      

#Define PAGE_PAPER_SIZE  (8.5,11)

#Define PAGE_LEFT_MARG   .5

#Define PAGE_TOP_MARG    .5

#Define MAX_COLUMN       80

!-----------------------------------------------------------------------!

! Define page layout.

!-----------------------------------------------------------------------!

#Define PAGE_PAPER_SIZE (LETTER)  

#Define LINE_HEIGHT 11  

#Define CHAR_WIDTH 4.5  

 

Begin-Setup

#Include 'setupdb.sqc'

 

Declare-Printer DEFAULT-HP    

 Font=5    

 Point-Size=7.2    

 Pitch=17  

End-Declare  

 

Declare-Printer DEFAULT-PD    

 Font=5    

 Point-Size=8    

 Pitch=17  

End-Declare  

 

Declare-Layout DEFAULT    

 Paper-Size={PAGE_PAPER_SIZE}    

 Orientation={PAGE_ORIENTATION}    

 Line-Height={LINE_HEIGHT}                  

 Char-Width={CHAR_WIDTH}                    

 Left-margin=.25    

End-declare

 

 

Declare-Report Primary_Job

 Layout = DEFAULT

 Printer-Type=PD

End-Declare  

 

Declare-Report Highest_EDUC_LVL

 Layout = DEFAULT

 Printer-Type=PD

End-Declare

 

End-Setup

 

!-----------------------------------------------------------------------!

Begin-Program

!-----------------------------------------------------------------------!

 Do Init-DateTime

 Do Init-Number

 Do Get-Current-DateTime

 Do Stdapi-Init

 Do Init-Report

 Do Init-Job-Indicator

 Do Process-Main

 Do Find-Employees_highest_educ_lvl

 Do Stdapi-Term

End-Program

 

!-----------------------------------------------------------------------!

Begin-Heading 6

!-----------------------------------------------------------------------!

 

For-Reports = (Primary_Job)

 

 ! Heading line 1.

 Print 'Report ID: '         (1,1)

 Print $ReportID             (0,11)

 Print 'San Diego State University'   (0) Bold Center

 Print 'Report Date: '       (0,129)

 Print $AsOfToday            (0,+0)  

 

 ! Heading line 2.

 Print 'Page '               (+1,1)

 Print #Page-Count           (0,+0) Edit 999

 Print ' of '                ()

 Last-Page                   ()

 Print $ReportTitle          (0) Bold Center

 Print 'Report Time: '       (0,129)

 Print $ReportTime           (0,+0)

!  print ' '                   (+1,1)

 

 ! Print a line above column heading.

 Graphic (+1,1,161) Horz-Line 5

 

 ! Print column headings.

 Print 'Employee Name'       (+1,{col01})  

 Print 'Empl ID'             (0,{col02})  

 Print 'Rec#'                (0,{col03})  

 Print 'Effdt'               (0,{col04})  

 Print 'Seq#'                (0,{col05})  

 Print 'FTE'                 (0,{col06})  

 Print 'M-Jobs'              (0,{col07})  

 Print 'JobCode'             (0,{col08})  

 Print 'Priority'            (0,{col09})  

 

 ! Print a line under column heading.

 Graphic (+1,1,161) Horz-Line 5

End-Heading

 

!-----------------------------------------------------------------------!

Begin-Heading 5

!-----------------------------------------------------------------------!

 

For-Reports = (Highest_EDUC_LVL)

 

 ! Heading line 1.

 Print 'Report ID: '         (1,1)

 Print $ReportID             (0,11)

 Print 'San Diego State University'   (0) Bold Center

 Print 'Report Date: '       (0,129)

 Print $AsOfToday            (0,+0)  

 

 ! Heading line 2.

 Print 'Page '               (+1,1)

 Print #Page-Count           (0,+0) Edit 999

 Print ' of '                ()

 Last-Page                   ()

 Print $ReportTitle          (0) Bold Center

 Print 'Report Time: '       (0,129)

 Print $ReportTime           (0,+0)

 

 ! Print a line above column heading.

 Graphic (+1,1,161) Horz-Line 5

End-Heading

 

 

!-----------------------------------------------------------------------!

Begin-Procedure Init-Report

!-----------------------------------------------------------------------!

 ! Initialize report title(s).

 Let $ReportID = 'SDJOBIND'

 Let $ReportTitle = 'Set Employee Primary Job Flag'

 Show $ReportID ': ' $ReportTitle

 

 ! Initialize program variables.

 

 ! Retrieve report parameters entered by the user.

 show '   $prcs_process_instance=' $prcs_process_instance

 If $Prcs_Process_Instance = ' '

   Show 'No Process Instance Found'

   Do Stdapi-Term

   Stop Quiet

 End-If

 

  #Include 'csudest.sqc'

  let $ReportID_PJOB = 'Primary_Job_Indicator'

  Let  $rpt_file2 = $FilePrefix || $ReportID_PJOB || $PrcsInstance || '.pdf'

  Use-Report Primary_Job

  New-Report $rpt_file2

  show 'Filename=' $rpt_file2

 

  let $ReportID_HEL = 'Highest_Educ_Lvl'

  Let  $rpt_file1 = $FilePrefix || $ReportID_HEL || $PrcsInstance || '.pdf'

  Use-Report Highest_EDUC_LVL

  New-Report $rpt_file1

  show 'Filename=' $rpt_file1

 

!-----------------------

! Find database name

!-----------------------

begin-select On-Error=SQL-Error

GLN.GLOBAL_NAME

  Let $DataBaseName = &GLN.GLOBAL_NAME

FROM GLOBAL_NAME GLN

END-SELECT

 

 Show 'Database: ' $DataBaseName

 

End-Procedure Init-Report

 

!-----------------------------------------------------------------------!

Begin-Procedure Init-Job-Indicator

! Set all Active Job records to "S"

!-----------------------------------------------------------------------!

     

Show ' Set Primary Job Indicator to S for All Active records .....'

     

Begin-SQL

UPDATE PS_JOB Job

 SET Job.JOB_INDICATOR = 'S' , ESTABID = 'SDSU'

 WHERE  Job.EFFDT =  

       (SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED  

       WHERE Job.EMPLID = A_ED.EMPLID  

         AND Job.EMPL_RCD = A_ED.EMPL_RCD  

         AND A_ED.EFFDT <= SYSDATE)  

   AND Job.EFFSEQ =  

       (SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES  

       WHERE Job.EMPLID = A_ES.EMPLID  

         AND Job.EMPL_RCD = A_ES.EMPL_RCD  

         AND Job.EFFDT = A_ES.EFFDT)  

    AND Job.EMPL_STATUS IN ('A','L','P','S','W')  

 

End-SQL

Show 'Rows Updated to JOB_INDICATOR S =' #sql-count

         

End-Procedure Init-Job-Indicator

 

!-----------------------------------------------------------------------!

Begin-Procedure Process-Main

!-----------------------------------------------------------------------!

! Process all active employees:

! - 'A': Active

! - 'L': Leave

! - 'P': Leave with Pay

! - 'S': Suspend

! - 'W': Short Work Break

 

Show 'In Process-Main'

show ' '

 

Use-Report Primary_Job

 

Begin-Select Distinct

N.NAME

J.EMPLID

 

 

 !show &J.EMPLID  

 ! Count the number of jobs the selected employee has.

 Let $MultiJob = 'N'

 Let $Selected_jobcode = ''

 Do Check-Multiple-Jobs

 

 ! Employee has multiple jobs.

 If #Job > 1

   Let #EmplRcd = #MaxRcd

   Let $Effdt = $MaxEffdt  

   Let #Effseq = #MaxEffseq  

   Let #FTE = #MaxFTE

   Let $MultiJob = 'Y'

   Let $Selected_jobcode = $max_jobcode

   show  '          ==>>>>Empl_rcd=' #EmplRcd ' effdt=' $Effdt ' effseq=' #Effseq ' fte=' #FTE  ' ' $Selected_jobcode

 End-If

 !show  'MultiJob='   $MultiJob

 

 ! Update the job indicator to 'P' for the primary job.

 Do Update-Primary-Job

 

 

 ! Generate a report.

 Do Print-Data

 

FROM PS_JOB J,

  PS_NAMES N

WHERE  

  J.EFFDT =

       (SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED

       WHERE J.EMPLID = A_ED.EMPLID

         AND J.EMPL_RCD = A_ED.EMPL_RCD

         AND A_ED.EFFDT <= SYSDATE)

   AND J.EFFSEQ =

       (SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES

       WHERE J.EMPLID = A_ES.EMPLID

         AND J.EMPL_RCD = A_ES.EMPL_RCD

         AND J.EFFDT = A_ES.EFFDT)

  AND J.EMPL_STATUS IN ('A','L','P','S','W')

  AND J.EMPLID = N.EMPLID

   AND N.EFFDT =

       (SELECT MAX(N2.EFFDT) FROM PS_NAMES N2

       WHERE N.EMPLID = N2.EMPLID

         AND N.NAME_TYPE = N2.NAME_TYPE

         AND N2.EFFDT <= J.EFFDT)  

    AND N.NAME_TYPE = 'PRI'        

ORDER BY N.NAME, J.EMPLID

End-Select  

 

End-Procedure Process-Main

!-----------------------------------------------------------------------!

Begin-Procedure Check-Multiple-Jobs

!-----------------------------------------------------------------------!

 Let $First = 'Y'

 Let #Job = 0

 Let #Max_Priority = 99

   

Begin-Select

CNT.EMPL_RCD

CNT.EFFDT

CNT.EFFSEQ

CNT.FTE

CNT.JOBCODE

CNT.DEPTID

 

 

 Let #EmplRcd = &CNT.EMPL_RCD

 Let $Effdt = &CNT.EFFDT

 Let #Effseq = &CNT.EFFSEQ

 Let #FTE = &CNT.FTE

 !Let $Jobcode = &CNT.JOBCODE

 Let $DEPTID = &CNT.deptid

 

 

 Evaluate &CNT.JOBCODE   !$Jobcode  

 When = '2481'

    let #priority = 1

    break

 When = '2482'

    let #priority = 2

    break

 When = '2361'

    let #priority = 3

    break

 When = '2360'

    let #priority = 4

    break

! Begin 2/27/2018 Added

 When = '2359'

    let #priority = 5

    break

 When = '2358'

    let #priority = 6

    break

! End 2/27/2018 Added

 When = '2354'

    let #priority = 7

    break

 When = '2325'

    let #priority = 8

    break

 When = '3070'

 When = '3072'

    ! Exclude SA Department

    if &CNT.DEPTID = '50070'    

       let #priority = 80

    else

       let #priority = 9      

    end-if    

    break  

 when-other      

    ! Any other Job code

    let #priority = 9

    break

 End-Evaluate    

 

 Evaluate $DEPTID

 when = '42009'

 when = '42011'

 when = '42012'

 when = '42013'

 when = '42022'

 when = '42026'

 when = '44007'

 when = '47006'

 when = '47011'

 when = '48016'

       ! Here try to exclude above department if they are used with other department

        let #priority = 90

 Break

 when-other  

   ! Any other Department

 End-Evaluate      

 

 let $temp_multi_job = edit (#job , '99')

 show $temp_multi_job ' ' &N.NAME ' ' &J.EMPLID ' ' &cnt.empl_rcd ' ' &cnt.EFFDT ' EFFSEQ=' &CNT.EFFSEQ ' FTE=' &CNT.FTE  ' Job Code=' &CNT.JOBCODE ' DEPT=' &CNT.DEPTID ' #priority=' #priority  ' #max_priority=' #max_priority      

 

    If $First = 'Y'

       let #max_priority = #priority  

       Let #MaxFTE = #FTE

       Let #MaxRcd = &CNT.EMPL_RCD

       Let $MaxEffdt = &CNT.EFFDT

       Let #MaxEffseq = &CNT.EFFSEQ

       Let $max_jobcode = &CNT.JOBCODE

       Let $Selected_jobcode  = &CNT.JOBCODE  

       Let $First = 'N'

    Else

          if #priority <= #Max_Priority  

             if #priority < #Max_Priority  

                let #max_priority = #priority  

                Let #MaxFTE = #FTE

                Let #MaxRcd = &CNT.EMPL_RCD

                Let $MaxEffdt = &CNT.EFFDT

                Let #MaxEffseq = &CNT.EFFSEQ

                Let $max_jobcode = &CNT.JOBCODE

                show '  here 1 #max_priority='  #max_priority

             else   ! Priority is same as previous one, check FTE                

                If #FTE > #MaxFTE

                   let #max_priority = #priority  

                   Let #MaxFTE = #FTE

                   Let #MaxRcd = &CNT.EMPL_RCD

                   Let $MaxEffdt = &CNT.EFFDT

                   Let #MaxEffseq = &CNT.EFFSEQ

                   Let $max_jobcode = &CNT.JOBCODE

                   show '  here 2 #max_priority='  #max_priority

                end-if

             end-if                    

          else  ! priority bigger than previous , do nothing

             ! do nothing

          End-if          

    End-If  

       

 ! Increment job counter.

 Let #Job = #Job + 1

 

FROM PS_JOB CNT

WHERE CNT.EMPLID = &J.EMPLID

 AND CNT.EMPL_STATUS IN ('A','L','P','S','W')  

 AND CNT.EFFDT =

   (SELECT MAX(EFFDT) FROM PS_JOB  

   WHERE CNT.EMPLID = EMPLID

     AND CNT.EMPL_RCD = EMPL_RCD

      AND EFFDT <= sysdate)

 AND CNT.EFFSEQ =

   (SELECT MAX(EFFSEQ) FROM PS_JOB  

   WHERE CNT.EMPLID = EMPLID

     AND CNT.EMPL_RCD = EMPL_RCD

     AND CNT.EFFDT = EFFDT)

ORDER BY CNT.EMPL_RCD

End-Select

 

End-Procedure Check-Multiple-Jobs

 

!-----------------------------------------------------------------------!

Begin-Procedure Update-Primary-Job

!-----------------------------------------------------------------------!

Begin-SQL

UPDATE PS_JOB

 SET JOB_INDICATOR = 'P'  , ESTABID = 'SDSU'

WHERE EMPLID = &J.EMPLID

 AND EMPL_RCD = #EmplRcd

 AND EFFDT = $Effdt

! AND EFFSEQ = #Effseq

End-SQL

 

End-Procedure Update-Primary-Job

 

!-----------------------------------------------------------------------!

Begin-Procedure Print-Data

!-----------------------------------------------------------------------!

 

 

 

 Print &N.NAME              (+1,{col01}) On-Break Print=Change/Top-Page

 Print &J.EMPLID             (0,{col02}) On-Break Print=Change/Top-Page

 Print #EmplRcd              (0,{col03}) Edit 999

 Print $Effdt                (0,{col04}) Edit 'MM/DD/YY'

 Print #Effseq               (0,{col05}) Edit 999

 Print #FTE                  (0,{col06}) Edit 9.99

 Print $MultiJob             (0,{col07})

 Print $Selected_jobcode     (0,{col08})

 

 Evaluate #priority

 when=1

 when=2

 when=3

 when=4

 when=5

 when=6

    Print 'Dept Chair'      (0,{col09})  

    !#T_max_priority        (0,{col09})

    Break

 when=80

    Print 'Asst Dean'       (0,{col09})

    Break

 when=90

    Print 'JD'              (0,{col09})  

    Break

 when-other

    Break

 end-evaluate

End-Procedure Print-Data

 

!-----------------------------------------------------------------------!

Begin-Procedure Find-Employees_highest_educ_lvl

!-----------------------------------------------------------------------!

 

Use-Report Highest_EDUC_LVL

!New-Report $rpt_file1

 

Show ' '

Show ' '

Show ' '

Show 'Setting Up Highest Education Level'

Show '----------------------------------- '

 

 

Let $Msg = 'Error selecting from Job table.'

begin-select DISTINCT on-error= Terminate_SQR(#prcs_run_status_unsuccessful,$Msg)

A2.emplid

A2.union_cd,

PER.Name

 

 Let $EMPLID = &A2.emplid

 Let $EMPL_Name = &PER.Name

 show ' '

 Show $EMPLID ' ' $EMPL_Name

 

 Let $Accomp_flag ='Yes'  

 Do Find_highest_educ_lvl

 do current_highest_educ_lvl

 show '  #Max_Highest_educ_lvl=' #Max_Highest_educ_lvl

 show '  Current_highest_educ_lvl =' $current_highest_educ_lvl  

 

 !Exclude student Worker since they do not have their Accomplishment but considered 'Some College'

 if #Max_Highest_educ_lvl = 0  

    Let #Max_Highest_educ_lvl = 1

    if ($current_highest_educ_lvl <> 'A' and $current_highest_educ_lvl <> 'B' and $current_highest_educ_lvl <> 'C' and $current_highest_educ_lvl <> 'D' and $current_highest_educ_lvl <> 'E' and $current_highest_educ_lvl <> 'F')

       show  'Error: No Accomplishments were found for Employee ' $EMPL_Name ' ' $emplid ' ' &A2.union_cd ' but current value is ' $current_highest_educ_lvl

       Let $Line = 'Error: No Accomplishemnets were found for Employee ' || $EMPL_Name || ' ' ||  $emplid || ', ' || 'but current value is ' || $current_highest_educ_lvl

       print $line             (+1, 1)  

    end-if    

    Let $Accomp_flag ='No'    

 end-If

 Let #T_Max_Highest_educ_lvl = #Max_Highest_educ_lvl + 64

 show '  #T_Max_Highest_educ_lvl = ' #T_Max_Highest_educ_lvl  

 let $Calc_Highest_Educ_Lvl = chr(#T_Max_Highest_educ_lvl)

 show '  $Calc_Highest_Educ_Lvl = ' $Calc_Highest_Educ_Lvl

 if  $Accomp_flag ='Yes'  ! $Calc_Highest_Educ_Lvl <> 'A' and $current_highest_educ_lvl <> 'E'

    if $Calc_Highest_Educ_Lvl > $current_highest_educ_lvl

       

       Do Set_highest_educ_lvl

       Show 'Highest_Educ_Lvl was changed from ' $current_highest_educ_lvl  ' to ' $Calc_Highest_Educ_Lvl  ' for Employee ' $EMPL_Name ' ' $emplid  

       Let $Line = 'Highest_Educ_Lvl was changed from ' || $current_highest_educ_lvl  || ' to ' || $Calc_Highest_Educ_Lvl  || ' for Employee ' || $EMPL_Name || ' ' || $emplid    

       print $line             (+1, 1)  

    Else    

      If $Calc_Highest_Educ_Lvl = $current_highest_educ_lvl

        ! Do nothing, both Current and Calculated Highest Education Level are equal

      Else

        ! Since Employee Has higher Education Level over Calculated Value. We create only Warning and no change.      

        Show 'Warning: Highest_Educ_Lvl is ' $current_highest_educ_lvl  ', it will not change to ' $Calc_Highest_Educ_Lvl  ' for Employee ' $EMPL_Name ' ' $emplid  

        Let $Line = 'Warning: Highest_Educ_Lvl is ' || $current_highest_educ_lvl  || ', it will not change to ' || $Calc_Highest_Educ_Lvl  || ' for Employee ' || $EMPL_Name || ' ' || $emplid    

        print $line             (+1, 1)  

      End-if  

    end-if

 end-if

 

FROM PS_JOB A2 , PS_Personal_data  Per

 WHERE  

!  A2.emplid in ('100033255','100029537') and

!(  A2.emplid like  '100000%' or  

!   A2.emplid in ( '100000430','100016082' , '100016381','100014717','100033268','100221313') ) and

 

 A2.EFFDT =  

       (SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED  

       WHERE A2.EMPLID = A_ED.EMPLID  

         AND A2.EMPL_RCD = A_ED.EMPL_RCD  

         AND A_ED.EFFDT <= SYSDATE)  

   AND A2.EFFSEQ =  

       (SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES  

       WHERE A2.EMPLID = A_ES.EMPLID  

         AND A2.EMPL_RCD = A_ES.EMPL_RCD  

         AND A2.EFFDT = A_ES.EFFDT)  

    AND A2.HR_STATUS = 'A'  

    And PER.EMPLID = A2.emplid

 ORDER BY 1

 

end-select

 

End-Procedure Find-Employees_highest_educ_lvl

 

!-----------------------------------------------------------------------!

begin-Procedure Find_highest_educ_lvl

!-----------------------------------------------------------------------!

 

Let #max_Highest_educ_lvl = 0

 

Let $Msg = 'Error selecting from Accomplishment table.'

begin-select DISTINCT on-error= Terminate_SQR(#prcs_run_status_unsuccessful,$Msg)

B.ACCOMPLISHMENT,  

C.DESCR

 

 let $Accomp = &B.ACCOMPLISHMENT

 let $C_DESCR = &C.DESCR

 Let $MSG_EDUC = ''

 

 Let #Highest_educ_lvl = 1    ! Added 2/21/2017

 

 Evaluate $Accomp

 When = 'UNKNOWN'

   Let #Highest_educ_lvl = 1

   break

 When = 'NG'

   Let #Highest_educ_lvl = 2

   break

 When = 'HSC'

   Let #Highest_educ_lvl = 3

   break

 When = 'HS'

 When = 'O'

   Let #Highest_educ_lvl = 4

   break

 When = 'TS'

   Let #Highest_educ_lvl = 6

   break

 When = 'AA'

 When = 'AAS'

 When = 'ABA'

 When = 'AE'

 When = 'AS'

   Let #Highest_educ_lvl = 7

   break

 When = 'A'

 When = 'CER'  

 When = 'FNP'    !Family Nurse Practitioner  

   Let #Highest_educ_lvl = 8

   break

 When = 'BA'

 When = 'BA2'

 When = 'BARCH'

 When = 'BBA'

 When = 'BE'  

 When = 'BED'

 When = 'BFA'

 When = 'BGS'  

 When = 'BJ'  

 When = 'BLS'

 When = 'BM'  

 When = 'BN'  

 When = 'BS'

 When = 'BS2'

 When = 'BSL'

 When = 'BSN'

 When = 'BSW'

 When = 'BT'

 When = 'BTECH'

 When = 'BSA'

 When = 'BSED'

 When = 'BSEE'  

 When = 'GCSE'  

 When = 'VDM'    

   Let #Highest_educ_lvl = 9

   break

 When = 'MA'

 When = 'MA2'

 When = 'MS2'

 When = 'MACC'

 When = 'MAS'

 When = 'MAT'

 When = 'MBA'

 When = 'MCE'

 When = 'MCP'

 When = 'MDI'

 When = 'ME'

 When = 'MED'  

 When = 'MFA'

 When = 'MHR'

 When = 'MHS'

 When = 'MILS'

 When = 'MLIS'  

 When = 'MLL'

 When = 'MLS'

 When = 'MM'

 When = 'MME'

 When = 'MN'

 When = 'MPA'

 When = 'MPH'

 When = 'MS'

 When = 'MSEE'

 When = 'MSL'

 When = 'MSN'

 When = 'MSW'  

 When = 'MT'  ! Added 08/02/2018

 When = 'MTAX'

   Let #Highest_educ_lvl = 10

   break

 When = 'EDS'

   Let #Highest_educ_lvl = 12

 When = 'ABD'

   Let #Highest_educ_lvl = 13

   break

 When = 'AUD'  

 When = 'DART'

 When = 'DBA'  

 When = 'DCP'  

 When = 'DED'  

 When = 'DMA'  

 When = 'DNP'

 When = 'DNS'  

 When = 'DHSC'           ! Added 08/02/2018

 When = 'DNSC'

 When = 'DPH'  

 When = 'DPSY'

 When = 'DPT'  

 When = 'DRPH'

 When = 'DSW'  

 When = 'EDD'  

 When = 'JD'  

 When = 'MD'  

 When = 'PHARMD'              ! Added 2/21/2017  

 When = 'PHD'

 When = 'PHE'  

 When = 'PHS'

 When = 'PSYD'

 When = 'SCD'  

   Let #Highest_educ_lvl = 14

   break

 When-other

   show  'Error: ' $EMPLID ' ' $ACCOMP ' ' $C_DESCR ' --> Accomplishments Not defined.'

   Let $Line = 'Error: ' || $EMPLID || ' has ' || $ACCOMP || ' ' || $C_DESCR  || ', Accomplishments not defined.'

   print $line             (+1, 1)  

   Break

 END-Evaluate

 

 show '    Current Highest Accomplishments: ' $Accomp  ' '  $C_DESCR ' ' #Highest_educ_lvl

 Let $Highest_educ_lvl = edit(#Highest_educ_lvl,'99')

 

 if #Highest_educ_lvl  > #Max_Highest_educ_lvl

    Let #Max_Highest_educ_lvl = #Highest_educ_lvl

 end-if

  ! show  '    ' $C_DESCR '|'  $ACCOMP '|' #Highest_educ_lvl ' |Max='  #max_Highest_educ_lvl '|'

 

FROM PS_ACCOMPLISHMENTS B, PS_ACCOMP_TBL C  

 WHERE

    B.emplid = $emplid  

    AND B.ACCOMPLISHMENT = C.ACCOMPLISHMENT  

    AND C.ACCOMP_CATEGORY = 'DEG'  

 

end-select

 

End-Procedure Find_highest_educ_lvl

 

 

!*****************************************************************************

begin-Procedure current_highest_educ_lvl

!*****************************************************************************begin-select

begin-SELECT  

Edu.HIGHEST_EDUC_LVL  

 

 Let $Current_HIGHEST_EDUC_LVL = &Edu.HIGHEST_EDUC_LVL

 Show '    Current Highest Educ level in PERS_DATA_EFFDT = ' $Current_HIGHEST_EDUC_LVL

 FROM PS_PERS_DATA_EFFDT EDU  

 WHERE EDU.EFFDT =  

       (SELECT MAX(A_ED.EFFDT) FROM PS_PERS_DATA_EFFDT A_ED  

       WHERE EDU.EMPLID = A_ED.EMPLID  

         AND A_ED.EFFDT <= SYSDATE)  

    AND EDU.EMPLID = $emplid

 

end-select

End-Procedure current_highest_educ_lvl

     

!*****************************************************************************

begin-Procedure Set_highest_educ_lvl

!*****************************************************************************begin-select

begin-sql  

 

Update PS_PERS_DATA_EFFDT EDU

set  EDU.HIGHEST_EDUC_LVL = $Calc_Highest_Educ_Lvl

 WHERE EDU.EFFDT =  

       (SELECT MAX(A_ED.EFFDT) FROM PS_PERS_DATA_EFFDT A_ED  

       WHERE EDU.EMPLID = A_ED.EMPLID  

         AND A_ED.EFFDT <= SYSDATE)  

    AND EDU.EMPLID = $emplid

 

end-sql

 

 

End-Procedure Set_highest_educ_lvl

 

!*****************************************************************************

! Function: Terminate_SQR

! Descr   : This procedure sets the appropriate message for process scheduler

! and Stops executing the SQR

!*****************************************************************************

begin-procedure Terminate_SQR(#Status, $Message)

 

  !Close any open files

 

  If not isblank($_SQL-Error)

     Let $Message = $Message || chr(13) || $_SQL-Error

  end-if

 

  !Set the message and status for Process Scheduler

  Let #_prcs_run_status    = #Status

   

 

  If not isblank($Message)

     Let #_prcs_message_set_nbr = #_prcs_msg_set_nbr    !--- 65. defined in prcsdef.sqc

     Let #_prcs_message_nbr     = 30                    !--- Dynamic message.

     Let $_prcs_message_parm1   = $Message  

 

     rollback    

  End-If  

 

  do reset

  do stdapi-term

   

  !Abort the SQR If Error Status

  If #Status <> #_prcs_run_status_successful

     Show ' '

     Show $Message

     Show 'SQR Halted'

     

     Print $Message     (+2,1)

     Print 'SQR Halted' (+1,1)

     stop quiet  

  end-if

end-procedure Terminate_SQR      

!-----------------------------------------------------------------------!

! Include Files.

!-----------------------------------------------------------------------!

#Include 'curdttim.sqc'  ! Get-Current-DateTime procedure

#Include 'datetime.sqc'  ! Routines for date and time formatting

#Include 'number.sqc'    ! Routines to format numbers

#Include 'stdapi.sqc'    ! Routines to Update Run Status

#Include 'reset.sqc'     ! Reset printer procedure.

APPENDIX C: Tracking Primary Job – Campus Survey

During the Campus Data Coordinator check-in call on 10/25/18, meeting attendees were polled regarding how their campuses handle identification of Primary Job.  Responses are below (blanks indicate no response or campus representative was not present on the call.)

End of Article

Previous Article (job aid) WA Position Management
Next Article (job aid) WA Search by National ID
To request a new article or update: Contact Us