% % determine the session of the xact % the Subject directory has files of format: % ven/sht_dddddddd_tttttt_uuuuuuuuuu_suffix.txt % Camera.Modified must fit % in time sequence, after a Bnew and before a Cdone suffix % see if a subject reference is already in place % *xactsubj not { % % no subject reference yet, make up the ven/sht/time seed for finding % false !Xact.Detect chuuter _Aamg.Testing { "incoming" xactext stamp } { _Camera.Modified } ifelse Time.FullOrder & _Subj.Dir empty { % % stack: time-stake venue-dir file-seed % chuuter anytext nextof ? % % always track the subject % dup term4 !Shooter.Subject _Xact.Detect { % % it was after a Bnew, test before the next Cdone % dup noext term5 "Cdone" eq$ { % % see if it is after the time point % % stack: time-stake venue-dir file-seed % dup fourth gt$ { % % it is before the Cdone, mark as this subject % *xactosub "Subject" *shootern true } { % % it is past the Cdone, keep checking % false !Xact.Detect false } ifelse } { % % not the matching Cdone % false } ifelse } { % % test the Bnew % dup noext term5 "Bnew" eq$ { % % see if it is greater than the time point % % stack: time-stake venue-dir file-seed % dup fourth ge$ { % % the Bnew is greater than the time point, % this is an extra shot not within session markers % "Extra" *shootern true } { % % this is a possible Bnew for this xact % true !Xact.Detect false } ifelse } { % % not a Bnew % false } ifelse } ifelse ? } loop filing) % % stack: time-stake % pop % % see if we found a shooter Bnew and no Cdone yet % _Xact.Detect { % % we did have a shooter Bnew operation before a coming Cdone % *xactosub "Subject" *shootern } if } if % % stack: %