home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / MAKEPAT.ZIP / MAKEPAT.PRG < prev   
Encoding:
Text File  |  1987-09-23  |  4.1 KB  |  215 lines

  1. ****  Author:  John Charles Agusta
  2. ****  Date  :  9/22/87
  3. ****
  4. ****  Copyright by John Charles Agusta 1987
  5. ****  NOT for resale under any circumstances without written permission
  6. ****  from the author
  7. ****
  8. ****  Program MakePat.prg
  9. ****
  10. ****
  11. ****  Purpose:  Utility to edit/create printer tables
  12. ****
  13.  
  14. Private MPrnt
  15.  
  16. Clear
  17.  
  18. MPrnt = Space(8)
  19.  
  20. @ 1,00 Say 'Enter printer table:  ' Get MPrnt Valid DOSFName2(MPrnt)
  21. @ 1,31 Say '.PAT'
  22. Read
  23.  
  24. If LastKey() = 27 .or. Empty(MPrnt)
  25.    Return
  26. Endif
  27.  
  28. MPrnt = Trim(MPrnt)
  29.  
  30. @ 1,0
  31. @ 1,0 Say 'Active printer table:  &MPrnt..PAT'
  32.  
  33. If File('&MPrnt..pat')
  34.  
  35.    Restore from &MPrnt..Pat Additive
  36.    
  37.    Str_Reset = SpaceFill(VtoS(Pat_Reset), 60)
  38.    Str_Comp  = SpaceFill(VtoS(Pat_Comp), 60)
  39.    Str_UOn   = SpaceFill(VtoS(Pat_UOn), 60)
  40.    Str_UOff  = SpaceFill(VtoS(Pat_UOff), 60)
  41.    Str_BOn   = SpaceFill(VtoS(Pat_BOn), 60)
  42.    Str_BOff  = SpaceFill(VtoS(Pat_BOff), 60)
  43.    Str_66LPP = SpaceFill(VtoS(Pat_66LPP), 60)
  44.    Int_LPP   = Pat_LPP
  45.  
  46. Else
  47.  
  48.    Store Space(60) to Str_Reset, Str_Comp, Str_UOn, Str_UOff, Str_BOn, Str_BOff, Str_66LPP
  49.    Int_LPP = 66
  50.  
  51. Endif
  52.  
  53. @ 03,00 Say 'PRINTER FEATURE'
  54. @ 03,20 Say 'SETUP STRING'
  55.  
  56. @ 04,00 Say 'Reset'
  57. @ 04,20 Get Str_Reset
  58.  
  59. @ 05,00 Say 'Compressed'
  60. @ 05,20 Get Str_Comp
  61.  
  62. @ 06,00 Say 'Underline On'
  63. @ 06,20 Get Str_UOn
  64.  
  65. @ 07,00 Say 'Underline Off'
  66. @ 07,20 Get Str_UOff
  67.  
  68. @ 08,00 Say 'Bold On'
  69. @ 08,20 Get Str_BOn
  70.  
  71. @ 09,00 Say 'Bold Off'
  72. @ 09,20 Get Str_BOff
  73.  
  74. @ 10,00 Say '66 lines/page'
  75. @ 10,20 Get Str_66LPP
  76.  
  77. @ 11,00 Say 'Lines per page'
  78. @ 11,20 Get Int_LPP Picture '99'
  79.  
  80. @ 13,0
  81.  
  82. Text
  83. Press <Esc> to abort                         <PgDn> to save
  84.  
  85. Enter printer codes for associated printer features, up to 60 characters.
  86.  
  87. You may enter any printable characters as is.  Special printer codes should
  88. be entered in the form \nnn, a backslash followed by a 3-digit decimal number.
  89. If your printer does not support an above feature, leave the field blank.
  90.  
  91. Ex.  \015             Epson compressed
  92.      \027E            Epson emphasized on
  93.      \027(s16.66H     Hewlett-Packard LaserJet compressed
  94. EndText
  95.  
  96. Read
  97.  
  98. If LastKey() = 27
  99.    Return
  100. Endif
  101.  
  102. Pat_Reset = StoV(Str_Reset)
  103. Pat_Comp  = StoV(Str_Comp)
  104. Pat_UOn   = StoV(Str_UOn)
  105. Pat_UOff  = StoV(Str_UOff)
  106. Pat_BOn   = StoV(Str_BOn)
  107. Pat_BOff  = StoV(Str_BOff)
  108. Pat_66LPP = StoV(Str_66LPP)
  109. Pat_LPP   = Int_LPP
  110.  
  111. Save All Like Pat_* to &MPrnt..Pat
  112.  
  113. Return
  114.  
  115. Function DOSFname2
  116.  
  117. Parameter FName
  118.  
  119. Private Kntr
  120.  
  121. If Empty(FName)
  122.    Return .T.
  123. Endif
  124.  
  125. For Kntr = 1 to Len(Trim(FName))
  126.  
  127.     If Substr(FName,Kntr,1) $ ' ."/\[]:|<>+=;,'    && Invalid file name
  128.        Return .F.
  129.     Endif
  130.  
  131. Next Kntr
  132.  
  133. Return .T.
  134.  
  135.  
  136. Function VtoS  && Printer Setup Variable to Printer String
  137.  
  138. Parameter PVar
  139.  
  140. Private PStr, Knt
  141.  
  142. PStr = ''
  143. Knt = 1
  144.  
  145. Do While Knt <=  Len(Trim(PVar))
  146.  
  147.     If Asc(Substr(PVar, Knt,1)) < 32
  148.        PStr = PStr + '\' + IIf(Asc(Substr(PVar, Knt,1)) <= 99, '0', '') + LTrim(Str(Asc(Substr(PVar, Knt,1))))
  149.     Else
  150.        PStr = PStr + Substr(PVar, Knt,1)
  151.     Endif
  152.  
  153.     Knt  = Knt + 1
  154.  
  155. Enddo
  156.  
  157. Return PStr
  158.  
  159. *EOF VtoS
  160.  
  161.  
  162.  
  163. Function StoV  && Printer Setup String to Printer Setup Variable
  164.  
  165. Parameter PStr
  166.  
  167. Private PVar, Knt
  168.  
  169. PVar = ''
  170.  
  171. If At('\', PStr) = 0
  172.    Return Trim(PStr)
  173. Endif
  174.  
  175.  
  176. Knt = 1
  177.  
  178. Do While Knt <= Len(Trim(PStr))
  179.  
  180.     If Substr(PStr, Knt,1) = '\'
  181.        PVar = PVar + Chr(Val(Substr(PStr, Knt + 1,3)))
  182.        Knt = Knt + 4
  183.     Else
  184.        PVar = PVar + Substr(PStr, Knt,1)
  185.        Knt = Knt + 1
  186.     Endif
  187.  
  188. Enddo
  189.  
  190. Return PVar
  191.  
  192. *EOF StoV
  193.  
  194.  
  195. **    SPACEFILL    - Space fills a source string.
  196. **
  197. **    format:    dest = spacefill(src, len)
  198. **
  199. **        dest (C)    - Destination string.
  200. **        src  (C)    - Source string to be space filled.
  201. **        len  (N)    - Length of string after space fill.
  202. **
  203. **    Examples:                            Output
  204. **
  205. **    spacefill("ABC",5)                    "ABC  "
  206. **    spacefill("ABC",1)                    "A"
  207. **
  208. **    Note:    This routine will truncate a string which is longer than len.
  209. **
  210. function spacefill
  211. parameter cl_str,cl_ln
  212. return substr(cl_str+space(cl_ln),1,cl_ln)
  213. **
  214. **    SPACEFILL    - End of function.
  215.