//BRXXXLOD JOB (BRXXX,,,99),'UUUU SIF/P LOAD',TIME=(1) /* //**************************************************************** //**** PROGRAM TO CONVERT LEGACY STUDENT FILE LAYOUT ********** //**** TO NEW DATABASE LAYOUTS. ********** //**************************************************************** //**** IN LINE 98 - CHANGE THE SUBMISSION TO SIF OR SIFP ******* //**** *** MAINTENANCE *** ******* //**** CHANGE THE JOB CARD TO REFLECT YOUR ENVIRONMENT ******* //**** ******* //**** CHANGE THE INPUT FILE NAME TO YOUR INPUT FILE NAME ******* //**** ******* //**** CHANGE THE 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.UUUU.STUDENT.NOVBAR) DELETE (BOR.UUUU.LOAD.STUDENT.PERDEMO) DELETE (BOR.UUUU.LOAD.STUDENT.PERDEMOD) DELETE (BOR.UUUU.LOAD.STUDENT.ENROLL) DELETE (BOR.UUUU.LOAD.STUDENT.ENROLLD) DELETE (BOR.UUUU.LOAD.STUDENT.CRSTAKEN) DELETE (BOR.UUUU.LOAD.STUDENT.FEEWAIV) DELETE (BOR.UUUU.LOAD.STUDENT.STIPEND) DELETE (BOR.UUUU.LOAD.STUDENT.FELLOW) DELETE (BOR.UUUU.LOAD.STUDENT.TSTCRED) DELETE (BOR.UUUU.LOAD.STUDENT.DEGAWARD) DELETE (BOR.UUUU.LOAD.STUDENT.ADMEXC) DELETE (BOR.UUUU.LOAD.STUDENT.PIDCHGS) DELETE (BOR.UUUU.LOAD.STUDENT.PIDCHGSD) SET MAXCC = 0 /* //STEP1 EXEC SAS,WORK='20000,10000' //STUDENT DD DSN=BOR.MASTER.STUDENT.UUUU.MMMYY,DISP=SHR //* //*--------------- OUTPUT FILES --------------- */ //STUVBAR DD DSN=BOR.UUUU.STUDENT.NOVBAR, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=2334,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //PERDEMO DD DSN=BOR.UUUU.LOAD.STUDENT.PERDEMO, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //PERDEMOD DD DSN=BOR.UUUU.LOAD.STUDENT.PERDEMOD, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //ENROLL DD DSN=BOR.UUUU.LOAD.STUDENT.ENROLL, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //ENROLLD DD DSN=BOR.UUUU.LOAD.STUDENT.ENROLLD, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //CRSTAKEN DD DSN=BOR.UUUU.LOAD.STUDENT.CRSTAKEN, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(800,100),RLSE) //FEEWAIV DD DSN=BOR.UUUU.LOAD.STUDENT.FEEWAIV, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //STIPEND DD DSN=BOR.UUUU.LOAD.STUDENT.STIPEND, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //FELLOW DD DSN=BOR.UUUU.LOAD.STUDENT.FELLOW, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //TSTCRED DD DSN=BOR.UUUU.LOAD.STUDENT.TSTCRED, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //DEGAWARD DD DSN=BOR.UUUU.LOAD.STUDENT.DEGAWARD, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //ADMEXC DD DSN=BOR.UUUU.LOAD.STUDENT.ADMEXC, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=100,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //PIDCHGS DD DSN=BOR.UUUU.LOAD.STUDENT.PIDCHGS, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //PIDCHGSD DD DSN=BOR.UUUU.LOAD.STUDENT.PIDCHGSD, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=200,RECFM=FB,BLKSIZE=), // SPACE=(TRK,(600,300),RLSE) //* %GLOBAL SUBMISS; %LET SUBMISS=SIF; PROC FORMAT; VALUE $PKTABLE 'ADMISSION_EXCEPTIONS' = '01' 'COURSES_TAKEN' = '10' 'DEGREES_AWARDED' = '12' 'ENROLLMENTS' = '19' 'FEE_WAIVERS' = '21' 'FELLOWSHIPS' = '22' 'PERSON_DEMO' = '31' 'PERSON_ID_CHGS' = '32' 'STIPENDS' = '38' 'TEST_CREDITS' = '43' '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 STUBAR; INFILE STUDENT TRUNCOVER LRECL=2334 LENGTH=LEN; INPUT @1 RECORD $2334.; FORMAT RECORD2 $2334.; RECORD2=TRANSLATE(RECORD,' ','|'); IF SUBSTR(RECORD2,LEN,1) EQ ' ' THEN SUBSTR(RECORD2,LEN,1) = '.'; FORMAT KEY LSTKEY $CHAR20. ; RETAIN LSTKEY ' ' SEQ ; KEY = SUBSTR(RECORD2,1,20); IF _N_ EQ 1 THEN DO; LSTKEY = SUBSTR(RECORD2,1,20); SEQ = 1; END; IF _N_ NE 1 THEN DO; IF KEY EQ LSTKEY THEN SEQ + 1; ELSE SEQ = 1; LSTKEY = KEY; END; SUBSTR(RECORD2,120,1) = SEQ; FILE STUVBAR LRECL=2334; PUT @1 RECORD2; RUN; DATA STUDENT (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SBIRTHDT LNAME FNAME MDINIT SUFFIX SEX RACE HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG PREV_SSN PIDSSN BLACK_AFRICAN_AM_FLG NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG NO_RACE_REPORT_FLG SKIND BNATLY BSTCDE BCOCDE NATSCH DISPLACE GPA_TERM GPA_CUM INSTDISP BHSCDE DULEN LASTINST DTLSTA TYPESTU SMATR TYPRADM DATRADM FIRSTGEN SRES CLASTF SPVTCH SPVRSH DOCCAN SCLAS DGPGMS DEGHELD INSDEG DEGSOU STDTBE PROFLG EOTTN EXTFLG VISATYPE INCLAS FULLPART RHRCRR AMRCC HRUGPA UGDPTS ARSSU HRTGPA HRTERN TGDPTS FLPUBFLG FILLD2 FILL239 IPEDGSFL WVRHRS IPEDSROW LAST_INST INST_DISP INS_DEG BIRTH_YYYYMM_DT DOC_CLASS PK_SEQ_NUM PERSON_DEMO DEMO_TIME_FRAME ENROLLMENTS) PERSON (KEEP = TERMID RINCDE SYSID SYSID_SEQ PSTCHSS LNAME FNAME MDINIT SUFFIX SEX BIRTH_YYYYMM_DT SBIRTHDT PERSON_CHGS DEMO_TIME_FRAME DEMOSRCE RACE HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG PREV_SSN PIDSSN BLACK_AFRICAN_AM_FLG NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG NO_RACE_REPORT_FLG) COURSES (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND CRSPRE CRSNO CCOIND CRSSECT SECTCRED CRSCIP CRSCAMP CRSCNTY CRSBE CCEDFLG GRADE CRSFND COLLEGE PCRSTYPE FILCRS2 PREFLG INOIND ACCTCRS CRSLVLCL FNDHRS HRSSRCHG DIFFFLAG SEG1 FILCRS1 COURSES_TAKEN PERSON_DEMO ENROLLMENTS PREV_SSN CURRENT_SSN) WAIVERS (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND BUDENTCD FEEWVRKD TERMAMT FIDUNIV WVRIND SEG2 LINKUNIV FILWVR3 FEE_WAIVERS PERSON_DEMO ENROLLMENTS PK_SEQ_NUM_WAIVE DEMO_TIME_FRAME) STIPENDS (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND TRMFTE RATPAY SESSFLG CLCD ACCTCIP HRSWORK BUDENTCD TERMAMT FIDUNIV SEG3 FILSTP4 STIPENDS PERSON_DEMO ENROLLMENTS PK_SEQ_NUM_STIPEND DEMO_TIME_FRAME) FELLOW (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND BUDENTCD TERMAMT FIDUNIV SEG4 FILFEL3 FELLOWSHIPS PERSON_DEMO ENROLLMENTS PK_SEQ_NUM_FELLOW DEMO_TIME_FRAME) TEST (KEEP = TERMID RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND TESTTYPE TESTCRD TEST_CREDITS PERSON_DEMO ENROLLMENTS PK_SEQ_NUM_TEST DEMO_TIME_FRAME) DEGREE (KEEP = TERMID RINCDE DEGREE PROGRAM FRACTION DEMOSRCE SYSID SYSID_SEQ SKIND EOTD1 DGPGMD1 DGFRAC1 EOTD2 DGPGMD2 DGFRAC2 EOTD3 DGPGMD3 DGFRAC3 TRMDEG OCC TERM DOC_CLASS DEMO_TIME_FRAME DEGREES_AWARDED PERSON_DEMO REPT_TIME_FRAME PK_SEQ_NUM_DEGREE) EXCEPT (KEEP = TERMID RINCDE SYSID SYSID_SEQ EXCSRCE DGPGMS TYPESTU DEMOSRCE EXCEPTION_CAT EXCEPTION_TYP ADMISSION_EXCEPTIONS PERSON_DEMO REPT_TIME_FRAME DEMO_TIME_FRAME PK_SEQ_NUM_EXCEPT SKIND); INFILE STUVBAR LRECL=2334 TRUNCOVER ; RETAIN SEG1 00 SEG2 00 SEG3 00 SEG4 00 PK_SEQ_NUM PREV_TERM PK_SEQ_NUM_COURSE PK_SEQ_NUM_TEST PK_SEQ_NUM_WAIVE PK_SEQ_NUM_STIPEND PK_SEQ_NUM_FELLOW PK_SEQ_NUM_DEGREE PK_SEQ_NUM_EXCEPT PREV_SSN PERSON_DEMO PK_SEQ_NUM_ENROLL; FORMAT SUFFIX $CHAR10.; INPUT @1 RINCDE $CHAR004. @5 STCHSS $CHAR009. @5 SSN $CHAR009. @14 SKIND $CHAR001. @15 TERMID $CHAR006. @15 STERM $CHAR006. @15 RTERM $CHAR006. @15 TERMYY $CHAR004. @15 YTERM $CHAR004. @19 MTERM $CHAR002. @19 TERMMM $CHAR002. @21 PSTCHSS $CHAR009. @30 FILLK1 $CHAR005. @35 STUNM $CHAR037. @35 LSTNM $CHAR022. @35 LNAME $CHAR022. @57 FRSTNM $CHAR014. @57 FNAME $CHAR014. @71 MDINIT $CHAR001. @71 MINIT $CHAR001. @72 PROFBASE $CHAR003. @75 DISPLACE $CHAR001. @76 BSEX $CHAR001. @76 SEX $CHAR001. @77 RACE $CHAR001. @77 SRACE $CHAR001. @77 ETHNIC $CHAR001. @77 ETHNICG $CHAR001. @78 BNATLY $CHAR002. @80 BSTCDE $CHAR002. @82 BCOCDE $CHAR004. @86 NATSCH $CHAR001. @87 BHSCDE $CHAR006. @93 TYPESTU $CHAR001. @93 ASTUTY $CHAR001. @94 SMATR $CHAR006. @94 SMATRYY $CHAR004. @94 YTERMR $CHAR004. @98 MTERMR $CHAR002. @98 SMATRMM $CHAR002. @100 FIRSTGEN $CHAR001. @101 PREPAID $CHAR001. @102 PIDSSN $CHAR001. @107 TALENT20 $CHAR01. @108 PROFFLAG $CHAR01. @109 FLPUBFLG $CHAR01. @110 SBIRTHDT $CHAR010. @110 SBIRTHYR $CHAR04. @115 SBIRTHMO $CHAR02. @118 SBIRTHDA $CHAR02. @120 SYSID_SEQ 1. @121 FILLD2 $CHAR019. @140 SRES $CHAR001. @141 ADEGRE $CHAR001. @141 DEGHELD $CHAR001. @142 CLASTF $CHAR001. @143 SPVTCH $CHAR001. @144 SPVRSH $CHAR001. @145 DOCCAN $CHAR001. @146 SCLAS $CHAR001. @147 AMRCC ZD4.1 @151 APGM $CHAR006. @151 DGPGMS $CHAR006. @157 RHRCRR ZD3.1 @160 DEGSOU $CHAR001. @161 STDTBE $CHAR001. @161 SBUCDE $CHAR001. @162 INCLAS $CHAR001. @163 PROFLG $CHAR001. @164 ALINAT $CHAR005. @164 LASTINST $CHAR005. @169 TYPRSTU $CHAR001. @169 TYPRADM $CHAR001. @170 DATRADM $CHAR006. @170 DATRMM $CHAR004. @170 YTERMM $CHAR004. @174 MTERMM $CHAR002. @174 DATRYY $CHAR002. @176 INSDEG $CHAR005. @181 DULEN $CHAR001. @182 DTLSTA $CHAR006. @182 DTLAST $CHAR006. @182 DLTSTA $CHAR006. @182 YTERMA $CHAR004. @186 MTERMA $CHAR002. @188 EOTTN $CHAR001. @189 INTBAC ZD3.1 @192 EOTCCL $CHAR015. @192 CLEPEN ZD3.1 @195 CLEPMA ZD3.1 @198 CLEPNS ZD3.1 @201 CLEPHM ZD3.1 @204 CLEPSS ZD3.1 @207 CLEPEX ZD3.1 @210 EOTCEX ZD3.1 @213 EOTOO ZD3.1 @216 ADCRED ZD3.1 @219 EXTFLG $CHAR01. @220 IPEDGSFL $CHAR01. @221 INSTDISP $CHAR05. @226 VISATYPE $CHAR03. @229 AICECRED ZD3.1 @232 SWAIVK1 $CHAR01. @233 SWAIVK2 $CHAR01. @234 TAL20YR $CHAR04. @238 FULLPART $CHAR01. @239 FILL239 $CHAR020. @259 DEGINFO $CHAR030. @259 DEGREE1 $CHAR010. @259 EOTD1 $CHAR001. @260 EOTDP1 $CHAR006. @260 DGPGMD1 $CHAR006. @266 DGFRAC1 ZD3.2 @269 DEGREE2 $CHAR010. @269 EOTD2 $CHAR001. @270 EOTDP2 $CHAR006. @270 DGPGMD2 $CHAR006. @276 DGFRAC2 ZD3.2 @279 DEGREE3 $CHAR010. @279 EOTD3 $CHAR001. @280 EOTDP3 $CHAR006. @280 DGPGMD3 $CHAR006. @286 DGFRAC3 ZD3.2 @289 TRMDEG $CHAR006. @289 YTERMG $CHAR004. @293 MTERMG $CHAR002. @295 HRUGPA ZD4.1 @299 UGDPTS ZD5.1 @304 ARSSU ZD4.1 @308 HRTGPA ZD3.1 @311 HRTERN ZD3.1 @314 TGDPTS ZD4.1 @318 WAVHRS $CHAR001. @318 WAIVHRS ZDB1. @319 VACD ZD2. @; SYSID = SSN; IF SKIND = 'P' THEN DEMOSRCE = 'SIFD'; ELSE DEMOSRCE = "&SUBMISS"; EXCSRCE = "&SUBMISS"; SUFFIX = ' '; IPEDSROW = 0; DOC_CLASS = ' '; FORMAT TESTTYPE $20. LAST_INST $8. INST_DISP $8. INS_DEG $8.; FORMAT GPA_TERM 4.2 GPA_CUM 4.2 WVRHRS 1.; WVRHRS = WAVHRS; IF FLPUBFLG NOT IN ('Y','N') THEN FLPUBFLG = ' '; FORMAT DEMO_TIME_FRAME $CHAR06. REPT_TIME_FRAME $CHAR06. CURRENT_TERMID $CHAR06.; DEMO_TIME_FRAME = TERMID; REPT_TIME_FRAME = TERMID; CURRENT_TERMID = TERMID; FORMAT PREV_TERM $CHAR06. PREV_SEQ_NUM 8. PREV_SSN $CHAR09. CURRENT_SSN $CHAR09.; CURRENT_SSN = SYSID; IF PREV_TERM NE CURRENT_TERMID THEN DO; PREV_TERM = CURRENT_TERMID; FORMAT PK_SEQ_NUM 8. PK_SEQ_NUM_COURSE 8. PK_SEQ_NUM_TEST 8. PK_SEQ_NUM_EXCEPT 8. PK_SEQ_NUM_WAIVE 8. PK_SEQ_NUM_STIPEND 8. PK_SEQ_NUM_FELLOW 8. PK_SEQ_NUM_DEGREE 8. PK_SEQ_NUM_ENROLL 8.; PK_SEQ_NUM = 0; PK_SEQ_NUM_COURSE = 0; PK_SEQ_NUM_TEST = 0; PK_SEQ_NUM_EXCEPT = 0; PK_SEQ_NUM_WAIVE = 0; PK_SEQ_NUM_STIPEND = 0; PK_SEQ_NUM_ENROLL = 0; PK_SEQ_NUM_FELLOW = 0; PK_SEQ_NUM_DEGREE = 0; PK_TERMID = CURRENT_TERMID; PREV_SEQ_NUM = PK_SEQ_NUM; END; FORMAT PK_UNIV $CHAR02. PK_SUBM $CHAR02.; PK_UNIV = PUT(RINCDE,$univnb.); PK_SUBM = '11'; **********************************************************; ** DEMOGRAPHIC INFORMATION * *; **********************************************************; 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 = ' '; FORMAT BIRTH_YYYYMM_DT $CHAR08.; DOB_YEAR = SUBSTR(SBIRTHDT,1,4); DOB_MONTH = SUBSTR(SBIRTHDT,6,2); DOB_DAY = SUBSTR(SBIRTHDT,9,2); BIRTH = trim(DOB_YEAR)||trim(DOB_MONTH)||trim(DOB_DAY); IF BIRTH = '99999999' THEN BIRTH_YYYYMM_DT = ' '; ELSE BIRTH_YYYYMM_DT = BIRTH; IF LASTINST EQ ' ' THEN LAST_INST = LASTINST; ELSE LAST_INST = '0'||LASTINST||'00'; IF INSTDISP EQ ' ' THEN INST_DISP = INSTDISP; ELSE INST_DISP = '0'||INSTDISP||'00'; IF INSDEG EQ ' ' THEN INS_DEG = INSDEG; ELSE INS_DEG = '0'||INSDEG||'00'; IF HRTGPA NE 0 THEN DO; GPA_TERM = TGDPTS / HRTGPA; GPA_CUM = (UGDPTS + TGDPTS) / (HRUGPA + HRTGPA); END; IF PREV_SSN NE CURRENT_SSN THEN DO; PREV_SSN = CURRENT_SSN; PK_SEQ_NUM = PK_SEQ_NUM + 1; END; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'PERSON_DEMO'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); PK_TERMID = DEMO_TIME_FRAME ; PK_UNIV = PUT(RINCDE,$univnb.); PK_SUBM = '11'; PERSON_DEMO = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); **********************************************************; ** ENROLLMENTS KEY INFORMATION * *; **********************************************************; TABLE_ID = 'ENROLLMENTS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); PK_SEQ_NUM_ENROLL + 1; ENROLLMENTS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_ENROLL,Z8.); OUTPUT STUDENT; **********************************************************; ** PERSON ID CHANGES KEY INFORMATION * *; **********************************************************; TABLE_ID = 'PERSON_ID_CHGS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); PERSON_CHGS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM,Z8.); IF SYSID NE PSTCHSS THEN OUTPUT PERSON; **********************************************************; ** TEST CREDITS INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'TEST_CREDITS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); IF INTBAC > 0 THEN DO; TESTTYPE = 'IBCRED'; TESTCRD = INTBAC; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPEN > 0 THEN DO; TESTTYPE = 'CLEPENG'; TESTCRD = CLEPEN; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPMA > 0 THEN DO; TESTTYPE = 'CLEPMATH'; TESTCRD = CLEPMA; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPNS > 0 THEN DO; TESTTYPE = 'CLEPNAT'; TESTCRD = CLEPNS; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPHM > 0 THEN DO; TESTTYPE = 'CLEPHUM'; TESTCRD = CLEPHM; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPSS > 0 THEN DO; TESTTYPE = 'CLEPSOC'; TESTCRD = CLEPSS; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF CLEPEX > 0 THEN DO; TESTTYPE = 'CLEPSUBJ'; TESTCRD = CLEPEX; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF ADCRED > 0 THEN DO; TESTTYPE = 'APCRED'; TESTCRD = ADCRED; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF AICECRED > 0 THEN DO; TESTTYPE = 'AICECRED'; TESTCRD = AICECRED; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF EOTCEX > 0 THEN DO; TESTTYPE = 'DEPTEXAM'; TESTCRD = EOTCEX; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; IF EOTOO > 0 THEN DO; TESTTYPE = 'OTHRTEST'; TESTCRD = EOTOO; PK_SEQ_NUM_TEST + 1; TEST_CREDITS = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE|| PUT(PK_SEQ_NUM_TEST,Z8.); OUTPUT TEST; END; **********************************************************; ** ADMISSION EXCEPTIONS INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'ADMISSION_EXCEPTIONS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); IF PROFFLAG = 'Y' AND SKIND NE 'P' THEN DO; EXCEPTION_TYP = 'F'; IF SUBSTR(PROFBASE,1,1) NE ' ' THEN DO; EXCEPTION_CAT = SUBSTR(PROFBASE,1,1); PK_SEQ_NUM_EXCEPT + 1; ADMISSION_EXCEPTIONS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_EXCEPT,Z8.); OUTPUT EXCEPT; END; IF SUBSTR(PROFBASE,2,1) NE ' ' AND SKIND NE 'P' THEN DO; EXCEPTION_CAT = SUBSTR(PROFBASE,2,1); PK_SEQ_NUM_EXCEPT + 1; ADMISSION_EXCEPTIONS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_EXCEPT,Z8.); OUTPUT EXCEPT; END; IF SUBSTR(PROFBASE,3,1) NE ' ' AND SKIND NE 'P' THEN DO; EXCEPTION_CAT = SUBSTR(PROFBASE,3,1); PK_SEQ_NUM_EXCEPT + 1; ADMISSION_EXCEPTIONS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_EXCEPT,Z8.); OUTPUT EXCEPT; END; END; **********************************************************; ** DEGREES AWARDED INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'DEGREES_AWARDED'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); FORMAT DEGREE $CHAR01. PROGRAM $CHAR06. FRACTION 4.2; TERM = TRMDEG; IF EOTD1 NOT IN ('N',' ') THEN DO; IF (DGFRAC1 GT 0 AND DGFRAC1 LE 1) THEN DO; DEGREE = EOTD1; PROGRAM = DGPGMD1; FRACTION = DGFRAC1; PK_SEQ_NUM_DEGREE + 1; DEGREES_AWARDED = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE ||PUT(PK_SEQ_NUM_DEGREE,Z8.); OCC = 1; OUTPUT DEGREE; END; END; IF EOTD2 NOT IN ('N',' ') THEN DO; IF (DGFRAC2 GT 0 AND DGFRAC2 LE 1) THEN DO; DEGREE = EOTD2; PROGRAM = DGPGMD2; FRACTION = DGFRAC2; PK_SEQ_NUM_DEGREE + 1; DEGREES_AWARDED = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE ||PUT(PK_SEQ_NUM_DEGREE,Z8.); OCC = 2; OUTPUT DEGREE; END; END; IF EOTD3 NOT IN ('N',' ') THEN DO; IF (DGFRAC3 GT 0 AND DGFRAC3 LE 1) THEN DO; DEGREE = EOTD3; PROGRAM = DGPGMD3; FRACTION = DGFRAC3; PK_SEQ_NUM_DEGREE + 1; DEGREES_AWARDED = PK_TERMID||'00'||PK_UNIV||PK_SUBM||PK_TABLE ||PUT(PK_SEQ_NUM_DEGREE,Z8.); OCC = 3; OUTPUT DEGREE; END; END; N=0; SEG1 = 0; SEG2 = 0; SEG3 = 0; SEG4 = 0; LOOP: N + 1; IF (VACD LT 1) OR (N GT VACD) THEN GOTO RESOUT; IF N LE VACD; INPUT SEGMENT $CHAR67. @; **********************************************************; ** COURSE DATA INFORMATION * *; **********************************************************; TABLE_ID = 'COURSES_TAKEN'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); PK_TERMID = CURRENT_TERMID; PK_UNIV = PUT(RINCDE,$univnb.); PK_SUBM = '11'; PK_SEQ_NUM_COURSE + 1; COURSES_TAKEN = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_COURSE,Z8.); IF SUBSTR(SEGMENT,52,1) = 'C' THEN DO; INPUT +(-67) @; INPUT CRSPRE $CHAR03. CRSNO $CHAR04. CCOIND $CHAR01. CRSSECT $CHAR04. SECTCRED ZD3.1 CRSCIP $CHAR06. CRSCAMP $CHAR02. CRSCNTY $CHAR04. CRSBE $CHAR01. CCEDFLG $CHAR01. GRADE $CHAR02. CRSFND $CHAR01. COLLEGE $CHAR02. PCRSTYPE $CHAR01. PREFLG $CHAR01. INOIND $CHAR02. ACCTCRS $CHAR09. CRSLVLCL $CHAR01. FNDHRS ZD3.1 SEGID $CHAR01. FILCRS1 $CHAR02. HRSSRCHG ZD3.1 FILCRS2 $CHAR05. DIFFFLAG $CHAR01. FILCRS3 $CHAR04. @; IF CCOIND = ' ' THEN CCOIND = '.'; SEG1 + 1; OUTPUT COURSES; GOTO LOOP; END; **********************************************************; ** FEE WAIVER INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'FEE_WAIVERS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); IF SUBSTR(SEGMENT,52,1)= 'W' THEN DO; INPUT +(-67) @; INPUT FILWVR1 $CHAR027. BUDENTCD $CHAR001. FEEWVRKD $CHAR001. LINKUNIV $CHAR001. FILWVR2 $CHAR002. TERMAMT ZDB6. FIDUNIV $CHAR006. WVRIND $CHAR001. FILWVR3 $CHAR006. SEGID $CHAR001. FILWVR4 $CHAR015. @; SEG2 + 1; PK_SEQ_NUM_WAIVE + 1; FEE_WAIVERS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_WAIVE,Z8.); OUTPUT WAIVERS; GOTO LOOP; END; **********************************************************; ** GRADUATED STIPENED INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'STIPENDS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); IF SUBSTR(SEGMENT,52,1) = 'S' THEN DO; INPUT +(-67) @; INPUT TRMFTE ZD3.2 RATPAY ZD4.2 SESSFLG $CHAR001. CLCD $CHAR004. FILSPT1 $CHAR003. ACCTCIP $CHAR006. HRSWORK ZD3. FILSTP2 $CHAR003. BUDENTCD $CHAR001. FILSTP3 $CHAR004. TERMAMT ZD6. FIDUNIV $CHAR006. FILSTP4 $CHAR007. SEGID $CHAR001. FILSTP5 $CHAR015. @; SEG3 + 1; PK_SEQ_NUM_STIPEND + 1; STIPENDS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_STIPEND,Z8.); OUTPUT STIPENDS; GOTO LOOP; END; **********************************************************; ** FELLOWSHIP INFORMATION * *; **********************************************************; FORMAT TABLE_ID $CHAR22.; TABLE_ID = 'FELLOWSHIPS'; FORMAT PK_TABLE $CHAR02.; PK_TABLE = PUT(TABLE_ID,$pktable.); IF SUBSTR(SEGMENT,52,1) = 'F' THEN DO; INPUT +(-67) @; INPUT FILFEL1 $CHAR027. BUDENTCD $CHAR001. FILFEL2 $CHAR004. TERMAMT ZD6. FIDUNIV $CHAR006. FILFEL3 $CHAR007. SEGID $CHAR001. FILFEL4 $CHAR015. @; SEG4 + 1; PK_SEQ_NUM_FELLOW + 1; FELLOWSHIPS = PK_TERMID||'00'||PK_UNIV||PK_SUBM|| PK_TABLE||PUT(PK_SEQ_NUM_FELLOW,Z8.); OUTPUT FELLOW; GOTO LOOP; END; RESOUT: RETURN; PROC SORT DATA=STUDENT; BY PERSON_DEMO DEMO_TIME_FRAME RINCDE SYSID BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; RUN; DATA DEMO DEMOD;SET STUDENT; BY PERSON_DEMO DEMO_TIME_FRAME RINCDE SYSID SYSID_SEQ BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; IF FIRST.SYSID AND DEMOSRCE EQ "&SUBMISS" THEN OUTPUT DEMO; IF FIRST.SYSID AND DEMOSRCE EQ 'SIFD' THEN OUTPUT DEMOD; RUN; PROC SORT DATA=DEMO; BY PERSON_DEMO ENROLLMENTS DEMO_TIME_FRAME RINCDE SYSID BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; RUN; PROC SORT DATA=DEMOD; BY PERSON_DEMO ENROLLMENTS DEMO_TIME_FRAME RINCDE SYSID BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; RUN; **********************************************************; ** PERSON DEMOGRAPHICS TABLE * *; ** HAVE JR. JR AND JR III * *; **********************************************************; DATA _NULL_; SET DEMO; BY PERSON_DEMO ENROLLMENTS DEMO_TIME_FRAME RINCDE SYSID BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; FORMAT ZLNAME ZLNAME2 $CHAR22. ZFNAME ZFNAME2 $CHAR14.; LNAME = TRIM(TRANSLATE(LNAME,'','.')); LNAME = TRIM(TRANSLATE(LNAME,' ',',')); FNAME = TRIM(TRANSLATE(FNAME,'','.')); FNAME = TRIM(TRANSLATE(FNAME,' ',',')); ZFNAME = LEFT(TRIM(UPCASE(SCAN(FNAME,1,' ')))); ZFNAME2 = LEFT(TRIM(UPCASE(SCAN(FNAME,-1,' ')))); ZLNAME = LEFT(TRIM(UPCASE(SCAN(LNAME,1,' ')))); ZLNAME2 = LEFT(TRIM(UPCASE(SCAN(LNAME,-1,' ')))); IF ZLNAME EQ ZLNAME2 THEN GO TO DOFIRST; IF ZLNAME2 IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZLNAME2; BEG = LENGTHN(SUFFIX); LNAME = SUBSTR(LNAME,1,LENGTHN(LNAME) - BEG - 1); END; IF SUFFIX EQ ' ' AND ZLNAME IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZLNAME; BEG = LENGTHN(SUFFIX)+ 2; LNAME = SUBSTR(LNAME,BEG,LENGTHN(LNAME)-BEG + 1); END; DOFIRST: IF ZFNAME EQ ZFNAME2 THEN GO TO OUTHERE; IF SUFFIX EQ ' ' AND ZFNAME2 IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZFNAME2; BEG = LENGTHN(SUFFIX); FNAME = SUBSTR(FNAME,1,LENGTHN(FNAME) - BEG - 1); END; IF SUFFIX EQ ' ' AND ZFNAME IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZFNAME; BEG = LENGTHN(SUFFIX)+ 2; FNAME = SUBSTR(FNAME,BEG,LENGTHN(FNAME)-BEG + 1); END; OUTHERE: FILE PERDEMO DLM='|' LRECL=200; U_RESV_1 = ' '; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID PIDSSN BIRTH_YYYYMM_DT LNAME FNAME MDINIT 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; **********************************************************; ** PERSON DEMOGRAPHICS-D TABLE * *; **********************************************************; DATA _NULL_; SET DEMOD; BY PERSON_DEMO ENROLLMENTS DEMO_TIME_FRAME RINCDE SYSID BIRTH_YYYYMM_DT LNAME FNAME MDINIT SUFFIX SEX RACE; FORMAT ZLNAME ZLNAME2 $CHAR22. ZFNAME ZFNAME2 $CHAR14.; LNAME = TRIM(TRANSLATE(LNAME,'','.')); LNAME = TRIM(TRANSLATE(LNAME,' ',',')); FNAME = TRIM(TRANSLATE(FNAME,'','.')); FNAME = TRIM(TRANSLATE(FNAME,' ',',')); ZFNAME = LEFT(TRIM(UPCASE(SCAN(FNAME,1,' ')))); ZFNAME2 = LEFT(TRIM(UPCASE(SCAN(FNAME,-1,' ')))); ZLNAME = LEFT(TRIM(UPCASE(SCAN(LNAME,1,' ')))); ZLNAME2 = LEFT(TRIM(UPCASE(SCAN(LNAME,-1,' ')))); IF ZLNAME EQ ZLNAME2 THEN GO TO DOFIRST; IF ZLNAME2 IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZLNAME2; BEG = LENGTHN(SUFFIX); LNAME = SUBSTR(LNAME,1,LENGTHN(LNAME) - BEG - 1); END; IF SUFFIX EQ ' ' AND ZLNAME IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZLNAME; BEG = LENGTHN(SUFFIX)+ 2; LNAME = SUBSTR(LNAME,BEG,LENGTHN(LNAME)-BEG + 1); END; DOFIRST: IF ZFNAME EQ ZFNAME2 THEN GO TO OUTHERE; IF SUFFIX EQ ' ' AND ZFNAME2 IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZFNAME2; BEG = LENGTHN(SUFFIX); FNAME = SUBSTR(FNAME,1,LENGTHN(FNAME) - BEG - 1); END; IF SUFFIX EQ ' ' AND ZFNAME IN ('I','11','II','111','II|','III','IV','V','VI','XVI', 'JR','SR','MD','DR') THEN DO; SUFFIX = ZFNAME; BEG = LENGTHN(SUFFIX)+ 2; FNAME = SUBSTR(FNAME,BEG,LENGTHN(FNAME)-BEG + 1); END; OUTHERE: FILE PERDEMOD DLM='|' LRECL=200; U_RESV_1 = ' '; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID PIDSSN BIRTH_YYYYMM_DT LNAME FNAME MDINIT 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; **********************************************************; ** ENROLLMENTS TABLE * *; **********************************************************; PROC SORT DATA=STUDENT; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; DATA ENROLL ENROLLD; SET STUDENT; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; IF FIRST.SYSID AND DEMOSRCE EQ "&SUBMISS" THEN OUTPUT ENROLL; IF FIRST.SYSID AND DEMOSRCE EQ 'SIFD' THEN OUTPUT ENROLLD; PROC SORT DATA=ENROLL; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; DATA _NULL_; SET ENROLL; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; FILE ENROLL DLM='|' LRECL=300; * LAST_SECONDARY_DT = Date of Last Attendance if the student is a FTIC; FORMAT LAST_SECONDARY_DT LAST_POSTSEC_DT $6. FILLER $20.; LAST_SECONDARY_DT = ' '; LAST_POSTSEC_DT = ' '; IF TYPESTU IN ('B','H','E') THEN LAST_SECONDARY_DT=DTLSTA; FILLER=TRANSLATE(FILLD2,' ', '|'); UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND BNATLY BSTCDE BCOCDE NATSCH DISPLACE INST_DISP BHSCDE LAST_SECONDARY_DT DULEN LAST_INST LAST_POSTSEC_DT TYPESTU SMATR TYPRADM DATRADM FIRSTGEN SRES CLASTF SPVTCH SPVRSH DOCCAN SCLAS DGPGMS DEGHELD INS_DEG DEGSOU DOC_CLASS STDTBE PROFLG EOTTN EXTFLG VISATYPE INCLAS FULLPART RHRCRR AMRCC HRUGPA UGDPTS ARSSU HRTGPA HRTERN TGDPTS FILLER FILL239; **********************************************************; ** ENROLLMENTS-D TABLE * *; **********************************************************; PROC SORT DATA=ENROLLD; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; DATA _NULL_; SET ENROLLD; BY ENROLLMENTS PERSON_DEMO DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SYSID_SEQ SKIND; FILE ENROLLD DLM='|' LRECL=300; * LAST_SECONDARY_DT = Date of Last Attendance if the student is a FTIC; FORMAT LAST_SECONDARY_DT LAST_POSTSEC_DT $6. FILLER $20.; LAST_SECONDARY_DT = ' '; LAST_POSTSEC_DT = ' '; IF TYPESTU IN ('B','H','E') THEN LAST_SECONDARY_DT=DTLSTA; FILLER=TRANSLATE(FILLD2,' ', '|'); UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND BNATLY BSTCDE BCOCDE NATSCH DISPLACE INST_DISP BHSCDE LAST_SECONDARY_DT DULEN LAST_INST LAST_POSTSEC_DT TYPESTU SMATR TYPRADM DATRADM FIRSTGEN SRES CLASTF SPVTCH SPVRSH DOCCAN SCLAS DGPGMS DEGHELD INS_DEG DEGSOU DOC_CLASS STDTBE PROFLG EOTTN EXTFLG VISATYPE INCLAS FULLPART RHRCRR AMRCC HRUGPA UGDPTS ARSSU HRTGPA HRTERN TGDPTS FILLER FILL239; **********************************************************; ** COURSES TAKEN TABLE * *; **********************************************************; PROC SORT DATA = COURSES; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; DATA STUCRS; MERGE STUDENT (IN=S) COURSES (IN=C); BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; IF C; RUN; PROC SORT DATA=STUCRS NODUPKEYS; BY COURSES_TAKEN PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG1 CRSPRE CRSNO CCOIND CRSSECT; RUN; DATA _NULL_; SET STUCRS; BY COURSES_TAKEN PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG1 CRSPRE CRSNO CCOIND CRSSECT; FILE CRSTAKEN DLM='|' LRECL=200; FORMAT CAMPCD $4. SITE_NBR $4.; CAMPCD = '00'||CRSCAMP; SITE_NBR = '.'; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID TERMID RINCDE DEMOSRCE SYSID SKIND SEG1 CRSPRE CRSNO CCOIND CRSSECT SECTCRED CRSCIP CAMPCD SITE_NBR CRSCNTY CRSBE CCEDFLG GRADE CRSFND COLLEGE PCRSTYPE PREFLG INOIND ACCTCRS DIFFFLAG FILCRS1 FILCRS2 FNDHRS; RUN; **********************************************************; ** FEE WAIVERS TABLE * *; **********************************************************; PROC SORT DATA = WAIVERS; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; DATA STUWVR; MERGE STUDENT (IN=S) WAIVERS (IN=W); BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; IF W; RUN; PROC SORT DATA=STUWVR NODUPKEYS; BY FEE_WAIVERS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG2; RUN; DATA _NULL_; SET STUWVR; BY FEE_WAIVERS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG2; FILE FEEWAIV DLM='|' LRECL=100; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND SEG2 WVRIND FEEWVRKD BUDENTCD TERMAMT FIDUNIV LINKUNIV FILWVR3; RUN; **********************************************************; ** STIPENDS TABLE * *; **********************************************************; PROC SORT DATA = STIPENDS; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; DATA STUSTP; MERGE STUDENT (IN=S) STIPENDS (IN=P); BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; IF P; RUN; PROC SORT DATA=STUSTP NODUPKEYS; BY STIPENDS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG3; RUN; DATA _NULL_; SET STUSTP; BY STIPENDS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG3; FILE STIPEND DLM='|' LRECL=100; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND SEG3 BUDENTCD TERMAMT FIDUNIV TRMFTE RATPAY SESSFLG CLCD ACCTCIP HRSWORK FILSTP4; RUN; **********************************************************; ** FELLOWSHIPS TABLE * *; **********************************************************; PROC SORT DATA = FELLOW; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; DATA STUFEL; MERGE STUDENT (IN=S) FELLOW (IN=F); BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; IF F; RUN; PROC SORT DATA=STUFEL NODUPKEYS; BY FELLOWSHIPS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG4; RUN; DATA _NULL_; SET STUFEL; BY FELLOWSHIPS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND SEG4; FILE FELLOW DLM='|' LRECL=100; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND SEG4 BUDENTCD TERMAMT FIDUNIV FILFEL3; RUN; **********************************************************; ** TEST CREDITS TABLE * *; **********************************************************; PROC SORT DATA = TEST; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; RUN; DATA STUTST; MERGE STUDENT (IN=S) TEST (IN=T); BY PERSON_DEMO RINCDE TERMID SYSID SYSID_SEQ SKIND; IF T; RUN; PROC SORT DATA=STUTST NODUPKEYS; BY TEST_CREDITS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND TESTTYPE; RUN; DATA _NULL_; SET STUTST; BY TEST_CREDITS PERSON_DEMO ENROLLMENTS TERMID RINCDE SYSID SYSID_SEQ SKIND TESTTYPE; FILE TSTCRED DLM='|' LRECL=100; U_RESV_1 = ' '; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID SKIND TESTTYPE TESTCRD U_RESV_1; RUN; **********************************************************; ** DEGREES AWARDED TABLE * *; **********************************************************; PROC SORT DATA = DEGREE; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND OCC; RUN; DATA DEG1 DEG2(DROP=MAJOR); SET DEGREE; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; MAJOR = 1; IF FIRST.SKIND AND LAST.SKIND THEN DO; OUTPUT DEG1; DELETE; END; IF OCC EQ 1 AND FRACTION EQ 1 THEN DO; OUTPUT DEG1; DELETE; END; IF OCC EQ 2 AND FRACTION EQ 1 THEN DO; OUTPUT DEG1; DELETE; END; IF OCC EQ 3 AND FRACTION EQ 1 THEN DO; OUTPUT DEG1; DELETE; END; OUTPUT DEG2; RUN; PROC SORT DATA = DEG2; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND OCC; DATA DEG21 DEG223; SET DEG2; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND OCC; RETAIN MAJOR 0; IF FIRST.SKIND THEN DO; MAJOR = 1; OUTPUT DEG21; DELETE; MAJOR = 0; END; IF MAJOR EQ 1 THEN DO; MAJOR = 2; OUTPUT DEG223; DELETE; END; IF MAJOR EQ 2 THEN DO; MAJOR = 3; OUTPUT DEG223; DELETE; END; RUN; DATA DEG121; SET DEG1 DEG21; PROC SORT DATA = DEG121; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND DEGREE PROGRAM; DATA DEGREE1; SET DEG121; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND DEGREE PROGRAM; RETAIN TOTFRAC 0; IF (FIRST.PROGRAM AND LAST.PROGRAM) THEN DO; OUTPUT DEGREE1; DELETE; END; IF FIRST.PROGRAM THEN TOTFRAC = FRACTION; IF NOT FIRST.PROGRAM THEN TOTFRAC = TOTFRAC + FRACTION; IF LAST.PROGRAM THEN DO; MAJOR = 1; FRACTION = TOTFRAC; OUTPUT DEGREE1; END; RUN; PROC SORT DATA = DEG223; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND PROGRAM MAJOR; DATA DEGREE2; SET DEG223; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND PROGRAM MAJOR; RETAIN TOTFRAC 0; IF FIRST.PROGRAM THEN TOTFRAC = FRACTION; IF NOT FIRST.PROGRAM THEN TOTFRAC = TOTFRAC + FRACTION; IF LAST.PROGRAM THEN DO; MAJOR = 2; FRACTION = TOTFRAC; OUTPUT DEGREE2; END; DATA DEGREES; SET DEGREE1 DEGREE2; PROC SORT DATA = DEGREES; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; PROC SORT DATA = STUDENT; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; DATA STUDEG; MERGE STUDENT (IN=S) DEGREES (IN=D); BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; IF D; RUN; PROC SORT DATA=STUDEG NODUPKEYS; BY DEGREES_AWARDED PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ TERM DEGREE PROGRAM MAJOR DEMO_TIME_FRAME; RUN; DATA _NULL_; SET STUDEG; BY DEGREES_AWARDED PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ TERM DEGREE PROGRAM MAJOR DEMO_TIME_FRAME; FILE DEGAWARD DLM='|' LRECL=100; U_RESV_1 = ' '; UNIV_ROW_ID = _N_; FORMAT AWARD_SOURCE $CHAR04.; AWARD_SOURCE = 'SIFD'; DEMOSRCE = 'SIFD'; TCHR_PREP_DOE_LEVEL = ' '; TCHR_EDU_PGM_METHOD = ' '; IF (TERMID < 199705) OR (TERMID > 200201) THEN TCHR_PREP_DOE_CD = 999; IPEDS_RPTD_FLG = ' '; *TCHR_PREP_DOE_CD is on the student file from 1997-1998 through 2001-2002, so TCHR_PREP_DOE_CD will be 999 for other years not within the range; *For student purposes REPT_TIME_FRAME will equal the DEMO_TIME_FRAME; *IPEDS_RPTD_FLG is for the future loading to evaluate if the student is on the IPEDS completions file; PUT UNIV_ROW_ID REPT_TIME_FRAME RINCDE SYSID SKIND TERM DEGREE PROGRAM MAJOR TCHR_PREP_DOE_CD DEMO_TIME_FRAME DEMOSRCE AWARD_SOURCE TCHR_PREP_DOE_LEVEL TCHR_EDU_PGM_METHOD FRACTION DOC_CLASS STDTBE U_RESV_1; RUN; **********************************************************; ** ADMISSION EXCEPTIONS TABLE * *; **********************************************************; PROC SORT DATA = EXCEPT; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; RUN; PROC SORT DATA=STUDENT; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; RUN; DATA STUEXC; MERGE STUDENT(IN=S) EXCEPT (IN=E) ; BY PERSON_DEMO TERMID RINCDE SYSID SYSID_SEQ SKIND; IF E; RUN; PROC SORT DATA=STUEXC NODUPKEYS OUT=STUEXCF; BY PERSON_DEMO REPT_TIME_FRAME RINCDE SYSID SYSID_SEQ EXCSRCE DGPGMS TYPESTU EXCEPTION_TYP EXCEPTION_CAT DEMO_TIME_FRAME; RUN; PROC SORT DATA=STUEXCF NODUPKEYS; BY ADMISSION_EXCEPTIONS PERSON_DEMO REPT_TIME_FRAME RINCDE SYSID SYSID_SEQ EXCSRCE DGPGMS TYPESTU EXCEPTION_TYP EXCEPTION_CAT DEMO_TIME_FRAME; RUN; DATA _NULL_; SET STUEXCF; BY ADMISSION_EXCEPTIONS PERSON_DEMO REPT_TIME_FRAME RINCDE SYSID SYSID_SEQ EXCSRCE DGPGMS TYPESTU EXCEPTION_TYP EXCEPTION_CAT DEMO_TIME_FRAME; FILE ADMEXC DLM='|' LRECL=100; U_RESV_1 = ' '; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID REPT_TIME_FRAME RINCDE SYSID EXCSRCE DGPGMS TYPESTU EXCEPTION_TYP EXCEPTION_CAT DEMO_TIME_FRAME DEMOSRCE U_RESV_1; RUN; **********************************************************; ** PERSON ID CHANGES TABLE * *; **********************************************************; PROC SORT DATA=PERSON; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS DEMOSRCE; RUN; DATA PIDCHG PIDCHGD; SET PERSON; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS DEMOSRCE; IF FIRST.SYSID AND DEMOSRCE EQ "&SUBMISS" THEN OUTPUT PIDCHG; IF FIRST.SYSID AND DEMOSRCE EQ 'SIFD' THEN OUTPUT PIDCHGD; RUN; PROC SORT DATA=PIDCHG; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS; RUN; DATA _NULL_; SET PIDCHG; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS; U_RESV_1 = ' '; FILE PIDCHGS DLM='|' LRECL=200; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID PIDSSN PSTCHSS BIRTH_YYYYMM_DT LNAME FNAME MDINIT 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; **********************************************************; ** PERSON ID CHANGES-D TABLE * *; **********************************************************; PROC SORT DATA=PIDCHGD; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS; RUN; DATA _NULL_; SET PIDCHGD; BY PERSON_CHGS DEMO_TIME_FRAME RINCDE SYSID PSTCHSS; U_RESV_1 = ' '; FILE PIDCHGSD DLM='|' LRECL=200; UNIV_ROW_ID = _N_; PUT UNIV_ROW_ID DEMO_TIME_FRAME RINCDE DEMOSRCE SYSID PIDSSN PSTCHSS BIRTH_YYYYMM_DT LNAME FNAME MDINIT 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;