++- Selene                                                 ** Veronica

transact = sender receiver amount ->                       (@ transact sender receiver amount +-
  + alarm ->                                                   (\ alarm >
    - sql-series (                                                 (# sql-series (@ +-
                   - debit   <                                         (# debit   (%
                               cid : sender                                           cid sender
                               sum : amount                                           sum amount
                             >,                                                   )
                     credit  <                                         )
                               cid : receiver                          (# credit  (%
                               sum : amount                                           cid receiver
                             >,                                                       sum amount
                     journal <                                                    )
                               opcode : JR_TRANSFER                    )
                               cid-1  : sender                         (# journal (%
                               cid-2  : receiver                                      opcode JR_TRANSFER
                               amount : _                                             cid-1  sender
                             >                                                        cid-2  receiver
                 )                                                                    amount _
  + ec, error >                                                                   )
    log error; handle ec                                               )
  ;                                                                )
                                                               + ec error >
  task-name = 'transact ' receiver                                 (log error)
              ' < ' sender ' (' amount ')'                         (# handle ec)
                                                               )
  if alarm ->                                                  (& 'transact ' receiver
    log LOG_SPACES task-name                                      ' < ' sender ' (' amount ')' .task-name)
  else                                                         ([alarm] >
    log LOG_EXCLAMATION task-name                                  (log LOG_SPACES task-name)
  ;                                                            >
_                                                                  (log LOG_EXCLAMATION task-name)
  sender, receiver : integer                                   )
  amount : float                                           +
;                                                              {integer} sender receiver
                                                               {float} amount
                                                           )
