capture program drop ss program define ss *! version 1.3 gmh nov 7 2001 *! Ver | bug fixed *! ------------- *! 1.2 fixed totcredit calc bug *! 1.1 totcredit output, quietly capture which smn if _rc>0 { di in red "You need -smn- to run this program" di in red "stata will attempt to connect you:" capture net from "http://www.unc.edu/~gholmes/stata" net d smn exit } qui{ syntax using , Saving(str) [REPLACE] clear insheet `using' global name = substr(v1,7,20) in 1 drop _all infix str wi1 2-3 str dept1 5-9 crse1 10-14 str grade1 16-19 cred1 20-24 sem1 25-29 str r1 35-36 str wi2 40-41 str dept2 43-47 crse2 48-52 str grade2 54-57 cred2 58-62 sem2 63-67 str r2 73-74 `using' gen line=_n reshape i line reshape j group 1 2 reshape xij dept crse grade cred sem r wi reshape long drop if dept=="HRS:" | dept=="" drop if dept=="Name" | length(dept)>4 drop line group sort dept gen byte counted=0 gen byte passed=0 qui for any A B C D: replace passed=1 if grade=="X" *open the report file file open report using `saving', write `replace' file write report _n " ********** PAGE 1 **********" _n _n file write report "REPORT CREATED $S_DATE" _n file write report "Student Name: $name " _n _n file write report "I: GENERAL EDUCATION REQUIREMENTS" _n file write report "--------------------------------------------" _n gen str30 list = dept + " " + string(crse) + " " + grade + " " + string(cred) +" " + string(sem) replace list = dept + " " + "0000" + " " + grade + " " + string(cred) +" " + string(sem) if crse==. compress *************** english ************* global sat " *********NOT SATISFIED *********" count if dept=="ENGL" & crse==1100 & passed global e1=r(N)>0 count if dept=="ENGL" & crse==1200 & passed if $e1 & r(N)>0 { global sat = "satisifed" } file write report "English: $sat"_n preserve keep if dept=="ENGL" & crse==1100 & passed global out = list[1] file write report " $out" _n restore preserve keep if dept=="ENGL" & crse==1200 & passed global out = list[1] file write report " $out " _n restore *************** phys science ************* global sat="" * first check for satisfied global num=0 for any BIOL CHEM GEOL PHYS: gen isX = dept=="X" & passed qui for var isBIOL isCHEM isGEOL isPHYS: sum X, mean \ global num=$num+(r(sum)>0) qui egen byte psci=rsum(isBIOL-isPHYS) di $num gen byte islab=psci & passed & cred==1 qui count if islab global haslab=" *****NEEDS LAB *****" if r(N)>0 { global haslab="has lab" } qui sum cred if psci global metcred=" ****NEEDS CREDITS*** " if r(sum)>=8 { global metcred="met credits " } global pscred=r(sum) file write report _n "Physical Science: $haslab " _n file write report " $metcred "_n preserve sort dept crse keep if psci qui count global n=r(N) local i=1 while `i'<=$n { global out = list[`i'] if islab[`i'] { global out = "$out" + " LAB " } file write report " $out" _n local i=`i'+1 } file write report "-----------------------------------------" _n file write report " PSCI CREDITS: $pscred " _n restore *** END PHYS SCI /*Anthropology, Geography, History, Political Science, Sociology, Psychology */ gen year=mod(sem,100)*10 + int(sem/100) replace year=year+5 if mod(year,10)==1 replace year=year+1000 if year<500 replace year=-year-19000 replace year=year/10 preserve smn dept crse, sort(year) keep if smn==1 for any ANTH GEOG HIST POLS SOCI PSYC: gen isX = dept=="X" & passed qui egen byte ssci=rsum(isANTH-isPSYC) keep if ssci global num=0 foreach X in isANTH isGEOG isHIST isPOLS isSOCI isPSYC { sum `X' ,mean global num= $num +(r(sum)>0) } global has3=" *****NOT 3 DEPTS *****" if $num>=3 { global has3="has 3 depts" } qui sum cred if ssci global metcred=" ****NEEDS CREDITS*** " if r(sum)>=12 { global metcred="met credits " } global sscred=r(sum) file write report _n "Social Science: $has3 " _n file write report " $metcred "_n qui count global n=r(N) local i=1 while `i'<=$n { global out = list[`i'] file write report " $out" _n local i=`i'+1 } file write report "-----------------------------------------" _n file write report " SSCI CREDITS: $sscred " _n _n restore ***** MATH ******** global sat " *********NOT SATISFIED *********" count if dept=="MATH" & crse==1065 & passed global e1=r(N)>0 count if dept=="MATH" & crse==1066 & passed if $e1 + r(N)>0 { global sat = "satisifed" } file write report "Math: $sat"_n capture{ preserve keep if dept=="MATH" & (crse==1065 | crse==1066) & passed smn dept crse, sort(year) keep if smn==1 qui count global n = r(N) local i=1 while `i'<=$n { global out =list[`i'] file write report " $out" _n local i = `i'+1 } restore *** END MATH **** ** ARTS AND HUMANITIES /*Humanities: Literature (English or American) Literature in a foreign language or in translation Philosophy Fine Arts: Art, Theatre Arts, Dance, Speech, Music */ preserve smn dept crse, sort(year) keep if smn==1 drop if dept=="ENGL" & crse<=1200 drop if dept=="ENGL" & crse==3880 drop if dept=="CLAS" & (crse==2001 | crse==2002) for any ENGL CLAS PHIL ART THEA SPCH MUSC : gen isX = dept=="X" & passed qui egen byte hum=rsum(isENGL-isPHIL) qui egen byte arts=rsum(isART-isMUSC) keep if hum|arts qui count if hum global hashum="*****NEEDS HUM*****" if r(N)>0{ global hashum="has hum" } qui count if art global hasart="*****NEEDS ARTS*****" if r(N)>0{ global hasart="has arts" } qui sum cred if hum|arts global metcred=" ****NEEDS CREDITS*** " if r(sum)>=10 { global metcred="met credits " } global ahcred=r(sum) file write report _n "Arts and Humanities: $hashum " _n file write report " $hasart "_n file write report " $metcred "_n qui count global n=r(N) local i=1 while `i'<=$n { global out = list[`i'] file write report " $out" _n local i=`i'+1 } file write report "-----------------------------------------" _n file write report " ARTS & HUM CRED: $ahcred " _n _n restore ******** END ARTS AND HUMS ****** ***** HEALTH AND PHYS EDUC ******** * hlth--- global sat " *********NOT SATISFIED *********" preserve keep if dept=="HLTH" & passed sum cred, mean if r(sum)>=2 { global sat = "satisifed" } file write report "Health: $sat"_n capture{ smn dept crse, sort(year) keep if smn==1 qui count global n = r(N) local i=1 while `i'<=$n { global out =list[`i'] file write report " $out" _n local i = `i'+1 } } restore * pe-- file write report _n global sat " *********NOT SATISFIED *********" preserve keep if dept=="EXSS" & passed sum cred, mean if r(sum)>=1 { global sat = "satisifed" } file write report "Phys Educ: $sat"_n *capture{ smn dept crse, sort(year) keep if smn==1 qui count global n = r(N) local i=1 while `i'<=$n { global out =list[`i'] file write report " $out" _n local i = `i'+1 } } restore file write report _page " ********** PAGE 2 **********" _n _n file write report "REPORT CREATED $S_DATE" _n file write report "Student Name: $name " _n _n file write report "II: COGNATES" _n file write report "------------------" _n _n ThisCls "ACCT 2401" ThisCls "ACCT 2521" ThisCls "DSCI 2223" ThisCls "ENGL 3880" ThisCls "FINA 2244" ThisCls "FINA 3724" ThisCls "MATH 2119" ThisCls "MATH 2283" preserve keep if dept=="SPCH" keep if crse==2520| crse==2510 capture smn dept crse, sort(year) capture keep if smn==1 sum count if r(N)>0 { l list global out = list[1] } else { global out = "SPCH 25-0 ********** NEED THIS CLASS" } file write report " $out" _n restore file write report _n "III: Economics Courses" _n file write report "------------------------" _n file write report _n " x Core" _n gen byte atLeastC=0 qui for any A B C: replace atLeastC = 1 if grade=="X" CoreCls "ECON 2113" CoreCls "ECON 2133" CoreCls "ECON 3144" CoreCls "ECON 3244" ThisCls "ECON 3343" preserve keep if dept=="ECON" & passed keep if crse>3000 drop if crse==3144 drop if crse==3244 drop if crse==3343 count if wi=="WI" global wi " wi met" if r(N)==0 { global wi "****NEEDS WI*****" } replace list = list + " WI" if wi=="WI" capture smn dept crse, sort(year) qui sum cred global metcred=" ****NEEDS CREDITS*** " if r(sum)>=18 { global metcred="met credits " } global econcred=r(sum) qui sum cred if crse>3999 global met45=" ****NEEDS 4K/5K*** " if r(sum)>=6 { global met45="met 4k/5k " } global cred45=r(sum) file write report _n " x Electives $met45" _n file write report " $metcred "_n file write report " $wi "_n qui count global n=r(N) local i=1 while `i'<=$n { global out = list[`i'] file write report " $out" _n local i=`i'+1 } file write report "-----------------------------------------" _n file write report " ECON ELEC CREDITS: $econcred " _n restore ***get in-major GPA gen byte inmaj=0 **cognates IsMajor "ACCT 2401" IsMajor "ACCT 2521" IsMajor "DSCI 2223" IsMajor "ENGL 3880" IsMajor "FINA 2244" IsMajor "FINA 3724" IsMajor "MATH 2119" IsMajor "MATH 2283" IsMajor "SPCH 2520" IsMajor "SPCH 2510" ** econ courses replace inmaj=1 if dept=="ECON" preserve keep if inmaj capture smn dept crse, sort(year) drop if r[_n-1]=="RP" & smn==smn[_n-1]+1 ** Generate GPA gen qp=. replace qp=4 if gr=="A" replace qp=3 if gr=="B" replace qp=2 if gr=="C" replace qp=1 if gr=="D" replace qp=0 if gr=="F" sum qp [w=cred] if qp<., mean global majgpa=round(r(mean),.001) global majcred=r(sum_w) *collapse (mean) qp (rawsum) cred [w=cred] , by(dept) restore file write report " MAJOR GPA (estimated): $majgpa " _n file write report " MAJOR CREDITS: $majcred " _n _n file close report keep if passed capture smn dept crse, sort(year) keep if smn==1 keep dept crse list cred sort dept crse save temp,replace drop _all infix str dept 10-13 crse 14-19 using `saving' keep if crse<. sort dept crse merge dept crse using temp drop if dept=="MATH" & crse==45 drop if dept=="READ" & abs(crse-1033)<=1.1 drop if dept=="EDUC" & crse==1000 drop if dept=="COAD" & crse==1000 qui smn list keep if smn==1 qui sum cred, mean global totcred=r(sum) keep if _==2 file open report using `saving', write append file write report _n "IV. Other Electives/Minor" _n qui sum cred, mean global othcred=r(sum) sort dept crse replace list = list + " MKTG" if dept=="MKTG" & crse==3832 replace list = list + " MGMT" if dept=="MGMT" & crse==3202 qui count global n = r(N) local i=1 while `i'<=$n { global out = list[`i'] file write report " $out" _n local i = `i'+1 } file write report "-----------------------------------------" _n file write report " ELEC/MINOR CREDITS: $othcred " _n _n file write report " Estimated Total Credits: $totcred" _n file close report } end *** END SS ** ******** capture program drop ThisCls program define ThisCls args class di "|`class'|" preserve keep if dept+" "+string(crse)==`"`class'"' & passed capture smn dept crse, sort(year) capture keep if smn==1 sum count if r(N)>0 { l list global out = list[1] } else { global out = "`class' ********** NEED THIS CLASS" } file write report " $out" _n end ******** capture program drop CoreCls program define CoreCls args class di "|`class'|" preserve keep if dept+" "+string(crse)==`"`class'"' & atLeastC capture smn dept crse, sort(year) capture keep if smn==1 sum count if r(N)>0 { l list global out = list[1] } else { global out = "`class' ********** NEED THIS CLASS" } file write report " $out" _n restore end **** capture program drop IsMajor program define IsMajor args class replace inmaj=1 if dept+" "+string(crse)==`"`class'"' end