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

  1. * Program............: E:vendors.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:vendors.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. ?? IIF(gl_plain,'',gd_date) AT 0,;
  139.  IIF(gl_plain,'' , "PAGE " ) AT 71,;
  140.  IIF(gl_plain,'',_pageno) PICTURE "999" 
  141. ?
  142. ?
  143. ?
  144. RETURN
  145. * EOP: Pghead
  146.  
  147. PROCEDURE Rintro
  148. ?
  149. DEFINE BOX FROM 27 TO 56 HEIGHT 4 DOUBLE
  150. ?
  151. ?? "A-T FURNITURE INDUSTRIES" STYLE "B" AT 30
  152. ?
  153. ?? "VENDOR REPORT" STYLE "B" AT 35
  154. ?
  155. ?
  156. ?
  157. ?? ;
  158. "══════════════════════════════════════════════════════════════════════";
  159. + "═════════";
  160. AT 0
  161. ?
  162. RETURN
  163. * EOP: Rintro
  164.  
  165. PROCEDURE __Detail
  166. IF 8 * gn_pspace < gn_atline - (_pspacing * 3 + 1)
  167.    IF gl_widow .AND. _plineno+8 * gn_pspace > gn_atline + 1
  168.       EJECT PAGE
  169.    ENDIF
  170. ENDIF
  171. DO Upd_Vars
  172. ?
  173. ?? "VENDOR I.D.: " STYLE "BU" AT 0,;
  174.  Vendor_id FUNCTION "T" STYLE "BU" 
  175. ?
  176. ?? Vendor FUNCTION "T" AT 0
  177. ?
  178. ?? Address1 FUNCTION "T" AT 0,;
  179.  " " ,;
  180.  Address2 FUNCTION "T" 
  181. ?
  182. ?? City FUNCTION "T" AT 0,;
  183.  ", " ,;
  184.  State FUNCTION "T" ,;
  185.  " " ,;
  186.  Zip FUNCTION "T" 
  187. ?
  188. ?? "CONTACT: " AT 0,;
  189.  Contact FUNCTION "T" ,;
  190.  Phone FUNCTION "T" PICTURE "(XXX)XXX-XXXX" AT 50,;
  191.  "EXT. " AT 64,;
  192.  Phone_ext FUNCTION "T" 
  193. ?
  194. ?? "TERMS: " AT 0,;
  195.  Terms FUNCTION "T" ,;
  196.  "DISCOUNT: " AT 23,;
  197.  Discount PICTURE "99" ,;
  198.  " %" 
  199. ?
  200. ?? ;
  201. "──────────────────────────────────────────────────────────────────────";
  202. + "─────────";
  203. AT 0
  204. ?
  205. RETURN
  206. * EOP: __Detail
  207.  
  208. PROCEDURE Rsumm
  209. ?
  210. ?? ;
  211. "══════════════════════════════════════════════════════════════════════";
  212. + "═════════";
  213. AT 0
  214. ?
  215. ?? "TOTAL NUMBER OF VENDORS: " AT 0,;
  216.  r_msum1 PICTURE "999" 
  217. ?
  218. ?? ;
  219. "══════════════════════════════════════════════════════════════════════";
  220. + "═════════";
  221. AT 0
  222. gl_fandl=.F.        && last page finished
  223. ?
  224. RETURN
  225. * EOP: Rsumm
  226.  
  227. PROCEDURE Pgfoot
  228. PRIVATE _box, _pspacing
  229. gl_widow=.F.         && disable widow checking
  230. _pspacing=1
  231. ?
  232. IF .NOT. gl_plain
  233.    _pspacing=gn_pspace
  234.    ?? "PREPARED BY SALES DEPARTMENT" AT 28
  235. ENDIF
  236. EJECT PAGE
  237. *-- is the page number greater than the ending page
  238. IF _pageno > _pepage
  239.    GOTO BOTTOM
  240.    SKIP
  241.    gn_level=0
  242. ENDIF
  243. IF .NOT. gl_plain .AND. gl_fandl
  244.    _pspacing=gn_pspace
  245.    DO Pghead
  246. ENDIF
  247. RETURN
  248. * EOP: Pgfoot
  249.  
  250. *-- Process page break when PLAIN option is used.
  251. PROCEDURE Pgplain
  252. PRIVATE _box
  253. EJECT PAGE
  254. RETURN
  255. * EOP: Pgplain
  256.  
  257. *-- Reset dBASE environment prior to calling report
  258. PROCEDURE Reset
  259. SET SPACE &gc_space.
  260. SET TALK &gc_talk.
  261. ON ESCAPE
  262. ON PAGE
  263. RETURN
  264. * EOP: Reset
  265.  
  266.