Patch title: Release 94 bulk changes
Abstract:
File: /pliant/appli/cluster/common.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/language/compiler.pli"
module "/pliant/appli/database.pli"
module "/pliant/storage/database/database.pli"
module "/pliant/admin/file.pli"
module "/pliant/admin/md5.pli"
module "filter.pli"
module "database.pli"



function cluster_filter area category err -> fun
  arg Data:ClusterArea area ; arg Str category ; arg_w Str e
  err := ""
  if category="time"
    fun :> the_function no_time_filter CBool CBool
  eif category="post"
    fun :> the_function no_post_process Data:ClusterArea
  eif category="src_file" or category="dest_file"
    fun :> the_function no_file_filter Str Str Str Int -> In
  eif category="src_data" or category="dest_data"
    fun :> the_function no_data_filter Data_ Str Str Str Int
  else
    fun :> null map Function
  var Str text := shunt category="time" area:time_filter cat
  if text=""
    return
  var Str id := keyof:area+" "+category
  sem request
  fun :> (formula first id) map Function
  if exists:fun and ((fun:properties first "text") map Str)<
    formula remove id addressof:fun
    fun :> null map Function
  if exists:fun
    sem release
    return
  pliant_compiler_semaphore request
  var Str name := "cluster formula "+id
  var Link:List program :> new List
  each m area:module
    program append addressof:(new Str "module "+string:m)
  if category="time"
    program append addressof:(new Str "function '"+name+"' s
    program append addressof:(new Str "  arg_w CBool start_f
    program append addressof:(new Str "  start_flag := true"
    program append addressof:(new Str "  run_flag := true")
    program append addressof:(new Str "  implicit datetime")
  eif category="post"
    program append addressof:(new Str "module [dq]/pliant/ap
    program append addressof:(new Str "function '"+name+"' a
    program append addressof:(new Str "  arg_rw Data:Cluster
    program append addressof:(new Str "  implicit area")
  eif category="src_file" or category="dest_file"
    program append addressof:(new Str "function '"+name+"' p
    program append addressof:(new Str "  arg Str path source
    program append addressof:(new Str "  mode := base")
    program append addressof:(new Str "  if true")
  eif category="src_data" or category="dest_data"
    program append addressof:(new Str "function '"+name+"' d
    program append addressof:(new Str "  arg Data_ data ; ar
    program append addressof:(new Str "  mode := base")
    program append addressof:(new Str "  implicit data")
  var Str lines := text
  while lines<>""
    if not (lines eparse any:(var Str line) "[lf]" any:(var 
      line := lines ; remain := ""
    program append addressof:(new Str "    "+line)
    lines := remain
  var Link:Module module :> new Module
  module name := "clustering formula"
  module include the_module:"/pliant/language/basic/safe.pli
module "/pliant/admin/file.pli"
module "/pliant/admin/md5.pli"
module "filter.pli"
module "database.pli"



function cluster_filter area category err -> fun
  arg Data:ClusterArea area ; arg Str category ; arg_w Str e
  err := ""
  if category="time"
    fun :> the_function no_time_filter CBool CBool
  eif category="post"
    fun :> the_function no_post_process Data:ClusterArea
  eif category="src_file" or category="dest_file"
    fun :> the_function no_file_filter Str Str Str Int -> In
  eif category="src_data" or category="dest_data"
    fun :> the_function no_data_filter Data_ Str Str Str Int
  else
    fun :> null map Function
  var Str text := shunt category="time" area:time_filter cat
  if text=""
    return
  var Str id := keyof:area+" "+category
  sem request
  fun :> (formula first id) map Function
  if exists:fun and ((fun:properties first "text") map Str)<
    formula remove id addressof:fun
    fun :> null map Function
  if exists:fun
    sem release
    return
  pliant_compiler_semaphore request
  var Str name := "cluster formula "+id
  var Link:List program :> new List
  each m area:module
    program append addressof:(new Str "module "+string:m)
  if category="time"
    program append addressof:(new Str "function '"+name+"' s
    program append addressof:(new Str "  arg_w CBool start_f
    program append addressof:(new Str "  start_flag := true"
    program append addressof:(new Str "  run_flag := true")
    program append addressof:(new Str "  implicit datetime")
  eif category="post"
    program append addressof:(new Str "module [dq]/pliant/ap
    program append addressof:(new Str "function '"+name+"' a
    program append addressof:(new Str "  arg_rw Data:Cluster
    program append addressof:(new Str "  implicit area")
  eif category="src_file" or category="dest_file"
    program append addressof:(new Str "function '"+name+"' p
    program append addressof:(new Str "  arg Str path source
    program append addressof:(new Str "  mode := base")
    program append addressof:(new Str "  if true")
  eif category="src_data" or category="dest_data"
    program append addressof:(new Str "function '"+name+"' d
    program append addressof:(new Str "  arg Data_ data ; ar
    program append addressof:(new Str "  mode := base")
    program append addressof:(new Str "  implicit data")
  var Str lines := text
  while lines<>""
    if not (lines eparse any:(var Str line) "[lf]" any:(var 
      line := lines ; remain := ""
    program append addressof:(new Str "    "+line)
    lines := remain
  var Link:Module module :> new Module
  module name := "clustering formula"
  module include the_module:"/pliant/language/basic/safe.pli
  module include the_module:"/pliant/appli/database/prototyp
  module include the_module:"/pliant/storage/database/prototype.pli"
  module include the_module:"/pliant/appli/cluster/filter.pl
  error_push_record (var ErrorRecord e) error_filter_all
  compile_text program module
  if e:id=error_id_noerror
    fun :> (pliant_general_dictionary first name) map Functi
    fun:properties insert "text" true addressof:(new Str tex
    pliant_general_dictionary remove name addressof:fun
    formula insert id true addressof:fun
  else
    fun :> null map Function
    err := e message
    e id := error_id_noerror
  error_pull_record e
  pliant_compiler_semaphore release
  sem release

export data_sign file_sign
export cluster_filter
  module include the_module:"/pliant/appli/cluster/filter.pl
  error_push_record (var ErrorRecord e) error_filter_all
  compile_text program module
  if e:id=error_id_noerror
    fun :> (pliant_general_dictionary first name) map Functi
    fun:properties insert "text" true addressof:(new Str tex
    pliant_general_dictionary remove name addressof:fun
    formula insert id true addressof:fun
  else
    fun :> null map Function
    err := e message
    e id := error_id_noerror
  error_pull_record e
  pliant_compiler_semaphore release
  sem release

export data_sign file_sign
export cluster_filter