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

  1. * Program............: E:codes.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 * 4 + 1) + (_pspacing * 2 + 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 * 2 + 1)
  71. ON PAGE AT LINE gn_atline EJECT PAGE
  72.  
  73. *-- Print Report
  74.  
  75. PRINTJOB
  76.  
  77. IF gl_plain
  78.    ON PAGE AT LINE gn_atline DO Pgplain
  79. ELSE
  80.    ON PAGE AT LINE gn_atline DO Pgfoot
  81. ENDIF
  82.  
  83. DO Pghead
  84.  
  85. gl_fandl=.T.        && first physical page started
  86.  
  87. DO Rintro
  88.  
  89. *-- File Loop
  90. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  91.    gn_level=0
  92.    *-- Detail lines
  93.    IF gl_summary
  94.       DO Upd_Vars
  95.    ELSE
  96.       DO __Detail
  97.    ENDIF
  98.    gl_widow=.T.         && enable widow checking
  99.    CONTINUE
  100. ENDDO
  101.  
  102. IF gl_prntflg
  103.    DO Rsumm
  104.    IF _plineno <= gn_atline
  105.       EJECT PAGE
  106.    ENDIF
  107. ELSE
  108.    DO Rsumm
  109.    DO Reset
  110.    RETURN
  111. ENDIF
  112.  
  113. ON PAGE
  114.  
  115. ENDPRINTJOB
  116.  
  117. DO Reset
  118. RETURN
  119. * EOP: E:codes.FRG
  120.  
  121. *-- Update summary fields and/or calculated fields.
  122. PROCEDURE Upd_Vars
  123. RETURN
  124. * EOP: Upd_Vars
  125.  
  126. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  127. PROCEDURE Prnabort
  128. gl_prntflg=.F.
  129. RETURN
  130. * EOP: Prnabort
  131.  
  132. PROCEDURE Pghead
  133. PRIVATE ll_heading, ln_width
  134. ll_heading = .T.
  135. ln_width = _rmargin - _lmargin
  136. ?
  137. *-- Print HEADING parameter - if it doesn't fit on line one
  138. *-- Value added to gn_length is the last column on line one times two
  139. IF .NOT. gl_plain .AND. gn_length + 158 > ln_width
  140.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width))
  141.    ?
  142.    ll_heading = .F.
  143. ENDIF
  144.  
  145. ?? IIF(gl_plain,'',gd_date) AT 0,;
  146.  IIF(gl_plain,'' , "PAGE " ) AT 70,;
  147.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  148.  
  149. *-- Print HEADING parameter - if it fits on line one
  150. IF .NOT. gl_plain .AND. gn_length > 0 .AND. ll_heading
  151.    ?? " "
  152.    ?? gc_heading FUNCTION "I;V"+LTRIM(STR(ln_width-(_pcolno*2)))
  153. ENDIF
  154. ?
  155. ?
  156. ?
  157. RETURN
  158. * EOP: Pghead
  159.  
  160. PROCEDURE Rintro
  161. ?
  162. DEFINE BOX FROM 26 TO 55 HEIGHT 4 DOUBLE
  163. ?
  164. ?? "A-T FURNITURE INDUSTRIES" AT 29
  165. ?
  166. ?? "AREACODE REPORT" AT 33
  167. ?
  168. ?
  169. ?
  170. ?? ;
  171. "══════════════════════════════════════════════════════════════════════";
  172. + "══════════";
  173. AT 0
  174. ?
  175. ?? "CITY" AT 0,;
  176.  "CODE" AT 37
  177. ?
  178. ?? ;
  179. "══════════════════════════════════════════════════════════════════════";
  180. + "══════════";
  181. AT 0
  182. ?
  183. RETURN
  184. * EOP: Rintro
  185.  
  186. PROCEDURE __Detail
  187. IF 3 * gn_pspace < gn_atline - (_pspacing * 4 + 1)
  188.    IF gl_widow .AND. _plineno+3 * gn_pspace > gn_atline + 1
  189.       EJECT PAGE
  190.    ENDIF
  191. ENDIF
  192. DO Upd_Vars
  193. ?? City FUNCTION "T" AT 0,;
  194.  Code PICTURE "999" AT 37
  195. ?
  196. ?
  197. ?
  198. RETURN
  199. * EOP: __Detail
  200.  
  201. PROCEDURE Rsumm
  202. gl_fandl=.F.        && last page finished
  203. ?
  204. RETURN
  205. * EOP: Rsumm
  206.  
  207. PROCEDURE Pgfoot
  208. PRIVATE _box, _pspacing
  209. gl_widow=.F.         && disable widow checking
  210. _pspacing=1
  211. ?
  212. IF .NOT. gl_plain
  213.    _pspacing=gn_pspace
  214.    ?
  215.    ?? "PREPARED BY HUMAN RESOURCES DEPARTMENT" AT 23
  216. ENDIF
  217. EJECT PAGE
  218. *-- is the page number greater than the ending page
  219. IF _pageno > _pepage
  220.    GOTO BOTTOM
  221.    SKIP
  222.    gn_level=0
  223. ENDIF
  224. IF .NOT. gl_plain .AND. gl_fandl
  225.    _pspacing=gn_pspace
  226.    DO Pghead
  227. ENDIF
  228. RETURN
  229. * EOP: Pgfoot
  230.  
  231. *-- Process page break when PLAIN option is used.
  232. PROCEDURE Pgplain
  233. PRIVATE _box
  234. EJECT PAGE
  235. RETURN
  236. * EOP: Pgplain
  237.  
  238. *-- Reset dBASE environment prior to calling report
  239. PROCEDURE Reset
  240. SET SPACE &gc_space.
  241. SET TALK &gc_talk.
  242. ON ESCAPE
  243. ON PAGE
  244. RETURN
  245. * EOP: Reset
  246.  
  247.