# J

`+Joint`
  Class for bidirectional object relations, a subclass of `+Link`. Expects a (symbolic) attribute, a list of classes as `type` of the referred database object (of class `+Entity`), and two optional functions called when 'put'ting and/or 'get'ting a value. A `+Joint` corresponds to two `+Link`s, where the attribute argument is the relation of the back-link in the referred object. See also Database.

      (class +Ord +Entity)                   # Order class
      (rel pos (+List +Joint) ord (+Pos))    # List of positions in that order
      ...
      (class +Pos +Entity)                   # Position class
      (rel ord (+Joint) pos (+Ord))          # Back-link to the parent order

`(job 'lst . prg) -> any`
  Executes a job within its own environment (as specified by symbol-value pairs in `lst`). The current values of all symbols are saved, the symbols are bound to the values in `lst`, `prg` is executed, then the (possibly modified) symbol values are (destructively) stored in the environment list, and the symbols are restored to their original values. The return value is the result of `prg`. Typically used in `curried` functions and `*Run` tasks. See also `env`, `bind`, `let`, `use` and `state`.

      : (de tst ()
         (job '((A . 0) (B . 0))
            (println (inc 'A) (inc 'B 2)) ) )
      -> tst
      : (tst)
      1 2
      -> 2
      : (tst)
      2 4
      -> 4
      : (tst)
      3 6
      -> 6
      : (pp 'tst)
      (de tst NIL
         (job '((A . 3) (B . 6))
            (println (inc 'A) (inc 'B 2)) ) )
      -> tst

`(journal ['T] 'any ..) -> T`
  Reads journal data from the files with the names `any`, and writes all changes to the database. If the first argument is `T`, the replication journal and transaction logs are disabled. See also `pool`.

      : (journal "db.log")
      -> T