home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Programme_zum_Heft / Anwendungen / Kurztests / DFA / Rexx / ArexxScripts.lha / printlaserlabels.dfa < prev    next >
Text File  |  1994-09-28  |  11KB  |  432 lines

  1. /* $Revision Header built automatically *************** (do not edit) ************
  2. **
  3. ** © Copyright by Dirk Federlein
  4. **
  5. ** File             : printlaserlabels.dfa
  6. ** Created on       : Wednesday, 23.03.94 21:48:02
  7. ** Created by       : Dirk Federlein
  8. ** Current revision : V2.0
  9. **
  10. **
  11. ** Purpose
  12. ** -------
  13. **   - Prints 3-column laser labels of all selected ('>') addresses.
  14. **
  15. **   This script can be used without changes, if you use the following labels:
  16. **
  17. **            "Zweckform" No. 3669, 70 x 50.8 mm (15 labels/page)
  18. **
  19. **   Furthermore you should select 8 lpi and 12 cpi within your printer
  20. **   preferences.
  21. **
  22. **   If you prefer another label size, don't worry! It IS possible!
  23. **   All you have to do is to play around with the variables set in front of the
  24. **   line that starts with: "if ~show(ports ... ".
  25. **
  26. **   Please notice that the script tries to keep track of the current label
  27. **   position on the sheet. For this the environment variable 'DFA/SHEETOFFSET'
  28. **   is used.
  29. **
  30. **   The pages are written to files on the ram disk, named 'DFASheet_1.txt',
  31. **   'DFASheet_2.txt', 'DFASheet_3.txt', etc. depending on how many labels you are
  32. **   printing. These files are then copied to the printer, if you wish this.
  33. **
  34. **   Please notice: Some laser printers (e.g. HP Laserjet IV) seem to remove
  35. **   leading carriage returns in the beginning of the page. As I don't have
  36. **   such a printer, I cannot test it by myself, but I assume that replacing
  37. **   (cr) by (space) (cr) could solve the problem.
  38. **
  39. **
  40. ** Revision V2.0
  41. ** --------------
  42. ** created on Wednesday, 23.03.94 21:48:02  by  Dirk Federlein.   LogMessage :
  43. **     --- Initial release ---
  44. **
  45. *********************************************************************************/
  46.  
  47. options results
  48.  
  49. cr        = '0A'X
  50. space    = ' '
  51.  
  52. outbody        = 'RAM:DFASheet_'
  53. outext        = '.txt'
  54.  
  55. labelspercol    = 5
  56. labelsperrow    = 3
  57. labelspersheet    = labelspercol * labelsperrow
  58.  
  59. linesperlabel    = 16    /* Each label has up to xx lines                             */
  60. linesfromtop    = 6        /* Additional lines counted from the very top of every label */
  61. colsperlabel    = 35    /* Number of chars the fit on one label                      */
  62.  
  63. labeloffset        = 3        /* Space from left edge that shall be empty                  */
  64.  
  65.  
  66. if ~show(ports, DFA) then
  67.     exit 10
  68.  
  69. if open('envhandle', 'ENV:DFA/SHEETOFFSET', 'R') then
  70. do
  71.     lnumber = readln('envhandle')
  72.  
  73.     if lnumber > labelspersheet then
  74.         lnumber = 1
  75.  
  76.     if lnumber < 1 then
  77.         lnumber = 1
  78.  
  79.     /* Must be like below to close the file REALLY */
  80.  
  81.     call close 'envhandle'
  82. end
  83. else
  84. do
  85.     lnumber    = 1
  86.  
  87.     address command 'setenv' 'DFA/SHEETOFFSET' lnumber
  88.     address command 'copy' 'Env:DFA/SHEETOFFSET' 'ENVARC:DFA'
  89.  
  90. end
  91.  
  92. sheetnum = 1
  93.  
  94. outname    = outbody||sheetnum||outext
  95.  
  96.  
  97. if open('outfile', outname, 'W') = 0 then
  98. do
  99.     exit 10
  100. end
  101. else
  102. do
  103.  
  104.     row        = (lnumber-1) % labelsperrow
  105.  
  106.     if row > 0 then
  107.     do
  108.         /* --- insert rows... ------------------------------------------- */
  109.  
  110.         crnum    = row * linesperlabel
  111.  
  112.         do i = 1 to crnum
  113.             numchars = writech('outfile', cr)
  114.         end
  115.     end
  116.  
  117.     /* --- Clear buffers ------------------------------------------------ */
  118.  
  119.     col        = (lnumber-1) // labelsperrow        /* modulo */
  120.  
  121.     adr1.0    = ""
  122.     adr1.1    = ""
  123.     adr1.2    = ""
  124.     adr1.3    = ""
  125.     adr1.4    = ""
  126.     adr1.5    = ""
  127.     adr1.6    = ""
  128.  
  129.     adr2.0    = ""
  130.     adr2.1    = ""
  131.     adr2.2    = ""
  132.     adr2.3    = ""
  133.     adr2.4    = ""
  134.     adr2.5    = ""
  135.     adr2.6    = ""
  136.  
  137.     adr3.0    = ""
  138.     adr3.1    = ""
  139.     adr3.2    = ""
  140.     adr3.3    = ""
  141.     adr3.4    = ""
  142.     adr3.5    = ""
  143.     adr3.6    = ""
  144.  
  145.     currentcol    = col+1
  146.     currentrow    = row+1
  147.  
  148.  
  149.     FIRST STEM ADR.
  150.  
  151.     if ADR.ADDRESS.24 = 0 then
  152.         NEXTSEL STEM ADR.
  153.  
  154.     do while RC = 0
  155.  
  156.         if currentcol = 1 then
  157.         do
  158.             adr1.0    = "An"
  159.             adr1.1    = ADR.ADDRESS.0
  160.             adr1.2    = ADR.ADDRESS.1 ADR.ADDRESS.2
  161.             adr1.3    = ADR.ADDRESS.3
  162.             adr1.4    = ADR.ADDRESS.4
  163.             adr1.5    = ADR.ADDRESS.5 ADR.ADDRESS.6||', '||ADR.ADDRESS.7
  164.             adr1.6    = ADR.ADDRESS.8
  165.         end
  166.  
  167.         if currentcol = 2 then
  168.         do
  169.             adr2.0    = "An"
  170.             adr2.1    = ADR.ADDRESS.0
  171.             adr2.2    = ADR.ADDRESS.1 ADR.ADDRESS.2
  172.             adr2.3    = ADR.ADDRESS.3
  173.             adr2.4    = ADR.ADDRESS.4
  174.             adr2.5    = ADR.ADDRESS.5 ADR.ADDRESS.6||', '||ADR.ADDRESS.7
  175.             adr2.6    = ADR.ADDRESS.8
  176.         end
  177.  
  178.         if currentcol = 3 then
  179.         do
  180.             adr3.0    = "An"
  181.             adr3.1    = ADR.ADDRESS.0
  182.             adr3.2    = ADR.ADDRESS.1 ADR.ADDRESS.2
  183.             adr3.3    = ADR.ADDRESS.3
  184.             adr3.4    = ADR.ADDRESS.4
  185.             adr3.5    = ADR.ADDRESS.5 ADR.ADDRESS.6||', '||ADR.ADDRESS.7
  186.             adr3.6    = ADR.ADDRESS.8
  187.  
  188.             /* --- Now we have to format each line an write it to the file  */
  189.  
  190.             do i = 1 to linesfromtop
  191.                 numchars = writech('outfile', cr)
  192.             end
  193.  
  194.             linebuffer    = copies(' ', labeloffset)
  195.             linebuffer = insert(adr1.0, linebuffer, labeloffset, colsperlabel)
  196.             linebuffer = insert(adr2.0, linebuffer, colsperlabel+labeloffset, colsperlabel)
  197.             linebuffer = linebuffer||' '||adr3.0
  198.  
  199.             numchars = writech('outfile', linebuffer cr)
  200.  
  201.             linebuffer    = copies(' ', labeloffset)
  202.             linebuffer = insert(adr1.1, linebuffer, labeloffset, colsperlabel)
  203.             linebuffer = insert(adr2.1, linebuffer, colsperlabel+labeloffset, colsperlabel)
  204.             linebuffer = linebuffer||' '||adr3.1
  205.  
  206.             numchars = writech('outfile', linebuffer cr)
  207.  
  208.             linebuffer    = copies(' ', labeloffset)
  209.             linebuffer = insert(adr1.2, linebuffer, labeloffset, colsperlabel)
  210.             linebuffer = insert(adr2.2, linebuffer, colsperlabel+labeloffset, colsperlabel)
  211.             linebuffer = linebuffer||' '||adr3.2
  212.  
  213.             numchars = writech('outfile', linebuffer cr)
  214.  
  215.             linebuffer    = copies(' ', labeloffset)
  216.             linebuffer = insert(adr1.3, linebuffer, labeloffset, colsperlabel)
  217.             linebuffer = insert(adr2.3, linebuffer, colsperlabel+labeloffset, colsperlabel)
  218.             linebuffer = linebuffer||' '||adr3.3
  219.  
  220.             numchars = writech('outfile', linebuffer cr)
  221.  
  222.             linebuffer    = copies(' ', labeloffset)
  223.             linebuffer = insert(adr1.4, linebuffer, labeloffset, colsperlabel)
  224.             linebuffer = insert(adr2.4, linebuffer, colsperlabel+labeloffset, colsperlabel)
  225.             linebuffer = linebuffer||' '||adr3.4
  226.  
  227.             numchars = writech('outfile', linebuffer cr)
  228.  
  229.             linebuffer    = copies(' ', labeloffset)
  230.             linebuffer = insert(adr1.5, linebuffer, labeloffset, colsperlabel)
  231.             linebuffer = insert(adr2.5, linebuffer, colsperlabel+labeloffset, colsperlabel)
  232.             linebuffer = linebuffer||' '||adr3.5
  233.  
  234.             numchars = writech('outfile', linebuffer cr)
  235.  
  236.             linebuffer    = copies(' ', labeloffset)
  237.             linebuffer = insert(adr1.6, linebuffer, labeloffset, colsperlabel)
  238.             linebuffer = insert(adr2.6, linebuffer, colsperlabel+labeloffset, colsperlabel)
  239.             linebuffer = linebuffer||' '||adr3.6
  240.  
  241.             numchars = writech('outfile', linebuffer cr)
  242.  
  243.             do i = 1 to linesperlabel - 7 - linesfromtop
  244.                 numchars = writech('outfile', cr)
  245.             end
  246.  
  247.             /* --- Clear alread written buffers ------------------------- */
  248.  
  249.             adr1.0    = ""
  250.             adr1.1    = ""
  251.             adr1.2    = ""
  252.             adr1.3    = ""
  253.             adr1.4    = ""
  254.             adr1.5    = ""
  255.             adr1.6    = ""
  256.  
  257.             adr2.0    = ""
  258.             adr2.1    = ""
  259.             adr2.2    = ""
  260.             adr2.3    = ""
  261.             adr2.4    = ""
  262.             adr2.5    = ""
  263.             adr2.6    = ""
  264.  
  265.             adr3.0    = ""
  266.             adr3.1    = ""
  267.             adr3.2    = ""
  268.             adr3.3    = ""
  269.             adr3.4    = ""
  270.             adr3.5    = ""
  271.             adr3.6    = ""
  272.  
  273.             currentrow = currentrow + 1
  274.  
  275.         end
  276.  
  277.         if currentcol = labelsperrow then
  278.             currentcol = 1
  279.         else
  280.             currentcol = currentcol+1
  281.  
  282.         if currentrow = (labelspercol+1) then
  283.             currentrow = 1
  284.  
  285.         lnumber        = lnumber + 1
  286.  
  287.         /* --- New page: new file ------------------------------------------- */
  288.  
  289.         if lnumber >= labelspersheet+1 then
  290.         do
  291.             lnumber = 1
  292.  
  293.             close('outfile')
  294.  
  295.             sheetnum = sheetnum + 1
  296.  
  297.             outname    = outbody||sheetnum||outext
  298.  
  299.             if open('outfile', outname, 'W') = 0 then
  300.             do
  301.                 exit 10
  302.             end
  303.  
  304.         end
  305.  
  306.         /* --- Update env var ----------------------------------------------- */
  307.  
  308.         address command 'setenv' 'DFA/SHEETOFFSET' lnumber
  309.  
  310.         address command 'copy' 'Env:DFA/SHEETOFFSET' 'ENVARC:DFA/SHEETOFFSET'
  311.  
  312.         nextsel STEM ADR.
  313.  
  314.     end
  315.  
  316.     /* --- If a partial line is kept, write it now ---------------------- */
  317.  
  318.     if currentcol > 1 then
  319.     do
  320.         do i = 1 to linesfromtop
  321.             numchars = writech('outfile', cr)
  322.         end
  323.  
  324.         linebuffer    = copies(' ', labeloffset)
  325.         linebuffer = insert(adr1.0, linebuffer, labeloffset, colsperlabel)
  326.         linebuffer = insert(adr2.0, linebuffer, colsperlabel+labeloffset, colsperlabel)
  327.         linebuffer = linebuffer||' '||adr3.0
  328.  
  329.         numchars = writech('outfile', linebuffer cr)
  330.  
  331.         linebuffer    = copies(' ', labeloffset)
  332.         linebuffer = insert(adr1.1, linebuffer, labeloffset, colsperlabel)
  333.         linebuffer = insert(adr2.1, linebuffer, colsperlabel+labeloffset, colsperlabel)
  334.         linebuffer = linebuffer||' '||adr3.1
  335.  
  336.         numchars = writech('outfile', linebuffer cr)
  337.  
  338.         linebuffer    = copies(' ', labeloffset)
  339.         linebuffer = insert(adr1.2, linebuffer, labeloffset, colsperlabel)
  340.         linebuffer = insert(adr2.2, linebuffer, colsperlabel+labeloffset, colsperlabel)
  341.         linebuffer = linebuffer||' '||adr3.2
  342.  
  343.         numchars = writech('outfile', linebuffer cr)
  344.  
  345.         linebuffer    = copies(' ', labeloffset)
  346.         linebuffer = insert(adr1.3, linebuffer, labeloffset, colsperlabel)
  347.         linebuffer = insert(adr2.3, linebuffer, colsperlabel+labeloffset, colsperlabel)
  348.         linebuffer = linebuffer||' '||adr3.3
  349.  
  350.         numchars = writech('outfile', linebuffer cr)
  351.  
  352.         linebuffer    = copies(' ', labeloffset)
  353.         linebuffer = insert(adr1.4, linebuffer, labeloffset, colsperlabel)
  354.         linebuffer = insert(adr2.4, linebuffer, colsperlabel+labeloffset, colsperlabel)
  355.         linebuffer = linebuffer||' '||adr3.4
  356.  
  357.         numchars = writech('outfile', linebuffer cr)
  358.  
  359.         linebuffer    = copies(' ', labeloffset)
  360.         linebuffer = insert(adr1.5, linebuffer, labeloffset, colsperlabel)
  361.         linebuffer = insert(adr2.5, linebuffer, colsperlabel+labeloffset, colsperlabel)
  362.         linebuffer = linebuffer||' '||adr3.5
  363.  
  364.         numchars = writech('outfile', linebuffer cr)
  365.  
  366.         linebuffer    = copies(' ', labeloffset)
  367.         linebuffer = insert(adr1.6, linebuffer, labeloffset, colsperlabel)
  368.         linebuffer = insert(adr2.6, linebuffer, colsperlabel+labeloffset, colsperlabel)
  369.         linebuffer = linebuffer||' '||adr3.6
  370.  
  371.         numchars = writech('outfile', linebuffer cr)
  372.  
  373.         do i = 1 to linesperlabel - 7
  374.             numchars = writech('outfile', cr)
  375.         end
  376.     end
  377.  
  378.     /* --- Close output file -------------------------------------------- */
  379.  
  380.     close('outfile')
  381.  
  382.     /* --- Post processing:-) ------------------------------------------- */
  383.  
  384.     if open('outhandle', "CON:100/50/300/100/DFA<->Arexx/CLOSE", 'RW') ~= 0 then
  385.     do
  386.         writech('outhandle', "Do you want to PRINT the sheet(s) " (cr))
  387.         writech('outhandle', "NOW??? (y/n):" )
  388.  
  389.         rcode = readln('outhandle')
  390.  
  391.         writech('outhandle', cr )
  392.  
  393.         if rcode ~= "y" then
  394.         do
  395.             writech('outhandle', "Name of sheets: " outbody||"<num>"||outext cr)
  396.  
  397.             exit
  398.         end
  399.  
  400.         writech('outhandle', "Printing the sheets..." )
  401.  
  402.         do i = 1 to sheetnum
  403.             writech('outhandle', i||",")
  404.  
  405.             address command 'copy' outbody||i||outext 'prt:'
  406.  
  407.         end
  408.  
  409.         writech('outhandle', cr)
  410.  
  411.         writech('outhandle', "Do you want to DELETE the printed sheets " (cr))
  412.         writech('outhandle', "NOW??? (y/n):" )
  413.  
  414.         rcode = readln('outhandle')
  415.  
  416.         if rcode ~= "y" then
  417.         do
  418.             writech('outhandle', "Sheets NOT deleted!" cr)
  419.  
  420.             exit
  421.         end
  422.  
  423.         address command 'delete' outbody||"#?"||outext
  424.  
  425.         close ('outhandle')
  426.  
  427.     end
  428.  
  429. end
  430.  
  431. exit
  432.