The Orders Program orders.4gl 
 Much of the functionality is identical to that in earlier Tutorial examples. The
  query/add/delete/update of the orders table would be the same as the examples in
  Chapter 4 and Chapter 6. Only append and query are included in this program, for simplicity. The
  add/delete/update of the items table is similar to that in Chapter 8. The
  complete orders program is outlined, with examples of any new
  functionality.
The MAIN program block  The MAIN program block contains the menu for the             orders program.Function setup_actions  This function is used by the main menu to enable or disable actions based on the         context.Function order_new  This function handles the input of an order record.Function order_insert  This function inserts a new record in the orders database         table.Function order_query  This function allows the user to enter query criteria for the orders         table. It calls the function order_select to retrieve the rows from the         database table.Function order_fetch  This function retrieves the row from the orders table, and is         designed to be reused each time a row is needed. If the retrieval of the row from the             orders table is successful, the function items_fetch         is called to retrieve the corresponding rows from the items         table.Function order_select  This function creates the SQL statement for the query and the corresponding cursor to         retrieve the rows from the orders table. It calls the function             fetch_order.Function order_fetch_rel  This function calls the function order_fetch to retrieve the rows in         the database; the parameter p_fetch_flag indicates the direction for the         cursor movement. If there are no more records to be retrieved, a message is displayed to the         user.Function order_total  This function calculates the total price for all of the items contained on a single         order.Function order_close  This function closes the cursor used to select orders from the database.Function items_fetch  This function retrieves the rows from the items table that match the         value of order_num in the order currently displayed on the form. The             description and unit values are retrieved from the             stock table, using the column stock_num. The value             for line_total is calculated and retrieved. After displaying the items         on the form, the function order_total is called to calculate the total         price of all the items for the current order.Function items_show  This function displays the line items for the order in the screen array and returns         immediately.Function items_inpupd  This function contains the program logic to allow the user to input a new row in the             arr_items array, or to change or delete an existing row.Function items_line_total  This function calculates the value of line_total for any new rows         that are inserted into the arr_items array.Function item_insert  This function inserts a new row into the  items database table using         the values input in the current array record on the form.Function item_update  This function updates a row in the items database table using the         changes made to the current array record in the form.Function item_delete  This function deletes a row from the items database table, based on         the values in the current record of the items array.Function get_stock_info  This function verifies that the stock number entered for a new row in the             arr_items array exists in the stock table. It         retrieves the description, unit of measure, and the correct price based on whether         promotional pricing is in effect for the order.