//BRxxxLOD JOB (BRxxx,,,1),'CREATE SCD LOAD',TIME=(1),REGION=0M //********************************************************** //**** PROGRAM TO CONVERT LEGACY SCD FILE LAYOUT ******** //**** TO NEW DATABASE LAYOUTS. ******** //**************************************************************** //**** *** MAINTENANCE *** ******* //**** CHANGE THE JOB CARD TO REFLECT YOUR ENVIRONMENT ******* //**** ******* //**** CHANGE THE INPUT FILE NAME TO YOUR INPUT FILE NAME ******* //**** ******* //**** CHANGE THE FIVE OUTPUT FILE NAMES AND THE FILE NAMES******* //**** IN THE HOUSEKEPPING STEP TO YOUR FILE NAMES ******* //**** ******* //**** THIS JOB SET UP FOR 20-08-09 SCD-OB SUBMISSION ******* //**************************************************************** //* //************ HOUSEKEPPING ***************************** //DEL EXEC PGM=IDCAMS,REGION=512K //SYSPRINT DD SYSOUT=A //SYSIN DD * DELETE (BOR.xxx.LOAD.SCD.PERDEM) DELETE (BOR.xxx.LOAD.SCD.SCDID) DELETE (BOR.xxx.LOAD.SCD.SCDDEM) DELETE (BOR.xxx.LOAD.SCD.SCDDAT) DELETE (BOR.xxx.LOAD.SCD.SCDVAC) SET MAXCC = 0 /* //SELECT EXEC SAS WORK='20000,10000' //* //*************************************************** //*********** INPUT FILES **************** //SCDIN DD DSN=BOR.MASTER.SCD.Y0809O.uniiv,DISP=SHR //* //********** OUTPUT FILES **************** //PRDEMOUT DD DSN=BOR.xxx.LOAD.SCD.PERDEM, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //IDCHGOUT DD DSN=BOR.xxx.LOAD.SCD.SCDID, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //SCDEMOUT DD DSN=BOR.xxx.LOAD.SCD.SCDDEM, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //SCDATOUT DD DSN=BOR.xxx.LOAD.SCD.SCDDAT, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //SCVACOUT DD DSN=BOR.xxx.LOAD.SCD.SCDVAC, // DISP=(NEW,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=250,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //*************************************************** '; //* OPTIONS ERRORS=1 NODATE NOSOURCE SYMBOLGEN MSTORED MISSING=' ' SASMSTORE=AUTOLIB; DATA SCD; SOURCE='SCD'; TIMFRAME='200808'; INFILE SCDIN LRECL=390 TRUNCOVER; INPUT @001 FISYR $CHAR04. @005 UNIV $CHAR04. @009 SUBTYPE $CHAR01. @010 UNIVPOS $CHAR08. @010 OPSSEQ $CHAR01. @018 BUDENTCD $CHAR01. @019 POSTYPCD $CHAR01. @020 CNTYE $CHAR04. @024 CLCD $CHAR04. @028 PAYPLNNO $CHAR02. @030 PG $CHAR03. @033 STEPNO $CHAR03. @036 ADMCD1 $CHAR02. @038 CBUELIG $CHAR01. @039 CBUCD $CHAR04. @043 CAMPCDPS $CHAR02. @045 SSN $CHAR09. @054 FNAME $CHAR14. @068 MINIT $CHAR01. @069 LNAME $CHAR22. @091 APSTATCL $CHAR01. @092 HLINSOPT $CHAR02. @094 LFINSPRT $CHAR01. @095 RETCD $CHAR02. @097 INSTDT $CHAR10. @107 CNTSVCDT $CHAR10. @117 DTEMPCLS $CHAR10. @127 GENDER $CHAR01. @128 RESIRM6 $CHAR06. @134 RACE $CHAR01. @135 DTBIRTH $CHAR10. @145 DEGHELD $CHAR01. @146 DEGYRHI $CHAR04. @150 RANK $CHAR02. @152 DTRANK $CHAR10. @162 RESTIND $CHAR01. @163 TENSTAT $CHAR01. @164 TENDT $CHAR10. @174 TENCIP $CHAR06. @180 OCCACT $CHAR01. @181 RESIRM1 $CHAR01. @182 CITIZ $CHAR01. @183 HLINSPR $CHAR03. @186 ACCTCIP $CHAR06. @192 CNTYRES $CHAR04. @196 DROPENRL $CHAR10. @206 DROPEND $CHAR10. @216 SNMGTBEN $CHAR01. @217 ANPFLAG $CHAR01. @217 RESIRM2 $CHAR02. @220 RESUNIV $CHAR10. @220 PIDVALID $CHAR01. @230 RESIRM2 $CHAR02. @232 STFND $CHAR01. @233 SAMFIDPS $CHAR06. @239 BE $CHAR08. @247 IBI $CHAR02. @249 CATPOS $CHAR06. @255 YEARIND $CHAR02. @257 DEPTID $CHAR09. @266 UBUDID $CHAR06. @272 STPGCMP $CHAR10. @282 PGCMP $CHAR06. @288 PCS $CHAR02. @290 SALDOL 10.2 @300 CRATE 10.2 @310 FTE 4.2 @314 BUDWKS 4.2 @318 PERYR 6.4 @324 COMTYP $CHAR02. @326 RATETYP $CHAR01. @327 UTWRK 5.2 @332 SSNPREV $CHAR09. @341 RESIRM10 $CHAR10. @351 CLASTITL $CHAR40.; IF RANK = '.' THEN RANK = ' '; IF CNTSVCDT = '.' THEN CNTSVCDT = ' '; IF CNTSVCDT = '0000-00-00' THEN CNTSVCDT = ' '; IF CNTSVCDT = '**********' THEN CNTSVCDT = ' '; IF INSTDT = '.' THEN INSTDT = ' '; IF INSTDT = '0000-00-00' THEN INSTDT = ' '; IF INSTDT = '**********' THEN INSTDT = ' '; IF DTEMPCLS = '.' THEN DTEMPCLS = ' '; IF DTEMPCLS = '0000-00-00' THEN DTEMPCLS = ' '; IF DTEMPCLS = '**********' THEN DTEMPCLS = ' '; IF DTRANK = '.' THEN DTRANK = ' '; IF DTRANK = '00000-00-00' THEN DTRANK = ' '; IF DTRANK = '0000000000' THEN DTRANK = ' '; IF DTRANK = '00' THEN DTRANK = ' '; IF DTRANK = '**********' THEN DTRANK = ' '; IF TENDT = '.' THEN TENDT = ' '; IF TENDT = '0000-00-00' THEN TENDT = ' '; IF TENDT = '0000000000' THEN TENDT = ' '; IF TENDT = '**********' THEN TENDT = ' '; IF DROPENRL = '.' THEN DROPENRL = ' '; IF DROPENRL = '0000-00-00' THEN DROPENRL = ' '; IF DROPENRL = '**********' THEN DROPENRL = ' '; IF DROPEND = '.' THEN DROPEND = ' '; IF DROPEND = '0000-00-00' THEN DROPEND = ' '; IF DROPEND = '**********' THEN DROPEND = ' '; IF PIDVALID NOT IN('N','n') THEN PIDVALID = 'Y'; DATA SCDOUT; SET SCD; /***************************************************************/ /************** PERSON_DEMOGRAPHICS OUTPUT *********************/ /***************************************************************/ PROC SORT DATA=SCDOUT OUT=PRDEMSRT NODUPKEYS; BY UNIV SSN; DATA _NULL_; SET PRDEMSRT; FILE PRDEMOUT DLM='|' LRECL=200; UNIV_ROW_ID = _N_; DEMO_TIME_FRAME = TIMFRAME; REPT_INST = UNIV; DEMO_DATA_SOURCE = SOURCE; PERSON_ID = SSN; PID_VALID_SSN = PIDVALID; DT_BIRTH_YYYYMMDD = COMPRESS(DTBIRTH,'-'); NAME_LAST = LNAME; NAME_FIRST = FNAME; NAME_MI = MINIT; SUFFIX = '.'; GENDER = GENDER; RACE_ETHNICITY = RACE; HISPANIC_FLG = '.'; AM_IND_ALASKAN_FLG = '.'; ASIAN_FLG = '.'; BLACK_AFRICAN_AM_FLG = '.'; NAT_HAWAII_PAC_IS_FLG = '.'; WHITE_FLG = '.'; NON_RES_ALIEN_FLG = '.'; NO_RACE_REPORT_FLG = '.'; U_RESV_1 = RESUNIV; IF POSTYPCD NOT IN ('e','E')THEN DELETE; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE PERSON_ID PID_VALID_SSN DT_BIRTH_YYYYMMDD NAME_LAST NAME_FIRST NAME_MI SUFFIX GENDER RACE_ETHNICITY HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG BLACK_AFRICAN_AM_FLG NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG NO_RACE_REPORT_FLG U_RESV_1; /*******************************************************************/ /********************* PERSON ID CHANGE OUTPUT *********************/ /*******************************************************************/ PROC SORT DATA=SCDOUT OUT=PRIDCHGSRT NODUPKEYS; BY UNIV SSN; DATA _NULL_; SET PRIDCHGSRT; FILE IDCHGOUT DLM='|' LRECL=200; UNIV_ROW_ID = _N_; DEMO_TIME_FRAME = TIMFRAME; REPT_INST = UNIV; DEMO_DATA_SOURCE = SOURCE; PERSON_ID_NEW = SSN; PID_VALID_SSN = PIDVALID; PERSON_ID_PRV = SSNPREV; NAME_LAST = LNAME; NAME_FIRST = FNAME; NAME_MI = MINIT; BIRTH_DT = COMPRESS(DTBIRTH,'-'); SUFFIX = '.'; GENDER = GENDER; RACE_ETHNICITY = RACE; HISPANIC_FLG = '.'; AM_IND_ALASKAN_FLG = '.'; ASIAN_FLG = '.'; BLACK_AFRICAN_AM_FLG = '.'; NAT_HAWAII_PAC_IS_FLG = '.'; WHITE_FLG = '.'; NON_RES_ALIEN_FLG = '.'; NO_RACE_REPORT_FLG = '.'; U_RESV_1 = RESUNIV; IF POSTYPCD NOT IN ('e','E')THEN DELETE; IF SSNPREV = SSN THEN DELETE; IF SSNPREV = ' ' THEN DELETE; IF SSNPREV = '000000000' THEN DELETE; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE PERSON_ID_NEW PID_VALID_SSN PERSON_ID_PRV BIRTH_DT NAME_LAST NAME_FIRST NAME_MI SUFFIX GENDER RACE_ETHNICITY HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG BLACK_AFRICAN_AM_FLG NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG NO_RACE_REPORT_FLG U_RESV_1; /******************************************************************/ /***************** EMPLOYEE_DEMOGRAPHICS OUTPUT *******************/ /******************************************************************/ PROC SORT DATA=SCDOUT OUT=SCDEMSRT NODUPKEYS; BY UNIV SSN; DATA _NULL_; SET SCDEMSRT; FILE SCDEMOUT DLM='|' LRECL=200; IF TENSTAT = '.' THEN TENSTAT = ' '; IF TENCIP = '.' THEN TENCIP = ' '; IF DEGYRHI = '.' THEN DEGYRHI = ' '; UNIV_ROW_ID = _N_; DEMO_TIME_FRAME = TIMFRAME; REPT_INST = UNIV; DEMO_DATA_SOURCE = SOURCE; PERSON_ID = SSN; SUB_TYP = SUBTYPE; HLTH_INS_OPT_CD = HLINSOPT; HLTH_INS_PROV_CD = HLINSPR; LIFE_INS_PART_CD = LFINSPRT; RETIRE_CD_EMP = RETCD; CONT_ST_SVC_DT = COMPRESS(CNTSVCDT,'-'); AGENCY_HIRE_DT = COMPRESS(INSTDT,'-'); RANK_FAC = RANK; RANK_FAC_DT = COMPRESS(DTRANK,'-');; DEG_HIGHEST_HELD = DEGHELD; DEG_YR_OF_HIGHEST = DEGYRHI; TENURE_STAT = TENSTAT; TEN_STAT_DT = COMPRESS(TENDT,'-'); CIP_TENURE = TENCIP; OCC_ACT_CAT_EEO6 = OCCACT; COUNTY_OF_RES = CNTYRES; RESTRICT_ACC_FLG = RESTIND; SR_MGMT_BFT_FLG = SNMGTBEN; ANP_FLG = ANPFLAG; DROP_ENROLL_DT = COMPRESS(DROPENRL,'-'); DROP_TERMT_DT = COMPRESS(DROPEND,'-'); EMPR_TYP_CD = POSTYPCD; CITIZEN = CITIZ; U_RESV_1 = RESUNIV; IF POSTYPCD NOT IN ('e','E') OR PERSON_ID < 1 THEN DELETE; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE PERSON_ID SUB_TYP HLTH_INS_OPT_CD HLTH_INS_PROV_CD LIFE_INS_PART_CD RETIRE_CD_EMP CONT_ST_SER_DT AGENCY_HIRE_DT RANK_FAC RANK_FAC_DT DEG_HIGHEST_HELD DEG_YR_OF_HIGHEST TENURE_STAT TEN_STAT_DT CIP_TENURE OCC_ACT_CAT_EEO6 COUNTY_OF_RES RESTRICT_ACC_FLG SR_MGMT_BFT_FLG ANP_FLG DROP_ENROLL_DT DROP_TERMT_DT EMPR_TYP_CD CITIZEN U_RESV_1; /****************************************************************/ /****************** SCD_EMPL_DATA OUTPUT ************************/ /****************************************************************/ DATA _NULL_; SET SCDOUT; FILE SCDATOUT DLM='|' LRECL=300; FORMAT DT_EMPLOYED_CUR_CL DTDATE9.; UNIV_ROW_ID = _N_; DEMO_TIME_FRAME = TIMFRAME; REPT_INST = UNIV; DEMO_DATA_SOURCE = SOURCE; PERSON_ID = SSN; SUB_TYP = SUBTYPE; BE_CD = BUDENTCD; ST_FUND_TYP = STFND; FUND_ID_EMPL_RES = SAMFIDPS; BE_CD8 = BE; IBI = IBI; APPROP_CAT = CATPOS; DEPT_ID = DEPTID; UNIV_BUD_ID = UBUDID; PAY_PLAN_NBR = PAYPLNNO; OPS_SEQ = OPSSEQ; UNIV_POSITION = UNIVPOS; COUNTY_OF_EMP = CNTYE; CLASS_CD = CLCD; EMPLOYED_CUR_CL_DT = COMPRESS(DTEMPCLS,'-'); COLL_BARG_UNIT_CD = CBUCD; COLL_BARG_UNIT_ELG = CBUELIG; ADMIN_CD_PRI = ADMCD1; CAMPUS_CD = '00' || CAMPCDPS; APPT_STAT_CLASS = APSTATCL; CIP_ACCT_DEPT = ACCTCIP; ST_PRO_COMP_CD = STPGCMP; PROG_COMP = PGCMP; PCS_DEPT_ID = PCS; SALARY_DOLLARS = SALDOL; CURR_YR_RATE = CRATE; FTE = FTE; BUD_WKS_POS = BUDWKS; COMMIT_TYP = COMTYP; RATE_TYP = RATETYP; UT_WORKED = UTWRK; CLASS_TITLE = CLASTITL; U_RESV_1 = RESUNIV; IF SALARY_DOLLARS = '.' THEN SALARY_DOLLARS = ' '; IF FTE = '.' THEN FTE = ' '; IF BUD_WKS_POS = '.' THEN BUD_WKS_POS = ' '; IF PERYRS = '.' THEN PERYRS = ' '; IF PCS_DEPT_ID = ' ' THEN PCS_DEPT_ID = '.'; IF ST_FUND_TYP = ' ' THEN ST_FUND_TYP = '.'; IF FUND_ID_EMPL_RES = ' ' THEN FUND_ID_EMPL_RES = '.'; IF BE_CD8 = ' ' THEN BE_CD8 = '.'; IF IBI = ' ' THEN IBI = '.'; IF APPROP_CAT = ' ' THEN APPROP_CAT = '.'; IF UNIV_BUD_ID = ' ' THEN UNIV_BUD_ID = '.'; IF OPS_SEQ = ' ' THEN OPS_SEQ = '.'; IF UNIV_POSITION = ' ' THEN UNIV_POSITION = '.'; IF POSTYPCD NOT IN ('e','E') THEN DELETE; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE PERSON_ID SUB_TYP BE_CD ST_FUND_TYP FUND_ID_EMPL_RES BE_CD8 IBI APPROP_CAT DEPT_ID UNIV_BUD_ID PAY_PLAN_NBR OPS_SEQ UNIV_POSITION COUNTY_OF_EMP CLASS_CD EMPLOYED_CUR_CL_DT COLL_BARG_UNIT_CD COLL_BARG_UNIT_ELG ADMIN_CD_PRI CAMPUS_CD APPT_STAT_CLASS CIP_ACCT_DEPT ST_PRO_COMP_CD PROG_COMP PCS_DEPT_ID SALARY_DOLLARS CURR_YR_RATE FTE BUD_WKS_POS COMMIT_TYP RATE_TYP UT_WORKED CLASS_TITLE U_RESV_1; /**************************************************************/ /******************* SCD_EMPL_VAC OUTPUT **********************/ /**************************************************************/ DATA _NULL_; SET SCDOUT; FILE SCVACOUT DLM='|' LRECL=250; UNIV_ROW_ID = _N_; DEMO_TIME_FRAME = TIMFRAME; REPT_INST = UNIV; DEMO_DATA_SOURCE = SOURCE; SUB_TYP = SUBTYPE; BE_CD = BUDENTCD; ST_FUND_TYP = STFND; FUND_ID_EMPL_RES = SAMFIDPS; BE_CD8 = BE; IBI = IBI; APPROP_CAT = CATPOS; DEPT_ID = DEPTID; UNIV_BUD_ID = UBUDID; PAY_PLAN_NBR = PAYPLNNO; UNIV_POSITION = UNIVPOS; HLTH_INS_OPT_CD = HLINSOPT; LIFE_INS_PART_CD = LFINSPRT; RETIRE_CD_EMP = RETCD; COUNTY_OF_EMP = CNTYE; CLASS_CD = CLCD; ADMIN_CD_PRI = ADMCD1; CAMPUS_CD = '00' || CAMPCDPS; CIP_ACCT_DEPT = ACCTCIP; ST_PRO_COMP_CD = STPGCMP; PROG_COMP = PGCMP; PCS_DEPT_ID = PCS; SALARY_DOLLARS = SALDOL; CURR_YR_RATE = CRATE; FTE = FTE; BUD_WKS_POS = BUDWKS; COMMIT_TYP = COMTYP; SR_MGMT_BFT_FLG = SNMGTBEN; ANP_FLG = ANPFLAG; EMPR_TYP_CD = POSTYPCD; CLASS_TITLE = CLASTITL; U_RESV_1 = RESUNIV; IF ST_FUND_TYP = ' ' THEN ST_FUND_TYP = '.'; IF PCS_DEPT_ID = '.' THEN PCS_DEPT_ID = ' '; IF SALARY_DOLLARS = '.' THEN SALARY_DOLLARS = ' '; IF FTE = '.' THEN FTE = ' '; IF BUD_WKS_POS = '.' THEN BUD_WKS_POS = ' '; IF UNIV_BUD_ID = ' ' THEN UNIV_BUD_ID = '.'; IF POSTYPCD IN ('e','E') THEN DELETE; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SUB_TYP BE_CD ST_FUND_TYP FUND_ID_EMPL_RES BE_CD8 IBI APPROP_CAT DEPT_ID UNIV_BUD_ID PAY_PLAN_NBR UNIV_POSITION HLTH_INS_OPT_CD LIFE_INS_PART_CD RETIRE_CD_EMP COUNTY_OF_EMP CLASS_CD ADMIN_CD_PRI CAMPUS_CD CIP_ACCT_DEPT ST_PRO_COMP_CD PROG_COMP PCS_DEPT_ID SALARY_DOLLARS CURR_YR_RATE FTE BUD_WKS_POS SR_MGMT_BFT_FLG ANP_FLG EMPR_TYP_CD CLASS_TITLE U_RESV_1 COMMIT_TYP;