case: procedure; declare cu_$af_arg_ptr entry (fixed bin, ptr, fixed bin (24), fixed bin (35)); declare arg_ptr ptr, arg_length fixed bin (24), code fixed bin (35), argument char (arg_length) based (arg_ptr); declare return_ptr ptr, return_length fixed bin (24), return_argument char (return_length) varying based (return_ptr) declare cu_$af_return_arg entry (fixed bin, ptr, fixed bin (24), fixed bin (35)); declare n_args fixed bin; declare active_fnc_err_ entry options (variable); call cu_$af_return_arg (n_args, return_ptr, return_length, code); if code ^= 0 then do; call active_fnc_err_ (code, "case", "Usage: [case val case-1 case-2 ...]"); return; end; call cu_$af_arg_ptr (1, arg_ptr, arg_length, code); if argument = "true" then n_args = 2; else n_args = 3; call cu_$af_arg_ptr (n_args, arg_ptr, arg_length, code); return_argument = argument; return; end case;