home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
clarion
/
barprint.zip
/
BARPRINT.CLA
next >
Wrap
Text File
|
1990-04-06
|
6KB
|
194 lines
MEMBER
!--------------------------------------------------
! THIS PROCEDURE TAKES THE STRING PASSED TO IT
! AND PRINTS BAR CODE 3 OF 9 ONTO A STANDARD
! EPSON OR IBM COMPATIBLE PRINTER.
!
! EXACT SPECIFICATION FOR CODE 3 OF 9 IS
! AVAILABLE FROM AMERICAN NATIONAL STANDARDS
! INSTITUTE, 1430 BROADWAY, NEW YORK.
!--------------------------------------------------
BAR_PRINT PROCEDURE(BAR_STRING)
BAR_STRING STRING(255)
BAR_SAVE STRING(255)
STEPSIZE EQUATE(2) ! N/216TH IN. STEP (DEF = 2)
DEF_MARGIN EQUATE(15) ! DEFAULT LEFT MARGIN
PASSES EQUATE(1) ! 1 PASS PER BAR CODE - INCR
! TO EMBOLDEN
BAR_WIDTH EQUATE(21) ! BAR CHARACTERS ARE THIS MANY
! DOTS WIDE
LABEL_SIZE EQUATE(4) ! NUMBER OF LF'S TO GET TO NEXT
! LABEL
BAR_HEIGHT EQUATE(10) ! 10 LINEAR PASSES MADE, OFFSET
! EACH SLIGHTLY
COLS SHORT ! NUMBER OF GRAPHIC CHARACTERS
! TO PRINT
HI_BYTE BYTE ! HIGH BYTE OF COLS
LO_BYTE BYTE ! LOW BYTE OF COLS
! MATCH STRING
MATCH STRING('ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-. $/+%*')
TEMP STRING(1) ! TEMP VARIABLE
TEMP1 STRING(1) ! AND ANOTHER TEMPORARY VAR
BAR_ASSIGN GROUP
STRING('143432341') ! A or a
STRING('341432341') ! B or b
STRING('141432343') ! C or c
STRING('343412341') ! D or d
STRING('143412343') ! E or e
STRING('341412343') ! F or f
STRING('343432141') ! G or g
STRING('143432143') ! H or h
STRING('341432143') ! I or i
STRING('343412143') ! J or j
STRING('143434321') ! K or k
STRING('341434321') ! L or l
STRING('141434323') ! M or m
STRING('343414321') ! N or n
STRING('143414323') ! O or o
STRING('341414323') ! P or p
STRING('343434121') ! Q or q
STRING('143434123') ! R or r
STRING('341434123') ! S or s
STRING('343414123') ! T or t
STRING('123434341') ! U or u
STRING('321434341') ! V or v
STRING('121434343') ! W or w
STRING('323414341') ! X or x
STRING('123414343') ! Y or y
STRING('321414343') ! Z or z
STRING('143234341') ! 1
STRING('341234341') ! 2
STRING('141234343') ! 3
STRING('343214341') ! 4
STRING('143214343') ! 5
STRING('341214343') ! 6
STRING('343234141') ! 7
STRING('143234143') ! 8
STRING('341234143') ! 9
STRING('343214143') ! 0
STRING('323434141') ! -
STRING('123434143') ! .
STRING('321434143') ! SPACE
STRING('323232343') ! $
STRING('323234323') ! /
STRING('323432323') ! +
STRING('343232323') ! %
STRING('323414143') ! SEPARATOR (START AND END)
.
BAR STRING(9),DIM(44),OVER(BAR_ASSIGN) ! ARRAY CONTAINING CODES
CODE
! ATTACH SEPARATOR CHARS
! TO START AND END OF STRING
BAR_SAVE = BAR_STRING ! SAVE FOR LATER
BAR_STRING = '*' & CLIP(BAR_STRING) & '*'
PRINT(@CR) ! PRINT A CARRIAGE RETURN
PRINT(CHR(27) & '3' & CHR(STEPSIZE)& CHR(13) & CHR(10)) ! SEND STEPSIZE CODE
LOOP I# = 1 TO BAR_HEIGHT ! DO THIS BAR_HEIGHT TIMES
LOOP PASSES TIMES ! DO THIS PASSES TIMES
DO LEFT_MARGIN ! TAB TO LEFT MARGIN
DO SETUP_GRPH ! TELL PRINTER HOW MANY CHARS
DO PRT_BARCODE ! SEND THE CHARACTERS
PRINT(CHR(13) & CHR(10)) ! WHEN DONE DO CARRIAGE RETURN
.
PRINT(CHR(27) & CHR(74) & CHR(6) & CHR(13) & CHR(10)) ! FEED UP 6
. ! WHEN ALL DONE PRINTING
PRINT(CHR(27) & CHR(74) & CHR(20) & CHR(13) & CHR(10)) ! LEAVE ROOM BETWEEN BAR & TEXT
DO SET_NORMAL
! NOW CENTER TEXT UNDER BARCODE
PRINT(ALL(' ',(DEF_MARGIN + LEN(CLIP(BAR_SAVE))/2)))
PRINT(BAR_SAVE) ! AND PRINT THE TEXT
PRINT(CHR(27) & CHR(74) & CHR(100) & CHR(13) & CHR(10)) !MOVE INTO NEXT LABEL POSITION
LEFT_MARGIN ROUTINE
!--------------------------------
! MOVE TO LEFT MARGIN OF LABEL
!--------------------------------
PRINT(ALL(' ',DEF_MARGIN)) ! PRINT DEFAULT MARGIN SPACES
SETUP_GRPH ROUTINE
!-------------------------------
! THIS ROUTINE SETS THE PRINTER
! INTO GRAPHICS MODE.
!-------------------------------
COLS = BAR_WIDTH * LEN(CLIP(BAR_STRING))
IF COLS > 256 ! IF GREATER THAN 256
LO_BYTE = COLS - 256 ! CALCULATE LO BYTE VALUE
HI_BYTE = (COLS - LO_BYTE / 256) ! CALCULATE HI BYTE VALUE
ELSE ! OTHERWISE ITS ALL LOW BYTE
LO_BYTE = COLS
HI_BYTE = 0
.
! TELL PRINTER HOW MANY
! CHARS ARE COMING
PRINT(CHR(27) & 'L' & CHR(LO_BYTE) & CHR(HI_BYTE))
PRT_BARCODE ROUTINE
!---------------------------------------------------
! THIS ROUTINE ACTUALLY SENDS THE NEEDED CHARACTERS
! TO THE PRINTER TO PRINT THE BAR CODE
!---------------------------------------------------
LOOP X# = 1 TO LEN(CLIP(BAR_STRING))
TEMP = SUB(BAR_STRING,X#,1) ! GET NEXT CHARACTER
PTR# = INSTRING(TEMP,MATCH,1) ! GET ARRAY ENTRY NUMBER
LOOP Y# = 1 TO 9 ! READ ALL NINE CHARS IN ARRAY
TEMP1 = SUB(BAR[PTR#],Y#,1) ! ONE AT A TIME
EXECUTE TEMP1 ! PRINT ONE OF THESE
PRINT(CHR(255)&CHR(255)&CHR(255)) ! WIDE BAR
PRINT(CHR(0)&CHR(0)&CHR(0)&CHR(0)) ! WIDE SPACE
PRINT(CHR(255)) ! NARROW BAR
PRINT(CHR(0) & CHR(0)) ! NARROW SPACE
. . ! AND DO NEXT BAR OR SPACE
PRINT(CHR(0) & CHR(0)) ! AND THEN ONE NARROW SPACE BETWEEN
. ! NOW DO NEXT CHARACTER IN STRING
SET_NORMAL ROUTINE
!--------------------------------------
! THIS ROUTINE RETURNS PRINTER TO TEXT
! MODE
!--------------------------------------
PRINT(CHR(13) & CHR(10) & CHR(27) & CHR(64))