6 %let comp_keys = Game_SK Inning Top_Bot AB_Number ;
7 %let data_vars = Batter_ID Is_A_Hit Result ;
8 %let data_list = Batter_ID,Is_A_Hit,Result ;
9 %let sort_keys = Game_SK Inning ;
10 %let tail_keys = Top_Bot Ab_Number ;
11 %let last_key = Inning ;
13 data Join_Runs_AtBats_grouped (drop = _: Runs) ;
15 dcl hash h (multidata:
"Y", ordered:
"A") ;
16 do _k = 1 to countw (
"&tail_keys") ;
17 h.defineKey (scan (
"&tail_keys", _k)) ;
19 do _k = 1 to countw (
"&data_vars") ;
20 h.defineData (scan (
"&data_vars", _k)) ;
24 do until (last.&last_key) ;
25 set dw.atbats (in=A keep=&comp_keys &data_vars
27 dw.runs (in=R keep=&comp_keys Runner_ID)
31 if not R then continue ;
32 call missing (&data_list, _count) ;
33 do while (h.do_over() = 0) ;
34 _count = sum (_count, 1) ;
37 if not _count then output ;