home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / clarion / barprint.zip / BARPRINT.CLA next >
Text File  |  1990-04-06  |  6KB  |  194 lines

  1.          MEMBER
  2.  
  3.          !--------------------------------------------------
  4.          !    THIS PROCEDURE TAKES THE STRING PASSED TO IT
  5.          !    AND PRINTS BAR CODE 3 OF 9 ONTO A STANDARD
  6.          !    EPSON OR IBM COMPATIBLE PRINTER.
  7.          !
  8.          !    EXACT SPECIFICATION FOR CODE 3 OF 9 IS
  9.          !    AVAILABLE FROM AMERICAN NATIONAL STANDARDS
  10.          !    INSTITUTE, 1430 BROADWAY, NEW YORK.
  11.          !--------------------------------------------------
  12.  
  13. BAR_PRINT    PROCEDURE(BAR_STRING)
  14.  
  15. BAR_STRING   STRING(255)
  16. BAR_SAVE     STRING(255)
  17.  
  18. STEPSIZE     EQUATE(2)                 ! N/216TH IN. STEP (DEF = 2)
  19.  
  20. DEF_MARGIN   EQUATE(15)                 ! DEFAULT LEFT MARGIN
  21.  
  22. PASSES         EQUATE(1)                 ! 1 PASS PER BAR CODE - INCR
  23.                          ! TO EMBOLDEN
  24.  
  25. BAR_WIDTH    EQUATE(21)                 ! BAR CHARACTERS ARE THIS MANY
  26.                          ! DOTS WIDE
  27.  
  28. LABEL_SIZE   EQUATE(4)                 ! NUMBER OF LF'S TO GET TO NEXT
  29.                          ! LABEL
  30.  
  31. BAR_HEIGHT   EQUATE(10)                 ! 10 LINEAR PASSES MADE, OFFSET
  32.                          ! EACH SLIGHTLY
  33.  
  34.  
  35. COLS         SHORT                 ! NUMBER OF GRAPHIC CHARACTERS
  36.                          ! TO PRINT
  37.  
  38. HI_BYTE         BYTE                 ! HIGH BYTE OF COLS
  39. LO_BYTE         BYTE                 ! LOW BYTE OF COLS
  40.  
  41.                          ! MATCH STRING
  42. MATCH         STRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-. $/+%*')
  43.  
  44. TEMP         STRING(1)                 ! TEMP VARIABLE
  45. TEMP1         STRING(1)                 ! AND ANOTHER TEMPORARY VAR
  46.  
  47. BAR_ASSIGN   GROUP
  48.         STRING('143432341')         ! A or a
  49.         STRING('341432341')         ! B or b
  50.         STRING('141432343')         ! C or c
  51.         STRING('343412341')         ! D or d
  52.         STRING('143412343')         ! E or e
  53.         STRING('341412343')         ! F or f
  54.         STRING('343432141')         ! G or g
  55.         STRING('143432143')         ! H or h
  56.         STRING('341432143')         ! I or i
  57.         STRING('343412143')         ! J or j
  58.         STRING('143434321')         ! K or k
  59.         STRING('341434321')         ! L or l
  60.         STRING('141434323')         ! M or m
  61.         STRING('343414321')         ! N or n
  62.         STRING('143414323')         ! O or o
  63.         STRING('341414323')         ! P or p
  64.         STRING('343434121')         ! Q or q
  65.         STRING('143434123')         ! R or r
  66.         STRING('341434123')         ! S or s
  67.         STRING('343414123')         ! T or t
  68.         STRING('123434341')         ! U or u
  69.         STRING('321434341')         ! V or v
  70.         STRING('121434343')         ! W or w
  71.         STRING('323414341')         ! X or x
  72.         STRING('123414343')         ! Y or y
  73.         STRING('321414343')         ! Z or z
  74.         STRING('143234341')         ! 1
  75.         STRING('341234341')         ! 2
  76.         STRING('141234343')         ! 3
  77.         STRING('343214341')         ! 4
  78.         STRING('143214343')         ! 5
  79.         STRING('341214343')         ! 6
  80.         STRING('343234141')         ! 7
  81.         STRING('143234143')         ! 8
  82.         STRING('341234143')         ! 9
  83.         STRING('343214143')         ! 0
  84.         STRING('323434141')         ! -
  85.         STRING('123434143')         ! .
  86.         STRING('321434143')         ! SPACE
  87.         STRING('323232343')         ! $
  88.         STRING('323234323')         ! /
  89.         STRING('323432323')         ! +
  90.         STRING('343232323')         ! %
  91.         STRING('323414143')         ! SEPARATOR (START AND END)
  92.          .
  93.  
  94. BAR         STRING(9),DIM(44),OVER(BAR_ASSIGN)     ! ARRAY CONTAINING CODES
  95.  
  96.          CODE
  97.  
  98.  
  99.                          ! ATTACH SEPARATOR CHARS
  100.                          ! TO START AND END OF STRING
  101.  
  102.          BAR_SAVE  = BAR_STRING         ! SAVE FOR LATER
  103.  
  104.          BAR_STRING = '*' & CLIP(BAR_STRING) & '*'
  105.  
  106.          PRINT(@CR)                 ! PRINT A CARRIAGE RETURN
  107.          PRINT(CHR(27) & '3' & CHR(STEPSIZE)& CHR(13) & CHR(10)) ! SEND STEPSIZE CODE
  108.  
  109.          LOOP I# = 1 TO BAR_HEIGHT         ! DO THIS BAR_HEIGHT TIMES
  110.         LOOP PASSES TIMES         !   DO THIS PASSES TIMES
  111.           DO LEFT_MARGIN         !   TAB TO LEFT MARGIN
  112.           DO SETUP_GRPH             !   TELL PRINTER HOW MANY CHARS
  113.           DO PRT_BARCODE         !   SEND THE CHARACTERS
  114.           PRINT(CHR(13) & CHR(10))     ! WHEN DONE DO CARRIAGE RETURN
  115.         .
  116.            PRINT(CHR(27) & CHR(74) & CHR(6) & CHR(13) & CHR(10))  ! FEED UP 6
  117.  
  118.          .                     ! WHEN ALL DONE PRINTING
  119.          PRINT(CHR(27) & CHR(74) & CHR(20) & CHR(13) & CHR(10)) ! LEAVE ROOM BETWEEN BAR & TEXT
  120.          DO SET_NORMAL
  121.                          ! NOW CENTER TEXT UNDER BARCODE
  122.          PRINT(ALL(' ',(DEF_MARGIN + LEN(CLIP(BAR_SAVE))/2)))
  123.          PRINT(BAR_SAVE)             ! AND PRINT THE TEXT
  124.  
  125.          PRINT(CHR(27) & CHR(74) & CHR(100) & CHR(13) & CHR(10)) !MOVE INTO NEXT LABEL POSITION
  126.  
  127.  
  128. LEFT_MARGIN  ROUTINE
  129.  
  130.          !--------------------------------
  131.          !    MOVE TO LEFT MARGIN OF LABEL
  132.          !--------------------------------
  133.  
  134.          PRINT(ALL(' ',DEF_MARGIN))         ! PRINT DEFAULT MARGIN SPACES
  135.  
  136.  
  137. SETUP_GRPH   ROUTINE
  138.  
  139.          !-------------------------------
  140.          ! THIS ROUTINE SETS THE PRINTER
  141.          ! INTO GRAPHICS MODE.
  142.          !-------------------------------
  143.  
  144.          COLS = BAR_WIDTH * LEN(CLIP(BAR_STRING))
  145.  
  146.          IF COLS > 256             ! IF GREATER THAN 256
  147.  
  148.            LO_BYTE = COLS - 256         ! CALCULATE LO BYTE VALUE
  149.            HI_BYTE = (COLS - LO_BYTE / 256)     ! CALCULATE HI BYTE VALUE
  150.  
  151.          ELSE                 ! OTHERWISE ITS ALL LOW BYTE
  152.            LO_BYTE = COLS
  153.            HI_BYTE = 0
  154.          .
  155.  
  156.                          ! TELL PRINTER HOW MANY
  157.                          ! CHARS ARE COMING
  158.  
  159.          PRINT(CHR(27) & 'L' & CHR(LO_BYTE) & CHR(HI_BYTE))
  160.  
  161.  
  162. PRT_BARCODE  ROUTINE
  163.  
  164.          !---------------------------------------------------
  165.          !    THIS ROUTINE ACTUALLY SENDS THE NEEDED CHARACTERS
  166.          !    TO THE PRINTER TO PRINT THE BAR CODE
  167.          !---------------------------------------------------
  168.  
  169.          LOOP X# = 1 TO LEN(CLIP(BAR_STRING))
  170.         TEMP = SUB(BAR_STRING,X#,1)     ! GET NEXT CHARACTER
  171.         PTR# = INSTRING(TEMP,MATCH,1)     ! GET ARRAY ENTRY NUMBER
  172.  
  173.         LOOP Y# = 1 TO 9         ! READ ALL NINE CHARS IN ARRAY
  174.           TEMP1 = SUB(BAR[PTR#],Y#,1)     !   ONE AT A TIME
  175.             EXECUTE TEMP1         !   PRINT ONE OF THESE
  176.               PRINT(CHR(255)&CHR(255)&CHR(255))          ! WIDE BAR
  177.               PRINT(CHR(0)&CHR(0)&CHR(0)&CHR(0))      ! WIDE SPACE
  178.               PRINT(CHR(255))                  ! NARROW BAR
  179.               PRINT(CHR(0) & CHR(0))              ! NARROW SPACE
  180.         .   .                 !   AND DO NEXT BAR OR SPACE
  181.          PRINT(CHR(0) & CHR(0))         ! AND THEN ONE NARROW SPACE BETWEEN
  182.  
  183.          .                     ! NOW DO NEXT CHARACTER IN STRING
  184.  
  185. SET_NORMAL   ROUTINE
  186.  
  187.          !--------------------------------------
  188.          ! THIS ROUTINE RETURNS PRINTER TO TEXT
  189.          ! MODE
  190.          !--------------------------------------
  191.  
  192.          PRINT(CHR(13) & CHR(10) & CHR(27) & CHR(64))
  193.  
  194.