nx_trust.nx source
↩ module page · 44 lines · 1918 B
1// nx_trust.nx -- Nishi Office trust accounting (F506) CLI/MCP organ: self-verifying demo.
2// IOLTA / RPC 1.15: no-commingling, no-overdraw (refused), three-way reconciliation.
3// license_tier: ORIGINAL
4
5import "nx_trust_lib.nx"
6const K_MAGIC_100000: i64 = 100000
7const K_MAGIC_50000: i64 = 50000
8const K_MAGIC_30000: i64 = 30000
9const K_MAGIC_70000: i64 = 70000
10const K_MAGIC_200000: i64 = 200000
11const K_MAGIC_120000: i64 = 120000
12
13func main() -> i64 {
14 let p: *u8 = "/tmp/nx_trust_demo-" as *u8
15 trust_put(p, "ClientA" as *u8, 0, "M1" as *u8, "deposit" as *u8, K_MAGIC_100000)
16 trust_put(p, "ClientB" as *u8, 0, "M2" as *u8, "deposit" as *u8, K_MAGIC_50000)
17 trust_put(p, "ClientA" as *u8, 1, "M1" as *u8, "disburse" as *u8, K_MAGIC_30000)
18 let a: i64 = trust_balance(p, "ClientA" as *u8)
19 if a != K_MAGIC_70000 { return __syscall(93, 81, 0, 0, 0, 0, 0) }
20 let b: i64 = trust_balance(p, "ClientB" as *u8)
21 if b != K_MAGIC_50000 { return __syscall(93, 82, 0, 0, 0, 0, 0) }
22 if trust_disburse_ok(p, "ClientA" as *u8, K_MAGIC_200000) != 0 { return __syscall(93, 83, 0, 0, 0, 0, 0) }
23 let total: i64 = a + b
24 if total != K_MAGIC_120000 { return __syscall(93, 84, 0, 0, 0, 0, 0) }
25 let da: *u8 = sys_mmap(32)
26 tr_dollars(a, da)
27 let db: *u8 = sys_mmap(32)
28 tr_dollars(b, db)
29 let dt: *u8 = sys_mmap(32)
30 tr_dollars(total, dt)
31 let out: *u8 = sys_mmap(512)
32 var o: i64 = 0
33 o = mt_catcopy(out, o, "NISHI-TRUST OK clients=2 ClientA=" as *u8)
34 o = mt_catcopy(out, o, da)
35 o = mt_catcopy(out, o, " ClientB=" as *u8)
36 o = mt_catcopy(out, o, db)
37 o = mt_catcopy(out, o, " account-total=" as *u8)
38 o = mt_catcopy(out, o, dt)
39 o = mt_catcopy(out, o, " no-commingling overdraw($2000.00)=REFUSED three-way(ledgers-sum==account-total)=OK" as *u8)
40 out[o] = 10 as u8
41 o = o + 1
42 sys_write(1, out, o)
43 return __syscall(93, 0, 0, 0, 0, 0, 0)
44}