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

  1. * Program............: E:employee.FRG
  2. * Date...............: 3-10-92
  3. * Versions...........: dBASE IV, Report 1.5
  4. *
  5. * Notes:
  6. * ------
  7. * Prior to running this procedure with the DO command
  8. * it is necessary use LOCATE because the CONTINUE
  9. * statement is in the main loop.
  10. *
  11. *-- Parameters
  12. PARAMETERS gl_noeject, gl_plain, gl_summary, gc_heading, gc_extra
  13. ** The first three parameters are of type Logical.
  14. ** The fourth parameter is a string.  The fifth is extra.
  15. PRIVATE _peject, _wrap
  16.  
  17. *-- Test for no records found
  18. IF EOF() .OR. .NOT. FOUND()
  19.    RETURN
  20. ENDIF
  21.  
  22. *-- turn word wrap mode off
  23. _wrap=.F.
  24.  
  25. IF _plength < (_pspacing * 3 + 1) + (_pspacing + 1) + 2
  26.    SET DEVICE TO SCREEN
  27.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  28.    ACTIVATE WINDOW gw_report
  29.    @ 0,1 SAY "Increase the page length for this report."
  30.    @ 2,1 SAY "Press any key ..."
  31.    x=INKEY(0)
  32.    DEACTIVATE WINDOW gw_report
  33.    RELEASE WINDOW gw_report
  34.    RETURN
  35. ENDIF
  36.  
  37. _plineno=0          && set lines to zero
  38. *-- NOEJECT parameter
  39. IF gl_noeject
  40.    IF _peject="BEFORE"
  41.       _peject="NONE"
  42.    ENDIF
  43.    IF _peject="BOTH"
  44.       _peject="AFTER"
  45.    ENDIF
  46. ENDIF
  47.  
  48. *-- Set-up environment
  49. ON ESCAPE DO Prnabort
  50. IF SET("TALK")="ON"
  51.    SET TALK OFF
  52.    gc_talk="ON"
  53. ELSE
  54.    gc_talk="OFF"
  55. ENDIF
  56. gc_space=SET("SPACE")
  57. SET SPACE OFF
  58. gc_time=TIME()      && system time for predefined field
  59. gd_date=DATE()      && system date  "    "    "     "
  60. gl_fandl=.F.        && first and last page flag
  61. gl_prntflg=.T.      && Continue printing flag
  62. gl_widow=.T.        && flag for checking widow bands
  63. gn_length=LEN(gc_heading)  && store length of the HEADING
  64. gn_level=2          && current band being processed
  65. gn_page=_pageno     && grab current page number
  66. gn_pspace=_pspacing && get current print spacing
  67.  
  68.  
  69. *-- Set up procedure for page break
  70. gn_atline=_plength - (_pspacing + 1)
  71. ON PAGE AT LINE gn_atline EJECT PAGE
  72.  
  73. *-- Print Report
  74.  
  75. PRINTJOB
  76.  
  77. *-- Initialize summary variables.
  78. r_msum1=0
  79.  
  80. IF gl_plain
  81.    ON PAGE AT LINE gn_atline DO Pgplain
  82. ELSE
  83.    ON PAGE AT LINE gn_atline DO Pgfoot
  84. ENDIF
  85.  
  86. DO Pghead
  87.  
  88. gl_fandl=.T.        && first physical page started
  89.  
  90. DO Rintro
  91.  
  92. *-- File Loop
  93. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  94.    gn_level=0
  95.    *-- Detail lines
  96.    IF gl_summary
  97.       DO Upd_Vars
  98.    ELSE
  99.       DO __Detail
  100.    ENDIF
  101.    gl_widow=.T.         && enable widow checking
  102.    CONTINUE
  103. ENDDO
  104.  
  105. IF gl_prntflg
  106.    DO Rsumm
  107.    IF _plineno <= gn_atline
  108.       EJECT PAGE
  109.    ENDIF
  110. ELSE
  111.    DO Rsumm
  112.    DO Reset
  113.    RETURN
  114. ENDIF
  115.  
  116. ON PAGE
  117.  
  118. ENDPRINTJOB
  119.  
  120. DO Reset
  121. RETURN
  122. * EOP: E:employee.FRG
  123.  
  124. *-- Update summary fields and/or calculated fields.
  125. PROCEDURE Upd_Vars
  126. *-- Count
  127. r_msum1=r_msum1+1
  128. RETURN
  129. * EOP: Upd_Vars
  130.  
  131. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  132. PROCEDURE Prnabort
  133. gl_prntflg=.F.
  134. RETURN
  135. * EOP: Prnabort
  136.  
  137. PROCEDURE Pghead
  138. PRIVATE ll_heading, ln_width
  139. ll_heading = .T.
  140. ln_width = _rmargin - _lmargin
  141. ?
  142. *-- Print HEADING parameter - if it doesn't fit on line one
  143. *-- Value added to gn_length is the last column on line one times two
  144. IF .NOT. gl_plain .AND. gn_length + 158 > ln_width
  145.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width))
  146.    ?
  147.    ll_heading = .F.
  148. ENDIF
  149.  
  150. ?? IIF(gl_plain,'',gd_date) AT 0,;
  151.  IIF(gl_plain,'' , "PAGE " ) AT 70,;
  152.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  153.  
  154. *-- Print HEADING parameter - if it fits on line one
  155. IF .NOT. gl_plain .AND. gn_length > 0 .AND. ll_heading
  156.    ?? " "
  157.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width-(_pcolno*2)))
  158. ENDIF
  159. ?
  160. ?
  161. RETURN
  162. * EOP: Pghead
  163.  
  164. PROCEDURE Rintro
  165. DEFINE BOX FROM 23 TO 51 HEIGHT 4 DOUBLE
  166. ?
  167. ?? "A-T FURNITURE INDUSTRIES" AT 26
  168. ?
  169. ?? "EMPLOYEE REPORT" AT 30
  170. ?
  171. ?
  172. ?
  173. ?? ;
  174. "══════════════════════════════════════════════════════════════════════";
  175. + "══════════";
  176. AT 0
  177. ?
  178. RETURN
  179. * EOP: Rintro
  180.  
  181. PROCEDURE __Detail
  182. IF 11 * gn_pspace < gn_atline - (_pspacing * 3 + 1)
  183.    IF gl_widow .AND. _plineno+11 * gn_pspace > gn_atline + 1
  184.       EJECT PAGE
  185.    ENDIF
  186. ENDIF
  187. DO Upd_Vars
  188. ?
  189. ?? Lastname FUNCTION "T" AT 0,;
  190.  ", " ,;
  191.  Firstname FUNCTION "T" ,;
  192.  " " ,;
  193.  Initial FUNCTION "T" ,;
  194.  "." ,;
  195.  "ID:" AT 38,;
  196.  Emp_id FUNCTION "T" AT 42,
  197. ?? Phone FUNCTION "T" AT 57
  198. ?
  199. ?? Address1 FUNCTION "T" AT 0,;
  200.  " " ,;
  201.  Address2 FUNCTION "T" 
  202. ?
  203. ?? City FUNCTION "T" AT 0,;
  204.  ", " ,;
  205.  State FUNCTION "T" ,;
  206.  " " ,;
  207.  Zip FUNCTION "T" 
  208. ?
  209. ?? "DEPARTMENT:" AT 5,;
  210.  Department FUNCTION "T" AT 17,;
  211.  "SALARY:  $" AT 57,;
  212.  Salary PICTURE "99,999.99" AT 71
  213. ?
  214. ?? Title FUNCTION "T" AT 17,;
  215.  Specialty FUNCTION "T" AT 38,;
  216.  "COMMISSION RATE:  " AT 57,;
  217.  Rate PICTURE "99.9" ,;
  218.  "%" 
  219. ?
  220. ?? "DATE HIRED: " AT 5,;
  221.  Date_hired ,;
  222.  "DEGREE:" AT 38,;
  223.  Degree FUNCTION "T" AT 46,;
  224.  "YEARS EXPERIENCE: " AT 57,;
  225.  Yrs_exper PICTURE "99.9" 
  226. ?
  227. ?? "EXEMPT: " AT 5,;
  228.  Exempt PICTURE "Y" ,;
  229.  "FULLTIME:" AT 38,;
  230.  Full_time PICTURE "Y" AT 50
  231. ?
  232. ?? "AWARDS: " AT 5,;
  233.  Awards FUNCTION "T" ,;
  234.  "LABORGRADE:" AT 38,;
  235.  Laborgrade PICTURE "9" AT 50
  236. ?
  237. ?? "COMMENTS: " AT 5,;
  238.  Comments FUNCTION "T" 
  239. ?
  240. ?? ;
  241. "──────────────────────────────────────────────────────────────────────";
  242. + "──────────";
  243. AT 0
  244. ?
  245. RETURN
  246. * EOP: __Detail
  247.  
  248. PROCEDURE Rsumm
  249. ?
  250. ?
  251. ?? ;
  252. "──────────────────────────────────────────────────────────────────────";
  253. + "──────────";
  254. AT 0
  255. ?
  256. ?? "NUMBER OF EMPLOYEES:" AT 0,;
  257.  r_msum1 PICTURE "99,999" AT 21
  258. ?
  259. ?? ;
  260. "──────────────────────────────────────────────────────────────────────";
  261. + "──────────";
  262. AT 0
  263. gl_fandl=.F.        && last page finished
  264. ?
  265. RETURN
  266. * EOP: Rsumm
  267.  
  268. PROCEDURE Pgfoot
  269. PRIVATE _box, _pspacing
  270. gl_widow=.F.         && disable widow checking
  271. _pspacing=1
  272. ?
  273. IF .NOT. gl_plain
  274.    _pspacing=gn_pspace
  275. ENDIF
  276. EJECT PAGE
  277. *-- is the page number greater than the ending page
  278. IF _pageno > _pepage
  279.    GOTO BOTTOM
  280.    SKIP
  281.    gn_level=0
  282. ENDIF
  283. IF .NOT. gl_plain .AND. gl_fandl
  284.    _pspacing=gn_pspace
  285.    DO Pghead
  286. ENDIF
  287. RETURN
  288. * EOP: Pgfoot
  289.  
  290. *-- Process page break when PLAIN option is used.
  291. PROCEDURE Pgplain
  292. PRIVATE _box
  293. EJECT PAGE
  294. RETURN
  295. * EOP: Pgplain
  296.  
  297. *-- Reset dBASE environment prior to calling report
  298. PROCEDURE Reset
  299. SET SPACE &gc_space.
  300. SET TALK &gc_talk.
  301. ON ESCAPE
  302. ON PAGE
  303. RETURN
  304. * EOP: Reset
  305.  
  306.