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

  1. * Program............: vendors.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 * 3 + 1) + (_pspacing + 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 + 1)
  73. ON PAGE AT LINE gn_atline EJECT PAGE
  74.  
  75. *-- Print Report
  76.  
  77. PRINTJOB
  78.  
  79. *-- Initialize summary variables.
  80. r_msum1=0
  81.  
  82. IF gl_plain
  83.    ON PAGE AT LINE gn_atline DO Pgplain
  84. ELSE
  85.    ON PAGE AT LINE gn_atline DO Pgfoot
  86. ENDIF
  87.  
  88. DO Pghead
  89.  
  90. gl_fandl=.T.        && first physical page started
  91.  
  92. DO Rintro
  93.  
  94. *-- File Loop
  95. DO WHILE FOUND() .AND. .NOT. EOF() .AND. gl_prntflg
  96.    gn_level=0
  97.    *-- Detail lines
  98.    IF gl_summary
  99.       DO Upd_Vars
  100.    ELSE
  101.       DO __Detail
  102.    ENDIF
  103.    gl_widow=.T.         && enable widow checking
  104.    CONTINUE
  105. ENDDO
  106.  
  107. IF gl_prntflg
  108.    DO Rsumm
  109.    IF _plineno <= gn_atline
  110.       EJECT PAGE
  111.    ENDIF
  112. ELSE
  113.    DO Rsumm
  114.    DO Reset
  115.    RETURN
  116. ENDIF
  117.  
  118. ON PAGE
  119.  
  120. ENDPRINTJOB
  121.  
  122. DO Reset
  123. RETURN
  124. * EOP: vendors.FRG
  125.  
  126. *-- Update summary fields and/or calculated fields.
  127. PROCEDURE Upd_Vars
  128. *-- Count
  129. r_msum1=r_msum1+1
  130. RETURN
  131. * EOP: Upd_Vars
  132.  
  133. *-- Set flag to get out of DO WHILE loop when escape is pressed.
  134. PROCEDURE Prnabort
  135. gl_prntflg=.F.
  136. RETURN
  137. * EOP: Prnabort
  138.  
  139. PROCEDURE Pghead
  140. ?? IIF(gl_plain,'',gd_date) AT 0,;
  141.  IIF(gl_plain,'' , "PAGE " ) AT 71,;
  142.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  143. ?
  144. ?
  145. ?
  146. RETURN
  147. * EOP: Pghead
  148.  
  149. PROCEDURE Rintro
  150. ?
  151. DEFINE BOX FROM 27 TO 56 HEIGHT 4 DOUBLE
  152. ?
  153. ?? "A-T FURNITURE INDUSTRIES" STYLE "B" AT 30
  154. ?
  155. ?? "VENDOR REPORT" STYLE "B" AT 35
  156. ?
  157. ?
  158. ?
  159. ?? ;
  160. "══════════════════════════════════════════════════════════════════════";
  161. + "═════════";
  162. AT 0
  163. ?
  164. RETURN
  165. * EOP: Rintro
  166.  
  167. PROCEDURE __Detail
  168. IF 8 * gn_pspace < gn_atline - (_pspacing * 3 + 1)
  169.    IF gl_widow .AND. _plineno+8 * gn_pspace > gn_atline + 1
  170.       EJECT PAGE
  171.    ENDIF
  172. ENDIF
  173. DO Upd_Vars
  174. ?
  175. ?? "VENDOR I.D.: " STYLE "BU" AT 0,;
  176.  Vendor_id FUNCTION "T" STYLE "BU" 
  177. ?
  178. ?? Vendor FUNCTION "T" AT 0
  179. ?
  180. ?? Address1 FUNCTION "T" AT 0,;
  181.  " " ,;
  182.  Address2 FUNCTION "T" 
  183. ?
  184. ?? City FUNCTION "T" AT 0,;
  185.  ", " ,;
  186.  State FUNCTION "T" ,;
  187.  " " ,;
  188.  Zip FUNCTION "T" 
  189. ?
  190. ?? "CONTACT: " AT 0,;
  191.  Contact FUNCTION "T" ,;
  192.  Phone FUNCTION "T" PICTURE "(XXX)XXX-XXXX" AT 50,;
  193.  "EXT. " AT 64,;
  194.  Phone_ext FUNCTION "T" 
  195. ?
  196. ?? "TERMS: " AT 0,;
  197.  Terms FUNCTION "T" ,;
  198.  "DISCOUNT: " AT 23,;
  199.  Discount PICTURE "99" ,;
  200.  " %" 
  201. ?
  202. ?? ;
  203. "──────────────────────────────────────────────────────────────────────";
  204. + "─────────";
  205. AT 0
  206. ?
  207. RETURN
  208. * EOP: __Detail
  209.  
  210. PROCEDURE Rsumm
  211. ?
  212. ?? ;
  213. "══════════════════════════════════════════════════════════════════════";
  214. + "═════════";
  215. AT 0
  216. ?
  217. ?? "TOTAL NUMBER OF VENDORS: " AT 0,;
  218.  r_msum1 PICTURE "999" 
  219. ?
  220. ?? ;
  221. "══════════════════════════════════════════════════════════════════════";
  222. + "═════════";
  223. AT 0
  224. gl_fandl=.F.        && last page finished
  225. ?
  226. RETURN
  227. * EOP: Rsumm
  228.  
  229. PROCEDURE Pgfoot
  230. PRIVATE _box, _pspacing
  231. gl_widow=.F.         && disable widow checking
  232. _pspacing=1
  233. ?
  234. IF .NOT. gl_plain
  235.    _pspacing=gn_pspace
  236.    ?? "PREPARED BY SALES DEPARTMENT" AT 28
  237. ENDIF
  238. EJECT PAGE
  239. *-- is the page number greater than the ending page
  240. IF _pageno > _pepage
  241.    GOTO BOTTOM
  242.    SKIP
  243.    gn_level=0
  244. ENDIF
  245. IF .NOT. gl_plain .AND. gl_fandl
  246.    _pspacing=gn_pspace
  247.    DO Pghead
  248. ENDIF
  249. RETURN
  250. * EOP: Pgfoot
  251.  
  252. *-- Process page break when PLAIN option is used.
  253. PROCEDURE Pgplain
  254. PRIVATE _box
  255. EJECT PAGE
  256. RETURN
  257. * EOP: Pgplain
  258.  
  259. *-- Reset dBASE environment prior to calling report
  260. PROCEDURE Reset
  261. SET SPACE &gc_space.
  262. SET TALK &gc_talk.
  263. ON ESCAPE
  264. ON PAGE
  265. RETURN
  266. * EOP: Reset
  267.  
  268.