home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a031 / samples.exe / EMPLOYEE.PRG < prev    next >
Encoding:
Text File  |  1992-03-10  |  10.6 KB  |  316 lines

  1. ******************************************************************************
  2. * PROGRAM NAME: EMPLOYEE.PRG
  3. *               EMPLOYEE DATABASE SCREEN
  4. *               SAMPLE BUSINESS APPLICATION PROGRAM
  5. * LAST CHANGED: 09/25/89 09:26AM
  6. * WRITTEN BY:   Borland International Inc.
  7. ******************************************************************************
  8. *
  9. *       FILES USED:
  10. *       Database        = Employee.dbf  (Employee personnel file)
  11. *       Index file      = Employee.mdx
  12. *           TAG: Names  = lastname+firstname+initial  <= Master index
  13. *           TAG: Dept   = department+lastname+firstname+initial
  14. *           TAG: Status = department+STR(salary,8,2)
  15. *           TAG: Years  = STR(yrs_exper,4,1)
  16. *           TAG: Emp_id = emp_id
  17. *       External procedure file used = Library.prg
  18. ******************************************************************************
  19.  
  20. * Main procedure
  21. PROCEDURE Employee
  22.  
  23.    * Link to external procedure file of "tool" procedures
  24.    SET PROCEDURE TO Library
  25.  
  26.    * Set up database environment
  27.    DO Set_env
  28.  
  29.    SET COLOR TO &c_standard.
  30.  
  31.    * Declare variables used:
  32.    * Database memory variables
  33.    STORE ""  TO lastname, firstname, initial, address1, address2, city, state
  34.    STORE ""  TO zip, phone, emp_id, specialty, degree, awards, comments
  35.    STORE ""  TO department, title
  36.    STORE  0  TO laborgrade, yrs_exper, salary, rate
  37.    STORE .T. TO exempt, full_time
  38.    date_hired = {  /  /  }
  39.  
  40.    * Miscellaneous variables - used to pass parameters to Library
  41.    STORE "EMPLOYEE" TO dbf,mlist    && Standard report and mail list available
  42.    STORE "" TO cust_rpt             && Custom report(s) are available
  43.    key      = "m->lastname+m->firstname"
  44.    key1     = "m->lastname"
  45.    key2     = "m->firstname"
  46.    key3     = "NONE"
  47.    keyname1 = "Lastname:"
  48.    keyname2 = "Firstname:"
  49.    keyname3 = ""
  50.    list_flds  = "LASTNAME, FIRSTNAME, DEPARTMENT, PHONE"
  51.  
  52.    * Open database files and choose active indexes
  53.    SELECT 1
  54.    USE Employee ORDER Names
  55.    GO TOP
  56.    * Used for area code lookup
  57.    USE Codes ORDER City IN 2
  58.  
  59.    * Load initial record from database into memory variables
  60.    record_num = RECNO()
  61.    DO Load_fld
  62.  
  63.    * Show data screen
  64.    SET COLOR TO &c_standard.
  65.    CLEAR
  66.    DO Dstatus
  67.    DO Backgrnd
  68.    DO Show_data
  69.  
  70.    * Define popup menus
  71.    DO Bar_def
  72.  
  73.    * Activate main popup menu - execute user choices
  74.    SET COLOR TO &c_popup.
  75.    ACTIVATE POPUP main_mnu
  76.    DO Sub_ret
  77.    *
  78. RETURN
  79. *========================= end of main procedure =============================
  80.  
  81. *  UTILITY PROCEDURES (Proprietary to Employee.prg)
  82.  
  83. PROCEDURE Filter
  84.   * Filter (group) data into subset
  85.   * Select subset to set up filter condition (Y=turn on, N=abort selection,
  86.   * T=turn off). If filter is already on, set default choice to T, show 
  87.   * window. If filter is not on, set default choice to Y, show window.
  88.   choice = IIF(filters_on,"T","Y")
  89.   DO Filt_ans
  90.   IF choice = "Y"
  91.     * Start process of choosing filter condition
  92.     STORE SPACE(15) TO department, title
  93.     STORE SPACE(11) TO specialty
  94.     STORE SPACE(3)  TO degree
  95.     ACTIVATE WINDOW alert
  96.        @   0,0 SAY "--------- ENTER FILTER CONDITION --------"
  97.        @   1,1 SAY "DEPARTMENT: " GET m->department FUNCTION "!"
  98.        @   2,1 SAY "TITLE       " GET m->title      FUNCTION "!"
  99.        @   3,1 SAY "SPECIALTY   " GET m->specialty  FUNCTION "!"
  100.        @   4,1 SAY "DEGREE      " GET m->degree     FUNCTION "!"
  101.        @   5,1 SAY "Enter one or more conditions"
  102.        READ
  103.     DEACTIVATE WINDOW alert
  104.     * Initialize filter variable to null (empty)
  105.     subset = ""
  106.     * Process user's entries to build filter condition
  107.     subset = subset + IIF("" <> TRIM(m->department), ;
  108.        [department = TRIM("&department.") .AND.], "")
  109.     subset = subset + IIF("" <> TRIM(m->title), ;
  110.        [title = TRIM("&title.") .AND.], "")
  111.     subset = subset + IIF("" <> TRIM(m->specialty), ;
  112.        [specialty = TRIM("&specialty.") .AND.], "")
  113.     subset = subset + IIF("" <> TRIM(m->degree), ;
  114.        [degree = TRIM("°ree.") .AND.], "")
  115.     *
  116.     * Check whether data entered into subset string
  117.     IF "" = TRIM(subset)
  118.        DO Warnbell
  119.        filters_on = .F.
  120.     ELSE
  121.        * If string is not empty, truncate the .AND. from end of subset string
  122.        subset = SUBSTR(subset,1,LEN(subset)-6)
  123.        * Filter on entered filter string condition
  124.        SET FILTER TO &subset.
  125.        * Activate filter by moving record pointer
  126.        GO TOP
  127.        * Check whether filter condition matches any records (no match=EOF)
  128.        filters_on = .NOT. EOF()
  129.        IF .NOT. filters_on
  130.           * Turn off filter if no matching records found
  131.           DO Warnbell
  132.           DO Show_msg WITH "No Employee records match the filter condition"
  133.           SET FILTER TO
  134.           GO record_num
  135.        ENDIF
  136.     ENDIF
  137.   ELSE
  138.     * If user selects "T", turn off filter
  139.     SET FILTER TO
  140.     filters_on = .F.
  141.   ENDIF
  142. RETURN
  143.  
  144. PROCEDURE Indexer
  145.    * Create/rebuild indexes
  146.    INDEX ON department+lastname+firstname+initial TAG Dept
  147.    INDEX ON department+STR(salary,8,2)            TAG Status
  148.    INDEX ON STR(yrs_exper,4,1)                    TAG Years
  149.    INDEX ON emp_id                                TAG Emp_id
  150.    INDEX ON lastname+firstname+initial            TAG Names
  151.    GO TOP
  152. RETURN
  153.  
  154. PROCEDURE Init_fld
  155.     * Initialize memory variable values for data entry
  156.     initial    = " "
  157.     STORE SPACE(20) TO address1, address2
  158.     STORE SPACE(10) TO firstname, zip
  159.     STORE SPACE(15) TO lastname, department, title, awards
  160.     STORE SPACE(11) TO emp_id, specialty
  161.     STORE 0 TO laborgrade, yrs_exper, salary, rate
  162.     STORE .T. TO exempt, full_time
  163.     city       = SPACE(14)
  164.     state      = SPACE(2)
  165.     phone      = SPACE(13)
  166.     degree     = SPACE(3)
  167.     comments   = SPACE(40)
  168.     date_hired = {  /  /  }
  169. RETURN
  170.  
  171. PROCEDURE Load_fld
  172.    * Load field values from Employee database record into memory variables
  173.    lastname   = lastname
  174.    firstname  = firstname
  175.    initial    = initial
  176.    emp_id     = emp_id
  177.    address1   = address1
  178.    address2   = address2
  179.    city       = city
  180.    state      = state
  181.    zip        = zip
  182.    phone      = phone
  183.    department = department
  184.    title      = title
  185.    laborgrade = laborgrade
  186.    exempt     = exempt
  187.    full_time  = full_time
  188.    date_hired = date_hired
  189.    specialty  = specialty
  190.    yrs_exper  = yrs_exper
  191.    degree     = degree
  192.    salary     = salary
  193.    rate       = rate
  194.    awards     = awards
  195.    comments   = comments
  196. RETURN
  197.  
  198. PROCEDURE Repl_fld
  199.    * Replace database fields with values of current memory variables
  200.    REPLACE emp_id WITH m->emp_id, lastname WITH m->lastname, ;
  201.            firstname WITH m->firstname, initial WITH m->initial, ;
  202.            address1 WITH m->address1, address2 WITH m->address2, ;
  203.            city  WITH m->city, state WITH m->state, zip WITH m->zip, ;
  204.            phone WITH m->phone, department WITH m->department
  205.    REPLACE title WITH m->title, laborgrade WITH m->laborgrade, ;
  206.            exempt WITH m->exempt, full_time WITH m->full_time, ;
  207.            date_hired WITH m->date_hired, specialty WITH m->specialty, ;
  208.            yrs_exper WITH m->yrs_exper, degree WITH m->degree, ;
  209.            salary WITH m->salary, rate WITH m->rate, ;
  210.            awards WITH m->awards, comments WITH m->comments
  211. RETURN
  212.  
  213. PROCEDURE Backgrnd
  214.    * Display background screen
  215.    * Draw and fill in boxes
  216.    @  1,18 TO   3,41 DOUBLE COLOR &c_blue.
  217.    @  4, 1 TO   6,56 DOUBLE COLOR &c_red.
  218.    @  2,19 FILL TO  2,40    COLOR &c_blue.
  219.    @  4, 2 FILL TO 21,55    COLOR &c_red.
  220.    @ 11, 1 TO  11,56        COLOR &c_red.
  221.    @  7, 1 TO  22,56        COLOR &c_red.
  222.    SET COLOR TO &c_data.
  223.    @  2,20 SAY "EMPLOYEE  DATABASE"
  224.    @  5, 3 SAY "LAST NAME:"
  225.    @  5,32 SAY "FIRST:"
  226.    @  5,53 SAY "."
  227.    @  8, 3 SAY "ADDRESS:"
  228.    @  9, 3 SAY "CITY:"
  229.    @  9,32 SAY "STATE:"
  230.    @ 10, 3 SAY "ZIP:"
  231.    @ 10,32 SAY "PHONE:"
  232.    @ 12, 3 SAY "DEPARTMENT:"
  233.    @ 12,32 SAY "TITLE:"
  234.    @ 13,32 SAY "SPECIALTY:"
  235.    @ 14, 3 SAY "EMPLOYEE NO:"
  236.    @ 14,32 SAY "HIRE DATE:"
  237.    @ 15,32 SAY "FULL TIME:"
  238.    @ 16,32 SAY "EXEMPT:"
  239.    @ 17,32 SAY "LABOR GRADE:"
  240.    @ 18, 3 SAY "SALARY: $"
  241.    @ 18,32 SAY "COMMISSION RATE:"
  242.    @ 18,54 SAY "%"
  243.    @ 19, 3 SAY "DEGREE:"
  244.    @ 19,32 SAY "YEARS EXPERIENCE:"
  245.    @ 20, 3 SAY "AWARDS:"
  246.    @ 21, 3 SAY "COMMENTS:"
  247.    SET COLOR TO &c_standard.
  248. RETURN
  249.  
  250. PROCEDURE Show_data
  251.    * Display data
  252.    SET COLOR TO &c_fields.
  253.    @  5,14 SAY lastname
  254.    @  5,39 SAY firstname
  255.    @  5,52 SAY initial
  256.    @  8,12 SAY address1
  257.    @  8,34 SAY address2
  258.    @  9,12 SAY city
  259.    @  9,39 SAY state
  260.    @ 10,12 SAY zip
  261.    @ 10,39 SAY phone
  262.    @ 12,16 SAY department
  263.    @ 12,39 SAY title
  264.    @ 13,43 SAY specialty
  265.    @ 14,16 SAY emp_id
  266.    @ 14,43 SAY date_hired
  267.    @ 15,43 SAY full_time  PICTURE  "Y"
  268.    @ 16,43 SAY exempt     PICTURE  "Y"
  269.    @ 17,45 SAY laborgrade PICTURE  "9"
  270.    @ 18,14 SAY salary     PICTURE  "999,999.99"
  271.    @ 18,50 SAY rate       PICTURE  "99.9"
  272.    @ 19,14 SAY degree
  273.    @ 19,50 SAY yrs_exper  PICTURE  "99.9"
  274.    @ 20,14 SAY awards
  275.    @ 21,14 SAY comments
  276.    SET COLOR TO &c_standard.
  277.    ON KEY LABEL F9 DO Findcode WITH m->city
  278. RETURN
  279.  
  280. PROCEDURE Get_data
  281.    * Display data for entry
  282.    SET COLOR TO &c_data.
  283.    @  5,14 GET m->lastname   PICTURE "!XXXXXXXXXXXXXX" ;
  284.            MESSAGE "Enter employee last name"
  285.    @  5,39 GET m->firstname  PICTURE "!XXXXXXXXX"
  286.    @  5,52 GET m->initial    PICTURE "!"
  287.    @  8,12 GET m->address1
  288.    @  8,34 GET m->address2
  289.    @  9,12 GET m->city       PICTURE "!XXXXXXXXXXXXX"
  290.    @  9,39 GET m->state      PICTURE "!!"
  291.    @ 10,12 GET m->zip
  292.    @ 10,39 GET m->phone      PICTURE  "(999)999-9999"
  293.    @ 12,16 GET m->department PICTURE "@M SALES, EXECUTIVE" ;
  294.            MESSAGE "Press spacebar for Department options"
  295.    @ 12,39 GET m->title      FUNCTION "!"
  296.    @ 13,43 GET m->specialty  FUNCTION "!"
  297.    @ 14,16 GET m->emp_id     PICTURE  "999-99-9999"
  298.    @ 14,43 GET m->date_hired FUNCTION "D"
  299.    @ 15,43 GET m->full_time  PICTURE  "Y" ;
  300.            WHEN TRIM(m->department) <> "EXECUTIVE"
  301.    @ 16,43 GET m->exempt     PICTURE  "Y" ;
  302.            WHEN TRIM(m->department) <> "EXECUTIVE"
  303.    @ 17,45 GET m->laborgrade PICTURE  "9"
  304.    @ 18,14 GET m->salary     PICTURE  "999,999.99"
  305.    @ 18,50 GET m->rate       PICTURE  "99.9" ;
  306.            WHEN TRIM(m->department) <> "EXECUTIVE"
  307.    @ 19,14 GET m->degree     PICTURE  "!!!"
  308.    @ 19,50 GET m->yrs_exper  PICTURE  "99.9"
  309.    @ 20,14 GET m->awards     FUNCTION "!"
  310.    @ 21,14 GET m->comments
  311.    SET COLOR TO &c_standard.
  312.    ON KEY LABEL F9 DO Findcode WITH m->city
  313. RETURN
  314.  
  315. **********************************  END OF EMPLOYEE.PRG  *********************
  316.