home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / print / 2upprt / 1up.cmd next >
OS/2 REXX Batch file  |  1993-03-19  |  7KB  |  284 lines

  1. /* V2.3 - Print 1UP on Laser printer in Portrait Mode */
  2. mode=1  /* Change to: 1-for PPDS, 2-for HP, 3-for PostScript */
  3. vrexx=0 /* Change to: 1 to enable VREXX support */
  4. Arg file opt opt1 .
  5. If vrexx Then Call VREXXSET
  6. ft=1
  7. AGAIN:
  8. mg.1='        '
  9. bopt=0
  10. If file=''|file='?' Then Signal TELL
  11. opt=Translate(opt)
  12. opt1=Translate(opt1)
  13. If opt1='B' Then Signal BADOPT
  14. If opt='B' Then Do
  15.  bopt=1
  16.  opt=opt1
  17. End
  18. If opt\=''&opt\='N'&opt\='A'&opt\='F'&opt\='H' Then Signal BADOPT
  19. If opt='A'&mode=3 Then Signal BADOPT
  20. If mode=1 Then Do
  21.  q=X2C(1B5B4B0300063101)
  22.  prn='LPT1:'  /* Printer    */
  23.  If bopt Then Do
  24.   cpl=91      /* Char/Line  */
  25.   lpp=79      /* Lines/Page */
  26.   qq=X2C(1B3A1B41061B301B5B53080000003B0000143BF6)
  27.  End
  28.  Else Do
  29.   cpl=132     /* Char/Line  */
  30.   lpp=121     /* Lines/Page */
  31.   qq=X2C(0F1B41061B321B5B53080000003B0000143BF6)
  32.  End
  33. End
  34. If mode=2 Then Do
  35.  q=X2C(1B45)
  36.  prn='LPT2:'  /* Printer    */
  37.  If bopt Then Do
  38.   cpl=76      /* Char/Line  */
  39.   lpp=78      /* Lines/Page */
  40.   qq=X2C(1B451B266C31451B287330541B283130551B28733130481B266C3844)
  41.  End
  42.  Else Do
  43.   cpl=129     /* Char/Line  */
  44.   lpp=78      /* Lines/Page */
  45.   qq=X2C(1B451B266C31451B287330541B283130551B287331362E36481B266C3844)
  46.  End
  47. End
  48. If mode=3 Then Do
  49.  prn='LPT3:'  /* Printer    */
  50.  If bopt Then cpl=104
  51.  Else cpl=133 /* Char/Line  */
  52. End
  53. If opt=''|opt='N' Then Do
  54.  ql=copies('═',cpl+2)
  55.  tl='╔'||ql||'╗'
  56.  bl='╚'||ql||'╝'
  57. End
  58. If (opt='A'|opt='H'|opt='F')&mode\=3 Then Do
  59.  cpl=cpl+4
  60.  lpp=lpp+1
  61.  If (opt='A'|opt='H') Then lpp=lpp+2
  62.  tl=copies('═',cpl)
  63. End
  64. x=1
  65. no=1
  66. pg=0
  67. sw=0
  68. swl=0
  69. np=D2C(12)
  70. tab=D2C(9)
  71. If mode=3 Then Call SETUP
  72. Else Do
  73.  Call charout prn,qq
  74.  Call HDR
  75. End
  76. Do Forever
  77.  If lines(file)<1 Then Signal FIN
  78.  ln=linein(file)
  79.  If opt='A'&mode\=3 Then Do
  80.   lns=substr(ln,1,1)
  81.   ln=substr(ln,2,cpl)
  82.  End
  83.  If substr(ln,1,1)=np Then ln=substr(ln,2)
  84.  ln=translate(ln,' ',np)
  85.  ln=translate(ln,' ',tab)
  86.  If ln=''&swl=1 Then sw=1
  87.  If sw=0|opt='A' Then Do
  88.   If opt='N' Then ln=right(no,3)||' '||ln
  89.   If length(ln)<=cpl Then Do
  90.    l.x=ln
  91.    Call CPG
  92.   End
  93.   Else Do
  94.    l.x=substr(ln,1,cpl)
  95.    Call CPG
  96.    x=x+1
  97.    If opt='N' Then l.x='    '||substr(ln,cpl+1,cpl-4)
  98.    Else l.x=substr(ln,cpl+1,cpl)
  99.    Call CPG
  100.   End
  101.   swl=0
  102.   no=no+1
  103.   x=x+1
  104.  End
  105.  If ln='' Then swl=1
  106.  sw=0
  107. End
  108. FIN:
  109. If mode=3 Then Call Out 'lastp'
  110. Else Do
  111.  Call PPG
  112.  Call charout prn,q
  113. End
  114. Call stream file,'C','close'
  115. If vrexx Then Call Vexit
  116. Exit
  117. CPG:
  118. If mode=3 Then Do
  119.  lp=''
  120.  Do i=1 to length(l.x)
  121.   If substr(l.x,i,1)='(' Then lp=lp||'\'
  122.   If substr(l.x,i,1)=')' Then lp=lp||'\'
  123.   lp=lp||substr(l.x,i,1)
  124.   If substr(l.x,i,1)='\' Then lp=lp||'\'
  125.  End
  126.  lp='('||lp||') show lf'
  127.  Call Out lp
  128.  Return
  129. End
  130. If opt='A'&(lns='0'|lns='-'|lns='1') Then Do
  131.  sv=l.x
  132.  l.x=' '
  133.  Call CPG1
  134.  If lns='1' Then Do
  135.   x=lpp
  136.   k=1
  137.  End
  138.  If lns\='1' Then x=x+1
  139.  If lns='-' Then Do
  140.   l.x=' '
  141.   Call CPG1
  142.   x=x+1
  143.  End
  144.  l.x=sv
  145. End
  146. Call CPG1
  147. Return
  148. CPG1:
  149. l.x=left(l.x,cpl,' ')
  150. If x=lpp Then Do
  151.  If k=1 Then Do
  152.   sv=l.x
  153.   l.x=' '
  154.  End
  155.  Call PPG
  156.  Call HDR
  157.  If k=1 Then Do
  158.   k=0
  159.   x=1
  160.   l.x=sv
  161.  End
  162.  Else x=0
  163. End
  164. Return
  165. PPG:
  166. Do z=1 To lpp
  167.  If opt='' Then l.z='║ '||l.z||' ║'
  168.  Call Out l.z
  169. End
  170. If opt='' Then Call Out bl
  171. Return
  172. HDR:
  173. pg=pg+1
  174. If opt='' Then Do
  175.  dl=copies(' ',cpl+4)
  176.  hl=strip(right(date('U'),cpl+4),'t')
  177. End
  178. Else Do
  179.  dl=copies(' ',cpl)
  180.  hl=strip(right(date('U'),cpl),'t')
  181. End
  182. hl=overlay(hl,dl)
  183. hl=overlay(file,hl)
  184. If opt='' Then hl=overlay('Page 'pg,hl,((cpl+4)%2)-2)
  185. Else hl=overlay('Page 'pg,hl,(cpl%2)-2)
  186. If mode=2 Then Call Out ''
  187. If opt='A'&ft=0 Then Call charout prn,np
  188. ft=0
  189. If opt\='H'&opt\='A' Then Do
  190.  Call Out hl
  191.  Call Out tl
  192. End
  193. Do z=1 To lpp
  194.  l.z=copies(' ',cpl)
  195. End
  196. Return
  197. OUT:
  198. Parse Arg ot
  199. Call lineout prn,ot
  200. Return
  201. SETUP:
  202. nf=''
  203. Do i=1 to length(file)
  204.  nf=nf||substr(file,i,1)
  205.  If substr(file,i,1)='\' Then nf=nf||'\'
  206. End
  207. nd=date('U')
  208. nd=strip(nd)
  209. Call Out 'save /pgn 1 def'
  210. If bopt Then Call Out '/lspace { 8 } bind def'
  211. Else Call Out '/lspace { 6 } bind def'
  212. Call Out '/tm { 753 } bind def /bm { 20 } bind def'
  213. Call Out '/lbox { newpath setgray setlinewidth 22 761 moveto'
  214. Call Out ' 22 20 lineto 590 20 lineto 590 761 lineto closepath stroke } def'
  215. Call Out '/llin { newpath setgray setlinewidth 22 761 moveto'
  216. Call Out ' 590 761 lineto stroke } def'
  217. Call Out '/F { findfont exch scalefont setfont } bind def'
  218. Call Out '/incp { /pgn pgn 1 add def } bind def'
  219. Call Out '/lf { currentpoint exch pop lspace sub dup bm lt { pop showpage saveobj'
  220. Call Out ' restore incp opg /saveobj save def tm } if lm exch moveto } bind def'
  221. Call Out '/lastp { currentpoint tm 5 sub gt { 50 gt { showpage } if }'
  222. Call Out ' { pop showpage } ifelse saveobj restore restore } def'
  223. Call Out '/opg { 1 setgray clippath fill 1 setlinejoin'
  224. If opt\='H' Then Do
  225.  If opt='F' Then Call Out ' 2 0 llin 0 setgray 9 /Helvetica-Bold F'
  226.  Else Call Out ' 2 0 lbox 0 setgray 9 /Helvetica-Bold F'
  227.  Call Out ' 22 765 moveto ('||nf||') show 555 765 moveto'
  228.  Call Out ' ('||nd||') show 282 765 moveto (Page) show 308 765 moveto'
  229.  Call Out ' /pgstr 4 string def pgn pgstr cvs show'
  230. End
  231. If bopt Then Call Out ' 0 setgray 9 /Courier-Bold F } bind def'
  232. Else Call Out ' 0 setgray 7 /Courier-Bold F } bind def'
  233. Call Out ' 75 45 {dup mul exch dup mul add 1.0 exch sub } setscreen'
  234. Call Out 'opg'
  235. Call Out '/lm { 26 } def lm tm moveto'
  236. Call Out '/saveobj save def'
  237. Return
  238. BADOPT:
  239. If vrexx Then Signal BADOPT1
  240. Say 'Bad option field!'
  241. TELL:
  242. If vrexx Then Signal TELL1
  243. Say 'Format: 1UP filespec <B> <N>'
  244. Say '                         <A>'
  245. Say '                         <F>'
  246. Say '                         <H>'
  247. Say '        B - Bigger print'
  248. Say '        N - Number lines'
  249. Say '        A - ANSI controls'
  250. Say "        F - don't Frame page"
  251. Say '        H - no frame/Headers'
  252. Exit
  253. VREXXSET:
  254. Call rxfuncadd 'VInit','VREXX','VINIT'
  255. ini=Vinit()
  256. If ini='ERROR' Then Signal FIN1
  257. Signal On Halt name FIN1
  258. Signal On Error name FIN1
  259. Signal On Syntax name FIN1
  260. Signal On Failure name FIN1
  261. Return
  262. BADOPT1:
  263. mg.1='Bad option field!'
  264. TELL1:
  265. Call vdialogpos 50,40
  266. mg.0=10
  267. If mg.1='' Then mg.1='You MUST enter a filespec!  '
  268. mg.2='Format: 1UP filespec <B> <N>    '
  269. mg.3='                             <A>   '
  270. mg.4='                             <F>   '
  271. mg.5='                             <H>   '
  272. mg.6='              B - Bigger print  '
  273. mg.7='              N - Number lines  '
  274. mg.8='              A - ANSI controls  '
  275. mg.9="              F - don't Frame page  "
  276. mg.10='              H - no frame/Headers   '
  277. rb=vinputbox('1UP ERROR',mg,35,3)
  278. If rb='OK' Then Do
  279.  Parse var mg.vstring file opt opt1 .
  280.  Signal AGAIN
  281. End
  282. FIN1:
  283. Call Vexit
  284.