//BRXXXLOD JOB (BRXXX,,,1),'CREATE ADM LOAD',TIME=(1) JOB24790 /* //********************************************************** //**** PROGRAM TO CONVERT LEGACY ADMISSIONS 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 HOUSEKEPPING STEP TO YOUR FILE NAMES ******* //**************************************************************** //************ HOUSEKEPPING ***************************** //DELETE EXEC PGM=IDCAMS,REGION=512K //SYSPRINT DD SYSOUT=A //SYSIN DD * DELETE (BOR.XXXX.LOAD.ADMISS.PERDEMO) DELETE (BOR.XXXX.LOAD.ADMISS.APPLADM) DELETE (BOR.XXXX.LOAD.ADMISS.TSTREQS) DELETE (BOR.XXXX.LOAD.ADMISS.EXCEPTS) SET MAXCC = 0 /* //STEP1 EXEC SAS,WORK='20000,10000' //ADMIN DD DSN=BOR.UNIV.INPUT.FILE,DISP=SHR //* //*--------------- OUTPUT FILES --------------- */ //PERDEMO DD DSN=BOR.XXXX.LOAD.ADMISS.PERDEMO, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,10),RLSE) //APPLADM DD DSN=BOR.XXXX.LOAD.ADMISS.APPLADM, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,10),RLSE) //TSTREQS DD DSN=BOR.XXXX.LOAD.ADMISS.TSTREQS, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(60,20),RLSE) //EXCEPTS DD DSN=BOR.XXXX.LOAD.ADMISS.EXCEPTS, // DISP=(,CATLG,DELETE),UNIT=SYSDA, // DCB=(LRECL=300,RECFM=FB,BLKSIZE=), // SPACE=(CYL,(20,10),RLSE) //* OPTIONS ERRORS=1 NODATE NOSOURCE SYMBOLGEN MSTORED MISSING=' ' SASMSTORE=AUTOLIB; DATA DEMOA; INFILE ADMIN LRECL=181 TRUNCOVER; INPUT @1 ADMKEY $CHAR26. @1 TERM $CHAR06. @1 TERMID $CHAR06. @7 RINCDE $CHAR04. @11 SSN $CHAR09. @20 ADMCIP $CHAR06. @26 APPLTYPE $CHAR01. @27 DTBIRTH $CHAR10. @37 LNAME $CHAR22. @59 FNAME $CHAR14. @73 MINIT $CHAR01. @74 GENDER $CHAR01. @75 RACE $CHAR01. @80 CNTYRES $CHAR04. @84 FEECLSRS $CHAR01. @85 ACTWRITE 2. @87 WRITESCE $CHAR03.. @90 VALSSN $CHAR01. @93 PROFILE $CHAR01. @94 ADMDEP $CHAR01. @95 FLD220 $CHAR10. @105 SCLAS $CHAR01. @106 ADMACT $CHAR01. @107 REGCD $CHAR01. @108 EXCSTAT $CHAR01. @109 LANGREQ $CHAR01. @110 SCALEREQ $CHAR01. @111 HSUREQ $CHAR01. @112 DISPLACE $CHAR01. @113 FETEST $CHAR01. @115 FLPUBFLG $CHAR01. @116 PROFBAS1 $CHAR01. @117 PROFBAS2 $CHAR01. @118 PROFBAS3 $CHAR01. @119 FLD280 $CHAR05. @124 LASTINST $CHAR05. @129 DEGINST $CHAR05. @134 DEGHELD $CHAR01. @135 DTLSTA $CHAR06. @135 DTLASTAT $CHAR06. @141 COLGPA $CHAR03. @144 HSCODE $CHAR06. @150 HSGPA $CHAR03. @153 ACT $CHAR02. @155 ADMTEST $CHAR01. @156 VERBAL ZD3. @159 QUANT ZD3. @162 ESOLUNIT ZD2.1 @164 SATWESSA ZD2. @166 SATWMC ZD2. @168 DEPAMTX 4. @172 FLD410 $CHAR10.; * THIS STEP OMITS TRUE DUPLICATES BASED ON ADMKEY DTBIRTH LNAME FNAME MINIT GENTER RACE AND APPLTYPE; PROC SORT DATA = DEMOA NODUPS OUT=DEMOA; BY ADMKEY DTBIRTH LNAME FNAME MINIT GENDER RACE APPLTYPE; RUN; PROC SORT DATA = DEMOA OUT=DEMOA; BY TERMID SSN RINCDE; DATA DEMOA; SET DEMOA; BY TERMID SSN RINCDE; FORMAT DEMO_KEY $CHAR19.; DEMO_KEY = TERMID||SSN||RINCDE; RUN; PROC SORT DATA = DEMOA OUT= DEMOA; BY DEMO_KEY; *THIS STEP SETS AN INDICATOR WHEN PROCESS THE ONE TO MANY RELATIONSHIP BETWEEN THE PERSON_DEMO AND THE OTHER TABLES.; DATA DEMOB; SET DEMOA; 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 TERMID SSN RINCDE; DATA ADMITS (KEEP = DEGINST APP_ADM_SOURCE ADMCIP APPLTYPE TERMID SSN FLPUBFLG ADMACT REGCD CNTYRES FEECLSRS ADMDEP NON_ADM DISPLACE LASTINST DEGHELD DTLASTAT COLGPA HSCODE ESOLUNIT DEPAMTX FLD220 FLD280 FLD410 CIP_APP_ADM LNAME FNAME STU_TYP U_RESV_1 U_RESV_2 U_RESV_3 PERSON_ID DEMO_DATA_SOURCE REPT_INST HSGPA PK_SEQ_NUM_APP DEMO_TIME_FRAME REPT_TIME_FRAME DEMO_DUP RINCDE SCLAS) DEMO (KEEP = TERMID RINCDE DTBIRTH RACE GENDER LNAME FNAME MINIT SSN FLD220 PERSON_ID DEMO_TIME_FRAME REPT_INST DEMO_DATA_SOURCE DT_BIRTH_YYYYMMDD RACE_ETHNICITY PK_SEQ_NUM HISPANIC_FLG AM_IND_ALASKAN_FLG ASIAN_FLG BLACK_AFRICAN_AM_FLG VALSSN NAT_HAWAII_PAC_IS_FLG WHITE_FLG NON_RES_ALIEN_FLG NO_RACE_REPORT_FLG U_RESV_1 DEMO_DUP ) ADMTEST (KEEP = TERMID RINCDE APPLTYPE VERBAL ADMTEST FETEST ACTWRITE ADMCIP FLD220 SSN ADMACT LANGREQ WRITESCE FLD220 SATWMC SATWESSA SCALEREQ HSGPA COLGPA ACT HSUREQ ESOLUNIT PK_SEQ_NUM_TEST APP_ADM_SOURCE REPT_INST PERSON_ID STU_TYP CIP_APP_ADM TEST_REQ_CD TEST_SCORE_TYP DEMO_TIME_FRAME DEMO_DATA_SOURCE TEST_SCORE_N TEST_SCORE_A REQ_MET U_RESV_1 REPT_TIME_FRAME DEMO_DUP) EXCEPT (KEEP = TERMID RINCDE APPLTYPE FLD220 SSN ADMCIP PROFBAS1 PROFBAS2 PROFBAS3 EXCSTAT PROFILE ADMACT SATWESSA SSN PERSON_ID PROFBASIS EXCEPTION_TYP EXCEPTION_CAT REPT_INST PK_SEQ_NUM_EXCEPT DEMO_TIME_FRAME DEMO_DATA_SOURCE U_RESV_1 REPT_TIME_FRAME DEMO_DUP); RETAIN PK_SEQ_NUM PK_SEQ_NUM_APP PK_SEQ_NUM_TEST PK_SEQ_NUM_EXCEPT CURRENT_TERMID PREV_TERM DEMO_KEY DEMO_DUP; SET DEMOB; BY TERMID SSN RINCDE; ***************************************************************** * GENERAL PROCESSING * *****************************************************************; FORMAT DEMO_TIME_FRAME $CHAR06. REPT_TIME_FRAME $CHAR06. CURRENT_TERMID $CHAR06. REPT_INST $CHAR04. PERSON_ID $CHAR09. CIP_APP_ADM $CHAR06. U_RESV_1 $CHAR50.; REPT_INST = RINCDE; DEMO_TIME_FRAME = TERMID; REPT_TIME_FRAME = TERMID; CURRENT_TERMID = TERMID; DEMO_DATA_SOURCE = 'ADM'; APP_ADM_SOURCE = 'ADM'; PERSON_ID = SSN; CIP_APP_ADM = ADMCIP; STU_TYP = APPLTYPE; U_RESV_1 = FLD220; * RESET SEQ NUMBER WHEN TERM CHANGES; FORMAT PREV_TERM $CHAR06.; IF PREV_TERM NE CURRENT_TERMID THEN DO; PREV_TERM = CURRENT_TERMID; FORMAT PK_SEQ_NUM 8. PK_SEQ_NUM_APP 8. PK_SEQ_NUM_TEST PK_SEQ_NUM_EXCEPT 8.; PK_SEQ_NUM = 0; PK_SEQ_NUM_APP = 0; PK_SEQ_NUM_TEST = 0; PK_SEQ_NUM_EXCEPT = 0; END; ********************************************************** * PERSON DEMOGRAPHICS * *********************************************************/; FORMAT DT_BIRTH_YYYYMMDD $CHAR08.; DOB_YEAR = SUBSTR(DTBIRTH,1,4); DOB_MONTH = SUBSTR(DTBIRTH,6,2); DOB_DAY = SUBSTR(DTBIRTH,9,2); DT_BIRTH_YYYYMMDD = TRIM(DOB_YEAR)||TRIM(DOB_MONTH)||TRIM(DOB_DAY); 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 = ' '; RACE_ETHNICITY = RACE; PK_SEQ_NUM = PK_SEQ_NUM + 1; *This step determines when to bypass creating a person_demo. The sysid_seq will be incremented for rows of the many relationship; IF DEMO_DUP IN ('Y','Z') THEN DO; SYSID_SEQ + 1; GOTO PROCESS_ADMITS; END; OUTPUT DEMO; ********************************************************** * APPLICANTS ADMITS * *********************************************************/; PROCESS_ADMITS: FORMAT NON_ADM $CHAR01. U_RESV_2 $CHAR50. U_RESV_3 $CHAR50. U_RESV_2 $CHAR50. U_RESV_3 $CHAR50.; NON_ADM = ' '; U_RESV_2 = FLD280; U_RESV_3 = FLD410; PK_SEQ_NUM_APP = PK_SEQ_NUM_APP + 1; OUTPUT ADMITS; ********************************************************** * ADMISSION TEST REQUIREMENTS * *********************************************************/; FORMAT TEST_REQ_CD $CHAR02. TEST_SCORE_TYP $CHAR02. TEST_SCORE_N 6.2; * FETEST - FUNDAMENTALS OF ENGINEERING - 01164 */; IF APPLTYPE = 'G' AND ADMTEST = 'E' AND FETEST IN ('P', 'N') THEN DO; TEST_REQ_CD = 'FE'; TEST_SCORE_TYP = 'PF'; TEST_SCORE_N ='.'; TEST_SCORE_A = FETEST; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * ACTWRITE - ACT WRITING SCORE - 01116 */; IF ACTWRITE GE 2 AND ACTWRITE LE 12 THEN DO; TEST_REQ_CD = 'A'; TEST_SCORE_TYP = 'WR'; TEST_SCORE_N = ACTWRITE; TEST_SCORE_A = '.'; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * WRITESCE - SAT/GRE WRITING SCORE - 01115 */; IF ADMTEST = 'S' AND (WRITESCE > '199' AND WRITESCE < '801') THEN DO; TEST_REQ_CD = ADMTEST; TEST_SCORE_TYP = 'WR'; TEST_SCORE_N = WRITESCE; TEST_SCORE_A = '.'; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; FORMAT WRITE_SCE $CHAR05. FWRITE $CHAR02. SWRITE $CHAR01. RF_WRITE $CHAR05.; FWRITE=SUBSTR(WRITESCE,1,2); SWRITE=SUBSTR(WRITESCE,3,1); RF_WRITE = FWRITE||'.'||SWRITE||0; WRITE_SCE = RF_WRITE; IF ADMTEST = 'G' AND (WRITESCE > '004') AND (WRITESCE < '061') THEN DO; TEST_REQ_CD = ADMTEST; TEST_SCORE_TYP = 'WR'; TEST_SCORE_N = WRITE_SCE; TEST_SCORE_A = '.'; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * LANGREQ - FTIC & TRANSFER FOREIGN LANGUAGE REQUIREMENT - 01499 *; IF ADMACT IN('A','P','C','X') AND (EXCSTAT = 'T' OR PROFILE = 'Y') AND LANGREQ IN ('Y','N') THEN DO; TEST_REQ_CD = 'FL'; TEST_SCORE_TYP = 'R'; TEST_SCORE_A = '.'; TEST_SCORE_N = '.'; REQ_MET = LANGREQ; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * SCALEREQ - FTIC ADMISSION SCALE REQUIREMENT - 01500 *; IF ADMACT IN('A','P','C','X') AND APPLTYPE IN ('B', 'E') AND SCALEREQ IN ('Y', 'N') THEN DO; TEST_REQ_CD = 'AS'; TEST_SCORE_TYP = 'R'; TEST_SCORE_A = '.'; TEST_SCORE_N = '.'; REQ_MET = SCALEREQ; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * SATWESSA - SCHOLASTIC ASSESSMENT TESTING WRITING ESSAY SUBSCORE-01118 *; IF ADMTEST = 'S' AND (SATWESSA > 01 AND SATWESSA < 13) THEN DO; TEST_REQ_CD = ADMTEST; TEST_SCORE_TYP = 'WE'; TEST_SCORE_A = '.'; TEST_SCORE_N = SATWESSA; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * SATWMC - SCHOLASTIC ASSESSMENT TESTING WRITING MULTIPLE CHOICE SUBSCORE-01119 *; IF ADMTEST = 'S' AND SATWMC > 19 AND SATWMC < 81 THEN DO; TEST_REQ_CD = ADMTEST; TEST_SCORE_TYP = 'WM'; TEST_SCORE_A = '.'; TEST_SCORE_N = SATWMC; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * HSUREQ - HIGH SCHOOL UNIT REQUIREMENTS - 01524 *; IF ADMACT IN('A','P','C','X') AND APPLTYPE IN ('B', 'E') AND (EXCSTAT = 'T' OR PROFILE = 'Y') AND HSUREQ = 'Y' THEN DO; TEST_REQ_CD = 'HS'; TEST_SCORE_TYP = 'R'; TEST_SCORE_A = '.'; TEST_SCORE_N = '.'; REQ_MET = HSUREQ; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * ACT - AMERICAN COLLETE TESTING SCORE - 01138 *; IF (ACT NE '99') AND (ACT >= '03' AND ACT <= '36') THEN DO; TEST_REQ_CD = 'A'; TEST_SCORE_TYP = 'C'; TEST_SCORE_A = '.'; TEST_SCORE_N = ACT; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * GRE GRADUATE RECORD EXAM VERBAL SCORE */; IF ADMTEST = 'G' AND (VERBAL > 199) AND (VERBAL < 801) THEN DO; TEST_REQ_CD = 'G'; TEST_SCORE_TYP = 'V'; TEST_SCORE_N = VERBAL; TEST_SCORE_A = ' '; REQ_MET = ' '; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; /* GRE GRADUATE RECORD EXAM QUANTITATIVE SCORE */; IF ADMTEST = 'G' AND (QUANT > 199) AND (QUANT < 801) THEN DO; TEST_REQ_CD = 'G'; TEST_SCORE_TYP = 'Q'; TEST_SCORE_N = QUANT; TEST_SCORE_A = ' '; REQ_MET = ' '; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; /* GMAT GRADUATE MANAGEMENT ADMISSIONS TEST */; IF ADMTEST = 'B' AND ((VERBAL > 199) AND (VERBAL < 801)) AND QUANT = 999 THEN DO; TEST_REQ_CD = 'GM'; TEST_SCORE_TYP = 'C'; TEST_SCORE_N = VERBAL; TEST_SCORE_A = ' '; REQ_MET = ' '; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * VERBAL/Other Score - 01168 *; IF ADMTEST = 'S' AND (VERBAL > 0) AND (VERBAL NE 999) THEN DO; TEST_REQ_CD = 'S'; TEST_SCORE_TYP = 'V'; TEST_SCORE_N = VERBAL; TEST_SCORE_A = '.'; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; * QUANTITATIVE SCORE - 01167 *; IF ADMTEST = 'S' AND (QUANT >= 200) AND (QUANT <= 800) THEN DO; TEST_REQ_CD = 'S'; TEST_SCORE_TYP = 'Q'; TEST_SCORE_N = QUANT; TEST_SCORE_A = '.'; REQ_MET = '.'; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; /* QUANTITATIVE SCORE - 01167 LSAT */; IF ADMTEST = 'L' AND (QUANT >= 120) AND (QUANT <=180) THEN DO; TEST_REQ_CD = 'L'; TEST_SCORE_TYP = 'Q'; TEST_SCORE_N = QUANT; TEST_SCORE_A = ' '; REQ_MET = ' '; PK_SEQ_NUM_TEST + 1; OUTPUT ADMTEST; END; ********************************************************** * ADMISSION EXCEPTIONS * **********************************************************/; FORMAT PROFBASIS $CHAR01.; * FTIC AND PROFILE FLAG = Y *; IF APPLTYPE IN ('B','H','E') AND PROFILE = 'Y' THEN DO; IF PROFBAS1 NOT = ' ' THEN PROFBASIS = PROFBAS1; IF PROFBAS2 NOT = ' ' THEN PROFBASIS = PROFBAS2; IF PROFBAS3 NOT = ' ' THEN PROFBASIS = PROFBAS3; END; IF PROFILE = 'Y' THEN DO; EXCEPTION_TYP = 'F'; EXCEPTION_CAT = PROFBASIS; PK_SEQ_NUM_EXCEPT + 1; OUTPUT EXCEPT; END; IF EXCSTAT IN ('F', 'G', 'T', 'M') THEN DO; EXCEPTION_TYP = EXCSTAT; EXCEPTION_CAT = '.'; PK_SEQ_NUM_EXCEPT + 1; OUTPUT EXCEPT; END; RUN; ********** BEGINNING OF PRINT SECTION ; PROC SORT DATA = DEMO NODUPKEYS; BY RINCDE TERMID SSN; DATA _NULL_; SET DEMO; FILE PERDEMO DLM='|'; NAME_LAST = LNAME; NAME_FIRST = FNAME; NAME_MI = MINIT; SUFFIX = '.'; FORMAT PID_VALID_SSN $CHAR01.; PID_VALID_SSN = VALSSN; PUT _N_ 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; RUN; DATA _NULL_; SET ADMITS; FILE APPLADM DLM='|'; REGISTERED_CD = REGCD; FORMAT INST_GRNT_HIDEG_CD $CHAR08.; IF DEGINST NOT = ' ' THEN INST_GRNT_HIDEG_CD = '0'||DEGINST||'00'; FORMAT LAST_INST_CD $CHAR08.; IF LASTINST NOT = ' ' THEN LAST_INST_CD = '0'||LASTINST||'00'; FINAL_ADM_ACTION = ADMACT; FORMAT LAST_SECONDARY_DT $CHAR06. LAST_POSTSEC_DT; LAST_SECONDARY_DT = ' '; LAST_POSTSEC_DT = ' '; IF APPLTYPE IN ('B','H','E') AND ADMACT IN ('A','P','C','X') AND DTLASTAT NOT = ' ' THEN LAST_SECONDARY_DT = DTLASTAT; ELSE LAST_POSTSEC_DT = DTLASTAT; *FORMATTING HIGH SCHOOL GPA; FORMAT GPA_HIGH_SCHOOL $CHAR05. FHSGPA $CHAR01. SHSGPA $CHAR02. RF_HSGPA $CHAR05.; FHSGPA=SUBSTR(HSGPA,1,1); SHSGPA=SUBSTR(HSGPA,2,2); RF_HSGPA = FHSGPA||'.'||SHSGPA||0; GPA_HIGH_SCHOOL = RF_HSGPA; *FORMATTING COLLEGE GPA; FORMAT GPA_COLLEGE $CHAR05. FCOLGPA $CHAR01. SCOLGPA $CHAR02. RF_COLGPA $CHAR05.; FCOLGPA=SUBSTR(COLGPA,1,1); SCOLGPA=SUBSTR(COLGPA,2,2); RF_COLGPA = FCOLGPA||'.'||SCOLGPA||0; GPA_COLLEGE = RF_COLGPA; *FORMATTING DEPOSIT AMOUNT; FORMAT DEPOSIT_AMT $CHAR04.; DEPOSIT_AMT = DEPAMTX; IF DEPAMTX > 0 THEN DEPOSIT_AMT = DEPAMTX; FORMAT FLA_PUB_HS_FLG $CHAR01.; FLA_PUB_HS_FLG = FLPUBFLG; FORMAT GPA_GED_COMPONENT $CHAR03. GPA_BACHELORS $CHAR03.; GPA_GED_COMPONENT = '.'; GPA_BACHELORS = '.'; FORMAT COUNTY_OF_RES $CHAR04. HS_ETS_CD $CHAR06. STU_CLASS_LEVEL $CHAR01.; COUNTY_OF_RES = CNTYRES; HS_ETS_CD = HSCODE; STU_CLASS_LEVEL = SCLAS; PUT _N_ REPT_TIME_FRAME APP_ADM_SOURCE REPT_INST PERSON_ID CIP_APP_ADM APPLTYPE DEMO_TIME_FRAME DEMO_DATA_SOURCE FINAL_ADM_ACTION REGISTERED_CD COUNTY_OF_RES FEECLSRS ADMDEP STU_CLASS_LEVEL DISPLACE LAST_INST_CD INST_GRNT_HIDEG_CD DEGHELD LAST_POSTSEC_DT GPA_COLLEGE HS_ETS_CD LAST_SECONDARY_DT GPA_HIGH_SCHOOL GPA_GED_COMPONENT GPA_BACHELORS ESOLUNIT DEPOSIT_AMT@; PUT U_RESV_1 U_RESV_2 U_RESV_3; RUN; DATA _NULL_; SET ADMTEST; FILE TSTREQS DLM='|'; DEMO_DATA_SOURCE = 'ADM'; TCHR_PREP_DOE_CD = 'ZZZ'; PUT _N_ REPT_TIME_FRAME APP_ADM_SOURCE REPT_INST PERSON_ID CIP_APP_ADM STU_TYP TCHR_PREP_DOE_CD TEST_REQ_CD TEST_SCORE_TYP DEMO_TIME_FRAME DEMO_DATA_SOURCE TEST_SCORE_N TEST_SCORE_A @; PUT REQ_MET U_RESV_1; RUN; DATA _NULL_; SET EXCEPT; FILE EXCEPTS DLM='|'; EXCEPTION_SOURCE = 'ADM'; CIP_APP_ADM = ADMCIP; STU_TYP = APPLTYPE; PUT _N_ REPT_TIME_FRAME REPT_INST PERSON_ID EXCEPTION_SOURCE CIP_APP_ADM STU_TYP EXCEPTION_TYP EXCEPTION_CAT DEMO_TIME_FRAME@; PUT DEMO_DATA_SOURCE U_RESV_1; RUN;