//BRXXXLOD JOB (BRXXX,,,1),'UNIV HTD LOAD',TIME=(1) //*************************************************************/ //**** PROGRAM TO CONVERT LEGACY HTD 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 ***/ //*************************************************************/ //************ HOUSEKEEPING ********************************/ //DELETE EXEC PGM=IDCAMS,REGION=512K //SYSPRINT DD SYSOUT=A //SYSIN DD * DELETE (BOR.UNIV.LOAD.HTD.PERDEMO) DELETE (BOR.UNIV.LOAD.HTD.DEGAWARD) DELETE (BOR.UNIV.LOAD.HTD.CRSTODEG) DELETE (BOR.UNIV.LOAD.HTD.HRSTODEG) SET MAXCC = 0 /* //STEP1 EXEC SAS,WORK='20000,10000' //HTDIN DD DSN=BOR.MASTER.HTD.UNIV.MMMYY,DISP=SHR //* //*--------------- OUTPUT FILES --------------- */ //PERDEMO DD DSN=BOR.UNIV.LOAD.HTD.PERDEMO, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //HRSTODEG DD DSN=BOR.UNIV.LOAD.HTD.HRSTODEG, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=140,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //CRSTODEG DD DSN=BOR.UNIV.LOAD.HTD.CRSTODEG, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(800,100),RLSE) //DEGAWARD DD DSN=BOR.UNIV.LOAD.HTD.DEGAWARD, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //* OPTIONS S=72 PS=65 ERRORS=3 MISSING = ' ' NODATE NOSOURCE; PROC FORMAT; VALUE $UNIVNB 'FAMU' = '03' 'FAU ' = '05' 'FGCU' = '10' 'FSU ' = '02' 'NCF ' = '11' 'UF ' = '01' 'USF ' = '04' 'UCF ' = '07' 'UWF ' = '06' 'FIU ' = '08' 'UNF ' = '09'; VALUE $PKTABLE 'COURSES_TO_DEGREE' = '11' 'DEGREES_AWARDED' = '12' 'HOURS_TO_DEGREE' = '26' 'PERSON_DEMO' = '31' 'OTHER' ='.'; DATA DEMOH; INFILE HTDIN LRECL=140 TRUNCOVER; INPUT @001 HTDKEY $CHAR025. @001 UNIV $CHAR004. @005 SSN $CHAR009. @014 DEGTERM $CHAR006. @020 DEGCIP $CHAR006. @026 TYPEHTD $CHAR001. @027 MATCH $CHAR01. @027 BOGKEY1 $CHAR10. @037 INSKEY1 $CHAR10. @; IF TYPEHTD EQ '1' THEN DO; INPUT @047 NAME $CHAR037. @047 LNAME $CHAR022. @069 FNAME $CHAR014. @083 MINIT $CHAR001. @084 INSDEM $CHAR04. @088 RACE $CHAR001. @089 SEX $CHAR001. @090 RADMTYPE $CHAR01. @091 ADMRDT $CHAR06. @097 TYPENTRY $CHAR001. @098 DTENTRY $CHAR06. @104 STDTBE $CHAR01. @105 FEECLSRS $CHAR01. @106 DEGHELD $CHAR001. @107 DEGINST $CHAR005. @112 HSGRADDT $CHAR08. @120 SBIRTHDT $CHAR10. @130 BORDEM $CHAR01. @131 INSDEM $CHAR10.; END; IF TYPEHTD EQ '2' THEN DO; INPUT @047 FILLB3 $CHAR03. @050 CATTERM $CHAR06. @056 CATHOURS 3.0 @059 HRSUSED 7.2 @066 FILLB450 $CHAR07. @073 DEGCHGNO 2.0 @075 TERMUPP $CHAR06. @081 DEGINFO $CHAR30. @081 DEGGRT1 $CHAR01. @082 DEGCIP1 $CHAR06. @088 DEGFRAC1 3.2 @091 DEGGRT2 $CHAR01. @092 DEGCIP2 $CHAR06. @098 DEGFRAC2 3.2 @101 DEGGRT3 $CHAR01. @102 DEGCIP3 $CHAR06. @108 DEGFRAC3 3.2 @111 EXCSUS 7.2 @116 EXCNAT 7.2 @121 BOGDEGF $CHAR05. @126 INSDEGF $CHAR15.; END; IF TYPEHTD EQ '3' THEN DO; INPUT @047 HTDCKEY $CHAR029. @047 TERMID $CHAR06. @053 FICEFIL $CHAR01. @054 INSTCRS $CHAR05. @059 CRSCLS $CHAR01. @060 CRSSYS $CHAR01. @061 CRSGRP $CHAR01. @062 CRSRES $CHAR01. @063 REPEAT $CHAR01. @064 CRSSCID $CHAR012. @064 CRSPRE $CHAR03. @067 CRSNO $CHAR04. @071 CCOIND $CHAR01. @072 CRSSECT $CHAR04. @076 CRSCIP $CHAR06. @082 CRSTYPE $CHAR01. @083 TSTMETH $CHAR02. @085 GRADE $CHAR02. @087 FILL3 $CHAR03. @090 USEIND $CHAR01. @091 SECTCRED 4.2 @096 CRSCIP2 $CHAR06. @102 DEGCOST2 7.2 @109 DEGCOST4 7.2 @116 INSCRS $CHAR25.; END; PROC SORT DATA = DEMOH; BY UNIV SSN DEGTERM TYPEHTD; DATA DEMOH; SET DEMOH; BY UNIV SSN DEGTERM TYPEHTD; FORMAT DEMO_KEY $CHAR20.; DEMO_KEY = UNIV||SSN||DEGTERM||TYPEHTD; RUN; PROC SORT DATA = DEMOH; BY DEMO_KEY; DATA DEMOB; SET DEMOH; BY DEMO_KEY; FORMAT DEMO_DUP $CHAR01.; DEMO_DUP = ' '; IF NOT (FIRST.DEMO_KEY AND LAST.DEMO_KEY) THEN DEMO_DUP = 'X'; IF NOT FIRST.DEMO_KEY THEN DEMO_DUP = 'Y'; IF LAST.DEMO_KEY AND (DEMO_DUP NOT = ' ')THEN DEMO_DUP = 'Z'; OUTPUT DEMOB; RUN; PROC SORT DATA = DEMOB OUT=DEMOB; BY DEGTERM SSN UNIV; DATA HTDALL(KEEP= HOURS_TO_DEGREE PERSON_DEMO HTDKEY UNIV SSN PERSON_ID REPT_INST SYSID_SEQ DEGTERM DEGGRT1 DEMO_TIME_FRAME DEMO_DATA_SOURCE DEGCIP CATTERM CATHOURS TYPEHTD DEGCHGNO TERMUPP BOGKEY1 INSKEY1 INSDEM INSDEGF HRSUSED EXCSUS EXCNAT TYPEHTD PK_SEQ_NUM_HTD PREV_TERM REPT_TIME_FRAME A_PERSON_DEMO HOLD_PERSON_DEMO DEMO_DUP UNIV_ROW_ID) HTDDEM (KEEP= PERSON_DEMO DEMO_TIME_FRAME TERMID UNIV DEMO_DATA_SOURCE SSN PERSON_ID SYSID_SEQ SBIRTHDT LNAME FNAME MINIT SEX RACE U_RESV_1 HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG BLACK_AFRICAN_AM_FLG NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG SUFFIX NO_RACE_REPORT_FLG INSDEM BIRTH_YYYYMM_DT PK_SEQ_NUM PREV_TERM REPT_INST TYPEHTD DEGTERM HOLD_PERSON_DEMO DEMO_KEY DEMO_DUP UNIV_ROW_ID PID_VALID_SSN HSGRADDT DEGCIP) HTDCRS (KEEP= COURSES_TO_DEGREE PERSON_DEMO HOURS_TO_DEGREE HTDCKEY REPT_TIME_FRAME TERMID UNIV SSN PERSON_ID SYSID_SEQ DEGTERM DEGGRT1 INSTCRS CRSSCID CRSPRE CRSNO CCOIND CRSSECT DEMO_TIME_FRAME DEMO_DATA_SOURCE CRSCLS CRSSYS CRSGRP CRSRES REPEAT CRSCIP CRSTYPE TSTMETH GRADE USEIND SECTCRED BOGKEY1 INSCRS PREV_TERM PK_SEQ_NUM_CRS REPT_INST C_PERSON_DEMO HOLD_PERSON_DEMO DEMO_DUP UNIV_ROW_ID) HTDDEG (KEEP= DEGREES_AWARDED PERSON_DEMO TERMID UNIV SSN PERSON_ID SYSID_SEQ FEE_CLASS_KIND DEGTERM DEGGRT1 DEGCIP MAJOR_IND TCHR_PREP_DOE_CD DEMO_TIME_FRAME DEMO_DATA_SOURCE AWARD_SOURCE TCHR_PREP_DOE_LEVEL TCHR_EDU_PGM_METHOD DEGFRAC1 DOC_CLASS BE_CD U_RESV_1 IPEDS_RPTD_FLG insdegf REPT_TIME_FRAME REPT_INST PREV_TERM PK_SEQ_NUM_DEG DEGGRT2 DEGCIP2 DEGFRAC2 DEGGRT3 DEGCIP3 DEGFRAC3 D_PERSON_DEMO HOLD_PERSON_DEMO DEMO_DUP UNIV_ROW_ID); RETAIN PREV_TERM PK_SEQ_NUM PK_SEQ_NUM_HTD PK_SEQ_NUM_CRS PK_SEQ_NUM_DEG SYSID_SEQ DEMO_KEY DEMO_DUP A_PERSON_DEMO C_PERSON_DEMO D_PERSON_DEMO UNIV_ROW_ID HOLD_PERSON_DEMO PERSON_DEMO HOURS_TO_DEGREE CRSSCID HTDCKEY; SET DEMOB; BY DEGTERM SSN UNIV; FORMAT DEMO_TIME_FRAME $CHAR06. REPT_TIME_FRAME $CHAR06. CURRENT_TERMID $CHAR06. UNIV_ROW_ID $CHAR08. CATTERM $CHAR06. CATHOURS 3.0 DEGCHGNO 2.0; REPT_INST = UNIV; DEMO_TIME_FRAME = DEGTERM; REPT_TIME_FRAME = DEGTERM; CURRENT_TERMID = DEGTERM; DEMO_DATA_SOURCE = 'HTD'; AWARD_SOURCE = 'HTD'; PERSON_ID = SSN; PID_VALID_SSN = 'Y'; TERM_DEG_GRANT = DEGTERM; DEG_LEVEL_GRANT = DEGGRT1; CIP_DEGREE = DEGCIP; CIP_FRAC_DEG = DEGFRAC1; HS_GRAD_DT = HSGRADDT; CATALOG_TERM = CATTERM; CATALOG_HOURS = CATHOURS; NBR_CIP_CHGS = DEGCHGNO; TERM_UPPER = TERMUPP; U_RESV_1 = BOGKEY1; U_RESV_2 = INSKEY1; U_RESV_3 = INSDEM; U_RESV_4 = INSDEGF; TERM_TAKEN = TERMID; RACE_ETHNICITY = RACE; FORMAT PREV_TERM $CHAR06. PREV_SEQ_NUM 8.; IF PREV_TERM NE CURRENT_TERMID THEN DO; PREV_TERM = CURRENT_TERMID; FORMAT PK_SEQ_NUM 8. PK_SEQ_NUM_HTD 8. PK_SEQ_NUM_CRS 8. PK_SEQ_NUM_DEG 8.; PK_SEQ_NUM = 0; PK_SEQ_NUM_HTD = 0; PK_SEQ_NUM_CRS = 0; PK_SEQ_NUM_DEG = 0; PK_TERMID = CURRENT_TERMID; PREV_SEQ_NUM = PK_SEQ_NUM; END; FORMAT PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_UNIV = PUT(REPT_INST, $UNIVNB.); PK_SUBM ='05'; FORMAT SYSID_SEQ 1.; SYSID_SEQ = 1; FORMAT ROWSEQ_NBR 8.; UNIV_ROW_ID = _N_; /********************************************************** * Person Demographics * *********************************************************/ IF TYPEHTD = '1' THEN DO; FORMAT U_RESV_1 $CHAR50.; FORMAT HSGRADDT $CHAR08.; FORMAT BIRTH_YYYYMM_DT $CHAR08. DOB_YEAR $CHAR04. DOB_MONTH $CHAR02. DOB_DAY $CHAR02.; DOB_YEAR = SUBSTR(SBIRTHDT,1,4); DOB_MONTH = SUBSTR(SBIRTHDT,6,2); DOB_DAY = SUBSTR(SBIRTHDT,9,2); IF DOB_YEAR = '9999' OR DOB_MONTH = '99' OR DOB_DAY = '99' THEN BIRTH_YYYYMM_DT = ' '; ELSE BIRTH_YYYYMM_DT = trim(DOB_YEAR)||trim(DOB_MONTH)||trim(DOB_DAY); IF LENGTH(TRIM(HSGRADDT)) = 6 THEN HSGRADDT = SUBSTR(HSGRADDT,1,6)||'15'; IF LENGTH(TRIM(LEFT(HSGRADDT))) < 6 THEN HSGRADDT = ' '; IF SUBSTR(HSGRADDT,7,2)= 00 THEN DO; HSGRADDT = SUBSTR(HSGRADDT,1,6)||'15'; END; NAME_LAST = LNAME; NAME_FIRST = FNAME; NAME_MI = MINIT; SUFFIX = '.'; GENDER = SEX; 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 = '.'; PK_SEQ_NUM = PK_SEQ_NUM + 1; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'PERSON_DEMO'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEGTERM; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM ='05'; PERSON_DEMO = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM,Z8.); FORMAT HOLD_PERSON_DEMO $CHAR22.; IF DEMO_DUP = ' ' THEN HOLD_PERSON_DEMO = ' '; IF DEMO_DUP IN ('X') THEN HOLD_PERSON_DEMO = PERSON_DEMO; IF DEMO_DUP IN ('Y','Z') THEN DO; SYSID_SEQ + 1; END; OUTPUT HTDDEM; END; /********************************************************** * Hours to Degree * *********************************************************/ IF TYPEHTD = '2' THEN DO; CIP_DEGREE = DEGCIP; DEG_LEVEL_GRANT= DEGGRT1; DEGGRT1= 'B'; CATALOG_TERM = CATTERM; CATALOG_HOURS = CATHOURS; NBR_CIP_CHGS = DEGCHGNO; IF DEGCHGNO = ' ' THEN DEGCHGNO = 0; TERM_UPPER = TERMUPP; U_RESV_1 = BOGKEY1; U_RESV_2 = INSKEY1; U_RESV_3 = INSDEM; U_RESV_4 = INSDEGF; HRS_USED = HRSUSED; EXCESS_HRS_SUS = EXCSUS; IF EXCSUS = ' ' THEN EXCSUS = 0; EXCESS_HRS_NATIVE = EXCNAT; IF EXCNAT = ' ' THEN EXCNAT = 0; TABLE_ID = 'HOURS_TO_DEGREE'; FORMAT AK_TABLE $CHAR02.; AK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = DEGTERM; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM ='05'; PK_SEQ_NUM_HTD + 1; HOURS_TO_DEGREE = PK_TERMID||PK_UNIV||PK_SUBM||AK_TABLE||PUT(PK_SEQ_NUM_HTD,Z8.); A_PERSON_DEMO = PERSON_DEMO; IF DEMO_DUP IN ('X','Y','Z') THEN A_PERSON_DEMO = HOLD_PERSON_DEMO; OUTPUT HTDALL; END; /********************************************************** * Courses_to_Degree * *********************************************************/ IF TYPEHTD = '3' THEN DO; TERM_TAKEN = TERMID; IF TERMID = ' ' THEN TERMID = '.'; CRS_INST_CD = INSTCRS; IF INSTCRS = ' ' THEN INSTCRS = '.'; CRS_PREFIX = CRSPRE; IF CRSPRE = ' ' THEN CRSPRE = '.'; CRS_NBR = CRSNO; IF CRSNO = ' ' THEN CRSNO = '.'; CRS_IND = CCOIND; IF CCOIND = ' ' THEN CCOIND = '.'; CRS_SECTN_NBR = CRSSECT; IF CRSSECT = ' ' THEN CRSSECT = '.'; DEG_LEVEL_GRANT= DEGGRT1; IF DEGGRT1 = ' ' THEN DEGGRT1 = '.'; STU_CLASS_LEVEL = CRSCLS; CRS_SYSTEM = CRSSYS; CRS_GROUP = CRSGRP; CRS_RESULT = CRSRES; REPEAT_IND = REPEAT; CIP_CRS = CRSCIP; CRS_SECTN_TYP = CRSTYPE; TEST_METHOD = TSTMETH; GRADE_AWARDED = GRADE; USAGE_IND = USEIND; SECTN_CRED = SECTCRED; U_RESV_1 = BOGKEY1; U_RESV_2 = INSCRS; UNIV_ROW_ID = _N_; TABLE_ID = 'COURSES_TO_DEGREE'; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = CURRENT_TERMID; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM ='05'; C_PERSON_DEMO = PERSON_DEMO; IF DEMO_DUP IN ('X','Y','Z') THEN C_PERSON_DEMO = HOLD_PERSON_DEMO; PK_SEQ_NUM_CRS + 1; COURSES_TO_DEGREE = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_CRS,Z8.); OUTPUT HTDCRS;END; /********************************************************** * Degrees_Awarded * *********************************************************/ IF TYPEHTD = '2' THEN DO; FEE_CLASS_KIND = 'P'; CIP_DEGREE = DEGCIP; TCHR_PREP_DOE_CD = '999'; DEMO_DATA_SOURCE= 'HTD'; AWARD_SOURCE = 'HTD'; TCHR_PREP_DOE_LEVEL = '.'; TCHR_EDU_PGM_METHOD = '.'; CIP_FRAC_DEG = DEGFRAC1; IF DEGFRAC1 = ' ' THEN DEGFRAC1 = 0; DOC_CLASS = '.'; BE_CD = '.'; U_RESV_1 = INSDEGF; IPEDS_RPTD_FLG = '.'; UNIV_ROW_ID = _N_; TABLE_ID = 'DEGREES_AWARDED'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$PKTABLE.); PK_TERMID = CURRENT_TERMID; PK_UNIV = PUT(REPT_INST,$UNIVNB.); PK_SUBM ='05'; FORMAT DEGREE $CHAR01. PROGRAM $CHAR06. FRACTION 4.2; D_PERSON_DEMO = PERSON_DEMO; IF DEMO_DUP IN ('X','Y','Z') THEN D_PERSON_DEMO = HOLD_PERSON_DEMO; IF DEGGRT1 NE 'N' AND DEGGRT1 NE ' ' THEN DO; IF (DEGGRT1 = DEGGRT2) AND (DEGGRT1 = DEGGRT3) AND (DEGCIP1 = DEGCIP2) AND (DEGCIP1 = DEGCIP3)THEN DO; DEGREE = DEGGRT1; PROGRAM = DEGCIP1; FRACTION = DEGFRAC1 + DEGFRAC2 + DEGFRAC3; MAJOR_IND = '1'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; END; END; IF DEGGRT1 NE 'N' AND DEGGRT1 NE ' ' THEN DO; IF (DEGGRT1 = DEGGRT2) AND (DEGCIP1 = DEGCIP2) THEN DO; DEGREE = DEGGRT1; PROGRAM = DEGCIP1; FRACTION = DEGFRAC1 + DEGFRAC2; MAJOR_IND = '1'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; IF DEGGRT3 NE 'N' AND DEGGRT3 NE ' ' THEN DO; DEGREE = DEGGRT3; PROGRAM = DEGCIP3; FRACTION = DEGFRAC3; MAJOR_IND = '2'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; END; END; END; IF DEGGRT1 NE 'N' AND DEGGRT1 NE ' ' THEN DO; IF (DEGGRT1 = DEGGRT3) AND (DEGCIP1 = DEGCIP3) THEN DO; DEGREE = DEGGRT1; PROGRAM = DEGCIP1; FRACTION = DEGFRAC1 + DEGFRAC3; MAJOR_IND = '1'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; IF DEGGRT2 NE 'N' AND DEGGRT2 NE ' ' THEN DO; DEGREE = DEGGRT2; PROGRAM = DEGCIP2; FRACTION = DEGFRAC2; MAJOR_IND = '2'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; END; END; END; IF DEGGRT2 NE 'N' AND DEGGRT2 NE ' ' THEN DO; IF (DEGGRT2 = DEGGRT3) AND (DEGCIP2 = DEGCIP3) THEN DO; DEGREE = DEGGRT2; PROGRAM = DEGCIP2; FRACTION = DEGFRAC2 + DEGFRAC3; MAJOR = '2'; PK_SEQ_NUM_DEGREE + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; IF DEGGRT1 NE 'N' AND DEGGRT1 NE ' ' THEN DO; DEGREE = DEGGRT1; PROGRAM = DEGCIP1; FRACTION = DEGFRAC1; MAJOR_IND = '1'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG; END; END; END; IF DEGGRT1 NE 'N' AND DEGGRT1 NE ' ' THEN DO; DEGREE = DEGGRT1; PROGRAM = DEGCIP1; FRACTION = DEGFRAC1; MAJOR_IND = '1'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG;END; IF DEGGRT2 NE 'N' AND DEGGRT2 NE ' ' THEN DO; DEGREE = DEGGRT2; PROGRAM = DEGCIP2; FRACTION = DEGFRAC2; MAJOR_IND = '2'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG;END; IF DEGGRT3 NE 'N' AND DEGGRT3 NE ' ' THEN DO; DEGREE = DEGGRT3; PROGRAM = DEGCIP3; FRACTION = DEGFRAC3; MAJOR_IND = '3'; PK_SEQ_NUM_DEG + 1; DEGREES_AWARDED = PK_TERMID||PK_UNIV||PK_SUBM||PK_TABLE||PUT(PK_SEQ_NUM_DEG,Z8.); OUTPUT HTDDEG;END; END;RUN; DATA HTDALL2; MERGE HTDDEM (IN=D) HTDALL (IN=H); BY PERSON_DEMO UNIV SSN DEGTERM DEGCIP; IF H; RUN; /************Beginning of Printing Section****************/ /********************************************************** * PERSON_DEMO TABLE * *********************************************************/ DATA _NULL_; SET HTDDEM; FILE PERDEMO DLM='|'; UNIV_ROW_ID = _N_; NAME_LAST = LNAME; NAME_FIRST = FNAME; NAME_MI = MINIT; SUFFIX = '.'; PUT UNIV_ROW_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE SSN PID_VALID_SSN BIRTH_YYYYMM_DT LNAME FNAME MINIT SUFFIX SEX 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; RUN; /********************************************************** * HOURS_TO_DEGREE TABLE * *********************************************************/ PROC SORT DATA = HTDALL2; BY REPT_TIME_FRAME REPT_INST SSN SYSID_SEQ DEGTERM DEGGRT1 DEMO_TIME_FRAME DEMO_DATA_SOURCE;RUN; DATA _NULL_; SET HTDALL2; FILE HRSTODEG DLM='|'; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID REPT_TIME_FRAME REPT_INST PERSON_ID DEGTERM DEMO_TIME_FRAME DEMO_DATA_SOURCE DEGCIP HSGRADDT CATTERM CATHOURS DEGCHGNO TERMUPP BOGKEY1 INSKEY1 INSDEM INSDEGF; RUN; /********************************************************** * COURSES_TO_DEGREE TABLE * *********************************************************/ PROC SORT DATA = HTDCRS; BY REPT_TIME_FRAME REPT_INST SSN SYSID_SEQ DEGTERM DEGGRT1 TERMID INSTCRS CRSPRE CRSNO CCOIND CRSSECT DEMO_TIME_FRAME DEMO_DATA_SOURCE;RUN; DATA _NULL_; SET HTDCRS; FILE CRSTODEG DLM='|'; BY REPT_TIME_FRAME REPT_INST SSN SYSID_SEQ DEGTERM DEGGRT1 TERMID INSTCRS CRSPRE CRSNO CCOIND CRSSECT DEMO_TIME_FRAME DEMO_DATA_SOURCE; UNIV_ROW_ID = _N_; RETAIN SEG1; IF FIRST.DEMO_DATA_SOURCE THEN SEG1 =1; IF NOT(FIRST.DEMO_DATA_SOURCE) THEN SEG1 + 1; PUT UNIV_ROW_ID REPT_TIME_FRAME UNIV PERSON_ID DEGTERM DEGGRT1 TERMID INSTCRS CRSPRE CRSNO CCOIND CRSSECT SEG1 DEMO_TIME_FRAME DEMO_DATA_SOURCE CRSCLS CRSSYS CRSGRP CRSRES REPEAT CRSCIP CRSTYPE TSTMETH GRADE USEIND SECTCRED BOGKEY1 INSCRS; RUN; /********************************************************** * DEGREES_AWARDED TABLE * *********************************************************/ PROC SORT DATA = HTDDEG; BY REPT_TIME_FRAME REPT_INST SSN SYSID_SEQ FEE_CLASS_KIND DEGTERM DEGGRT1 DEGCIP MAJOR_IND TCHR_PREP_DOE_CD DEMO_TIME_FRAME DEMO_DATA_SOURCE AWARD_SOURCE;RUN; DATA _NULL_; SET HTDDEG; FILE DEGAWARD DLM='|'; UNIV_ROW_ID = _N_; DEMO_DATA_SOURCE = 'HTD'; AWARD_SOURCE = 'HTD'; TCHR_PREP_DOE_CD = '999'; PUT UNIV_ROW_ID REPT_TIME_FRAME REPT_INST PERSON_ID FEE_CLASS_KIND DEGTERM DEGGRT1 DEGCIP MAJOR_IND TCHR_PREP_DOE_CD DEMO_TIME_FRAME DEMO_DATA_SOURCE AWARD_SOURCE TCHR_PREP_DOE_LEVEL TCHR_EDU_PGM_METHOD DEGFRAC1 DOC_CLASS BE_CD INSDEGF; RUN;