PRO.h is the control-flow spine of every ABC .c file: macros that thread an ok64 through the call chain so error handling and resource ownership stay separate. A function opens with sane, calls downward with call, and returns with done; a failure propagates by return with no scattered cleanup, because resources are acquired at the top of the chain and released only by their owner. Since the macros pollute the namespace, PRO.h is included by .c files only, never by a public header.
sane declares the hidden ok64 __ carrier and guards arguments. From there call and try invoke downward; the difference is whether a failure returns at once or is captured for inspection.
call(f, …) runs f and returns its code on failure; try(f, …) runs it and leaves the code in __.try, branch with then / nedo / on(code); finish with done (return __) or fail(code).MAIN / TEST / FUZZ; these declare the PRO globals and set up BASS.
Errors are ok64 values: uppercase names encoded in RON base-64, at most ten characters (sixty bits). The encoding makes a code both a small integer and a printable name.
abc/ok64 generates the constant from the name.OK is zero; ok64str prints any code back to its name for traces and logs.
Because call can return from anywhere, a function cannot release in scattered if (failed) cleanup blocks. So whoever acquires releases — and acquisition sits at the top of the chain.
try the worker, free on every exit path.