home *** CD-ROM | disk | FTP | other *** search
/ DOS Wares / doswares.zip / doswares / DATABASE / DBASE5 / SAMPLES.ZIP / CODES.FRG < prev    next >
Encoding:
Text File  |  1994-06-24  |  5.0 KB  |  249 lines

  1. * Program............: codes.FRG
  2. * Date...............: 6-22-94
  3. * Versions...........: dBASE 5.0, Report
  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, ll_heading, ll_temp, ll_toprint
  16. ll_heading = .F.
  17. ll_toprint = (SET("PRINTER") = "ON")
  18.  
  19. *-- Test for no records found
  20. IF EOF() .OR. .NOT. FOUND()
  21.    RETURN
  22. ENDIF
  23.  
  24. *-- turn word wrap mode off
  25. _wrap=.F.
  26.  
  27. IF _plength < (_pspacing * 4 + 1) + (_pspacing * 2 + 1) + 2
  28.    SET DEVICE TO SCREEN
  29.    DEFINE WINDOW gw_report FROM 7,17 TO 11,62 DOUBLE
  30.    ACTIVATE WINDOW gw_report
  31.    @ 0,1 SAY "Increase the page length for this report."
  32.    @ 2,1 SAY "Press any key ..."
  33.    x=INKEY(0)
  34.    DEACTIVATE WINDOW gw_report
  35.    RELEASE WINDOW gw_report
  36.    RETURN
  37. ENDIF
  38.  
  39. _plineno=0          && set lines to zero
  40. *-- NOEJECT parameter
  41. IF gl_noeject
  42.    IF _peject="BEFORE"
  43.       _peject="NONE"
  44.    ENDIF
  45.    IF _peject="BOTH"
  46.       _peject="AFTER"
  47.    ENDIF
  48. ENDIF
  49.  
  50. *-- Set-up environment
  51. ON ESCAPE DO Prnabort
  52. IF SET("TALK")="ON"
  53.    SET TALK OFF
  54.    gc_talk="ON"
  55. ELSE
  56.    gc_talk="OFF"
  57. ENDIF
  58. gc_space=SET("SPACE")
  59. SET SPACE OFF
  60. gc_time=TIME()      && system time for predefined field
  61. gd_date=DATE()      && system date  "    "    "     "
  62. gl_fandl=.F.        && first and last page flag
  63. gl_prntflg=.T.      && Continue printing flag
  64. gl_widow=.T.        && flag for checking widow bands
  65. gn_length=LEN(gc_heading)  && store length of the HEADING
  66. gn_level=2          && current band being processed
  67. gn_page=_pageno     && grab current page number
  68. gn_pspace=_pspacing && get current print spacing
  69.  
  70.  
  71. *-- Set up procedure for page break
  72. gn_atline=_plength - (_pspacing * 2 + 1)
  73. ON PAGE AT LINE gn_atline EJECT PAGE
  74.  
  75. *-- Print Report
  76.  
  77. PRINTJOB
  78.  
  79. IF gl_plain
  80.    ON PAGE AT LINE gn_atline DO Pgplain
  81. ELSE
  82.    ON PAGE AT LINE gn_atline DO Pgfoot
  83. ENDIF
  84.  
  85. DO Pghead
  86.  
  87. gl_fandl=.T.        && first physical page started
  88.  
  89. DO Rintro
  90.  
  91. *-- File Loop
  92. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  93.    gn_level=0
  94.    *-- Detail lines
  95.    IF gl_summary
  96.       DO Upd_Vars
  97.    ELSE
  98.       DO __Detail
  99.    ENDIF
  100.    gl_widow=.T.         && enable widow checking
  101.    CONTINUE
  102. ENDDO
  103.  
  104. IF gl_prntflg
  105.    DO Rsumm
  106.    IF _plineno <= gn_atline
  107.       EJECT PAGE
  108.    ENDIF
  109. ELSE
  110.    DO Rsumm
  111.    DO Reset
  112.    RETURN
  113. ENDIF
  114.  
  115. ON PAGE
  116.  
  117. ENDPRINTJOB
  118.  
  119. DO Reset
  120. RETURN
  121. * EOP: codes.FRG
  122.  
  123. *-- Update summary fields and/or calculated fields.
  124. PROCEDURE Upd_Vars
  125. RETURN
  126. * EOP: Upd_Vars
  127.  
  128. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  129. PROCEDURE Prnabort
  130. gl_prntflg=.F.
  131. RETURN
  132. * EOP: Prnabort
  133.  
  134. PROCEDURE Pghead
  135. PRIVATE ll_heading, ln_width
  136. ll_heading = .T.
  137. ln_width = _rmargin - _lmargin
  138. ?
  139. *-- Print HEADING parameter - if it doesn't fit on line one
  140. *-- Value added to gn_length is the last column on line one times two
  141. IF .NOT. gl_plain .AND. gn_length + 158 > ln_width
  142.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width))
  143.    ?
  144.    ll_heading = .F.
  145. ENDIF
  146.  
  147. ?? IIF(gl_plain,'',gd_date) AT 0,;
  148.  IIF(gl_plain,'' , "PAGE " ) AT 70,;
  149.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  150.  
  151. *-- Print HEADING parameter - if it fits on line one
  152. IF .NOT. gl_plain .AND. gn_length > 0 .AND. ll_heading
  153.    ?? " "
  154.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width-(_pcolno*2)))
  155. ENDIF
  156. ?
  157. ?
  158. ?
  159. RETURN
  160. * EOP: Pghead
  161.  
  162. PROCEDURE Rintro
  163. ?
  164. DEFINE BOX FROM 26 TO 55 HEIGHT 4 DOUBLE
  165. ?
  166. ?? "A-T FURNITURE INDUSTRIES" AT 29
  167. ?
  168. ?? "AREACODE REPORT" AT 33
  169. ?
  170. ?
  171. ?
  172. ?? ;
  173. "══════════════════════════════════════════════════════════════════════";
  174. + "══════════";
  175. AT 0
  176. ?
  177. ?? "CITY" AT 0,;
  178.  "CODE" AT 37
  179. ?
  180. ?? ;
  181. "══════════════════════════════════════════════════════════════════════";
  182. + "══════════";
  183. AT 0
  184. ?
  185. RETURN
  186. * EOP: Rintro
  187.  
  188. PROCEDURE __Detail
  189. IF 3 * gn_pspace < gn_atline - (_pspacing * 4 + 1)
  190.    IF gl_widow .AND. _plineno+3 * gn_pspace > gn_atline + 1
  191.       EJECT PAGE
  192.    ENDIF
  193. ENDIF
  194. DO Upd_Vars
  195. ?? City FUNCTION "T" AT 0,;
  196.  Code PICTURE "999" AT 37
  197. ?
  198. ?
  199. ?
  200. RETURN
  201. * EOP: __Detail
  202.  
  203. PROCEDURE Rsumm
  204. gl_fandl=.F.        && last page finished
  205. ?
  206. RETURN
  207. * EOP: Rsumm
  208.  
  209. PROCEDURE Pgfoot
  210. PRIVATE _box, _pspacing
  211. gl_widow=.F.         && disable widow checking
  212. _pspacing=1
  213. ?
  214. IF .NOT. gl_plain
  215.    _pspacing=gn_pspace
  216.    ?
  217.    ?? "PREPARED BY HUMAN RESOURCES DEPARTMENT" AT 23
  218. ENDIF
  219. EJECT PAGE
  220. *-- is the page number greater than the ending page
  221. IF _pageno > _pepage
  222.    GOTO BOTTOM
  223.    SKIP
  224.    gn_level=0
  225. ENDIF
  226. IF .NOT. gl_plain .AND. gl_fandl
  227.    _pspacing=gn_pspace
  228.    DO Pghead
  229. ENDIF
  230. RETURN
  231. * EOP: Pgfoot
  232.  
  233. *-- Process page break when PLAIN option is used.
  234. PROCEDURE Pgplain
  235. PRIVATE _box
  236. EJECT PAGE
  237. RETURN
  238. * EOP: Pgplain
  239.  
  240. *-- Reset dBASE environment prior to calling report
  241. PROCEDURE Reset
  242. SET SPACE &gc_space.
  243. SET TALK &gc_talk.
  244. ON ESCAPE
  245. ON PAGE
  246. RETURN
  247. * EOP: Reset
  248.  
  249.