3

I'm programming in ZPL and I need to define a variable manually. A simple Hello World Example:

^XA
^FO,20,10^ADN,40,25^FDHello World^FS
^XZ

I want to be able to:

SET $HW$ = Hello World
^XA
^FO,20,10^ADN,40,25^FD$HW$^FS
^XZ

I read the Zebra documentation and it talks only about its use in ZebraDesigner Pro, but I must define it with code, not with graphical mode. And the variables like $CODEDATA$, SVERSION$ are not working automatically here. Then, how can I define a variable in ZPL?

Marcelo Camargo
  • 2,240
  • 2
  • 22
  • 51
  • Well, I solved it by designing a compiler that supports dependent types and compiles to ZPL: https://github.com/capybara-language – Marcelo Camargo Oct 13 '15 at 11:53

2 Answers2

2

Here is a way to do what you are looking for. Store a format with a variable. ^FN11 is the variable in the stored format. I'm storing the format on the internal flash (E:) I've named the stored format STORE.ZPL

^XA
^DFE:STORE.ZPL^FS
^FO,20,10^ADN,40,25^FH\^FN11^^FS
^XZ

I then recall the format and set the variable

^XA
^XFE:STORE.ZPL^FS
^FN11Hello World^FS
^XZ
Elton Saunders
  • 1,238
  • 1
  • 12
  • 23
0

ZPL isn't a programming language, it's a printer language.
As I know, ZPL does not support variables. Your program should do this by building a correct ZPL code.

Building a program that does a simple substitution of a fixed string inside a text should do the trick very easy in nearly every programming language.

Thats what the designstudio is doing. It will replace the variable with the actual string and send it to the printer.

So just do something like:
Template:

template="^XA  
   ^FO,20,10^ADN,40,25^FD$HW$^FS
   ^XZ"

and then set the content:

printercommand = template.replace("$HW$", "Hello World")
mcdikki
  • 109
  • 4
  • ZPL is defined by its oficial documentation as a programming language and by any official document. A programming language doens't need to be turing complete to be a PL. ;) – Marcelo Camargo Aug 29 '14 at 13:27
  • I'm using purely ZPL. I created an IDE to develop in it and I aim to let it available on Github, but I was just searching a way to do it in pure ZPL code, no Java, C#, Scheme, Clojure and derivates. That is a pitty I can't. – Marcelo Camargo Aug 29 '14 at 13:32