SECTION III: Control Logic and Decision Structures This section details how AVAP manages execution flow. The language uses explicitly closed block structures that enable clear sequential reading, simplifying the debugging of complex APIs. 3.1 The Conditional Block (if / else / end) The if structure in AVAP is a versatile tool that allows atomic comparisons or the evaluation of complex logical expressions processed by the dynamic evaluation engine. Standard Interface if(variable_A, value_B, operator) Available Operators Operator Description Example = Strict equality (or numeric equivalence). if(role, "admin", "=") != Inequality. if(status, 200, "!=") > / < Numeric magnitude comparison. if(age, 18, ">") in Checks whether an element belongs to a list or string. if(user, blacklist, "in") Complex Expression Evaluation AVAP allows omission of comparison parameters to evaluate a complete logical expression directly in the third parameter. Example: if(None, None, "age >= 18 and balance > 100") Block Closure Structure An if block may include an optional else() block and must always terminate with the end() command. 3.2 Iterations and Loops (startLoop / endLoop) For collection processing (such as database rows or parameter lists), AVAP implements an index-controlled loop structure. Interface startLoop(counter, start, end) Execution Mechanics Initialization: The engine creates the counter variable with the start value. Increment: On each iteration, the counter automatically increases by 1. Exit Condition: The loop terminates when the counter exceeds the end value. Practical Example: List Processing // Retrieve the length of a list captured in Section II getListLen(received_items, total) startLoop(i, 0, total) current_item = received_items[i] // Processing logic for each item... endLoop() 3.3 Error Handling and Robustness (try / exception) AVAP is designed for production environments where external failures (database timeouts, third-party API outages) are expected realities. The try block allows capturing such events without stopping the server. Interface try ... exception(error_variable) ... end() Technical Operation try Block: The engine attempts to execute the contained instructions. If a critical failure occurs, execution of that block stops immediately. exception Block: If an error is detected, control passes to this block. The error_variable is automatically populated with a string describing the failure (simplified stack trace). end() Block: Closes the structure and allows the script to continue normal execution after error handling. Connector Safety Example try // Attempt a query to an external connector (Section V) result = db.query("SELECT * FROM payments") exception(failure_detail) // If it fails, log the error and notify addVar(_status, 500) addVar(message, "Persistence error: %s" % failure_detail) addResult(message) end() 3.4 Early Exit Control (return) The return() command is a control instruction that immediately terminates execution of the current context (either a function or the main script). If used inside a function, it returns control (and optionally a value) to the caller. If used in the main flow, it terminates API execution and triggers automatic delivery of the JSON response constructed up to that point. Examples 1. Simple Comparison Code snippet addParam("lang", l) if(l, "es", "=") addVar(msg, "Hello") end() addResult(msg) 2. Standard Else Code snippet if(balance, 0, ">") allow = True else() allow = False end() addResult(allow) 3. Complex Expression (Dynamic Evaluation) Code snippet if(None, None, "user_type == 'VIP' or purchases > 100") addVar(discount, 0.20) end() addResult(discount) 4. Loop from 1 to 10 (ID Generation) Code snippet startLoop(i, 1, 10) AddvariableToJSON("item_${i}", "generated_value", my_json) endLoop() addResult(my_json) 5. HTTP Request Try-Catch Code snippet try RequestGet("https://api.test.com/data", 0, 0, response) exception(e) addVar(error_trace, "Connection failure: %s" % e) addResult(error_trace) end() 6. Proper Loop Exit (Using Control Variable) Code snippet found = False startLoop(i, 1, 10) if(i, 5, "==") found = True // In AVAP, to exit you can force the index beyond the limit i = 11 end() endLoop() addResult(found) 7. 'in' Validation (Membership Check) Code snippet addParam("role", r) if(r, ["admin", "editor", "root"], "in") access = True end() addResult(access) 8. Loop Over Data Length Code snippet getListLen(records, total) startLoop(idx, 0, total) current = records[idx] // processing logic endLoop() 9. Inequality If Code snippet if(new_password, old_password, "!=") addVar(change, "Password updated") end() addResult(change) 10. Critical SQL Error Handling Code snippet try ormDirect("UPDATE nonexistent_table SET a=1", res) exception(e) addVar(_status, 500) addResult("Database error") end()