Fingerprint Manual
Fingerprint Manual
Reference Manual
Intermec
Fingerprint®
v8.70.0 / v10.0.0
Intermec Technologies Corporation
Corporate Headquarters
6001 36th Ave. W.
Everett, WA 98203
U.S.A.
www.intermec.com
The information contained herein is proprietary and is provided solely for the purpose of allowing
customers to operate and service Intermec-manufactured equipment and is not to be released, repro-
duced, or used for any other purpose without written permission of Intermec.
Information and specifications contained in this document are subject to change without prior
notice and do not represent a commitment on the part of Intermec Technologies Corporation.
© 2005 by Intermec Technologies Corporation. All rights reserved.
The word Intermec, the Intermec logo, Norand, ArciTech, CrossBar, Data Collection Browser,
dcBrowser, Duratherm, EasyCoder, EasyLAN, Enterprise Wireless LAN, EZBuilder, Fingerprint,
i-gistics, INCA (under license), InterDriver, Intermec Printer Network Manager, IRL, JANUS,
LabelShop, Mobile Framework, MobileLAN, Nor*Ware, Pen*Key, Precision Print, PrintSet,
Ready‑to‑Work, RoutePower, TE 2000, Trakker Antares, UAP, Universal Access Point, Virtual Wedge
and XMLReady are either trademarks or registered trademarks of Intermec Technologies Corpora-
tion.
Throughout this manual, trademarked names may be used. Rather than put a trademark (™ or ®)
symbol in every occurrence of a trademarked name, we state that we are using the names only in an
editorial fashion, and to the benefit of the trademark owner, with no intention of infringement.
There are U.S. and foreign patents pending.
The name Centronics is wholly owned by GENICOM Corporation.
Microsoft is a registered trademark of Microsoft Corporation.
TrueDoc is a registered trademark of Bitstream, Inc.
TrueType is a trademark of Apple Computer Inc.
Unicode is a trademark of Unicode Inc.
Windows is a trademark of Microsoft Corporation.
Contents
Contents
1 Introduction
Fingerprint Programming Language......................................................................................2
Fingerprint Documentation..................................................................................................2
Differences between Fingerprint 8.70.0 and 10.0.0...............................................................3
News in Intermec Fingerprint v8.70.0..................................................................................3
General Improvements........................................................................................3
New Instructions.................................................................................................3
Modified Instructions..........................................................................................3
File System with Directories..................................................................................................4
Files in Intermec Fingerprint v8.70.x and v10.0.X................................................................5
2 Program Instructions
Syntax...................................................................................................................................8
ABS......................................................................................................................................9
ACTLEN............................................................................................................................10
ALIGN (AN)......................................................................................................................11
ASC....................................................................................................................................14
BARADJUST.....................................................................................................................15
BARCODENAME$...........................................................................................................16
BARFONT (BF).................................................................................................................17
BARFONT ON/OFF (BF ON/OFF)................................................................................20
BARHEIGHT (BH)...........................................................................................................21
BARMAG (BM).................................................................................................................22
BARRATIO (BR)...............................................................................................................23
BARSET.............................................................................................................................24
BARTYPE (BT)..................................................................................................................26
BEEP..................................................................................................................................27
BREAK...............................................................................................................................28
BREAK ON/OFF...............................................................................................................30
BUSY..................................................................................................................................31
CHDIR..............................................................................................................................32
CHECKSUM.....................................................................................................................33
CHR$.................................................................................................................................34
CLEANFEED....................................................................................................................35
CLEAR...............................................................................................................................36
CLIP...................................................................................................................................37
CLL....................................................................................................................................38
CLOSE...............................................................................................................................40
COM ERROR ON/OFF...................................................................................................41
COMSET...........................................................................................................................43
COMSET OFF..................................................................................................................45
COMSET ON...................................................................................................................46
COMSTAT.........................................................................................................................47
CONT................................................................................................................................48
COPY.................................................................................................................................49
COUNT&.........................................................................................................................50
CURDIR$..........................................................................................................................52
CSUM................................................................................................................................53
CUT...................................................................................................................................54
CUT ON/OFF...................................................................................................................55
DATE$...............................................................................................................................56
DATEADD$......................................................................................................................57
DATEDIFF........................................................................................................................59
DBBREAK.........................................................................................................................60
DBBREAK OFF.................................................................................................................61
DBEND.............................................................................................................................62
DBSTDIO..........................................................................................................................63
DBSTEP.............................................................................................................................64
DELETE............................................................................................................................65
DELETEPFSVAR...............................................................................................................66
DEVICES...........................................................................................................................67
DIM...................................................................................................................................70
DIR....................................................................................................................................71
DIRNAME$.......................................................................................................................74
END...................................................................................................................................75
EOF....................................................................................................................................76
ERL....................................................................................................................................77
ERR....................................................................................................................................78
ERR$..................................................................................................................................79
ERROR..............................................................................................................................80
EXECUTE.........................................................................................................................82
FIELD................................................................................................................................83
FIELDNO..........................................................................................................................84
FILE& LOAD....................................................................................................................85
FILENAME$......................................................................................................................86
FILES.................................................................................................................................87
FLOATCALC$...................................................................................................................89
FONT (FT)........................................................................................................................90
FONTD ............................................................................................................................92
FONTNAME$...................................................................................................................93
FONTS..............................................................................................................................94
FOR...TO...NEXT.............................................................................................................95
FORMAT...........................................................................................................................96
FORMAT DATE$..............................................................................................................98
FORMAT INPUT..............................................................................................................99
FORMAT TIME$............................................................................................................100
FORMAT$.......................................................................................................................101
FORMFEED (FF)............................................................................................................104
FRE..................................................................................................................................105
FUNCTEST.....................................................................................................................106
FUNCTEST$...................................................................................................................107
GET.................................................................................................................................108
GETASSOC$...................................................................................................................109
GETASSOCNAME$........................................................................................................110
GETPFSVAR....................................................................................................................111
GOSUB............................................................................................................................112
GOTO..............................................................................................................................114
HEAD..............................................................................................................................115
HEAD, cont.....................................................................................................................116
IF...THEN...(ELSE)..........................................................................................................117
IMAGE BUFFER MIRROR............................................................................................119
IMAGE BUFFER SAVE...................................................................................................120
IMAGE LOAD.................................................................................................................121
IMAGENAME$...............................................................................................................122
IMAGES...........................................................................................................................123
IMMEDIATE...................................................................................................................124
INKEY$............................................................................................................................127
INPUT (IP)......................................................................................................................128
INPUT ON/OFF.............................................................................................................130
INPUT#...........................................................................................................................131
INPUT$...........................................................................................................................132
INSTR..............................................................................................................................133
INVIMAGE (II)...............................................................................................................134
KEY BEEP........................................................................................................................135
KEY ON/OFF..................................................................................................................136
KEYBMAP$.....................................................................................................................137
KILL.................................................................................................................................139
LAYOUT..........................................................................................................................141
LAYOUT END................................................................................................................144
LAYOUT INPUT............................................................................................................145
LAYOUT RUN................................................................................................................146
LBLCOND......................................................................................................................147
LED ON/OFF..................................................................................................................149
LEFT$..............................................................................................................................150
LEN..................................................................................................................................151
LET..................................................................................................................................152
LINE INPUT...................................................................................................................153
LINE INPUT#.................................................................................................................154
LIST.................................................................................................................................155
LISTPFSVAR...................................................................................................................157
LOAD..............................................................................................................................158
LOC.................................................................................................................................159
LOF..................................................................................................................................160
LSET................................................................................................................................161
LTS& ON/OFF................................................................................................................162
MAG................................................................................................................................163
MAKEASSOC..................................................................................................................164
MAP.................................................................................................................................165
MERGE............................................................................................................................167
MIBVAR&.......................................................................................................................168
MID$...............................................................................................................................169
MKDIR............................................................................................................................170
NAME DATE$................................................................................................................171
NAME WEEKDAY$........................................................................................................172
NASC...............................................................................................................................173
NASCD............................................................................................................................175
NEW................................................................................................................................176
NORIMAGE (NI)............................................................................................................177
ON BREAK GOSUB.......................................................................................................178
ON COMSET GOSUB...................................................................................................179
ON ERROR GOTO........................................................................................................181
ON GOSUB....................................................................................................................182
ON GOTO......................................................................................................................183
ON HTTP GOTO...........................................................................................................184
ON KEY GOSUB............................................................................................................185
ON/OFF LINE................................................................................................................187
ON MIBVAR& GOSUB.................................................................................................188
OPEN...............................................................................................................................189
OPTIMIZE BATCH ON/OFF........................................................................................192
PORTIN..........................................................................................................................193
PORTOUT ON/OFF......................................................................................................194
PRBAR (PB).....................................................................................................................195
PRBOX (PX)....................................................................................................................196
PRBUF.............................................................................................................................201
PRIMAGE (PM)..............................................................................................................202
PRINT (?).........................................................................................................................203
PRINT KEY ON/OFF.....................................................................................................204
PRINT#...........................................................................................................................205
PRINTFEED (PF)............................................................................................................206
PRINTONE.....................................................................................................................208
PRINTONE#...................................................................................................................209
PRLINE (PL)....................................................................................................................210
PRPOS (PP).....................................................................................................................211
PRSTAT...........................................................................................................................213
PRTXT (PT)....................................................................................................................215
PUT.................................................................................................................................217
RANDOM.......................................................................................................................218
RANDOMIZE.................................................................................................................219
READY.............................................................................................................................220
REBOOT.........................................................................................................................221
REDIRECT OUT............................................................................................................222
REM (')............................................................................................................................223
REMOVE IMAGE...........................................................................................................224
RENDER ON/OFF.........................................................................................................225
RENUM...........................................................................................................................226
REPRINT ON/OFF........................................................................................................227
RESUME.........................................................................................................................228
RETURN.........................................................................................................................229
REWINDCONTROL.....................................................................................................230
REWINDVOID...............................................................................................................231
RIGHT$...........................................................................................................................232
RSET................................................................................................................................233
RUN.................................................................................................................................234
SAVE................................................................................................................................235
SET FAULTY DOT.........................................................................................................236
SETASSOC......................................................................................................................237
SETPFSVAR.....................................................................................................................238
SETSTDIO......................................................................................................................239
SETUP.............................................................................................................................241
SETUP GET....................................................................................................................244
SETUP KEY.....................................................................................................................245
SETUP WRITE................................................................................................................246
SGN.................................................................................................................................248
SORT...............................................................................................................................249
SOUND...........................................................................................................................250
SPACE$............................................................................................................................251
SPLIT...............................................................................................................................252
STOP...............................................................................................................................253
STORE IMAGE...............................................................................................................254
STORE INPUT...............................................................................................................255
STORE OFF....................................................................................................................256
STR$................................................................................................................................257
STRING$.........................................................................................................................258
SYSHEALTH...................................................................................................................259
SYSHEALTH$.................................................................................................................261
SYSVAR............................................................................................................................262
TAGFIELD......................................................................................................................270
TAGFORMAT.................................................................................................................272
TAGPROTECT...............................................................................................................274
TAGREAD.......................................................................................................................275
TAGWRITE.....................................................................................................................276
TESTFEED......................................................................................................................277
TICKS..............................................................................................................................278
TIME$.............................................................................................................................279
TIMEADD$.....................................................................................................................280
TIMEDIFF.......................................................................................................................281
TRANSFER KERMIT.....................................................................................................282
TRANSFER NET............................................................................................................283
TRANSFER STATUS......................................................................................................285
TRANSFER ZMODEM..................................................................................................286
TRANSFER$...................................................................................................................287
TRANSFERSET...............................................................................................................288
TRON/TROFF................................................................................................................289
VAL..................................................................................................................................290
VERBON/VERBOFF......................................................................................................291
VERSION$......................................................................................................................292
WEEKDAY......................................................................................................................293
WEEKDAY$....................................................................................................................294
WEEKNUMBER.............................................................................................................295
WHILE...WEND.............................................................................................................296
XORMODE ON/OFF.....................................................................................................297
External Command; Account Secret..................................................................................298
External Command; ZMODEM......................................................................................300
3 Image Transfer
Protocols...........................................................................................................................302
Image Format....................................................................................................................303
UBI10...............................................................................................................................306
PRBUF Protocol...............................................................................................................308
5 Bar Codes
Introduction.....................................................................................................................344
Supported Bar Codes........................................................................................................345
One-and Two-Dimensional Bar Codes..............................................................................347
Code 39...........................................................................................................348
Code 128.........................................................................................................349
Data Matrix.....................................................................................................351
EAN-8.............................................................................................................352
EAN-13...........................................................................................................353
EAN 128.........................................................................................................354
Interleaved 2 of 5.............................................................................................356
MaxiCode........................................................................................................357
MicroPDF417.................................................................................................359
PDF417..........................................................................................................361
QR Code.........................................................................................................363
RSS-14............................................................................................................365
RSS-14 Truncated............................................................................................366
RSS-14 Stacked...............................................................................................367
RSS-14 Stacked Omnidirectional....................................................................369
RSS-14 Limited...............................................................................................370
RSS-14 Expanded............................................................................................371
RSS-14 Expanded Stacked...............................................................................372
UPC-A............................................................................................................374
UPC-E............................................................................................................375
AddOn Codes...................................................................................................................376
Summary.........................................................................................................376
Composite Bar Codes.......................................................................................................377
Introduction....................................................................................................377
Function..........................................................................................................377
Example..........................................................................................................381
EAN8 Composite with CC-A or CC-B...........................................................382
EAN13 Composite with CC-A or CC-B.........................................................383
UPC-E Composite with CC-A or CC-B.........................................................384
UPC-A Composite with CC-A or CC-B.........................................................385
EAN.UCC 128 Composite with CC-C...........................................................386
EAN.UCC 128 Composite with CC-A or CC-B.............................................388
RSS-14 (Composite)........................................................................................390
RSS-14 Truncated (Composite).......................................................................392
RSS-14 Stacked (Composite)...........................................................................394
RSS-14 Stacked Omnidirectional (Composite)................................................396
RSS-14 Limited (Composite)..........................................................................398
RSS-14 Expanded (Composite).......................................................................400
RSS-14 Expanded Stacked (Composite)..........................................................402
Setup Bar Codes................................................................................................................404
7 Error Messages
Error table.........................................................................................................................418
A Keyboards
EasyCoder PF2i/4i/4ci.....................................................................................................422
Actual Keyboard Appearance...........................................................................422
ID Numbers....................................................................................................422
Position Numbers............................................................................................423
ASCII Values...................................................................................................423
EasyCoder PM4i...............................................................................................................424
Actual Keyboard Appearance...........................................................................424
ID Numbers....................................................................................................424
Position Numbers............................................................................................425
ASCII Values...................................................................................................425
EasyCoder PX4i/6i............................................................................................................426
Actual Keyboard Appearance...........................................................................426
ID Numbers....................................................................................................426
Position Numbers............................................................................................427
ASCII Values...................................................................................................427
EasyCoder PX4i/6i Alphanumeric keyboard.....................................................................428
Fingerprint Documentation
This Programmer's Reference Manual contains detailed information on
all programming instructions in the Intermec Fingerprint programming
language in alphabetical order. It also contains other program-related
information that is common for all Fingerprint-compatible printer models
from Intermec.
Those who wish to get started with Fingerprint programming and printer
control are recommended to, in addition to this manual, refer to the
Fingerprint v8.XX Tutorial.
The Intermec Direct Protocol, while being a subset of Intermec
Fingerprint, is described in more detail in the Intermec Direct Protocol
v8.XX Programmer's Reference Manual.
All information needed by the operator, like how to run the printer, how
to load the media or ribbon supply and how to maintain the printer,
can be found in the User’s Guide for the printer model in question. You
will also find information on installation, setup, print resolution, media
specifications, and other technical information, which is specific for each
printer model.
All these manuals are available for download from the Intermec Global
Sales and Service web site, see www.intermec.com.
Modified Instructions
TAGFIELD New Gen 2 segment names.
TESTFEED Identifies RFID media.
Note: A file or directory name may contain all printable characters except
“:” (colon) and “/” (slash). Only /c (c:) supports creating and removing
directories.
In device "/c/"
.setup.saved Current setup values (prt section)
boot/
passwd Password storage
rmmcz* Kernel file
resu* Kernel file
psa* Kernel file
STDIO Intermec Shell auxiliary file
APPLICATION Intermec Shell auxiliary file
ADMIN/
restrictions Restrictions storage
To read the contents of these files, run the FILELIST.PRG program or
COPY the file in question to the serial port "uart1:".
*
Not in Fingerprint 10.0.X.
Syntax
In the syntax descriptions which follow, certain punctuation marks are
used to indicate various types of data. They must not be included in the
program.
[ ] indicate that the enclosed entry is optional.
| indicates alternatives on either side of the bar.
< > indicate grouping.
..... indicate repetition of the same type of data.
↔ indicates a compulsory space character between two keywords.
" is a quotation mark (ASCII 34 dec).
↵ indicates a carriage return or linefeed on the host
Uppercase letters indicate keywords, which must be entered exactly as
listed, with the exception that lowercase letters also are allowed unless
otherwise stated.
The following abbreviations are used:
<scon> string constant
<ncon> numeric constant
<sexp> string expression
<nexp> numeric expression
<svar> string variable
<nvar> numeric variable
<stmt> statement
<line label> line label
ABS
Purpose Function returning the absolute value of a numeric expression.
Syntax ABS(<nexp>)
<nexp> is a numeric expression, from which the absolute value will be
returned.
Remarks The absolute value of a number is always positive or zero. Note that the
expression must be enclosed within parentheses.
PRINT ABS(25-20)
5
PRINT ABS(5-5)
0
PRINT ABS(20*-5)
100
ACTLEN
Purpose Function returning the length of the most recently executed PRINT-
FEED, FORMFEED, or TESTFEED statement.
Syntax ACTLEN
Remarks The length of the most recently executed paper feed operation, resulting
from a PRINTFEED, FORMFEED, or TESTFEED statement, will be
returned as a number of dots. Due to technical reasons concerning the
stepper motor control and label gap detection, a small deviation from the
expected result may occur.
Example
In this example, a 12 dots/mm printer is loaded with 90 mm (1080 dots)
long labels separated by a 3 mm (36 dots) gap. Start- and stopadjust setup
values are both set to 0:
10 FORMFEED
20 PRINT ACTLEN
RUN
yields:
1121
The deviation from the expected result (1116) is normal and should have
no practical consequences (less than 1 mm).
ALIGN (AN)
Purpose Statement specifying which part (anchor point) of a text field, bar code
field, image field, line, or box will be positioned at the insertion point.
Syntax ALIGN|AN<nexp>
<nexp> is the anchor point of the object (1–9).
Default value: 1
Reset to default by: PRINTFEED execution
Remarks Each text, bar code, or image field has nine possible anchor points, whe-
reas lines and boxes have three. One of these points must be selected, or
the default value (1) will be used. The selected anchor point decides the
position of the object in relation to the insertion point, which is decided
by the nearest preceding PRPOS statement. Furthermore, the field will be
rotated around the anchor point according to the nearest preceding DIR
statement.
The nine anchor points of a text, bar code, or image field are located in the
same manner as, for example, the numeric keys on a computer keyboard:
Lines and boxes have three anchor points only: left, center, and right.
The anchor points for the various types of field are illustrated below.
Text field:
For composite bar codes, the human readable bar code interpretation for
the 2-dimensional element is outside the imaginary box.
Image field:
The size of an image field is decided when the field is created. Note that an
image field consists of the entire area of the original image, even possible
white or transparent background.
Box:
The anchor points are situated at the lower side of the line or box in rela-
tion to how text is printed in the selected direction. Lines and boxes have
only three anchor points, each of which can be specified by means of three
different numbers.
A special case is multi-line text fields in a box. The fields can be aligned in
nine positions in relation to the box, whereas the box itself only has three
anchor points, as described above. Refer to the PRBOX statement for more
information on alignment of multi-line text fields.
Example Printing of a label with a single line of text being aligned left on the base-
line:
10 PRPOS 30,250
20 DIR 1
30 ALIGN 4
40 FONT "Swiss 721 BT"
50 PRTXT "Hello!"
60 PRINTFEED
RUN
The text “Hello!” will be positioned with the baseline aligned left to the
insertion point specified by the coordinates X=30; Y=250 in line 10.
ASC
Purpose Function returning the decimal ASCII value of the first character in a
string expression.
Syntax ASC(<sexp>)
<sexp> is a string expression, from which the ASCII decimal value of the
first character will be returned.
Remarks ASC is the inverse function of CHR$. The decimal ASCII value will be
given according to the selected character set (see NASC statement).
Examples
10 A$="GOOD MORNING"
20 PRINT ASC(A$)
RUN
yields:
71
10 B$="123456"
20 C% = ASC(B$)
30 PRINT C%
RUN
yields:
49
BARADJUST
Purpose Statement for enabling/disabling automatic adjustment of bar code
position in order to avoid faulty printhead dots.
Syntax BARADJUST<nexp1>,<nexp2>
<nexp1> is the maximum left offset in dots.
<nexp2> is the maximum right offset in dots.
Default: 0,0 (BARADJUST disabled)
Remarks Under unfortunate circumstances, a printer may have to be run for some
time with a faulty printhead, before a replacement printhead can be instal-
led. Single faulty dots will produce very thin ”white” lines along the media.
This may be tolerable for text, graphics, and vertical (ladder) bar codes, but
for horizontal bar codes (picket fence), this condition is likely to render the
bar code unreadable.
If the bar code is moved slightly to the left or right, the trace of a faulty dot
may come between the bars of the bar code and the symptom is remedied
for the time being. The statement will attempt to adjust the bar code even
if several faulty dots have been specified, but will return error 1052 if it
was unable to adjust the bar code succesfully.
The BARADJUST statement allows the Intermec Fingerprint firmware to
automatically readjust the bar code position within certain limits, when a
faulty dot is detected (see HEAD function) and marked as faulty (see SET
FAULTY DOT statement). The maximum deviation from the original
position, as specified by the PRPOS statement, can be set up separately
for the directions left and right. Setting both parameters to 0 (zero) will
disable BARADJUST.
The BARADJUST statement does not work with:
• Vertically printed bar codes (ladder style)
• Stacked bar codes (for example Code 16K)
• Bar codes with horizontal lines (for example DUN-14/16)
• EAN/UPC-codes (interpretation not repositioned)
Examples Enabling BARADJUST within 10 dots to the left and 5 dots to the right
of the original position for a specific bar code, then disabling it:
10 BARADJUST 10,5
20 PRPOS 30,100
30 BARSET "CODE39",2,1,3,120
40 BARFONT ON
50 PRBAR "ABC"
60 BARADJUST 0,0
70 PRINTFEED
BARCODENAME$
Purpose Function returning the names of the bar code generators stored in the
printer’s temporary memory ("tmp:").
Syntax BARCODENAME$(<nexp>)
<nexp> the result of the expression should be either false or true,
where...
False (0) indicates first bar code.
True (≠0) indicates next bar code.
Example
Use a program like this to list the names of all bar codes in "tmp:". Note
that bar codes with dynamic downloading will not appear before they have
been called by a BARSET or BARTYPE statement.
10 A$ = BARCODENAME$ (0)
20 IF A$ = "" THEN END
30 PRINT A$
40 A$ = BARCODENAME$ (-1)
50 GOTO 20
RUN
yields for example:
ADDON2
ADDON5
C2OF5
C2OF5IND
C2OF5INDC
C2OF5MAT
CODABAR
CODE11
CODE128
CODE128A
CODE128B
CODE128C
CODE16K
CODE39
CODE39A
CODE39C
CODE49
CODE93
DATAMATRIX
DUN
EAN128
EAN128A
EAN128B
etc, etc.
BARFONT (BF)
Purpose Statement specifying fonts for the printing of bar code interpretation.
Syntax BARFONT|BF[#<ncon>,]<sexp1>[,<nexp1>[,<nexp2>[,<nexp3>
[,<nexp4> [,<nexp5>[,<nexp6>[,<nexp7>[,<nexp8>[,<nexp9>
]]]]]]]]][ON]
#<ncon> is, optionally, the start parameter in the syntax above.
<sexp1> is the name of the font selected for bar code interpretations.
<nexp1> is the height in points of the font.
<nexp2> is the clockwise slant in degrees (0-90°).
<nexp3> is the distance in dots between bar code and bar font.
<nexp4> is the magnification in regard of height (1-4).
<nexp5> is the magnification in regard of width (1-4).
<nexp6> is the width enlargement in percent relative the height (1-1000).
Default: 100. Does not work with bitmap fonts.
<nexp7> is the insertion point for the bar code interpretation.
<nexp8> is the horizontal offset from the insertion point for the bar code
interpretation.
<nexp9> is the vertical offset from the insertion point for the bar code
interpretation.
ON optionally enables the printing of bar code interpretation.
Reset to default by: PRINTFEED execution.
Example Programming a Code 39 bar code, selecting the same barfont for all direc-
tions, and enabling the printing of the bar code interpretation, can be done
this way:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARSET "CODE39",2,1,3,120
50 BARFONT "Swiss 721 BT",10,8,5,1,1,100 ON
60 PRBAR "ABC"
70 PRINTFEED
80 END
Syntax BARFONT↔ON|BARFONT↔OFF[,<nexp>]
BF↔ON|BF↔OFF[,<nexp>]
<nexp> For EAN/UPC bar codes disables/enables guard bar printing.
Default: BARFONT OFF
Reset to default by: PRINTFEED execution
Remarks Usually, you start your program by selecting a suitable bar code interpre-
tation font, see BARFONT. Then use BARFONT ON and BARFONT
OFF statements to control whether to print the interpretation or not,
depending on application.
BARFONT ON can be replaced by a BARFONT statement appended by
a trailing ON, see BARFONT statement.
When printing EAN/UPC bar codes, the trailing parameter 0 can be
specified after the BARFONT OFF command to disable the printing of
the guard bars, which are set to print by default. BARFONT OFF, 0 will
disable the printing of the guard bars. BARFONT OFF,1 is the default
(guard bars enabled) and is equivalent to BARFONT OFF.
Examples Programming a Code 39 bar code, selecting a barfont for each direction
and enabling the printing of the bar code interpretation. Compare with
the example for BARFONT statement:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARSET "CODE39",2,1,3,120
50 BARFONT "Swiss 721 BT",10,8,5,1,1
60 BARFONT ON
70 PRBAR "ABC"
80 PRINTFEED
90 END
Programming a EAN8 bar code, and choosing to disable guard bars:
10 BARTYPE "EAN8"
20 BARFONT OFF,0
30 PRBAR "1234567"
40 PRINTFEED
BARHEIGHT (BH)
Purpose Statement specifying the height of a bar code.
Syntax BARHEIGHT|BH<nexp>
<nexp> is the height of the bars in the bar code expressed in number of
dots.
Default value: 100 dots.
Reset to default by: PRINTFEED execution.
Remarks The barheight specifies the height of the bars, that make up the code. In
bar codes consisting of several elements on top of each other, for example
Code 16K, the barheight specifies the height of one element. The height is
not affected by BARMAG statements.
BARHEIGHT can be replaced by a parameter in the BARSET statement.
Example Programming a Code 39 bar code, selecting a barfont for all directions and
enabling the printing of the bar code interpretation:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARTYPE "CODE39"
50 BARRATIO 2,1
60 BARHEIGHT 120
70 BARMAG 3
80 BARFONT "Swiss 721 BT"ON
90 PRBAR "ABC"
100 PRINTFEED
BARMAG (BM)
Purpose Statement specifying the magnification in regard to width of the bars in a
bar code.
Syntax BARMAG|BM<nexp>
<nexp> is the magnification in regard to width of the bars, which make
up the bar code.
Allowed input: Depends on type of bar code.
Default value: 2
Reset to default by: PRINTFEED execution.
Remarks The magnification only affects the bar code width, not the height of the
bars (see BARHEIGHT). For example, by default the BARRATIO is 3:1
and the BARMAG is 2, which means that the wide bars will be 6 dots
wide and the narrow bars will be 2 dots wide (2 × 3:1 = 6:2).
The magnification also affects the interpretation in EAN and UPC bar
codes, since the interpretation is an integrated part of the EAN/UPC code.
BARMAG can be replaced by a parameter in the BARSET statement.
Example Programming a Code 39 bar code, selecting a barfont for all directions and
enabling the printing of the bar code interpretation:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARTYPE "CODE39"
50 BARRATIO 2,1
60 BARHEIGHT 120
70 BARMAG 3
80 BARFONT "Swiss 721 BT" ON
90 PRBAR "ABC"
100 PRINTFEED
BARRATIO (BR)
Purpose Statement specifying the ratio between the wide and the narrow bars in a
bar code.
Syntax BARRATIO|BR<nexp1>,<nexp2>
<nexp1> is the thickness of the wide bars relative to the narrow bars.
<nexp2> is the thickness of the narrow bars relative to the wide bars.
Default value: 3:1
Reset to default by: PRINTFEED execution.
Remarks This statement specifies the ratio between the wide and the narrow bars in
a bar code in relative terms. To decide the width of the bars in number of
dots, the ratio must be multiplied by the BARMAG value.
Example:
The default BARRATIO is 3:1 and the default BARMAG is 2.
(3:1) × 2 = 6:2
that is, the wide bars are 6 dots wide and the narrow bars are 2 dots wide.
Note that certain bar codes have a fixed ratio, for example EAN and UPC
codes. In those cases, any BARRATIO statement will be ignored. Refer to
Chapter 5, “Bar Codes” later in this manual.
BARRATIO can be replaced by two parameters in the BARSET statement.
Example Programming a Code 39 bar code, selecting a barfont for all directions and
enabling the printing of the bar code interpretation:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARTYPE "CODE39"
50 BARRATIO 2,1
60 BARHEIGHT 120
70 BARMAG 3
80 BARFONT "Swiss 721 BT"ON
90 PRBAR "ABC"
100 PRINTFEED
BARSET
Purpose Statement specifying a bar code and setting additional parameters to com-
plex bar codes.
Syntax BARSET[#<ncon>,][<sexp>[,<nexp1>[,<nexp2>[,<nexp3>[,<nexp4>
[,<nexp5>[,<nexp6>[,<nexp7>[,<nexp8>[,<nexp9>[,<nexp10>]]]]]]]]]]]
#<ncon> is the the start parameter in the syntax above.
<sexp> (#1) is the bar code type. No default.
<nexp1> (#2) is the ratio of the large bars. Default: 3.
<nexp2> (#3) is the ratio of the small bars. Default: 1.
<nexp3> (#4) is the enlargement. Default: 2
<nexp4> (#5) is the height of the code in dots. Default: 100.
<nexp5> (#6) bar code specific parameter, see Chapter 5. Default: 2.
<nexp6> (#7) bar code specific parameter, see Chapter 5. Default: 3.
<nexp7> (#8) bar code specific parameter, see Chapter 5. Default: 1.
<nexp8> (#9) bar code specific parameter, see Chapter 5. Default: 0.
<nexp9> (#10) bar code specific parameter, see Chapter 5. Default: 0.
<nexp10> (#11) bar code specific parameter, see Chapter 5. Default: 0.
Reset to default by: PRINTFEED execution.
Note: The parameter descriptions under the syntax do not apply to all bar
codes that can be specified using BARSET. Some bar codes have other
meanings or use certain parameters only as place holders. See Chapter 5
“Bar Codes” for more information.
Start Parameter:
Start parameter specifies which parameter in the syntax above should be
the first optional parameter (#1-#11). Thereby you may bypass some of the
initial parameters, for example ratio and enlargement.
Default value: #1
#1 Bar Code Type:
The bar code type parameter corresponds to the BARTYPE statement.
BARSET, cont.
#5 Bar Code Height:
The height parameter corresponds to the BARHEIGHT statement. In QR
Code, this parameter is used to specify model (1 or 2).
Default value: 100 dots
#6-#11 Bar code specific parameters:
These parameters have different meanings for each bar code or are used
only as placeholders. Refer to the descriptions of the various 2-dimensional
and composite bar codes in Chapter 5 for complete syntax descriptions
and programming examples.
Example This example shows how a BARSET statement is used to specify a Code
39 bar code (compare for example with the example for BARTYPE stmt):
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARSET "CODE39",2,1,3,120
50 BARFONT "Swiss 721 BT",10,8,5,1,1 ON
60 PRBAR "ABC"
70 PRINTFEED
BARTYPE (BT)
Purpose Statement specifying the type of bar code.
Syntax BARTYPE|BT<sexp>
<sexp> specifies the type of bar code.
Allowed input: Valid bar type name.
Default value: None.
Remarks The selected bar code type must exist in the printer’s memory and be
entered in the form of a string expression. Please refer to Chapter 5, “Bar
Codes” later in this manual for a list of the bar codes that are included in
the Intermec Fingerprint firmware and their respective designations.
BARTYPE can be replaced by a parameter in the BARSET statement.
Example Programming a Code 39 bar code, selecting a barfont for all directions,
and enabling the printing of the bar code interpretation:
10 PRPOS 30,400
20 DIR 1
30 ALIGN 7
40 BARTYPE "CODE39"
50 BARRATIO 2,1
60 BARHEIGHT 120
70 BARMAG 3
80 BARFONT "Swiss 721 BT" ON
90 PRBAR "ABC"
100 PRINTFEED
BEEP
Purpose Statement ordering the printer to emit a beep.
Syntax BEEP
Remarks This statement makes the printer’s built-in buzzer sound at ≈800 Hz for
1/4 of a second. If a different frequency and/or duration is desired, use a
SOUND statement instead.
The EasyCoder PD41 does not have a beeper, and will thus not emit a
sound. The BEEP command will however cause an equally long delay in
the PD41.
BREAK
Purpose Statement specifying a break interrupt character separately for the key-
board and each serial communication channel.
Syntax BREAK<nexp1>,<nexp2>
<nexp1> is one of the following devices:
0 = "console:"
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
7 = "uart4:"
8 = "uart5"
<nexp2> is the decimal ASCII value for the break interrupt character.
Default: Comm. channels: ASCII 03 decimal
Console: ASCII 158 decimal (<Shift> + <Pause>)
BREAK, cont.
It is strongly recommended to include some facility for issuing a break
interrupt from the host computer in startup (autoexec) files. If not, you
may find yourself with an erroneous program running in a loop without
being able to break it!
Examples In this example, the ASCII character 127 decimal is selected and enabled
as BREAK character on the communication channel "uart1:":
10 BREAK 1,127
20 BREAK 1 ON
.....
.....
.....
In next example, BREAK characters are specified for both the keyboard
("console:") and the serial communication channel "uart1:". The loop
can be interrupted either by pressing the key usually marked “F1” on the
printer’s keyboard, or by typing an uppercase X on the keyboard of the
host:
10 BREAK 0,1:BREAK 1,88
20 BREAK 0 ON:BREAK 1 ON
30 GOTO 30
RUN
Reset BREAK to default by turning the printer off and on.
BREAK ON/OFF
Purpose Statement enabling or disabling break interrupt separately for the keyboard
and each serial communication channel.
Syntax BREAK<nexp>ON|OFF
<nexp> is one of the following devices:
0 = "console:"
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
7 = "uart4:"
8 = "uart5"
Default: Comm. ports: Disabled
Console: Enabled
Remarks The use of the break interrupt specified by a BREAK statement can be
enabled or disabled separately for each serial communication channel or
for the printer’s built-in keyboard by BREAK ON or BREAK OFF state-
ments. By default, break interrupt is enabled from the printer’s keyboard
and disabled from all communication channels.
It is not possible to perform a break from the console on the PD41 printer.
BREAK OFF deletes any existing break interrupt character stored in the
printer’s temporary memory for the specified device.
Example In this example, the ASCII character 127 decimal is selected and enabled
as BREAK character on the communication channel "uart1:". At the same
time, BREAK from the printer’s keyboard is disabled.
10 BREAK 1,127
20 BREAK 1 ON:BREAK 0 OFF
.....
.....
.....
BUSY
Purpose Statement ordering a busy signal, for example XOFF, CTS/RTS, or PE, to
be transmitted from the printer on the specified communication channel.
Syntax BUSY[<nexp>]
<nexp> optionally specifies the channel as:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
7 = "uart4:"
8 = "uart5"
Remarks Communication protocol usually contain some “busy” signal, which tells
the host computer that the printer, for some reason, is unable to receive
data.
The BUSY statement allows you to order a busy signal to be transmitted
on the specified communication channel. If no channel is specified, the
signal will be transmitted on the standard OUT communication channel,
see SETSTDIO statement.
To allow the printer to receive more data, use a READY statement.
For the optional "centronics:" communication channel, BUSY/READY
control the PE (paper end) signal on pin 12 according to an error-trapping
routine (BUSY = PE high).
Example You may, for example, want to prevent the printer from receiving more
data on "uart2:" during the process of printing a label (running this
example requires an optional interface board to be fitted):
10 FONT "Swiss 721 BT"
20 PRTXT "HELLO!"
30 BUSY2
40 PRINTFEED
50 READY2
RUN
CHDIR
Purpose Statement specifying the current directory.
Syntax CHDIR<scon>
<scon> specifies the current directory (see DEVICES)
Default: "/c"
Remarks By default, the printer’s permanent memory ("/c" ) is the current directory,
which means the directory that is used if the Intermec Fingerprint instruc-
tion does not contain any reference to a directory, for example FILES.
This implies that to access the temporary memory ("tmp:"), the storage
part of the RTC/Dallas key circuit ("storage:"), or an optional memory
card ("/rom" or "card1:"), you must include such a reference in your
instructions, for example FILES "/rom".
The CHDIR statement allows you to appoint another directory than "/c"
as the current directory. Obviously, this implies that you must specify the
permanent memory ("/c") whenever you want to access it.
Example
In this example, the current directory is changed to "card1:", all files in
"card1:" are listed, and finally the current directory is changed back to
"/c". (This example is only included to illustrate the principles of changing
the current directory. It is more efficient to use FILES "card1:" to read its
contents.)
10 CHDIR"card1:"
20 FILES
30 CHDIR"/c"
RUN
CHECKSUM
Purpose Statement calculating the checksum of a range of program lines in connec-
tion with the transfer of programs.
Syntax CHECKSUM(<nexp1>,<nexp2)
<nexp1> is the number of the first line in a range of program lines.
<nexp2> is the number of the last line in a range of program lines.
Remarks The checksum is calculated from parts of the internal code using an advan-
ced algorithm. Therefore, it is recommended to let the printer calculate the
checksum before the transfer of a program. After the transfer is completed,
let the receiving printer do the same calculation and compare the check-
sums.
Example
In this example, the checksum is calculated of all program lines between
line 10 and line 2000 in the program "DEMO.PRG".
NEW
LOAD "DEMO.PRG"
PRINT CHECKSUM(10,2000)
yields:
60095
CHR$
Purpose Function returning the readable character from a decimal ASCII code.
Syntax CHR$(<nexp>)
<nexp> is the decimal ASCII code to be converted to a readable character.
Remarks This function is useful for entering characters that cannot be produced
from the keyboard of the host, for example non-printable characters ASCII
0-31 dec. Only integers between 0 and 255 are allowed. Input less than 0
or larger than 255 will result in an error condition (Error 41, “Parameter
out of range)."
Example
The decimal ASCII code for “A" is 65 and for “B" is 66.
10 A$ = CHR$(65)
20 B$ = CHR$(40+26)
30 PRINT A$
40 PRINT B$
RUN
yields:
A
B
CLEANFEED
Purpose Statement running the printer’s feed mechanism.
Syntax CLEANFEED<nexp>
<nexp> is the feed length expressed as a positive or negative number of
dots.
Remarks The CLEANFEED statement activates the stepper motor that drives the
printer’s platen roller (the rubber roller beneath the printhead). In case of
thermal transfer printers, it also often drives the ribbon mechanism. The
motor will run regardless of possible error conditions, for example if the
printhead is lifted or not, or if there is no ribbon or media supply left.
Thus, the CLEANFEED statement is suitable for cleaning and for the
loading of transfer ribbon.
A positive CLEANFEED value makes the stepper motor rotate the rollers
forward, that is as when feeding out a label.
A negative CLEANFEED value makes the stepper motor rotate the rollers
backwards, that is as when pulling back a label.
The execution of a CLEANFEED statement, as opposed to TESTFEED,
does not affect the adjustment of the label stop sensor or black mark
sensor, regardless what type of media or other objects that passes the
sensor.
Note that the CLEANFEED statement, as opposed to FORMFEED,
always must be specified in regard of feed length.
Example In order to pull a cleaning card back and forth under the printhead three
times, three 1200 dots long positive CLEANFEEDs and then the same
amount of negative CLEANFEEDs are performed:
10 FOR A%=1 TO 3
20 CLEANFEED 1200
30 CLEANFEED -1200
40 NEXT
RUN
CLEAR
Purpose Statement clearing strings, variables, and arrays in order to free memory
space.
Syntax CLEAR
Remarks The CLEAR statement empties all strings, sets all variables to zero, and
resets all arrays to their default values. As a result, more free memory space
becomes available.
Example In this example, more free memory space is obtained after the strings have
been emptied by means of a CLEAR statement:
10 A$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
20 B$ = "abcdefghijklmnopqrstuvwxyz"
30 FOR I%=0 TO 3:FOR J%=0 TO 3:FOR K%=0 TO 20
40 C$(I%,J%)=C$(I%,J%)+A$
50 NEXT K%:NEXT J%:NEXT I%
60 PRINT "String A before: ";A$
70 PRINT "String B before: ";B$
80 PRINT "Free memory before: ";FRE(1)
90 CLEAR
100 PRINT "String A after: ";A$
110 PRINT "String B after: ";B$
120 PRINT "Free memory after: ";FRE(1)
RUN
yields:
String A before: ABCDEFGHIJKLMNOPQRSTUVWXYZ
String B before: abcdefghijklmnopqrstuvwxyz
Free memory before: 1867368
String A after:
String B after:
Free memory after: 1876200
Ok
CLIP
Purpose Statement for enabling/disabling the printing of partial fields.
Example In this example, only the last part of the text will be printed:
10 CLIP ON
20 PRPOS -100,30
30 PRTXT "INTERMEC PRINTER"
40 PRINTFEED
RUN
CLL
Purpose Statement for partial or complete clearing of the print image buffer.
Remarks The print image buffer is used to store the printable image after processing
awaiting the printing to be executed. The buffer can be cleared, partially or
completely, by the use of a CLL statement:
- CLL<nexp> partially clears the buffer from a specified field to the end
of the program. The field is specified by a FIELDNO function.
Partial clearing is useful in connection with print repetition. To avoid
superfluous reprocessing, one or several fields can be erased from the
buffer and be replaced by other information, while the remaining parts
of the label are retained in the buffer.
Note that there must be no changes in the layout between the PRINT-
FEED and the CLL statements, or else the layout will be lost. Also
note that partial clearing always starts from the end, which means that
the fields which are executed last are cleared first.
- CLL (without any field number) clears the buffer completely.
When certain error conditions have occurred, it is useful to be able
to clear the print image buffer without having to print a faulty label.
Should the error be attended to, without the image buffer being clea-
red, there is a risk that the correct image will be printed on top of the
erroneous one on the same label. It is therefore advisable to include a
CLL statement in your error-handling subroutines, when you are wor-
king with more complicated programs, in which all implications may
be difficult to grasp.
CLL, cont.
Examples Partial clearing:
Two labels are printed, each with two lines of text. After the first label is
printed, the last line is cleared from the print image buffer and a new line
is added in its place on the second label:
10 PRPOS 100,300
20 FONT "Swiss 721 BT"
30 PRTXT "HAPPY"
40 A%=FIELDNO
50 PRPOS 100,250
60 PRTXT "NEW YEAR!"
70 PRINTFEED
80 CLL A%
90 PRPOS 100,250
100 PRTXT "BIRTHDAY!"
110 PRINTFEED
RUN
Complete clearing:
In this example, the print image buffer will be cleared completely if Error
1030, “Character missing in chosen font” occurs.
10 ON ERROR GOTO 1000
.....
.....
.....
1000 IF ERR=1030 GOSUB 1100
1010 RESUME NEXT
.....
....
1100 CLL
1110 PRINT "CHARACTER MISSING"
1120 RETURN
CLOSE
Purpose Statement closing one or several files and/or devices for input/output.
Remarks This statement revokes OPEN. Only files or devices, which already have
been OPENed, can be CLOSEd.
A CLOSE statement for a file or device OPENed for sequential output
entails that the data in the buffer will be written to the file/device in ques-
tion automatically before the channel is closed.
When a file OPENed for random access is CLOSEd, all its FIELD defini-
tions will be lost.
END, NEW, and RUN will also close all open files and devices.
Syntax COM↔ERROR<nexp>ON|OFF
<nexp> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
7 = "uart4:"
8 = "uart5"
Default: COM ERROR OFF on all channels.
Example In this example, a message will appear on the screen when the reception is
interrupted by any of four COMSET conditions being fulfilled:
10 COM ERROR 1 ON
20 A$="Max. number of char. received"
30 B$="End char. received"
40 C$="Attn. string received"
50 D$="Communication error"
60 COMSET 1, "A",CHR$(90),"#","BREAK",20
70 ON COMSET 1 GOSUB 1000
80 COMSET 1 ON
90 IF QDATA$="" THEN GOTO 90
100 END
1000 QDATA$=COMBUF$(1)
1010 IF COMSTAT(1) AND 2 THEN PRINT A$
1020 IF COMSTAT(1) AND 4 THEN PRINT B$
1030 IF COMSTAT(1) AND 8 THEN PRINT C$
1040 IF COMSTAT(1) AND 32 THEN PRINT D$
1050 PRINT QDATA$:RETURN
COMBUF$
Purpose Function reading the data in the buffer of the communication channel
specified by a COMSET statement.
Syntax COMBUF$(<nexp>)
<nexp> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
Example In this example, the data from the buffer is assigned to the string variable
A$ and printed on the screen:
1 REM Exit program with #STOP&
10 COMSET1,"#","&","ZYX","=",50
20 ON COMSET 1 GOSUB 2000
30 COMSET 1 ON
40 IF A$ <> "STOP" THEN GOTO 40
50 COMSET 1 OFF
.....
.....
1000 END
2000 A$= COMBUF$(1)
2010 PRINT A$
2020 COMSET 1 ON
2030 RETURN
COMSET
Purpose Statement setting the parameters for background reception of data to the
buffer of a specified communication channel (see COMBUF$).
Syntax COMSET<nexp1>,<sexp1>,<sexp2>,<sexp3>,<sexp4>,<nexp2>
<nexp1> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
<sexp1> specifies the start of the message string (max. 12 char).
<sexp2> specifies the end of the message string (max. 12 char).
<sexp3> specifies characters to be ignored (max. 42 char).
<sexp4> specifies the attention string (max. 12 char).
<nexp2> specifies the max. number of characters to be received. Enter a
value ≥1. (If <nexp2> = 0, the first character will be lost.)
Remarks Data can be received by a buffer on each of the communication channels
without interfering with the running of the current program. At an appro-
priate moment, the program can fetch the data in the buffer and use them
according to your instructions. Such background reception has priority
over any ON KEY GOSUB statement.
Related instructions are COMSTAT, ON COMSET GOSUB, COMSET
ON, COMSET OFF, COM ERROR ON/OFF, and COMBUF$.
The communication channels are explained in connection with the DEVI-
CES statement.
The start and end strings are character sequences which tells the printer
when to start or stop receiving data. Max. 12 characters, may be "".
It is possible to make the printer ignore certain characters. Such characters
are specified in a string, where the order of the individual characters does
not matter. Max. 42 characters, may be "".
The attention string interrupts reception. Max. 12 characters, may be "".
The length of the afore-mentioned COMSET strings are checked before
they are copied into the internal structure. If any of these strings are too
long, Error 26, “Parameter too large” will occur.
When the printer has received the specified maximum number of charac-
ters, without previously having encountered any end string or attention
string, the transmission will be interrupted. The maximum number of
characters also decides how much of the memory will be allocated to the
buffer.
COMSET, cont.
The reception of data to the buffer can be interrupted by four conditions:
• If an end string being encountered.
• If an attention string being encountered.
• If the maximum number of characters being received.
• If error-handling is enabled for the communication channel in question
(see COM ERROR ON/OFF) and an communication error occurs.
This condition can be checked by a COMSTAT function.
Any interruption will have a similar effect as a COMSET OFF statement,
that is close the reception, but the buffer will not be emptied and can still
be read by a COMBUF$ function. After the reception has been interrup-
ted, an ON COMSET GOSUB statement can be issued to control what
will happen next.
COMSET does not support auto-hunting (see SETSTDIO).
Example This example shows how "uart1:" is opened for background communica-
tion. Any record starting with the character # and ending with the char-
acter & will be received. The characters Z, Y and X will be ignored. The
character = will stop the reception. Max. 50 characters are allowed.
1 REM Exit program with #STOP&
10 COMSET1,"#","&","ZYX","=",50
20 ON COMSET 1 GOSUB 2000
30 COMSET 1 ON
40 IF A$ <> "STOP" THEN GOTO 40
50 COMSET 1 OFF
.....
.....
1000 END
2000 A$= COMBUF$(1)
2010 PRINT A$
2020 COMSET 1 ON
2030 RETURN
COMSET OFF
Purpose Statement turning off background data reception and emptying the buffer
of the specified communication channel.
Syntax COMSET<nexp>OFF
<nexp> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
Remarks This statement is closely related to COMSET, ON COMSET GOSUB,
COMSTAT, COMSET ON, COM ERROR ON/OFF, and COMBUF$.
The COMSET OFF statement closes the reception and empties the buffer
of the specified communication channel.
Example In this example, the COMSET OFF statement is used to close "uart1:" for
background reception and empty the buffer:
1 REM Exit program with #STOP&
10 COMSET1,"#","&","ZYX","=",50
20 ON COMSET 1 GOSUB 2000
30 COMSET 1 ON
40 IF A$ <> "STOP" THEN GOTO 40
50 COMSET 1 OFF
.....
.....
1000 END
2000 A$= COMBUF$(1)
2010 PRINT A$
2020 COMSET 1 ON
2030 RETURN
COMSET ON
Purpose Statement emptying the buffer and turning on background data reception
on the specified communication channel.
Syntax COMSET<nexp>ON
<nexp> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
COMSTAT
Purpose Function reading the status of the buffer of a communication channel.
Syntax COMSTAT(<nexp>)
<nexp> is one of the following communication channels:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
Example A message will appear on the screen when the reception is interrupted by
any of four COMSET conditions being fulfilled:
10 COM ERROR 1 ON
20 A$="Max. number of char. received"
30 B$="End char. received"
40 C$="Attn. string received"
50 D$="Communication error"
60 COMSET 1, "A",CHR$(90),"#","BREAK",20
70 ON COMSET 1 GOSUB 1000
80 COMSET 1 ON
90 IF QDATA$="" THEN GOTO 90
100 END
1000 QDATA$=COMBUF$(1)
1010 IF COMSTAT(1) AND 2 THEN PRINT A$
1020 IF COMSTAT(1) AND 4 THEN PRINT B$
1030 IF COMSTAT(1) AND 8 THEN PRINT C$
1040 IF COMSTAT(1) AND 32 THEN PRINT D$
1050 PRINT QDATA$
1060 RETURN
CONT
Purpose Statement for resuming execution of a program that has been interrupted
by means of a STOP, BREAK, or DBBREAK statement.
Syntax CONT
Remarks The CONT statement may be used to resume program execution after a
STOP, BREAK, or DBBREAK statement has been executed. Execution
continues at the point where the break happened with the STDIO set-
tings restored.
CONT is usually used in conjunction with DBBREAK or STOP for
debugging. When execution is stopped, you can examine or change
the values of variables using direct mode statements. You may then use
CONT to resume execution. CONT is invalid if the program has been
editied during the break.
It is also possible to resume execution at a specified program line using a
GOTO statement in the immediate mode.
Example 10 A%=100
20 B%=50
30 IF A%=B% THEN GOTO QQQ ELSE STOP
40 GOTO 30
50 QQQ:PRINT "Equal"
Ok
RUN
Break in line 30
Ok
PRINT A%
100
Ok
PRINT B%
50
Ok
B%=100
Ok
CONT
Equal
Ok
COPY
Purpose Statement for copying files.
Syntax COPY<sexp1>[,<sexp2>]
<sexp1> is the name and optionally directory of the original file.
<sexp2> is, optionally, a new name and/or directory for the copy.
Remarks This statement allows you to copy a file to another name and/or directory
as an alternative to LOADing the file in question and then SAVEing it.
If no directory is specified for the original and/or copy, the current direc-
tory will be used by default (see CHDIR statement). By default, the cur-
rent directory is "/c", which is the printer’s permanent memory. If the file
is to be copied from or to another directory than the current one, the file
name must contain a directory reference.
A file cannot be copied to the same name in the same directory.
In addition to copying files to the printer’s permanent or temporary
memory or a DOS-formatted memory card, a file can also be copied to an
output device such as the printer’s display or a serial communication chan-
nel. Copying a program to the standard OUT channel has the same effect
as LOADing and LISTing it.
Note that bitmap fonts and images are not files and therefore cannot be
copied.
Copying a file from "card1:" to the current directory and changing the file
name:
COPY "card1:FILELIST.PRG","COPYTEST.PRG"
Copying a file from "/c" to a directory other than the current one without
changing the file name:
COPY "/c/FILELIST.PRG","card1:FILELIST.PRG"
Copying a file in the current directory to a new name within the same
directory:
COPY "LABEL1.PRG","LABEL2.PRG"
COUNT&
Purpose Statement for creating a counter (Intermec Direct Protocol only).
Remarks This instruction can only be used in the Intermec Direct Protocol.
The counters can be used in text and bar code fields and are global, which
means that they are not connected to any special label or layout, but will
be updated at every execution of PRINTFEED statements where the coun-
ter in question is used.
Counters are designated using positive integers, for example 1, 2, or 3.
When used for printing, they are referred to by “CNT<ncon>$” variables,
where <ncon> is the number of the counter as specified by COUNT&, for
example CNT5$. A counter variable without a matching counter will be
regarded as a common string variable.
The value of the start, stop, and restart parameters decide the type of coun-
ter (alpha or numeric). If different types of counter are specified in these
parameters, the last entered parameter decides the type. Alpha counters
count A-Z whereas numeric counters use numbers without any practical
limit.
Counters are not saved in the printer’s memory, but will have to be recrea-
ted after each power up. Therefore, it may be wise to save the COUNT&
statements as a file in the host.
START:
Decides the first value to be printed. If a single letter is entered (A-Z),
the counter will become an alpha counter, and if one or several digits are
entered the counter will be numeric. Numeric values can be positive or
negative. Negative values are indicated by a leading minus sign.
Default: 1 (numeric) or A (alpha)
COUNT&, cont.
WIDTH:
This parameter can only be used in numeric counters and decides the
minimum number of digits to be printed. If the counter value contains
a lesser number of digits, leading zero (0) characters will be added until
the specified number of digits is obtained. If the number of digits in the
counter value is equal to or larger than specified in the width parameter,
the value will be printed in its entity.
Default: 1 (no leading zeros)
COPY:
Decides how many copies (labels etc.) will be printed before the counter is
updated according to the INC parameter.
Default: 1
INC:
Decides by which value the counter should be incremented or decremen-
ted when it is updated. In case of decrementation, the value should contain
a leading minus sign.
Default: 1
STOP:
Decides the value after which the counter should start all over again at the
value specified by the RESTART parameter. If a single letter is entered (A-
Z), the counter will become an alpha counter, and if one or several digits
are entered the counter will be numeric. When a counter is decremented,
a stop value less than the start value must be given, since the default stop
value will never be reached.
Default: 2,147,483,647 (numeric) or Z (alpha)
RESTART:
Decides at which value the counter should start all over again after having
exceeded the STOP parameter value. If a single letter is entered (A-Z), the
counter will become an alpha counter, and if one or several digits are ente-
red the counter will be numeric.
Default: 1 (numeric) or A (alpha)
Examples In this example, a counter is created. It will start at number 100 and be
updated by a value of 50 after every second label until the value 1000 is
reached. Then the counter will start again at the value 200. All values will
be expressed as 4-digit numbers with leading zeros.
COUNT& "START",1,"100" ↵
COUNT& "WIDTH",1,"4" ↵
COUNT& "COPY",1,"2" ↵
COUNT& "INC",1,"50" ↵
COUNT& "STOP",1,"1000" ↵
COUNT& "RESTART",1,"200" ↵
CURDIR$
Purpose Function returning the current directory as the printer stores it.
Syntax CURDIR$
CSUM
Purpose Statement calculating the checksum of an array of strings.
Syntax CSUM<ncon>,<svar>,<nvar>
<ncon> is the type of checksum calculation:
1: Longitudinal Redundancy Check (LRC)
XOR in each character in each string
array[0][0] xor array[0][1] ... array[n][n]
2: Diagonal Redundancy Check (DRC)
right rotation, then XOR on each character in each
string
rot(array[0][0] xor array[0][1]
3: Longitudinal Redundancy Check (LRC)
Strip string of DLE (0x10) before doing the LRC
<svar> if <ncon> =1 or 2: The array of strings of which the checksum is
to be calculated.
if <ncon> = 3: Checksum string.
<nvar> is the variable in which the result will be presented.
Remarks These types of checksum calculation can only be used for string arrays,
not for numeric arrays. In case of CSUM 3,<svar>,<nvar>, the resulting
variable will be the indata for next CSUM calculation, unless the variable
is reset.
Example
In this example, the DRC checksum of an array of strings is calculated:
10 ARRAY$(0)="ALPHA"
20 ARRAY$(1)="BETA"
30 ARRAY$(2)="GAMMA"
40 ARRAY$(3)="DELTA"
50 CSUM 2,ARRAY$,B%
60 PRINT B% :REM DRC CHECKSUM
RUN
yields:
252
CUT
Purpose Statement activating an optional cutter.
Syntax CUT
Remarks Obviously, this statement only works with printers fitted with a cutter. A
cutter is normally used to cut non-adhesive paper strip or to cut through
the liner between self-adhesive labels.
When a PRINTFEED statement is executed, the printer feeds out a cer-
tain amount of the media according to the printer’s setup in regard of star-
tadjust and stopadjust, as explained in its User’s Guide . Then the cutter
can be activated by a CUT statement.
Example This program orders the printer to print a text and then cut off the media:
10 PRPOS 250,250
20 DIR 1
30 ALIGN 4
40 FONT "Swiss 721 BT"
50 PRTXT "Hello everybody!"
60 PRINTFEED
70 CUT
RUN
CUT ON/OFF
Purpose Statement enabling or disabling automatic cutting after PRINTFEED
execution and optionally adjusting the media feed before and after the cut-
ting.
Example This program enables automatic cutting and orders the printer to print a
text and feed out an extra amount of strip before cutting the media. The
media is then pulled back the same distance:
10 CUT 280 ON
20 PRPOS 250,250
30 DIR 1
40 ALIGN 4
50 FONT "Swiss 721 BT"
60 PRTXT "Hello everybody!"
70 PRINTFEED
RUN
DATE$
Purpose Variable for setting or returning the current date.
Remarks This variable works best if a real-time clock circuit (RTC) is fitted on the
printer’s CPU board. The RTC is battery backed-up and will keep record
of the time even if the power is turned off or lost.
If no RTC is installed, the internal clock will be used. After startup, an
error will occur when trying to read the date or time before the internal
clock has been manually set by means of either a DATE$ or a TIME$
variable. If only the date is set, the internal clock starts at 00:00:00 and if
only the time is set, the internal clock starts at Jan 01, 1980. After setting
the internal clock, you can use the DATE$ and TIME$ variables the same
way as when an RTC is fitted, until a power off or REBOOT causes the
date and time values to be lost.
Date is always entered and, by default, returned in the order YYMMDD,
where:
YY = Year Last two digits (for example 2003 = 03)
MM = Month Two digits (01-12)
DD = Day Two digits (01-28|29|30|31)
Example: December 1, 2003 is entered as "031201".
The built-in calendar corrects illegal values for the years 1980-2048, for
example the illegal date 031232 will be corrected to 040101.
The format for how the printer will return dates can be changed by means
of a FORMAT DATE$ statement and returned by DATE$("F").
Example
Setting the date and then returning the date in two different formats:
10 DATE$ = "031201" (sets date)
20 FORMAT DATE$ "DD/MM/YYYY" (sets date format)
30 PRINT DATE$ (returns unformatted date)
40 PRINT DATE$("F") (returns formatted date)
RUN
yields:
031201
01/12/2003
DATEADD$
Purpose Function returning a new date after a number of days have been added to,
or subtracted from, the current date or optionally a specified date.
Syntax DATEADD$([<sexp1>,]<nexp>[,<sexp2>])
<sexp1> is any date given according to the DATE$ format, which a certain
number of days should be added to or subtracted from.
<nexp> is the number of days to be added to (or subtracted from) the
current date or optionally the date specified by <sexp1>.
<sexp2> is one or two optional flags "F" or "M":
"F" specifies that the date will be returned according to the
format specified by FORMAT DATE$.
"M" specifies the value given in <nexp> will mean months
instead of days.
Remarks The original date (<sexp1>) should be entered according to the syntax for
the DATE$ variable, that is in the order YYMMDD, where:
YY = Year Last two digits (for example 2003 = 03)
MM = Month Two digits (01-12)
DD = Day Two digits (01-28|29|30|31)
Example: December 1, 2003 is entered as "031201".
The built-in calendar corrects illegal values for the years 1980-2048, for
example the illegal date 031232 will be corrected to 040101. When for
example, adding one month to the date 2004-01-31, the result will be
rounded off to 2004-02-29 (2004 is a leap year).
The number of days to be added or subtracted should be specified as a
positive or negative numeric expression respectively.
If no "F" flag is included in the DATEADD$ function, the result will be
returned according to the DATE$ format, see above.
If the DATEADD$ function includes an "F" flag, the result will be retur-
ned in the format specified by FORMAT DATE$.
"F" and "M" flags can be combined in the same instruction without any
separating character, that is, "FM" or "MF". No other characters are accep-
ted.
DATEADD$, cont.
Examples
10 DATE$ = "031201"
20 A%=15
30 B%=-10
40 FORMAT DATE$ "DD/MM/YY"
50 PRINT DATEADD$("031201",A%)
60 PRINT DATEADD$("031201",A%,"F")
70 PRINT DATEADD$(B%,"F")
RUN
yields:
031216
16/12/03
21/11/03
DATE$="040131"
FORMAT DATE$ "YYYY/MM/DD"
? DATEADD$(1,"F"),DATEADD$(1,"M"),DATEADD$(1,"FM")
2004/02/01 040229 2004/02/29
Ok
? DATEADD$("040131",1,"F"),→
→DATEADD$("040131",2,"M"),→
→DATEADD$(040131",3,"FM")
2004/02/01 040331 2004/04/30
Ok
DATEDIFF
Purpose Function returning the difference between two dates as a number of days.
Syntax DATEDIFF(<sexp1>,<sexp2>)
<sexp1> is one of two dates (date 1).
<sexp2> is the other of two dates (date 2).
Remarks To get the result as a positive numeric value, the two dates, for which the
difference is to be calculated, should be entered with the earlier of the dates
(date 1) first and the later of the dates (date 2) last, see the first example
below.
If the later date (date 2) is entered first, the resulting value will be negative,
see the second example below.
Both dates should be entered according to the syntax for the DATE$ vari-
able, that is in the order YYMMDD, where:
YY = Year Last two digits (for example 2003 = 03)
MM = Month Two digits (01-12)
DD = Day Two digits (01-28|29|30|31)
Example: December 1, 2003 is entered as "031201".
The built-in calendar corrects illegal values for the years 1980-2048, for
example the illegal date 031232 will be corrected to 040101.
Examples
Calculation of the difference in days between the dates October 1, 2003
and November 30, 2003:
10 A%=DATEDIFF("031001","031130")
20 PRINT A%
RUN
yields:
60
DBBREAK
Purpose Statement for adding or deleting a breakpoint for the Fingerprint Debug-
ger.
Syntax DBBREAK<nexp>|<sexp>[ON|OFF]
<nexp> is the line number where the debugger will break and also the
name of the breakpoint.
<sexp> is the line label where the debugger will break and also the name
of the breakpoint.
ON adds the specified breakpoint (default).
OFF deletes the specified breakpoint.
Remarks The execution of a program will break at each program line, that has been
specified as a breakpoint, and the message “break in line nnn” will be trans-
mitted on the Debug STDOUT port. If a CONT statement is issued, the
execution will continue at next line, whereas if RUN is issued, the execu-
tion will start again from the first program line.
The line number or line label does not to have to exist when a breakpoint
is added, but if a non-existing breakpoint is deleted an error will occur
(Error 39 or 70).
There is no error given if a breakpoint is added more than once. When a
breakpoint is deleted, all breakpoints with the same name are deleted at the
same time. There will only be one break for each line even if there are more
than one breakpoint on that line.
When a NEW statement is issued, all breakpoints will be deleted.
If a breakpoint is set on a line with a call to a FOR or WHILE loop, there
will only be one break on that line (the first time it is executed).
Related instructions are DBBREAK OFF, DBEND, DBSTDIO,
DBSTEP, and STOP.
DBBREAK OFF
Purpose Statement for deleting all breakpoints for the Fingerprint Debugger.
DBEND
Purpose Statement for terminating the Fingerprint Debugger.
Syntax DBEND
Remarks This statement is used for terminating the Fingerprint Debugger prematu-
rely and restore the STDIO settings as they were before the Debugger was
started.
Related instructions are DBBREAK, DBBREAK OFF, DBSTDIO, and
DBSTEP.
DBSTDIO
Purpose Statement for selecting the standard IN/OUT channel for the Fingerprint
Debugger.
Remarks The maximum size of the preamble and postamble strings is 12 characters.
Related instructions are CONT, DBBREAK, DBBREAK OFF, DBEND,
DBSTEP, and STOP.
DBSTEP
Purpose Statement for specifying the interval between breaks for the the Finger-
print Debugger and execute the program accordingly.
Syntax DBSTEP<ncon>
<ncon> is the number of lines to be executed before break. Default: 1
line.
Remarks If <ncon> is omitted, one line will be executed, but if <ncon> is specified
as 0, nothing at all will happen.
DBSTEP cannot be used in execution mode (yields Error 78).
When DBSTEP is used on the last line in a program, the line will be
executed but there will be no break.
If DBSTEP is used in a program with a FOR or WHILE loop, there will
only be one break on the line which is calling for the FOR or WHILE
loop (the first time it is executed).
Related instructions are CONT, DBBREAK, DBBREAK OFF, DBEND,
and DBSTDIO.
Example 10 PRINT "11"
20 PRINT "22"
30 PRINT "33"
40 PRINT "44"
50 PRINT "55"
60 PRINT "66"
70 PRINT "77"
80 PRINT "88"
90 PRINT "99"
DBSTEP 4
11
22
33
44
Break in line 50
Ok
DBSTEP
55
Break in line 60
Ok
DBSTEP 2
66
77
Break in line 80
CONT
88
99
Ok
DELETE
Purpose Statement deleting one or several consecutive program lines from the
printer’s working memory.
Syntax DELETE<ncon1>[-<ncon2>]
<ncon1> is the line, or the first line in a range of lines, to be deleted.
<ncon2> is (optionally) the last line in a range of program lines to be
deleted.
Remarks This statement can only be used for editing the current program in the
Immediate Mode and cannot be included as a part of the program execu-
tion.
DELETE –50 deletes all lines from the start of the program
to line 50.
DELETEPFSVAR
Purpose Statement for deleting variables saved at power failure.
Syntax DELETEPFSVAR<sexp>
<sexp> is the name of the variable to be deleted.
DEVICES
Purpose Statement for returning the names of all devices on the standard OUT
channel.
Syntax DEVICES
Remarks All devices available to the user in the Intermec Fingerprint firmware will
be listed, regardless if they are installed or not. The only exception is that
centronics: will be listed for the EasyCoder PD41 only if installed. There
are also a number of devices for internal use only. The list below indicates
if and how the device can be OPENed (see OPEN statement). If you try to
OPEN a device, which is not fitted or is disconnected, the message "Error
in file name" will be printed to the standard OUT channel (see SETST-
DIO). Note that all names of devices are lowercase and most are appended
by a colon (:).
Device Explanation Can be OPENed for...
c: (= "/c/") Printer’s permanent memory Input/Output/Random
card1: CompactFlash memory card Input/Output/Random
centronics: Parallel communication port Input
console: Printer’s display and/or keyboard Input/Output
dll: Special applications only –
finisher: The finisher interface Input/Output
lock: Electronic keys Input
net1: EasyLAN Input/Output
par: Special applications only –
rom: (= "/rom/") Kernel and Read-only memory card Input
rs485: RS-485 communication Input/Output
storage: Electronic keys Input/Output/Random
tmp: Printer’s temporary memory Input/Output/Random
uart1: Serial communication port Input/Output
uart2: Serial communication port Input/Output
uart3: Serial communication port Input/Output
uart4: Serial communication port Input/Output
uart5: Serial communication port Input/Output
usb1: Serial communication port Input/Output
wand: Data from Code 128 bar code Input
c: or /c/ is the printer’s permanent read/write memory (Flash SIMMs). It
supports file system with directories and will retain its content when the
power is switched off. For compatibility with programs created in previous
versions of Intermec Fingerprint, the designation "ram:" will also be accep-
ted.
card1: is a read/write DOS-formatted CompactFlash memory card inser-
ted in the printer’s memory card adapter.
centronics: is the Centronics parallel port. Three different types can be
selected by means of SYSVAR(25).
DEVICES, cont.
console: is the printer’s display and keyboard. The keyboard can be used
for input only and the display for output only.
dll: is used for special applications only.
finisher: is the device controlling the finisher interface, where for instance
a cutter can be connected.
lock: is an electronic key items that has been specified as locks by means of
special software. An electronic key may contain several key items with dif-
ferent properties (counter, lock, or storage). The device name calls all key
items with the corresponding properties. Each key item has a 4-character
name, usually appended by a delimiter (?) and a 4-character password. Also
see OPEN statement.
net1: is the communication channel for an EasyLAN interface board.
par: is used for special applications only.
rom: or /rom/ is both the read-only kernel sectors in the Boot-Bank flash
SIMM, and any resource files on a CompactFlash memory card inserted in
the printer’s memory card adapter. It supports file system with directories.
rs485: is used in connection with RS-485 point-to-point or multidrop
communication to specify that the RS-485 protocol is used and to specify
the protocol address of the unit, for example "rs485:23".
storage: is all electronic key items in the printer that has been specified as
storages by means of special software. Note that this memory is comparati-
vely slow.
tmp: is the printer’s temporary read/write memory (SDRAM SIMMs).
It will lose its content when the power is turned off or at a power failure.
Thus, do not use SDRAM for valuable data that cannot be recreated, but
copy it to "/c/". One advantage of using "tmp:" instead of "/c" is that data
can be written to SDRAM faster than to the flash memory. To speed up
operation, the Intermec Fingerprint firmware (except program modules
with dynamic downloading) is copied from "/rom/" to "tmp:" at startup
and used from "tmp:".
uart1: is the standard RS-232 port.
uart2: is an additional serial port on an optional interface board.
uart3: is an additional serial port on an optional interface board.
uart4: is an additional serial port on an optional interface board.
uart5: is an additional serial port on an optional interface board.
usb1: is the standard USB (Universal Serial Bus) port.
wand: is any input from an Code 128 bar code not containing any FNC3
character via a bar code wand or reader connected to the wand interface.
DEVICES, cont.
Example DEVICES
yields for example:
c:
card1:
centronics: (only if an optional parallel interface board is fitted)
console:
dll:
finisher:
lock:
net1: (only if an EasyLAN interface board is fitted)
par:
rom:
rs485: (only if an optional serial interface board is fitted)
storage:
tmp:
uart1:
uart2: (only if an optional serial interface board is fitted)
uart3: (only if an optional serial interface board is fitted)
uart4: (only if two optional serial interface boards are fitted)
uart5: (only if two optional serial interface boards are fitted)
usb1:
wand:
DIM
Purpose Statement specifying the dimensions of an array.
Syntax DIM<<nvar>|<svar>>(<nexp1>[,<nexp2>...])....[,<<nvar>|<svar>>
(<nexp1>[,<nexp2>...])]
<nvar>|<svar> is the name of the array.
<nexp1> is the max. subscript value for the first dimension.
<nexp2-10> are, optionally, the max. subscript value for the following dimen-
sions (No. 2-10).
Examples This example creates an array containing three dimensions with 13 ele-
ments each:
100 DIM NAME$(12,12,12)
Here, two one-dimensional arrays are created on the same program line:
10 DIM PRODUCT$(15), PRICE%(12)
20 PRODUCT$(2)="PRINTER"
30 PRICE%(2)=1995
40 PRINT PRODUCT$(2);" $";PRICE%(2)
RUN
yields:
PRINTER $1995
DIR
Purpose Statement specifying the print direction.
Syntax DIR<nexp>
<nexp> is the print direction (1, 2, 3, or 4).
Default value: 1
Reset to default by: PRINTFEED execution
Remarks A change of print direction affects all printing statements, that is PRTXT,
PRBAR, PRIMAGE, PRBOX, and PRLINE statements that are executed
later in the program until a new DIR statement or a PRINTFEED state-
ment is executed.
The print direction is specified in relation to the media feed direction as
illustrated below. The print direction affects the various types of objects as
follows:
Text:
DIR, cont.
Bar Codes:
Images:
The relation of the image and the print direction depends how the image
was drawn. An image can only be “rotated" 180˚. Thus, it may be useful to
have two copies of the image available with different extensions for either
horizontal or vertical printing:
DIR 1 & 3, use extension .1
DIR 2 & 4, use extension .2
DIR, cont.
Lines: Boxes:
Examples Printing a label with one line of text and drawing a line beneath the text:
10 PRPOS 30,300
20 DIR 1
30 ALIGN 4
40 FONT "Swiss 721 BT",18
50 PRTXT "TEXT PRINTING"
60 PRPOS 30,280
70 PRLINE 555,10
80 PRINTFEED
RUN
DIRNAME$
Purpose Function returning the names of the directories stored in the specified part
of the printer’s memory.
Syntax DIRNAME$[(<sexp>)]
<sexp> is the name of the memory device from which the first directory
name will be listed.
Remarks In <sexp>, parts of directory names and wildcards (*) are allowed. If <sexp>
is omitted, the next directory name in the same memory device is listed.
Can be repeated. When there are no directories left to list, the output
string will be empty. Also see FILENAME$.
Example FILES,A
Files on /c
./ 0 ../ 0
.setup.saved 239 DIR1/
STDIO 3
PRINT DIRNAME$("/c/")
.
Ok
PRINT DIRNAME$
..
Ok
PRINT DIRNAME$
DIR1
Ok
END
Purpose Statement ending the execution of the current program or subroutine and
closing all OPENed files and devices.
Syntax END
Remarks END can be placed anywhere in a program, but is usually placed at the
end. It is also useful for separating the “main” program from possible
subroutines with higher line numbers. It is possible to issue several END
statements in the same program.
Example A part of a program, which produces fixed line-spacing, may look this way:
10 FONT"Swiss 721 BT"
20 X%=300:Y%=350
30 INPUT A$
40 PRPOS X%,Y%
50 PRTXT A$
60 Y%=Y%-50
70 IF Y%>=50 GOTO 30
80 PRINTFEED
90 END
The Y-coordinate will be decremented by 50 dots for each new line until it
reaches the value 50. The END statement terminates the program.
EOF
Purpose Function for checking for an end-of-file condition.
Syntax EOF(<nexp>)
<nexp> is the number assigned to the file when it was OPENed.
Remarks The EOF function can be used with files OPENed for sequential input in
connection with the statements INPUT#, LINE INPUT#, and INPUT$
to avoid the error condition “Input past end” which has no error message.
When the EOF function encounters the end of a file, it returns the value
-1 (true). If not, it returns the value 0 (false).
Example
10 DIM A%(10)
20 OPEN "DATA" FOR OUTPUT AS #1
30 FOR I%=1 TO 10
40 PRINT #1, I%*1123
50 NEXT I%
60 CLOSE #1
70 OPEN "DATA" FOR INPUT AS #2
80 I%=0
90 WHILE NOT EOF(2)
100 INPUT #2, A%(I%):PRINT A%(I%)
110 I%=I%+1:WEND
120 IF EOF(2) THEN PRINT "End of File"
RUN
yields:
1123
2246
3369
4492
5615
6738
7861
8984
10107
11230
End of File
ERL
Purpose Function returning the number of the line on which an error condition has
occurred.
Syntax ERL
Examples You can check at which line the last error since power up occurred like
this:
PRINT ERL
yields for example
40
In this example, the line number of the line, where an error has occurred,
decides the action to be taken (in this case the font size is too large for the
label width):
10 ON ERROR GOTO 1000
20 FONT "Swiss 721 BT",100
30 PRTXT "HELLO EVERYBODY"
40 PRINTFEED
50 END
1000 IF ERL=40 THEN PRINT "PRINT ERROR"
1010 RESUME NEXT
RUN
yields:
PRINT ERROR
You can use the ERL function in programs without line numbers too,
because such programs have automatically generated hidden line numbers
that are revealed when the program is LISTed. This is the same program as
above but without line numbers:
NEW
IMMEDIATE OFF
ON ERROR GOTO QAAA
FONT "Swiss 721 BT",100
PRTXT "HELLO EVERYBODY"
PRINTFEED
END
QAAA: IF ERL=40 THEN PRINT "PRINT ERROR"
RESUME NEXT
IMMEDIATE ON
RUN
yields:
PRINT ERROR
ERR
Purpose Function returning the code number of an error that has occurred.
Syntax ERR
Remarks The firmware is able to detect a number of error conditions. The errors are
represented by code numbers according to Chapter 7, “Error Messages.”
The ERR function enables the program to read the coded error number.
Thereby you may design your program to take proper action depending on
which type of error that may have occurred.
Example In this example, the code number of the error decides the action to be
taken:
10 ON ERROR GOTO 1000
. . . . .
. . . . .
100 PRTXT "HELLO"
110 PRINTFEED
120 END
. . . . .
. . . . .
. . . . .
1000 IF ERR=1005 THEN PRINT "OUT OF PAPER"
1010 RESUME NEXT
You can also check the number of the last error since power up:
PRINT ERR
yields for example:
1022
ERR$
Purpose Function for returning the explanation of an error code in plain text.
Syntax ERR$(<nexp>)
<nexp> is the error code number
ERROR
Purpose Statement for defining error messages and enabling error handling for
specified error conditions (Intermec Direct Protocol only).
Remarks The ERROR statement can only be used in the Intermec Direct Protocol
for the purpose of enabling error-handling and creating customized error
messages, as described below.
The built-in error-handler of the Intermec Direct Protocol will always
handle the following standard errors (display message inside brackets):
• 15 Font not found [Font not found]
• 18 Disk full [Disk full]
• 37 Cutter device not found [Cutter device not found]
• 43 Memory overflow [Memory overflow]
• 1003 Field out of label [Field out of label]
• 1005 Out of paper [Out of paper]
• 1006 No field to print [No field(s)]
• 1022 Head lifted [Head lifted]
• 1027 Out of transfer ribbon [Out of ribbon]
• 1031 Next label not found [Label not found]
• 1058 Transfer ribbon is installed [Ribbon installed]
• 1606 Testfeed not done [Testfeed not done]
Other errors will not be handled unless they have been specified by an
ERROR statement. The number of the error should be entered according
to the list of error messages at the end of this manual.
The ERROR statement also allows you to edit a suitable message in any
language. This message will appear in the printer’s display window if the
error occurs. The error message will be truncated to 33 characters. Charac-
ter No. 1-16 will appear on the upper line and character 18-33 will appear
on the lower line, whereas character No. 17 always is ignored.
ANSI control characters can be used in the error message string, see
“Printer Function Control; Display” in the Intermec Fingerprint, Tutorial.
An empty string removes any previously entered message for the error in
question. Likewise, an existing message can be replaced by a new one.
When a standard error or an error defined by an ERROR statement is
detected, the printer sets its standard IN port to BUSY, sets the “Status”
LED to red, and displays the error messages. The error message will be
cleared, the LED is set to green, and the standard IN port will be set to
READY when the printer’s <Print> key is pressed. In some cases, the error
must also be cleared, for example by loading a fresh stock of labels.
ERROR, cont.
Note: In printers, that are not fitted with the Intermec Ready-to-Work
Indicator console, the green Ready LED will be switched off and the red
Error LED will be switched on when an error is detected. The opposite will
happen when the error is cleared.
Error messages are not saved in the printer’s memory, but new ERROR
statements will have to be downloaded after each power up. Therefore, it
is recommended to save a set of ERROR statements as a file in the host
computer.
The ERROR statements affect both the error messages in the printer’s dis-
play window and the error messages returned to the host via the standard
OUT channel (see SETSTDIO statement).
By default, no error messages are returned to the host in the Intermec
Direct Protocol, since the statement INPUT ON sets the verbosity level to
off, that is SYSVAR (18)= 0. However, the verbosity level can be changed
by means of VERBON/VERBOFF statements or the SYSVAR (18) system
variable.
Different types of error messages to be returned on the standard OUT
channel can be selected by means of the SYSVAR (19) system variable. If
SYSVAR (19) is set to 2 or 3, the error message specified by ERROR is
transmitted. If no such error message is available, a standard error message
in English will be transmitted (see list of Error Messages in Chapter 7).
Examples In these examples, a few errors are specified. Note the blank spaces for
character position 17 in each message (space characters are indicated by
doubleheaded arrows):
ERROR 1010,"HARDWARE↔↔↔↔↔↔↔↔↔ERROR" ↵
ERROR 1029,"PRINTHEAD↔VOLT-↔↔AGE↔TOO↔HIGH" ↵
EXECUTE
Purpose Statement for executing a Fingerprint program line or a file with Finger-
print program lines from within another Fingerprint program.
Syntax EXECUTE<sexp>
<sexp> is one line of Fingerprint instructions or the name of a file con-
taining at least one line of a Fingerprint program.
Remarks This statement allows you to create a library of layouts, subroutines, texts,
etc, which can be executed as a part of a program without having to merge
the programs.
The program called by EXECUTE must not contain any line numbers or
line labels.
If the EXECUTE statement is followed by a string of Fingerprint
instructions, they should be separated by colons.
When an error occurs in an EXECUTE file, the line number in the error
message is that of the EXECUTE file, not of the program where the
EXECUTE statement is issued.
EXECUTE is only allowed in the execute mode, not in the immediate
mode (yields Error 69).
Recursive call of EXECUTE is not allowed (yields Error 78).
Example This example shows how a preprogrammed file containing a bar code is
executed as a part of a Fingerprint program, where the input data and
printfeed are added:
IMMEDIATE OFF
DIR 1
ALIGN 7
BARSET "CODE39",2,1,3,120
BARFONT "Swiss 721 BT",10,8,5,1,1
BARFONT ON
IMMEDIATE ON
SAVE "tmp:BARCODE.PRG",L
NEW
10 PRPOS 30,400
20 EXECUTE "tmp:BARCODE.PRG"
30 PRBAR "ABC"
40 PRINTFEED
RUN
FIELD
Purpose Statement for creating a single-record buffer for a random file and dividing
the buffer into fields to which string variables are assigned.
Syntax FIELD[#]<nexp1>,<nexp2>AS<svar1>[,<nexp3>AS<svar2>...]
# indicates that whatever follows is a number. Optional.
<nexp1> is the number assigned to the file when it was OPENed.
<nexp2-n> is the number of bytes to be reserved for the string variable that
follows. (Null not allowed.)
<svar1-n> is the designation of the string variable, for which space has been
reserved.
Remarks The buffer is divided into fields, each of which is given an individual
length in bytes. A string variable is assigned to each field. This statement
does not put any data in the buffer, it only creates and formats the buffer,
allowing you to place the data using LSET and RSET statements.
Before using this statement, consider the maximum number of charac-
ters (incl. space characters) needed for each variable and check that the
total does not exceed the record size given when the file was OPENed (by
default 128 bytes).
When a file is CLOSEd, all its FIELD definitions will be lost.
Example This example opens and formats a file buffer for a single record. The buffer
is divided into three fields, with the size of 25, 30, and 20 bytes respec-
tively.
10 OPEN "ADDRESSES" AS #8 LEN=75
20 FIELD#8,25 AS F1$, 30 AS F2$, 20 AS F3$
FIELDNO
Purpose Function getting the current field number for partial clearing of the print
buffer by a CLL statement.
Syntax FIELDNO
Example
10 PRPOS 100,300
20 FONT "Swiss 721 BT"
30 PRTXT "HAPPY"
40 A%=FIELDNO
50 PRPOS 100,250
60 PRTXT "NEW YEAR"
70 B%=FIELDNO
80 PRPOS 100, 200
90 PRTXT "EVERYBODY!"
100 PRINTFEED
110 CLL B%
120 PRPOS 100,200
130 PRTXT "TO YOU!"
140 PRINTFEED
150 CLL A%
160 PRPOS 100,250
170 PRTXT "BIRTHDAY"
180 PRPOS 100,200
190 PRTXT "DEAR TOM!"
200 PRINTFEED
RUN
yields three labels:
#1 #2 #3
HAPPY HAPPY HAPPY
NEW YEAR NEW YEAR BIRTHDAY
EVERYBODY! TO YOU! DEAR TOM!
FILE& LOAD
Purpose Statement for receiving and storing binary files in the printer’s memory.
Remarks This statement prepares the printer to receive a binary file on the standard
IN channel (see SETSTDIO statement) or on another communication
channel OPENed for INPUT.
Another, but more cumbersome, way of obtaining the same result is to use
the TRANSFER KERMIT statement.
Image files and font files can also be downloaded using the IMAGE LOAD
statement.
As opposed to IMAGE LOAD and TRANSFER KERMIT statements,
FILE& LOAD will not immediately install the fonts, but the font files will
remain as files in the printer’s memory until next power-up.
The optional first parameter makes it possible to use this statement in MS-
DOS (CR/LF problem).
The name of the file, when stored in the printer’s memory, may consist of
max. 30 characters including possible extension.
The size of the original file should be given in bytes according to its size in
the host.
Before the FILE& LOAD statement can be used on a serial channel, the
setup must be changed to 8 characters, RTS/CTS handshake. When a
FILE& LOAD statement is executed, the execution stops and waits for
the number of bytes specified in the statement to be received. During
the transfer of file data to the printer, there is a 25 sec. timeout between
characters. If a new character has not been received within the timeout
limit, an error occurs (Error 80, “Download timeout”). When the specified
number of characters have been received, the execution is resumed.
FILENAME$
Purpose Function returning the names of the files stored in the specified part of the
printer’s memory.
Syntax FILENAME$[(<sexp>)]
<sexp> is the name of the memory device from which the first file name
(in alphabetical order) will be listed. Parts of file names and
wildcards (*) are allowed. Maximum size is 30 characters.
If <sexp> is omitted, the next file name in the same memory
device is listed. Can be repeated. When there are no files left to
list, the output string will be empty.
Remarks The specified memory device must be mounted. The file name must cor-
respond to the name of the file stored in the memory device in regard of
upper- and lowercase characters. Wildcards (* = ASCII 42 dec.) can be
used. The list may include all type of files. Even system files, that are prece-
ded by a period character (for example .FONTALIAS), may be listed. No
directories will be listed and the order of listing is not specified. Also see
DIRNAME$.
Example This example shows how all files in the printer's permanent memory (/c )
are listed:
FILES,A
Files on /c
./ 0 ../ 0
.setup.saved 239 DIR1/ 0
STDIO 3
PRINT FILENAME$("/c/")
.setup.saved
Ok
PRINT FILENAME$
STDIO
PRINT FILENAME$
Ok
FILES
Purpose Statement for listing the files stored in one of the printer’s directories to the
standard OUT channel.
Syntax FILES[<sexp>][,R][,A]
<sexp> optionally specifies the directory (see DEVICES).
R lists directories recursively
A lists all files including system files (that is, files with a name
starting with a period (.) character.
Examples The presentation may look like this on the host screen:
FILES "/c",R
Files on /c
STDIO 2 FILE2 4
DIR1/ 0
Files on /c/DIR1/
FILE1 4 DIR2/ 0
STDIO 2
No files on /c/DIR1/DIR2
FILES, cont.
FILES,R,A
Files on /c
./ 0 ../ 0
DIR1/ 0 FILE2 4
STDIO 2 .setup.saved 239
Files on /c/DIR1/
./ 0 ../ 0
DIR2/ 0 STDIO 2
FILE1 4
Files on /c/DIR1/DIR2/
./ 0 ../ 0
4121600 bytes free 251 bytes used
FILES "/c/DIR1"
Files on /c/DIR1
FILE1 4 DIR2/ 0
STDIO 2
4121600 bytes free 6 bytes used
FLOATCALC$
Purpose Function for calculation with float numbers.
Syntax FLOATCALC$(<sexp1>,<sexp2>,<sexp3>[,<nexp1>])
<sexp1> is the first operand.
<sexp2> is the operator (+, -, *, or /).
<sexp3> is the second operand.
<nexp1> is, optionally, the precision in decimals (default 10).
Remarks Operands are float numbers, that is, a string of digits with a decimal point
to separate decimals from integers. Operands can also contain leading plus
(+), minus (-), and space characters. Space characters are ignored, whe-
reas the usual mathematical rules apply to plus and minus signs. All other
characters (or plus, minus, and space characters in other positions than
leading) generate errors.
Note the mathematical rules:
- - yields +
- + yields -
+ - yields -
+ + yields +
The following arithmetic operators are allowed:
+ addition ASCII 043 dec
- subtraction ASCII 045 dec
* multiplication ASCII 042 dec
/ division ASCII 047 dec
Any other type of operators or other characters will generate an error.
The precision parameter optionally specifies the number of decimals in
the result of the calculation. The result will be truncated accordingly. For
example, if the number of decimals is specified as 5, the result 5.76123999
will be presented as 5.76123. The result of a FLOATCALC$ function can
be formatted using a FORMAT$ function.
Examples Addition:
A$ = "234.9"
B$ = "1001"
PRINT FLOATCALC$ (A$,"+",B$,5)
yields:
1235.90000
Subtraction:
A$ = "234.9"
C% = 2
PRINT FLOATCALC$ (A$,"-",100.013,C%)
yields:
134.88
FONT (FT)
Purpose Statement for selecting a scaleable TrueType or TrueDoc single-byte font
or a single-byte bitmap font for the printing of the subsequent PRTXT
statements.
Syntax FONT|FT<sexp1>[,<nexp1>[,<nexp2>[,<nexp3>]]]
<sexp1> is the name of the font. Default: "Swiss 721 BT".
<nexp1> is optionally the height in points of the font. Default: 12 points.
Use MAG to enlarge with bitmap fonts.
<nexp2> is the clockwise slant in degrees (0–90°). Default: 0.
Does not work with bitmap fonts.
<nexp3> is the width enlargement in percent relative the height (1-1000).
Default: 100.
Does not work with bitmap fonts.
Reset to default by: PRINTFEED execution.
Remarks Intermec Fingerprint supports scaleable fonts in TrueType and TrueDoc
format that comply with the Unicode standard. A large number of scalea-
ble fonts are available on special request, so it is quite possible that your
printer is fitted with a unique selection of fonts. Use a FONTS statement
to list the names of all fonts installed in your own printer to the standard
OUT channel.
To maintain compatibility with programs created in earlier versions of
Intermec Fingerprint, you can also specify bitmap font names, for example
"SW030RSN" or "MS060BMN.2". In case of standard bitmap font name,
the firmware will select the corresponding scaleable font in the printer’s
memory and set its parameters so its direction, appearance, and size come
as close to the specified bitmap font as possible. A prerequisite is that the
printer’s memory contains the standard complement of outline fonts. Non-
standard bitmap fonts can also be used. They will not produce any outline
fonts, but will retain their bitmap format. Any extension to the bitmap
font name is of no consequence. See Chapter 6, “Fonts” in this manual.
The height of the font is given in points (same as in your PC), which
means that a text will be printed in the same size regardless of the print-
head density of the printer. The unit of measure is points (1 point = 1/72
inch ≈ 0.352 mm) and specifies the height of the font including ascen-
ders and descenders. Sizes less than 4 points will be unreadable. In case of
bitmap fonts, it is recommended to use MAG to enlarge the font instead
of specifying a font height (works only in multiples of 12 points).
Any font may be magnified up to 4 times separately in regard of height
and width using a MAG statement. Bitmap fonts will get somewhat jagged
edges when magnified, whereas outline fonts will remain smooth.
Printing the same text but with 24p size, 20° slant, and 75% width:
10 FONT "Swiss 721 BT",24,20,75
20 PRTXT "HELLO"
30 PRINTFEED
RUN
FONTD
Purpose Statement for selecting a scaleable TrueType or TrueDoc double-byte font
for the printing of the subsequent PRTXT statements.
Syntax FONTD<sexp1>[,<nexp1>[,<nexp2>[,<nexp3>]]]
<sexp1> is the name of the font. Default: none.
<nexp1> is optionally the height in points of the font. Default: 12 points.
<nexp2> is the clockwise slant in degrees (0-90°). Default: 0.
<nexp3> is the width enlargement in percent relative the height (1-1000).
Default: 100.
Reset to default by: PRINTFEED execution or CLL.
Remarks This statement is identical to the FONT statement, but is used for fonts
specified by a double byte (16 bits) instead of a single byte (7 or 8 bits). To
use a double-byte font, a double-byte character set must be selected using
a NASCD statement. Usually, if the first byte has an ASCII value between
161 dec. (A1 hex) and 254 dec (FE hex), the character will be treated as a
double-byte character and the firmware waits for next byte to make the 16
bit address complete. The character will be printed using the font specified
by FONTD and according to the character set specified by NASCD and
the Unicode standard.
On the other hand, if the first byte has an ASCII value below 161 dec. (A1
hex), the character is treated as a single byte character and next byte recei-
ved will be regarded as the start of a new character. This implies that the
character set specified by NASC and the font specified by FONT will be
used. However, the selected Unicode double-byte character set may specify
some other ASCII value as the breaking point between single and double
byte character sets.
Note that 8 bit communication must be selected.
Only writing from left to right in the selected print direction is supported.
Example The following text contains both single- and double-byte fonts. The
double-byte font and its character set are stored in a Font Install Card:
10 NASC 46
20 FONT "Swiss 721 BT", 24, 10
30 FONTD "DLC Ming Medium"
40 NASCD "rom:BIG5.NCD"
50 PRTXT CHR$(65);CHR$(161);CHR$(162)
60 PRINTFEED
RUN
This program yields a printed text line that starts with the Latin character
A (ASCII 65 dec.) followed by the character in the DLC Ming Medium
font that corresponds to the address 161+162 dec. in the character set
“BIG5.NCD".
FONTNAME$
Purpose Function returning the names of the fonts stored in the printer’s memory.
Syntax FONTNAME$(<nexp>)
<nexp> the result of the expression should be either false or true,
where...
False (0) indicates first font.
True (≠0) indicates next font.
Example
Use a program like this to list all fontnames:
10 A$ = FONTNAME$ (0)
20 IF A$ = "" THEN END
30 PRINT A$
40 A$ = FONTNAME$ (-1)
50 GOTO 20
RUN
yields for example:
-UPC11.1
-UPC11.2
-UPC21.1
-UPC21.2
-UPC31.1
-UPC31.2
-UPC51.1
-UPC51.2
Century Schoolbook BT
DingDings SWA
Dutch 801 Bold BT
Dutch 801 Roman BT
Futura Light BT
Letter Gothic 12 Pitch BT
MS030RMN
MS030RMN.1
MS030RMN.2
MS050RMN
MS050RMN.1
MS050RMN.2
MS060BMN
MS060BMN.1
MS060BMN.2
Monospace 821 BT
Monospace 821 Bold BT
OB035RM1
etc, etc.
FONTS
Purpose Statement returning the names of all fonts stored in the printer’s memory
to the standard OUT channel.
Syntax FONTS
Example
A list of the fonts stored in the printer may look like this:
FONTS
yields for example:
Century Schoolbook BT DingDings SWA
Dutch 801 Bold BT Dutch 801 Roman BT
Futura Light BT Letter Gothic 12 Pitch BT
MS030RMN MS030RMN.1
MS030RMN.2 MS050RMN
MS050RMN.1 MS050RMN.2
MS060BMN MS060BMN.1
MS060BMN.2 Monospace 821 BT
Monospace 821 Bold BT OB035RM1
OB035RM1.1 OB035RM1.2
OCR-A BT OCR-B 10 Pitch BT
Prestige 12 Pitch Bold BT SW020BSN
SW020BSN.1 SW020BSN.2
SW030RSN SW030RSN.1
SW030RSN.2 SW050RSN
SW050RSN.1 SW050RSN.2
SW060BSN SW060BSN.1
SW060BSN.2 SW080BSN
SW080BSN.1 SW080BSN.2
SW120BSN SW120BSN.1
SW120BSN.2 Swiss 721 BT
Swiss 721 Bold BT Swiss 721 Bold Condensed BT
Zurich Extra Condensed BT
FOR...TO...NEXT
Purpose Statement for creating a loop in the program execution, where a counter is
incremented or decremented until a specified value is reached.
Syntax FOR<nvar>=<nexp1>TO<nexp2>[STEP<nexp3>]NEXT[<nvar>]
<nvar> is the variable to be used as a counter.
<nexp1> is the initial value of the counter.
<nexp2> is the final value of the counter.
<nexp3> is the value of the increment (decrement).
Examples
The counter A% is incremented from 10 to 50 in steps of 20:
10 FOR A%=10 TO 50 STEP 20
20 PRINT A%
30 NEXT
RUN
yields:
10
30
50
The counter B% is decremented from 50 to 10 in steps of 20:
10 FOR A%=50 TO 10 STEP -20
20 PRINT A%
30 NEXT
RUN
yields:
50
30
10
FORMAT
Purpose Statement for formatting the printer’s permanent memory, or formatting a
CompactFlash memory card.
Syntax FORMAT<sexp>[,<nexp1>[,<nexp2>]][,A]
<sexp> specifies the device to be formatted either as "/c" or "card1:"
<nexp1> Specifies the number of entries in the root directory (only appli-
cable when <sexp> = "card1:" and “A” flag is set).
Default: 208 entries.
<nexp2> Specifies the number of bytes per sector (only applicable when
<sexp> = "card1:" and “A” flag is set).
Default: 512 bytes per sector.
Remarks FORMAT "/c"
Formats the printers permanent memory partially or completely. System
files are distinguished by a leading period character, for example .setup.
saved. This makes it possible to format the permanent memory without
removing the system files.
If no “A” flag is included in the statement, all files excluding those starting
with a period character (.) will be removed (“soft” formatting).
If an “A” flag is included in the statement, all files including those starting
with a period character (.) will be removed (“hard” formatting).
Be careful. There is no way to undo a FORMAT operation.
FORMAT "card1:"
Formats a CompactFlash card, which is inserted in the printer’s optional
memory card adapter, to MS-DOS format. Optionally, the number of
entries in the root directory (that is number of files on the card) and the
number of bytes per sector can be specified, provided an “A” flag is inclu-
ded in the statement (“hard” formatting).
When a FORMAT statement is executed, any existing data or previous for-
matting in the card will be erased. After formatting, such a memory card
can be OPENed for INPUT/OUTPUT/APPEND or RANDOM access
and can also be used in a PC for storing MS-DOS files. The DOS-format-
ted memory card is referred to as device "card1:".
FORMAT, cont.
Examples Issuing the statement FILES before and after a FORMAT "/c" statement
shows how the memory is affected. Note that system files starting with a
period character are not removed, since the FORMAT statement does not
contain any “A” flag:
FILES "/c",A
yields for example:
Files on /c
./ 0 ../ 0
APPLICATION 1 boot/ 0
ADMIN/ 0 .setup.saved 222
STDIO 4
2222080 bytes free 227 bytes used
Ok
FORMAT "/c"
Ok
FILES "/c",A
yields for example:
Files on /c
./ 0 ../ 0
boot/ 0 ADMIN/ 0
.setup.saved 222
2224128 bytes free 222 bytes used
FORMAT DATE$
Purpose Statement for specifying the format of the string returned by DATE$("F")
and DATEADD$(..... ,"F") instructions.
Remarks DATE$ and DATEADD$ will only return formatted dates if these func-
tionss include the flag "F".
In the FORMAT DATE$ statement, each Y, M or D character generates
one digit from the number of the year, month or day respectively, starting
from the end. If the number of Y's exceeds 4, or the number of M's or D's
exceeds 2, the exceeding characters generate leading space characters.
Examples (the year is 2003):
Y generates 3
YY generates 03
YYY generates 003
YYYY generates 2003
YYYYY generates ↔
2003 (↔ represents a space)
Separating characters are returned as entered in the string. Any character
except Y, M, or D are regarded as separators.
The date format is saved in the temporary memory and has to be transmit-
ted to the printer after each power-up.
FORMAT INPUT
Purpose Statement for specifying separators for the LAYOUT RUN statement used
in the Intermec Direct Protocol.
Remarks The LAYOUT RUN statement is used in the Intermec Direct Protocol to
transmit variable data to a predefined layout. By default, the string of input
data to the various layout fields starts with a STX character and ends with
a EOT character. The various fields are separated by CR (carriage return)
characters.
To provide full compatibility with various protocols and computer systems,
these separators can be changed at will by means of the FORMAT INPUT
statement. Each separator can have a maximum length of 10 characters.
As an option, it is possible to specify a string of max. 10 characters to be
filtered out. By default, the string is empty and will be reset to default if a
new FORMAT INPUT with less than four arguments is issued.
There is a timeout if ETX is not found within 60 seconds after STX has
been received.
Always execute the FORMAT INPUT statement in the Immediate Mode.
If you are using the Intermec Direct Protocol, exit it using an INPUT
OFF statement before changing the separators using a FORMAT INPUT
statement. Then you can enter the Intermec Direct Protocol again using an
INPUT ON statement.
An error will occur if you, for some reason, issue a FORMAT INPUT
statement where one, two or three separators are identical to those already
in effect without leaving the Intermec Direct Protocol.
If a certain separating character cannot be produced by the keyboard of the
host, use a CHR$ function to specify the character by its ASCII value.
The separators are stored in the temporary memory and must to be trans-
mitted to the printer after each power-up.
FORMAT TIME$
Purpose Statement for specifying the format of the string returned by TIME$("F")
and TIMEADD$("F") instructions.
Remarks Each H, h, M, and S character generates one digit. If the number of each
character exceeds 2, leading space characters are inserted. Each uppercase
or lowercase P character generates one character of AM/PM or am/pm
respectively, when a 12-hour cycle is selected.
Hour, minute and second fields are right-justified, whereas am/pm and
AM/PM fields are left-justified.
Example (the hour is 8 o’clock in the morning):
h generates 8 P generates A
hh generates 08 PP generates AM
hhh generates ↔
08 p generates a
pp generates am
To get 12-hour cycle, all hour format characters must be lowercase “h”.
Separating characters are returned as entered in the string. Any character
but H, h, M, S, P, or p are regarded as separators.
The time format is saved in the temporary memory and has to be transmit-
ted to the printer after each power-up.
FORMAT$
Purpose Function for formatting a number represented by a string.
Syntax FORMAT$(<sexp1>,"<nexp1>b"|"d")
<sexp1> is a string of integers or ASCII characters.
<nexp1> is the number of bytes to output in integer to ASCII conversion.
FORMAT$(<sexp1>,<sexp2>)
<sexp1> is the string of numerals, optionally with decimals, which is to be
formatted.
<sexp2> specifies the format of the string.
Remarks FORMAT$ can be used for conversion of strings from ASCII to integer
numbers and vice versa when used as in the first syntax above.
<nexp1>b = Specifies conversion from integer to ASCII format.
This converts <sexp1> from a number in integer format to the correspon-
ding characters in ASCII format. <nexp1> specifies the number of bytes to
output. For example FORMAT$("1380337988","4b") yields RFID.
d = Specifies conversion from ASCII format to integer.
The string <sexp1> is translated from an ASCII string to the same number
in integer format. For example, FORMAT$("A","d") yields 65.
FORMAT$ is also be used to convert a number to a specific display
format. The original string (<sexp1>) is a string of digits, optionally with
a decimal point to separate decimals from integers. It can also contain
leading plus (+), minus (-), and space characters. Space characters are igno-
red, whereas the usual mathematical rules apply to plus and minus signs.
All other characters (or plus, minus, and space characters in other positions
than leading) generate errors. The format is specified by a string (<sexp2>).
The string can contain any characters, but some have special meanings.
Note the explanation of the following characters.
0 = Digit place holder, display a digit or zero.
If the input number has fewer digits than there are zeros (on either side of
the decimal separator) in the format string, leading or trailing zeros are dis-
played. If the number has more digits to the left side of the decimal separa-
tor than there are zeros to the left side of the separator in the format string
the digits will be displayed. If the number has more digits to the right of
the separator than there are zeros to the right of the decimal separator in
the format string, the decimal will be truncated to as many decimal places
as there are zeros.
# = Digit placeholder, display a digit or nothing.
If there is a digit in the expression being formatted in the position where
the # appears in the format string, display the digit or otherwise display
nothing in that position. If the number has more digits to the left side of
FORMAT$, cont.
the decimal separator than there are # to the left side of the separator in the
format string the digits will be displayed.
. = Decimal separator, to separate the integer and the decimal digits.
, = Decimal separator, to separate the integer and the decimal digits.
\ = Display the next character in the format string.
The backslash itself is not displayed. To display a \, use two backslashes.
The only character, which will be displayed in the formatted string without
a backslash is space.
space = Space
A space will be displayed as literal character wherever it is in the expression
format.
• An empty format string is equivalent to "0.##########".
• 0 and # cannot be mixed in every way. Before the decimal separator, use
# first and then 0. After the decimal separator, use 0 first and then #.
For example: ####00.000### is OK and #00##0.##0#00 is not.
• A point or a comma separates integers and decimals. The decimal sepa-
rator used in the format is the one that will be the returned separator
type. Independent of the separator type in the number the format type
will control the return type. Default type is a point.
• A format can consist of separators as space between thousands either a
unit as $. For example: "$ ### ### 000.00".
• The attached number string will be truncated to the quantity of decimal
in the format.
• Characters will not be displayed on the left side of the decimal separator
if there is a # on the left side of the characters and the string to be for-
matted do not have a digit in the same position as the #. On the right
side of the decimal separator, characters will not be displayed if there is
a # on the right side of the characters and the string to be formatted do
not have a digit in the same position as the #. For example:
Format string: "\$#\t\e\x\t0.0\t\e\x\t#\$"
String to be formatted: 1.1 55 0.33 55.33
Returned strings: $1.1$ $5text5.0$ $0.3text3$ $5text5.3text3$
FORMAT$, cont.
Examples Addition
B$="234.9"
C$="1001"
D$="# ##0.##"
A$=FLOATCALC$(B$,"+",C$,15)
PRINT A$
yields:
"1235.900000000000000"
PRINT FORMAT$(A$,D$)
yields:
"1 235.9"
Subtraction
A$=FLOATCALC$("234.90","-","100.013",2)
PRINT A$
yields:
"134.88"
Multiplication
B$="3"
A$=FLOATCALC$("100", "*", B$, 1)
PRINT A$
yields:
"300.0"
C$="0 0 0,00###"
PRINT FORMAT$(A$,C$)
yields:
"3 0 0,00"
Division
B$="1.0"
A$=FLOATCALC$(B$,"/","3.0")
PRINT A$
yields:
"0.3333333333"
FORMFEED (FF)
Purpose Statement for feeding out or pulling back a certain length of media.
Syntax FORMFEED|FF[<nexp>]
<nexp> is, optionally, the feed length expressed as a positive or negative
number of dots.
Remarks If no value is entered after the FORMFEED statement, the printer will
feed out one single label, ticket, tag, or a portion of continuous stock
according to the printer’s setup. See start- and stopadjustments and media
type in the User’s Guide for the printer model in question.
If a value is entered after the FORMFEED statement, the media will be
fed out or pulled back the corresponding number of dots:
- A positive number of dots makes the printer feed out the specified
length of media.
- A negative number of dots makes the printer pull back the specified
length of media. Be careful not to enter a value larger than the length
of the label to avoid causing a media jam.
It is important whether a FORMFEED statement is issued before or after
a PRINTFEED statement:
- FORMFEED statement issued before PRINTFEED affects the posi-
tion of the origin on the first copy to be printed.
- FORMFEED statement issued after PRINTFEED does not affect the
position of the origin on the first copy, but next copy will be affected.
Do not use FORMFEED as a replacement for start- and stopadjustments
in the Setup Mode or in connection with batch printing.
Examples Printing a line of text and feeding out an extra 60 dots of media after
printing:
10 FONT "Swiss 721 BT"
20 PRPOS 30,200
30 PRTXT "HELLO"
40 PRINTFEED
50 FORMFEED 60
RUN
FRE
Purpose Function returning the number of free bytes in spcified part of the printer’s
memory.
Syntax FRE(<<sexp>|<nexp>>)
<sexp> is the designation of the part of the printer’s memory from which
the number of free bytes should be returned, for example "/c",
"tmp:", "card1:".
<nexp> is a dummy argument. Returns the number of free bytes in the
printer’s temporary memory ("tmp:").
Remarks The firmware looks for a colon (:) sign in the argument for the FRE func-
tion. If the argument is valid name of a memory device, the number of free
bytes in that device is returned.
If the argument specifies device "card1:", but no card is inserted, Error
1039, “Not mounted" will occur.
If the name of a device, that is not a part of the printer’s memory (for
example "uart1:" or "console:"), is entered as an argument, the FRE func-
tion will return 0.
Refer to DEVICES for more information on memory and non-memory
devices.
If the argument contains a colon, but is not a valid name of any device (for
example "QWERTY:"), Error 1013, “Device not found” will occur.
Any argument, that does not include a colon sign (for example “7” or
"QWERTY”), will return the amount of free bytes in the printer’s tempo-
rary memory ("tmp:").
Example
PRINT FRE("tmp:")
yields for example:
2382384
PRINT FRE("uart1:")
yields:
0
PRINT FRE(1)
yields for example:
2382384
FUNCTEST
Purpose Statement for performing various hardware tests.
Syntax FUNCTEST<sexp>,<svar>
<sexp> is the type of test to be performed:
"CARD"
"HEAD" (only "HEAD" yields a meaningful response)
"KERNEL"
"ROMn"
<svar> is the variable in which the result will be placed.
Ok
FUNCTEST$
Purpose Function returning the result of various hardware tests.
Syntax FUNCTEST$(<sexp>)
<sexp> is the type of test to be performed:
"CARD"
"HEAD" (only "HEAD" yields a meaningful response)
"KERNEL"
"ROMn"
Ok
GET
Purpose Statement for reading a record from a random file to a random buffer.
Syntax GET[#]<nexp1>,<nexp2>
# indicates that whatever follows is a number. Optional.
<nexp1> is the number assigned to the file when it was OPENed.
<nexp2> is the number of the record. Must be ≠ 0.
Remarks The GET statement is used to read a certain record in a certain random file
to a buffer, where the record will be assigned to variables according to the
FIELD statement given for the buffer. After the GET statement has been
executed, you can use references to the variables defined by the FIELD
statement to read the characters in the random buffer.
Numeric expressions, which have been converted to string expressions by
STR$ functions before being put into the buffer, can be converted back to
numeric expressions using VAL functions.
NEW
10 OPEN "PHONELIST" AS #8 LEN=26
20 FIELD#8,8 AS F1$, 8 AS F2$, 10 AS F3$
30 GET #8,1
40 PRINT F1$,F2$,F3$
RUN
yields:
SMITH — — — JOHN — — — — — — 12345630
GETASSOC$
Purpose Function for getting a value from a string association.
Example
This example shows how a string, including three stringnames associated
with three start values, will be defined and one of them (time) will be
changed:
10 QUERYSTRING$=
"time=UNKNOWN&label=321&desc=DEF"
20 MAKEASSOC"QARRAY",QUERYSTRING$,"HTTP"
30 QTIME$=GETASSOC$("QARRAY","time")
40 QLABELS%=VAL(GETASSOC$("QARRAY","label"))
50 QDESC$=GETASSOC$("QARRAY","desc")
60 PRINT"time=";QTIME$,"LABEL=";QLABELS%,
"DESCRIPTION=";QDESC$
70 SETASSOC"QARRAY","time",time$
80 PRINT"time=";GETASSOC$("QARRAY","time")
RUN
yields:
GETASSOCNAME$
Purpose Function for traversing the tuples of a string association.
Syntax GETASSOCNAME$(<sexp>,<nexp>)
<sexp> is the association to be traversed (case-sensitive).
<nexp> specifies the tuple in the association.
<nvar> = 0 specifies first tuple.
<nvar> ≠ 0 specifies next tuple.
Example This example shows how “QARRAY" is traversed (run example from
GETASSOC first):
10 LVAL$=GETASSOCNAME$("QARRAY",0)
20 WHILE LVAL$<>""
30 RVAL$=GETASSOC$("QARRAY",LVAL$)
40 PRINT LVAL$;"=";RVAL$
50 LVAL$=GETASSOCNAME$("QARRAY",1)
60 WEND
RUN
yields:
label=321
desc=DEF
time=153355
GETPFSVAR
Purpose Function for recovering saved variables.
Syntax GETPFSVAR(<sexp>[,D])
<sexp> is the name of the variable (uppercase characters only).
D optionally specifies that the variable is to be deleted after reco-
very.
GOSUB
Purpose Statement for branching to a subroutine.
Remarks After branching, the subroutine will be executed line by line until a
RETURN statement is encountered.
The same subroutine can be branched to many times from different lines
in the main program. GOSUB always remembers where the branching
took place, which makes it possible to return to the correct line in the
main program after the subroutine has been executed.
Subroutines may be nested, which means that a subroutine may contain a
GOSUB statement for branching to a secondary subroutine and so on.
Subroutines are normally placed on program lines with higher numbers
than the main program. The main program should be appended by an
END statement to avoid unintentional execution of subroutines.
Ok
GOSUB, cont.
In this examples, line numbers have been omitted and line labels are used
to make the program branch to subroutines:
IMMEDIATE OFF
PRINT "This is the main program"
GOSUB SUB1
PRINT "You’re back in the main program"
END
SUB1: PRINT "This is subroutine 1"
GOSUB SUB2
PRINT "You’re back from subroutine 2 to 1"
RETURN
SUB2: PRINT "This is subroutine 2"
GOSUB SUB3
PRINT "You’re back from subroutine 3 to 2"
RETURN
SUB3: PRINT "This is subroutine 3"
PRINT "You’re leaving subroutine 3"
RETURN
GOTO
Purpose Statement for branching unconditionally to a specified line.
Remarks If the specified line contains an executable statement, both that statement
and all that follows will be executed. If the specified line does not exist, an
error condition will occur.
The GOTO statement can also be used in the immediate mode to resume
execution of a program, which has been terminated using a STOP state-
ment, at a specified program line.
Example
In this example the first bar of the tune "Colonel Boogie" will be played
only if the title is entered correctly. Otherwise the message "Try again" will
be displayed until you manage to type the right name.
10 A$="COLONEL BOOGIE"
20 B$="TRY AGAIN"
30 INPUT "TITLE"; C$
40 IF C$=A$ GOTO 100 ELSE PRINT B$
50 GOTO 30
60 END
100 SOUND 392,15
110 SOUND 330,20
120 SOUND 330,15
130 SOUND 349,15
140 SOUND 392,15
150 SOUND 659,25
160 SOUND 659,20
170 SOUND 523,25
180 GOTO 60
RUN
yields:
TITLE?
Note the way GOTO is used in line 50 to create a loop, which makes
the printer await the condition specified in line 40 before the execution
is resumed. Instead of line numbers, line labels can be used following the
same principles as illustrated in the second example for GOSUB state-
ment.
HEAD
Purpose Function returning the result of a thermal printhead check.
Syntax HEAD(<nexp1>)
<nexp1> ≥ 0 specifies the number of a dot for which the resistance in ohms
will be returned.
<nexp1> = -1 printhead check: Returns -1 (true) if OK
Returns 0 (false) if error
<nexp1> = -7 returns mean printhead resistance in ohms.
<nexp2> = HEAD(<sexp>)
<nexp2> returns the number (quantity) of faulty dots.
<sexp> returns the dot number and resistance for each faulty dot.
Remarks This function allows you to examine the printhead in regard of dot resis-
tance. There is no guarantee that all defect “dots" will detected by the
HEAD function, since only the resistance is checked. For example, dirty or
cracked dots can only be detected visually.
Note: The EasyCoder PD41 does not have resistance measuring. Running
the HEAD command on this platform will not return actual values.
HEAD, cont.
The second version of the HEAD function measures the dot resistance for
every dot in the printhead and faulty dots are reported to the system, so
you do not need to use a SET FAULTY DOT statement to report bad dots
one at the time. The PD41 will return 0, and <sexp> will be empty.
Examples Read the resistance value of dot No. 5:
PRINT HEAD(5)
Check printhead for faulty dots and their respective resistance values:
A%=HEAD(B$)
yields for example:
Ok
PRINT A%
5
Ok
PRINT B$
25, 2944
42, 2944
106, 2944
107, 2944
140, 2944
Ok
IF...THEN...(ELSE)
Purpose Statement for conditional execution controlled by the result of a numeric
expression.
Syntax IF<nexp>[,]THEN<stmt1>[ELSE<stmt2>]
IF<nexp>[,]THEN ↵
<stmt1> ↵
[...<stmt1+n>] ↵
[ELSE ↵
<stmt2> ↵
[...<stmt2+n>]] ↵
ENDIF ↵
Examples
These two examples illustrates the different syntaxes:
10 A%=100:B%=20
20 C$="A LARGER THAN B"
30 D$="A NOT LARGER THAN B"
40 IF A%>B% THEN PRINT C$ ELSE PRINT D$
RUN
yields:
A LARGER THAN B
10 A%=VAL(TIME$)
20 IF A%>120000 THEN
30 PRINT "TIME IS ";TIME$; ". ";
40 PRINT "GO TO LUNCH!"
50 ELSE
60 PRINT "CARRY ON - ";
70 PRINT "THERE’S MORE WORK TO DO!"
80 ENDIF
RUN
yields for example:
TIME IS 121500. GO TO LUNCH!
IF...THEN...(ELSE), cont.
IF ... THEN are often used in connection with GOTO. In this example,
line numbering is used. Also see the example for the GOTO statement.
10 A%=100
20 B%=50
30 IF A%=B% THEN GOTO 50 ELSE PRINT "NOT
EQUAL"
40 END
50 PRINT "EQUAL":END
RUN
yields:
NOT EQUAL
This example correspond to the preceding example, but line labels are used
instead of line numbers.
IMMEDIATE OFF
A%=100
B%=50
IF A%=B% THEN GOTO QQQ ELSE PRINT "NOT EQUAL"
END
QQQ: PRINT "EQUAL":END
IMMEDIATE ON
RUN
yields:
NOT EQUAL
Remarks This statement mirrors the current defined image buffer around the Y-
axis, that is, the feed direction. Fields defined after the IMAGE BUFFER
MIRROR statement is executed are rendered normally. The image buffer
width is always 8-bit aligned, even when the X-start parameter in the setup
is not. Thus, it is recommended to test that the mirrored image is prin-
ted sidewise where intended. In some cases, a small correction using the
PRPOS statement or the X-start parameter could be necessary.
Example NEW
10 PRPOS 50,300
20 FONT "Swiss 721 BT",40
30 PRTXT "MIRROR"
40 IMAGE BUFFER MIRROR
50 PRPOS 50,100
60 PRTXT "NORMAL"
70 PRINTFEED
RORRIM
NORMAL
Feed
Direction
Remarks This statement saves the current content of the print buffer as an image file
in RLL format. After saving, the file is automatically installed as an image,
that can be printed using a PRIMAGE statement in DIR 1 and DIR 3.
Thereby, you can create label templates, to which variable data easily can
be added at will.
The size of the print buffer image depends on the size of the print image
at the moment the buffer is saved. The width is decided by the Media,
Media Size, Width setup value with the first pixel according to the Media,
Media Size, Xstart setup value. The height is decided by the actual height
in y-dimension of the print image. Note that space characters or invisible
"white" parts of an image are included in the height of the print image,
even if they are not visible on the printed label.
IMAGE LOAD
Purpose Statement for receiving, converting and installing image and font files.
Remarks This statement prepares the printer to receive a .PCX image file, an image
file in the internal Intermec Fingerprint bitmap format, or a font file on
the standard IN channel (see SETSTDIO statement) or on another com-
munication channel OPEN for INPUT. When the file is received, it will
automatically be converted to an image in the internal bitmap format of
Intermec Fingerprint or to a scaleable font respectively.
The optional first parameter makes it possible to use this statement in MS-
DOS (CR/LF problem).
The name of an image may consist of max. 30 characters including possible
extension. The image will have the same direction as the original image file
and can only be rotated 180° using a DIR statement. We therefore recom-
mend that you include the extension .1 or .2 to indicate for which print
directions the image is intended. Font file names are only restricted to 30
characters. The size of the original file should be given in bytes according
to its size in the host.
Before IMAGE LOAD can be used on a serial channel, the setup must be
changed to 8 characters, CTS/RTS handshake. When an IMAGE LOAD
statement is executed, the execution stops and waits for the number of
bytes specified in the statement to be received. During the transfer of
image file data to the printer, there is a 25 seconds timeout between cha-
racters. If a new character has not been received within the timeout limit,
Error 80 “Download timeout” occurs. When the specified number of
characters have been received, the execution is resumed.
If the downloading was successful, the downloaded image or font will be
installed automatically and can be used without any rebooting.
IMAGENAME$
Purpose Function returning the names of the images stored in the printer’s
memory.
Syntax IMAGENAME$(<nexp>)
<nexp> is the result of the expression which is either false or true:
False (0) indicates first image.
True (≠0) indicates next image.
Remarks This function can be used to produce a list of all images (another method
is to use the IMAGES statement).
Image files downloaded by means of a TRANSFER KERMIT statement
will not be returned, since the software will regard them as files rather than
images.
IMAGENAME$(0) produces the first name in the memory.
IMAGENAME$(≠0) produces next name. Can be repeated as long there
are any image names left.
Example
Use a program like this to list all image names:
10 A$=IMAGENAME$(0)
20 IF A$=""THEN END
30 PRINT A$
40 A$=IMAGENAME$(-1)
50 GOTO 20
RUN
yields for example:
CHESS2X2.1
CHESS4X4.1
DIAMONDS.1
GLOBE.1
Ok
IMAGES
Purpose Statement for returning the names of all images stored in the printer’s
memory to the standard OUT channel.
Syntax IMAGES
Remarks This statement can be used to list all image names (another method is to
use an IMAGENAME$ function).
Image files downloaded by means of a TRANSFER KERMIT statement
will not be printed, since the firmware will regard them as files rather than
images.
Example
A list of images stored in the printer’s memory may look like this:
IMAGES
yields for example:
CHESS2X2.1 CHESS4X4.1
DIAMONDS.1 GLOBE.1
IMMEDIATE
Purpose Statement for enabling or disabling the immediate mode of Intermec
Fingerprint in connection with program editing without line numbers,
for reading the current mode, or for reading the current standard IN and
OUT channels.
IMMEDIATE, cont.
IMMEDIATE MODE
Execution On/Off indicates if a Fingerprint program is running or not.
Immediate On/Off indicates whether the Immediate Mode is enabled or
disabled as specified by IMMEDIATE ON/OFF.
Input On/Off indicates whether the Direct Protocol is enabled or disabled
as specified by INPUT ON/OFF.
Layout Input On/Off indicates whether or not a layout is being recorded
in the Direct Protocol as specified by LAYOUT INPUT and LAYOUT
END.
Dbstdio On/Off indicates whether the debug standard I/O is active or not.
The following conditions are not reported:
- Running a Fingerprint application.
- Execution of a TRANSFER KERMIT, FILE& LOAD, IMAGE
LOAD, LOAD, and STORE INPUT instruction.
- Running external commands (ush), for example RUN"rz......"
- Running the Setup Mode or execution of a SETUP statement.
IMMEDIATE STDIO
Two lines will be transmitted on the STDOUT port with information on
the current STDIN and STDOUT channels regarding port, baud rate,
character length, parity, and stop bits.
Examples
A program can be written without using any line numbers, as illustrated by
this short example. QQQ is used as a line label:
IMMEDIATE OFF
yields:
Ok
PRINT "LINE 1"
GOSUB QQQ
END
QQQ: PRINT "LINE 2"
RETURN
IMMEDIATE ON
Ok
RUN
yields:
LINE 1
LINE 2
Ok
IMMEDIATE, cont.
This example shows how the status of the various modes are checked:
IMMEDIATE MODE
yields for example:
execution=OFF, immediate=ON, input=OFF, layout
input = Off
This example shows how the status of the STDIN and STDOUT chan-
nels are checked:
IMMEDIATE STDIO
yields for example:
stdin=uart1:, 9600, 8, NONE, 1
stdout=uart1:, 9600, 8, NONE, 1
INKEY$
Purpose Function reading the first character in the receive buffer of the standard IN
channel.
Syntax INKEY$
Example In this example, none of the characters received on the standard IN chan-
nel will be printed on the host screen until a # character (ASCII 35 deci-
mal) is encountered.
10 A$ = INKEY$
20 IF A$ = "" GOTO 10
30 IF A$ = CHR$(35) THEN PRINT B$
40 IF A$ = CHR$(35) THEN END
50 B$ = B$ + A$
60 GOTO 10
RUN
Type a number of characters on the keyboard of the host. They will not be
printed on the host screen until you type a # character. Then all the char-
acters will appear simultaneously, except for the #-sign.
Note the loop between line 10 and 20, which makes the program wait for
you to activate a key.
INPUT (IP)
Purpose Statement for receiving input data via the standard IN channel during the
execution of a program.
Syntax INPUT|IP[<scon><;|,>]<<nvar>|<svar>>[,<<nvar>|<svar>>...]
<scon><;|,> is an optional prompt string, followed by a semicolon or comma.
<<nvar>|<svar>> are variables to which the input data will be assigned.
When the prompt “ADDRESS?” appears on the screen, you can type the
input data on the terminal’s keyboard, for example:
999, HILL STREET
Note the separating comma.
If the input text data contains a comma, which shall be printed, you must
enclose the input data with quotation marks ("...."), for example:
999, "HILL STREET, HILLSBOROUGH"
Numeric input data must not include any decimal points.
This example shows how the date can be set directly from the keyboard of
the host:
INPUT "Enter date: ",DATE$
yields:
Enter date:
When the prompt “Enter date:" appears on the screen of the host, you
can type the date as a six-digit combination of year, month and day (see
DATE$ variable). Time can also be set using the same method.
INPUT ON/OFF
Purpose Statement enabling or disabling the Intermec Direct Protocol.
Remarks These statements are used to enter or leave the Intermec Direct Protocol.
INPUT ON Enables the Intermec Direct Protocol:
- Enables reception of input data to a stored layout
- Starts the error handler
- Sets the verbosity to off (SYSVAR (18) = 0)
- Shows “Direct Protocol 8.XX.X” in the display
INPUT OFF Disables the Intermec Direct Protocol:
- Disables reception of input data to a stored layout
- Stops the error handler
- Resets the verbosity to the level selected before last
INPUT ON was executed
- Shows “Fingerprint 8.XX.X” in the display
The following instructions will only work with the Intermec Direct Proto-
col, that is after an INPUT ON statement has been executed:
COUNT& ERROR FORMAT INPUT
INPUT OFF LAYOUT END LAYOUT INPUT
LAYOUT RUN
Example This example illustrates how the Intermec Direct Protocol is enabled,
how new separators are specified, how a layout is stored in the printer’s
memory, how variable data are combined with the layout, and how a label
is printed. Finally, the Intermec Direct Protocol is disabled:
INPUT ON ↵
FORMAT INPUT "#","@","&" ↵
LAYOUT INPUT "tmp:LABEL1" ↵
FT "Swiss 721 BT" ↵
PP 100,250 ↵
PT VAR1$ ↵
PP 100,200 ↵
PT VAR2$ ↵
LAYOUT END ↵
LAYOUT RUN "tmp:LABEL1" ↵
#Line number 1&Line number 2&@ ↵
PF ↵
INPUT OFF ↵
INPUT#
Purpose Statement for reading a string of data from an OPEN device or sequential
file.
Syntax INPUT#<nexp>,<<nvar>|<svar>>[,<<nvar>|<svar>>...]
<nexp> is the number assigned to the file or device when it was OPENed.
<<nvar>|<svar>> is the variable to which the input data will be assigned.
Remarks This statement resembles the INPUT statement, but allows the input to
come from other devices than the standard IN channel or from various
files. Like the INPUT statement, commas can be used to assign diffe-
rent portions of the input to different variables. INPUT# does not allow
prompts to be used.
When reading from a sequential file, the records can be read one after the
other by the repeated issuing of INPUT# statements with the same file
reference.
Once a file record has been read, it cannot be read again until the file is
CLOSEd and then OPENed again.
The maximum number of characters that can be read using an INPUT#
statement is 32,767 characters.
Note that INPUT# filters out any incoming ASCII 00 dec. characters
(NUL).
Example This example assigns data from the first record in the sequential file
"Addresses" to the three string variables A$, B$, and C$ and from the
second record in the same file to the string variables D$ and E$:
. . . . .
. . . . .
100 OPEN "ADDRESSES" FOR INPUT AS #5
110 INPUT#5, A$, B$, C$
120 INPUT#5, D$, E$
. . . . .
. . . . .
INPUT$
Purpose Function returning a string of data, limited in regard of number of charac-
ters, from the standard IN channel, or optionally from an OPENed file or
device.
Syntax INPUT$(<nexp1>[,<nexp2>])
<nexp1> is the number of characters to be read.
<nexp2> optionally specifies a file or device using the number assigned to
it when it was OPENed.
Remarks If no file or device is specified, the input will come from the standard I/O
channel, see SETSTDIO statement.
Otherwise, it will come from the specified file or device. The execution will
be held until the specified number of characters has been received from
the keyboard console, file, or communication channel. If a file does not
contain the specified number of characters, the execution will be resumed
as soon as all available characters in the file have been received.
The maximum number of characters that can be returned using an
INPUT$ statement is 65,536 characters.
Examples This example reads a sequence of 25 characters from the printer’s built-in
keyboard and assigns them to a string variable named Z$:
. . . . .
. . . . .
1000 OPEN "CONSOLE:" FOR INPUT AS #1
1010 Z$=INPUT$(25,1)
. . . . .
. . . . .
In this example, 10 characters are read from the standard IN channel and
assigned to a variable.
10 A$=INPUT$(10)
INSTR
Purpose Function searching a specified string for a certain character, or sequence of
characters, and returning its position in relation to the start of the string.
Syntax INSTR([<nexp>,]<sexp1>,<sexp2>)
<nexp> is , optionally, the position where the search will start.
<sexp1> is the string to be searched.
<sexp2> is the character(s) for which the string will be searched.
Remarks INSTR allows you to search a string for some particular character(s) and
return the position of the character, or the first character in the sequence,
as a number of characters positions measured from the start of the string.
As an option, it is possible to specify a certain position in the string from
which the search will start. If no start position is specified, the search will
start at the beginning of the string.
The result will be zero if
- the start position value exceeds the length of the string.
- the string is empty.
- the searched combination of characters cannot be found.
Examples
In this example, the string "INTERMEC_PRINTER_AB" is searched for
the character combination "AB". No start position is specified.
10 A$="INTERMEC PRINTER AB"
20 B$="AB"
30 PRINT INSTR(A$,B$)
RUN
yields:
18
INVIMAGE (II)
Purpose Statement for inversing the printing of text and images from “black-on-
white" to “white-on-black."
Syntax INVIMAGE | II
Default: NORIMAGE
Reset to default by: PRINTFEED execution
Remarks This statement can only be used in connection with the printing of text
and images (PRTXT and PRIMAGE). In the matrix of the font or image,
all “white” dots will be black and all black dots will be “white.” (Obviously,
“white” means that the dots will not be subjected to heat and the media
therefore will retain its original color, whereas “black” means the color of
the printing.)
This implies that most fonts will be printed on a black background which
ascends and descends slightly more than most of the characters. Not all
fonts are suited for inverse printing. Thin lines, serifs, and ornaments may
be difficult to distinguish. There may also be an imbalance between the
ascending and descending black background.
The same principles apply to images. The normally invisible background
may be larger than expected or be less favourably balanced. Small “white”
details tend to be blurred out by the black background. Therefore, before
using an inverse image, make a printout sample.
INVIMAGE will be revoked by a NORIMAGE statement.
KEY BEEP
Purpose Statement for resetting the frequency and duration of the sound produced
by the beeper, when any of the keys on the printer’s keyboard is pressed
down.
Syntax KEY↔BEEP<nexp1>,<nexp2>
<nexp1> is the frequency of the sound in Hz.
<nexp2> is the duration of the sound in periods of 0.020 seconds each
(max. 15,0000 = 5 minutes).
Default: Frequency: 1200 Hz
Duration: 0.030 sec.
Remarks This statement sets the response for all keys of the printer. To turn off the
audible key response, set the frequency to a value higher than 9999.
Note that the beeper is disabled during printing.
The table below illustrates the relation between frequencies and the musical
scale (same as in the SOUND statement).
Example In this example, the beeper will produce an A in the one-line octave for 1
second each time a key is pressed down.
10 KEY BEEP 440,50
. . . . .
. . . . .
KEY ON/OFF
Purpose Statement enabling or disabling a specified key on the printer’s front panel
to be used in connection with an ON KEY...GOSUB statement.
Syntax KEY(<nexp>)OFF|ON
<nexp> is the id. number of one of the keys on the printer’s front panel
OFF|ON disables|enables the specified key.
Remarks Using an ON KEY... GOSUB statement, any key (except the <Shift> key)
can be assigned to make the program branch to a subroutine. The keys are
enabled/disabled individually and are specified by means of their respec-
tive id. numbers in unshifted and/or shifted position, see Appendix A. To
specify a shifted key, add 100 to the unshifted id. number the key.
The EasyCoder PD41 only has one button, with id.number 17. The
button generates event 117 when released.
Please note the difference between the id. numbers of the keys and the
ASCII values they are able to produce (see KEYBMAP$).
Example In this example, the /F1 key (id. No. 10) is first enabled, then used for
branching to a subroutine and finally disabled.
10 KEY (10) ON
20 ON KEY (10) GOSUB 1000
30 KEY (10) OFF
KEYBMAP$
Purpose Variable returning or setting the keyboard map table.
Remarks
In the KEYBMAP$ statement, each key on the printer’s front panel has
two characteristics:
• The physical location of the key (position number).
(This is not the same thing as the key’s Id. No, see KEY ON/OFF or
ON KEY GOSUB.)
• The ASCII decimal value that will be produced when the key is pressed.
(Compare with BREAK.)
Refer to Appendix A for illustrations of position numbers, id. numbers,
and ASCII values for the various printer models and keyboard types.
In principle, each physical key can produce two or three different ASCII
values, one in unshifted position, another in shifted position, and—in case
of an alphanumeric keyboard—a third when the <Alt> key is activated.
One key is appointed <Shift> key. When the <Shift> key is pressed at the
same time as another key, the unshifted ASCII value of the latter will be
increased by 128.
You can use the KEYBMAP$ instruction in two ways:
Reading the keyboard mapping
You can read how the keyboard is mapped depending on if the <Shift> or
<Alt> is activated or not. The printer will return a string of ASCII values in
ascending key position number. Because many keys return non-printable
ASCII values (ASCII 00-31 dec.), all will not be returned to the screen of
the host or printed on a label.
KEYBMAP$, cont.
Changing the keyboard mapping
You can change the mapping of the keyboard, so a key will produce
another ASCII value than before. To do that, you must create a string
which specifies the ASCII value for each of all 64 unshifted, shifted, or Alt-
initiated key positions in ascending order. Regardless of what the keyboard
looks like, there are always 64 theoretical key positions.
Note: The exception being the EasyCoder PD41, whose keyboard map
is only 6 bytes long. Index zero indicates the Print button, and 1-5 being
reserved.
KILL
Purpose Statement for deleting a file, directory, or complete directory sub-trees
from the printer’s memory or from a CompactFlash memory card inserted
in the memory card adapter.
Syntax KILL<sexp>[,R[,A]]
<sexp> is the file or directory to be deleted.
R recursively removes all non-system files in the specified sub-tree
and then removes all empty directories in the same sub-tree.
A optionally specifies that system files also should be removed.
Remarks The name of the file to be deleted must match the name given when the
file was saved, see SAVE statement. The name must include the extension.
If no extension was entered manually by the operator when the file was
SAVEd, the extension “.PRG” was added automatically.
To KILL a file residing in another directory than the current one (see
CHDIR statement), you must include a reference to the directory in ques-
tion when you specify the file, for example "card1:<filename>.XYZ".
KILL cannot be used for files residing in "rom:", "storage:", or "lock:".
A directory cannot be removed if it contains files or directories unless the
R flag is included in the KILL statement. Otherwise error 1073, “Direc-
tory not empty” will occur.
A trailing slash character (/) may be added to directory names, but is not
necessary.
The A and R flags are only applicable when removing directories, doing
otherwise will result in error 1034, “Not a directory”.
The root directory of any device cannot be removed.
Note the symmetry with FILES. FILES<sexp>,R and FILES<sexp>,R,A
list files and directories that will be removed using KILL<sexp>,R and
KILL<sexp>,R,A respectively.
The current directory may be removed (for example KILL CURDIR$,R).
The current directory is not changed after such a command, but is inva-
lid and a successful CHDIR statement is necessary to restore the current
directory to one that exists (CHDIR".." may not work).
Also see CHDIR, FILES, and MKDIR
KILL, cont.
Example 10 ON ERROR GOTO 1000
20 CHDIR("/c")
30 MKDIR "DIR1" Create the directory DIR1
40 FILES
50 COPY "STDIO", "DIR1" Copy STDIO into DIR1
60 FILES "DIR1" List files in DIR1
70 KILL "DIR1" Try to remove DIR1
80 KILL "DIR1",R Remove the directory recursively
90 FILES
100 END
1000 PRINT "error number "; ERR;"in line ";ERL
1010 RESUME NEXT
RUN
yields for example:
Files on /c
DIR1/ 0 APPLICATION 0
boot/ 0 ADMIN/ 0
STDIO 4
22210562 bytes free 4 bytes used
STDIO 4
2220032 bytes free 4 bytes used
Error number 1073 in line 70
Files on /c
APPLICATION 0 boot/ 0
ADMIN/ 0 STDIO 4
LAYOUT
Purpose Statement for handling of layout files.
Remarks <sexp1>: Layout file format sorted in ascending order (Records 1-n, 52 bytes each)
Input: H = hex digit, D = Numeric digit, C = Alpha character
Byte # Parameter Layout Type Input Notes
0-1 Element number HH
2 Layout type C
A = Logotype by name
B = Bar code
C = Text
E = Bar code extended field Note 1
H = Barfont on/off
J = Baradjust (corresponds to BARADJUST stmt)
L = Logotype by number
S = Line
X = Box
3 Direction A,B,C,L,S,or X D
Barfont on/off (0=off; 1=on) H D
Security E D
4 Alignment A,B,C,L,S,X D
Aspect height ratio E D
5-8 X-position A,B,C,L,S,or X DDDD
Aspect width ratio E D
Baradjust left J DDDD
9-12 Y-position A,B,C,L,S,or X DDDD
Rows in bar code E DD
Baradjust right J DDDD
13-22 Font name C C1-C10 Note 2
Logotype name A C1-C10
Bar code name B C1-C10
Barfont name H C1-C10
Line length S DDDD
Box width X DDDD
Columns in bar code E DD Byte 13-14
Truncate according to code spec's E D Byte 15
23-42 Fixed text or alphanumeric data B or C C1-C20
Fixed numeric data B D1-D20
Logotype number L DD
Box height X DDDD
Line thickness S DDDD
43-44 No of char. to print (of byte 23-42) B or C DD
45-46 Image type (I = inverse image) A,C, or L C
Bar code ratio (wide/narrow bars) B DD
47 Vertical magnification A,C, or L D or C Note 3
Bar code magnification B D or C Note 3
48 Horizontal magnification A,C, or L D
49-51 Bar code height B DDD
Line thickness X DDD
LAYOUT, cont.
Note 1: The bar code extended field record (E) corresponds to the six last
parameters in the BARSET statement. Must have a lower element number
than the corresponding bar code record (B), which specifies the other bar
code parameters.
LAYOUT, cont.
To improve the performance, it is strongly recommended to create
the layout and logotype name files in the printer’s temporary memory
("tmp:"). Once they have been created in "tmp:", they could be copied to
the printer’s permanent memory to avoid losing them at power off.
Do not confuse this statement with the statements LAYOUT INPUT,
LAYOUT END, and LAYOUT RUN.
Example Note that the 10 characters available to define a font in the LAYOUT
statement in most cases cannot accommodate modern outline font names.
Instead, use font aliases as described in Chapter 6. In the example below,
the font aliases are indicated by lowercase italic typing (lines 90–120, 150).
10 DIM QERR%(10)
20 LAYDATA$(0)="01DAY"
30 LAYDATA$(1)="04123456789012"
40 QERR%(0)=0
50 OPEN "tmp:LOGNAME.DAT" FOR OUTPUT AS 19
60 PRINT# 19,"DIAMONDS.1";
70 CLOSE 19
80 OPEN "tmp:LAYOUT.DAT" FOR OUTPUT AS 6
90 PRINT# 6,"01C11100 10 font alias 00I 11 ";
100 PRINT# 6,"01C11100 40 font alias 00 22 ";
110 PRINT# 6,"01C11100 100 font aliasWEDNES 06I 11 ";
120 PRINT# 6,"01C11100 130 font aliasSATURNUS 05I 11 ";
130 PRINT# 6,"02L11300 70 1 33 ";
140 PRINT# 6,"03S11100 210 300 3 ";
150 PRINT# 6,"04H1 font alias ";
160 PRINT# 6,"04B14100 300 EAN13 0 312 100";
170 CLOSE 6
180 LAYOUT "tmp:LAYOUT.DAT","tmp:LOGNAME.DAT",LAYDATA$,QERR%
190 IF QERR% (1) = 0 THEN GOTO 260
200 PRINT "-ERROR- LAYOUT 1"
210 I%=0
220 IF QERR%(I%)=0 THEN GOTO 260
230 PRINT " ERROR ";QERR%(I%+1);" in record ";QERR%(I%)
240 I%=I%+2
250 GOTO 220
260 PRINTFEED
LAYOUT END
Purpose Statement for stopping the recording of a layout description and saving the
layout (Intermec Direct Protocol only).
Remarks This statement can only be used in the Intermec Direct Protocol after a
layout has been recorded by means of a LAYOUT INPUT statement.
After a LAYOUT END statement has been executed, no more data will be
added to the layout.
By default, the layout will be saved in the printer’s permanent memory
("/c"). To speed up the execution it can, as an alternative, be saved in the
temporary memory (see LAYOUT INPUT statement). The layout can be
copied and killed as any other program file.
Example This example illustrates how the Intermec Direct Protocol is enabled, how
new separators are specified, how a layout is stored in the printer’s tempo-
rary memory, how variable data are combined with the layout, and how a
label is printed. Finally, the Intermec Direct Protocol is disabled:
INPUT ON ↵
FORMAT INPUT "#","@","&" ↵
LAYOUT INPUT "tmp:LABEL1" ↵
FT "Swiss 721 BT"↵
PP 100,250 ↵
PT VAR1$ ↵
PP 100,200 ↵
PT VAR2$ ↵
LAYOUT END ↵
LAYOUT RUN "tmp:LABEL1" ↵
#Line number 1&Line number 2&@ ↵
PF ↵
INPUT OFF ↵
LAYOUT INPUT
Purpose Statement for starting the recording of a layout description (Intermec
Direct Protocol only).
Remarks This statement can only be used in the Intermec Direct Protocol and starts
the recording of a layout. All formatting instructions, such as PRPOS,
MAG, FONT, BARFONT, BARSET, PRTXT, PRBAR, PRIMAGE,
PRBOX, PRLINE, etc., which are transmitted to the printer on the
standard IN channel after a LAYOUT INPUT statement and before a
LAYOUT END statement, will be included in the layout.
Layouts cannot be created in "/c" (which by default is the current direc-
tory), but must be created in the printer’s temporary memory ("tmp:"),
or possibly in a CompactFlash card ("card1:"). Once a layout has been
created in the temporary memory ("tmp:"), it can be copied to either "/c"
or "card1:" so it will not be lost at power-off or reboot.
Variable input data to text, bar code, and image fields can be provided
separately using a LAYOUT RUN statement. Such variable data are indi-
cated in the layout by string variables VARn$ where “n” is the number of
the field in the LAYOUT RUN string of data. For example, the statement
PRTXT "Hello" in the layout results in a fixed text, whereas the statement
PRTXT VAR1$ results in a variable text, which is provided by the first
field in a LAYOUT RUN string.
The layout must not contain any PRINTFEED statements. The layout will
not be saved until a LAYOUT END statement is executed.
Example In this example, the Intermec Direct Protocol is enabled, new separators
are specified, a layout is stored in "tmp:", data are combined with the
layout, and a label is printed. Finally, the Direct Protocol is disabled:
INPUT ON ↵
FORMAT INPUT "#","@","&" ↵
LAYOUT INPUT "tmp:LABEL1" ↵
FT "Swiss 721 BT" ↵
PP 100,250 ↵
PT VAR1$ ↵
PP 100,200 ↵
PT VAR2$ ↵
LAYOUT END ↵
LAYOUT RUN "tmp:LABEL1" ↵
#Line number 1&Line number 2&@ ↵
PF ↵
INPUT OFF ↵
LAYOUT RUN
Purpose Statement for providing variable input data to a predefined layout
(Intermec Direct Protocol only).
Remarks This instruction can only be used in the Intermec Direct Protocol and
is used to select a predefined layout in a specified part of the printer’s
memory (see LAYOUT INPUT statement) and provide input to string
variables in the layout. Such variables are indicated by VARn$, where “n”
indicates a field in the string of data that should follow the LAYOUT
RUN statement.
The string of input data should be composed according to the following
syntax, where <STX> is the start-of-text separator, <CR> is the field
separator and <EOT> is the end-of-text separator (see FORMAT INPUT
statement):
<STX><input to VAR1$><CR><input to VAR2$><CR>. . . .<input to VARn$><CR><EOT>
Before reverting to “normal” Fingerprint printing after having used vari-
able data (LAYOUT INPUT, LAYOUT END, and LAYOUT RUN), the
data must be cleared using LAYOUT RUN with an empty string (LAYOUT
RUN " ").
Example This example illustrates how the Intermec Direct Protocol is enabled, how
new separators are specified, how a layout is stored in the printer’s tempo-
rary memory, how variable data are combined with the layout, and how a
label is printed. Finally, the Intermec Direct Protocol is disabled:
INPUT ON ↵
FORMAT INPUT "#","@","&" ↵
LAYOUT INPUT "tmp:LABEL1" ↵
FT "Swiss 721 BT" ↵
PP 100,250 ↵
PT VAR1$ ↵
PP 100,200 ↵
PT VAR2$ ↵
LAYOUT END ↵
LAYOUT RUN "tmp:LABEL1" ↵
#Line number 1&Line number 2&@ ↵
PF ↵
INPUT OFF ↵
LBLCOND
Purpose Statement for overriding the media feed setup.
Syntax LBLCOND<nexp1>,<nexp2>|<nexp3>
<nexp1> specifies the type of action:
0 = Overriding the stop adjust.
1 = Overriding the start adjust.
2 =Turning off the Label Stop Sensor/Black Mark Sensor.
3 = Selecting the mode specified by <nexp3>
<nexp2> specifies <nexp1> = 0, 1, or 2 as a number of dots.
<nexp3> Specifies one of the following modes:
0 = Legacy Mode
1 = IPL Mode
2 = Gap Truncate Mode
Default: LBLCOND 3,2
Remarks This instruction allows you to override the printer’s feed-adjust setup or to
temporarily disable the label stop sensor or black mark sensor:
<nexp1> = 0 temporarily sets the stop adjust to the value specified by
<nexp2>.
<nexp1> = 1 temporarily sets the start adjust to the value specified by
<nexp2>.
<nexp1> = 2 makes the label stop sensor (LSS) or black mark sensor
temporarily ignore any gaps or marks detected within the
length of media feed specified by <nexp2>. However, the
label length must be greater than than the distance between
the LSS and the tear bar (if not, use LBLCOND 3,xx). This
allows the use of labels of such shapes that would make the
LSS react prematurely, or tickets with preprint at the back
of the media that would interfere with the detection of the
black mark.
<nexp1> = 3 is useful as an alternative to LBLCOND 2,xx when the
length of the label or ticket is shorter than the distance bet-
ween the LSS and the tear bar. It makes it possible to select
one of the modes specified by <nexp3>.
Legacy Mode (<nexp3> = 0)
If the print image is longer than the physical length of the label or ticket,
the print image will extend into the next label until the media feed stops
according to the stop adjust setup (for example when the gap becomes alig-
ned with the tear bar). This means that the print image may be truncated,
the next label may have to be discarded, and some of the print image may
coincide with a gap or slot. This mode was called “Default Mode” in earler
versions of Intermec Fingerprint.
LBLCOND, cont.
IPL Mode (<nexp3> = 1)
If the print image is longer than the physical length of the label or ticket,
the print image will extend into the following label(s) until the entire print
image has been printed. Then the media is fed out to the next gap or mark
according to the stop adjust setup. This means that the print image will
not be truncated but may extend into one or more consecutive labels, and
some of the print image may coincide with gaps or slots.
Gap Truncate Mode (<nexp3> = 2)
If the print image is longer than the physical length of the label or ticket,
only the part of the print image that fits on the label or ticket will be prin-
ted and the remainder will be ignored. This means that some of the print
image may not be printed at all, but the following labels will not be affec-
ted.
Verifying a start adjust or stop adjust value in the Setup Mode by pressing
key No. 16 (normally labeled “Enter”), or setting the value using a setup
file or setup string, will revoke any LBLCOND statement for the parame-
ter in question.
The label stop sensor will be returned to normal operation by the state-
ment: LBLCOND 2,0
All current LBLCOND statements will be revoked at startup or the execu-
tion of a REBOOT statement. This means that the start and stop adjust
will be decided by the setup and the label stop sensor will work normally.
Example In this example, the start adjust value in the setup mode is overridden and
the label stop sensor is set to ignore any gaps in the web within 20 mm
(160 dots at 8 dots/mm; 240 dots at 12 dots/mm) of media feed:
10 LBLCOND 1,5: LBLCOND 2,160
20 FONT "Swiss 721 BT"
30 PRTXT "Hello"
40 PRINTFEED
RUN
LED ON/OFF
Purpose Statement for controlling the dual-color “Status” indicator.
LEFT$
Purpose Function returning a specified number of characters from a given string
starting from the extreme left side of the string, that is from the start.
Syntax LEFT$(<sexp>,<nexp>)
<sexp> is the string from which the characters will be returned.
<nexp> is the number of characters to be returned.
Remarks This function is the complementary function for RIGHT$, which returns
the characters starting from the extreme right side, that is from the end.
If the number of characters to be returned is greater than the number
of characters in the string, then the entire string will be returned. If the
number of characters is set to zero, a null string will be returned.
Examples
10 PRINT LEFT$("THERMAL PRINTER",7)
RUN
yields:
THERMAL
10 A$="THERMAL PRINTER":B$="LABEL"
20 PRINT LEFT$(A$,8);LEFT$(B$,10);"S"
RUN
yields:
THERMAL LABELS
LEN
Purpose Function returning the number of character positions in a string.
Syntax LEN(<sexp>)
<sexp> is the string from which the number of characters will be retur-
ned.
Examples
In this example, lines 40 and 50 illustrate two ways of using the LEN func-
tion, when the number of characters from several string expressions are to
be added up.
10 A$="INTERMEC" (8 char.)
20 B$="THERMAL" (7 char.)
30 C$="PRINTERS" (8 char.)
40 PRINT LEN(A$+B$+C$)
50 PRINT LEN(A$)+LEN(B$)+LEN(C$)
RUN
yields:
23
23
LET
Purpose Statement for assigning the value of an expression to a variable.
Syntax [LET]<<nvar>=<nexp>>|<<svar>=<sexp>>
<nvar> is the numeric variable to which a value will be assigned.
<nexp> is the numeric expression from which the value will be assigned
to the numeric variable.
or...
<svar> is the string variable to which the content of the string expression
will be assigned.
<sexp> is the string expression from which the content will be assigned
to the string variable.
Remarks The keyword LET is not necessary, but retained for compatibility with old
versions of Intermec Fingerprint. The equal sign (=) is sufficient to make
the assignment. Both the expression and the variable most be either string
or numeric.
Example
10 LET A%=100 (numeric variable)
20 B%=150 (numeric variable)
30 LET C$="INTERMEC" (string variable)
40 D$="THERMAL PRINTERS" (string variable)
50 PRINT A%+B%,C$+" "+D$
RUN
yields:
250 INTERMEC THERMAL PRINTERS
LINE INPUT
Purpose Statement for assigning an entire line, including punctuation marks, from
the standard IN channel to a single string variable.
Syntax LINE↔INPUT[<scon>;]<svar>
<scon>; is an optional prompt plus a semicolon
<svar> is the string variable to which the input line is assigned.
LINE INPUT#
Purpose Statement for assigning an entire line, including punctuation marks, from
a sequential file or a device to a single string variable.
Syntax LINE↔INPUT#<nexp>,<svar>
<nexp> is the number assigned to the file when it was OPENed.
<svar> is the string variable to which the input line is assigned.
Remarks This statement differs from the INPUT# statement in that an entire line of
max. 32,767 characters will be read, and possible commas in the line will
be included in the string as punctuation marks instead of dividing it into
portions.
When reading from a sequential file, the lines can be read one after the
other by the repeated issuing of LINE INPUT# statements, using the same
file reference.
Once a line has been read, it cannot be read again until the file is CLOSEd
and then OPENed again.
The LINE INPUT# statement is useful when the lines in a file has been
broken into fields.
Note that LINE INPUT# filters out any incoming ASCII 00 dec. charac-
ters (NUL).
Example This example assigns data from the three first lines of the file "Addresses"
to the string variables A$, B$, and C$ respectively:
. . . . .
. . . . .
100 OPEN "ADDRESSES" FOR INPUT AS #5
110 LINE INPUT# 5, A$
120 LINE INPUT# 5, B$
130 LINE INPUT# 5, C$
. . . . .
. . . . .
LIST
Purpose Statement for listing the current program completely or partially, or listing
all variables, to the standard OUT channel.
Syntax LIST[[<ncon1>[–<ncont2>]] | ,V | ,B]
<ncon1> is a single line, or the first line number in a range of lines.
<ncon2> is optionally the last line number in a range of lines.
,V lists all variables.
,B lists all breakpoints.
LIST, cont.
Examples LIST Lists all lines in the program.
LIST 100 Lists line No. 100 only.
LIST 100– Lists all lines from line No 100
to the end of the program.
LIST –500 Lists all lines from the start of
the program through line No. 500.
LIST 100–500 Lists all lines from line 100
through line 500.
LIST,V Lists all variables.
LIST,B Lists all breakpoints.
LISTPFSVAR
Purpose Statement for listing variables saved at power failure.
Syntax LISTPFSVAR
Example LISTPFSVAR
yields for example:
QS$
QCPS%
A%
LOAD
Purpose Statement for loading a copy of a program, residing in the current direc-
tory or in another specified directory, into the printer’s working memory.
Syntax LOAD<scon>
<scon> is the program to be loaded into the working memory.
Remarks If the program has the extension .PRG, the name of the program can be
given with or without any extension. Otherwise, the extension must be
included in the name. If the program resides in another directory than the
current one (see CHDIR statement), the name must also contain a refe-
rence to the directory in question.
LOAD closes any open files and deletes all program lines and variables resi-
ding in the working memory before loading the specified program. If the
previous program in the working memory has not been saved, see SAVE
statement, it will be lost and cannot be retrieved.
While the program is loaded, a syntax check is performed. If a syntax error
is detected, the loading will be interupted and an error message will be
transmitted on the standard OUT channel.
You may also load a program stored in another directory than the cur-
rent one, for example the read-only memory ("/rom") or a CompactFlash
memory card ("card1:"). Start the file name by specifying the directory, for
example:
LOAD "/rom/MKAUTO.PRG"
or
LOAD "card1:PROGRAM1.PRG"
This will create a copy, which you can list or change and then save under a
new name.
LOC
Purpose Function returning the current position in an OPEN file or the status of
the buffers in an OPEN communication channel.
Syntax LOC(<nexp>)
<nexp> is the number assigned to the file or communication channel
when it was OPENed.
Remarks In a random file, LOC will return the number of the last record read or
written by the use of GET or PUT statements respectively.
In a sequential file, the number of 128-byte blocks, that have been read or
written since the file was OPENed, will be returned.
LOC can also be used to check the receive or transmit buffer of the speci-
fied communication channel:
• If the channel is OPENed for INPUT, the remaining number of charac-
ters (bytes) to be read from the receive buffer is returned.
• If the channel is OPENed for OUTPUT, the remaining free space
(bytes) in the transmit buffer is returned.
The number of bytes includes characters that will be MAPped as NUL.
Examples This example closes the file "addresses" when record No. 100 has been read
from the file:
10 OPEN "ADDRESSES" FOR INPUT AS #1
.....
.....
.....
200 IF LOC(1)=100 THEN CLOSE #1
.....
.....
This example reads the number of bytes which remains to be received from
the receive buffer of "uart2:":
100 OPEN "uart2:" FOR INPUT AS #2
110 A%=LOC(2)
120 PRINT A%
LOF
Purpose Function returning the length in bytes of an OPEN sequential or random
file, or returning the status of the buffers in an OPEN communication
channel.
Syntax LOF(<nexp>)
(<nexp>) is the number assigned to the file or communication channel
when it was OPENed.
Remarks LOF can also be used to check the receive or transmit buffer of the speci-
fied communication channel:
• If a channel is OPENed for INPUT, the remaining free space (bytes) in
the receive buffer is returned.
• If a channel is OPENed for OUTPUT, the remaining number of cha-
racters to be transmitted from the transmit buffer is returned.
Examples The first example illustrates how the length of the file "Pricelist" is
returned:
10 OPEN "PRICELIST" AS #5
20 A%=LOF(5)
30 PRINT A%
. . . .
. . . .
The second example shows how the number of free bytes in the receive
buffer of communication channel "uart2:" is calculated:
100 OPEN "uart2:" FOR INPUT AS #2
110 A%=LOF(2)
120 PRINT A%
LSET
Purpose Statement for placing data left-justified into a field in a random file buffer.
Syntax LSET<svar>=<sexp>
<svar> is the string variable assigned to the field by a FIELD statement.
<sexp> holds the input data.
Remarks After having OPENed a file and formatted it using a FIELD statement,
you can enter data into the random file buffer using the LSET and RSET
statements (RSET right-justifies the data).
The input data can only be stored in the buffer as string expressions. There-
fore, a numeric expression must be converted to string format by the use of
an STR$ function before an LSET or RSET statement is executed.
If the length of the input data is less than the length of the field, the data
will be left justified and the remaining number of bytes will be printed as
space characters.
If the length of the input data exceeds the length of the field, the input
data will be truncated on the right side.
Example
10 OPEN "PHONELIST" AS #8 LEN=26
20 FIELD#8,8 AS F1$, 8 AS F2$, 10 AS F3$
30 SNAME$="SMITH"
40 CNAME$="JOHN"
50 PHONE$="12345630"
60 LSET F1$=SNAME$
70 LSET F2$=CNAME$
80 RSET F3$=PHONE$
90 PUT #8,1
100 CLOSE#8
RUN
SAVE "PROGRAM 1.PRG "
NEW
10 OPEN "PHONELIST" AS #8 LEN=26
20 FIELD#8,8 AS F1$, 8 AS F2$, 10 AS F3$
30 GET #8,1
40 PRINT F1$,F2$,F3$
RUN
yields:
SMITH — — — JOHN — — — — — — 12345630
LTS& ON/OFF
Purpose Statement for enabling or disabling the label taken sensor.
Remarks The label taken sensor (LTS) is a photoelectric device that can be fitted in
the vicinity of the printer’s label outfeed slot and detects if a printed label
or ticket has been removed or not. (Usually, a self-adhesive label is not fed
out completely, but will remain partly stuck to the liner so it will not fall
off.)
Using the LTS ON statement, you can order the printer to stop the execu-
tion at next PRINTFEED statement until the LTS no longer detects any
label. Then the PRINTFEED is executed. This is most useful when prin-
ting batches of labels or tickets. As soon as a label is taken, the next one is
printed and awaits being taken care of.
The same result can also be obtained in a more cumbersome way by a pro-
gram based on the PRSTAT(2) function.
LTS& OFF revokes LTS& ON.
Example 10 LTS& ON
20 FOR A%=1 TO 5
30 B$=STR$(A%)
40 FONT "Swiss 721 BT"
50 PRPOS 200,200
60 PRTXT B$
70 PRINTFEED
80 NEXT
RUN
MAG
Purpose Statement for magnifying a font, barfont, or image up to four times sepa-
rately in regard of height and width.
Syntax MAG<nexp1>,<nexp2>
<nexp1> is the magnification in regard of height (1, 2, 3, or 4).
<nexp2> is the magnification in regard of width (1, 2, 3, or 4).
Default value: 1,1
Reset to default by: PRINTFEED execution
Remarks Magnification makes the object grow in directions away from the selected
anchor point, see ALIGN statement.
The MAG statement has become more or less obsolete for fonts and bar
fonts with the implementation of scaleable fonts. Even if MAG works for
such fonts, the printout quality will be much better by using a larger font
size rather than magnifying a smaller one. However, the MAG statement is
retained to allow compatibility with programs originally written for older
Intermec Fingerprint versions.
The MAG statement also works with images. However, since the MAG
statement simply enlarges the bitmap pattern of an image, it gives a better
printout quality to download and use a larger version of an image rather
than magnifying a smaller one.
Note that the MAG statement cannot be used for bar code patterns (use
BARHEIGHT and BARMAG statement for that purpose).
Example This example illustrates how the image "GLOBE.1" is printed both with
its original size and magnified 4 times. Note the jagged edges of the curves
in the enlarged image.
10 ALIGN 2
20 PRPOS 300,50
30 FONT "Swiss 721 BT"
40 PRTXT "Normal Size"
50 PRPOS 300,125
60 PRIMAGE "GLOBE.1"
70 PRPOS 300,300
80 PRTXT "Enlarged 4X"
90 PRPOS 300,375
100 MAG 4,4
110 PRIMAGE "GLOBE.1"
120 PRINTFEED
RUN
MAKEASSOC
Purpose Statement for creating an association.
Remarks HTTP implies that the argument list in <sexp2> is encoded in “x-www-url-
encoding.”
Example This example shows how a string, including three stringnames associated
with three start values, will be defined and one of them (time) will be
changed:
10 QUERYSTRING$ =
"time=UNKNOWN&label=321&desc=DEF"
20 MAKEASSOC "QARRAY", QUERYSTRING$, "HTTP"
30 QTIME$ = GETASSOC$("QARRAY", "time")
40 QLABELS% = VAL(GETASSOC$("QARRAY","label"))
50 QDESC$ = GETASSOC$("QARRAY", "desc")
60 PRINT "time=";QTIME$, "LABEL=";QLABELS%,
"DESCRIPTION=";QDESC$
70 SETASSOC "QARRAY", "time", time$
80 PRINT "time="; GETASSOC$("QARRAY", "time")
RUN
yields:
MAP
Purpose Statement for changing the ASCII value of a character when received on
the standard IN channel, or optionally on another specified communica-
tion channel.
Syntax MAP[<nexp1>,]<nexp2>,<nexp3>
<nexp1> optionally specifies a communication channel:
0 = "console:"
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5:"
Default: Standard IN channel.
<nexp2> is the original ASCII decimal value.
<nexp3> is the new ASCII decimal value after mapping.
Remarks This statement is used to modify a character set (see NASC and NASCD
statements) or to filter out undesired character. If you for example want a
“Q” (ASCII 81 dec.) to be printed as the letter “Z” (ASCII 90 dec.), the
MAP statement should be entered as: MAP 81,90
The mapping interprets any ASCII 81 dec. value received on the standard
IN channel as ASCII 90 dec., that is when you press “Q” on the keyboard
of the host, the character “Z” will be printed (see note). However, pressing
“Z” will still produce a “Z”, because that character has not been remapped.
To reset the mapping performed above, map the character back to its origi-
nal ASCII value like this: MAP 81,81
When a character is received by the printer, it is processed in regard of pos-
sible MAP statements before it “enters” the Intermec Fingerprint firmware.
That allows you to filter out undesired control characters, which may
confuse the Intermec Fingerprint firmware, for example by mapping them
as NUL (ASCII 0 decimal).
After processing, the selected character set (see NASC and NASCD sta-
tements) controls how characters will be printed or displayed. If none of
the character sets meets your demands completely, use MAP statements
to modify the set that comes closest. Note that MAP statements will be
processed before any COMSET or ON KEY..GOSUB strings are checked.
NASC and NASCD statements will be processed last.
MAP, cont.
Do not map any characters to ASCII values occupied by characters used
in Fingerprint instructions, for example keywords, operators, %, $, #, and
certain punctuation marks. Mapping will be reset to normal at power-up
or reboot.
Examples You can check what characters the host produces using a simple program.
Pressing different keys on the host should produce the corresponding char-
acters both on the label and on the screen of the host. If not, try another
character set (see NASC). In this example we presume that the keyboard
produces ASCII 81 dec. and ASCII 90 dec. when you press the Q and
Z keys respectively. Should any unexpected characters be printed on the
labels or the screen, check the manuals of the host for information on what
ASCII values will be produced by the various keys and how the screen will
present various ASCII values received from the printer.
10 FONT "Swiss 721 BT"
20 PRPOS 30,100
30 INPUT "Enter character";A$
40 PRTXT A$
50 PRINTFEED
By adding a MAP statement in line 5, you can test what happens. In this
case we remap the character Q to be printed as Z, as in the explanation
on the previous page. After printing, we map the character Q back to its
original position.
5 MAP 81,90
10 FONT "Swiss 721 BT"
20 PRPOS 30,100
30 INPUT "Enter character";A$
40 PRTXT A$
50 PRINTFEED
60 MAP 81,81
MERGE
Purpose Statement for merging a program in the printer’s current directory, or
optionally in another specified directory, with the program currently resid-
ing in the printer’s working memory.
Syntax MERGE<scon>
<scon> is the name (optionally including a reference to another directory
than the current one) of the program, which is to be merged with
the program currently residing in the printer’s working memory.
Remarks MERGE creates a copy of a program stored in the current directory (see
CHDIR statement), or optionally in a specified other directory, and
blends its lines into the program currently residing in the printer’s working
memory.
If there are lines with the same numbers in both programs, the lines in
the program currently residing in the working memory will be replaced
by the corresponding lines in the MERGEd program. This also applies
to programs written without line numbers, since they will automati-
cally be assigned hidden line numbers (10-20-30... etc.) at the execu-
tion of the IMMEDIATE ON statement. In order to avoid overwriting
any lines, you may SAVE a program without line numbers using a
SAVE <scon>, L statement. When MERGEd, it will be appended to the
current program and assigned line numbers that start with the number
of the last line of the current program plus 10. For safety reasons, a
backup copy of the current program is recommended before issuing a
MERGE statement.
MERGE makes it possible to store blocks of program instructions, which
are frequently used, and include them into new programs. The printer’s
ROM memory contains a number of useful programs, which also can be
MERGEd into programs of your own creation.
Be careful not to include any MERGE statement as a part of a pro-
gram, or else the execution will stop after the MERGE statement has
been executed.
The EXECUTE statement offers an alternative method for combining
Fingerprint programs.
Examples The program “XYZ.PRG" will be merged with the current program. If
there are identical line numbers in both programs, the lines from “XYZ.
PRG"will replace those in the current program.
MERGE "XYZ.PRG" (from current directory)
MERGE "/c/XYZ.PRG" (from permanent memory)
MERGE "tmp:XYZ.PRG" (from temporary memory)
MERGE "card1:XYZ.PRG" (from memory card)
MIBVAR&
Purpose Statement to read or write SNMP MIB variables.
Syntax MIBVAR&(<nexp>)
<nexp> is the number of the vairable to access. Allowed values: 0-9.
MID$
Purpose Function returning a specified part of a string.
Syntax MID$(<sexp>,<nexp1>[,<nexp2>])
<sexp> is the original string.
<nexp1> is the start position in the original string.
[,<nexp2>] is the number of characters to be returned (optional).
Remarks <sexp> is the original string from which a specified part is to be returned.
<nexp1> specifies which character position in the original string is to be the
first character in the part to be returned.
<nexp2> restricts the number of characters to be returned. This information
is optional. If omitted, all characters from the start position specified by
<nexp1> to the end of the string will be returned.
If the value of <nexp1> is less than or equal to zero, then Error 44, “Para-
meter out of range” will occur.
If the value of <nexp2> is less than zero, then Error 44, “Parameter out of
range” will occur.
If the value of <nexp1> exceeds the length of the original string, an empty
string will be returned, but no error condition will occur.
If the value of <nexp1> does not exceed the length of the original string,
but the sum of <nexp1> and <nexp2> exceeds the length of the original
string, the remainder of the original string will be returned.
Examples
10 A$=MID$("INTERMEC PRINTERS",6,3)
20 PRINT A$
RUN
yields:
MEC
10 A$="INTERMEC PRINTERS"
20 B%=10
30 C%=7
40 D$=MID$(A$,B%,C%)
50 PRINT D$
RUN
yields:
PRINTER
MKDIR
Purpose Statement for creating a directory.
Syntax MKDIR<sexp>
<sexp> specifies the directory to be created.
Remarks <sexp> can end with a slash (/) character, but it is not necessary. Only the
device /c (or "c:") supports creating directories.
Example NEW
MKDIR "DIR1"
SAVE "DIR1/PROGRAM.PRG
FILES "/c/DIR1"
yields:
FILES on /c/DIR1
PROGRAM.PRG 2
2220032 bytes free 2 bytes used
NAME DATE$
Purpose Statement for formatting the month parameter in return strings of
DATE$("F") and DATEADD$(...,"F").
Remarks This statement allows you to assign names to the different months in
any form and language you like. The names will be returned instead
of the corresponding numbers in connection with DATE$("F") and
DATEADD$("F") instructions, provided that a FORMAT DATE$ state-
ment has been executed.
The number of characters assigned to represent months in the FORMAT
DATE$ statement decides how much of the names, as specified in the
NAME DATE$ statement, will be returned. The names will be truncated
at the left side. For example:
FORMAT DATE$ "YY.MMM:DD"
NAME DATE$ 1,"JANUARY"
PRINT DATE$("F")
yields for example:
03.ARY.06
Usually, it is best to restrict the month parameter in the FORMAT DATE$
statement to 2 or 3 characters (MM or MMM) and enter the names of the
months in the NAME DATE$ statement accordingly.
Example This example shows how to make the printer return dates in accordance
with British standard:
10 DATE$="030115"
20 NAME DATE$ 1, "JAN"
30 NAME DATE$ 2, "FEB"
40 NAME DATE$ 3, "MAR"
50 NAME DATE$ 4, "APR"
60 NAME DATE$ 5, "MAY"
70 NAME DATE$ 6, "JUN"
80 NAME DATE$ 7, "JUL"
. . . . .
140 FORMAT DATE$ "MMM DD, YYYY"
150 PRINT DATE$("F")
RUN
yields:
JAN 15, 2003
NAME WEEKDAY$
Purpose Statement for formatting the day parameter in return strings of WEEK-
DAY$.
Remarks This statement allows you to assign names to the different weekdays in any
form and language you like. The names will be returned instead of the cor-
responding numbers in connection with WEEKDAY$ function.
Example This example shows how to make the printer return the name of the week-
day as an English 3-letter abbreviation:
10 FORMAT DATE$ ", MM/DD/YY"
20 DATE$="031201"
30 NAME WEEKDAY$ 1, "Mon"
40 NAME WEEKDAY$ 2, "Tue"
50 NAME WEEKDAY$ 3, "Wed"
60 NAME WEEKDAY$ 4, "Thu"
70 NAME WEEKDAY$ 5, "Fri"
80 NAME WEEKDAY$ 6, "Sat"
90 NAME WEEKDAY$ 7, "Sun"
100 PRINT WEEKDAY$ (DATE$) + DATE$("F")
RUN
yields:
Fri, 12/01/03
NASC
Purpose Statement for selecting a single-byte character set, alternatively the multi-
byte character set UTF-8.
Syntax NASC<nexp>|<sexp>
<nexp> is the reference number of a character set:
1 = Roman 8 (default)
8 = UTF-8
33 = French
34 = Spanish
39 = Italian
44 = English (UK)
46 = Swedish
47 = Norwegian
49 = German
81 = Japanese Latin (romají)
351 = Portuguese
-1 = PCMAP
- 2 = ANSI (same as 1252)
850 = MS-DOS Latin 1
851 = MS-DOS Greek 1
852 = MS-DOS Latin 2
855 = MS-DOS Cyrillic
857 = MS-DOS Turkish
1250 = Windows Latin 2 (Central Europe)
1251 = Windows Cyrillic (Slavic)
1252 = Windows Latin 1 (ANSI, same as -2)
1253 = Windows Greek
1254 = Windows Latin 5 (Turkish)
1257 = Windows Baltic Rim
<sexp> "UTF-8" = UTF-8
"file name" = NSC file character set.
Remarks Please refer to Chapter 4 for complete character set tables.
By default, after processing of possible MAP statements, the Intermec
Fingerprint firmware will print and, when applicable, display all characters
according to the Roman 8 character set. However, the Intermec Finger-
print firmware contains a number of other character sets, which allows you
to print and display such characters that are characteristic for a number of
countries or language areas, or to adapt the printer for the operating system
of the host.
That implies that a certain ASCII code received by the printer may result
in a different character is printed or displayed depending on which charac-
ter set has been selected.
If none of the character sets available contains the desired character(s), use
a MAP statement to reMAP the character set that comes closest to your
needs. Note that MAP statements are processed before NASC statements.
NASC, cont.
You can also specify the multi-byte character set UTF-8. For more infor-
mation on using UTF-8, see Chapter 4.
A NASC statement will have the following consequences:
Font
The font used will be the one last specified by the FONT command. If
none has been specified, the default (Swiss 721 BT) will be used.
Text printing
Text on labels etc. will be printed according to the selected character set.
However, parts of the label, that already has been processed and stored in
the print buffer before the NASC statement is executed, will not be affec-
ted. This implies that labels may be multi-lingual.
LCD Display
New messages in the display will be affected by a NASC statement. Howe-
ver, a message that is already displayed will not be updated automatically.
The display is, for all practical reasons, able to show all printable charac-
ters. In the Setup Mode, all characters are mapped according to US-ASCII
standard.
Communication
Data transmitted via any of the communication channels will not be affec-
ted as the data is defined as ASCII values, not as alphanumeric characters.
The active character set of the receiving unit will decide the graphic presen-
tation of the input data, for example the screen of the host.
Bar Code Printing
The pattern of the bars reflects the ASCII values of the input data and
is not affected by a NASC statement. The bar code interpretation (the
human readable characters below the bar pattern) is affected by a NASC
statement. However, the interpretation of bar codes, that have been proces-
sed and are stored in the print buffer, will not be affected.
Example This example selects the Italian character set, prints the character corre-
sponding to 123 dec. in that set, changes the set to Swedish, and prints the
character corresponding to 123 dec.:
10 NASC 39
20 PRTXT CHR$(123)
30 NASC 46
40 PRTXT CHR$(123)
50 PRINTFEED
yields:
àä
NASCD
Purpose Statement for selecting a double-byte character set, alternatively the multi-
byte character set UTF-8.
Remarks When a double-byte character set has been selected, the firmware will
usually treat all characters from ASCII 161 dec. to ASCII 254 dec (ASCII
A1-FE hex) as the first part of a two-byte character. Next character byte
received will specify the second part. However, the selected double-byte
character set may specify some other ASCII value as the breaking point
between single and double byte character sets.
There are various ways to produce double-byte characters from the key-
board of the computer. By selecting the proper character set using a
NASCD statement, the typed-in ASCII values will be translated to the
corresponding Unicode values, so the desired glyph will be printed. A font
must have been selected using the FONTD command in order to print
according to the selected double-byte character set.
UTF-8 character mapping is pre-installed in the firmware, and is selected
with the command NASCD "UTF-8" (can also be selected with NASC).
See Chapter 4, UTF-8, for more information. Other double-byte character
set tables and fonts are available from Intermec on special request.
Example The following text contains both single- and double-byte fonts. The
double-byte font and its character set are stored in a Font Install Card:
10 NASC 46
20 FONT "Swiss 721 BT", 24, 10
30 FONTD "Song"
40 NASCD "card1:GB2312.NCD"
50 PRTXT CHR$(65);CHR$(164);CHR$(180)
60 PRINTFEED
RUN
This program yields a printed text line that starts with the Latin character
A (ASCII 65 dec.) followed by the character in the Song font that corre-
sponds to the address 164+180 dec. in the character set “GB2312.NCD.”
NEW
Purpose Statement for clearing the printer’s working memory in order to allow a
new program to be created.
Syntax NEW
Remarks The NEW statement will delete the program currently residing in the
printer’s working memory, close all files, and clear all variables and break-
points. If the current program has not been saved (see SAVE statement), it
will be lost and cannot be restored.
In the Intermec Direct Protocol, all counters will be removed when a
NEW statement is executed.
Note that clearing the printer’s working memory does not imply that the
host screen will be cleared too. The lines of the previous program will
remain on the screen until gradually being replaced by new lines.
Example NEW
NORIMAGE (NI)
Purpose Statement for returning to normal printing after an INVIMAGE statement
has been issued.
Syntax NORIMAGE | NI
Remarks Normal image is the default type of printing and means that text and
images will be printed in black-on-white.
Using an INVIMAGE statement, the printing of text and images can be
inversed. Such inverse printing will be discontinued for all PRTXT and
PRIMAGE statements that follows the encounter of a NORIMAGE state-
ment.
Example In this example, the first line is printed in inversed fashion and the second
line in the normal fashion:
10 PRPOS 30,300
20 ALIGN 4
30 INVIMAGE
40 FONT "Swiss 721 BT"
50 PRTXT "INVERSE PRINTING"
60 PRPOS 30, 200
70 NORIMAGE
80 PRTXT "NORMAL PRINTING"
90 PRINTFEED
RUN
ON BREAK GOSUB
Purpose Statement for branching to a subroutine, when break interrupt instruction
is received.
Examples In this example, the printer emits a special signal when a break interrupt is
issued from the printer’s keyboard:
10 ON BREAK 0 GOSUB 1000
20 GOTO 20
. . . . .
. . . . .
1000 FOR A%=1 TO 3
1010 SOUND 440,50
1020 SOUND 349,50
1030 NEXT A%
1040 END
The same example without line numbers will look like this:
IMMEDIATE OFF
ON BREAK 0 GOSUB QQQ
WWW: GOTO WWW
. . . . .
. . . . .
QQQ: FOR A%=1 TO 3
SOUND 440,50
SOUND 349,50
NEXT A%
END
IMMEDIATE ON
ON COMSET GOSUB
Purpose Statement for branching to a subroutine, when the background reception
of data on the specified communication channel is interrupted.
Examples In this example, the program branches to a subroutine for reading the
buffer of the communication channel:
1 REM Exit program with #STOP&
10 COMSET1,"#","&","ZYX","=",50
20 ON COMSET 1 GOSUB 2000
30 COMSET 1 ON
40 IF A$ <> "STOP" THEN GOTO 40
50 COMSET 1 OFF
.....
.....
1000 END
2000 A$= COMBUF$(1)
2010 PRINT A$
2020 COMSET 1 ON
2030 RETURN
ON ERROR GOTO
Purpose Statement for branching to an error-handling subroutine when an error
occurs.
Remarks If any kind of error condition occurs after this statement has been encoun-
tered, the standard error-trapping routine will be ignored and the program
will branch to the specified line, which should be the first line in an error-
handling subroutine.
If the line number is 0, the standard error-trapping routine will be enabled
and no error-branching within the current program will be executed.
Examples If you try to run this example with the printhead raised (or if any other
error occurs), a warning signal will sound and the error LED will be
lighted.
10 LED 0 ON:LED 1 OFF
20 ON ERROR GOTO 1000
30 FONT "Swiss 721 BT"
40 PRTXT "HELLO"
50 PRINTFEED
60 END
. . . . .
1000 LED 0 OFF:LED 1 ON
1010 FOR A%=1 TO 3
1020 SOUND 440,50
1030 SOUND 359,50
1040 NEXT A%
1050 RESUME NEXT
The same example written without line numbers would look like this:
IMMEDIATE OFF
LED 0 ON:LED 1 OFF
ON ERROR GOTO QQQ
FONT "Swiss 721 BT"
PRTXT "HELLO"
PRINTFEED
END
. . . . .
QQQ: LED 0 OFF:LED 1 ON
FOR A%=1 TO 3
SOUND 440,50
SOUND 359,50
NEXT A%
RESUME NEXT
IMMEDIATE ON
ON GOSUB
Purpose Statement for conditional branching to one of several subroutines.
Remarks This statement is closely related to the ON GOTO statement. The nume-
ric expression may result in any positive value. The expression is truncated
to an integer value before the statement is executed. If the resulting value is
negative, 0, or larger than the number of subroutines, the statement will be
ignored.
The value of the numeric expression determines which of the subroutines
the program should branch to. For example, if the the value of the numeric
expression is 2, the program will branch to the second subroutine in the
list.
Examples In this example, different texts will be printed on the screen depending on
which of the keys 1-3 you press on the keyboard of the host.
10 INPUT "PRESS KEY 1-3 ", A%
20 ON A% GOSUB 1000,2000,3000
30 END
1000 PRINT "You have pressed key 1"
1010 RETURN
2000 PRINT "You have pressed key 2"
2010 RETURN
3000 PRINT "You have pressed key 3"
3010 RETURN
The same example written without line numbers would look like this:
IMMEDIATE OFF
INPUT "PRESS KEY 1-3 ", A%
ON A% GOSUB QQQ,WWW,ZZZ
END
QQQ: PRINT "You have pressed key 1"
RETURN
WWW: PRINT "You have pressed key 2"
RETURN
ZZZ: PRINT "You have pressed key 3"
RETURN
IMMEDIATE ON
ON GOTO
Purpose Statement for conditional branching to one of several lines.
Remarks This statement is closely related to the ON GOSUB statement. The nume-
ric expression may result in any positive value. The expression is truncated
to an integer value before the statement is executed. If the resulting value is
negative, 0, or larger than the number of lines, the statement will be igno-
red.
The value of the numeric expression determines which of the lines the
program should branch to. For example, if the the value of the numeric
expression is 2, the program will branch to the second line in the list.
Examples In this example, different texts will be printed on the screen depending on
which of the keys 1-3 you press on the keyboard of the host.
10 INPUT "PRESS KEY 1-3 ", A%
20 ON A% GOTO 1000,2000,3000
30 END
1000 PRINT "You have pressed key 1"
1010 GOTO 30
2000 PRINT "You have pressed key 2"
2010 GOTO 30
3000 PRINT "You have pressed key 3"
3010 GOTO 30
The same example written without line numbers would look like this:
IMMEDIATE OFF
INPUT "PRESS KEY 1-3 ", A%
ON A% GOSUB QQQ,WWW,ZZZ
YYY: END
QQQ: PRINT "You have pressed key 1"
GOTO YYY
WWW: PRINT "You have pressed key 2"
GOTO YYY
ZZZ: PRINT "You have pressed key 3"
GOTO YYY
IMMEDIATE ON
ON HTTP GOTO
Purpose Statement for branching to a subroutine when a request for an application
CGI is received.
Remarks This statement is used in connection with EasyLAN 100i and defines a
Fingerprint subroutine that handles the CGI-request. Setting the handler’s
line number or line label to 0 disables the handler.
When a request for an application CGI is received, the current execution
point will be pushed on to the stack and then the execution will commence
in the handler with stdin and stdout redirected from/to the Web browser.
Related instruction: RESUME HTTP.
ON KEY GOSUB
Purpose Statement for branching to a subroutine when a specified key on the
printer’s front panel is activated.
ON/OFF LINE
Purpose Statement controlling the SELECT signal on the "centronics:" communi-
cation channel.
Syntax ON | OFF↔LINE<nexp>
<nexp> specifies the communication channel:
4 = "centronics:"
6 = "usb1:"
ON MIBVAR& GOSUB
Purpose Statement for branching to a subroutine when a specified SNMP MIB
variable is changed.
OPEN
Purpose Statement for opening a file, device (for example a network connection)—
or creating a new file—for input, output, or append, allocating a buffer,
and specifying the mode of access.
Remarks An OPEN statement must be executed before a file or device can be used
for input, output, and/or append. A maximum of 25 files and/or devices
can be open at the same time.
Sequential Access Mode
The access mode can optionally be specified as sequential INPUT,
OUTPUT, or APPEND:
INPUT Sequential input from the file/device, replacing existing data.
Existing files/devices only.
OUTPUT Sequential output to the file/device, replacing existing data.
APPEND Sequential output to the file/device, where new data will be
appended without replacing existing data.
Random Access Mode
If no access mode is specified in the statement, the file/device is opened
for both input and output (RANDOM access mode). FIELD, LSET,
RSET, PUT, and GET can only be used on records in files OPENed in the
RANDOM access mode.
Please refer to the DEVICES statement for information on which devices
can be opened for the different modes of access.
Lists of the files stored in the various parts of your printer’s memory can be
obtained by the use of the FILES statements.
OPEN, cont.
Network connections
Special syntax can be used for the <sexp> expression to open the Net1
device. The syntax used is:
OPEN "net1:<host>[:port][,<timeout>]" AS #<nexp>
The <host> parameter is an IP adresss, alternatively a DNS name. The
default port number is 9100, allowed values range from 0 to 65535.
The timeout is expressed in ticks, range 10-6000, default about 4500
(45 seconds). Only one Net1 connection can be opened at a time. Once
the device is open, information can be sent or received according to the
corresponding protocol.
Examples Open and write to a file:
10 OPEN "TEST.TXT" FOR OUTPUT AS 1
20 PRINT#1:"AAAA"
30 PRINT#1,"1234"
40 CLOSE 1;
Open the file "PRICELIST" for random access with the reference number
#8 and a record length of 254 bytes:
10 OPEN "PRICELIST" AS #8 LEN=254
OPEN, cont.
The following example opens the Net1 device to connect to the NIST
Internet Time Service (ITS):
10 OPEN "net1:time.nist.gov:13" AS 1
20 PRINT #1, "time?"
30 QTICKS% = TICKS
40 WHILE TICKS-QTICKS% < 100
50 LINE INPUT #1, A$
60 IF A$<>"" THEN PRINT A$
70 WEND
80 CLOSE 1
In the example above, socket port 13 is specified in row 10. Rows 30-40
create a delay to allow the result to be received as A$ within the specified
and reasonable amount of time, 100 ticks.
Remarks This facility is intended to speed up batch printing, which means the unin-
terrupted printing of large numbers of identical or very similar labels.
The program execution will not wait for the printing of the label to be
completed, but proceeds executing next label image into the other of the
two image buffers as soon as possible.
OPTIMIZE BATCH is automatically enabled (ON) during a batch
(PRINTFEED more than one) if the following conditions are fulfilled:
1. LTS& OFF (default)
2. CUT OFF (default)
In Intermec Direct Protocol, the default value is enabled (ON).
Examples Run these two examples and watch the differences in the printer’s perfor-
mance:
10 OPTIMIZE "BATCH" ON
20 FOR I%=1 TO 10
30 PRTXT I%
40 PRINT "Before printfeed"
50 PRINTFEED
60 PRINT "After printfeed"
70 NEXT
RUN
PORTIN
Purpose Function reading the status of a port on a Serial/Industrial Interface Board.
Syntax PORTIN(<nexp>)
<nexp> is the number of the port to be read:
IN ports (optical): 101-108 (301-308)
OUT ports (relay): 201-204 (401-404)
OUT ports (optical): 221-228 (421-428)
Remarks This function works with the Serial/Industrial Interface Board and is able
to read the status of 8 IN ports with optocouplers, 8 OUT ports with
optocouplers, and 4 OUT ports with relays. For information on how to set
the OUT ports, please refer to the PORTOUT statement.
A current can be lead through an optocoupler in each IN port:
• If the current is on, the PORTIN function returns the value -1 (true).
• If the current is off, the PORTIN function returns the value 0 (false).
This feature is intended to allow the execution of the Intermec Fingerprint
to be controlled by various types of external sensors or non-digital swit-
ches.
The status of the OUT ports, as set by PORTOUT statements, can also be
read by PORTIN functions.
Some printers, like EasyCoder PM4i can carry two Serial/Industrial Inter-
face boards. In this case, the ports on the inner board (that is, the board
closest to the CPU board) are specified by the low numbers (101-108,
201-204, and 221-228) while the ports on the outer board are specified by
the high numbers (301-308, 401-404, and 421-428).
Please refer to the documentation of the Serial/Industrial Interface Board
for more information.
PORTOUT ON/OFF
Purpose Statement for setting one of four relay port or one of eight optical ports on
a Serial/Industrial Interface Board to either on or off.
Remarks This statement works with the Serial/Industrial Interface Board and is able
to control 8 IN ports with optocouplers, 8 OUT ports with optocouplers,
and 4 OUT ports with relays. For information on how to read the status of
the various ports, please refer to the PORTIN function.
This feature is intended to allow the execution of the Intermec Fingerprint
program to control various external units like gates, lamps, or conveyor
belts.
Some printers, like EasyCoder PM4i can carry two Serial/Industrial Inter-
face boards. In this case, the ports on the inner board (that is, the board
closest to the CPU board) are specified by the low numbers (201-204
and 221-228) while the ports on the outer board are specified by the high
numbers (401-404 and 421-428).
Please refer to the documentation of the Serial/Industrial Interface Board
for more information.
PRBAR (PB)
Purpose Statement for providing input data to a bar code.
Syntax PRBAR|PB<<sexp>|<nexp>>
<<sexp>|<nexp>> is the input data to the bar code generator.
Example Two different bar codes, one with numeric input data and one with string
input data, can be generated this way. The input data could also have been
entered in the form of variables:
10 BARFONT "Swiss 721 BT", 8 ON
20 PRPOS 50,400
30 ALIGN 7
40 BARSET "INT2OF5",2,1,3,120
50 PRBAR 45673
60 PRPOS 50,200
70 BARSET "CODE39",3,1,2,100
80 PRBAR "ABC"
90 PRINTFEED
RUN
PRBOX (PX)
Purpose Statement for creating a box, optionally containing a single text line or a
frame of mulitiple hyphenated text lines.
Syntax PRBOX|PX<nexp1>,<nexp2>,<nexp3>[,<sexp1>[,<nexp4>[,<nexp5>
[,<sexp2>[,<sexp3>]]]]]
<nexp1> is the height of the box in dots (1-6000).
<nexp2> is the width of the box in dots (1-6000).
<nexp3> is the line weight in dots (0/1-6000).
<sexp1> is the framed text to be written inside the box (max. 300 char./
line, max. 20 lines). Single-byte fonts only.
<nexp4> is the horizontal distance between inner edge of the box line and
the text frame (-100 to 100 dots). Default: 0.
<nexp5> is the vertical distance between the inner edge of the box line
and text frame and also between each line of text in the frame
(-100 to 100 dots). Default: Same value as <nexp4>.
<sexp2> is a line delimiter (max. 9 characters), which replaces the default
delimiter string CHR$(10) or CHR$(13). Each time this delimiter
is encountered in the text string (<sexp1>, the rest of the text is
wrapped to the next line.
<sexp3> is a control string for hyphen delimiter and replacement, see
Remarks.
Remarks This statement has two purposes: to create a rectangular white box sur-
rounded by a line with a certain thickness, or to specify a text frame that
can contain up to 20 lines of hyphenated text. These two purposes can be
combined so a text frame is surrounded by a black box.
Creating a simple box:
In this case you only need to specify the first three parameters, that is
height, width, and line weight (thickness). The box will be drawn with its
anchor point (see ALIGN) at the insertion point, as specified by the nea-
rest preceding PRPOS statement. A box can be aligned left, right, or center
along its baseline.
The print direction specifies how the box is rotated in relation to its anchor
point.
The line weight (thickness) grows inward from the anchor point. The hea-
vier the line, the less white area inside the box. Thus, it is possible to create
a black area using a box with very heavy lines. For a simple box without
any text field, the line weight must be >0. The white area inside a box can
be used for printing. Boxes, lines, and text may cross (also see XORMODE
ON/OFF).
PRBOX, cont.
The illustration below shows how the height and width of the box are defi-
ned for different print directions.
PRBOX, cont.
The vertical distance between the inner edge of the box line and the bor-
ders of the text field as well as the empty vertical space between the charac-
ter cells of two adjacent lines (line spacing) is specified by <nexp5>:
- In case of ALIGN 1, 2, or 3, it decides the distance between the inner
edge of the bottom box line and the bottom edge of the text field as well
as line spacing.
- In case of ALIGN 7, 8, or 9, it decides the distance between the inner
edge of the right side box line and the right-hand edge of the text field
as well as line spacing.
- In case of ALIGN 4, 5, or 6, this parameter only decides line spacing.
See the illustration on next page for examples of how the alignment affects
the location of multi-line text.
If the text in <sexp1> is entered as a continuous string of characters without
any spaces, linefeeds, or carriage returns, the text will wrap to the next line
when there is no room left for any more characters on a line.
If any combination of a carriage return (CR = ASCII 13 dec,) and a line-
feed (LF = ASCII 10 dec.) is encountered, the remaining text will be wrap-
ped once to the next line.
Space characters (ASCII 32 dec.) will also initiate a line wrap. If there are
more than one space character, the wrapping will be at the last one that fits
into the line in question.
You can replace the default line delimiters (CR, LF, and CR/LF) with
another line delimiter specified in a string of max. 9 characters (<sexp2>).
This delimiter will not be printed, even if it is a printable character. Each
time the delimiter is encountered, the text will wrap to a new line.
Hyphenation Support
In <sexp3> you can modify the way hyphenation will be performed using a
special syntax described later on.
You can put “invisible” hyphen delimiters in the text string at suitable
wrap-around positions. The delimiter is by default a hyphen sign (ASCII
45 dec.). However, you can use a string of any characters up to nine cha-
racters long instead, but be careful so it will not be confused with the text.
If a wrap-around is performed, the corresponding hyphen delimiter will
by default be printed as a hyphen sign (ASCII 45 dec.), whereas hyphen
delimiters not used for wrap-around will not be printed.
If you for some reason would like to print some other character(s) than
hyphens, you can specify a string of hyphen replacement characters. It
is possible to use a string up to nine characters long, but the shorter the
string the lesser risk that a line will wrap outside the box.
If you have a text string with long words and have not inserted all neces-
sary line delimiters, a line-wrap may occur unexpectedly. You can optio-
nally specify a hyphen delimeters for this case as well. Default: None.
PRBOX, cont.
<nexp 4>
<nexp 5> <nexp 5> <nexp 5>
and this is line 2 and this is line 2 and this is line 2
and now comes line 3 and now comes line 3 and now comes line 3
followed by No. 4. followed by No. 4. followed by No. 4.
<nexp 4>
and now comes line 3 and now comes line 3 and now comes line 3
<nexp 4>
and now comes line 3 and now comes line 3 and now comes line 3
followed by No. 4. followed by No. 4. followed by No. 4.
<nexp 5> <nexp 5> <nexp 5>
PRBOX, cont.
Specify the parameter <sexp3> in PRBOX using the following syntax:
<sexp3>=<sexp3a>[space<sexp3b>[space<sexp3c>]]
<sexp3a> is a soft hyphen delimiter. If the text does not have enough room
on one line, the rest of the text will be wrapped from the last
space or from the position marked by the soft hyphen delimiter.
Exception: Two adjacent soft hyphen delimiters revoke each
other.
Default: Normal hyphen (-).
Max length: 9 characters.
space is a string delimiter with the value CHR$(32).
<sexp3b> is one or more characters, that will be printed at the end of a line
which has been hyphenated according to a hyphen delimiter (see
<sexp3a>).
Default: Normal hyphen (-).
Max length: 9 characters (less is preferred).
<sexp3c> is a string of hyphen extension characters, used on single words
which are too long to be printed on one line and have no hyphen
delimiter specified. The hyphen extension character(s) will be
printed at the right end of line and the remainder of the word
will be printed on the next line.
Default: No character.
Max length: 9 characters.
This program illustrates a multi-line text field with line wrap, where “&S”
is the soft hyphen delimiter:
10 DIR 1
20 ALIGN 8
30 R$="Hyphen&Sated words will be divid&Sed
into sylla&Sbles."
40 NL$="NEWLINE"
50 S$="&S&Special Cases and EXTRAORDINARY long
words."
60 T$=R$+NL$+S$
70 PRPOS 300,300
80 PRBOX 700,500,20,T$,25,1,NL$,"&S - +"
90 PRINTFEED
RUN
PRBUF
Purpose Statement for receiving and printing bitmap image data using the PRBUF
protocol.
Remarks This statement is useful for receiving and printing bitmap images from, for
example, a Windows printer driver. It is more effective and requires less
memory than using a STORE IMAGE...PRIMAGE sequence. The bitmap
image is printed directly and is not saved anywhere in the printer’s memory
after the image buffer has been cleared.
At the PRBUF statement, the printer waits for image data to be received
on the standard IN channel. PRBUF only works with binary transfers, that
is XON/XOFF must be disabled. You can optionally set a timeout between
characters (default 12.7 sec.) When the specified number of bytes accor-
ding to the PRBUF protocol have been received, the image data are proces-
sed directly into the printer’s image buffer and printed without requiring
any more Fingerprint instructions.
PRBUF does not work if <nexp1> bytes cannot be allocated. If memory is
low, it is possible to download the bitmap image in two or more blocks.
The field settings (alignment, clipping, direction, xor mode, inverse image,
magnification, x-position, and y-position) are handled by the current pro-
tocol, but the basic rule is that x- and y-positions, field clipping, and xor
mode are handled and the other attributes are ignored.
If PRPOS x,y, then the real print position will be PRPOS x,y+1.
The PRBUF protocol is decribed in Chapter 3, “Image Transfer.”
The <newline> is not part of the statement, but any combination of car-
riage return (ASCII 13 dec,) and/or linefeed (ASCII 10 dec.) is allowed
without interfering with the PRBUF protocol.
Example This example shows how the printer is instructed to receive and print
1,424 bytes of image data according to the PRBUF protocol:
PRBUF 1424 ↵
<binary image data>
PRIMAGE (PM)
Purpose Statement for selecting an image stored in the printer’s memory.
Syntax PRIMAGE|PM<sexp>
<sexp> is the full name of the desired image including extension.
Example This example illustrates the printing of a label containing an image printed
“upside down”:
10 PRPOS 200,200
20 DIR 3
30 ALIGN 5
40 PRIMAGE "GLOBE.1"
50 PRINTFEED
RUN
PRINT (?)
Purpose Statement for printing data to the standard OUT channel.
Syntax PRINT|?[<<nexp>|<sexp>>[<,|;><<nexp>|<sexp>>...][;]]
<<nexp>|<sexp>> are string or numeric expressions, which will be printed to the
standard OUT channel.
Remarks If no expressions are specified after the PRINT statement, it will yield a
blank line. If one or more expressions are listed, the expression(s) will be
processed and the resulting values will be presented on standard OUT
channel (see SETSTDIO statement), for example usually on the screen of
the host. The shorthand form of PRINT is a question mark.
Do not confuse the PRINT statement with the PRINTFEED statement.
Each line is divided into zones of 10 character positions each. These zones
can be used for positioning the values:
• A comma sign (,) between the expressions causes next value to be prin-
ted at the beginning of next zone.
• A semicolon sign (;) between the expressions causes next value to be
printed immediately after the last value.
• A plus sign (+) between two string expressions also causes next value to
be printed immediately after the last value. (Plus signs cannot be used
between numeric expressions.)
• If the list of expressions is terminated by a semicolon, the next PRINT
statement will be added on the same line. Otherwise, a carriage return
is performed at the end of the line. If the printed line is wider than the
screen, the software will automatically wrap to a new line and go on
printing.
Printed numbers are always followed by a space character.
Printed negative numbers are preceded by a minus sign.
Example
10 LET X%=10
20 LET A$="A"
30 PRINT X%;X%+1,X%+5;X%-25
40 PRINT A$+A$;A$,A$
50 PRINT X%;
60 ? "PIECES"
RUN
yields:
10 11 15 -15
AAA A
10 PIECES
Remarks In the Immediate Mode and in the Intermec Direct Protocol, the <Print>
key can be enabled to issue printing commands, corresponding to PRINT-
FEED statements. This implies that each time the <Print> key is pressed,
one single label, ticket, tag, or portion of continuous stock will be printed
and fed out.
Note that this statement cannot be entered in the Programming Mode (use
KEY ON and ON KEY GOSUB statements instead).
Example This example shows how the Print key is enabled in the Intermec Direct
Protocol and a label is printed (abbreviated instructions are used whenever
available):
INPUT ON ↵
PRINT KEY ON ↵
PP 100,100 ↵
FT "Swiss 721 BT" ↵
PT "TEST LABEL" ↵
PRINT#
Purpose Statement for printing data to a specified OPENed device or sequential
file.
Syntax PRINT#<nexp1>[,<<nexp2>|<sexp1>>[<,|;><<nexp3>|<sexp2>>...][;]]
<nexp1> is the number assigned to the file or device when it was OPENed.
<<nexp2-n>|<sexp1-n>> are the string or numeric expressions, which will be printed to the
specified file or device.
Example The display on the printer’s keyboard console is able to show two lines
with 16 characters each. Before sending any text, the device must be
OPENed (line 10) and both lines on the display must be cleared (line 20).
Note the trailing semicolon on line 40!
10 OPEN "console:" FOR OUTPUT AS #1
20 PRINT# 1:PRINT# 1
30 PRINT# 1,"OUT OF LABELS"
40 PRINT# 1,"PLEASE RELOAD!";
50 CLOSE# 1
RUN
Since the last line was appended by a semicolon, there will be no carriage
return and the text will appear on both line on the printer’s display as:
OUT OF LABELS
PLEASE RELOAD!
PRINTFEED (PF)
Purpose Statement for printing and feeding out one or a specified number of labels,
tickets, tags, or portions of strip, according to the printer’s setup.
PRINTONE
Purpose Statement for printing characters, specified by their ASCII values, to the
standard OUT channel.
Syntax PRINTONE<nexp>[<,|;><nexp>...][;]
<nexp> is the ASCII decimal value of a character, which will be printed to
the standard OUT channel.
Remarks When, for some reason, certain characters cannot be produced by the host
computer, they can be substituted by the corresponding ASCII decimal
values using the PRINTONE statement. The characters will be printed,
according to the currently selected character set (see NASC statement), to
the standard OUT channel, that is, usually to the screen of the host.
PRINTONE is very similar to the PRINT statement and the use of
commas and semicolons follows the same rules.
PRINTONE#
Purpose Statement for printing characters specified by their ASCII values to a
device or sequential file.
Syntax PRINTONE#<nexp1>[,<nexp2>[<,|;><nexp3>...][;]]
<nexp1> is the number assigned to the file or device when it was OPENed.
<nexp2-n> is the ASCII decimal value of the character, which is to be printed
to the specified file or device.
Remarks This statement is useful, when the host for some reason cannot produce
certain characters. The ASCII values entered will produce characters accor-
ding to the currently selected character set, see NASC. The ASCII values
can be separated by commas or semicolons according to the same rules as
for the PRINT# statement.
PRINTONE# can only be used to print to sequential files, not to random
files.
When sending data to the printer’s display, PRINTONE# will work
in a way similar to PRINT#. The display can be cleared by sending
PRINT#<nexp> twice (see line 20 in the example below).
Example The display on the printer’s keyboard console is able to show two lines
with 16 characters each. Before sending any text, the device must be
OPENed and the display be cleared. Note the trailing semicolon sign on
line 40.
10 OPEN "console:" FOR OUTPUT AS #1
20 PRINT# 1:PRINT# 1
30 PRINTONE# 1,80;82;69;83;83
40 PRINTONE# 1,69;78;84;69;82;
50 CLOSE #1
RUN
Since the last line was appended by a semicolon, there will be no carriage
return and the text will appear on both line on the printer’s display as:
PRESS
ENTER
PRLINE (PL)
Purpose Statement for creating a line.
Syntax PRLINE|PL<nexp1>,<nexp2>
<nexp1> is the length of the line in dots (max. 6000).
<nexp2> is the line weight in dots (max. 6000).
Remarks The line will be drawn from the insertion point and away according to
the nearest preceding DIR and ALIGN statements (that is the line runs in
parallel with any text printed in the selected direction).
A line can be ALIGNed left, right or center. The anchor points are situated
at the bottom of the line, which means that with an increasing line weight
(thickness), the line will the grow upward in relation to the selected direc-
tion. In the illustration below, all lines are aligned left. Lines may cross (see
XORMODE ON/OFF statement).
Example This example draws a 2.5 cm (1 inch) long and 10 dots thick line across
the media in an 8 dots/mm printer:
10 PRPOS 50,100
20 PRLINE 200,10
30 PRINTFEED
RUN
PRPOS (PP)
Purpose Statement for specifying the insertion point for a line of text, a bar code,
an image, a box, or a line.
Syntax PRPOS|PP<nexp1>,<nexp2>
<nexp1> is the X-coordinate (number of dots from the origin).
<nexp2> is the Y-coordinate (number of dots from the origin).
Default value: 0,0
Reset to default by: PRINTFEED execution.
Remarks When the printer is set up, a “print window” is created. This involves
specifying the location of the origin along the X-axis, setting the max. print
width along the X-axis from origin, and setting the max. print length along
the Y-axis from origin.
The X-coordinate goes across the media path and the Y-coordinate along
the media feed direction, as illustrated below. They are set in relation to the
origin on the printhead, not in relation to the media. Thus, the position
where an object actually will be printed depends on the relation between
printhead and media at the moment when the printing starts.
PRSTAT
Purpose Function returning the printer’s current status or, optionally, the current
position of the insertion point.
Syntax PRSTAT[(<nexp>)]
<nexp> = 1 returns the X-position for the insertion point at DIR 1&3.
<nexp> = 2 returns the Y-position for the insertion point at DIR 2&4.
<nexp> = 3 returns the X-position of the corner with the lowest coordinates
of the last object.
<nexp> = 4 returns the Y-position of the corner with the lowest coordinates
of the last object.
<nexp> = 5 returns the width along the X-axis of the last object.
<nexp> = 6 returns the height along the Y-axis of the last object.
<nexp> = 7 returns the print job identifier
<nexp> = 8 returns the print job state (see table below).
<nexp> = 9 returns the print job error code.
<nexp> = 10 returns the remaining number of copies to be printed in a batch
print job.
Remarks PRSTAT
Returns a numeric expression, which is the sum of the values given by the
following conditions, at the moment when the PRSTAT function is execu-
ted:
- OK........................................................................................................ 0
- Printhead lifted....................................................................................... 1
- Label not removed (see note)................................................................. 2
- Label stop sensor (LSS) detects no label.................................................. 4
- Printer out of transfer ribbon (TTR) or ribbon installed (DT)................ 8
- Printhead voltage too high.................................................................... 16
- Printer is feeding................................................................................... 32
- RESERVED.......................................................................................... 64
- Printer out of media............................................................................ 128
Note: Always returns 0 in printers not fitted with a label taken sensor.
If two error conditions occur at the same time, for example the printhead
is lifted and the printer is out of transfer ribbon, the sum will be (1+8) = 9.
Every combination of errors will result in a unique sum. You can use it to
branch to a subroutine which notifies the operator, interrupts the program
or whatever you like. The Label stop sensor will detect no label if a gap or
black mark is in front of the sensor, as well as when the printer is out of
media.
PRSTAT(1) & PRSTAT(2)
The current position of the insertion point in regard of either the X or the
Y position can be returned, depending on the selected print direction. This
is useful for for example measuring the length of a text or a bar code.
PRSTAT, cont.
PRSTAT(3)-PRSTAT(6)
These functions are used to return the position and size of the last object
regardless of RENDER ON/OFF. Their values are not updated by the
execution of a PRBUF statement.
PRSTAT(7)-PRSTAT(10)
These functions are used to detect if a print job has been interrupted, so
steps can be taken to reprint missing copies (see PRINTFEED).
PRSTAT (7) returns a print job identifier that is automatically assigned to
the print job by the firmware.
PRSTAT (8) returns the state of the print job as a numeric expression,
which is the sum of the values given by the following conditions:
- Print cycle not set up for printing, perhaps due to out-of-ribbon............0
- The previous print cycle never ended (timeout).......................................1
- Print cycle has started..............................................................................2
- All lines successfully printed....................................................................4
- Printing truncated (media shorter than print image)...............................8
- Printhead strobing error or label length exceeded..................................16
- Ribbon low...........................................................................................32
PRSTAT (8) = 6 or 22 indicates a successfully printed label (in the latter
case error “next label not found” may have been detected).
PRSTAT (9) returns the error code (see Chapter 7, “Error Messages”)
detected by the print engine during printfeed. It is used together with
PRSTAT(8) to determine the error cause when using OPTIMIZE
"BATCH" ON.
PRSTAT (10) returns the number of copies that remains to be printed in
an interrupted batch print job.
Examples
This examples shows how two error conditions are checked:
10 A% = PRSTAT
20 IF A% AND 1 THEN GOSUB 1000
30 IF A% AND 128 THEN GOSUB 1010
40 END
.....
1000 PRINT "Printhead is lifted":RETURN
1010 PRINT "Printer out of media":RETURN
RUN
This example illustrates how you can check the length of a text:
10 PRPOS 100,100: FONT "Swiss 721 BT"
20 PRTXT "ABCDEFGHIJKLM"
30 PRINT PRSTAT(1)
RUN
yields:
519
PRTXT (PT)
Purpose Statement for providing the input data for a text field.
Syntax PRTXT|PT<<nexp>|<sexp>>[;<<nexp>|<sexp>>...][;]
<<nexp>|<sexp>> specifies one line of text (max. 300 characters)
Remarks A text field consists of one line of text. The text field must be defined in
regard of FONT or FONTD and may be further defined and positioned
by DIR, ALIGN, MAG, PRPOS, INVIMAGE, or NORIMAGE state-
ments or their respective default values.
Two or more expressions can be combined to form a text line. They must
be separated by semicolons (;) and will be printed adjacently. Plus signs can
also be used for the same purpose, but only between string expressions.
String constants must be enclosed by quotation marks, whereas numeric
constants or any kind of variables must not.
Several string constants and string variables can be combined into one line
of text by the use of plus signs or semicolons:
10 FONT "Swiss 721 BT"
20 PRPOS 30,300
30 PRTXT "SUN";"SHINE"
40 A$="MOON"
50 B$="LIGHT"
60 PRPOS 30,200
70 PRTXT A$+B$
80 PRINTFEED
RUN
yields a label with the text:
SUNSHINE
MOONLIGHT
Numeric and string expressions can be mixed on the same line, for exam-
ple:
10 FONT "Swiss 721 BT"
20 PRPOS 30,300
30 A$="December"
40 B%=27
50 PRTXT A$;" ";B%;" ";"2003"
80 PRINTFEED
RUN
yields a label with the text:
December 27 2003
Two program lines of text will be printed on the same line if the first pro-
gram line is appended by a semicolon:
10 FONT "Swiss 721 BT"
20 PRPOS 30,300
30 PRTXT "HAPPY"+" ";
40 PRTXT "BIRTHDAY"
50 PRINTFEED
RUN
yields a label with the text:
HAPPY BIRTHDAY
PUT
Purpose Statement for writing a given record from the random buffer to a given
random file.
Syntax PUT[#]<nexp1>,<nexp2>
# indicates that whatever follows is a number. Optional.
<nexp1> is the number assigned to the file when it was OPENed.
<nexp2> is the number of the record. Must be ≥1.
Remarks Use LSET or RSET statements to place data in the random buffer before
issuing the PUT statement.
NEW
10 OPEN "PHONELIST" AS #8 LEN=26
20 FIELD#8,8 AS F1$, 8 AS F2$, 10 AS F3$
30 GET #8,1
40 PRINT F1$,F2$,F3$
RUN
yields:
SMITH↔↔↔JOHN↔↔↔↔↔↔12345630
RANDOM
Purpose Function generating a random integer within a specified interval.
Syntax RANDOM(<nexp1>,<nexp2>)
<nexp1> is the first integer in the interval.
<nexp2> is the last integer in the interval.
Remarks <nexp1> ≤ <random integer> ≤ <nexp2>, that is, the random integer will
be:
Equal to or greater than <nexp1>
Equal to or less than <nexp2>
Example
The following example will produce ten random integers between 1 and
100:
10 FOR I%=1 TO 10
20 A% = RANDOM (1,100)
30 PRINT A%
40 NEXT I%
RUN
yields for example:
31
45
82
1
13
16
41
77
20
70
RANDOMIZE
Purpose Statement for reseeding the random number generator, optionally with a
specified value.
Syntax RANDOMIZE[<nexp>]
<nexp> is the integer (0 -99999999) with which the random number
generator will be reseeded
Remarks If no value is specified, a message will appear asking you to enter a value
between 0 and 99,999,999.
READY
Purpose Statement for ordering a ready signal, for example XON, CTS/RTS or PE,
to be transmitted from the printer on the specified communication chan-
nel.
Syntax READY[<nexp>]
<nexp> optionally specifies a communication channel:
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
6 = "usb1:"
8 = "uart4:"
9 = "uart5:"
Remarks The selected communication protocol usually contains some “ready” signal,
which tells the host computer that the printer is ready to receive more data.
The READY statement allows you to order a ready signal to be transmit-
ted on the specified communication channel. If no channel is specified, the
signal will be transmitted on the standard OUT channel (see SETSTDIO
statement).
The READY signal is used to revoke a previously transmitted BUSYsignal.
However, the printer may still be unable to receive more data, for example
because of a full receive buffer.
For the "centronics:" communication channel, BUSY/READY controls
the PE (paper end) signal on pin 12 according to an error-trapping routine
(READY = PE low).
Example You may, for example, want to allow the printer to receive more data on
"uart2:" after the process of printing a label is completed. (Running this
example may require an optional interface board to be fitted):
10 FONT "Swiss 721 BT"
20 PRTEXT "HELLO!"
30 BUSY2
40 PRINTFEED
50 READY2
RUN
REBOOT
Purpose Statement for restarting the printer.
Syntax REBOOT
Remarks This statement has exactly the same effect as switching off and on the
power to the printer.
REDIRECT OUT
Purpose Statement fo redirecting the output data to a created file.
Syntax REDIRECT↔OUT[<sexp>]
<sexp> is, optionally, the name of the file to be created and where the
output will be stored.
Remarks Normally the output data will be transmitted on the standard output chan-
nel (see SETSTDIO statement). In most cases, this means the screen of the
host. However, by means of a REDIRECT OUT <sexp> statement, a file
can be created to which the output will be redirected. That implies that no
data will be echoed back to the host. Normal operation, with the output
being transmitted on the standard output channel again, will be resumed
when a REDIRECT OUT statement without any appending file name is
executed.
Example In this example, a file ("LIST.DAT") is created to which the names of the
files in the printer’s permanent memory is redirected. The redirection is
then terminated (line No. 30) and the file is OPENed for input.
10 REDIRECT OUT "LIST.DAT"
20 FILES "/c"
30 REDIRECT OUT
40 OPEN "LIST.DAT" FOR INPUT AS #1
. . . . .
. . . . .
. . . . .
REM (')
Purpose Statement for adding headlines and comments to the program without
including them in the execution.
Syntax REM|'<remark>
<remark> is a text inserted in the program for explanatory purpose. Max.
32,767 characters per line.
Remarks A REM statement may either be entered on a program line of its own or
be inserted at the end of a line containing another instruction. In the latter
case, REM must be preceded by a colon (“:REM”).
A shorthand form for REM is an apostrophe (ASCII 39 dec.).
It is possible to branch to a line of REM statement. Execution will then
continue at the first executable line after the REM line.
REM statements slow down execution and transfer of data and also take
up valuable memory space. Therefore, use REM statements with judge-
ment.
REMOVE IMAGE
Purpose Statement for removing a specified image from the printer’s memory.
Remarks Useful for removing obsolete or faulty images from the printer’s memory in
order to save valuable memory space.
Note that there is a distinction between on one hand images and on the
other hand image files (compare with IMAGES and FILES statements).
This implies that REMOVE IMAGE statements can only be used for
images downloaded by means of a STORE statement (see STORE and
STORE IMAGE). Image files downloaded using for example a TRANS-
FER KERMIT statement should be removed the same way as other files
using a KILL statement.
Be careful, REMOVE IMAGE is irreversible!
RENDER ON/OFF
Purpose Statement for enabling/disabling rendering of text, bar code, image, box,
and line fields.
Remarks These statements are intended to get information regarding size and
position of a field without actually rendering it, that is the field will not
be printed when the program is executed. The information on the field is
retrieved using PRSTAT functions.
RENDER OFF disables the rendering, which means that PRTXT,
PRBAR, PRIMAGE, PRLINE, and PRBOX statements will not give any
result when a PRINTFEED statement is executed. Any other statements
than PRPOS will not update the insertion point. Field numbers (see
FIELDNO) will not be updated. Statement such as CLIP ON/OFF, XOR-
MODE ON/OFF, or BARSET will retain their usual meanings. PRBUF
will render a field regardless of RENDER ON/OFF.
RENDER ON enables field rendering after a RENDER OFF statement.
Duplicate statement have no effect, that is if a RENDER OFF statement
has been executed, another RENDER OFF statement will be ignored. The
same applies to RENDER ON.
Example
This examples retrieves information on the size of a text field which was
not rendered. (The actual result may vary depending on font, font size,
and printer type.)
10 RENDER OFF
20 PRTXT "Render off"
30 PRINT "Width:",PRSTAT(5),"Height:",
PRSTAT(6)
40 RENDER ON
50 PRINTFEED
RUN
yields for example:
Width: 153 Height: 46
No field to print in line 50
Ok
RENUM
Purpose Statement for renumbering the lines of the program currently residing in
the printer’s working memory.
Syntax RENUM[<ncon1>][,[<ncon2>][,<ncon3>]]
<ncon1> is the first line number of the new sequence.
<ncon2> is the line in the current program at which renumbering is to
start.
<ncon3> is the desired increment between line numbers in the new
sequence.
Default values: 10, 1, 10
Remarks This statement is useful for providing space for more program lines when
expanding an existing program, and for renumbering programs writ-
ten without line numbers, for example after being LISTed, LOADed, or
MERGEd. Line references following GOTO statements will be renumbe-
red accordingly. Use a LIST statement to print the new numbers on the
screen.
REPRINT ON/OFF
Purpose Statement for enabling/disabling reprinting of a label in the Direct Proto-
col.
RESUME
Purpose Statement for resuming program execution after an error-handling subrou-
tine has been executed.
Examples This short program is the basis for two examples of alternative subroutines:
10 ON ERROR GOTO 1000
20 FONT "Swiss 721 BT"
30 PRPOS 100,100
40 PRTXT "HELLO"
50 PRPOS 100, 300
60 PRIMAGE "GLOBE.1"
70 PRINTFEED
80 END
2. An error message is displayed and the execution goes on from the line
following the one where the error occurred.
1000 IF ERR=15 THEN PRINT "Font not found"
1010 RESUME NEXT
RETURN
Purpose Statement for returning to the main program after having branched to a
subroutine because of a GOSUB statement.
Example
10 PRINT "This is the main program"
20 GOSUB 1000
30 PRINT "You’re back in the main program"
40 END
1000 PRINT "This is subroutine 1"
1010 GOSUB 2000
1020 PRINT "You’re back in subroutine 1"
1030 RETURN
2000 PRINT "This is subroutine 2"
2010 GOSUB 3000
2020 PRINT "You’re back in subroutine 2"
2030 RETURN
3000 PRINT "This is subroutine 3"
3010 PRINT "You’re leaving subroutine 3"
3020 RETURN
RUN
yields:
This is the main program
This is subroutine 1
This is subroutine 2
This is subroutine 3
You’re leaving subroutine 3
You’re back in subroutine 2
You’re back in subroutine 1
You’re back in the main program
REWINDCONTROL
Purpose Function to control the internal rewind motor in EasyCoder PX-series
printers.
Remarks EasyCoder PX-series printers may have two separate motors, one for fee-
ding paper and one for rewinding liner. REWINDCONTROL allows for
control of the internal rewind motor. A positive value stretches the liner
before printing to ensure a better dispensing of labels. A positive value
might cause stepper motor to stall for certain liner surfaces. In such cases,
contact your local Intermec support organization. A negative value allows
the label to be rewound with the liner using the self-strip mode. A value
of -1 turns the internal rewind motor off, which makes for more silent
operation when the printer runs without self-strip. This command cannot
be used when REWINDVOID ON is enabled.
Examples REWINDCONTROL 200
REWINDCONTROL -100
REWINDVOID
Purpose Function to rewind VOID labels with the liner in EasyCoder PX-series
printers with RFID enabled.
Remarks EasyCoder PX-series printers may have two separate motors, one for
feeding paper and one for rewinding liner. This function causes a VOID
tag/label to be rewound with the liner paper when using the printer in self-
strip mode, avoiding a label being from being dispensed (i.e. to an applica-
tor). The value for <nexp> must be tested for each specific media and label
length.
Example REWINDVOID ON 200
RIGHT$
Purpose Function returning a specified number of characters from a given string
starting from the extreme right side (end) of the string.
Syntax RIGHT$(<sexp>,<nexp>)
<sexp> is the string from which the characters will be returned.
<nexp> specifies the number of characters to be returned.
Remarks This function is the complementary function for LEFT$, which returns
the characters starting from the extreme left side, that is from the start.
If the number of characters to be returned is greater than the number
of characters in the string, then the entire string will be returned. If the
number of characters is set to zero, a null string will be returned.
Examples
PRINT RIGHT$("THERMAL_PRINTER",7)
yields:
PRINTER
10 A$="THERMAL_PRINTER":B$ = "LABEL"
20 PRINT RIGHT$(B$,5);RIGHT$(A$,8);"S"
RUN
yields:
LABEL_PRINTERS
RSET
Purpose Statement for placing data right-justified into a field in a random file
buffer.
Syntax RSET<svar>=<sexp>
<svar> is the string variable assigned to the field by a FIELD statement.
<sexp> holds the input data.
Remarks After having OPENed a file and formatted it using a FIELD statement,
you can enter data into the random file buffer using the RSET and LSET
statements (LSET left-justifies the data).
The input data can only be stored in the buffer as string expressions. The-
refore, a numeric expression must be converted to string by the use of a
STR$ function before an LSET or RSET statement is executed.
If the length of the input data is less than the field, the data will be right
justified and the remaining number of bytes will be printed as space cha-
racters.
If the length of the input data exceeds the length of the field, the input
data will be truncated on the left side.
NEW
10 OPEN "PHONELIST" AS #8 LEN=26
20 FIELD#8,8 AS F1$, 8 AS F2$, 10 AS F3$
30 GET #8,1
40 PRINT F1$,F2$,F3$
RUN
yields:
SMITH↔↔↔JOHN↔↔↔↔↔↔12345630
RUN
Purpose Statement for starting the execution of a program.
Syntax RUN[<<scon>|<ncon>>]
<scon> optionally specifies an existing program to be run.
<ncon> optionally specifies the number of a line in the current program
where the execution will start.
Remarks The RUN statement starts the execution of the program currently residing
in the printer’s working memory, or optionally of a specified program
residing elsewhere. The execution will begin at the line with the lowest
number, or optionally from a specified line in the current program.
If a program stored in another directory than the current one (see CHDIR
statement), and has not been LOADed, its designation must be preceded
by a reference to that device ("/c", "tmp:", "/rom", or "card1:", see the last
example).
Never use RUN on a numbered line or in a line without number in the
Programming Mode, or Error 40, “Run statement in program” will occur.
A RUN statement executed in the Intermec Direct Protocol will make the
printer switch to the Immediate Mode, that is it has the same effect as an
INPUT OFF statement.
RUN
Executes the current program from its first line.
RUN 40
Executes the current program, starting from line 40.
RUN "TEST"
Executes the program “TEST.PRG" from its first line.
RUN "TEST.PRG"
Executes the program “TEST.PRG" from its first line.
RUN "/rom/FILELIST.PRG"
Executes the program “FILELIST.PRG", which is stored in the read-only
memory, from its first line.
SAVE
Purpose Statement for saving a file in the printer’s memory or optionally in a
memory card.
Syntax SAVE<scon>[,P|L]
<scon> is the name of the file, optionally starting with a reference to a
directory (see DEVICES).
Allowed input: Max. 30 characters incl. extension.
Max. 26 characters excl. extension
P optionally protects the file.
L optionally saves the file without line numbers.
SAVE "/c/Label14",P
saves and protects the file "LABEL14.PRG" in the permanent memory.
SAVE "card1:Label14",L
saves "LABEL14.PRG" without line numbers on a CompactFlash card.
Syntax SET↔FAULTY↔DOT<nexp1>[,<nexpn>...]
<nexp1> is the number of the dot to be marked as faulty. Successive execu-
tions add more faulty dots.
<nexp1> = -1 marks all dots as correct (default).
Remarks This statement is closely related to the HEAD function and the
BARADJUST statement. You can check the printhead for possible faulty
dots by means of the HEAD function and mark them as faulty, using the
SET FAULTY DOT statement. Using the BARADJUST statement, you
can allow the firmware to automatically reposition horizontal bar codes
sideways so as to place the faulty dots between the bars, where no harm to
the readability will be done.
This command will work on the EasyCoder PD41, yet the HEAD
command cannot be used to identify faulty dots.
Once a number a dot has been marked faulty by a SET FAULTY DOT
statement, it will remain so until all dots are marked as correct by a SET
FAULTY DOT -1 statement.
Note that the HEAD function makes it possible to mark all faulty dots
using a single instruction instead of specifying each faulty dot in a SET
FAULTY DOT.
SETASSOC
Purpose Statement for setting a value for a tuple in a string association.
Example This example shows how a string, including three string names associ-
ated with three start values, will be defined and one of them (time) will be
changed:
10 QUERYSTRING$="time=UNKNOWN&label=321&desc=D
EF"
20 MAKEASSOC "QARRAY",QUERYSTRING$,"HTTP"
30 QTIME$=GETASSOC$("QARRAY","time")
40 QLABELS%=VAL(GETASSOC$("QARRAY","label"))
50 QDESC$=GETASSOC$("QARRAY","desc")
60 PRINT"time=";QTIME$,"LABEL=";QLABELS%,
"DESCRIPTION=";QDESC$
70 SETASSOC "QARRAY","time",time$
80 PRINT "time=";GETASSOC$("QARRAY","time")
RUN
yields:
SETPFSVAR
Purpose Statement for registering variable to be saved at power failure.
Syntax SETPFSVAR<sexp>[,<nexp>]
<sexp> is the name of a numeric or string variable (uppercase characters
only).
<nexp> is the size in bytes of a string variable (max. 230).
SETSTDIO
Purpose Statement for selecting standard IN and OUT communication channel.
Syntax SETSTDIO<nexp1>[,<nexp2>]
<nexp1> is the desired input/output channel:
100 = autohunting enabled (default)
0 = "console:"
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
4 = "centronics:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
<nexp2> optionally specifies an output channel other than the input chan-
nel:
0 = "console:"
1 = "uart1:"
2 = "uart2:"
3 = "uart3:"
5 = "net1:"
6 = "usb1:"
7 = "uart4:"
8 = "uart5"
Remarks The printer is controlled from its host via a communication channel. By
default, autohunting is selected. Autohunting means that all available
channels are continuously scanned for input. When data is received on
a channel, it is regarded as standard input/output channel. If no data is
received on the present standard input channel within a 2 second timeout
period, the firmware scans all other existing channels (except "console:")
looking for input data. The channel where input data is first found will
now be appointed the new stdin/stdout channel. The same procedure is
repeated infinitely as long as autohunting is enabled.
There are some restrictions that apply to autohunting:
- If "centronics:" is used as input channel and autohunting is enabled,
"uart1:" is selected stdout channel.
- Autohunting does not work with "console:".
- Autohunting does not work with COMSET, INKEY$, INPUT$, or
LINE INPUT.
- When using autohunting in the programming mode, the detected port
stays as STDIO until the program breaks.
It is also possible to specify a certain channel as permanent stdin and/or
stdout channel. If only one channel is specified, it will serve as both stan-
dard input (stdin) and standard output (stdout) channel. Alternatively,
different channels can be selected for stdin and stdout.
SETSTDIO, cont.
For programming, it is recommended to use "uart1:" both as stdin and
stdout channel. If another channel is selected, use the same serial channel
for both input and output. The "centronics:" channel can only be used for
input to the printer and is thus not suited for programming.
Example This example selects the "uart2:" communication channel as the standard
input and output channel:
10 SETSTDIO 2
. . . .
. . . .
This example enables autohunting for input and "uart1:" for output:
10 SETSTDIO 100,1
. . . .
. . . .
SETUP
Purpose Statement for entering the printer’s Setup Mode or changing the setup.
Syntax SETUP
If no parameter is specified, the printer enters the Setup Mode (no effect on EasyCoder PD41).
SETUP <sexp>
<sexp> is the name of an existing setup file that will be used to change
the printer’s entire current setup, or a string used to change a
single parameter in the printer’s current setup.
SETUP <sexp1>,<sexp2>
<sexp1> is the name of a setup section (EasyLAN User’s Guide).
<sexp2> is the name of a file that will be used to change the specified
setup section.
SETUP <sexp1>,<sexp2>,<sexp3>
<sexp1> is the name of a setup section (see EasyLAN User’s Guide). Not
implemented for "prt".
<sexp2 > is the name of the setup object (see EasyLAN User’s Guide).
<sexp3> specifies the new value (see EasyLAN User’s Guide).
Remarks The SETUP statement can be used for several purposes as illustrated above.
Related instructions are SETUP GET and SETUP WRITE.
By default, the setup parameters are saved as a file in the printer’s perma-
nent memory. However, using SYSVAR (35) t is possible to decide that
any new change will not be saved (volatile). See SYSVAR.
The methods of manual setup via the printer’s built-in keyboard are descri-
bed in the User’s Guides manuals for the various printer models. You can
also use setup files and setup strings to change the setup as a part of the
program execution, or to change the setup remotely from the host.
A setup file may contain new values for one or several setup parameters,
whereas a setup string only can change a single parameter. Another dif-
ference is that, while the creation of setup files requires several operations,
setup strings can be created in a single operation which makes them suita-
ble for use with the Intermec Direct protocol.
When a SETUP<sexp> statement is encountered, the setup will be chan-
ged accordingly, then the program execution will be resumed. Note that
some printing instructions (ALIGN, DIR, FONT, and PRPOS) may be
changed when test labels are printed.
SETUP, cont.
Setup files or setup strings have a special syntax for each parameter that
must be followed exactly. Variable numeric input data are indicated by “n”
– “nnnnn”, string data by "sssss", alternative data are indicated by bold
characters separated by vertical bars (|). Compulsory space characters are
indicated by double-headed arrows (↔). Do not type these. Note that some
parameters listed below may only apply to a certain printer model or an
optional device.
"SER-COM,UART1|UART2|UART3|UART4|UART5,BAUDRATE,300|600|1200|2400|4800|9600|19200|38400|57600|115200"
"SER-COM,UART1|UART2|UART3|UART4|UART5,CHAR↔LENGTH,7|8"
"SER-COM,UART1|UART2|UART3|UART4|UART5,PARITY,NONE|EVEN|ODD|MARK|SPACE"
"SER-COM,UART1|UART2|UART3|UART4|UART5,STOPBITS,1|2"
"SER-COM,UART1|UART2|UART3|UART4|UART5,FLOWCONTROL,RTS/CTS,ENABLE|DISABLE"
"SER-COM,UART1|UART2|UART3|UART4|UART5,FLOWCONTROL,ENQ/ACK,ENABLE|DISABLE"
"SER-COM,UART1|UART2|UART3|UART4|UART5,FLOWCONTROL,XON/XOFF,DATA↔FROM↔HOST,ENABLE|DISABLE"
"SER-COM,UART1|UART2|UART3|UART4|UART5,FLOWCONTROL,XON/XOFF,DATA↔TO↔HOST,ENABLE|DISABLE"
"SER-COM,UART2,PROT↔ADDR,ENABLE|DISABLE"
"SER-COM,UART1|UART2|UART3|UART4|UART5,NEW↔LINE,CR/LF|LF|CR"
"SER-COM,UART1|UART2|UART3|UART4|UART5,REC↔BUF,nnnnn"
"SER-COM,UART1|UART2|UART3|UART4|UART5,TRANS↔BUF,nnnnn"
"SER-COM,UART2,PROTOCOL↔ADDR.,nn"
"NET-COM,NET1,NEW↔LINE,CR/LF|LF|CR"
"NETWORK,IP↔SELECTION,DHCP+BOOTP|MANUAL|DHCP|BOOTP"
"NETWORK,IP↔ADDRESS,nnn.nnn.nnn.nnn"
"NETWORK,NETMASK,nnn.nnn.n.n"
"NETWORK,DEFAULT↔ROUTER,nnn.nnn.nnn.nnn"
"NETWORK,NAME↔SERVER,nnn.nnn.n.n"
"RFID, MODE,ENABLE|DIABLE"
"RFID,TAGADJUST,nnnn" (negative value allowed)
"RFID,RETRIES,nn"
"RFID,VOIDTEXT,sssss"
"FEEDADJ,STARTADJ,nnnn" (negative value allowed)
"FEEDADJ,STOPADJ,nnnn" (negative value allowed)
"MEDIA,MEDIA↔SIZE,XSTART,nnnn"
"MEDIA,MEDIA↔SIZE,WIDTH,nnnn"
"MEDIA,MEDIA↔SIZE,LENGTH,nnnnn"
"MEDIA,MEDIA↔TYPE,LABEL↔(w↔GAPS)|TICKET↔(w↔MARK)|TICKET↔(w↔GAPS)|FIX↔LENGTH↔STRIP|VAR↔LENGTH STRIP"
"MEDIA,PAPER↔TYPE,TRANSFER|DIRECT↔THERMAL"
"MEDIA,PAPER↔TYPE,DIRECT↔THERMAL,LABEL↔CONSTANT,nnn"
"MEDIA,PAPER↔TYPE,DIRECT↔THERMAL,LABEL↔FACTOR,nnn"
"MEDIA,PAPER↔TYPE,TRANSFER,RIBBON↔CONSTANT,nnn"
"MEDIA,PAPER↔TYPE,TRANSFER,RIBBON↔FACTOR,nnn"
"MEDIA,PAPER↔TYPE,TRANSFER,LABEL↔OFFSET,nnn"
"MEDIA,PAPER↔TYPE,TRANSFER,LOW↔DIAMETER,nnn"
"MEDIA,CONTRAST,-10%|-8%|-6%|-4%|-2%|+0%|+2%|+4%|+6%|+8%|+10%"
"MEDIA,TESTFEED↔MODE,FAST|SLOW"
"MEDIA,LEN(SLOW MODE),nn"
"MEDIA,PAPER,LOW↔DIAMETER,nnn"
"PRINT↔DEFS,PRINT↔SPEED,nnn"
"PRINT↔DEFS,LTS↔VALUE,nn"
SETUP, cont.
Examples This example enables a key for branching to the Setup Mode:
10 ON KEY(18) GOSUB 1000
20 KEY(18)ON
.....
1000 SETUP
1010 RETURN
This example shows how a new file is OPENed for output and each
parameter in the setup is changed by means of PRINT# statements. Then
the file is CLOSEd. Any lines, except the first and the last line in the
example, may be omitted. Finally, the printer’s setup is changed using this
file.
10 OPEN "/tmp/SETUP.SYS" FOR OUTPUT AS #1
20 PRINT#1,"SER-COM,UART1,BAUDRATE,19200"
30 PRINT#1,"SER-COM,UART1,CHAR LENGTH,7"
40 PRINT#1,"SER-COM,UART1,PARITY,EVEN"
50 PRINT#1,"SER-COM,UART1,STOPBITS,2"
60 PRINT#1,"SER-COM,UART1,FLOWCONTROL,RTS/CTS,ENABLE"
70 PRINT#1,"SER-COM,UART1,FLOWCONTROL,ENQ/ACK,ENABLE"
80 PRINT#1,"SER-COM,UART1,FLOWCONTROL,XON/XOFF,DATA FROM
HOST,ENABLE"
90 PRINT#1,"SER-COM,UART1,FLOWCONTROL,XON/XOFF,DATA TO
HOST,ENABLE"
100 PRINT#1,"SER-COM,UART1,NEW LINE,CR"
110 PRINT#1,"SER-COM,UART1,REC BUF,800"
120 PRINT#1,"SER-COM,UART1,TRANS BUF,800"
130 PRINT#1,"FEEDADJ,STARTADJ,-135"
140 PRINT#1,"FEEDADJ,STOPADJ,-36"
150 PRINT#1,"MEDIA,MEDIA SIZE,XSTART,50"
160 PRINT#1,"MEDIA,MEDIA SIZE,WIDTH,1000"
170 PRINT#1,"MEDIA,MEDIA SIZE,LENGTH,2000"
180 PRINT#1,"MEDIA,MEDIA TYPE,LABEL (w GAPS)"
190 PRINT#1,"MEDIA,PAPER TYPE,TRANSFER"
200 PRINT#1,"MEDIA,PAPER TYPE,TRANSFER,RIBBON CONSTANT,110"
210 PRINT#1,"MEDIA,PAPER TYPE,TRANSFER,RIBBON FACTOR,25"
220 PRINT#1,"MEDIA,PAPER TYPE,TRANSFER,LABEL OFFSET,00"
230 PRINT#1,"MEDIA,PAPER TYPE,TRANSFER,LOW DIAMETER,30"
230 PRINT#1,"MEDIA,CONTRAST,-4%"
240 PRINT#1,"PRINT DEFS,PRINT SPEED,200"
250 CLOSE
260 SETUP "/tmp/SETUP.SYS"
SETUP GET
Purpose Statement for getting the current setting for a single setup object.
Remarks Refer to Intermec EasyLAN User’s Guide for a list of setup sections and
objects.
SETUP KEY
Purpose Statement for enabling or disabling the access to the SETUP mode from
the printer's console.
SETUP WRITE
Purpose Statement for creating a file containing the printer’s current setup or for
returning it on a specified communication channel.
Remarks The SETUP WRITE statement is useful when you want to return to the
printer’s current setup at a later moment. You can make a copy of the
current setup using SETUP WRITE<filename>, change the setup using
a SETUP <filename> statement, and, when so is required, return to the
original setup by issuing a new SETUP<filename> statement containing
the name of the file created by the SETUP WRITE<filename> statement.
It is strongly recommended to create the file in the printer’s temporary
memory ("tmp:"), for example SETUP WRITE "tmp:OLDSETUP".
Once it has been created in "tmp:", it can be copied to the printer’s perma-
nent memory "/c" so it will not be lost at power off.
Another application of SETUP WRITE is transmitting the printer’s
current setup on a serial communication channel, for example SETUP
WRITE "uart1:".
Setup sections are used in connection with EasyLAN. Refer to the
EasyLAN User’s Guide for a list of setup sections.
SETUP WRITE returns the printer’s setup in the following order (the
example shows a standard EasyCoder PF4i printer):
SETUP WRITE "uart1:"
yields:
SER-COM,UART1,BAUDRATE,9600
SER-COM,UART1,CHAR LENGTH,8
SER-COM,UART1,PARITY,NONE
SER-COM,UART1,STOPBITS,1
SER-COM,UART1,FLOWCONTROL,RTS/CTS,DISABLE
SER-COM,UART1,FLOWCONTROL,ENQ/ACK,DISABLE
SER-COM,UART1,FLOWCONTROL,XON/XOFF,DATA FROM HOST,DISABLE
SER-COM,UART1,FLOWCONTROL,XON/XOFF,DATA TO HOST,DISABLE
SER-COM,UART1,NEW LINE,CR/LF
SER-COM,UART1,REC BUF,1024
SER-COM,UART1,TRANS BUF,1024
FEEDADJ,STARTADJ,0
FEEDADJ,STOPADJ,0
MEDIA,MEDIA SIZE,XSTART,24
MEDIA,MEDIA SIZE,WIDTH,832
MEDIA,MEDIA SIZE,LENGTH,1200
MEDIA,MEDIA TYPE,LABEL (w GAPS)
Examples In this example, the current setup is saved in the printer’s temporary
memory under the name "SETUP1.SYS". Then the start adjustment is
changed to “200” by the creation of a new setup file named "SETUP2.
SYS.” The setup file is finally used to change the printer’s setup.
10 SETUP WRITE "tmp:SETUP1.SYS"
20 OPEN "tmp:SETUP2.SYS" FOR OUTPUT AS #1
30 PRINT#1,"FEEDADJ,STARTADJ,200"
40 CLOSE
50 SETUP "tmp:SETUP2.SYS"
In this example, the setup section "prt" is returned on the serial channel
"uart1:":
SETUP WRITE "prt","uart1:"
SGN
Purpose Function returning the sign (positive, zero, or negative) of a specified
numeric expression.
Syntax SGN(<nexp>)
<nexp> is the numeric expression from which the sign will be returned.
Examples
Positive numeric expression:
10 A%=(5+5)
20 PRINT SGN(A%)
RUN
yields:
1
SORT
Purpose Statement for sorting a one-dimensional array.
Syntax SORT<<nvar>|<svar>>,<nexp1>,<nexp2>,<nexp3>
<<nvar>|<svar>> is the array to be sorted.
<nexp1> is the number of the first element.
<nexp2> is the number of the last element.
<nexp3> > 0: Ascending sorting
< 0: Descending sorting
= 0: Illegal value
In a string array, the value specifies the position according to
which the array will be sorted.
Remarks A numeric or string array can be sorted, in its entity or within a specified
range of elements in ASCII value order.
The 4:th parameter (<nexp3>) is used differently for numeric and string
arrays. The sign always specifies ascending or descending order. For nume-
ric arrays, the value is of no consequence, but for string arrays, the value
specifies for which character position the elements will be sorted. <nexp3>
= 0 results in Error 41, “Parameter out of range.”
Example
One numeric and one string array are sorted in descending order. The
string array is sorted in ascending according to the third character position
in each string:
10 ARRAY% (0) = 1001
20 ARRAY% (1) = 1002
30 ARRAY% (2) = 1003
40 ARRAY% (3) = 1004
50 ARRAY$ (0) = "ALPHA"
60 ARRAY$ (1) = "BETA"
70 ARRAY$ (2) = "GAMMA"
80 ARRAY$ (3) = "DELTA"
90 SORT ARRAY%,0,3,-1
100 SORT ARRAY$,0,3,3
110 FOR I% = 0 TO 3
120 PRINT ARRAY% (I%), ARRAY$ (I%)
130 NEXT
RUN
yields:
1004 DELTA
1003 GAMMA
1002 ALPHA
1001 BETA
SOUND
Purpose Statement for making the printer’s beeper produce a sound specified in
regard of frequency and duration.
Syntax SOUND<nexp1>,<nexp2>
<nexp1> is the frequency of the sound in Hz.
<nexp2> is the duration of the sound in periods of 0.020 sec. each (max.
15,0000 = 5 minutes).
Remarks This statement allows you include significant sound signals in your pro-
grams, for example to notify the operator that various errors have occurred.
A sound with approximately the specified frequency will be produced for
the specified duration. If the program encounters a new SOUND state-
ment, it will not be executed until the previous sound has been on for the
specified duration. No sound will come from the EasyCoder PD41, yet a
time delay equal to the duration specified will occur.
The SOUND statement even allows you to make melodies, although the
musical quality may be somewhat limited. The following table illustrates
the frequencies corresponding to the notes in the musical scale. To create a
period of silence, set the frequency to value higher than 9,999 Hz.
Key Hz Key Hz Key Hz Key Hz
C 131 C 262 C 523 C 1047
C# 138 C# 277 C# 554 C# 1109
D 147 D 294 D 587 D 1175
D# 155 D# 311 D# 622 D# 1245
E 165 E 330 E 659 E 1319
F 175 F 349 F 699 F 1397
F# 185 F# 370 F# 740 F# 1480
G 196 G 392 G 784 G 1568
G# 208 G# 415 G# 831 G# 1662
A 220 A 440 A 880 A 1760
A# 233 A# 466 A# 933 A# 1865
B 247 B 494 B 988 B 1976
SPACE$
Purpose Function returning a specified number of space characters.
Syntax SPACE$(<nexp>)
<nexp> is the number of space characters to be returned.
Remarks This function is useful for more complicated spacing, for example in tables.
Enter:
January ↵
February ↵
March ↵
April ↵
May ↵
June ↵
July ↵
August ↵
September ↵
October ↵
November ↵
December ↵
yields:
January February
March April
May June
July August
September October
November December
SPLIT
Purpose Function splitting a string into an array according to the position of a
specified separator character and returning the number of elements in the
array.
Syntax SPLIT(<sexp1>,<sexp2>,<nexp>)
<sexp1> is the string to be split.
<sexp2> is the string array in which the parts of the split string should be
put.
<nexp> specifies the ASCII value for the separator.
Remarks The string is divided by a specified separating character which may found
an infinite number of times in the string. Each part of the string will
become an element in the string array, but the separator character itself will
not be included in the array.
Should the string be split into more than four elements, Error 57, “Sub-
script out of range” will occur. To avoid this error, issue a DIM statement
to create a larger array before the string is split.
Example
In this example a string is divided into five parts by the separator character
# (ASCII 35 decimal). The result will be an array of five elements num-
bered 0-4 as specified by a DIM statement. Finally, the number of ele-
ments is also printed on the screen.
10 A$="ONE#TWO#THREE#FOUR#FIVE"
20 B$="ARRAY$"
30 DIM ARRAY$(5)
40 C%=SPLIT(A$,B$,35)
50 PRINT ARRAY$(0)
60 PRINT ARRAY$(1)
70 PRINT ARRAY$(2)
80 PRINT ARRAY$(3)
90 PRINT ARRAY$(4)
100 PRINT C%
RUN
yields:
ONE
TWO
THREE
FOUR
FIVE
5
STOP
Purpose Statement for terminating execution of a program and to return to imme-
diate mode.
Syntax STOP
Ok
PRINT A%
100
Ok
PRINT B%
50
Ok
B%=100
OK
CONT
Equal
Ok
STORE IMAGE
Purpose Statement for setting up parameters for storing an image in the printer’s
memory.
Example This example shows how an Intelhex file is received via the standard input
channel and stored in the printer’s temporary memory:
10 STORE OFF
20 INPUT "Name:", N$
30 INPUT "Width:", W%
40 INPUT "Height:", H%
50 INPUT "Protocol:", P$
60 STORE IMAGE N$, W%, H%, P$
70 INPUT "", F$
80 STORE F$
90 IF MID$(F$,8,2)<>"01" THEN GOTO 70
100 STORE OFF
STORE INPUT
Purpose Statement for receiving and storing protocol frames of image data in the
printer’s memory.
Syntax STORE↔INPUT<nexp1>[,<nexp2>]
<nexp1> is the timeout in ticks (0.01 sec.) before next character is received.
<nexp2> is, optionally, the number assigned to a device when it was
OPENed for INPUT. Default: Standard IN channel.
Remarks The STORE INPUT statement receives and stores a protocol frame of
image data as specified by preceding INPUT and STORE IMAGE state-
ments. It also performs an end frame check. (STORE INPUT substitutes
the old STORE statement (not documented in this manual.)
STORE INPUT works differently for various types of protocol:
INTELHEX Receives and stores frames until timeout or end frame
is received.
UBI00-03 Receives and stores frames until timeout or required
number of bytes are received.
UBI10 Receives and stores frames until timeout or end frame
is received.
Examples This example shows how an Intelhex file is stored using the STORE
IMAGE statement. The number of input parameters may vary depending
on type of protocol, see STORE INPUT statement.
10 STORE OFF
20 INPUT "Name:", N$
30 INPUT "Width:", W%
40 INPUT "Height:", H%
50 INPUT "Protocol:", P$
60 STORE IMAGE N$, W%, H%, P$
70 STORE INPUT 100
80 STORE OFF
To receive the input from another channel than std IN channel, the device
must be OPENed for INPUT and a reference be included in the STORE
INPUT statement.
10 STORE OFF
20 OPEN "uart2:" FOR INPUT AS #9
30 INPUT "Name:", N$
40 INPUT "Width:", W%
50 INPUT "Height:", H%
60 INPUT "Protocol:", P$
70 STORE IMAGE N$, W%, H%, P$
80 STORE INPUT 100,9
90 CLOSE #9
100 STORE OFF
STORE OFF
Purpose Statement for terminating the storing of an image and resetting the storing
parameters.
Syntax STORE↔OFF
Remarks After having stored all protocol frames of an image, the storing must be
terminated by a STORE OFF statement. Even if you want to store another
image, you must still issue a STORE OFF statement before the parameters
for the new image can be set up using a new STORE IMAGE statement.
It is recommended always to start an image storing procedure by issuing
a STORE OFF statement to clear the parameters of any existing STORE
IMAGE statement.
Example This example shows how an Intelhex file is received via the standard IN
channel and stored in the printer’s memory:
10 STORE OFF
20 INPUT "Name:", N$
30 INPUT "Width:", W%
40 INPUT "Height:", H%
50 INPUT "Protocol:", P$
60 STORE IMAGE N$, W%, H%, P$
70 STORE INPUT 100
80 STORE OFF
STR$
Purpose Function returning the string representation of a numeric expression.
Syntax STR$(<nexp>)
<nexp> is the numeric expression from which the string representation
will be returned.
Example
In this example, the value of the numeric variable A% is converted to
string representation and assigned to the string variable A$:
10 A%=123
20 A$=STR$(A%)
30 PRINT A%+A%
40 PRINT A$+A$
RUN
yields:
246
123123
STRING$
Purpose Function repeatedly returning the character of a specified ASCII value, or
the first character in a specified string.
Syntax STRING$(<nexp1>,<<nexp2>|<sexp>>)
<nexp1> is the number of times the specified character should be repea-
ted.
<nexp2> is the ASCII decimal code of the character to be repeated.
<sexp> is a string expression, from which the first character will be
repeated.
Remarks The character to be repeated is specified either by its ASCII decimal code
according to the selected character set (see NASC), or as the first character
in a specified string expression.
Example
In this example, both ways of using STRING$ are illustrated. The charac-
ter “*” is ASCII 42 decimal:
10 A$="*INTERMEC*"
20 LEADING$ = STRING$(10,42)
30 TRAILING$ = STRING$(10,A$)
40 PRINT LEADING$; A$; TRAILING$
RUN
yields:
***********INTERMEC***********
SYSHEALTH
Purpose Variable for setting or getting the Fingerprint application’s view of the
system health and control the Intermec Ready-to-Work Indicator on the
printer’s front panel.
SYSHEALTH, cont.
Example This example shows how the Ready-to-Work Indicator can be made to
show a “Connection refused” condition:
10 ON ERROR GOTO 1000
50 TRANSFER NET
"ftp://wrong.server.com/file","c/myfile"
60 PRINT "XXX"
100 END
1000 IF ERR=1833 THEN SYSHEALTH=2 ELSE
SYSHEALTH=3
1010 RETURN
You can find out the health of the system this way:
A%=SYSHEALTH
PRINT A%
SYSHEALTH$
Purpose Function for returning the error causing the current system health status.
Syntax <svar>=SYSHEALTH$
<svar> returns the error causing the current status, for example “Head
lifted.”
Remarks If SYSHEALTH = 3, SYSHEALTH$ returns “Operational.”
Example A$=SYSHEALTH$
PRINT A$
yields for example
Out of paper
SYSVAR
Purpose System array for reading or setting various system variables.
Syntax SYSVAR(<nexp>)
<nexp> is the reference number of the system variable:
0-13 Reserved, obsolete or not implemented.
14 Read errors since power on
15 Read errors since last SYSVAR(15)
16 Read number of bytes received at execution of STORE INPUT
17 Read number of frames received at execution of STORE INPUT
18 Read or Set verbosity level
19 Read or Set type of error message
20 Read direct or transfer mode
21 Read printhead density (dots/mm)
22 Read number of printhead dots
23 Read status of transfer ribbon sensor
24 Read if startup has occurred since last SYSVAR(24)
25 Obsolete
26 Read ribbon low condition
27 Set condition for label reprinting at out-of-ribbon error
28 Set or read media feed data erase at headlift
29 Read DSR condition on "uart2:"
30 Read DSR condition on "uart3:"
31 Read last sent ACK, NAK, or CAN character in the MUSE protocol.
32 Read odometer value
33 Read DSR condition on "uart1:"
34 Read or Set positioning mode for TrueType characters
35 Setup saving (non-volatile/volatile)
36 Print changes of program modes
37 Set minimum gap length
38 Obsolete
39 Enable/disable slack compensation-Force startadjust
40 Not implemented
41 “Next label not found” at predefined feed length
42 Stop media feed in the middle of label gaps
43 Enable/disable file name conversion
44 Enable/disable filtering of NUL characters in background
communication.
45 Read printhead resolution
46 Read status of paper low sensor
47 Enable/disable use of startadjust-stopadjust together with
positive and/or negative formfeeds.
48 Enable/disable direct commands
49 Set temporary lower speed after negative startadjust.
50 Set lower speed for given length after lowering printhead.
51 Set enabled limit for function of SYSVAR(49) and (50).
SYSVAR, cont.
Remarks 0-13.
Reserved, obsolete, or not implemented.
14. Errors since power up (Read only)
Reads number of errors detected since last power up.
15. Errors since last SYSVAR(15) (Read only)
Reads number of errors detected since last executed SYSVAR(15).
16. Number of bytes received (Read only)
Reads the number of bytes received after the execution of a STORE
INPUT statement. Reset by the execution of a STORE IMAGE statement.
17. Number of frames received (Read only)
Reads the number of frames received after the execution of a STORE
INPUT statement. Reset by the execution of a STORE IMAGE statement.
18. Verbosity level (Set or Read)
The verbosity level can be set or read.
In the Immediate and Programming Modes, all levels are enabled by
default.
In the Intermec Direct Protocol, all levels are disabled by default.
Different verbosity levels can be selected:
SYSVAR (18) = -1 All levels enabled (= VERBON)
SYSVAR (18) = 0 No verbosity (= VERBOFF)
SYSVAR (18) = 1 Echo received characters
SYSVAR (18) = 2 “Ok” after correct command lines
SYSVAR (18) = 4 Echo input characters from comm. port
SYSVAR (18) = 8 Error after failed lines
The levels can be combined, so for example SYSVAR(18)=3 means both
“Echo received characters” and “Ok after correct command line.”
The presently selected verbosity level can also be read and is returned as a
numeric value, for example by PRINT SYSVAR(18).
19. Type of error message (Set or Read)
Four types of error messages can be selected:
SYSVAR(19) = 1 <string> in line <line> (default)
for example “Invalid font in line 10”
SYSVAR(19) = 2 Error <number> in line <line>: <string>
for example “Error 19 in line 10: Invalid font”
SYSVAR(19) = 3 E<number>
for example “E19”
SYSVAR(19) = 4 Error <number> in line <line>
for example “Error 19 in line 10”
The presently selected type of error message can also be read and is retur-
ned as a numeric value (1-4), for example by PRINT SYSVAR(19).
SYSVAR, cont.
20. Direct or transfer mode (Read only)
SYSVAR(20) allows you to read if the printer is set up for direct thermal
printing or thermal transfer printing, which is decided by your choice of
paper type in the printer’s setup.
The printer returns:
0 = Direct thermal printing
1 = Thermal transfer printing
21. Printhead density (Read only)
SYSVAR(21) allows you to read the density of the printer’s printhead,
expressed as number of dots per millimeter.
22. Number of dots (Read only)
SYSVAR(22) allows you to read the number of dots in the printer’s print-
head.
23. Transfer ribbon sensor (Read only)
SYSVAR(23) allows you to read the status of the transfer ribbon sensor in
thermal transfer printers.
The printer returns:
0 = No ribbon detected
1 = Ribbon detected
24. Power up since last SYSVAR(24) (Read only)
This system variable is important when using the Intermec Direct Proto-
col. At power up, all data not saved as programs, files, fonts or images will
be deleted, and most instructions will be reset to their respective default
values. SYSVAR(24) allows the host to poll the printer to see if a power up
has occurred, for example because of a power failure and, if so, download
new data and new instructions.
The printer returns:
0 = No power up since last SYSVAR(24)
1 = Power up has occurred since last SYSVAR(24)
25. Obsolete
26: Ribbon low condition (Read only)
This parameter allows you to read the status of the ribbon low sensor, assu-
ming that the printer is fitted with a thermal transfer mechanism. In the
Setup Mode (Media/Paper Type/Transfer/Low Diameter), you can specify
a diameter in mm of the ribbon supply roll, when SYSVAR(26) will switch
from 0 to 1.
The printer returns:
0 = Ribbon not low
1 = Ribbon low
SYSVAR, cont.
By default, the Low Diameter is set to 0, which disables the ribbon low
function. However, if the Low Diameter is set to a higher value than 0 and
SYSVAR(26) returns 1, the error condition 1083 “Ribbon Low” occurs at
every tenth PRINTFEED operation. Further actions must be taken care of
by the running Fingerprint program.
27: Condition for label reprinting at out-of-ribbon (Set or Read)
When printing a batch of labels using thermal transfer printing (OPTI-
MIZE "BATCH" ON or PRINTFEED<n>), a label is deemed erroneous
and thus eligible for reprinting if the ribbon has been empty for a distance
longer than specified in dots by SYSVAR(27). Default is 0. Non-negative
integers only.
28. Erase media feed data at headlift (Set or Read)
The firmware keeps track of all labels (or similar) between the label stop
sensor and the dot line of the printhead. If the printhead is lifted, there
is a large risk that the media is moved, so the media feed will not work
correctly before those labels have been fed out. This parameter allows you
to decide or read whether these data should be cleared or not when the
printhead is lifted.
SYSVAR(28) = 0 Media feed data are not cleared at headlift
SYSVAR(28) = 1 Media feed data are cleared at headlift (default)
SYSVAR(28) = 2 Media feed data are cleared at headlift and the
firmware looks for the first gap or mark and adjusts
the media feed using the same data as before the
head was lifted.
29: DSR condition on "uart2:" (Read only)
This parameter allows you to read the DSR (Data Send Ready) condition
on the serial channel "uart2:". The printer returns:
0 = No
1 = Yes
30: DSR condition on "uart3:" (Read only)
This parameter allows you to read the DSR (Data Send Ready) condition
on the serial channel "uart3:".
The printer returns:
0 = No
1 = Yes
SYSVAR, cont.
31: Last control character sent (Read only)
This parameter allows you to read the last control character sent from the
MUSE protocol (special applications).
The printer returns one of the following alternatives:
NUL
ACK
NAK
CAN
32: Odometer value (Read only)
Returns the length of media feed past the printhead (the PD41 odometer
cannot distinguish printheads, so it counts length for the platform).
Resolution: 10 meters.
33: DSR condition on "uart1:" (Read only)
This parameter allows you to read the DSR (Data Send Ready) condition
on the serial channel "uart1:". Not available on the EasyCoder PD41.
The printer returns:
0 = No
1 = Yes
34: TrueType character positioning mode (Set or Read)
This parameter allows you to select one of three modes for the positioning
of TrueType characters and also to read for which mode the printer is set.
The modes are:
0 = Standard mode (default)
This mode was introduced with Intermec Fingerprint 7.2.
1 = Compatible mode
This mode is compatible with Intermec Fingerprint 7.xx earlier than
version 7.2.
2 = Adjusted mode
This mode was introduced with Intermec Fingerprint 7.2.
35: Setup Saving (Set or Read)
This parameter allows you to decide whether a change in the printer’s setup
is to be saved as a file (that is be effective after a reboot or power down) or
not be saved (volatile). You can also read for which alternative the printer is
set. Note that the SYSVAR (35) setting at the moment when the new setup
is entered decides whether it will be saved or not.
The alternatives are:
0 = Setup saved to file (non-volatile) Default
1 = Setup not saved to file (volatile)
SYSVAR, cont.
36: Print changes of program modes (Set or Read)
This parameter is used with the Fingerprint debugger and controls whether
changes of program modes should be printed to the Debug Standard Out
port (see DBSTDIO).
The options are:
0 = Disable printout (default)
1 = Enable printout
37: Set Minimum Gap Length (Set or Read)
The media may have perforations or marks that not are intended to be
interpreted as gaps or black marks by the LSS. Using this SYSVAR para-
meters, it is possible to make the LSS ignore gaps or marks that are shor-
ter that a specified value. (In this context, long and short are related to
the media feed direction.) The minimum gap length is specified in dots
within a range of 1-32. Default value is 1 mm (0.039 inches). Note that
SYSVAR(37) affects PRINTFEED and FORMFEED. For TESTFEED,
see SYSVAR(38).
38: Set Equal Safe for TESTFEED
This parameter is obsolete and has no effect, even if it does not cause an
error if used.
39: Enable/Disable Slack Compensation-Force Startadjust (Set or Read)
Slack compensation:
Label slack compensation is a method of eliminating slack in the belts
after having fed the media back. At a negative FORMFEED, the printer
will pull back the media slightly more than specified by the FORMFEED
statement and then feed the media forward the same distance. If slack
compensation is enabled, and FORMFEED -100 is specified, the printer
will pull back the media for example -112 dots and then feed the media
forward +12 dots to take out the slack.
Force Startadjust:
Performing a positive FORMFEED will normally only feed out paper
even if startadjust is set to a negative value. Using narrow labels and liner
rewinding may cause the printout position to differ on the next printed
label after a FORMFEED. Forcing a startadjust when doing FORMFEED
improves printout precision in such cases.
The options are:
0 = Disable slack compensation and disable force startadjust.
1 = Enable slack compensation (default).
2 = Force startadjust at FORMFEED.
3 = Force startadjust at FORMFEED and enable slack compensation.
40: Not Implemented
41: “Next label not found” at Predefined Feed Length (Set or Read)
The automatic detection of the error condition “Next label not found”
(error 1031) by the label stop sensor can be overridden by specifying a
SYSVAR, cont.
fixed length in dots. The length should preferably correspond to at least the
distance between the tops of two consecutive labels. During printing, error
1031 occurs if the media does not come loose from the core (media glued
to core) or if a label is missing on the liner. Especially useful for short labels
(10–40 mm/0.4–1.5 inches long). Default value is 0.
42: Stop Media Feed in the Middle of Label Gaps (Set or Read)
0 = The media feed stops so the middle of a 3 mm (0.12 in) gap becomes
aligned with the tear bar when using labels (w gaps). This is the default
setting.
1 = The media feed stops so the middle of the gap becomes aligned with
the tear bar, regardless of gap size.
43: Enable/Disable File Name Conversion (Set or Read)
File name conversion means that lowercase characters will be converted to
uppercase and the extension .PRG will be added if an extension is missing.
0 = File name conversion is enabled (default)
1 = File name conversion is disabled.
44: Enable/Disable filtering of NUL characters (Set or Read)
SYSVAR(44) controls the filtering of NUL characters in background com-
munication (see COMBUF$).
0 = Enables filtering (default)
1 = Disables filtering
45: Read Printhead Resolution (Read only)
SYSVAR(45) returns the resolution of the printhead expressed in dots per
inch (dpi).
46: Read status of Paper Low Sensor (Read only)
0 = Indicates that the diameter of the media supply is larger than
specified in the Setup Mode.
1 = Indicates that the detected diameter of the media supply roll is equal
or less than the diameter specified in the Setup Mode (Media/Paper/
Low Diameter). The error condition 1084 “Paper low” will occur.
This error does not stop the printing, but interrupts any program that
does not handle it.
47: Enable/disable use of startadjust-stopadjust together with
positive and/or negative formfeeds. (Set or Read)
0 = Use of startadjust/stopadjust OR negative/positive Formfeed values.
Default.
1 = Enable the use of startadjust/stopadjust values together with negative/
positive Formfeed values.
48: Enable/Disable direct commands (Set or Read)
0 = Disables use of direct commands (default)
1 = Scans stdIN channel for direct commands. Can only be set in the
Direct Protocol.
49: Set temporary lower speed after negative startadjust. (Set or Read)
This is used to avoid hard stretches/jerks at the beginning of a label with
a full roll. Specify the pecentage of the negative startadjust value that
should be fed slower (70 mm/s). For example sysvar(49)=150 will cause
the printer to run slower for 150% of the negative startadjust value, before
speeding up.
50: Set lower speed after lowering printhead. (Set or Read)
To avoid hard stretches/jerks after loading new media roll, ths can
lower the speed (to 70 mm/s) for the specified length after lowering the
printhead. The value is given in dots. Default is 0.
51: Set enabled limit for of SYSVAR(49) and (50). (Set or Read)
Set the value in meters that values for SYSVAR(49) and SYSVAR(50) will
be in effect after lowering the printhead.
Examples Reading the value of a system variable, in this case the transfer ribbon
sensor:
PRINT SYSVAR(23)
Setting the value of a system variable. In this case verbosity is disabled:
SYSVAR(18)= 0
TAGFIELD
Purpose Statement defining a field in the RFID tag's memory area available for
RFID operations.
Syntax TAGFIELD[<sexp1>,]<sexp2>[,<nexp3>[,<nexp4>]]
<sexp1> is the optional name of the field to make available.
<sexp2> is the name of the segment to make available. Allowed values:
Class 1 tags (EPC Class 1 Version 1):
"@ID" Tag identification segment for EPC data. Default.
ISO18000-6B / EPC UCode 1.19 tags:
"@ID" Tag idenitifcation segment. Default.
"@DATA" Optional data segment.
"@ALL" Tag's complete memory structure.
Gen 2 tags (EPC Class 1 Generation 2):
"@RESERVED" Access and kill password segment.
"@EPC" EPC specific data. Default.
"@TID" Tag identifier.
"@USER" User defined data.
<nexp3> is the field's starting byte in the chosen segment. Default varies
according to RFID tag standard and segment in use.
<nexp4> is the length of the field in bytes. Default varies according to the
RFID tag standard and EPCGlobal tag format in use.
Remarks The TAGFIELD command is used to specify the field available for
subsequent RFID commands, such as TAGWRITE or TAGREAD. The
memory structure of RFID depends on the tag type. Class 1 tags only
allow the "@ID" segment, where EPC data is stored. The ISO18000-6B,
or EPC UCode 1.19 tags contains two segments, "@ID" and "@DATA".
Gen 2 RFID tags have four segments, "@RESERVED", "@EPC",
"@TID", and "@USER". Chapter 6 contains tables with the memory
structure of supported tag types.
In order to support legacy programs written for Class 1 or ISO18000-6B
tags when migrating to Generation 2 tags, Fingerprint will map the "@ID"
and "@DATA" fields to "@EPC" and "@USER" fields respectively.
The <nexp3> and <nexp4> parameters specify a subset of a segment as the
currently available field. It is possible to name the field to use with <sexp1>.
This name may not start with an @-character. A possible representation
of tag segments of a ISO18000-6B tag can be seen in the figure ni the
example. The default values for <nexp1> and <nexp2> may be modified
by a subsequent TAGFORMAT command, see Chapter 6. Values for
<nexp3> and <nexp4> do not normally need to be set when writing EPC
information, as these are automatically adjusted for the EPC tag format
specified. The only exception is ISO 18000-6B tags, see Chapter 6, Tag
Memory Allocation.
The TAGFIELD command resets the TAGFORMAT to its default.
Related commands are TAGFORMAT, TAGREAD and TAGWRITE.
TAGFIELD, cont.
Examples The fields A, B, and C in the figure are defined by the commands below.
The tag is a possible representation of an ISO18000-6B:
i!*%w i!%"5"w
" # $
A: TAGFIELD "@ID"
B: TAGFIELD "@DATA",0,8
C: TAGFIELD "C","@DATA",8,14
The field name "C" can then be reused:
C: TAGFIELD "C"
TAGFORMAT
Purpose Statement specifying the format of the data to be read from or written to
an RFID tag.
Syntax TAGFORMAT<sexp>
<sexp> is the format of the data. Available formats are:
"ASCII" 8-bit ASCII string.
"HEX" Hexadecimal string. Values 0-9 and a-f allowed. Hex
characters must be entered in pairs. Default.
"NUM" Integer. 0 to 2147483647 allowed. Always uses 4 bytes
to represent data, unless a field smaller has been defined,
and the number fits in that field. Not allowed in Class1 tag.
EPCGlobal tag formats:
"SGTIN-64" "Filter","Company Prefix",Item Reference",Serial Number"
"SGTIN-96" "Filter","Company Prefix",Item Reference",Serial Number"
"SSCC-64" "Filter","Company Prefix","Serial Reference"
"SSCC-96" "Filter","Company Prefix","Serial Reference"
"SGLN-64" "Filter","Company Prefix","Location Reference","Serial
Number"
"SGLN-96" "Filter","Company Prefix","Location Reference","Serial
Number"
"GRAI-64" "Filter","Company Prefix","Asset Type","Serial Number"
"GRAI-96" "Filter","Company Prefix","Asset Type","Serial Number"
"GIAI-64" "Filter","Company Prefix","Individual Asset Reference"
"GIAI-96" "Filter","Company Prefix","Individual Asset Reference"
"GID-96" "General Manager Number","Object Class","Serial Number"
"USDOD-64" "Filter","Government Managed Identifier","Serial Number"
"USDOD-96" "Filter","Government Managed Identifier","Serial Number"
"EPC-HEX64" Hex values for all bits on a 64-bit tag's memory area.
"EPC-HEX96" Hex values for all bits on a 96-bit tag's memory area.
"EPC-URN" Uniform Resource Name string. Standardized format for
entry of EPC identity.
Remarks The TAGFORMAT command is used to specify the format of the data
to be read from or written to a tag with a subsequent TAGREAD or
TAGWRITE command. The format applies to the field defined by the
most recent TAGFIELD command.
More information on tag formats can be found in Chapter 6.
TAGFORMAT is reset to its default by a TAGFIELD command. Related
commands are TAGFIELD, TAGREAD and TAGWRITE.
Examples 10 FILTER$ = "3"
20 PREFIX$ = "0614141"
30 ITEM$ = "100734"
40 SERIAL$ = "2"
50 TAGFIELD "@EPC"
60 TAGFORMAT "SGTIN-96"
70 TAGWRITE FILTER$, PREFIX$, ITEM$, SERIAL$
TAGFORMAT, cont.
10 TAGFIELD "@ID"
20 TAGFORMAT "EPC-URN"
30 TAGREAD MyURI$
40 PRINT MyURI$
RUN
yields for example
urn:epc:sgtin-96:3.0614141.100734.2
10 TAGFIELD "@USER",10,4
20 TAGFORMAT "ASCII"
30 TAGWRITE "RFID"
40 TAGREAD A$
50 PRINT A$
RUN
yields
RFID
TAGPROTECT
Purpose Statement used to protect tag data from being overwritten.
Remarks The TAGPROTECT command is used to protect the tag from being
overwritten by an RFID operation. The protection is permanent. The
command applies to the latest defined field. The command is executed at
the next TAGWRITE operation, since it does not alone align the tag over
the antenna.
Related commands are TAGFIELD, TAGFORMAT and TAGWRITE.
Examples 10 TAGFIELD "@ID"
20 TAGFORMAT "SSCC-64"
30 TAGPROTECT "ON"
40 TAGWRITE "1","12345","123456"
TAGREAD
Purpose Statement used to read an RFID tag field.
Syntax TAGREAD<nvar>|<svar1>[,<svar2>,<svar3>,<svar4>]
<nvar> is the numeric variable to store the data. Only used with the
"NUM" field in TAGFORMAT.
<svarN> is the string variable to store the data. The number of arguments
depends on TAGFORMAT.
Remarks The TAGREAD command reads the data from the field specified by the
latest TAGFIELD command in to the variable <nvar> or variables <svarN>.
The format of the data will be the one defined by the latest TAGFORMAT
command. If you state a numeric variable <nvar>, an error is returned
unless the data is in the "NUM" format.
Related commands are TAGFIELD, TAGFORMAT and TAGWRITE.
Examples Using numeric variables:
10 TAGFIELD "@DATA",2,2
20 TAGFORMAT "NUM"
30 TAGWRITE 19562
40 TAGFIELD "@DATA",2,2
50 TAGFORMAT "NUM"
60 TAGREAD A%
RUN
yields
19562
TAGWRITE
Purpose Statement used to write to an RFID tag field.
Syntax TAGWRITE<nvar>|<svar1>[,<svar2>,<svar3>,<svar4>]
<nvar> is the numeric variable to be written. Only used with the "NUM"
field in TAGFORMAT.
<svarN> is the string variable to be written. The number of arguments
depends on TAGFORMAT.
Remarks The TAGWRITE command writes the data from <nvar> or <svar1> to the
field specified by the latest TAGFIELD command. The format of the data
will be the one specified by the latest TAGFORMAT command. If the data
written is shorter than the field, the field is padded with zeroes. The excep-
tion to this rule occurs in some EPC tag formats where the exact number
of digits must be entered, even if it means adding non-significant digits
(for example writing 00234 instead of 234), see Chapter 6. If the data is
too long to fit in the specified field, an error is returned.
Related commands are FORMAT$, TAGFIELD, TAGFORMAT and
TAGREAD.
Examples Writing an SGTIN-96 to a Gen 2 tag:
10 TAGFIELD "@EPC"
20 TAGFORMAT "SGTIN-96"
30 TAGWRITE "3","0614141","100734","2"
Two examples of writing the same SSCC-64 info to an ISO18000-6B tag:
10 TAGFIELD "@DATA",10,8
20 TAGFORMAT "SSCC-64"
30 TAGWRITE "1","12345","123456"
10 TAGFIELD "@DATA",10,8
20 TAGFORMAT "EPC-URN"
30 TAGWRITE
"urn:epc:tag:sscc-64:1.12345.123456"
TESTFEED
Purpose Statement for adjusting the label stop, ribbon end/low, paper low sensors,
and RFID module while running the media and ribbon feed mechanisms.
Syntax TESTFEED[<nexp>]
<nexp> is an optional feed length in dots.
Remarks A TESTFEED statement feeds <nexp> dots while calibrating the label
stop/black mark sensor (LSS) for the characteristics of the media presently
loaded in the printer. The statement is needed to detect media, gaps, black
marks, and out-of-paper conditions. It should be done for all media types.
If an RFID module is installed, and RFID is enabled, TESTFEED will
attempt to communicate and identify the RFID tag. This TESTFEED is
always performed in SLOW MODE, see below.
If <nexp> is omitted, it is automatically set to 1.5 times the media length
specified in the setup. For the TESTFEED to be successful, at least one gap
or black mark must pass the LSS. Best result for “Ticket w Mark” is obtai-
ned if entering a <nexp> value of 1200 or any other reasonable number.
When a TESTFEED is executed, the ribbon end/low and paper low sen-
sors are also calibrated (if installed). However, this does not apply when the
testfeed is ordered using the testfeed option in the Setup Mode.
In the Immediate Mode, a TESTFEED is performed when the <Shift> and
<Feed> keys are pressed simultaneously.
In the setup, TESTFEED MODE can be set to SLOW. This might be
necessary when using media with pre-printed lines. This is done with a
SETUP command or through the printers Setup Mode. When in SLOW
mode, TESTFEED will sample the media length plus 10 mm. Alterna-
tively, the length sampled can be set using the MEDIA,LEN (SLOW
MODE) option, the minimum being the number of dots corresponding to
10 mm. This value is ignored when TESTFEED MODE is set to FAST.
Since the TESTFEED is essential for a proper media load, some facility for
issuing a TESTFEED statement should be included in all custom-made
label-printing programs (see the example below).
Example This program performs a TESTFEED statement when the <Shift> and
<Feed> key are pressed simultaneously on the printer’s built-in keyboard:
10 ON KEY (119) GOSUB QTESTFEED
20 KEY (119) ON
30 QLOOP:
40 GOTO QLOOP
. . . . .
1000 QTESTFEED:
1010 TESTFEED
1020 RETURN
TICKS
Purpose Function returning the time, that has passed since the last power up in the
printer, expressed in number of “TICKS" (1 TICK = 0.01 seconds.)
Syntax TICKS
Remarks TICKS allows you to measure time more exactly than the TIME$ variable,
which cannot handle time units smaller than 1 second.
The TICKS counter is reset to zero at power up.
Example
10 A%=TICKS
20 PRINT A%
RUN
yields for example:
1081287
The time which has passed since the printer was started is 10812.87 sec-
onds, that is 3 hours 12.87 seconds.
TIME$
Purpose Variable for setting or returning the current time.
Remarks This variable works best if a real-time clock circuit (RTC) is fitted on the
printer’s CPU board. The RTC is battery backed-up and will keep record
of the time even if the power is turned off or lost.
If no RTC is installed, the internal clock will be used. After startup, an
error will occur when trying to read the date or time before the internal
clock has been manually set using either a DATE$ or a TIME$ variable.
If only the date is set, the internal clock starts at 00:00:00 and if only the
time is set, the internal clock starts at Jan 01 1980. After setting the inter-
nal clock, you can use the DATE$ and TIME$ variables the same way as
when an RTC is fitted, until a power off or REBOOT causes the date and
time values to be lost.
Time is always entered and, by default, returned as HHMMSS, where:
HH = Hour Two digits (00-23)
MM = Minute Two digits (00-59)
SS = Second Two digit (00-59)
Time is entered as a 24-hour cycle, for example 8 o’clock pm is entered as
"200000".
The clock will be reset at the exact moment, when the appending carriage
return character is received, for example when you press the Return key
(Immediate Mode and Intermec Direct Protocol), or when the instruction
is executed (Programming Mode).
The format for how the printer will return time from a TIME$("F") vari-
able can be changed using a FORMAT TIME$ statement.
Example
Setting and reading the time, then printing it on the screen of the host:
10 TIME$ = "154300"
20 FORMAT TIME$ "HH.MM"
30 PRINT "Time is "+TIME$("F")
RUN
yields:
Time is 15.43
TIMEADD$
Purpose Function returning a new time after a number of seconds have been added
to, or subtracted from, the current time or optionally a specified time.
Syntax TIMEADD$([<sexp1>,]<nexp>[,<sexp2>])
<sexp1> is any time given according to the TIME$ format, which a certain
number of seconds should be added to or subtracted from.
<nexp> is the number of seconds to be added to (or subtracted from) the
current time, or optionally the time specified by <sexp1>.
<sexp2> is an optional flag "F", indicating that the time will be returned
according to the format specified by FORMAT TIME$.
Remarks The original time (<sexp1>) should always be entered according to the
TIME$ format (HHMMSS), where:
HH = Hour Two digits (00-23)
MM = Minute Two digits (00-59)
SS = Second Two digits (00-59)
Time is entered as a 24-hour cycle, for example 8 o’clock pm is entered as
"200000".
The number of seconds to be added or subtracted from the original time
should be specified as a positive or negative numeric expression respecti-
vely.
If no "F" flag is included in the TIMEADD$ function, the result will be
returned according to the TIME$ format, see above.
If the TIMEADD$ function includes an "F" flag, the result will be retur-
ned in the format specified by FORMAT TIME$.
Examples
10 A%=30
20 B$=TIMEADD$ ("133050",A%)
30 PRINT B$
RUN
yields:
133120
10 TIME$="133050"
20 FORMAT TIME$ "hh.mm.ss pp"
30 A% = -40
40 PRINT TIMEADD$(A%,"F")
RUN
yields:
01.30.10 pm
TIMEDIFF
Purpose Function returning the difference between two specified moments of time
in number of seconds.
Syntax TIMEDIFF(<sexp1>,<sexp2>)
<sexp1> is one of two moments of time (time 1).
<sexp2> is the other of the two moments (time 2).
Remarks To get the result as a positive value, the two moments of time, for which
the difference is to be calculated, should be entered with the earlier
moment (time 1) first and the later moment (time 2) last, see the first
example below.
If the later moment (time 2) is entered first, the resulting value will be
negative, see the second example below.
The time should be entered according to the format for the TIME$ vari-
able, that is in the order HHMMSS, where:
HH = Hour Two digits (00-23)
MM = Minute Two digits (00-59)
SS = Second Two digits (00-59)
Time is entered as a 24-hour cycle, for example 8 o’clock pm is entered as
"200000".
The resulting difference in seconds will be returned.
Examples
PRINT TIMEDIFF ("133050","133120")
yields:
30
TRANSFER KERMIT
Purpose Statement for transferring data files using KERMIT communication proto-
col.
Syntax TRANSFER↔K[ERMIT]<sexp1>[,<sexp2>[,<sexp3>[,sexp4>]]]
<sexp1> specifies the direction of the transmission by the expression "S "
(= send) or "R" (= receive).
<sexp2> is, optionally, the name of the file transmitted from the printer
(default "KERMIT.FILE").
<sexp3> specifies, optionally, the input device as "uart1:", "uart2:",
"uart3:", "uart4:", or "uart5:" (default: std IN channel).
<sexp4> specifies, optionally, the output device as "uart1:", "uart2:",
"uart3:", "uart4:", or "uart5:" (default: std OUT channel).
Remarks Kermit is a protocol for serial binary transfer of a complete file between for
example a PC and a printer. Kermit is included in Windows HyperTermi-
nal and in many other communication programs.
Warning, tests have shown that Microsoft Windows Terminal, versions
3.0 and 3.1, is unable to receive a file from the printer, even if capable of
sending a file to the printer.
Consult the application program manual or the reference volume “Kermit
-A File Transfer Protocol" by Frank da Cruz (Digital Press 1987, ISBN 0-
932376-88-6).
TRANSFER KERMIT can only handle one single file at a time.
When transmitting files from the printer to the host, carefully observe pos-
sible restrictions concerning the number of characters, etc. in the file name,
that is imposed by the operating system of the host.
When receiving a file, you must start the transmission within 30 seconds
from completing the TRANSFER KERMIT "R" statement. The printer
will store the file in the current directory "/c", "tmp:", or "card1:", see
CHDIR statement. (Obviously, files cannot be received into "/rom".) If
there already exists a file in the current directory with the same name as
the one to be transferred, the existing file will be replaced by the new file.
Thus, it is up to you to keep record of the files already stored in the current
directory (see FILES statement). Before transfer, give the new file a name
that is not already occupied by an existing file, unless you want to replace
the existing file. Downloaded fonts and image are auto-installed.
Examples Setting up the printer for file reception on the standard IN channel:
TRANSFER KERMIT "R"
TRANSFER NET
Purpose Statement for transferring files to and from the printer using FTP.
TRANSFER STATUS
Purpose Statement for checking last TRANSFER KERMIT or TRANSFER
ZMODEM operation.
Syntax TRANSFER↔S[TATUS]<nvar>,<svar>
<nvar> is a five-element one-dimensional numeric array where the
elements will return:
0: Number of packets. (Kermit only)
1: Number of NAK’s. (Kermit only)
2: ASCII value of last status character. (Kermit only)
3: Last error. (Kermit and ZMODEM)
4: Block check type used. (Kermit only)
<svar> is a two-element one-dimensional string array where the ele-
ments will return:
0: Type of protocol. ("KERMIT" or “ZMODEM")
1: Last file name received.
Remarks After a file transfer using the Kermit or ZMODEM protocol has been
performed (see TRANSFER KERMIT and TRANSFER ZMODEM
statements), you can check how the transfer was performed. Note that the
numeric array requires the use of a DIM statement, since the array will
contain more than four elements.
TRANSFER ZMODEM
Purpose Statement for transferring data files using ZMODEM communication
protocol.
Syntax TRANSFER↔Z[MODEM]<sexp1>[,<sexp2>[,<sexp3>[,sexp4>]]]
<sexp1> specifies the direction of the transmission by the expression "S "
(= send) or "R" (= receive).
<sexp2> is, optionally, the name of the file transmitted from the printer
(default "ZMODEM.FILE").
<sexp3> specifies, optionally, the input device as "uart1:", "uart2:",
"uart3:", "uart4:", or "uart5:" (default: std IN channel).
<sexp4> specifies, optionally, the output device as "uart1:", "uart2:",
"uart3:", "uart4:", or "uart5:" (default: std OUT channel).
Remarks ZMODEM is a protocol for serial transfer of a complete file between for
example a PC and a printer. For more information on the ZMODEM pro-
tocol, please refer to http://www.omen.com. Related instructions are the
external commands RZ (receive data using the ZMODEM protocol) and
SZ (send data using the ZMODEM protocol).
TRANSFER ZMODEM can only handle one single file at a time.
When transmitting files from the printer to the host, carefully observe pos-
sible restrictions concerning the number of characters etc. in the file name,
that is imposed by the operating system of the host.
When receiving a file, you must start the transmission within 30 seconds
from completing the TRANSFER ZMODEM "R" statement. The prin-
ter will store the file in the current directory "/c", "tmp:", or "card1:", see
CHDIR statement. (Obviously, files cannot be received into "/rom".) If
there already exists a file in the current directory with the same name as
the one to be transferred, the existing file will be replaced by the new file.
Thus, it is up to you to keep record of the files already stored in the current
directory (see FILES statement). Before transfer, give the new file a name
that is not already occupied by an existing file, unless you want to replace
the existing file. If you use TRANSFER ZMODEM to download a font or
image file, the font or image will automatically be installed after the down-
loading is completed without any need for a reboot.
Examples Setting up the printer for file reception on the standard IN channel:
TRANSFER ZMODEM "R"
TRANSFER$
Purpose Function executing a transfer from source to destination as specified by a
TRANSFERSET statement.
Syntax TRANSFER$(<nexp>)
<nexp> is the character time-out in ticks (10 milliseconds).
Remarks The TRANSFER$ function executes the transfer from source to desti-
nation as specified by the TRANSFERSET statement. It also checks the
transfer and breaks it if no character has been transmitted before the speci-
fied time-out has expired or if any break character, as specified by the break
character string in the TRANSFERSET statement, is encountered.
If the transmission was interrupted because a character in the break set was
encountered, that character will be returned.
If the transmission was interrupted because of a time-out error, an empty
string will be returned.
If the transmission was interrupted because of the reception of a charac-
ter on any other communication channel than the source (as specified by
TRANSFERSET statement), an empty string will be returned.
TRANSFERSET
Purpose Statement for entering setup for the TRANSFER$ function.
Syntax TRANSFERSET[#]<nexp1>,[#]<nexp2>,<sexp>[,<nexp3>]
# optional number sign.
<nexp1> is the number of the source (the file or device OPENed for input).
<nexp2> is the number of the destination file (the file or device OPENed for
output or append).
<sexp> is a set of break characters.
<nexp3> optionally enables or disables break on any other channel than
the source:
<nexp> = 0 Break disabled
<nexp> ≠ 0 Break enabled
Default: Standard I/O with no break characters.
Break on any other channel enabled.
Remarks This statement sets up the transfer of data from a file or device OPENed
for input to another file or device OPENed for output or append. The
transfer will be interrupted if any character in a string of break characters,
specified in this statement, is encountered (optionally on another speci-
fied channel). The actual transfer is executed by means of a TRANSFER$
function, that also returns the break character that has caused any possible
interruption.
Example In this example, the data transfer from a file in the current directory to
an external device connected to the communication port "uart1:" will be
interrupted as soon as a carriage return or a line feed character is encoun-
tered in the file.
10 OPEN "LABEL1.PRG" FOR INPUT AS #1
20 OPEN "uart1:" FOR OUTPUT AS #2
30 A$=CHR$(13)
40 B$=CHR$(10)
50 TRANSFERSET #1, #2, A$+B$
60 C$=TRANSFER$(100)
.....
.....
.....
TRON/TROFF
Purpose Statements enabling/disabling tracing of the program execution.
Syntax TRON|TROFF
TRON enables tracing.
TROFF disables tracing (default)
Remarks Useful for debugging purposes. When tracing is enabled, each line number
of the program is displayed on the screen within parentheses as the execu-
tion goes on.
Tracing will be disabled when a TROFF statement is executed.
Example
10 PRINT "HELLO"
20 INPUT"Enter Text"; A$
30 PRINT A$
TRON
RUN
yields:
(10) WORLD
(20) Enter test? (Operator enters "WORLD")
(30) WORLD
VAL
Purpose Function returning the numeric representation of a string expression.
Syntax VAL(<sexp>)
<sexp> is the string expression from which the numeric representation
will be returned.
Example
In this example, the values of the string variables A$ and B$ are read and
assigned to the numeric variables A% and B%:
10 A$="123, MAIN STREET"
20 A%=VAL(A$)
30 B$="PHONE 123456"
40 B%=VAL(B$)
50 PRINT A$
60 PRINT A%
70 PRINT B$
80 PRINT B%
RUN
yields:
123, MAIN STREET
123
PHONE 123456
0
VERBON/VERBOFF
Purpose Statements for specifying the verbosity level of the communication from
the printer on the standard OUT channel (serial communication only).
Syntax VERBON|VERBOFF
VERBON enables all verbosity levels (default).
VERBOFF disables all verbosity levels.
Remarks VERBON
By default, when a character is received on the standard IN channel (see
SETSTDIO statement), the corresponding character will be echoed back
on the standard OUT channel. As the serial channel "uart1:" is by default
selected both standard IN and OUT channel, this implies that when you
enter a character on the keyboard of the host, the same character will
appear on the screen after having been transmitted to the printer and back.
When an instruction has been successfully executed, “Ok” will be dis-
played on the screen, else an error message will be returned. Obviously, this
requires two-way communication, so verbosity has no meaning in case of
the parallel "centronics:" communication protocol.
VERBON corresponds to SYSVAR(18) = -1.
VERBOFF corresponds to SYSVAR(18) = 0.
Other verbosity levels can be selected using SYSVAR(18), and the type of
error message can be selected using SYSVAR (19).
VERBOFF
All responses will be suppressed, which means that no characters or error
messages will be echoed back. VERBOFF statements do not affect ques-
tion marks and prompts displayed as a result of an INPUT statement.
Instructions like DEVICES, FILES, FONTS, IMAGES, LIST, and
PRINT will also work normally.
Example This example shows how VERBOFF is used to suppress the printing of
INPUT data in lines 20 and 40 during the actual typing on the host, and
VERBON to allow the printing of the resulting string variables on the
screen:
10 FOR Q%=1 TO 6
20 VERBOFF:INPUT "", A$
30 VERBON:PRINT A$;
40 VERBOFF:INPUT "", B$
50 VERBON
60 C$=SPACE$(25-LEN(A$))
70 PRINT C$+B$
80 NEXT Q%
90 END
VERSION$
Purpose Function returning the version of the firmware, printer family, or type of
CPU board.
Syntax VERSION$[(<nexp>)]
<nexp> is, optionally, the type of information to be returned:
0 = Version of firmware (default)
1 = Printer family
2 = Type of CPU board
Remarks The name of the firmware depends on if the printer is running in the
Immediate or Programming Modes, or in the Intermec Direct Protocol.
The printer family is returned as one of the following alternatives:
PD41
PF2i
PF4i
PM4i
PX4i
PX6i
The type of CPU-board is returned as a string of text, for example:
hardware version 4.0
Examples PRINT VERSION$(0)
yields for example:
Fingerprint 8.70.0
PRINT VERSION$(1)
yields for example:
PF4i
PRINT VERSION$(2)
yields for example:
hardware version 4.0
WEEKDAY
Purpose Function returning the weekday of a specified date.
Syntax WEEKDAY(<sexp>)
<sexp> is the date in DATE$ format from which the weekday will be
returned.
Example
In this example the weekday for the current date is printed on the screen
of the host (another way is to use NAME WEEKDAY$ statement and
WEEKDAY$ function):
10 B$=DATE$
20 A% = WEEKDAY (B$)
30 IF A% = 1 THEN PRINT "MONDAY"
40 IF A% = 2 THEN PRINT "TUESDAY"
50 IF A% = 3 THEN PRINT "WEDNESDAY"
60 IF A% = 4 THEN PRINT "THURSDAY"
70 IF A% = 5 THEN PRINT "FRIDAY"
80 IF A% = 6 THEN PRINT "SATURDAY"
90 IF A% = 7 THEN PRINT "SUNDAY"
RUN
yields for example:
THURSDAY
WEEKDAY$
Purpose Returning the name of the weekday from a specified date.
Syntax WEEKDAY$(<sexp>)
<sexp> is the date for which the name of the weekday, according to a
list of weekday names created by means of NAME WEEKDAY$
statement , will be returned.
Remarks This function returns the name of the weekday according to a list of week-
day names specified by means of NAME WEEKDAY$ statement or—if
the name is missing—the full English name in lowercase characters, for
example “friday".
The date should be entered according to the syntax for the DATE$ vari-
able, that is in the following order:
YY = Year Last two digits (for example 2003 = 03)
MM = Month Two digits (01-12)
DD = Day Two digits (01-28|29|30|31)
Example: December 1, 2003 is entered as "031201".
The built-in calendar corrects illegal values for the years 1980-2048, for
example the illegal date 031232 will be corrected to 040101.
Example This example shows how to make the printer return the name of the week-
day as a three-letter English abbreviation in connection with a formatted
date:
10 FORMAT DATE$ ", MM/DD/YY"
20 DATE$="031201"
30 NAME WEEKDAY$ 1, "Mon"
40 NAME WEEKDAY$ 2, "Tue"
50 NAME WEEKDAY$ 3, "Wed"
60 NAME WEEKDAY$ 4, "Thu"
70 NAME WEEKDAY$ 5, "Fri"
80 NAME WEEKDAY$ 6, "Sat"
90 NAME WEEKDAY$ 7, "Sun"
100 PRINT WEEKDAY$ (DATE$) + DATE$("F")
RUN
yields:
MON, 12/01/03
WEEKNUMBER
Purpose Function returning the number of the week for a specified date.
Syntax WEEKNUMBER(<sexp>[,<nexp])
<sexp> is the date for which the week number will be returned (1-53).
<nexp> specifies the calculating function (0-14) as listed below. Default is
0.
The date should be entered according to the syntax for the DATE$ vari-
able, that is in the following order:
YY = Year Last two digits (for example 2003 = 03)
MM = Month Two digits (01-12)
DD = Day Two digits (01-28|29|30|31)
Example: December 1, 2003 is entered as "031201".
The built-in calendar corrects illegal values for the years 1980-2048, for
example the illegal date 031232 will be corrected to 040101.
Examples
This example returns the week number of December 29, 2002 using calcu-
lating function 2:
PRINT WEEKNUMBER ("031229",2)
yields for example:
53
WHILE...WEND
Purpose Statement for executing a series of statements in a loop providing a given
condition is true.
Example In this example, the WHILE...WEND loop will only be executed if the
character “Y” (ASCII 89 dec.) is entered on the keyboard of the host.
10 B%=0
20 WHILE B%<>89
30 INPUT "Want to exit? Press Y=Yes or N=No ",A$
40 B%=ASC(A$)
50 WEND
60 PRINT "The answer is Yes"
70 PRINT "You will exit the program"
80 END
RUN
yields:
Want to exit? Press Y=Yes or N=No N
Want to exit? Press Y=Yes or N=No Y
The answer is Yes
You will exit the program
XORMODE ON/OFF
Purpose Statement for enabling or disabling the xor/flip mode of Intermec Finger-
print in connection with graphical operations.
Remarks When XORMODE is set ON, dots are reversed, as opposed to set, by all
graphical operations except bar codes. This means that if, for example two
black lines cross, the intersection will be white. If XORMODE is set to
OFF, the intersection will be black.
Default is XORMODE OFF. XORMODE is automatically set to default
when a PRINTFEED statement is executed or a Fingerprint program has
been successfully run.
Examples Create a temporary account secret, my_account, and use it to send the file
beta1.bin in directory /tmp to the server TheServer. The sent file will get
the name beta1.bin and will be put in the home directory of myusername
on TheServer.
First of all, set SYSVAR(43) to 1 to avoid file name conversion:
SYSVAR(43)=1
RUN "secret –t ftp my_account myusername:mypass-
word@*"
The server name in the URI will not be used since there is a server name in
the account secret. Hence the two following command lines will have the
same effect:
TRANSFER NET "MY.TXT",ftp://What_ever//absolute/
path/YOUR.TXT,"frodo"
and
TRANSFER NET "MY.TXT","ftp:////absolute/path/
YOUR.TXT","frodo"
This chapter describes the various image transfer file protocols used in
Intermec Fingerprint v8.70.0 and v10.0.0.
Protocols
The following five image transfer file protocols are used in connection with
the STORE IMAGE statement and use a common format for the image
data, as descibed on next page.
Intelhex Intel hex [Intel Hexadecimal Intellec 8/MDS (I_hex) file format] is a well-
known standard format for transfer of bitmap images. Please refer to the
standard literature on the subject.
Note that:
• Hex digits in Intelhex frames must be uppercase.
• Null frames may be omitted.
• Frames can be received in any order.
• Maximum file size is 64 kbytes.
UBI00 Each frame contains:
<data bytes>
<data bytes> Binary images. Modulo 2 bytes.
Image Format
The following image format is valid for Intelhex, UBI00, UBI01, UBI02,
and UBI03 image transfer protocols, but not for the UBI10 protocol,
which is a combined image transfer protocol and format.
A bitmap picture can be encoded in one of two ways, as a plain bit repre-
sentation or encoded with a Run Lenght Limited (RLL) algoritm.
Pictures can be magnified, by the printer, up to four times independently
in both x and y directions.
The pictures can be rotated 180 degres by the printer (that is printed
upside-down.) To print a bitmap in all four directions you have to define
two bitmaps, one straight and one rotated 90 degrees. To comply with
the Intermec Fingerprint convention, use the extension .1 for the straight
bitmap and extension .2 for the rotated one.
Bitmap pictures, in both encoding schemes, are printed with the lowest
address first, that is the first row of defined data is the first thing out. (This
may be somewhat confusing. The only result, if you misinterpret this, is
that your picture will come out upside-down.)
Bitmap pattern, bit representation
The bitmap picture is encoded word oriented (16 bits), low byte first. The
bits in each byte is read from lsb first (bit 0.)
Bitmap pattern, Run Lenght Limited (RLL)
RLL encoding is a very efficient way of compressing big bitmaps with rela-
tively big black and/or white areas.
The RLL encoded picture is encoded byte oriented (8 bits.) Each byte
represents the number of consecutive black or white dots. The sum of bytes
for each row must equal the width of the pattern. The first byte represent
white dots, the second black and so on. The last byte must alter the color
back to white. If the first dot is black just enter a zero first. Valid values for
dot fields is 0 to 127 (0 to 7f hex.) To get a row longer then 127, con-
catenate two rows with zero, for example to get a row of 240 dots, enter
128,0,112.
The next step in our RLL encoding algoritm is to compress identicals rows,
two identical rows are compressed by adding a byte in both ends of the dot
row, the valid range for these bytes are -1 to -128 (ff to 80 hex.)
UBI10
UBI10 is a combined protocol/file format for image transfer, as opposed to
Intelhex and UBI00-UBI03 protocols described earlier in this chapter.
Protocol Description
!BG ↵
!X<pos>A ↵
!Y<pos>A ↵
!X<pos>A | !Y<pos>A !SB<bytes>W<data>
!X<pos>A | !Y<pos>A !SB<bytes>W<data>
!X<pos>A | !Y<pos>A !SB<bytes>W<data>
.....
!X<pos>A | !Y<pos>A !SB<bytes>W<data>!EG ↵
!PRINT ↵
Frame Definitions
The width of the image in the STORE IMAGE statement should be given
as a multiple of 16 bits.
!BG Begin graphics.
Always appended by a carriage return character.
!X<pos>A Set absolute x position <pos>.
The value must be divisible by 8.
Default value is 0.
Once set, it will affect all consecutive y-positions
in the image, until a new x-position is set.
Appended by a carriage return character, unless
followed by a !SB<bytes>W<data> string on the
same line.
!Y<pos>A Set absolute y position <pos>.
Default value is 0.
Appended by a carriage return character, unless
followed by a !SB<bytes>W<data> string on the
same line.
!SB<bytes>W<data> Send one line of bitmap with <bytes> number of
bytes. <data> is bitmap bytes.
Can be preceded by a new x- and/or y-position.
If appended by a carriage return character, next
!SB set of data will be positioned at the current
y-position incremented by 1.
If no appending carriage return character is used,
a new y-position must be specified for next !SB
set of data.
!EG End graphics.
Always appended by a carriage return character.
!PRINT End page (end frame).
Always appended by a carriage return character.
Example The simplified image above is transmitted to the printer. Do not use XON/
XOFF (11 hex/13 hex) protocol, since these characters may coincide with
input data. Use RTS/CTS instead. Do not strip LF.
10 STORE OFF
20 OPEN ”uart1:” FOR INPUT AS #1
30 QNAME$=”H.1”
40 QWIDTH%=16
50 QHEIGHT%=10
60 QPRO$=”UBI10”
70 STORE IMAGE QNAME$,QWIDTH%,QHEIGHT%,QPROT$
80 STORE INPUT 900,4: ’Timeout 9 sec.
90 CLOSE#1
100 STORE OFF
RUN
The input string in line 80 should contain the following data. Carriage
returns (↵ ) after each !SB set of data increments the y-position by 1 in
consecutive order. It may also be sent as a continuous string.
!BG ↵ (Begin graphic)
!X8A ↵ (Set x-position)
!Y1A!SB1W<11 hex> ↵ (Set y-position + data for y = 1)
!SB1W<11 hex> ↵ (Data for y = 2)
!SB1W<11 hex> ↵ (Data for y = 3)
!SB1W<1F hex> ↵ (Data for y = 4)
!SB1W<11 hex> ↵ (Data for y = 5)
!SB1W<11 hex> ↵ (Data for y = 6)
!SB1W<11 hex>!EG ↵ (Data for y = 7 + end graphics)
!PRINT ↵ (End frame)
PRBUF Protocol
The PRBUF Protocol is designed for downloading bitmap print image data
directly from an application program, such as a Windows printer driver,
directly to the printer’s image buffer in connection with the PRBUF state-
ment.
The protocol consist of a two-byte header and a number of data bytes:
Header
Byte No 1. is always the @-sign (Commercial at; Unicode 0x0040) and
indicates start of the protocol header.
Byte No 2 is:
0 Reserved (bitmap format)
1 Reserved (RLL image format)
2 RLL buffer format
3-255 Reserved
RLL format
The RLL format is good for black and white pixel runs. It compresses data
in both dimensions. It works well with one-dimensional bar codes, but
grayscales grow in size instead of shrinking. The format is symmetric so
that all pixel runs start and end with a white pixel and with line repetitions
whenever applicable. This makes the format possible to turn upside down.
The RLL format is specified on the next page.
This chapter contains the various single-byte character sets, that can be
selected using the NASC statement. Printouts samples are shown in the
font “Swiss 721 BT”. Other fonts may not include all characters listed
in the character sets. A short description of the multi-byte character set
UTF‑8 is included. Other double-byte character sets are not included, but
are available separately on special request.
Printout samples are shown for the fifteen scaleable single-byte fonts
included in the Intermec Fingerprint v8.70.0/v10.0.0 firmware. It also
describes the method of creating font aliases and contains character sets for
the OCR-A, OCR-B, and DingDings fonts.
For more information on character sets and fonts, refer to the Intermec
Fingerprint v.8.xx, Font Reference Manual.
Character Sets
The following information applies to all single-byte character sets:
• Characters between ASCII 00 decimal and ASCII 31 decimal are
unprintable control characters as listed below.
• Characters between ASCII 32 decimal and ASCII 127 decimal can
always be printed, regardless of 7-bit or 8-bit communication protocol,
provided that the selected font contains the characters in question.
• Characters between ASCII 128 decimal and ASCII 255 decimal can
only be printed if the selected font contains the characters in question
and an 8-bit communication protocol is used. If you use 7-bit commu-
nication, select another national character set (see NASC statement) or
use a MAP statement to remap a character set.
• If a character, which does not exist in the selected font, is used, an error
condition will occur.
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
0 1 2 3 4 5 6 7 8 9
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250
when working with UTF-8 unless you have experience with the NASCD
and FONTD commands.
When using UTF-8, it is important that the font contains the desired
characters. Complete lists of characters included in pre-installed fonts can
be found in the Intermec Fingerprint, Font Reference Manual. The default
font, Swiss 721 BT, contains the largest number of glyphs of the pre-instal-
led fonts. More information on addding fonts to the printer can be found
under the FONT command in Chapter 2. Unicode character numbers can
be found at the web site of the Unicode organization (www.unicode.org).
It is not recommended to have UTF-8 enabled when printing bar codes
since bar code data will use the UTF-8 byte sequence as input, while the
human readable uses the UTF-8 mapped character number.
Note: Recall that FONT and FONTD commands are reset to their
defaults after a PRINTFEED (or CLL) command. That is not the case for
NASC and NASCD commands.
Example The following example will print the Hiragana Letter Small A character
(Unicode hex 3041), corresponding to the UTF-8 sequence 227 dec.
+ 129 dec. + 129 dec., in the Song font . This is followed by the Cyrillic
Capital Letter ZHE (Unicode hex 0416) in the Swiss 721 BT font.
10 NASC "UTF-8"
20 FONT "Song"
30 PRTXT CHR$(227)+CHR$(129)+CHR$(129)
40 PRTXT " = Hiragana Letter Small A"
50 PRPOS 0,35
60 FONT "Swiss 721 BT"
70 PRTXT CHR$(208)+CHR$(150)
80 PRTXT " = Cyrillic Capital Letter ZHE"
90 PRINTFEED
Scaleable Fonts
The printer comes with 15 pre-installed scaleable fonts. The printout
samples below are in 10 point size, no slant, and 100% width. The quality
of these samples does not exactly correspond to the printout quality from
your printer, which is affected by printhead density, printing method, type
of media and ribbon, and a number of other factors.
Bitmap Fonts
It is possible to use fonts in the “old” Intermec .ATF bitmap font format.
This feature improves compatibility with custom-made programs originally
created in Fingerprint v6.xx or earlier versions.
Downloading an .ATF font (for example XX030RSN.ATF) to the
printer produces three fonts in the memory; one without any exten-
sion (for example XX030RSN), one with the extension .1 (for
example XX030RSN.1), and one with the extension .2 (for example
XX030RSN.2). When using bitmap fonts in Fingerprint v8.xx, the rela-
tion between print direction and extension is of no consequence.
It is recommended to exclude the font height parameter in the FONT and
BARFONT statements and use MAG to enlarge the font. Slant does not
work at all with bitmap fonts.
Font Aliases
The standard font names in Intermec Fingerprint are much longer than in
earlier versions of Fingerprint and may be cumbersome to use. They are
also incompatible with the LAYOUT statement, which restricts the font
name to 10 characters.
However, it is possible to create a file containing a list of font aliases. The
file should be named exactly as shown here (note the leading period cha-
racter that specifies it as a system file):
"c:.FONTALIAS"
The format of the file should be:
"<Alias name #1>","<Name of font>"[,size[,<slant>[,<width>]]]
"<Alias name #2>","<Name of font>"[,size[,<slant>[,<width>]]]
"<Alias name #3>","<Name of font>"[,size[,<slant>[,<width>]]]
etc., etc.
The file can contain as many fontname aliases as required. The default size
is 12 points, the default slant is 0°, and the default width is 100 (%).
A font alias can be used as any other font, but its size, slant, and width
cannot be changed.
Note: The printer must be rebooted before the font alias can be used.
Examples:
"BODYTEXT","Century Schoolbook BT",10,0,80
"HEADLINE","Swiss 721 Bold BT",18,0,110
"WARNING","Swiss 721 BT",12
For more information on fonts and character sets, refer to the Intermec
Fingerprint v.8.xx, Font Reference Manual.
This chapter list the bar codes included in the Intermec Fingerprint
v8.70.0/v10.0.0 firmware and gives examples of some commonly used bar
codes.
Introduction
The printer contains a number of bar code generators, which can produce
highly readable bar codes in four different directions.
However, a general rule which applies to all thermal printers is that it
is more difficult to print a bar code with the bars across the media path
(ladder style) than along the media path (picket fence style.) Therefore,
to ensure a highly readable printout, we recommend that you do not use
narrow bars less than 3 dots, when printing bar codes with the bars across
the media path (ladder style).
No such restrictions apply for bar codes with the bars along the media path
(picket fence style).
Another factor, that affects the printout quality of the bar codes, is the
print speed. Generally, a lower print speed gives a better quality, especially
for ladder style bar codes and at low ambient temperatures. Do not use
a higher print speed than necessary and consider the overall print cycle
time. In some instances, a lower print speed may actually give better overall
performance. We recommend you do your own tests with your unique
applications to find the best compromise between printout quality, perfor-
mance, and media.
Specifications for bar code symbologies can be obtained from organizations
like:
EAN International
http://www.ean-int.org
UCC - The Uniform Code Council, Inc. (UCC)
http://www.uc-council.org
AIM International, Inc.
http://www.aimi.org
American National Standard Institute (ANSI)
http://www.ansi.org
Code 39
Separate Instructions
BARTYPE: "CODE39"
"CODE39A"
"CODE39C"
BARRATIO: 2:1-3:1. Default: 3:1
BARMAG: No restriction, but if the narrow element is less than 4 dots wide, then the
ratio must be larger than 2.25:1 (9:4). Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: No restriction
Input Data
No. of characters: Unlimited.
Check digit: No
Digits: 0-9
Uppercase letters: A-Z No national characters
Lowercase letters: No
Punctuation marks: - . space $ / + %
Start character: * Added automatically
Stop character: * Added automatically
Remarks Code 39 is an alphanumeric self-checking discrete code.
Code39A allows for the entire ASCII set to be encoded (128 characters).
Code39C allows characters that are not in the input set to be sent into the
symbol without error. The character will not be printed.
Code 128
Separate Instructions
BARTYPE: "CODE128"
"CODE128A"
"CODE128B"
"CODE128C"
BARRATIO: Fixed. BARRATIO statement ignored.
BARMAG: ≥ 2. Default: 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: No restriction
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "CODE128"
"CODE128A"
"CODE128B"
"CODE128C"
<nexp1> Not applicable
<nexp2> Not applicable
<nexp3> Barmag/Enlargement < 128. Default: 2.
<nexp4> Barheight No restriction. Default: 100.
<nexp5> Not applicable
<nexp6> Character exclusion in bar code (does not 0 = Disables parenthesis and spaces in
affect human readable) the bar code data.
Non-zero = the bar code and human
readable field will include exactly the
same data.
<nexp7> Not applicable
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: Unlimited
Check digit: One Added automatically.
Input characters: ASCII 0-127 According to Roman 8 character set.
Function characters FNC1 ASCII 128 dec.) See note 1.
FNC2 ASCII 129 dec.)
FNC3 ASCII 130 dec.)
FNC4 ASCII 131 dec.)
Start characters: See note 2.
Code characters: See note 1 & 2
Shift characters: See note 1 & 2
Stop characters: Always Added automatically.
Remarks Note 1:
Function characters FNC1-4, code characters, and shift characters require
either an 8-bit communication protocol, remapping to an ASCII value bet-
ween 0-127 dec., or the use of an CHR$ function.
FNC2-4 are not allowed in Subset C.
Note 2:
Code 128 has automatic selection of start character and character subset
(that is, selects optimal start character and handles shift and changes of
subset depending on the content of the input data), whereas Code 128A,
Code 128B, and Code 128C selects subset A, B, and C respectively. The
last character in the bar code name signifies both the start character and
the chosen subset.
The selected subset can be changed anywhere in the input string, either
for a single character using a Shift character (not for Subset C), or for the
remainder of the input string using a Code character (all subsets).
The Shift and Code characters consist of a combination of two characters:
• Two left-pointing double angle quotation marks («) specify a Shift cha-
racter.
Shift character: «« (« = ASCII 171 dec.)
• One left-pointing double angle quotation mark («) specifies a Code
character. It should be followed by an uppercase letter that specifies the
subset:
Code character: « + A|B|C (« = ASCII 171 dec.)
Data Matrix
Separate Instructions
BARTYPE: "DATAMATRIX"
BARRATIO: Fixed. Values will be interpreted as BARMAG.
BARMAG: <128. Default 2.
BARHEIGHT: Not applicable
BARFONT: Not applicable
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "DATAMATRIX"
<nexp1> Not applicable
<nexp2> Not applicable
<nexp3> Barmag/Enlargement < 128. Default: 2.
<nexp4> Not applicable
<nexp5> Not applicable
<nexp6> Not applicable
<nexp7> Not applicable
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 2,335 ASCII characters Only A-Z & . , - / represented
Check digit: Yes Added automatically.
Input characters ASCII 0-255 decimal
Remarks Note 1:
ECC 200 type is used for this Datamatrix symbol. ECC 200 data may
be encoded using any of the encodation schemes ASCII, C40, Text, X12,
EDIFACT or Base 256. ASCII encodation is the basic scheme. All other
encodation schemes are invoked from ASCII encodation and return to this
scheme.
Note 2:
The number of characters will decide the size of symbol. For example data
“123456” will generate a 10 × 10 (rows, columns) Datamatrix symbol, and
72 digits will generate a 24 × 24 Datamatrix symbol. Less characters can be
used for all symbols (10 × 10, 12 × 12, .. , 144 × 144) if the data includes
non-numeric characters.
EAN-8
Separate Instructions
BARTYPE: "EAN8"
BARRATIO: Fixed ratio. BARRATIO statement ignored.
BARMAG: Maximum 8. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: Barfont generated automatically. BARFONT statement ignored.
BARFONT ON/OFF work.
Input Data
No. of characters: 7
Check digit: One Added automatically
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start character: No
Stop character: No
EAN-13
Separate Instructions
BARTYPE: "EAN13"
BARRATIO: Fixed ratio. BARRATIO statement ignored.
BARMAG: Maximum 8. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: Barfont generated automatically. BARFONT statement ignored.
BARFONT ON/OFF work.
Input Data
No. of characters: 12
Check digit: One Added automatically
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start character: No
Stop character: No
EAN 128
Separate Instructions
BARTYPE: "EAN128"
"EAN128A"
"EAN128B"
"EAN128C"
BARRATIO: Fixed. BARRATIO statement ignored.
BARMAG: ≥ 2. Default: 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: No restriction
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "EAN128"
"EAN128A"
"EAN128B"
"EAN128C"
<nexp1> Not applicable
<nexp2> Not applicable
<nexp3> Barmag/Enlargement < 128. Default: 2.
<nexp4> Barheight No restriction. Default: 100.
<nexp5> Not applicable
<nexp6> Character exclusion in bar code (does not 0 = Disables parenthesis and spaces in
affect human readable) the bar code data.
Non-zero = the bar code and human
readable field will include exactly the
same data.
<nexp7> Not applicable
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: Unlimited
Check digit: Trailing symbol check character Added automatically.
Input characters: ASCII 0-127 According to Roman 8 character set.
Start characters: See note 2.
Code characters: See note 1 & 2
Shift characters: See note 1 & 2
Stop characters: Always Added automatically.
Remarks This bar code is identical to Code 128 with the exception that the initial
FNC1 function character is generated automatically.
Note 1:
Code characters and shift characters require either an 8-bit communication
protocol, remapping to an ASCII value between 0-127 dec., or the use of
an CHR$ function.
Note 2:
EAN 128 has automatic selection of start character and character subset
(that is, selects optimal start character and handles shift and changes of
subset depending on the content of the input data), whereas EAN 128A,
EAN 128B, and EAN 128C selects subset A, B, and C respectively. The
last character in the bar code name signifies both the start character and
the chosen subset.
The selected subset can be changed anywhere in the input string, either
for a single character using a Shift character (not for Subset C), or for the
remainder of the input string using a Code character (all subsets).
The Shift and Code characters consist of a combination of two characters:
• Two left-pointing double angle quotation marks («) specify a Shift charac-
ter.
Shift character: «« (« = ASCII 171 dec.)
• One left-pointing double angle quotation mark («) specifies a Code charac-
ter. It should be followed by an uppercase letter that specifies the subset:
Code character: « + A|B|C (« = ASCII 171 dec.)
Interleaved 2 of 5
Separate Instructions
BARTYPE: "INT2OF5"
BARRATIO: 2:1-3:1. Default: 3:1
BARMAG: No restriction. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: No restriction
Input Data
No. of characters: Unlimited.
Check digit: No
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start character: Yes Added automatically
Stop character: Yes Added automatically
MaxiCode
Separate Instructions
BARTYPE: "MAXICODE"
BARRATIO: Not applicable. Input ignored.
BARMAG: Not applicable. Input ignored.
BARHEIGHT: Not applicable. Input ignored.
BARFONT: Not applicable. Input ignored.
BARSET: Not applicable. Input ignored.
Example This example shows how the following information is used to create a
MaxiCode symbology:
Zip Code: 84170
Zip Code Extension: 1280
Country Code: 840
Class of Service: 001
Message Header: [)><RS>01
Year: 96
Tracking Number: 1Z12345675
SCAC: UPSN
UPS Shipper Number: 12345E
Julian Day of Pickup: 089
Shipment ID: 1324567
Package: 1/1
Weight: 10.1
Address Validation: Y
Ship to Street: 1 Main ST
Ship to City: PITTSBURGH
Ship to State: PA
10 PRPOS 100,100
20 DIR 1
30 ALIGN 1
40 a$="84170"+CHR$(10)+"1280"+CHR$(10)+"840"+
CHR$(10)+"001"+CHR$(10)+"[)>"+CHR$(30)+
"01"+CHR$(29)+"96"+"1Z12345675"+CHR$(29)+
"UPSN"+CHR$(29)+"12345E"+CHR$(29)+"089"
+CHR$(29)+"1234567"+CHR$(29)+"1/1"+CHR$(29)
+"10.1"+CHR$(29)+"Y"+CHR$(29)+"1 MAIN ST"
50 b$= CHR$(29)+"PITTSBURGH"+CHR$(29)+"PA"
+CHR$(29)+CHR$(30)+CHR$(4)+CHR$(10)+"2"
+CHR$(10)+"1"+CHR$(10)+"1"
60 BARTYPE "MAXICODE"
70 PRBAR a$;b$
80 PRINTFEED
RUN
MicroPDF417
MicroPDF417 is a multi-row symbology based on PDF417. A limited set
of symbol sizes is available where each size has a fixed level of error correc-
tion. Most symbol characteristics such as data character encodation, error
correction, and symbol character sets are identical to those of PDF417.
Up to 250 alphanumeric characters or 366 numeric digits can be encoded
in a symbol.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "MICROPDF417"
<nexp1> Not applicable
<nexp2> Not applicable
<nexp3> Element width in dots 1-21. Default: 2.
<nexp4> Element height in dots 1-127. Default: 100.
<nexp5> Not applicable
<nexp6> Not applicable
<nexp7> Not applicable
<nexp8> Number of rows 0, 4-44. Default: 0 (=automatic)
<nexp9> Number of columns 0-4. Default: 0 (=automatic)
<nexp10> Not applicable
Remarks Setting The Number of Rows And Columns
The symbol size is defined by specifying the number of rows and columns.
Not all combinations of rows and columns are allowed. The table below
illustrates the valid combinations.
If the number of rows is set to a value that does not match the valid values
for the given number of columns, the printer will automatically choose a
larger number from the list of valid values.
Automatic Selection
The number of columns and rows can be set automatically by the printer.
If the number of columns is set to 0, the printer will set the number of
columns as well as the number of rows automatically, regardless of the
number of rows specified. The printer will try to fit the given data into
a symbol with as few columns as possible. If the number of columns is
non-zero and the number of rows is set to 0, the printer will automatically
set the number of rows to the lowest number required to encode the given
data.
Limitations
Enhanced applications such as Extended Channel Interpretation (ECI),
structured append, reader initialisation, Code 128 emulation, and macro
characters are not supported.
Examples This example shows how a MicroPDF417 bar code is specified using the
BARTYPE and BARSET statements.
Bar width: 2 dots
Bar height: 8 dots
Number of rows: 26
Number of columns: 3
BARTYPE "MICROPDF417"
BARSET #4,2,8,1,1,1,26,3
Note: The bar width and bar height can also be set using BARMAG and
BARHEIGHT respectively.
The number of columns and rows are set using the Fingerprint state-
ment BARSET. Parameters number 9 and 10 are the number of rows and
columns respectively. Examples A and B below set the number of rows
to 12 and the number of columns to 3. The type of bar code is set to
MicroPDF417. Not all parameters of the BARSET command are applica-
ble to the MicroPDF417 implementation. The parameters ignored by the
implementation are set to ‘1’ in example B (large bar ratio, small bar ratio,
security level, aspect height, aspect width).
Example A (Direct Protocol)
BARTYPE "MICROPDF417"
BARSET #9, 12
BARSET #10, 3
Example B (Direct Protocol)
BARSET "MICROPDF417",1,1,2,8,1,1,1,12,3
The example code below prints a small MicroPDF417 bar code containing
the string “MicroPDF417.” The number of rows and columns is set by the
printer based on the input string since the number of columns is set to 0.
10 BARSET "MICROPDF417",1,1,4,8,1,1,1,0,0
20 PRPOS 50, 50
30 PRBAR "MICROPDF417"
40 PRINTFEED
PDF417
Separate Instructions
BARTYPE: "PDF417"
BARRATIO: Fixed. Values will be interpreted as BARMAG.
BARMAG: 2-128. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: Not applicable
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "PDF417"
<nexp1> Large bar ratio No restriction. Default: 3.
<nexp2> Narrow bar ratio No restriction. Default: 1.
<nexp3> Barmag/Enlargement < 128. Default: 2.
<nexp4> Barheight < 500. Default: 100.
<nexp5> Security level 1-5. Default: 2.
<nexp6> Aspect height ratio No restriction. Default: 3.
<nexp7> Aspect width ratio No restriction. Default: 1.
<nexp8> Number of rows No restriction. Default: 0.
<nexp9> Number of columns No restriction. Default: 0.
<nexp10> Trucate flag 0 or ≠ 0. The default 0 will print a
normal symbol.
Input Data
No. of characters: 1,800 ASCII characters or 2,700 Depending of level of compactness
digits.
Check digit: Yes Added automatically.
Input characters ASCII 0-255 decimal
Example This example shows PDF417 in GM label as per ANSI B-14, with follow-
ing data:
10 PRPOS 16,1180
20 DIR 4
30 ALIGN 9
40 BARSET "PDF417",1,1,2,6,5,1,2,0,5,0
50 PRBAR "[)>"+CHR$(30)+"06"+CHR$(29)+
"P12345678"+CHR$(29)+"Q160"+CHR$(29)+
"1JUN123456789A2B4C6D8E"+CHR$(29)+
"20LA6-987" +CHR$(29)+"21L54321 ZES"
+CHR$(29)+"KGM1234"+CHR$(29)+"15KG1155"
+CHR$(29)+"BKLT3214"+CHR$(29)+"7Q10GT"
+CHR$(30)+CHR$(4)
60 PRINTFEED
RUN
QR Code
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "QRCODE"
<nexp1> Not applicable
<nexp2> Not applicable
<nexp3> Element size in dots 1-127 (default 2)
<nexp4> QR Code model 1 (default) or 2 (recommended)
<nexp5> Security level 1-4
1=L
2=M (default)
3=Q
4=H
<nexp6> (Mask pattern selection) Reserved for future use
<nexp7> Not applicable
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Remarks Input data Capacity (Model 1)
Security Numeric Alphanumeric 8-bit byte data Kanji
level
L 1176 707 486 299
M 877 531 365 225
Q 738 447 307 189
H 498 302 207 127
Input data Capacity (Model 2)
Security Numeric Alphanumeric 8-bit byte data Kanji
level
L 7089 4296 2953 1817
M 5596 3391 2331 1435
Q 3993 2420 1663 1024
H 3057 1852 1273 784
The unit is number of characters. Mixed mode is supported for all combinations except
for combinations containing bot 8-bit byte and Kanji data. The type of data is set auto-
matically by the implementation based on the input characters.
Example This example shows how BARSET is used in two different ways to create a
QR Code Model 2 with element size 4 and security code M:
BARSET "QRCODE",1,1,4,2,2
or
BARSET #4,"QRCODE",4,201,2
RSS-14
Separate Instructions
BARTYPE: "RSS14"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Placeholder Value insignificant.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14, the width is 96X and the minimum height is 33X, where X is the width of the most narrow element as
specified by BARMAG or BARSET<nexp3>.
RSS-14 Truncated
Separate Instructions
BARTYPE: "RSS14T"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14T"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Placeholder Value insignificant.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14 Truncated, the width is 96X and the minimum height is 13X, where X is the width of the most narrow ele-
ment as specified by BARMAG or BARSET<nexp3>.
RSS-14 Stacked
Separate Instructions
BARTYPE: "RSS14S"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14S"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Height of separator row The height is the same for the pattern
row between the 2D bar code and the
linear bar code as for the pattern rows
between the linear rows. If too low a
height is entered, the height will be chan-
ged to the smallest legal height for the
selected magnification. Minimum 1X,
maximum 2X.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14S, the width is 50X and the minimum height is 13X (upper 5X + lower 7X + separator 1X min.), where X is
the width of the most narrow element as specified by BARMAG or BARSET<nexp3>.
Example Example of an RSS14S bar code with the following characteristics and
with recommended minimum height selected:
Place holder (nexp1): 1
Place holder (nexp2): 1
Most narrow element width in dots: 3
Height in dots: 21
Place holder (nexp5): 1
Place holder (nexp6): 1
Separator pattern row height: 4
Data: 1234567890123
BARSET "RSS14S",1,1,3,21,1,1,4
PRBAR "1234567890123"
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14SO"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Height of separator row The height is the same for the pattern
row between the 2D bar code and the
linear bar code as for the pattern rows
between the linear rows. If too low a
height is entered, the height will be chan-
ged to the smallest legal height for the
selected magnification. Minimum 1X,
maximum 2X.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14SO, the width is 50X and the minimum height is 69X (upper 33X + lower 33X + separator 3*1X min.),
RSS-14 Limited
Separate Instructions
BARTYPE: "RSS14L"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14L"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Placeholder Value insignificant.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14L, the width is 71X and the minimum height is 10X, where X is the width of the most narrow element as
specified by BARMAG or BARSET<nexp3>.
RSS-14 Expanded
Separate Instructions
BARTYPE: "RSS14E"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14E"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Placeholder Value insignificant.
<nexp7> Placeholder Value insignificant.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: Max. 71 numeric or 41 alphanume- Allowed characters: 0-9 A-Z a-z ! "
ric characters % & ' ( ) * + , - . / : ; < = > ? _ space
FNC1 [CHR$(128)]
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14E, the width is depending on input and the minimum height is 33X, where X is the width of the most
narrow element as specified by BARMAG or BARSET<nexp3>.
Remarks The RSS-14 Expanded can be used for intelligent encoding of the input
data. They can be created with different encoding methods and compressed
data fields. To understand how to create intelligent bar codes with RSS-
14E, see Chapter 7 “Symbol Requirements for RSS Expanded” in the AIM
specification: International Symbology Specification Reduced Space Symbology
(RSS), AIM Inc. ITS/99-0012, Version 1.0 1999-10-29.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14ES"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Segments per row 2-22 (default 2). Multiples of 2 only.
<nexp6> Placeholder Value insignificant.
<nexp7> Height of separator row The height for the pattern rows between
the linear rows. If too low a height is
entered, the height will be changed to
the smallest legal height for the selected
magnification. Minimum 1X, maximum
2X.
<nexp8> Not applicable
<nexp9> Not applicable
<nexp10> Not applicable
Input Data
No. of characters: Max. 71 numeric or 41 alphanume- Allowed characters: 0-9 A-Z a-z ! "
ric characters % & ' ( ) * + , - . / : ; < = > ? _ space
FNC1 [CHR$(128)]
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14ES, the width is depending on input and the minimum height is 34X per row + 3*1X per separator, where X
is the width of the most narrow element as specified by BARMAG or BARSET<nexp3>.
Remarks The RSS-14 Expanded Stacked can be used for intelligent encoding of
the input data. They can be created with different encoding methods and
compressed data fields. To understand how to create intelligent bar codes
with RSS-14 ES, see Chapter 7 “Symbol Requirements for RSS Expanded” in
the AIM specification: International Symbology Specification Reduced Space
Symbology (RSS), AIM Inc. ITS/99-0012, Version 1.0 1999-10-29.
Example Example of RSS14 Expanded Stacked for a variable weight item (0,001
kilogram increments) and with recommended minimum height selected:
Start parameter: #4
Most narrow element width in dots: 2
Height in dots: 68
Segments per row: 4
Place holder (nexp6): 1
Separator pattern row height: 2
Data: 01900123456789003103001750
Explanation of data: 01 9001234567890 0 3103 001750
Application Identifier (AI): 01
AI 01 item ID: 9001234567890
(In this method, the first digit must be 9.)
Digit: 0
(The value is insignificant but a digit must be
entered as a place holder.)
Application Identifier (AI): 3103
AI 3103 variable weight
element string: 001750
BARTYPE "RSS14ES"
BARSET #4,2,68,4,1,2
PRBAR "01900123456789003103001750"
UPC-A
Separate Instructions
BARTYPE: "UPCA"
BARRATIO: Fixed ratio. BARRATIO statement ignored.
BARMAG: Maximum 8. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: Barfont generated automatically. BARFONT statement ignored.
BARFONT ON/OFF work.
Input Data
No. of characters: 11
Check digit: One Added automatically
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start character: No
Stop character: No
UPC-E
Separate Instructions
BARTYPE: "UPCE"
BARRATIO: Fixed ratio. BARRATIO statement ignored.
BARMAG: Maximum 8. Default 2.
BARHEIGHT: No restriction. Default: 100.
BARFONT: Barfont generated automatically. BARFONT statement ignored.
BARFONT ON/OFF work.
Input Data
No. of characters: 6
Check digit: One Added automatically
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start character: No
Stop character: No
AddOn Codes
Summary
The EAN and UPC bar code standards allow for the use of two- and five-
character supplemental bar codes to be printed together with the normal
code.
From Fingerprint v8.40 it is possible to print these bar codes simply by
adding the desired characters to the PRBAR statement, separated by a
period(.). The placement of the addon bar code is done automatically.
Examples The AddOn characters are added to the PRBAR statement by use of a
period (.) character as separator.
10 PRPOS 100,100
20 BARSET "EAN8"
30 ALIGN 1
40 DIR 1
50 BARFONT ON
60 PRBAR "1234567.12345"
70 PRINTFEED
RUN
yields:
The AddOn code can be used in combination with any EAN and UPC bar
code set. The following example prints a composite bar code, with a two-
character AddOn code. More information on composite bar codes can be
found later in this chapter.
10 PRPOS 100,100
20 BARSET "EAN8_CC"
30 ALIGN 1
40 DIR 1
50 BARFONT ON
60 PRBAR "1234567.12|987654321"
70 PRINTFEED
RUN
yields:
} 2D composite component
←separator pattern
} linear component
(01) 93812345678901
(10) ABCD123456 (410) 3898765432108 } human readable
Refer to the programming example later in this chapter.
Function
EAN.UCC Composite Symbology is depending on several other sym-
bologies. Some minor adjustment of implementation of PDF417 and
MicroPDF417, nine new symbologies and a logical way of combining nine
linear and three 2D symbologies in different composite combinations have
been implemented.
Basic Characteristics
An EAN-UCC Composite symbol consists of a linear component and
associated with an adjacent 2D Composite Component.
The Linear Components
The linear bar code component encodes the item’s primary identification.
The design is one of the following barcode types:
• UCC/EAN-128,
• EAN/UPC: 8 or 13,
• UPC-A or E,
• EAN/UPC 8, 13, UPC-A or E
• Any RSS-family symbology that includes a separator character between
the data for the linear component and the 2D component in the input
string.
Start char. FNC1 Data Link flag Check digit Stop char.
char.
Added by Added by The data is Added by Calculated Added by
the printer. the printer. added by the printer. and added the printer.
the user. If it by the
is necessary printer.
to change
Code Set the
printer add
Code- or
Shift-char-
acters to
change
subset.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter
<sexp> Bar code type "EAN8_CC"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not Always 1 (default). The bar code and the
affect human readables) human readable field will include exactly
the same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 7
Check digit: 1 Added automatically.
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start characters: No
Stop characters: No
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter
<sexp> Bar code type "EAN13_CC"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not Always 1 (default). The bar code and the
affect human readables) human readable field will include exactly
the same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 12
Check digit: 1 Added automatically.
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start characters: No
Stop characters: No
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter
<sexp> Bar code type "UPCE_CC"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not Always 1 (default). The bar code and the
affect human readables) human readable field will include exactly
the same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 6
Check digit: 1 Added automatically.
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start characters: No
Stop characters: No
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter
<sexp> Bar code type "UPCA_CC"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not Always 1 (default). The bar code and the
affect human readables) human readable field will include exactly
the same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 11
Check digit: 1 Added automatically.
Digits: 0-9
Uppercase letters: No
Lowercase letters: No
Punctuation marks: No
Start characters: No
Stop characters: No
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter
<sexp> Bar code type "EAN128_CCC"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Number of columns/row in 2D bar code 0 (default) = select the largest number
of columns for the 2D code to fit within
the linear bar code including its quiet
zones.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: Unlimited
Check digit: Trailing symbol check character Added automatically.
Input characters: ASCII 0-127 According to Roman 8 character set.
Start characters: See note 2.
Code characters: See note 1 & 2
Shift characters: See note 1 & 2
Stop characters: Always Added automatically.
Remarks EAN 128 is identical to Code 128 with the exception that the initial
FNC1 function character is generated automatically.
Note 1:
Code characters and shift characters require either an 8-bit communication
protocol, remapping to an ASCII value between 0-127 dec., or the use of
an CHR$ function.
Note 2:
EAN 128 has automatic selection of start character and character subset
(that is, selects optimal start character and handles shift and changes of
subset depending on the content of the input data), whereas EAN 128A,
EAN 128B, and EAN 128C selects subset A, B, and C respectively. The
last character in the bar code name signifies both the start character and
the chosen subset.
The selected subset can be changed anywhere in the input string, either
for a single character using a Shift character (not for Subset C), or for the
remainder of the input string using a Code character (all subsets).
The Shift and Code characters consist of a combination of two characters:
• Two left-pointing double angle quotation marks («) specify a Shift cha-
racter.
Shift character: «« (« = ASCII 171 dec.)
• One left-pointing double angle quotation mark («) specifies a Code
character. It should be followed by an uppercase letter that specifies the
subset:
Code character: « + A|B|C (« = ASCII 171 dec.)
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "EAN128_CCAB"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: Unlimited
Check digit: Trailing symbol check character Added automatically.
Input characters: ASCII 0-127 According to Roman 8 character set.
Start characters: See note 2.
Code characters: See note 1 & 2
Shift characters: See note 1 & 2
Stop characters: Always Added automatically.
Remarks EAN 128 is identical to Code 128 with the exception that the initial
FNC1 function character is generated automatically.
Note 1:
Code characters and shift characters require either an 8-bit communication
protocol, remapping to an ASCII value between 0-127 dec., or the use of
an CHR$ function.
Note 2:
EAN 128 has automatic selection of start character and character subset
(that is, selects optimal start character and handles shift and changes of
subset depending on the content of the input data), whereas EAN 128A,
EAN 128B, and EAN 128C selects subset A, B, and C respectively. The
last character in the bar code name signifies both the start character and
the chosen subset.
The selected subset can be changed anywhere in the input string, either
for a single character using a Shift character (not for Subset C), or for the
remainder of the input string using a Code character (all subsets).
The Shift and Code characters consist of a combination of two characters:
• Two left-pointing double angle quotation marks («) specify a Shift cha-
racter.
Shift character: «« (« = ASCII 171 dec.)
• One left-pointing double angle quotation mark («) specifies a Code
character. It should be followed by an uppercase letter that specifies the
subset:
Code character: « + A|B|C (« = ASCII 171 dec.)
RSS-14 (Composite)
Separate Instructions
BARTYPE: "RSS14"
BARRATIO: Not applicable.
BARMAG: Specifies the x-dimension width in dots of the most narrow element for
both the linear bar code and the 2D code. Default: 2.
BARHEIGHT: Specifies the height of the linear bar code1. Default: 100.
BARFONT ON/ No restriction.
OFF:
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14, the width is 96X and the minimum height is 33X, where X is the width of the most narrow element as
specified by BARMAG or BARSET<nexp3>.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14T"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14 Truncated, the width is 96X and the minimum height is 13X, where X is the width of the most narrow ele-
ment as specified by BARMAG or BARSET<nexp3>.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14S"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14S, the width is 50X and the minimum height is 13X (upper 5X + lower 7X + separator 1X min.), where X is
the width of the most narrow element as specified by BARMAG or BARSET<nexp3>.
Example Example of an RSS14S bar code with the following characteristics and
with recommended minimum height selected:
Place holder (nexp1): 1
Place holder (nexp2): 1
Most narrow element width in dots: 3
Height in dots: 21
Place holder (nexp5): 1
Character exclusion (nexp6): 1
Separator pattern row height (nexp7): 4
Height of rows in 2D bar code (nexp8): 4
Separator character (nexp9): 124
2D human readables (nexp10): 1
Data: 1234567890123|987654321
BARSET "RSS14S",1,1,3,21,1,1,4,4,124,1
PRBAR "1234567890123|987654321"
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14SO"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14SO, the width is 50X and the minimum height is 69X (upper 33X + lower 33X + separator 3*1X min.),
where X is the width of the most narrow element as specified by BARMAG or BARSET<nexp3>.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14L"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: 13 digits If less than 13 digits are entered,
leading zeros will automatically be
added so the string will be 13 digits
long.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14L, the width is 71X and the minimum height is 10X, where X is the width of the most narrow element as
specified by BARMAG or BARSET<nexp3>.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14E"
<nexp1> Placeholder Value insignificant. 0 is not allowed.
<nexp2> Placeholder Value insignificant. 0 is not allowed.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Placeholder Value insignificant.
<nexp6> Character exclusion in bar code (does not 0: The bar code will not include any
affect human readables) of the characters space, (, ), and car-
riage return [CHR$(13)] but they will
be printed in the human readable field.
Carriage returns make it possible to print
human readable in multiple rows.
1 (default): The bar code and the human
readable field will include exactly the
same data.
<nexp7> Height of separator pattern row in dots Value must be 1-2 × BARMAG. For
example, if BARMAG = 5, 5-10 is OK
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14E, the width is depending on input and the minimum height is 33X, where X is the width of the most
narrow element as specified by BARMAG or BARSET<nexp3>.
Remarks The RSS-14 Expanded can be used for intelligent encoding of the input
data. They can be created with different encoding methods and compressed
data fields. To understand how to create intelligent bar codes with RSS-
14E, see Chapter 7 “Symbol Requirements for RSS Expanded” in the AIM
specification: International Symbology Specification Reduced Space Symbology
(RSS), AIM Inc. ITS/99-0012, Version 1.0 1999-10-29.
BARSET Instruction
BARSET Instruction
[#<ncon>] Optionally specifies the start parameter in
the syntax
<sexp> Bar code type "RSS14ES"
<nexp1> Placeholder Value insignificant.
<nexp2> Placeholder Value insignificant.
<nexp3> Barmag/Enlargement See BARMAG.
<nexp4> Barheight See BARHEIGHT.
<nexp5> Segments per row 2-22 (default 2). Multiples of 2 only.
<nexp6> Placeholder Value insignificant.
<nexp7> Height of separator row The height is the same for the pattern
row between the 2D bar code and the
linear bar code as for the pattern rows
between the linear rows. If too low a
height is entered, the height will be chan-
ged to the smallest legal height for the
selected magnification. Minimum 1X,
maximum 2X.
<nexp8> Height of each row in 2D bar code in dots Default: 0 (= 3 × BARMAG)
<nexp9> Separator character between data to linear ASCII 2-255 dec. Default: ASCII 124
bar code and 2D bar code dec. ASCII 48-57 dec. not allowed.
<nexp10> 2D human readables On/Off 0 = No human readable 2D field.
1 = Print human readable 2D field.
Input Data
No. of characters: Max. 71 numeric or 41 alphanume- Allowed characters: 0-9 A-Z a-z ! "
ric characters % & ' ( ) * + , - . / : ; < = > ? _ space
FNC1 [CHR$(128)]
1
/. There are restrictions in the standard for the minimum size for each RSS bar code, even if it is possible to print an RSS
bar code in any height. The height should relate to the magnification. RSS Stacked differs, because the bar code rows do
not have the same height. BARHEIGHT or BARSET<nexp4> specifies the height of the lower row and height of the
upper row is automatically calculated from the height of the lower row.
For RSS-14ES, the width is depending on input and the minimum height is 34X per row + 3*1X per separator, where X
is the width of the most narrow element as specified by BARMAG or BARSET<nexp3>.
Remarks The RSS-14 Expanded Stacked can be used for intelligent encoding of
the input data. They can be created with different encoding methods and
compressed data fields. To understand how to create intelligent bar codes
with RSS-14 ES, see Chapter 7 “Symbol Requirements for RSS Expanded” in
the AIM specification: International Symbology Specification Reduced Space
Symbology (RSS), AIM Inc. ITS/99-0012, Version 1.0 1999-10-29.
Example Example of RSS14 Expanded Stacked for a variable weight item (0,001
kilogram increments) and with recommended minimum height selected:
Start parameter: #4
Most narrow element width in dots: 2
Height in dots: 68
Segments per row (nexp5): 2
Character exclusion (nexp6): 1
Separator pattern row height (nexp7): 4
Height of rows in 2D bar code (nexp8): 4
Separator character (nexp9): 124
2D human readables (nexp10): 1
Data: 01900123456789003103001750|9876543210
Explanation of data: 01 9001234567890 0 3103 001750
Application Identifier (AI): 01
AI 01 item ID: 9001234567890
(In this method, the first digit must be 9.)
Digit: 0
(The value is insignificant but a digit must be
entered as a place holder.)
Application Identifier (AI): 3103
AI 3103 variable weight
element string: 001750
2D data string: 9876543210
BARTYPE "RSS14ES"
BARSET #4,2,68,2,1,4,4,124,1
PRBAR "01900123456789003103001750|9876543210"
This chapter lists the supported formats for RFID tags. These include
tables for the input parameters needed to write tags according to the
EPCGlobal tag standards. Other non-EPC formats available are listed as
well.
RFID Tags
There are many RFID media and tag manufacturers, not all necessarily
making intercompatible equipment. The information in this chapter
applies to supported tags and media. Other media may not function as
described below, or not at all. Contact your local support organization for
information on supported media.
EPCGlobal Tag Format Specifications
EPC (Electronic Product Code) tag formats have been derived from
EAN.UCC standards. The purpose has been to be able to program RFID
tags with the same information from EAN.UCC encoding schemes nor-
mally printed on bar codes. See later in this chapter an example where a
GTIN (Global Trade Item Number) normally printed as an EAN128 bar
code can be programmed to an RFID tag as an SGTIN-96.
The tables on tag formats listed below contain only the information on
the input necessary to program the tags with Fingerprint firmware. More
information is in fact contained by the tags, such as "header" and "parti-
tion". The header is uniquely defined by the tag format, and is therefore
not included in the input. The "partition" does not need to be entered
either, as it is defined by the length of other fields, for example "company
prefix" and "item reference", and is automatically calculated by Fingerprint
firmware. It is therefore very important to enter the correct number of
digits in each field, even if they may contain leading zeroes.
All values entered for EPCGlobal formats must be integers entered as
strings. The exception being USDOD formats, which do not strictly con-
form to EPCGlobal norms.
More information on EPCGlobal and USDOD tag formats can be
obtained from EPCGlobal at www.epcglobalinc.org and from the US
Department of Defense at www.dodrfid.org. The following list conforms
to revision 1.27 of the EPC Tag Data Standards Version 1.1. The Gen 2
standard does not mention the use of 64-bit tags, although they are sup-
ported by Fingerprint.
SGTIN-64
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix Index: Not applicable 0-16 383
Item Reference: Not applicable 0-1 048 575
Serial Number: Not applicable 0-33 554 431
SGTIN-96
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix: 6-121 Not applicable
Item Reference: 7-11 Not applicable
Serial Number Not applicable 0-274 877 906 943
SSCC-64
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix Index: Not applicable 0-16 383
Serial Reference: Not applicable 0-99 999 999 999
SSCC-96
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix: 6-122 Not applicable
Serial Reference: 11-52 Not applicable
SGLN-64
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix Index: Not applicable 0-16 383
Location Reference: Not applicable 0-999 999
Serial Number3: Not applicable 0-524 287
SGLN-96
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix: 6-124 Not applicable
Location Reference: 6-04,5 Not applicable
Serial Number6 Not applicable 0-2 199 023 255 551
GRAI-64
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix Index: Not applicable 0-16 383
Asset Type: Not applicable 0-999 999
Serial Number: Not applicable 0-524 287
GRAI-96
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix: 6-127 Not applicable
Asset Type: 6-07,8 Not applicable
Serial Number Not applicable 0-274 877 906 943
GIAI-64
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix Index: Not applicable 0-16 383
Individual Asset Reference: Not applicable 0-549 755 813 887
GIAI-96
FIELD NUMBER OF DIGITS RANGE
Filter: Not applicable 0-7
Company Prefix: 6-129 Not applicable
Individual Asset Reference: 18-129 Not applicable
GID-96
FIELD NUMBER OF DIGITS RANGE
General Manager Number: Not applicable 0-268 435 455
Object Class: Not applicable 0-16 777 215
Serial Number: Not applicable 0-68 719 476 735
USDOD-64
FIELD NUMBER OF DIGITS RANGE/ALLOWED VALUES
Filter: Not applicable 0-3
Government Managed Identifier: Exactly 5 characters 0-9, SPACE, and A-Z (not I or O)
Serial Number: Not applicable 0-16 777 215
USDOD-96
FIELD NUMBER OF DIGITS RANGE/ALLOWED VALUES
Filter: Not applicable 0-15
Government Managed Identifier: Exactly 5 characters 0-9, SPACE, and A-Z (not I or O)
Serial Number: Not applicable 0-68 719 476 735
(01)10614141007346(21)2
AI GTIN Company Item Check AI Serial
Indicator Prefix Reference Digit Number
The Application Identifiers (AI) are dropped, as this information is inclu-
ded in the header. The check digit is dropped. The GTIN indicator is
repositioned at the leftmost position of the item reference, to form a new
item reference. A filter value of 3 is chosen for this example (signifying
Standard Trade Item Group, though filter definitions are non-normative at
this time). This gives us the necessary values to program an SGTIN-96 tag.
Filter: 3
Company Prefix : 0614141
Item reference: 100734
Serial Number: 2
We could use the following Fingerprint programs to program an
SGTIN-96 tag with the above information, The first example assumes a
Gen 2 tag, and the second an ISO 18000-6B chip (see Tag Memory Allo-
cation section later):
Examples 10 FILTER$ = "3"
20 PREFIX$ = "0614141"
30 ITEM$ = "100734"
40 SERIAL$ = "2"
50 TAGFIELD "@EPC"
60 TAGFORMAT "SGTIN-96"
70 TAGWRITE FILTER$, PREFIX$, ITEM$, SERIAL$
10 TAGFIELD "@DATA",10,12
20 TAGFORMAT "EPC-URN"
30 TAGWRITE "urn:epc:tag:sgtin-96:3.
0614141.100734.2"
Remarks When writing EPC data to the @ID segment of a Ucode EPC 1.19
tag, Fingerpint ignores input parameters (and other defaults) for the
TAGFIELD command, and automatically starts writing at byte 2 of the
@ID segment. When writing to the @DATA segment, valid start byte and
field length parameters must be entered in the TAGFIELD instruction.
Note: No manual mapping of the EPC data to the UCode EPC 1.19
memory structure is necessary, as this is done automatically by Fingerprint
firmware.
Remarks Class 1 tags are used to store EPC data. EPC data is stored in the @ID
segment, bytes 0-7 for 64 bit and bytes 1-11 for 96-bit tags. The values for
the parameters <nexp2> and <nexp3> for the TAGFIELD command do not
need to be entered when writing EPC data, as these are assigned automati-
cally.
The Kill passcode can be adressed as byte 12 in EPC-96 (byte 8
in EPC-64). It must however be adressed independently with a
TAGFIELD,"@ID",12,1 command.
The Class 1 standard defines a a tag CRC (cyclyc redundancy check) for
tag ID bits, and if incorrect, the tag will not be detected by a TAGREAD
operation.
Erasing all tag information is done by the following comand:
TAGFIELD "@ID",0,0
TAGFORMAT "HEX"
TAGWRITE ""
Remarks The @RESERVED field contains kill and access passwords. These are not
always implemented, and the tag acts as if they were zero-valued passwords.
This chapter list the possible error messages that can be returned to the
host when an error occurrs.
EasyCoder PF2i/4i/4ci
Actual Keyboard Appearance
"DUVBMLFZCPBSE
BQQFBSBODF
ID Numbers
6OTIJGUFELFZT
JEOVNCFST
4IJGUFELFZT
JEOVNCFST
1PTJUJPO
/VNCFST
ASCII Values
6OTIJGUFELFZT
"4$**WBMVFT
4IJGUFELFZT
"4$**WBMVFT
EasyCoder PM4i
Actual Keyboard Appearance
"DUVBMLFZCPBSEBQQFBSBODF
ID Numbers
6OTIJGUFELFZTJEOVNCFST 4IJGUFELFZTJEOVNCFST
1PTJUJPO/VNCFST
ASCII Values
6OTIJGUFELFZT 4IJGUFELFZT
"4$**WBMVFT "4$**WBMVFT
EasyCoder PX4i/6i
Actual Keyboard Appearance
"DUVBMLFZCPBSEBQQFBSBODF
ID Numbers
6OTIJGUFELFZTJEOVNCFST
4IJGUFELFZTJEOVNCFST
ASCII Values
6OTIJGUFELFZT"4$**WBMVFT
4IJGUFELFZT"4$**WBMVFT
"DUVBMLFZCPBSEBQQFBSBODF
Position Numbers
1000 KEYBMAP$(0)=A$
1010 KEYBMAP$(1)=B$
1020 KEYBMAP$(5)=C$
1100 END
EasyCoder PD41
The EasyCoder PD41 keyboard has only one button with Id. number 17
when pressed and 117 when released. This gives the corresponding ASCII
values of 16 and 144. The keyboard map string is only six characters long
(compared to 64 for PF/PM/PX printers), with the Print button having
position 1.
This appendix lists relevant topics, instructions and keywords and specifies
on which page they are located in the manual.
Index
A
magnification 24
abbreviation MaxiCode 357
constant 8 one-dimensional 347
expression 8 PDF417 361
variable 8 QR Code 363
ABS instruction 9 ratio 24
absolute value 9 RSS-14 365
access mode two-dimensional 347
random 189 type 24
sequential 189 UPC-A 374
Account Secret 298 UPC-E 375
ACTLEN instruction 10 BARCODENAME$ instruction 16
AddOn Codes 376 BARFONT instruction 17
AIM International 344 BARHEIGHT instruction 21
align BARMAG instruction 22
text in box 196–200 BARRATIO instruction 23
ALIGN instruction 11 BARSET instruction 24
AN. See ALIGN instruction BARTYPE instruction 26
anchor point 11 batch printing 192
ANSI 344 BEEP instruction 27
ANSI character set 173 BF. See BARFONT instruction
array 70 BH. See BARHEIGHT instruction
sorting 249 bitmap image
ASCII printing 201
conversion 14, 34, 101 bluelight. See Intermec Readiness Indicator
tag format 416 BM. See BARMAG instruction
ASC instruction 14 box
assign aligning text in 196–200
line from file to variable 154 creating 196
line to string variable 153 BR. See BARRATIO instruction
value to variable 152 break
branching to subroutine on 178
B BREAK instruction 28
BREAK ON/OFF instruction 30
BARADJUST instruction 15
BT. See BARTYPE instruction
bar code
buffer
AddOn 376
dividing into fields 83
Code 128 349
BUSY instruction 31
Code 39 348
Data Matrix 351 C
EAN-13 353
EAN-8 352 CGI
EAN 128 354 request 184
enlargement. See bar code: magnification channel. See communication channel
field 12 character
height 21, 25 retireving from string 150
Interleaved 2 of 5 356 search for in string 133
interpretation 378 character set 173
enabling 19, 20 CHDIR instruction 32
font 17 checksum
insertion point 18 calculate 53
magnification 18 CHECKSUM instruction 33
vertical offset 18 CHR$ instruction 14, 34
width 18 Class 1 411
list 343, 344 CLEANFEED instruction 35
images DBBREAK 60
names, listing 123 DBBREAK OFF 61
names, retrieving 122 DBEND 62
IMAGES instruction 123 DBSTDIO 63
IMMEDIATE instructions 124 DBSTEP 64
immediate mode 124–126 DELETE 65
indicator DELETEPFSVAR 66
controlling status 149 DEVICES 67
INKEY$ instruction 127 DIM 70
input DIR 71
receiving 128 DIRNAME$ 74
INPUT# instruction 131 END 75
INPUT$ instruction 132 EOF 76
INPUT instruction 128 ERL 77
INPUT ON/OFF instruction 130 ERR 78
insertion point ERR$ 79
checking 213 ERROR 80
INSTR instruction 133 EXECUTE 82
Instruction FIELD 83
ABS 9 FIELDNO 84
ACTLEN 10 FILE& LOAD 85
ASC 14 FILENAME$ 86
BARADJUST 15 FILES 87
BARCODENAME$ 16 FLOATCALC$ 89
BARFONT 17 FONT 90
BARHEIGHT 21 FONTD 92
BARMAG 22 FONTNAME$ 93
BARRATIO 23 FONTS 94
BARSET 24 FOR...TO...NEXT 95
BARTYPE 26 FORMAT 96
BEEP 27 FORMAT$ 101
BREAK 28 FORMAT DATE$ 98
BREAK ON/OFF 30 FORMAT INPUT 99
BUSY 31 FORMAT TIME$ 100
CHDIR 32 FORMFEED 104
CHECKSUM 33 FRE 105
CHR$ 34 FUNCTEST 106
CLEANFEED 35 FUNCTEST$ 107
CLEAR 36 GET 108
CLIP 37 GETASSOC$ 109
CLL 38 GETASSOCNAME$ 110
CLOSE 40 GETPFSVAR 111
COMBUF$ 42 GOSUB 112
COM ERROR ON/OFF 41 GOTO 114
COMSET 43 HEAD 115
COMSET OFF 45 IF...THEN...(ELSE) 117
COMSET ON 46 IMAGE BUFFER MIRROR 119
COMSTAT 47 IMAGE BUFFER SAVE 120
CONT 48 IMAGE LOAD 121
COPY 49 IMAGENAME$ 122
COUNT& 50 IMAGES 123
CSUM 53 IMMEDIATE 124
CURDIR$ 52 INKEY$ 127
CUT 54 INPUT 128
CUT ON/OFF 55 INPUT# 131
DATE$ 56 INPUT$ 132
DATEADD$ 57 INPUT ON/OFF 130
DATEDIFF 59 INSTR 133
label. See media N
Label Taken Sensor
enabling/disabling 162 NAME DATE$ instruction 171
layout NAME WEEKDAY$ instruction 172
creating 141–143 NASCD instruction 175
description, starting recording 145 NASC instruction 173
description, stopping 144 network
variable input 146 opening connection 189
LAYOUT END instruction 144 NEW instruction 176
LAYOUT INPUT instruction 145 NEXT. See FOR...TO...NEXT instruction
LAYOUT instruction 141 NI. See NORIMAGE instruction
LAYOUT RUN instruction 146 NORIMAGE instruction 177
LBLCOND instruction 147 Norwegian character set 173
LED ON/OFF instruction 149 number
LEFT$ instruction 150 formatting as string 101
length, string 151 random, generating 218
LEN instruction 151 numeric expression
LET instruction 152 from string 290
LINE INPUT# instruction 154 O
LINE INPUT instruction 153
U
uart
communication channel 28, 30, 31
UCC 344, 406
Ucode EPC 1.19 411
UCODE HSL 413
Uniform Resource Identifier 410
UPC 376
UPC-A 374
UPC-A Composite 385
UPC-E 375
UPC-E Composite 384
URI. See Uniform Resource Identifier
USB. See communication channel: usb
USDOD-64 409
USDOD-96 409
UTF-8 173–175
V
VAL instruction 290
variable
recovering 111
system. See system variables
VERBON/VERBOFF instruction 291
verbosity
setting 291
VERSION$ instruction 292
VOID label
rewinding 231
W
wand 404
WEEKDAY$ instruction 294
WEEKDAY instruction 293
WEEKNUMBER instruction 295
WEND. See WHILE...WEND instruction
WHILE. See WHILE...WEND instruction
WHILE...WEND instruction 296
X
XORMODE ON/OFF instruction 297
Y
year. See date
*1-960582-07*
*1-960582-07*