% % get subject header start xacts for this chuuter/Shooter/Venue % 0 !Xact.Index 0 !Xact 0 !counter empty !Xact.Slist empty !Xact.Subject chuuter !Xact.Prefix { *xactreva "xreva " &_Xact log)( { xactinfo % % next downward xact exists % *shooting { % % meets filtered venue/shooter selection criteria % *xactsubj { % % always count a match with a subject % +:counter % % has a subject, check if different from one being tracked % _Shooter.Subject _Xact.Subject eq$ { % % same subject, keep checking % " " &_Xact ^:Xact.Slist } { % % different subject, add subject and xact % _Xact.Index positive { % % terminate prior subject xact sub-list % _Xact.Subject squoter ^" " &'"' &; ^:Xact.Slist } { % % no prior subject to terminate % } ifelse % % start out the new subject list % '"empty ' &_Xact ^:Xact.Slist _Shooter.Subject !Xact.Subject +:Xact.Index } ifelse } { % % no subject, keep going % } ifelse } { % % not same chuuter % } ifelse _Xact.Index 8 gt } { % % no more xacts % true } ifelse ? } loop _Xact.Index zero { _counter positive { % % there was only one match with a subject % '"empty ' &_Xact ^:Xact.Slist _Shooter.Subject !Xact.Subject +:Xact.Index _Shooter.Subject squoter ^" " &'"' &; ^:Xact.Slist } { % % no matches with a subject % } ifelse } { _Shooter.Subject squoter ^" " &'"' &; ^:Xact.Slist } ifelse _Xact.Index % % stack: count (Xact.Slist has exec of all subjects) % % xact-group is "empty xact [ . . . ] 'subject'" %