FUNCTION demo()
CALL ring_menu()
MENU "DEMO"
COMMAND "Menus" "Source code for MAIN Menu"
CALL showhelp(2001)
COMMAND "Windows" "Source code for STATE CODE Window"
CALL showhelp(2007)
COMMAND "Forms" "Source code for new CUSTOMER data entry"
CALL showhelp(2006)
COMMAND "Detail-Scrolling" "Source code for scrolling of new ORDER line-items"
CALL showhelp(2003)
COMMAND "Scroll-Cursor" "Source code for customer record BROWSE/SCROLL"
CALL showhelp(2008)
COMMAND "Query_language" "Source code for new order insertion using SQL"
CALL showhelp(2004)
COMMAND "Construct_query"
"Source code for QUERY-BY-EXAMPLE selection and reporting"
CALL showhelp(2002)
COMMAND "Reports" "Source code for MAILING LABEL report"
CALL showhelp(2005)
COMMAND "Exit" "Return to MAIN MENU"
CLEAR SCREEN
EXIT MENU
END MENU
END FUNCTION
FUNCTION print_labels()
DEFINE where_part CHAR(500),
query_text CHAR(500),
msg CHAR(50),
file_name CHAR(20)
OPTIONS
FORM LINE 7
OPEN FORM customer FROM "custform"
DISPLAY FORM customer
ATTRIBUTE(MAGENTA)
CALL fgl_drawbox(3,32,3,42)
CALL fgl_drawbox(3,61,8,7)
CALL fgl_drawbox(11,61,8,7)
CALL clear_menu()
DISPLAY "CUSTOMER LABELS:" AT 1,1
MESSAGE "Use query-by-example to select customer list"
CONSTRUCT BY NAME where_part ON customer.*
IF int_flag THEN
LET int_flag = FALSE
ERROR "Label print request aborted" ATTRIBUTE(RED, REVERSE)
RETURN
END IF
MESSAGE ""
LET query_text = "select * from customer where ", where_part CLIPPED,
" order by zipcode"
PREPARE label_st FROM query_text
DECLARE label_list CURSOR FOR label_st
CASE (print_option)
WHEN "f"
PROMPT " Enter file name for labels >" FOR file_name
IF file_name IS NULL THEN
LET file_name = "labels.out"
END IF
MESSAGE "Printing mailing labels to ", file_name CLIPPED,
" -- Please wait"
START REPORT labels_report TO file_name
WHEN "p"
MESSAGE "Printing mailing labels -- Please wait"
START REPORT labels_report TO PRINTER
WHEN "s"
START REPORT labels_report
CLEAR SCREEN
END CASE
FOREACH label_list INTO p_customer.*
OUTPUT TO REPORT labels_report (p_customer.*)
IF int_flag THEN
LET int_flag = FALSE
EXIT FOREACH
END IF
END FOREACH
FINISH REPORT labels_report
IF int_flag THEN
LET int_flag = FALSE
ERROR "Label printing aborted" ATTRIBUTE (RED, REVERSE)
RETURN
END IF
CLOSE FORM customer
OPTIONS
FORM LINE 3
END FUNCTION
GLOBALS
DEFINE
p_customer RECORD LIKE customer.*,
p_orders RECORD
order_num LIKE orders.order_num,
order_date LIKE orders.order_date,
po_num LIKE orders.po_num,
ship_instruct LIKE orders.ship_instruct
END RECORD,
p_items ARRAY[11] OF RECORD
item_num LIKE items.item_num,
stock_num LIKE items.stock_num,
manu_code LIKE items.manu_code,
description LIKE stock.description,
quantity LIKE items.quantity,
unit_price LIKE stock.unit_price,
total_price LIKE items.total_price
END RECORD,
p_stock ARRAY[31] OF RECORD
stock_num LIKE stock.stock_num,
manu_code LIKE manufact.manu_code,
manu_name LIKE manufact.manu_name,
description LIKE stock.description,
unit_price LIKE stock.unit_price,
unit_descr LIKE stock.unit_descr
END RECORD,
p_state ARRAY[51] OF RECORD LIKE state.*,
state_cnt, stock_cnt INTEGER,
print_option CHAR(1)
END GLOBALS