% % download registration files from cloud % % stack: shooter-num % % process shooter cloud registration files % dup !clun empty !builder % % process the latest reg tree file listing for shooter % ^_Clup.RegP &_Clup.RegS &"*.msg" !wilder _Clup.Storage empty { nextfile ? % % delete all but the most current report of reg tree % _builder any? { del } if filing !builder } loop filing) % % each reg tree file containing the different ops are clumped % into venues for the shooter % process all the venues for the shooter, marking the change of venue % _builder any? { empty !VenPrev % % the list of all reg tree items is processed for the op files % emptyx exec$ { isnull ? % % extract the venue from file listing % dup "/" right$ "/" slicex % % stack: empty [ . . . reg-tree-file ] file-of-venue venue % % add the venue to the list of venues % update the venues of shooter list % "_Venues_" &_clun text_bin second lookstr? { "_Venues_" &_clun text!bin } if !Venue % % only extract the latest op in each op category % _Venue _VenPrev ne$ { % % venue has changed in list of op files % true !Reging true !Starring true !Newing true !Doneing true !Endring true !Filring _Venue !VenPrev } if % % stack: empty [ . . . reg-tree-file ] file-of-venue % "_" left$ % % stack: empty [ . . . reg-tree-file ] file-prefix % process using a flag to test any the prior file comparison % for the venue/shooter % < |CurReg _Reging { % % reg flag still seeking entry % empty !RegFile "_Reg" &_Venue &_clun text*bin _RegFile 2 copy ne$ { % % mark that there is a new reg file posted % dup quoter &" !RegFile" &; "_xReg" &_Venue &_clun text!bin second quoter &" !RegFile" &; "_Reg" &_Venue &_clun text!bin % % ***ShtCreg % % track that there is a new reg for this shooter % _Aamg.Regings _clun ^"|" &" " & "Venue" sval !Aamg.Regings "New regf for " &_Venue &_clun "Regf" *custmsgd } if % % whether or not a new reg file existence was tracked % stop seeking earlier reg file comparisons % false !Reging pop } if pop |OPstart _Starring { empty !StartFile "_Start" &_Venue &_clun text*bin _StartFile 2 copy ne$ { dup quoter &" !StartFile" &; "_xStart" &_Venue &_clun text!bin second quoter &" !StartFile" &; "_Start" &_Venue &_clun text!bin % % track that there is a startup for this shooter % _Aamg.Startups _clun ^"|" &" " & "Venue" sval !Aamg.Startups "Startup for " &_Venue &_clun "Start" *custmsgd % % ***Start % } if false !Starring pop } if % % process every start, regardless of whether latest or not % the UTC time stamp is used to place session markers % into the Subject directory % "Ashoot" *camropnl { % % stack: cloud-file % pop } { % % stack: cloud-file dest-file % *camropex % % stack: cloud-file dest-file % exch write } ifelse pop |OPdone _Doneing { empty !DoneFile "_Done" &_Venue &_clun text*bin _DoneFile 2 copy ne$ { dup quoter &" !DoneFile" &; "_xDone" &_Venue &_clun text!bin second quoter &" !DoneFile" &; "_Done" &_Venue &_clun text!bin } if false !Doneing pop } if % % process every done, regardless of whether latest or not % the UTC time stamp is used to place session markers % into the Subject directory % "Cdone" *camropsu { % % stack: cloud-file % pop } { % % stack: cloud-file dest-file % *camropex % % stack: cloud-file dest-file % exch write } ifelse pop |OPend _Endring { empty !EndFile "_End" &_Venue &_clun text*bin _EndFile 2 copy ne$ { dup quoter &" !EndFile" &; "_xEnd" &_Venue &_clun text!bin second quoter &" !EndFile" &; "_End" &_Venue &_clun text!bin % % remove the start indication for this shooter % _Aamg.Startups _clun *lookremv !Aamg.Startups } if false !Endring pop } if % % process every end, regardless of whether latest or not % the UTC time stamp is used to place session markers % into the Subject directory % "Dend" *camropnl { % % stack: cloud-file % pop } { % % stack: cloud-file dest-file % *camropex % % stack: cloud-file dest-file % exch write } ifelse pop |OPnew _Newing { empty !NewFile "_New" &_Venue &_clun text*bin _NewFile 2 copy ne$ { dup quoter &" !NewFile" &; "_xNew" &_Venue &_clun text!bin second quoter &" !NewFile" &; "_New" &_Venue &_clun text!bin } if false !Newing pop } if % % process every new, regardless of whether latest or not % the UTC time stamp is used to place session markers % into the Subject directory % "Bnew" *camropsu { % % stack: cloud-file % pop } { % % stack: cloud-file dest-file % *camropex % % stack: cloud-file dest-file % exch write %%% *custinjc % % ***Inject % } ifelse pop |Filed % % must be sure to include all shots listed % we insure that the file is not downloaded repeatedly downstream % _Filring { empty !FileFile "_File" &_Venue &_clun text*bin _FileFile 2 copy ne$ { dup quoter &" !FileFile" &; "_xFile" &_Venue &_clun text!bin second quoter &" !FileFile" &; "_File" &_Venue &_clun text!bin } if false !Filring pop } if % % process every shot, regardless of whether latest or not % add the filed timestamp to the master shooter list % "_Shots_" &_clun text_bin second term2 lookstr? { _Venue quoter &" !Venue" &; & second quoter &" !Filed" &; & "_Shots_" &_clun text!bin } if pop > not { pop } if } loop pop } if false !Clup.Active %%% "&&&&&>>> P" log#