//BRXXXLOD JOB (BRXXX,,,1),'CREATE UUUU IRD LOAD',TIME=(1),REGION=0M, // LINES=10000 //*************************************************************/ //**** PROGRAM TO CONVERT LEGACY INSTRUCTION AND RESEARCH ***/ //**** 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 FOUR OUTPUT FILE NAMES AND THE FILE NAMES ***/ //**** IN THE HOUSEKEEPING STEP TO YOUR FILE NAMES ***/ //*************************************************************/ //****9/23/08 ZVP ADDED PIDSSNFLG TO KEEP STATEMENT ****/ //*************************************************************/ //************ HOUSEKEEPING ********************************/ //DELETE EXEC PGM=IDCAMS,REGION=512K //SYSPRINT DD SYSOUT=A //SYSIN DD * DELETE (BOR.UUUU.IRD.WOVBAR) DELETE (BOR.UUUU.IRD.PERDEMO) DELETE (BOR.UUUU.IRD.WORKLOAD.FUND) DELETE (BOR.UUUU.IRD.WORKLOAD.ACTIVITY) DELETE (BOR.UUUU.IRD.WORKLOAD.SUMMARY) SET MAXCC = 0 /* //STEP1 EXEC SAS,WORK='20000,10000' //*********** INPUT FILES **************** //IRDIN DD DSN=BOR.MASTER.IRD.Y0607.UUUU,DISP=SHR //* //*--------------- OUTPUT FILES --------------- */ //IRDWOBAR DD DSN=BOR.UUUU.IRD.WOVBAR, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=15059,RECFM=VB,BLKSIZE=), // SPACE=(CYL,(20,5),RLSE) //IRDDEMO DD DSN=BOR.UUUU.IRD.PERDEMO, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=600,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(10,5),RLSE) //IRDFUND DD DSN=BOR.UUUU.IRD.WORKLOAD.FUND, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=600,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,5),RLSE) //IRDACT DD DSN=BOR.UUUU.IRD.WORKLOAD.ACTIVITY, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=600,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,5),RLSE) //IRDSUM DD DSN=BOR.UUUU.IRD.WORKLOAD.SUMMARY, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=600,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,5),RLSE) //* OPTIONS S=72 PS=65 ERRORS=3 MISSING = ' ' NODATE NOSOURCE; PROC FORMAT; VALUE $PKTABLE 'PERSON_DEMO' = '31' 'WORKLOAD_ACTIVITIES' = '46' 'WORKLOAD_ACTIVITY_SUMMARY' = '47' 'WORKLOAD_PERSON_FUNDING' = '48' 'OTHER' = '.'; VALUE $UNIVNB 'FAMU' = '03' 'FAU ' = '05' 'FGCU' = '10' 'FSU ' = '02' 'NCF ' = '11' 'UF ' = '01' 'USF ' = '04' 'UCF ' = '07' 'UWF ' = '06' 'FIU ' = '08' 'UNF ' = '09' * REMOVES ANY VERTICAL BARS FROM THE INCOMING FILE; DATA IRDBAR; INFILE IRDIN LENGTH=LEN TRUNCOVER; INPUT @1 RECORD $15059.; FORMAT RECORD2 $15059.; RECORD2=TRANSLATE(RECORD,' ','|'); FILE IRDWOBAR LRECL=15059; PUT @1 RECORD2; RUN; DATA IRDMAIN (KEEP = TERMID UNIV SSN LNAME FNAME MINIT GENDER RACE U_RESV_1 EMPBE PAYPLNNO UNIVPOS DEPTID CLCD RANK ADMCD1 EMPFTE BUDWKS EMPPERYR TMAMT PCEMP CONTHRS EMPCIP OCCACT TENYR SEGCNT PIDSSNFLG) IRDSEG (KEEP = TERMID UNIV SSN EMPBE PAYPLNNO UNIVPOS DEPTID ACTBE PCRSTYPE CRSCIP ACTACCT CRSPRE CRSNO CRSOIND CRSSECT SESSFLG VCREDFLG CRSCRED SCHTOT SCHFND SECTWKLD ACTPERYR ACTFTE ACTCONT CONTMOD U_RESV_1 U_RESV_2) SUMSEG (KEEP = TERMID UNIV SSN EMPBE PAYPLNNO UNIVPOS DEPTID ACTBE COLL_SUB PCACT IRACT PCRSTYPE CRSCIP ACTACCT CRSPRE ACTPERYR ACTFTE SCHTOT SCHFND); INFILE IRDWOBAR LENGTH=LEN TRUNCOVER; INPUT @001 IRDKEY $CHAR39. @001 UNIV $CHAR04. @005 TERMID $CHAR06. @005 YEAR $CHAR04. @009 MONTH $CHAR02. @011 EMPBE $CHAR01. @012 SSN $CHAR09. @021 PAYPLNNO $CHAR02. @023 UNIVPOS $CHAR08. @031 DEPTID $CHAR09. @051 NAME $CHAR37. @051 LNAME $CHAR22. @073 FNAME $CHAR14. @087 MINIT $CHAR01. @088 PCEMP $CHAR06. @094 CLCD $CHAR04. @098 EMPFTE ZD5.4 @103 BUDWKS ZD4.2 @107 EMPPERYR ZD5.4 @112 CONTHRS ZD7.4 @119 RANK $CHAR02. @121 ADMCD1 $CHAR02. @123 EMPCIP $CHAR06. @129 TMAMT ZD6. @135 U_RESV_1 $CHAR50. @200 OCCACT $CHAR01. @199 PIDSSNFLG $CHAR01. @201 RACE $CHAR01. @202 GENDER $CHAR01. @203 TENYR $CHAR01. @204 SEGCNT ZD2. @ ; OUTPUT IRDMAIN; IF SEGCNT GT 0; N = 0; LOOP: N+1; IF (SEGCNT LT 1) OR (N GT SEGCNT) THEN GOTO RESOUT; IF N LE SEGCNT THEN INPUT ACTSEGKY $CHAR39. +(-39) ACTBE $CHAR01. COLL_SUB $CHAR02. PCACT $CHAR06. IRACT $CHAR02. PCRSTYPE $CHAR01. CRSCIP $CHAR06. +(-06) PGDISC $CHAR02. +04 ACTACCT $CHAR09. CRSSCID $CHAR12. +(-12) CRSPRE $CHAR03. CRSNO $CHAR04. CRSOIND $CHAR01. CRSSECT $CHAR04. +04 SESSFLG $CHAR01. VCREDFLG $CHAR01. CRSCRED ZD3.1 SCHTOT ZD6.1 SCHFND ZD6.1 SECTWKLD ZD4.3 ACTPERYR ZD5.4 ACTFTE ZD5.4 U_RESV_1 $CHAR50. ACTCONT ZD7.4 CONTMOD ZD7.4 U_RESV_2 $CHAR12. @; IF SUBSTR (CRSCIP,3,4) EQ '9999' AND ACTACCT EQ '999999999' AND CRSPRE EQ '999' THEN OUTPUT SUMSEG; ELSE OUTPUT IRDSEG; GOTO LOOP; RESOUT: RETURN; /* PERSON_DEMOGRAPHICS SORTED OUTPUT */ PROC SORT DATA=IRDMAIN OUT=SRTMAIN NODUPKEYS; BY TERMID UNIV SSN; /********************************************************** * PERSON DEMOGRAPHICS * *********************************************************/ DATA DEMO; SET SRTMAIN; KEEP DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID PID_VALID_SSN BIRTH_YYYYMM_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 PERSON_DEMO; FORMAT DEMO_TIME_FRAME $CHAR06.; RETAIN PK_SEQ_NUM 0; DEMO_TIME_FRAME = TERMID; REPT_INST = UNIV; DEMO_DATA_SOURCE = 'IRD'; SYSID = SSN; *SYSID_SEQ = 1; PID_VALID_SSN = PIDSSNFLG; BIRTH_YYYYMM_DT = ' '; 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 = ' '; FORMAT TABLE_ID $CHAR26. GOODOBS 8.; RETAIN GOODOBS; IF GOODOBS < 1 THEN DO; FORMAT PK_SEQ_NUM 8.; PK_SEQ_NUM = 0; END; GOODOBS + 1; TABLE_ID = 'PERSON_DEMO'; FORMAT PK_TABLE $CHAR02. PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEMO_TIME_FRAME; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM = '06'; PK_SEQ_NUM = PK_SEQ_NUM + 1; PERSON_DEMO = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); OUTPUT DEMO; DATA _NULL_; SET DEMO; FILE IRDDEMO DLM='|' LRECL=600; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID PID_VALID_SSN BIRTH_YYYYMM_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 ; /********************************************************** * WORKLOAD (IRD) PERSON FUNDING * *********************************************************/ DATA WKLOAD; SET IRDMAIN; KEEP DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID DEPT_ID UNIV_BUD_ID CLASS_CD RANK_FAC ADMIN_CD_PRI INSTRCT_RESRCH_FTE BUD_WKS_TERM PERYRS_TERM TERM_AMT_REQ_BENE DEPT_EMP_PROG_COMP EMPL_CONTACT_HRS CIP_EMP OCC_ACT_CAT_EEO6 TENURE_STAT U_RESV_1 WKLD_PERSON_FUNDING; DEMO_TIME_FRAME = TERMID; REPT_INST = UNIV; DEMO_DATA_SOURCE= 'IRD'; SYSID= SSN; *SYSID_SEQ = 1; BE_CD_EMPL = EMPBE; PAY_PLAN_NBR = PAYPLNNO; UNIV_POSITION = UNIVPOS; DEPT_ID= DEPTID; UNIV_BUD_ID= '0000000000'; CLASS_CD = CLCD; RANK_FAC= RANK; ADMIN_CD_PRI = ADMCD1; INSTRCT_RESRCH_FTE= EMPFTE; BUD_WKS_TERM= BUDWKS; PERYRS_TERM = EMPPERYR; TERM_AMT_REQ_BENE = TMAMT; DEPT_EMP_PROG_COMP= PCEMP; EMPL_CONTACT_HRS= CONTHRS; CIP_EMP = EMPCIP; OCC_ACT_CAT_EEO6= OCCACT; TENURE_STAT= TENYR; U_RESV_1= U_RESV_1; IF BE_CD_EMPL = ' ' THEN BE_CD_EMPL = '.'; IF PAY_PLAN_NUMBER = ' ' THEN PAY_PLAN_NUMBER = '.'; IF UNIV_POSITION = ' ' THEN UNIV_POSITION = '.'; IF DEPT_ID = ' ' THEN DEPT_ID = '.'; IF UNIV_BUD_ID = ' ' THEN UNIV_BUD_ID = '.'; FORMAT TABLE_ID $CHAR26. GOODOBS 8. REPT_INST $CHAR04.; RETAIN GOODOBS; IF GOODOBS < 1 THEN DO; FORMAT PK_SEQ_NUM 8.; PK_SEQ_NUM = 0; END; GOODOBS + 1; TABLE_ID = 'WORKLOAD_PERSON_FUNDING'; FORMAT PK_TABLE $CHAR02. PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEMO_TIME_FRAME; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM = '06'; PK_SEQ_NUM = PK_SEQ_NUM + 1; WKLD_PERSON_FUNDING = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); RETAIN WKLD_PERSON_FUNDING; OUTPUT WKLOAD; PROC SORT DATA=DEMO; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID SYSID_SEQ; RUN; PROC SORT DATA=WKLOAD; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID SYSID_SEQ; RUN; DATA D_WKLOAD;RETAIN PERSON_DEMO WKLD_PERSON_FUNDING; MERGE DEMO(IN=A) WKLOAD(IN=B); BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID; IF A AND B; IF B; PROC SORT DATA=D_WKLOAD; BY WKLD_PERSON_FUNDING;RUN; DATA _NULL_; SET D_WKLOAD; FILE IRDFUND DLM='|' LRECL=600; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID CLASS_CD RANK_FAC ADMIN_CD_PRI INSTRCT_RESRCH_FTE BUD_WKS_TERM PERYRS_TERM TERM_AMT_REQ_BENE DEPT_EMP_PROG_COMP EMPL_CONTACT_HRS CIP_EMP OCC_ACT_CAT_EEO6 TENURE_STAT U_RESV_1; /********************************************************** * WORKLOAD (IRD)ACTIVITIES * *********************************************************/ DATA WKACTS; SET IRDSEG SUMSEG; KEEP DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID DEPT_ID UNIV_BUD_ID BE_CD_ACT COLLEGE PROG_COMP_ACT INSTR_RESRCH_ACT CRS_SECTN_TYP_PRI CIP_CRS DEPT_ID_ACT UNIV_BUD_ID_ACT CRS_PREFIX CRS_NBR CRS_IND CRS_SECTN_NBR SESSION_ID VAR_CRED_FLG CRS_CRED_HRS INSTR_TOT_SCH INSTR_FND_SCH PORT_SECTN_WKLD PERYRS_ACT_PORT FTE_ACT_PORTION CONTACT_HRS CONTACT_HRS_MOD U_RESV_1 U_RESV_2 WKLD_ACTIVITIES ; FORMAT DEMO_TIME_FRAME $CHAR06.; RETAIN PK_SEQ_NUM 0; DEMO_TIME_FRAME = TERMID; REPT_INST = UNIV; DEMO_DATA_SOURCE = 'IRD'; SYSID = SSN; *SYSID_SEQ = 1; BE_CD_EMPL = EMPBE; PAY_PLAN_NBR = PAYPLNNO; UNIV_POSITION = UNIVPOS; DEPT_ID = DEPTID; UNIV_BUD_ID = '0000000000'; BE_CD_ACT = ACTBE; COLLEGE = COLL_SUB; PROG_COMP_ACT = PCACT; INSTR_RESRCH_ACT = IRACT; CRS_SECTN_TYP_PRI = PCRSTYPE; CIP_CRS = CRSCIP; DEPT_ID_ACT = ACTACCT; UNIV_BUD_ID_ACT = '0000000000'; CRS_PREFIX = CRSPRE; CRS_NBR = CRSNO; CRS_IND = CRSOIND; CRS_SECTN_NBR = CRSSECT; SESSION_ID = SESSFLG; VAR_CRED_FLG = VCREDFLG; CRS_CRED_HRS = CRSCRED; INSTR_TOT_SCH = SCHTOT; INSTR_FND_SCH = SCHFND; PORT_SECTN_WKLD = SECTWKLD; PERYRS_ACT_PORT = ACTPERYR; FTE_ACT_PORTION = ACTFTE; CONTACT_HRS = ACTCONT; CONTACT_HRS_MOD = CONTMOD; U_RESV_1 = U_RESV_1; U_RESV_2= U_RESV_2; IF BE_CD_EMPL = ' ' THEN BE_CD_EMPL = '.'; IF PAY_PLAN_NBR = ' ' THEN PAY_PLAN_NBR = '.'; IF UNIV_POSITION = ' ' THEN UNIV_POSITION = '.'; IF DEPT_ID = ' ' THEN DEPT_ID = '.'; IF UNIV_BUD_ID = ' ' THEN UNIV_BUD_ID = '.'; IF BE_CD_ACT = ' ' THEN BE_CD_ACT = '.'; IF COLLEGE = ' ' THEN COLLEGE = '.'; IF PROG_COMP_ACT = ' ' THEN PROG_COMP_ACT = '.'; IF INSTR_RESRCH_ACT = ' ' THEN INSTR_RESRCH_ACT = '.'; IF CRS_SECTN_TYP_PRI = ' ' THEN CRS_SECTN_TYP_PRI = '.'; IF CIP_CRS = ' ' THEN CIP_CRS = '.'; IF INSTR_RESRCH_ACT = ' ' THEN INSTR_RESRCH_ACT = '.'; IF UNIV_BUD_ID_ACT = ' ' THEN UNIV_BUD_ID_ACT = '.'; IF CRS_PREFIX = ' ' THEN CRS_PREFIX = '.'; IF CRS_NBR = ' ' THEN CRS_NBR = '.'; IF CRS_IND = ' ' THEN CRS_IND = '.'; IF CRS_SECTN_NBR = ' ' THEN CRS_SECTN_NBR = '.'; RETAIN GOODOBS; IF GOODOBS < 1 THEN DO; FORMAT PK_SEQ_NUM 8.; PK_SEQ_NUM = 0; END; GOODOBS + 1; FORMAT TABLE_ID $CHAR26. GOODOBS 8.; TABLE_ID = 'WORKLOAD_ACTIVITIES'; FORMAT PK_TABLE $CHAR02. PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEMO_TIME_FRAME; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM = '06'; PK_SEQ_NUM = PK_SEQ_NUM + 1; WKLD_ACTIVITIES = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); RETAIN WKLD_ACTIVITIES; OUTPUT WKACTS; /********************************************************** * BUILDS SUMMARY SEGMENTS FOR ALL ACTIVITY DETAIL RECS * *********************************************************/ DATA MAKESUMSEG; SET WKACTS; U_RESV_1 = 'PROGGEN'; PCRSTYPE = '9'; IF CRSCIP NE '511600' THEN CRSCIP = SUBSTR(CRSCIP,1,2)||'9999'; PROC SORT DATA = MAKESUMSEG OUT = SRTSUMSEG; BY DEMO_TIME_FRAME REPT_INST SYSID BE_CD_ACT CIP_CRS COLLEGE PROG_COMP_ACT INSTR_RESRCH_ACT; PROC SUMMARY DATA=SRTSUMSEG; BY DEMO_TIME_FRAME REPT_INST SYSID BE_CD_ACT CIP_CRS COLLEGE PROG_COMP_ACT INSTR_RESRCH_ACT; VAR PERYRS_ACT_PORT FTE_ACT_PORTION; ID UNIV_POSITION CRS_SECTN_TYP_PRI U_RESV_1 DEMO_DATA_SOURCE BE_CD_EMPL PAY_PLAN_NBR; OUTPUT OUT=BUILTSUMSEGS SUM=; /********************************************************** * IRD ACTIVITIES SUMMARY * *********************************************************/ DATA ACTSUM; SET BUILTSUMSEGS; KEEP DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID_ACT BE_CD_ACT CIP_CRS CRS_SECTN_TYP_PRI COLLEGE PROG_COMP_ACT PERYRS_ACT_PORT FTE_ACT_PORTION U_RESV_1 WKLD_ACT_SUMM INSTR_RESRCH_ACT; FORMAT DEMO_TIME_FRAME $CHAR06.; RETAIN PK_SEQ_NUM 0; *SYSID_SEQ = 1; IF PAY_PLAN_NUMBER = ' ' THEN PAY_PLAN_NUMBER = '.'; IF UNIV_POSITION = ' ' THEN UNIV_POSITION = '.'; IF DEPT_ID = ' ' THEN DEPT_ID = '.'; IF UNIV_BUD_ID_ACT = ' ' THEN UNIV_BUD_ID_ACT = '.'; IF BE_CD_ACT = ' ' THEN BE_CD_ACT = '.'; IF CIP_CRS = ' ' THEN CIP_CRS = '.'; IF CRS_SECTN_TYP_PRI = ' ' THEN CRS_SECTN_TYP_PRI = '.'; IF COLLEGE = ' ' THEN COLLEGE = '.'; IF PROG_COMP_ACT = ' ' THEN PROG_COMP_ACT = '.'; IF INSTR_RESRCH_ACT = ' ' THEN INSTR_RESRCH_ACT = '.'; FORMAT TABLE_ID $CHAR26. GOODOBS 8.; RETAIN GOODOBS; IF GOODOBS < 1 THEN DO; FORMAT PK_SEQ_NUM 8.; PK_SEQ_NUM = 0; END; GOODOBS + 1; TABLE_ID = 'WORKLOAD_ACTIVITY_SUMMARY'; FORMAT PK_TABLE $CHAR02. PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEMO_TIME_FRAME; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM = '06'; PK_SEQ_NUM = PK_SEQ_NUM + 1; WKLD_ACT_SUMM = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); RETAIN WKLD_ACT_SUMM; OUTPUT ACTSUM; PROC SORT DATA=D_WKLOAD; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID; PROC SORT DATA=ACTSUM; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID; DATA D_W_ACTSUM;RETAIN PERSON_DEMO WKLD_PERSON_FUNDING WKLD_ACT_SUMM; MERGE D_WKLOAD (IN=A) ACTSUM (IN=B); BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID; IF B; PROC SORT DATA=D_W_ACTSUM; BY WKLD_ACT_SUMM; RUN; DATA _NULL_; SET D_W_ACTSUM; FILE IRDSUM DLM='|' LRECL=600; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID_ACT BE_CD_ACT CIP_CRS CRS_SECTN_TYP_PRI COLLEGE PROG_COMP_ACT INSTR_RESRCH_ACT PERYRS_ACT_PORT FTE_ACT_PORTION U_RESV_1; /********************************************************** * ASSIGN PRIMARY KEY VALUES TO SUMMARY/DETAIL DATA SET * *********************************************************/ DATA ASSGNKEYS; SET WKACTS; OUTPUT ASSGNKEYS; PROC SORT DATA=D_W_ACTSUM; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID; RUN; PROC SORT DATA=ASSGNKEYS; BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID; RUN; DATA LAST;RETAIN PERSON_DEMO WKLD_PERSON_FUNDING WKLD_ACT_SUMM; MERGE D_W_ACTSUM(IN=A) ASSGNKEYS(IN=B); BY DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID; IF B; PROC SORT DATA=LAST; BY WKLD_ACTIVITIES;RUN; DATA _NULL_; SET LAST; FILE IRDACT DLM='|' LRECL=600; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SYSID BE_CD_EMPL PAY_PLAN_NBR UNIV_POSITION DEPT_ID UNIV_BUD_ID BE_CD_ACT COLLEGE PROG_COMP_ACT INSTR_RESRCH_ACT CRS_SECTN_TYP_PRI CIP_CRS DEPT_ID_ACT UNIV_BUD_ID_ACT CRS_PREFIX CRS_NBR CRS_IND CRS_SECTN_NBR SESSION_ID VAR_CRED_FLG CRS_CRED_HRS INSTR_TOT_SCH INSTR_FND_SCH PORT_SECTN_WKLD PERYRS_ACT_PORT FTE_ACT_PORTION CONTACT_HRS CONTACT_HRS_MOD U_RESV_1 U_RESV_2;