/****************************************************************************************************** ** This program updates the following education variables variable name in variable name the program in the NLS ------------------------------------------------------ DATE_LEFT_SCH CVC_HS_LEFT_DATE HGC CVC_HS_LEFT_HGC HGA CVC_HS_LEFT_HGA The conditions to be met to compute these variables are as follows: HGC>=12 or received H.S. Diploma or age at last interview is greater than 20 or R is in college.; Computing the Date Left High School - DATE_LEFT_SCH: Three definitions: (1) The date R received H.S. Dimploma - DATE_RECD_HSD (2) The date R completed grade HGC - DATE_COMP_HGC (3) The date R stopped attending school - DATE_SCH_STOP DATE_LEFT_SCH is computed as follows: Use (1), if (1) is not available then use (2), and if (2) is also not available then use (3) ** The program is run after the programs DATE_DGR21.sas and HGC_R21.sas had run first. Refer to the program Date_DGR21.sas for the variables used in this program. In addition, the following variables are referred and used in this program. ** IN THE PROCESS TO GENERATE CVC_HGC_EVER in HGC_R21.sas, THE FOLLOWING VARIABLES WERE CREATED AND ARE USED IN THIS PROGRAM: ** ** Variable name Variable label ** in program ** ------------------------------------------------------------------------------------------------- hgaloop HIGHEST GRADE ATTENDED FROM THE LOOPS 2023 grsurvFr1-grsurvFr20 HIGHEST PRE-COLLEGE GRADE COMPLETED IN PREVIOUS ROUNDS grsurvF HIGHEST PRE-COLLEGE GRADE COMPLETED 2023 cdtgd CVC_GED cdths CVC_HS_DIPLOMA stpcm11-stpcm13 MONTH STOP THE 1ST ENROLLMENT IN EACH SCHOOL 2023 stpcm21-stpcm22 MONTH STOP THE 2ND ENROLLMENT IN EACH SCHOOL 2023 grsurv_cvc CVC_HGC_EVER encat CV_ENROLLSTAT 2023 attsch DUMMY TO INDICATE R GOES TO GRADE 1 THROUGH 12, 2023 ** IN THE PROCESS TO GENERATE CVC_HS_LEFT_DATE in the last round, THE FOLLOWING VARIABLES WEWE CREATED AND ARE USED IN THIS PROGRAM: ** ** Variable name Variable label ** in program ** ------------------------------------------------------------------------------------------------- hga_rnd THE ROUND THAT R GOES TO THE GRADE=CVC_HS_LEFT_HGA_2021 date_comp_hgc THE MONTH THAT R COMP THE GRADE=CVC_HS_LEFT_HGC_2021 date_sch_stop THE LAST MONTH R GOES TO 1-12 GRADE IN PREVIOUS ROUNDS attsch2-attsch20 DUMMY TO INDICATE R GOES TO GRADE 1 THROUGH 12 IN PREVIOUS ROUNDS date_left_trs THE LAST MONTH R ATTEND SCHOOL IN THE TRANSCRIPT SURVEY ******************************************************************************************************/ options nocenter linesize=100; libname xin21 ; libname xin20 ; data one (rename=(BDATEM=dobm BDATEY=doby)); set xin21.in_left_hsR21; data two; set xin21.out_hgcR21; keep id pubid e3500r1 e2857r2-e2857r21 hgaloop grsurvFr1-grsurvFr20 grsurvF cdtgd cdths scoder21_1-scoder21_3 stpcm11-stpcm13 stpcm21-stpcm22 stpcm31 hgcr1 hgcYr2-hgcYr20 graug hgcr2-hgcr19 cvc_hgcr20 grsurv_cvc encatr1-encatr20 encat attsch chk: e3877a1r21 e5000r1 e3112r2-e3112r21 e3113r7-e3113r21 doicmr1-doicmr21 locatorr2-locatorr20 locator hsr20 gdr20; data three; set xin20.out_left_hsR20; keep id hga_rnd date_comp_hgc date_sch_stop attsch2-attsch20 date_left_trs sch_stop_r1 hgaloopr2-hgaloopr20 loc_hga_r20 loc_dt_r20 dobm doby RNIr2-RNIr20 hga_old_r20 date_left_sch_old_r20 age_left_r20 flag20r20 flag30r20 flag40r20 flag50r20 HS_LFT_r9 HS_LFT_HGC_r9 HS_LFT_r10 HS_LFT_HGC_r10 HS_LFT_HGA_r10 HS_LFT_r11 HS_LFT_HGC_r11 HS_LFT_HGA_r11; loc_hga_r20=loc_hga; loc_dt_r20=loc_dt; hgaloopr20=hgaloop; attsch20=attsch; hga_old_r20=hga_old; date_left_sch_old_r20=date_left_sch_old; age_left_r20=age_left; flag20r20=flag20; flag30r20=flag30; flag40r20=flag40; flag50r20=flag50; data mrg; merge one two three; by id; ** Defining all arrays used in the program; array e285 (*) e3500r1 e2857r2-e2857r21; array hgal (*) hgaloopr1-hgaloopr20 hgaloop; array RNI (*) RNIr1-RNIr21; array gra (*) hgcr1 hgcYr2-hgcYr20 graug; array grsF (*) grsurvFr1-grsurvFr20 grsurvF; array doic (*) doicmr1-doicmr21; array dli (*) dli1-dli21; array enc (*) encatr1-encatr20 encat; array att (*) attsch1-attsch20 attsch; array stpcm (*) stpcm11-stpcm13 stpcm21-stpcm22 stpcm31; array scode (*) scoder21_1-scoder21_3 scoder21_1-scoder21_2 scoder21_1; ***** Computing date of birth in continuous month scheme (cmb).; cmb=((doby-1980)*12)+dobm; ***** Computing DLI round; do i=1 to dim(e285); do j=1 to i-1; if e285(j)~=-5 then dli(i)=j; end; if e285(i)~=-5 then do; ageLI=round((doic(i)-cmb)/12); encatLI=enc(i); DLI_RND=i; end; if RNI(i) in (80, 98) then DECEASED=1; end; if cdths>-4 then HSD=1; if cdths=-4 then HSD=0; if cdtgd>-4 then GED=1; if cdtgd=-4 then GED=0; ***** cv creation criteria; if cdths>-4 or grsurv_cvc>=12 or encatLI in (4,5,6,7,9,10,11) or deceased=1 or ageLI>20 then created=1; ** when to use school stop dates; if encatLI in (4,5,6,7,9,10,11) or deceased=1 or ageLI>20 then usestop=1; ***** Imputing e2857; if 012 then do; e2857r21=12+e2857r21; imp1=13; end; ***** Computing Highest Grade Completed: - HGCa, HGC.; HGC=hs_lft_hgc_r20; if e3112r20=-5 & e3877a1r21 not in (0, -5) & HGC ne 12 & (attsch=1 or scoder21_1 in (-1,-2,-3) or scoder21_2 in (-1,-2,-3) or scoder21_3 in (-1,-2,-3)) then do ; HGC=grsurvF; hgc_f=21; end; do i=1 to dim(e285); if e285(i)~=-5 then HGCa=gra(i); end; do i=1 to dim(grsF); if grsF(i)=HGC then do; HGC_rnd=i; i=dim(grsF); end; end; ***** Computing Highest grade attended in school: HGA.; HGA=hs_lft_hga_r20; loc_hga=loc_hga_r20; if HGA=-4 then do; HGA=hga_old_r20; hga_f=21.1; end; if e3112r20=-5 & e3877a1r21 not in (0, -5) & HGA ne 12 & (attsch=1 or scoder21_1 in (-1,-2,-3) or scoder21_2 in (-1,-2,-3) or scoder21_3 in (-1,-2,-3)) then do; if e2857r21=hgaloop & (0<=e2857r21<=12 | e2857r21=95) & (e2857r21>HGA | HGA=95) then do; HGA=e2857r21; LOC_HGA=2; hga_rnd=21; end; if e2857r21~=hgaloop then do; if (0<=hgaloop<=12 | hgaloop=95) & 95>e2857r21>12 & (hgaloop>HGA | HGA=95) then do; HGA=hgaloop; if grsurvF<=12 & grsurvF>hgaloop then HGA=grsurvF; LOC_HGA=3; hga_rnd=21; end; if 95>hgaloop>12 & (0<=e2857r21<=12 | e2857r21=95) & (e2857r21>HGA | HGA=95) then do; HGA=e2857r21; if grsurvF<=12 & grsurvF>e2857r21 then HGA=grsurvF; LOC_HGA=4; hga_rnd=21; end; if (0<=hgaloop<=12|hgaloop=95) & (0<=e2857r21<=12|e2857r21=95) then do; if grsurvF>hgaloop & grsurvF<=e2857r21 & (e2857r21>HGA | HGA=95) then do; HGA=e2857r21; LOC_HGA=5; hga_rnd=21; end; if grsurvF<=hgaloop & grsurvF>e2857r21 & (hgaloop>HGA | HGA=95) then do; HGA=hgaloop; LOC_HGA=6; hga_rnd=21; end; if grsurvF=hgaloop & grsurvFHGA | HGA=95) then do; HGA=e2857r21; LOC_HGA=7; hga_rnd=21; end; if grsurvF=e2857r21 & grsurvFHGA | HGA=95) then do; HGA=hgaloop; LOC_HGA=8; hga_rnd=21; end; if (0<=grsurvFhgaloop>=0 & grsurvF>e2857r21>=0) then do; if abs(hgaloop-grsurvF)HGA | HGA=95) then do; HGA=hgaloop; LOC_HGA=9; hga_rnd=21; end; if abs(hgaloop-grsurvF)>abs(e2857r21-grsurvF) & (e2857r21>HGA | HGA=95) then do; HGA=e2857r21; LOC_HGA=10; hga_rnd=21; end; end; if grsurvF<0 then do; if max(hgaloop, e2857r21)>HGA | HGA=95 then HGA= max(hgaloop, e2857r21); LOC_HGA=18; hga_rnd=21; end; end; if hgaloop<0 & (0<=e2857r21<=12|e2857r21=95) & (e2857r21>HGA | HGA=95) then do; HGA=e2857r21; LOC_HGA=11; hga_rnd=21; end; if (0<=hgaloop<=12|hgaloop=95) & e2857r21<0 & (hgaloop>HGA | HGA=95) then do; HGA=hgaloop; LOC_HGA=12; hga_rnd=21; end; end; end; ** Computing Date Left High School (1) - DATE_RECD_HSD; DATE_RECD_HSD=cdths; ** Computing Date Left High School (2) - DATE_COMP_HGC, starting from the same var created in last round; if DATE_COMP_HGC=-4 & grsurv_cvc<12 then never_comp_12=1; ** Computing Date Left High School (2) - DATE_SCH_STOP, starting from the same var created in last round; do i=1 to dim(scode); if scode(i) in (1,2,3) then do; if stpcm(i)>0 & DATE_SCH_STOP-4 & DATE_LEFT_SCH<0 then do; DATE_LEFT_SCH=DATE_RECD_HSD; LOC_DT=1; end; if DATE_COMP_HGC>-4 & DATE_LEFT_SCH<0 then do; DATE_LEFT_SCH=DATE_COMP_HGC; LOC_DT=2; end; if DATE_SCH_STOP>-4 & DATE_LEFT_SCH<0 & DECEASED=1 then do; DATE_LEFT_SCH=DATE_SCH_STOP; LOC_DT=3.1; end; if DATE_SCH_STOP>-4 & DATE_LEFT_SCH<0 & encatLI in (4,5,6,7,9,10,11) then do; DATE_LEFT_SCH=DATE_SCH_STOP; LOC_DT=3.2; end; if DATE_SCH_STOP>-4 & DATE_LEFT_SCH<0 & ageLI>20 then do; DATE_LEFT_SCH=DATE_SCH_STOP; LOC_DT=3.3; end; if DATE_LEFT_TRS>-4 & DATE_LEFT_SCH<0 then do; DATE_LEFT_SCH=DATE_LEFT_TRS; LOC_DT=4.1; end; if DATE_LEFT_TRS>-4 & DATE_LEFT_SCH>-4 & LOC_DT in (3.1,3.2,3.3) & DATE_LEFT_TRS-4 & DATE_LEFT_SCH<0 & usestop=1 then do; DATE_LEFT_SCH=sch_stop_r1; LOC_DT=5; end; if DATE_SCH_STOP>-4 & DATE_LEFT_SCH=-4 & ageLI>20 then LOC_DT_a=1; if DATE_SCH_STOP>-4 & DATE_LEFT_SCH=-3 & ageLI>20 then LOC_DT_a=2; if DATE_LEFT_SCH=-4 & GED=1 then LOC_DT_b=1; end; age_jan23=round((517-cmb)/12); cdob=(doby-1980)*12 + dobm; if date_left_sch>0 then age_left=date_left_sch-cdob; if created ne 1 then do; date_left_sch_old=date_left_sch; hga_old=hga; hgc_old=hgc; date_left_sch=-4; hga=-4; hgc=-4; end; **** flags; flag20=-4; if HGA>HGC then flag20=-1; if HGA=HGC then flag20=0; if 12hgc+1 & hgc>0 & 0